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 1rJrYK-00GQrG-V6 for pgsql-hackers@arkaria.postgresql.org; Sun, 31 Dec 2023 08:52:14 +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 1rJrYG-006bTr-MU for pgsql-hackers@arkaria.postgresql.org; Sun, 31 Dec 2023 08:52:08 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rJrYF-006bTY-MI for pgsql-hackers@lists.postgresql.org; Sun, 31 Dec 2023 08:52:08 +0000 Received: from mail-io1-xd30.google.com ([2607:f8b0:4864:20::d30]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1rJrY5-00EnUo-3F for pgsql-hackers@lists.postgresql.org; Sun, 31 Dec 2023 08:52:06 +0000 Received: by mail-io1-xd30.google.com with SMTP id ca18e2360f4ac-7ba903342c2so573522339f.3 for ; Sun, 31 Dec 2023 00:51:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1704012715; x=1704617515; 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=DXsTzvbFbtVUcZ5tKbCUla9Wn2+UNyND1wdGnzRuIAM=; b=tfWaKxxb8ypMmvnclDYao+d2Mz5YAvtc0m5qJ8UpZKefpLUUvWZKu04NJJg9ag1emw NsctLjDS8ktzCM3nuDejXN4l09EyJ4l9KBCUI4bXYonegv/OrLrO4+y0nUow1A7rKTle rtBrQs1JZwYluGwij940J6hvWjydYcljB5sAxpvIe8nNP8dZ84Qm11xYBjhT5s+vbgRj aFa5LhdFlJ/GwWS6QaysfxH9nixSm1rRZ5tuTFZj8qKx8SzLyxrlbhew5/2JPro22aOt kjpV4F1SflwDl30eosXpn7mVOrvLBc+411ltLI989+ksQtfC3gRadbPqNFkLwRsDtEFS MW5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704012715; x=1704617515; 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=DXsTzvbFbtVUcZ5tKbCUla9Wn2+UNyND1wdGnzRuIAM=; b=ZePP3g/ToCx8AdeimUHL+OKR7UP1hhubmSBldjhCi+yJoKgB3n+uPrGslmL6fHOVwK TKTFj/eLjzcKMdE/EPxn2MowAolzEk0jEpaoTSKQVdwMLx9mc+qO3GEbCpgg/HAI+WtQ W6MUAQfmgalfmJ1c0z+5pnSNlJ/g70iLVIyp4BeqBAYLcN+lYjqub0ECJ9p/KYYpqw0z l8g2cXmV8hGt/HBAREssO4Je7rEqAqkg2BgM+i0GhxFnS66awa153IN4w4ue9p8HK+AB 5qNseRCLfTV4Uhp970GK8jBxnKhZysibdy/89dJiAXMyeVI72Ub4mtS0zCV7GK7hYt46 4dJA== X-Gm-Message-State: AOJu0Yw4mhjOWaIxNOLwIFM0VLbwCv9DhgzqC0PliElc9tNNWaNLlW1d NpyuxRBQgrL9sIYLGQkNX4TGxvA8uvvksA== X-Google-Smtp-Source: AGHT+IEvV8GiBnWzJmgMwnESohdbc+/SNf0cZNrbiK2E6weTGIkgV0/SJb8cKzpoy1TKc7HuQ6pOMg== X-Received: by 2002:a05:6e02:2389:b0:35f:f01a:b141 with SMTP id bq9-20020a056e02238900b0035ff01ab141mr23462888ilb.19.1704012713914; Sun, 31 Dec 2023 00:51:53 -0800 (PST) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id e15-20020a170902ed8f00b001cfed5524easm18344199plj.288.2023.12.31.00.51.50 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 31 Dec 2023 00:51:52 -0800 (PST) Content-Type: multipart/mixed; boundary="------------q0P9SppGy0Gb0SiL8HntHna4" Message-ID: <71b45adb-b496-4e58-b134-0a091014e63f@illuminatedcomputing.com> Date: Sun, 31 Dec 2023 00:51:49 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time Content-Language: en-US To: Peter Eisentraut , jian he Cc: PostgreSQL Hackers References: <2d9740ad-3bb7-473c-8441-344351caa8ee@illuminatedcomputing.com> <596fefdd-6202-4228-b7c6-f240b1cbe06e@eisentraut.org> <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> From: Paul Jungwirth In-Reply-To: <35400587-6865-4a2c-9ea4-4761669478ea@eisentraut.org> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On Wed, Dec 6, 2023 at 12:59 AM Peter Eisentraut wrote: > > On 02.12.23 19:41, Paul Jungwirth wrote: > > So what do you think of this idea instead?: > > > > We could add a new (optional) support function to GiST that translates > > "well-known" strategy numbers into the opclass's own strategy numbers. > > I had some conversations about this behind the scenes.  I think this > idea makes sense. Here is a patch series with the GiST stratnum support function added. I put this into a separate patch (before all the temporal ones), so it's easier to review. Then in the PK patch (now #2) we call that function to figure out the = and && operators. I think this is a big improvement. I provide a couple "example" implementations: - An identity function that returns whatever you give it. The core gist opclasses use this since they use the RT* constants. Even though not all opclasses support all strategies, it is okay to return a stratnum with no amop entry. You will just get an error when you try to make a temporal PK with that type as the WITHOUT OVERLAPS part (which is natural for the types we're talking about). - A function that translates RT*StrategyNumbers to BT*StrategyNumbers when possible (just =//>=, and we really only need =). This is what the btree_gist opclasses use. (No other RT*StrategyNumber can be translated, which means you can only use these types for the non-WIHOUT OVERLAPS part, but again that is natural.) I didn't add a similar function to GIN. It's not possible to use GIN for temporal PKs, so I don't think it makes sense. ## Foreign Keys For FKs, I need a couple similar things: - The ContainedBy operator (<@ for rangetypes). - An aggregate function to combine referenced rows (instead of hardcoding range_agg as before). I look up ContainedBy just as I'm doing with Equal & Overlap for PKs. The aggregate function is another optional support function. I broke out that support function into another independent patch here. Then I updated by FKs patch to use it (and the ContainedBy operator). ## FOR PORTION OF Then for FOR PORTION OF I need an intersect operator (*) and a new "leftovers" operator. We have an intersect operator (for range & multirange at least), but no strategy number for it, thus no amop entry. My patch adds that, **but** it is neither a search operator ('s') nor ordering ('o'), so I've added a "portion" option ('p'). I'm not sure this is completely valid, since `FOR PORTION OF` is not really an *index* operation, but it does seem index-adjacent: you would only/usually use it on something with a temporal PK (which is an index). And it is an analogous situation, where pg_amop entries tell us how to implement the extensible parts. But if all this seems like the wrong approach please let me know. The new leftovers operator similarly has 'p' for amoppurpose and another amop entry. The leftovers operator returns an array of T, where T is the type of the valid_at column. Then we'll insert a new "leftovers" row for each array entry. So we aren't assuming only "before" and "after" (which doesn't work for multiranges or two-dimensional spaces as you'd have with bitemporal or spatial). But now that "leftovers" are becoming more of an external-facing part of Postgres, I feel we should have a less silly name. (That's too bad, because "leftovers" is memorable and non-ambiguous, and computer pioneers used all kinds of silly names, so if you tell me I don't have to be quite so professional, maybe I'll go back to it.) I considered things like "without" or "multi-subtract" or "except". I went with "without portion", which is nice because it evokes FOR PORTION OF and doesn't limit the scope to rangetypes. For the symbol I like `@-`. It conveys the similarity to subtraction, and "@" can be a mnemonic for "array". (Too bad we can't use `--`, ha ha.) I also thought about `@-@`, but that is used already by path_length and lseg_length, and maybe a non-commutative operator deserves a non-palindromic name. The {multi,}range_without_portion procs & operators are broken out into a separate commit, and the FPO patch now uses them in the exec node. It always made me a little uneasy to have rangetype code in nodeModifyTable.c, and now it's gone. Then the last thing I need for FOR PORTION OF is a "constructor". In SQL:2011 you use `FOR PORTION OF valid_at FROM '2000-01-01' TO '2010-01-01'`. But FROM and TO don't really work for non-range types. So I added an alternate syntax that is `FOR PORTION OF valid_at (tsmultirange(tsrange('2001-01-01', '2002-02-02'), tsrange('2003-03-03', '2004-04-04')))`. In other words parens wrapping a value of the type you're using. I still support FROM & TO for building a range type, so we follow the standard. That's it for now. Multiranges should be fully supported (but need lots more tests), as well as custom types. I've updated some of the docs, but I need to go through them and clarify where things don't necessarily have to be ranges. Rebased to cb44a8345e. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0001-Add-stratnum-GiST-support-function.patch" Content-Disposition: attachment; filename="v20-0001-Add-stratnum-GiST-support-function.patch" Content-Transfer-Encoding: base64 RnJvbSBhMzc4NTUyNmY2ZmUyZjRhOGE3YjUzZGIxMmY3NWExNWIxNmNkZjU2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFdlZCwgMTMgRGVjIDIwMjMgMjE6MTc6NTMgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMCAxLzhdIEFkZCBzdHJhdG51bSBHaVNUIHN1cHBvcnQg 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 L2J0cmVlX2dpc3QvTWFrZWZpbGUKaW5kZXggMDczZGNjNzQ1Yy4uZmExYjk4N2IzOSAxMDA2 NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9NYWtlZmlsZQpAQCAtMzMsNyArMzMsOCBAQCBFWFRFTlNJT04gPSBidHJlZV9n aXN0CiBEQVRBID0gYnRyZWVfZ2lzdC0tMS4wLS0xLjEuc3FsIFwKICAgICAgICBidHJlZV9n aXN0LS0xLjEtLTEuMi5zcWwgYnRyZWVfZ2lzdC0tMS4yLnNxbCBidHJlZV9naXN0LS0xLjIt LTEuMy5zcWwgXAogICAgICAgIGJ0cmVlX2dpc3QtLTEuMy0tMS40LnNxbCBidHJlZV9naXN0 LS0xLjQtLTEuNS5zcWwgXAotICAgICAgIGJ0cmVlX2dpc3QtLTEuNS0tMS42LnNxbCBidHJl ZV9naXN0LS0xLjYtLTEuNy5zcWwKKyAgICAgICBidHJlZV9naXN0LS0xLjUtLTEuNi5zcWwg YnRyZWVfZ2lzdC0tMS42LS0xLjcuc3FsIFwKKwkJCSBidHJlZV9naXN0LS0xLjctLTEuOC5z cWwKIFBHRklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEItdHJlZSBlcXVpdmFsZW50IEdpU1Qg b3BlcmF0b3IgY2xhc3NlcyIKIAogUkVHUkVTUyA9IGluaXQgaW50MiBpbnQ0IGludDggZmxv YXQ0IGZsb2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGltZXN0YW1wdHogXApkaWZmIC0tZ2l0 IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNxbCBiL2NvbnRy aWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5zcWwKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTJjMmU2YzE0YgotLS0gL2Rldi9udWxsCisrKyBi L2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LS0xLjctLTEuOC5zcWwKQEAgLTAsMCAr MSw4NyBAQAorLyogY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3QtLTEuNy0tMS44LnNx bCAqLworCistLSBjb21wbGFpbiBpZiBzY3JpcHQgaXMgc291cmNlZCBpbiBwc3FsLCByYXRo ZXIgdGhhbiB2aWEgQ1JFQVRFIEVYVEVOU0lPTgorXGVjaG8gVXNlICJBTFRFUiBFWFRFTlNJ T04gYnRyZWVfZ2lzdCBVUERBVEUgVE8gJzEuOCciIHRvIGxvYWQgdGhpcyBmaWxlLiBccXVp dAorCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9vaWRfb3BzIFVTSU5HIGdpc3QgQURE CisJRlVOQ1RJT04gIDEyIChvaWQsIG9pZCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50Mikg OworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQyX29wcyBVU0lORyBnaXN0IEFE RAorCUZVTkNUSU9OICAxMiAoaW50MiwgaW50MikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50 MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQ0X29wcyBVU0lORyBnaXN0 IEFERAorCUZVTkNUSU9OICAxMiAoaW50NCwgaW50NCkgZ2lzdF9zdHJhdG51bV9idHJlZSAo aW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9pbnQ4X29wcyBVU0lORyBn aXN0IEFERAorCUZVTkNUSU9OICAxMiAoaW50OCwgaW50OCkgZ2lzdF9zdHJhdG51bV9idHJl ZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9hdDRfb3BzIFVT SU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChmbG9hdDQsIGZsb2F0NCkgZ2lzdF9zdHJh dG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9mbG9h dDhfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChmbG9hdDgsIGZsb2F0OCkg Z2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkg Z2lzdF90aW1lc3RhbXBfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyICh0aW1l c3RhbXAsIHRpbWVzdGFtcCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRF UiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lc3RhbXB0el9vcHMgVVNJTkcgZ2lzdCBBREQK KwlGVU5DVElPTiAgMTIgKHRpbWVzdGFtcHR6LCB0aW1lc3RhbXB0eikgZ2lzdF9zdHJhdG51 bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1lX29w cyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAodGltZSwgdGltZSkgZ2lzdF9zdHJh dG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9kYXRl X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoZGF0ZSwgZGF0ZSkgZ2lzdF9z dHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9p bnRlcnZhbF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGludGVydmFsLCBp bnRlcnZhbCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRP UiBGQU1JTFkgZ2lzdF9jYXNoX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAo bW9uZXksIG1vbmV5KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9Q RVJBVE9SIEZBTUlMWSBnaXN0X21hY2FkZHJfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJ T04gIDEyIChtYWNhZGRyLCBtYWNhZGRyKSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7 CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X3RleHRfb3BzIFVTSU5HIGdpc3QgQURE CisJRlVOQ1RJT04gIDEyICh0ZXh0LCB0ZXh0KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQy KSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2JwY2hhcl9vcHMgVVNJTkcgZ2lz dCBBREQKKwlGVU5DVElPTiAgMTIgKGJwY2hhciwgYnBjaGFyKSBnaXN0X3N0cmF0bnVtX2J0 cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X2J5dGVhX29wcyBV U0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoYnl0ZWEsIGJ5dGVhKSBnaXN0X3N0cmF0 bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlMWSBnaXN0X251bWVy aWNfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyIChudW1lcmljLCBudW1lcmlj KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlM WSBnaXN0X2JpdF9vcHMgVVNJTkcgZ2lzdCBBREQKKwlGVU5DVElPTiAgMTIgKGJpdCwgYml0 KSBnaXN0X3N0cmF0bnVtX2J0cmVlIChpbnQyKSA7CisKK0FMVEVSIE9QRVJBVE9SIEZBTUlM WSBnaXN0X3ZiaXRfb3BzIFVTSU5HIGdpc3QgQURECisJRlVOQ1RJT04gIDEyICh2YXJiaXQs IHZhcmJpdCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVSQVRP UiBGQU1JTFkgZ2lzdF9pbmV0X29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAo aW5ldCwgaW5ldCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCitBTFRFUiBPUEVS QVRPUiBGQU1JTFkgZ2lzdF9jaWRyX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAx MiAoY2lkciwgY2lkcikgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCistLSBhZGRl ZCBpbiAxLjI6CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF90aW1ldHpfb3BzIFVTSU5H IGdpc3QgQURECisJRlVOQ1RJT04gIDEyICh0aW1ldHosIHRpbWV0eikgZ2lzdF9zdHJhdG51 bV9idHJlZSAoaW50MikgOworCistLSBhZGRlZCBpbiAxLjM6CitBTFRFUiBPUEVSQVRPUiBG QU1JTFkgZ2lzdF91dWlkX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAodXVp ZCwgdXVpZCkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCistLSBhZGRlZCBpbiAx LjQ6CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9tYWNhZGRyOF9vcHMgVVNJTkcgZ2lz dCBBREQKKwlGVU5DVElPTiAgMTIgKG1hY2FkZHI4LCBtYWNhZGRyOCkgZ2lzdF9zdHJhdG51 bV9idHJlZSAoaW50MikgOworCistLSBhZGRlZCBpbiAxLjU6CitBTFRFUiBPUEVSQVRPUiBG QU1JTFkgZ2lzdF9lbnVtX29wcyBVU0lORyBnaXN0IEFERAorCUZVTkNUSU9OICAxMiAoYW55 ZW51bSwgYW55ZW51bSkgZ2lzdF9zdHJhdG51bV9idHJlZSAoaW50MikgOworCistLSBhZGRl ZCBpbiAxLjc6CitBTFRFUiBPUEVSQVRPUiBGQU1JTFkgZ2lzdF9ib29sX29wcyBVU0lORyBn aXN0IEFERAorCUZVTkNUSU9OICAxMiAoYm9vbCwgYm9vbCkgZ2lzdF9zdHJhdG51bV9idHJl ZSAoaW50MikgOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9idHJlZV9naXN0L2J0cmVlX2dpc3Qu Y29udHJvbCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9idHJlZV9naXN0LmNvbnRyb2wKaW5kZXgg ZmE5MTcxYTgwYS4uYWJmNjY1MzhmMyAxMDA2NDQKLS0tIGEvY29udHJpYi9idHJlZV9naXN0 L2J0cmVlX2dpc3QuY29udHJvbAorKysgYi9jb250cmliL2J0cmVlX2dpc3QvYnRyZWVfZ2lz dC5jb250cm9sCkBAIC0xLDYgKzEsNiBAQAogIyBidHJlZV9naXN0IGV4dGVuc2lvbgogY29t bWVudCA9ICdzdXBwb3J0IGZvciBpbmRleGluZyBjb21tb24gZGF0YXR5cGVzIGluIEdpU1Qn Ci1kZWZhdWx0X3ZlcnNpb24gPSAnMS43JworZGVmYXVsdF92ZXJzaW9uID0gJzEuOCcKIG1v ZHVsZV9wYXRobmFtZSA9ICckbGliZGlyL2J0cmVlX2dpc3QnCiByZWxvY2F0YWJsZSA9IHRy dWUKIHRydXN0ZWQgPSB0cnVlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCA5YWM2YjAzZTZlLi5iYWEyNmM2NWNj IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9naXN0LnNnbWwKQEAgLTI3Miw3ICsyNzIsNyBAQCBDUkVBVEUgSU5ERVggT04gbXlfdGFi bGUgVVNJTkcgR0lTVCAobXlfaW5ldF9jb2x1bW4gaW5ldF9vcHMpOwogCiAgPHBhcmE+CiAg ICBUaGVyZSBhcmUgZml2ZSBtZXRob2RzIHRoYXQgYW4gaW5kZXggb3BlcmF0b3IgY2xhc3Mg Zm9yCi0gICA8YWNyb255bT5HaVNUPC9hY3JvbnltPiBtdXN0IHByb3ZpZGUsIGFuZCBzaXgg dGhhdCBhcmUgb3B0aW9uYWwuCisgICA8YWNyb255bT5HaVNUPC9hY3JvbnltPiBtdXN0IHBy b3ZpZGUsIGFuZCBzZXZlbiB0aGF0IGFyZSBvcHRpb25hbC4KICAgIENvcnJlY3RuZXNzIG9m IHRoZSBpbmRleCBpcyBlbnN1cmVkCiAgICBieSBwcm9wZXIgaW1wbGVtZW50YXRpb24gb2Yg dGhlIDxmdW5jdGlvbj5zYW1lPC9mdW5jdGlvbj4sIDxmdW5jdGlvbj5jb25zaXN0ZW50PC9m dW5jdGlvbj4KICAgIGFuZCA8ZnVuY3Rpb24+dW5pb248L2Z1bmN0aW9uPiBtZXRob2RzLCB3 aGlsZSBlZmZpY2llbmN5IChzaXplIGFuZCBzcGVlZCkgb2YgdGhlCkBAIC0yOTUsNiArMjk1 LDEwIEBAIENSRUFURSBJTkRFWCBPTiBteV90YWJsZSBVU0lORyBHSVNUIChteV9pbmV0X2Nv bHVtbiBpbmV0X29wcyk7CiAgICB1c2VyLXNwZWNpZmllZCBwYXJhbWV0ZXJzLgogICAgVGhl IG9wdGlvbmFsIGVsZXZlbnRoIG1ldGhvZCA8ZnVuY3Rpb24+c29ydHN1cHBvcnQ8L2Z1bmN0 aW9uPiBpcyB1c2VkIHRvCiAgICBzcGVlZCB1cCBidWlsZGluZyBhIDxhY3JvbnltPkdpU1Q8 L2Fjcm9ueW0+IGluZGV4LgorICAgVGhlIG9wdGlvbmFsIHR3ZWxmdGggbWV0aG9kIDxmdW5j dGlvbj5zdHJhdG51bTwvZnVuY3Rpb24+IGlzIHVzZWQgdG8gdHJhbnNsYXRlCisgICB3ZWxs LWtub3duIDxsaXRlcmFsPlJUKlN0cmF0ZWd5TnVtYmVyczwvbGl0ZXJhbD4gKGZyb20KKyAg IDxmaWxlbmFtZT5zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaDwvZmlsZW5hbWU+KSBp bnRvIHN0cmF0ZWd5IG51bWJlcnMKKyAgIHVzZWQgYnkgdGhlIG9wY2xhc3MuCiAgPC9wYXJh PgogCiAgPHZhcmlhYmxlbGlzdD4KQEAgLTExNjksNiArMTE3Myw2NiBAQCBteV9zb3J0c3Vw cG9ydChQR19GVU5DVElPTl9BUkdTKQogICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVt PgogICAgIDwvdmFybGlzdGVudHJ5PgorICAgIDx2YXJsaXN0ZW50cnk+CisgICAgIDx0ZXJt PjxmdW5jdGlvbj5zdHJhdG51bTwvZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+ CisgICAgICA8cGFyYT4KKyAgICAgICBHaXZlbiBhbiA8bGl0ZXJhbD5SVCpTdHJhdGVneU51 bWJlcjwvbGl0ZXJhbD4gdmFsdWUgZnJvbQorICAgICAgIDxmaWxlbmFtZT5zcmMvaW5jbHVk ZS9hY2Nlc3Mvc3RyYXRudW0uaDwvZmlsZW5hbWU+LAorICAgICAgIHJldHVybnMgYSBzdHJh dGVneSBudW1iZXIgdXNlZCBieSB0aGlzIG9wY2xhc3MgZm9yIG1hdGNoaW5nIGZ1bmN0aW9u YWxpdHkuCisgICAgICAgVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gPGxpdGVyYWw+SW52 YWxpZFN0cmF0ZWd5PC9saXRlcmFsPgorICAgICAgIGlmIHRoZSBvcGNsYXNzIGhhcyBubyBt YXRjaGluZyBzdHJhdGVneSwKKyAgICAgICBvciBhdCBsZWFzdCBhIHN0cmF0ZWd5IG51bWJl ciB0aGF0IGlzbid0IHVzZWQgYnkgdGhpcyBvcGNsYXNzLgorICAgICAgPC9wYXJhPgorCisg ICAgICA8cGFyYT4KKyAgICAgICBUaGUgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBkZWNsYXJh dGlvbiBvZiB0aGUgZnVuY3Rpb24gbXVzdCBsb29rIGxpa2UKKyAgICAgICB0aGlzOgorCis8 cHJvZ3JhbWxpc3Rpbmc+CitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBteV9zdHJhdG51 bShpbnRlZ2VyKQorUkVUVVJOUyBpbnRlZ2VyCitBUyAnTU9EVUxFX1BBVEhOQU1FJworTEFO R1VBR0UgQyBTVFJJQ1Q7Cis8L3Byb2dyYW1saXN0aW5nPgorICAgICAgPC9wYXJhPgorCisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBtYXRjaGluZyBjb2RlIGluIHRoZSBDIG1vZHVs ZSBjb3VsZCB0aGVuIGZvbGxvdyB0aGlzIHNrZWxldG9uOgorCis8cHJvZ3JhbWxpc3Rpbmc+ CitQR19GVU5DVElPTl9JTkZPX1YxKG15X3N0cmF0bnVtKTsKKworRGF0dW0KK215X3N0cmF0 bnVtKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisgICAgU3RyYXRlZ3lOdW1iZXIgc3RyYXRlZ3kg PSAoU3RyYXRlZ3lOdW1iZXIpIFBHX0dFVEFSR19VSU5UMTYoMSk7CisgICAgU3RyYXRlZ3lO dW1iZXIgcmV0ID0gSW52YWxpZFN0cmF0ZWd5OworCisgICAgc3dpdGNoIChzdHJhdGVneSkK KyAgICB7CisgICAgICAgIGNhc2UgUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOgorICAgICAgICAg ICAgcmV0ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworICAgIH0KKworICAgIFBHX1JFVFVS Tl9VSU5UMTYocmV0KTsKK30KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgICA8L3BhcmE+CisK KyAgICAgIDxwYXJhPgorICAgICAgIFR3byB0cmFuc2xhdGlvbiBmdW5jdGlvbnMgYXJlIHBy b3ZpZGVkIGJ5IFBvc3RncmVzOgorICAgICAgIDxsaXRlcmFsPmdpc3Rfc3RyYXRudW1faWRl bnRpdHk8L2xpdGVyYWw+IGlzIGZvciBvcGNsYXNzZXMgdGhhdAorICAgICAgIGFscmVhZHkg dXNlIHRoZSA8bGl0ZXJhbD5SVCpTdHJhdGVneU51bWJlcjwvbGl0ZXJhbD4gY29uc3RhbnRz LgorICAgICAgIEl0IHJldHVybnMgd2hhdGV2ZXIgaXMgcGFzc2VkIHRvIGl0LgorICAgICAg IDxsaXRlcmFsPmdpc3Rfc3RyYXRudW1fYnRyZWU8L2xpdGVyYWw+IGlzIGZvciBvcGNsYXNz ZXMgdGhhdAorICAgICAgIHVzZSB0aGUgPGxpdGVyYWw+QlQqU3RyYXRlZ3lOdW1iZXI8L2xp dGVyYWw+IGNvbnN0YW50cworICAgICAgIChsaWtlIHRob3NlIGluIDxsaXRlcmFsPmJ0cmVl X2dpc3Q8L2xpdGVyYWw+KS4KKyAgICAgICBJdCByZXR1cm5zIDxsaXRlcmFsPkJURXF1YWxT dHJhdGVneU51bWJlcjwvbGl0ZXJhbD4gZm9yIGVxdWFscywKKyAgICAgICBhbmQgPGxpdGVy YWw+SW52YWxpZFN0cmF0ZWd5PC9saXRlcmFsPiBmb3IgZXZlcnl0aGluZyBlbHNlLgorICAg ICAgPC9wYXJhPgorICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgogICA8 L3ZhcmlhYmxlbGlzdD4KIAogICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC94 aW5kZXguc2dtbCBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbAppbmRleCAyMmQ4YWQxYWFj Li44YzRlZGUzMTA1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21sCkBAIC01MDgsNyArNTA4LDcgQEAKICAgIDwv dGFibGU+CiAKICAgPHBhcmE+Ci0gICBHaVNUIGluZGV4ZXMgaGF2ZSBlbGV2ZW4gc3VwcG9y dCBmdW5jdGlvbnMsIHNpeCBvZiB3aGljaCBhcmUgb3B0aW9uYWwsCisgICBHaVNUIGluZGV4 ZXMgaGF2ZSB0d2VsdmUgc3VwcG9ydCBmdW5jdGlvbnMsIHNldmVuIG9mIHdoaWNoIGFyZSBv cHRpb25hbCwKICAgIGFzIHNob3duIGluIDx4cmVmIGxpbmtlbmQ9InhpbmRleC1naXN0LXN1 cHBvcnQtdGFibGUiLz4uCiAgICAoRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIDx4cmVmIGxp bmtlbmQ9Imdpc3QiLz4uKQogICA8L3BhcmE+CkBAIC01OTAsNiArNTkwLDEyIEBACiAgICAg ICAgIChvcHRpb25hbCk8L2VudHJ5PgogICAgICAgIDxlbnRyeT4xMTwvZW50cnk+CiAgICAg ICA8L3Jvdz4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5PjxmdW5jdGlvbj5zdHJhdG51 bTwvZnVuY3Rpb24+PC9lbnRyeT4KKyAgICAgICA8ZW50cnk+dHJhbnNsYXRlIHdlbGwta25v d24gc3RyYXRlZ3kgbnVtYmVycyB0byBvbmVzCisgICAgICAgIHVzZWQgYnkgdGhlIG9wY2xh c3MgKG9wdGlvbmFsKTwvZW50cnk+CisgICAgICAgPGVudHJ5PjEyPC9lbnRyeT4KKyAgICAg IDwvcm93PgogICAgICA8L3Rib2R5PgogICAgIDwvdGdyb3VwPgogICAgPC90YWJsZT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvZ2lzdC9naXN0dXRpbC5jCmluZGV4IDljZTM2ODdkYmYuLmZiOGM2MjY0 NDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGlsLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYwpAQCAtMjMsNiArMjMsNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvaW5kZXhmc20uaCIKICNpbmNsdWRlICJzdG9yYWdlL2xt Z3IuaCIKICNpbmNsdWRlICJ1dGlscy9mbG9hdC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3Jw cm90b3MuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGls cy9zbmFwbWdyLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKQEAgLTEwNTYsMyAr MTA1Nyw0NCBAQCBnaXN0R2V0RmFrZUxTTihSZWxhdGlvbiByZWwpCiAJCXJldHVybiBHZXRG YWtlTFNORm9yVW5sb2dnZWRSZWwoKTsKIAl9CiB9CisKKy8qCisgKiBSZXR1cm5zIHRoZSBz YW1lIG51bWJlciB0aGF0IHdhcyByZWNlaXZlZC4KKyAqCisgKiBUaGlzIGlzIGZvciBHaVNU IG9wY2xhc3NlcyB0aGF0IHVzZSB0aGUgUlQqU3RyYXRlZ3lOdW1iZXIgY29uc3RhbnRzLgor ICovCitEYXR1bQorZ2lzdF9zdHJhdG51bV9pZGVudGl0eShQR19GVU5DVElPTl9BUkdTKQor eworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUEdfR0VUQVJHX1VJTlQxNigwKTsKKworCVBH X1JFVFVSTl9VSU5UMTYoc3RyYXQpOworfQorCisvKgorICogUmV0dXJucyB0aGUgYnRyZWUg bnVtYmVyIGZvciBlcXVhbHMsIG90aGVyd2lzZSBpbnZhbGlkLgorICoKKyAqIFRoaXMgaXMg Zm9yIEdpU1Qgb3BjbGFzc2VzIGluIGJ0cmVlX2dpc3QgKGFuZCBtYXliZSBlbHNld2hlcmUp CisgKiB0aGF0IHVzZSB0aGUgQlQqU3RyYXRlZ3lOdW1iZXIgY29uc3RhbnRzLgorICovCitE YXR1bQorZ2lzdF9zdHJhdG51bV9idHJlZShQR19GVU5DVElPTl9BUkdTKQoreworCVN0cmF0 ZWd5TnVtYmVyIHN0cmF0ID0gUEdfR0VUQVJHX1VJTlQxNigwKTsKKworCXN3aXRjaCAoc3Ry YXQpCisJeworCQljYXNlIFJURXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCVBHX1JFVFVSTl9V SU5UMTYoQlRFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKKwkJY2FzZSBSVExlc3NTdHJhdGVneU51 bWJlcjoKKwkJCVBHX1JFVFVSTl9VSU5UMTYoQlRMZXNzU3RyYXRlZ3lOdW1iZXIpOworCQlj YXNlIFJUTGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXI6CisJCQlQR19SRVRVUk5fVUlOVDE2KEJU TGVzc0VxdWFsU3RyYXRlZ3lOdW1iZXIpOworCQljYXNlIFJUR3JlYXRlclN0cmF0ZWd5TnVt YmVyOgorCQkJUEdfUkVUVVJOX1VJTlQxNihCVEdyZWF0ZXJTdHJhdGVneU51bWJlcik7CisJ CWNhc2UgUlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcjoKKwkJCVBHX1JFVFVSTl9VSU5U MTYoQlRHcmVhdGVyRXF1YWxTdHJhdGVneU51bWJlcik7CisJCWRlZmF1bHQ6CisJCQlQR19S RVRVUk5fVUlOVDE2KEludmFsaWRTdHJhdGVneSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvZ2lzdC9naXN0dmFsaWRhdGUuYwppbmRleCA0YzcxMWVjZmE4Li40ZDFiMmM0NDAwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYwpAQCAtMTQ3LDYgKzE0 NywxMCBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJb2sgPSBjaGVja19h bXByb2Nfc2lnbmF0dXJlKHByb2Nmb3JtLT5hbXByb2MsIFZPSURPSUQsIHRydWUsCiAJCQkJ CQkJCQkJCTEsIDEsIElOVEVSTkFMT0lEKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgR0lTVF9T VFJBVE5VTV9QUk9DOgorCQkJCW9rID0gY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShwcm9jZm9y bS0+YW1wcm9jLCBJTlQyT0lELCB0cnVlLAorCQkJCQkJCQkJCQkxLCAxLCBJTlQyT0lEKTsK KwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKQEAgLTI2Nyw3ICsy NzEsOCBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQljb250aW51ZTsJCQkv KiBnb3QgaXQgKi8KIAkJaWYgKGkgPT0gR0lTVF9ESVNUQU5DRV9QUk9DIHx8IGkgPT0gR0lT VF9GRVRDSF9QUk9DIHx8CiAJCQlpID09IEdJU1RfQ09NUFJFU1NfUFJPQyB8fCBpID09IEdJ U1RfREVDT01QUkVTU19QUk9DIHx8Ci0JCQlpID09IEdJU1RfT1BUSU9OU19QUk9DIHx8IGkg PT0gR0lTVF9TT1JUU1VQUE9SVF9QUk9DKQorCQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8 fCBpID09IEdJU1RfU09SVFNVUFBPUlRfUFJPQyB8fAorCQkJaSA9PSBHSVNUX1NUUkFUTlVN X1BST0MpCiAJCQljb250aW51ZTsJCQkvKiBvcHRpb25hbCBtZXRob2RzICovCiAJCWVyZXBv cnQoSU5GTywKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJ T04pLApAQCAtMzM5LDYgKzM0NCw3IEBAIGdpc3RhZGp1c3RtZW1iZXJzKE9pZCBvcGZhbWls eW9pZCwKIAkJCWNhc2UgR0lTVF9GRVRDSF9QUk9DOgogCQkJY2FzZSBHSVNUX09QVElPTlNf UFJPQzoKIAkJCWNhc2UgR0lTVF9TT1JUU1VQUE9SVF9QUk9DOgorCQkJY2FzZSBHSVNUX1NU UkFUTlVNX1BST0M6CiAJCQkJLyogT3B0aW9uYWwsIHNvIGZvcmNlIGl0IHRvIGJlIGEgc29m dCBmYW1pbHkgZGVwZW5kZW5jeSAqLwogCQkJCW9wLT5yZWZfaXNfaGFyZCA9IGZhbHNlOwog CQkJCW9wLT5yZWZfaXNfZmFtaWx5ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9naXN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oCmluZGV4IDAyMzU3 MTZjMDYuLjE4MTYzNTJiOTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3QuaApAQCAtMzgsNyArMzgsOCBAQAog I2RlZmluZSBHSVNUX0ZFVENIX1BST0MJCQkJCTkKICNkZWZpbmUgR0lTVF9PUFRJT05TX1BS T0MJCQkJMTAKICNkZWZpbmUgR0lTVF9TT1JUU1VQUE9SVF9QUk9DCQkJMTEKLSNkZWZpbmUg R0lTVE5Qcm9jcwkJCQkJMTEKKyNkZWZpbmUgR0lTVF9TVFJBVE5VTV9QUk9DCQkJCTEyCisj ZGVmaW5lIEdJU1ROUHJvY3MJCQkJCTEyCiAKIC8qCiAgKiBQYWdlIG9wYXF1ZSBkYXRhIGlu IGEgR2lTVCBpbmRleCBwYWdlLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0CmluZGV4 IDRjNzBkYTQxZGUuLjg1ZDNiODc2YWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJvYy5k YXQKQEAgLTUwNyw2ICs1MDcsOSBAQAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2JveCcsIGFt cHJvY251bSA9PiAnNycsIGFtcHJvYyA9PiAnZ2lzdF9ib3hfc2FtZScgfSwKIHsgYW1wcm9j ZmFtaWx5ID0+ICdnaXN0L2JveF9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYm94JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdib3gnLCBhbXByb2NudW0gPT4gJzgnLCBhbXByb2MgPT4g J2dpc3RfYm94X2Rpc3RhbmNlJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvYm94X29w cycsIGFtcHJvY2xlZnR0eXBlID0+ICdib3gnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2Jv eCcsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRl bnRpdHknIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9wb2x5X29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdwb2x5Z29uJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdwb2x5Z29uJywg YW1wcm9jbnVtID0+ICcxJywKICAgYW1wcm9jID0+ICdnaXN0X3BvbHlfY29uc2lzdGVudCcg fSwKQEAgLTUyNiw2ICs1MjksOSBAQAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcG9seV9v cHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAncG9seWdvbicsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9 PiAncG9seWdvbicsIGFtcHJvY251bSA9PiAnOCcsCiAgIGFtcHJvYyA9PiAnZ2lzdF9wb2x5 X2Rpc3RhbmNlJyB9LAoreyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvcG9seV9vcHMnLCBhbXBy b2NsZWZ0dHlwZSA9PiAncG9seWdvbicsCisgIGFtcHJvY3JpZ2h0dHlwZSA9PiAncG9seWdv bicsIGFtcHJvY251bSA9PiAnMTInLAorICBhbXByb2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRl bnRpdHknIH0sCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9jaXJjbGVfb3BzJywgYW1wcm9j bGVmdHR5cGUgPT4gJ2NpcmNsZScsCiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnY2lyY2xlJywg YW1wcm9jbnVtID0+ICcxJywKICAgYW1wcm9jID0+ICdnaXN0X2NpcmNsZV9jb25zaXN0ZW50 JyB9LApAQCAtNTQ0LDYgKzU1MCw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9jaXJj bGVfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2NpcmNsZScsCiAgIGFtcHJvY3JpZ2h0dHlw ZSA9PiAnY2lyY2xlJywgYW1wcm9jbnVtID0+ICc4JywKICAgYW1wcm9jID0+ICdnaXN0X2Np cmNsZV9kaXN0YW5jZScgfSwKK3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L2NpcmNsZV9vcHMn LCBhbXByb2NsZWZ0dHlwZSA9PiAnY2lyY2xlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdj aXJjbGUnLCBhbXByb2NudW0gPT4gJzEyJywKKyAgYW1wcm9jID0+ICdnaXN0X3N0cmF0bnVt X2lkZW50aXR5JyB9LAogeyBhbXByb2NmYW1pbHkgPT4gJ2dpc3QvdHN2ZWN0b3Jfb3BzJywg YW1wcm9jbGVmdHR5cGUgPT4gJ3RzdmVjdG9yJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICd0 c3ZlY3RvcicsIGFtcHJvY251bSA9PiAnMScsCiAgIGFtcHJvYyA9PiAnZ3RzdmVjdG9yX2Nv bnNpc3RlbnQoaW50ZXJuYWwsdHN2ZWN0b3IsaW50MixvaWQsaW50ZXJuYWwpJyB9LApAQCAt NTk4LDYgKzYwNyw5IEBACiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBh bXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2Fu eXJhbmdlJywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ICdyYW5nZV9naXN0X3Nh bWUnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0 dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywg YW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51bV9pZGVudGl0 eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L25ldHdvcmtfb3BzJywgYW1wcm9jbGVm dHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdodHR5cGUgPT4gJ2luZXQnLCBhbXByb2Nu dW0gPT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAt NjE0LDYgKzYyNiw5IEBACiAgIGFtcHJvY3JpZ2h0dHlwZSA9PiAnaW5ldCcsIGFtcHJvY251 bSA9PiAnNycsIGFtcHJvYyA9PiAnaW5ldF9naXN0X3NhbWUnIH0sCiB7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9uZXR3b3JrX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKICAg YW1wcm9jcmlnaHR0eXBlID0+ICdpbmV0JywgYW1wcm9jbnVtID0+ICc5JywgYW1wcm9jID0+ ICdpbmV0X2dpc3RfZmV0Y2gnIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9uZXR3b3Jr X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdpbmV0JywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ ICdpbmV0JywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51 bV9pZGVudGl0eScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3Bz JywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAogICBhbXByb2NyaWdodHR5 cGUgPT4gJ2FueW11bHRpcmFuZ2UnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXByb2MgPT4g J211bHRpcmFuZ2VfZ2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjMyLDYgKzY0Nyw5IEBACiB7 IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBl ID0+ICdhbnltdWx0aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJh bmdlJywgYW1wcm9jbnVtID0+ICc3JywKICAgYW1wcm9jID0+ICdyYW5nZV9naXN0X3NhbWUn IH0sCit7IGFtcHJvY2ZhbWlseSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xl ZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKKyAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnlt dWx0aXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMicsCisgIGFtcHJvYyA9PiAnZ2lzdF9zdHJh dG51bV9pZGVudGl0eScgfSwKIAogIyBnaW4KIHsgYW1wcm9jZmFtaWx5ID0+ICdnaW4vYXJy YXlfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueWFycmF5JywKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CmluZGV4IDkwNTJmNTI2MmEuLjE3ODdhZmJhNzQgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdApAQCAtMTIxMzMsNCArMTIxMzMsMTQgQEAKICAgcHJvYXJnbmFtZXMg PT4gJ3t0bGksc3RhcnRfbHNuLGVuZF9sc24scmVsZmlsZW5vZGUscmVsdGFibGVzcGFjZSxy ZWxkYXRhYmFzZSxyZWxmb3JrbnVtYmVyLHJlbGJsb2NrbnVtYmVyLGlzX2xpbWl0X2Jsb2Nr fScsCiAgIHByb3NyYyA9PiAncGdfd2FsX3N1bW1hcnlfY29udGVudHMnIH0sCiAKKyMgR2lT VCBzdHJhdG51bSBpbXBsZW1lbnRhdGlvbnMKK3sgb2lkID0+ICc4MDQ3JywgZGVzY3IgPT4g J0dpU1Qgc3VwcG9ydCcsCisgIHByb25hbWUgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHkn LCBwcm9yZXR0eXBlID0+ICdpbnQyJywKKyAgcHJvYXJndHlwZXMgPT4gJ2ludDInLAorICBw cm9zcmMgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCit7IG9pZCA9PiAnODA0OCcs IGRlc2NyID0+ICdHaVNUIHN1cHBvcnQnLAorICBwcm9uYW1lID0+ICdnaXN0X3N0cmF0bnVt X2J0cmVlJywgcHJvcmV0dHlwZSA9PiAnaW50MicsCisgIHByb2FyZ3R5cGVzID0+ICdpbnQy JywKKyAgcHJvc3JjID0+ICdnaXN0X3N0cmF0bnVtX2J0cmVlJyB9LAorCiBdCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CmluZGV4IDkzMDIx MzQwNzcuLjU0N2FmODk0YWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvbWlzY19mdW5jdGlvbnMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv bWlzY19mdW5jdGlvbnMub3V0CkBAIC02NzAsMyArNjcwLDI4IEBAIEZST00gcGdfd2FsZmls ZV9uYW1lX29mZnNldCgnMC8wJzo6cGdfbHNuICsgOnNlZ21lbnRfc2l6ZSAtIDEpLAogICAg ICAgICAgICAgICAwIHwgdAogKDEgcm93KQogCistLSB0ZXN0IHN0cmF0bnVtIHN1cHBvcnQg ZnVuY3MKK1NFTEVDVCBnaXN0X3N0cmF0bnVtX2lkZW50aXR5KDM6OnNtYWxsaW50KTsKKyBn aXN0X3N0cmF0bnVtX2lkZW50aXR5IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAg ICAgICAgICAgICAgICAgICAgMworKDEgcm93KQorCitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9p ZGVudGl0eSgxODo6c21hbGxpbnQpOworIGdpc3Rfc3RyYXRudW1faWRlbnRpdHkgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgIDE4CisoMSByb3cp CisKK1NFTEVDVCBnaXN0X3N0cmF0bnVtX2J0cmVlKDM6OnNtYWxsaW50KTsKKyBnaXN0X3N0 cmF0bnVtX2J0cmVlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAg ICAgMAorKDEgcm93KQorCitTRUxFQ1QgZ2lzdF9zdHJhdG51bV9idHJlZSgxODo6c21hbGxp bnQpOworIGdpc3Rfc3RyYXRudW1fYnRyZWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAzCisoMSByb3cpCisKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21p c2NfZnVuY3Rpb25zLnNxbAppbmRleCBkM2RjNTkxMTczLi40YTlhOWNmYTVkIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCkBAIC0yNTAsMyArMjUwLDkg QEAgRlJPTSBwZ193YWxmaWxlX25hbWVfb2Zmc2V0KCcwLzAnOjpwZ19sc24gKyA6c2VnbWVu dF9zaXplICsgMSksCiBTRUxFQ1Qgc2VnbWVudF9udW1iZXIsIGZpbGVfb2Zmc2V0ID0gOnNl Z21lbnRfc2l6ZSAtIDEKIEZST00gcGdfd2FsZmlsZV9uYW1lX29mZnNldCgnMC8wJzo6cGdf bHNuICsgOnNlZ21lbnRfc2l6ZSAtIDEpLAogICAgICBwZ19zcGxpdF93YWxmaWxlX25hbWUo ZmlsZV9uYW1lKTsKKworLS0gdGVzdCBzdHJhdG51bSBzdXBwb3J0IGZ1bmNzCitTRUxFQ1Qg Z2lzdF9zdHJhdG51bV9pZGVudGl0eSgzOjpzbWFsbGludCk7CitTRUxFQ1QgZ2lzdF9zdHJh dG51bV9pZGVudGl0eSgxODo6c21hbGxpbnQpOworU0VMRUNUIGdpc3Rfc3RyYXRudW1fYnRy ZWUoMzo6c21hbGxpbnQpOworU0VMRUNUIGdpc3Rfc3RyYXRudW1fYnRyZWUoMTg6OnNtYWxs aW50KTsKLS0gCjIuNDIuMAoK --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v20-0002-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA2ZmZiN2RiN2YwMTIxN2NmZTk4YzNlYzNhNTA3OGQ0MDBhMTkwZWNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMCAyLzhdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh 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 dC9NYWtlZmlsZQppbmRleCBmYTFiOTg3YjM5Li42MmFlZmFkZDgxIDEwMDY0NAotLS0gYS9j b250cmliL2J0cmVlX2dpc3QvTWFrZWZpbGUKKysrIGIvY29udHJpYi9idHJlZV9naXN0L01h a2VmaWxlCkBAIC0zOSw3ICszOSw4IEBAIFBHRklMRURFU0MgPSAiYnRyZWVfZ2lzdCAtIEIt dHJlZSBlcXVpdmFsZW50IEdpU1Qgb3BlcmF0b3IgY2xhc3NlcyIKIAogUkVHUkVTUyA9IGlu aXQgaW50MiBpbnQ0IGludDggZmxvYXQ0IGZsb2F0OCBjYXNoIG9pZCB0aW1lc3RhbXAgdGlt ZXN0YW1wdHogXAogICAgICAgICB0aW1lIHRpbWV0eiBkYXRlIGludGVydmFsIG1hY2FkZHIg bWFjYWRkcjggaW5ldCBjaWRyIHRleHQgdmFyY2hhciBjaGFyIFwKLSAgICAgICAgYnl0ZWEg Yml0IHZhcmJpdCBudW1lcmljIHV1aWQgbm90X2VxdWFsIGVudW0gYm9vbCBwYXJ0aXRpb25z CisgICAgICAgIGJ5dGVhIGJpdCB2YXJiaXQgbnVtZXJpYyB1dWlkIG5vdF9lcXVhbCBlbnVt IGJvb2wgcGFydGl0aW9ucyBcCisgICAgICAgIHdpdGhvdXRfb3ZlcmxhcHMKIAogU0hMSUJf TElOSyArPSAkKGZpbHRlciAtbG0sICQoTElCUykpCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIv YnRyZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi4wNjkyNzI2ODhmCi0tLSAvZGV2L251bGwKKysrIGIv Y29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0w LDAgKzEsMzEgQEAKKy0tIENvcmUgbXVzdCB0ZXN0IFdJVEhPVVQgT1ZFUkxBUFMKKy0tIHdp dGggYW4gaW50NHJhbmdlICsgdHNyYW5nZSwKKy0tIHNvIGhlcmUgd2UgZG8gc29tZSBzaW1w bGUgdGVzdHMKKy0tIHRvIG1ha2Ugc3VyZSBpbnQgKyB0c3JhbmdlIHdvcmtzIHRvbywKKy0t IHNpbmNlIHRoYXQgaXMgdGhlIGV4cGVjdGVkIHVzZS1jYXNlLgorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZyAoCisgIGlkIGludGVnZXIsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIENP TlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKKyAgICAgICAgICAgICBUYWJs ZSAicHVibGljLnRlbXBvcmFsX3JuZyIKKyAgQ29sdW1uICB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50ZWdlciB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0c3JhbmdlIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZ19wayIgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ybmdfcGsnOworICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSBy b3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00g cGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JF QVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmdfcGsgT04gdGVtcG9yYWxfcm5nIFVTSU5H IGdpc3QgKGlkLCB2YWxpZF9hdCkKKygxIHJvdykKKwpkaWZmIC0tZ2l0IGEvY29udHJpYi9i dHJlZV9naXN0L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL2NvbnRyaWIvYnRyZWVfZ2lz dC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uOTg2NjVkYmI5ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvYnRy ZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTAsMCArMSwxMyBAQAorLS0g Q29yZSBtdXN0IHRlc3QgV0lUSE9VVCBPVkVSTEFQUworLS0gd2l0aCBhbiBpbnQ0cmFuZ2Ug KyB0c3JhbmdlLAorLS0gc28gaGVyZSB3ZSBkbyBzb21lIHNpbXBsZSB0ZXN0cworLS0gdG8g bWFrZSBzdXJlIGludCArIHRzcmFuZ2Ugd29ya3MgdG9vLAorLS0gc2luY2UgdGhhdCBpcyB0 aGUgZXhwZWN0ZWQgdXNlLWNhc2UuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKyAg aWQgaW50ZWdlciwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK1xkIHRlbXBvcmFsX3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkg RlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsK K1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sCmluZGV4IDNlYzczOTFlYzUuLjYxOGEwNWFjODkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBA IC0yNzA5LDYgKzI3MDksMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0 ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAg IDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+Y29ud2l0aG91dG92ZXJsYXBzPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJh PgorICAgICAgIFRoaXMgY29uc3RyYWludCBpcyBkZWZpbmVkIHdpdGggPGxpdGVyYWw+V0lU SE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4KKyAgICAgICAoZm9yIHByaW1hcnkga2V5cyBhbmQg dW5pcXVlIGNvbnN0cmFpbnRzKS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0Zmll bGQ+Y29ua2V5PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MltdPC90eXBlPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbCBiL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwKaW5k ZXggYmFhMjZjNjVjYy4uZjA1ODc1ZDM2YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dp c3Quc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCkBAIC0yOTgsNyArMjk4LDgg QEAgQ1JFQVRFIElOREVYIE9OIG15X3RhYmxlIFVTSU5HIEdJU1QgKG15X2luZXRfY29sdW1u IGluZXRfb3BzKTsKICAgIFRoZSBvcHRpb25hbCB0d2VsZnRoIG1ldGhvZCA8ZnVuY3Rpb24+ c3RyYXRudW08L2Z1bmN0aW9uPiBpcyB1c2VkIHRvIHRyYW5zbGF0ZQogICAgd2VsbC1rbm93 biA8bGl0ZXJhbD5SVCpTdHJhdGVneU51bWJlcnM8L2xpdGVyYWw+IChmcm9tCiAgICA8Zmls ZW5hbWU+c3JjL2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmg8L2ZpbGVuYW1lPikgaW50byBz dHJhdGVneSBudW1iZXJzCi0gICB1c2VkIGJ5IHRoZSBvcGNsYXNzLgorICAgdXNlZCBieSB0 aGUgb3BjbGFzcy4gVGhpcyBsZXRzIHRoZSBjb3JlIGNvZGUgbG9vayB1cCBvcGVyYXRvcnMg Zm9yIHRlbXBvcmFsCisgICBjb25zdHJhaW50IGluZGV4ZXMuCiAgPC9wYXJhPgogCiAgPHZh cmlhYmxlbGlzdD4KQEAgLTExODQsNiArMTE4NSwyMSBAQCBteV9zb3J0c3VwcG9ydChQR19G VU5DVElPTl9BUkdTKQogICAgICAgIGlmIHRoZSBvcGNsYXNzIGhhcyBubyBtYXRjaGluZyBz dHJhdGVneSwKICAgICAgICBvciBhdCBsZWFzdCBhIHN0cmF0ZWd5IG51bWJlciB0aGF0IGlz bid0IHVzZWQgYnkgdGhpcyBvcGNsYXNzLgogICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVGhpcyBpcyB1c2VkIGZvciB0ZW1wb3JhbCBpbmRleCBjb25zdHJhaW50cwor ICAgICAgIChpLmUuIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBhbmQgPGxpdGVy YWw+VU5JUVVFPC9saXRlcmFsPikuCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAg ICAgICBJZiB0aGUgb3BjbGFzcyBwcm92aWRlcyB0aGlzIGZ1bmN0aW9uIGFuZCBpdCByZXR1 cm5zIHJlc3VsdHMKKyAgICAgICBmb3IgPGxpdGVyYWw+UlRFcXVhbFN0cmF0ZWd5TnVtYmVy PC9saXRlcmFsPiwgaXQgY2FuIGJlIHVzZWQKKyAgICAgICBpbiB0aGUgbm9uLTxsaXRlcmFs PldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHBhcnQocykgb2YgYW4KKyAgICAgICBpbmRl eCBjb25zdHJhaW50LgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgSWYg aXQgcmV0dXJucyByZXN1bHRzIGZvciA8bGl0ZXJhbD5SVE92ZXJsYXBTdHJhdGVneU51bWJl cjwvbGl0ZXJhbD4sCisgICAgICAgdGhlIG9wY2xhc3MgY2FuIGJlIHVzZWQgaW4gdGhlIDxs aXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+CisgICAgICAgcGFydCBvZiBhbiBp bmRleCBjb25zdHJhaW50LgorICAgICAgPC9wYXJhPgogCiAgICAgICA8cGFyYT4KICAgICAg ICBUaGUgPGFjcm9ueW0+U1FMPC9hY3JvbnltPiBkZWNsYXJhdGlvbiBvZiB0aGUgZnVuY3Rp b24gbXVzdCBsb29rIGxpa2UKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4 IGUwNGEwNjkyYzQuLmEwYmQyYjhhZGMgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtNzgsOCArNzgsOCBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBU RU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogWyBD T05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25h bWU8L3JlcGxhY2VhYmxlPiBdCiB7IENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwKICAg Tk9UIE5VTEwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9y ZXBsYWNlYWJsZT4gWyBOTyBJTkhFUklUIF0gfAotICBVTklRVUUgWyBOVUxMUyBbIE5PVCBd IERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAotICBQUklNQVJZIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CisgIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0gRElT VElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJs ZT4gfAorICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxB UFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJz PC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lU SCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJh bWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxlPiApIF0gfAogICBGT1JFSUdOIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogICAgIFsgTUFU Q0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUKQEAgLTk2NSw3ICs5NjUsNyBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogCiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtdW5p cXVlIj4KICAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJ TkNUIF08L2xpdGVyYWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+Ci0gICAgPHRlcm0+ PGxpdGVyYWw+VU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gKTwvbGl0ZXJhbD4KKyAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUgWyBOVUxMUyBbIE5P VCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0g KTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklOQ0xVREUgKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0cmFpbnQpPC90ZXJtPgog CiAgICAgPGxpc3RpdGVtPgpAQCAtOTc5LDYgKzk3OSwyNiBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgICAgb2YgdGhlc2UgY29sdW1ucy4KICAgICAgPC9wYXJhPgogCisg ICAgIDxwYXJhPgorICAgICAgSWYgdGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xp dGVyYWw+IG9wdGlvbiBpcyBzcGVjaWZpZWQgZm9yIHRoZQorICAgICAgbGFzdCBjb2x1bW4s IHRoZW4gdGhhdCBjb2x1bW4gaXMgY2hlY2tlZCBmb3Igb3ZlcmxhcHMgaW5zdGVhZCBvZgor ICAgICAgZXF1YWxpdHkuICBJbiB0aGF0IGNhc2UsIHRoZSBvdGhlciBjb2x1bW5zIG9mIHRo ZSBjb25zdHJhaW50IHdpbGwgYWxsb3cKKyAgICAgIGR1cGxpY2F0ZXMgc28gbG9uZyBhcyB0 aGUgZHVwbGljYXRlcyBkb24ndCBvdmVybGFwIGluIHRoZQorICAgICAgPGxpdGVyYWw+V0lU SE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uLiAgKFRoaXMgaXMgc29tZXRpbWVzIGNh bGxlZCBhCisgICAgICB0ZW1wb3JhbCBrZXksIGlmIHRoZSBjb2x1bW4gaXMgYSByYW5nZSBv ZiBkYXRlcyBvciB0aW1lc3RhbXBzLCBidXQKKyAgICAgIFBvc3RncmVTUUwgYWxsb3dzIHJh bmdlcyBvdmVyIGFueSBiYXNlIHR5cGUuKSAgSW4gZWZmZWN0LCBzdWNoIGEKKyAgICAgIGNv bnN0cmFpbnQgaXMgZW5mb3JjZWQgd2l0aCBhbiA8bGl0ZXJhbD5FWENMVURFPC9saXRlcmFs PiBjb25zdHJhaW50CisgICAgICByYXRoZXIgdGhhbiBhIDxsaXRlcmFsPlVOSVFVRTwvbGl0 ZXJhbD4gY29uc3RyYWludC4gIFNvIGZvciBleGFtcGxlCisgICAgICA8bGl0ZXJhbD5VTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTwvbGl0ZXJhbD4gYmVoYXZlcyBs aWtlCisgICAgICA8bGl0ZXJhbD5FWENMVURFIFVTSU5HIEdJU1QgKGlkIFdJVEggPSwgdmFs aWRfYXQgV0lUSAorICAgICAgJmFtcDsmYW1wOyk8L2xpdGVyYWw+LiAgVGhlIDxsaXRlcmFs PldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVtbgorICAgICAgbXVzdCBoYXZlIGEg cmFuZ2UgdHlwZS4gIFRoZSBub24tPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJh bD4KKyAgICAgIGNvbHVtbnMgb2YgdGhlIGNvbnN0cmFpbnQgY2FuIGJlIGFueSB0eXBlIHRo YXQgY2FuIGJlIGNvbXBhcmVkIGZvcgorICAgICAgZXF1YWxpdHkgaW4gYSBHaVNUIGluZGV4 LiBCeSBkZWZhdWx0IG9ubHkgcmFuZ2UgdHlwZXMgYXJlIHN1cHBvcnRlZCwgYnV0CisgICAg ICB5b3UgY2FuIHVzZSBvdGhlciB0eXBlcyBieSBhZGRpbmcgdGhlIDx4cmVmIGxpbmtlbmQ9 ImJ0cmVlLWdpc3QiLz4KKyAgICAgIGV4dGVuc2lvbiAod2hpY2ggaXMgdGhlIGV4cGVjdGVk IHdheSB0byB1c2UgdGhpcyBmZWF0dXJlKS4KKyAgICAgPC9wYXJhPgorCiAgICAgIDxwYXJh PgogICAgICAgRm9yIHRoZSBwdXJwb3NlIG9mIGEgdW5pcXVlIGNvbnN0cmFpbnQsIG51bGwg dmFsdWVzIGFyZSBub3QKICAgICAgIGNvbnNpZGVyZWQgZXF1YWwsIHVubGVzcyA8bGl0ZXJh bD5OVUxMUyBOT1QgRElTVElOQ1Q8L2xpdGVyYWw+IGlzCkBAIC0xMDAxLDcgKzEwMjEsOSBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICAgIDxwYXJhPgogICAgICAgQWRk aW5nIGEgdW5pcXVlIGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHVu aXF1ZSBidHJlZQotICAgICAgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1 bW5zIHVzZWQgaW4gdGhlIGNvbnN0cmFpbnQuCisgICAgICBpbmRleCBvbiB0aGUgY29sdW1u IG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4gQnV0IGlmCisg ICAgICB0aGUgY29uc3RyYWludCBpbmNsdWRlcyBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxB UFM8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgIGl0IHdpbGwgdXNlIGEgR2lTVCBpbmRleC4K ICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTAxOSw3ICsxMDQxLDcgQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXRhYmxlLXBhcm1zLXByaW1hcnkta2V5Ij4KICAgICA8dGVybT48bGl0ZXJhbD5QUklN QVJZIEtFWTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KLSAgICA8dGVy bT48bGl0ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+CisgICAg PHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBXSVRIT1VU IE9WRVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklOQ0xV REUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0cmFp bnQpPC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CkBAIC0xMDUyLDkgKzEw NzQsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgPC9wYXJhPgogCiAg ICAgIDxwYXJhPgotICAgICAgQWRkaW5nIGEgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVy YWw+IGNvbnN0cmFpbnQgd2lsbCBhdXRvbWF0aWNhbGx5Ci0gICAgICBjcmVhdGUgYSB1bmlx dWUgYnRyZWUgaW5kZXggb24gdGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQg aW4gdGhlCi0gICAgICBjb25zdHJhaW50LgorICAgICAgQXMgd2l0aCBhIDxsaXRlcmFsPlVO SVFVRTwvbGl0ZXJhbD4gY29uc3RyYWludCwgYWRkaW5nIGEKKyAgICAgIDxsaXRlcmFsPlBS SU1BUlkgS0VZPC9saXRlcmFsPiBjb25zdHJhaW50IHdpbGwgYXV0b21hdGljYWxseSBjcmVh dGUgYQorICAgICAgdW5pcXVlIGJ0cmVlIGluZGV4LCBvciBHaVNUIGlmIDxsaXRlcmFsPldJ VEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHdhcworICAgICAgc3BlY2lmaWVkLCBvbiB0aGUg Y29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4KICAg ICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2dpc3QvZ2lzdHV0aWwuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R1dGls LmMKaW5kZXggZmI4YzYyNjQ0MS4uNzhmZTM2MDU1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHV0aWwuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2lz dC9naXN0dXRpbC5jCkBAIC0xMDk4LDMgKzEwOTgsMzIgQEAgZ2lzdF9zdHJhdG51bV9idHJl ZShQR19GVU5DVElPTl9BUkdTKQogCQkJUEdfUkVUVVJOX1VJTlQxNihJbnZhbGlkU3RyYXRl Z3kpOwogCX0KIH0KKworLyoKKyAqIFJldHVybnMgdGhlIG9wY2xhc3MncyBwcml2YXRlIHN0 cmF0bnVtIHVzZWQgZm9yIHRoZSBnaXZlbiBzdHJhdGVneS4KKyAqCisgKiBDYWxscyB0aGUg b3BjbGFzcydzIEdJU1RfU1RSQVROVU1fUFJPQyBzdXBwb3J0IGZ1bmN0aW9uLCBpZiBhbnks CisgKiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LgorICogUmV0dXJucyBJbnZhbGlkU3RyYXRl Z3kgaWYgdGhlIGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkLgorICovCitTdHJhdGVneU51bWJl cgorZ2lzdFRyYW5zbGF0ZVN0cmF0bnVtKE9pZCBvcGNsYXNzLCBTdHJhdGVneU51bWJlciBz dHJhdCkKK3sKKwlPaWQJb3BmYW1pbHk7CisJT2lkCW9wY2ludHlwZTsKKwlPaWQJZnVuY2lk OworCURhdHVtIHJlc3VsdDsKKworCS8qIExvb2sgdXAgdGhlIG9wY2xhc3MgZmFtaWx5IGFu ZCBpbnB1dCBkYXRhdHlwZS4gKi8KKwlpZiAoIWdldF9vcGNsYXNzX29wZmFtaWx5X2FuZF9p bnB1dF90eXBlKG9wY2xhc3MsICZvcGZhbWlseSwgJm9wY2ludHlwZSkpCisJCXJldHVybiBJ bnZhbGlkU3RyYXRlZ3k7CisKKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbiBpcyBw cm92aWRlZC4gKi8KKwlmdW5jaWQgPSBnZXRfb3BmYW1pbHlfcHJvYyhvcGZhbWlseSwgb3Bj aW50eXBlLCBvcGNpbnR5cGUsIEdJU1RfU1RSQVROVU1fUFJPQyk7CisJaWYgKCFPaWRJc1Zh bGlkKGZ1bmNpZCkpCisJCXJldHVybiBJbnZhbGlkU3RyYXRlZ3k7CisKKwkvKiBBc2sgdGhl IHRyYW5zbGF0aW9uIGZ1bmN0aW9uICovCisJcmVzdWx0ID0gT2lkRnVuY3Rpb25DYWxsMUNv bGwoZnVuY2lkLCBJbnZhbGlkT2lkLCBVSW50MTZHZXREYXR1bShzdHJhdCkpOworCXJldHVy biBEYXR1bUdldFVJbnQxNihyZXN1bHQpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwppbmRleCBiOTM4 OTQ4ODlkLi4xZTU1YjM0MTljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hl YXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYwpAQCAtMjE0Myw2ICsyMTQz LDcgQEAgU3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwg Tm9kZSAqZXhwciwKIAkJCQkJCQkgIGlzX2xvY2FsLCAvKiBjb25pc2xvY2FsICovCiAJCQkJ CQkJICBpbmhjb3VudCwgLyogY29uaW5oY291bnQgKi8KIAkJCQkJCQkgIGlzX25vX2luaGVy aXQsCS8qIGNvbm5vaW5oZXJpdCAqLworCQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhvdXRv dmVybGFwcyAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0 cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpAQCAtMjE5Myw2ICsyMTk0LDcgQEAgU3Rv cmVSZWxOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqbm5uYW1lLCBBdHRyTnVt YmVyIGF0dG51bSwKIAkJCQkJCQkgIGlzX2xvY2FsLAogCQkJCQkJCSAgaW5oY291bnQsCiAJ CQkJCQkJICBpc19ub19pbmhlcml0LAorCQkJCQkJCSAgZmFsc2UsCS8qIGNvbndpdGhvdXRv dmVybGFwcyAqLwogCQkJCQkJCSAgZmFsc2UpOwogCXJldHVybiBjb25zdHJPaWQ7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKaW5kZXggN2IxODZjMDIyMC4uMTRjMjAzMjg3NiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5kZXguYwpAQCAtMTg5NSw2ICsxODk1LDcgQEAgaW5kZXhfY29uY3VycmVudGx5X3Nl dF9kZWFkKE9pZCBoZWFwSWQsIE9pZCBpbmRleElkKQogICoJCUlOREVYX0NPTlNUUl9DUkVB VEVfVVBEQVRFX0lOREVYOiB1cGRhdGUgdGhlIHBnX2luZGV4IHJvdwogICoJCUlOREVYX0NP TlNUUl9DUkVBVEVfUkVNT1ZFX09MRF9ERVBTOiByZW1vdmUgZXhpc3RpbmcgZGVwZW5kZW5j aWVzCiAgKgkJCW9mIGluZGV4IG9uIHRhYmxlJ3MgY29sdW1ucworICoJCUlOREVYX0NPTlNU Ul9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUzogY29uc3RyYWludCB1c2VzIFdJVEhPVVQgT1ZF UkxBUFMKICAqIGFsbG93X3N5c3RlbV90YWJsZV9tb2RzOiBhbGxvdyB0YWJsZSB0byBiZSBh IHN5c3RlbSBjYXRhbG9nCiAgKiBpc19pbnRlcm5hbDogaW5kZXggaXMgY29uc3RydWN0ZWQg ZHVlIHRvIGludGVybmFsIHByb2Nlc3MKICAqLwpAQCAtMTkxOCwxMSArMTkxOSwxMyBAQCBp bmRleF9jb25zdHJhaW50X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJYm9vbAkJ bWFya19hc19wcmltYXJ5OwogCWJvb2wJCWlzbG9jYWw7CiAJYm9vbAkJbm9pbmhlcml0Owor CWJvb2wJCWlzX3dpdGhvdXRfb3ZlcmxhcHM7CiAJaW50CQkJaW5oY291bnQ7CiAKIAlkZWZl cnJhYmxlID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJM RSkgIT0gMDsKIAlpbml0ZGVmZXJyZWQgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RS X0NSRUFURV9JTklUX0RFRkVSUkVEKSAhPSAwOwogCW1hcmtfYXNfcHJpbWFyeSA9IChjb25z dHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWSkgIT0gMDsK Kwlpc193aXRob3V0X292ZXJsYXBzID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9D UkVBVEVfV0lUSE9VVF9PVkVSTEFQUykgIT0gMDsKIAogCS8qIGNvbnN0cmFpbnQgY3JlYXRp b24gc3VwcG9ydCBkb2Vzbid0IHdvcmsgd2hpbGUgYm9vdHN0cmFwcGluZyAqLwogCUFzc2Vy dCghSXNCb290c3RyYXBQcm9jZXNzaW5nTW9kZSgpKTsKQEAgLTE5OTksNiArMjAwMiw3IEBA IGluZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkJCQkJ CQkJICAgaXNsb2NhbCwKIAkJCQkJCQkJICAgaW5oY291bnQsCiAJCQkJCQkJCSAgIG5vaW5o ZXJpdCwKKwkJCQkJCQkJICAgaXNfd2l0aG91dF9vdmVybGFwcywKIAkJCQkJCQkJICAgaXNf aW50ZXJuYWwpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5k ZXggZTlkNGQ2MDA2ZS4uZmZkMzQwYTJlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25z dHJhaW50LmMKQEAgLTc4LDYgKzc4LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0 IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJ ICBpbnQgY29uSW5oQ291bnQsCiAJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCSAg Ym9vbCBjb25XaXRob3V0T3ZlcmxhcHMsCiAJCQkJCSAgYm9vbCBpc19pbnRlcm5hbCkKIHsK IAlSZWxhdGlvbgljb25EZXNjOwpAQCAtMTkzLDYgKzE5NCw3IEBAIENyZWF0ZUNvbnN0cmFp bnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAl2YWx1ZXNbQW51bV9wZ19j b25zdHJhaW50X2NvbmlzbG9jYWwgLSAxXSA9IEJvb2xHZXREYXR1bShjb25Jc0xvY2FsKTsK IAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmluaGNvdW50IC0gMV0gPSBJbnQxNkdl dERhdHVtKGNvbkluaENvdW50KTsKIAl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2Nvbm5v aW5oZXJpdCAtIDFdID0gQm9vbEdldERhdHVtKGNvbk5vSW5oZXJpdCk7CisJdmFsdWVzW0Fu dW1fcGdfY29uc3RyYWludF9jb253aXRob3V0b3ZlcmxhcHMgLSAxXSA9IEJvb2xHZXREYXR1 bShjb25XaXRob3V0T3ZlcmxhcHMpOwogCiAJaWYgKGNvbmtleUFycmF5KQogCQl2YWx1ZXNb QW51bV9wZ19jb25zdHJhaW50X2NvbmtleSAtIDFdID0gUG9pbnRlckdldERhdHVtKGNvbmtl eUFycmF5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggZTU2MjA1YWJkOC4u OGMwNmFhMDk1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRz LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTE2LDYgKzE2 LDcgQEAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCiAjaW5jbHVkZSAiYWNjZXNzL2FtYXBp LmgiCisjaW5jbHVkZSAiYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImFjY2Vz cy9oZWFwYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVk ZSAiYWNjZXNzL3JlbG9wdGlvbnMuaCIKQEAgLTg2LDYgKzg3LDcgQEAgc3RhdGljIHZvaWQg Q29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJCQkJICBPaWQg YWNjZXNzTWV0aG9kSWQsCiAJCQkJCQkJICBib29sIGFtY2Fub3JkZXIsCiAJCQkJCQkJICBi b29sIGlzY29uc3RyYWludCwKKwkJCQkJCQkgIGJvb2wgaXN3aXRob3V0b3ZlcmxhcHMsCiAJ CQkJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkJCQkgIGludCBkZGxfc2VjX2NvbnRleHQs CiAJCQkJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCk7CkBAIC0xNDQsNiArMTQ2LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEVycm9ySW5mbwogICoJCXRvIGluZGV4IG9uLgog ICogJ2V4Y2x1c2lvbk9wTmFtZXMnOiBsaXN0IG9mIG5hbWVzIG9mIGV4Y2x1c2lvbi1jb25z dHJhaW50IG9wZXJhdG9ycywKICAqCQlvciBOSUwgaWYgbm90IGFuIGV4Y2x1c2lvbiBjb25z dHJhaW50LgorICogJ2lzV2l0aG91dE92ZXJsYXBzJzogdHJ1ZSBpZmYgdGhpcyBpbmRleCBo YXMgYSBXSVRIT1VUIE9WRVJMQVBTIGNsYXVzZS4KICAqCiAgKiBUaGlzIGlzIHRhaWxvcmVk IHRvIHRoZSBuZWVkcyBvZiBBTFRFUiBUQUJMRSBBTFRFUiBUWVBFLCB3aGljaCByZWNyZWF0 ZXMKICAqIGFueSBpbmRleGVzIHRoYXQgZGVwZW5kZWQgb24gYSBjaGFuZ2luZyBjb2x1bW4g ZnJvbSB0aGVpciBwZ19nZXRfaW5kZXhkZWYKQEAgLTE3Myw3ICsxNzYsOCBAQCBib29sCiBD aGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSBjb25zdCBjaGFyICphY2Nl c3NNZXRob2ROYW1lLAogCQkJCQkgY29uc3QgTGlzdCAqYXR0cmlidXRlTGlzdCwKLQkJCQkJ IGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMpCisJCQkJCSBjb25zdCBMaXN0ICpleGNs dXNpb25PcE5hbWVzLAorCQkJCQkgYm9vbCBpc1dpdGhvdXRPdmVybGFwcykKIHsKIAlib29s CQlpc2NvbnN0cmFpbnQ7CiAJT2lkCQkgICAqdHlwZUlkczsKQEAgLTI0OCw4ICsyNTIsOCBA QCBDaGVja0luZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSAgY29sb3B0aW9ucywg YXR0cmlidXRlTGlzdCwKIAkJCQkJICBleGNsdXNpb25PcE5hbWVzLCByZWxhdGlvbklkLAog CQkJCQkgIGFjY2Vzc01ldGhvZE5hbWUsIGFjY2Vzc01ldGhvZElkLAotCQkJCQkgIGFtY2Fu b3JkZXIsIGlzY29uc3RyYWludCwgSW52YWxpZE9pZCwgMCwgTlVMTCk7Ci0KKwkJCQkJICBh bWNhbm9yZGVyLCBpc2NvbnN0cmFpbnQsIGlzV2l0aG91dE92ZXJsYXBzLCBJbnZhbGlkT2lk LAorCQkJCQkgIDAsIE5VTEwpOwogCiAJLyogR2V0IHRoZSBzb29uLW9ic29sZXRlIHBnX2lu ZGV4IHR1cGxlLiAqLwogCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9i amVjdElkR2V0RGF0dW0ob2xkSWQpKTsKQEAgLTU1OSw2ICs1NjMsNyBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAlib29sCQlhbWNhbm9yZGVyOwogCWJvb2wJCWFtaXNzdW1tYXJp emluZzsKIAlhbW9wdGlvbnNfZnVuY3Rpb24gYW1vcHRpb25zOworCWJvb2wJCWV4Y2x1c2lv bjsKIAlib29sCQlwYXJ0aXRpb25lZDsKIAlib29sCQlzYWZlX2luZGV4OwogCURhdHVtCQly ZWxvcHRpb25zOwpAQCAtNjc3LDYgKzY4MiwxMiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAogCW5hbWVzcGFjZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKTsKIAorCS8q CisJICogSXQgaGFzIGV4Y2x1c2lvbiBjb25zdHJhaW50IGJlaGF2aW9yIGlmIGl0J3MgYW4g RVhDTFVERSBjb25zdHJhaW50CisJICogb3IgYSB0ZW1wb3JhbCBQUklNQVJZIEtFWS9VTklR VUUgY29uc3RyYWludAorCSAqLworCWV4Y2x1c2lvbiA9IHN0bXQtPmV4Y2x1ZGVPcE5hbWVz IHx8IHN0bXQtPmlzd2l0aG91dG92ZXJsYXBzOworCiAJLyogRW5zdXJlIHRoYXQgaXQgbWFr ZXMgc2Vuc2UgdG8gaW5kZXggdGhpcyBraW5kIG9mIHJlbGF0aW9uICovCiAJc3dpdGNoIChy ZWwtPnJkX3JlbC0+cmVsa2luZCkKIAl7CkBAIC04NDUsNyArODU2LDcgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVT U19DUkVBVEVJRFhfQUNDRVNTX01FVEhPRF9PSUQsCiAJCQkJCQkJCSBhY2Nlc3NNZXRob2RJ ZCk7CiAKLQlpZiAoc3RtdC0+dW5pcXVlICYmICFhbVJvdXRpbmUtPmFtY2FudW5pcXVlKQor CWlmIChzdG10LT51bmlxdWUgJiYgIXN0bXQtPmlzd2l0aG91dG92ZXJsYXBzICYmICFhbVJv dXRpbmUtPmFtY2FudW5pcXVlKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0 aG9kIFwiJXNcIiBkb2VzIG5vdCBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzIiwKQEAgLTg2MCw3 ICs4NzEsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiYWNjZXNzIG1ldGhv ZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aWNvbHVtbiBpbmRleGVzIiwKIAkJCQkJ CWFjY2Vzc01ldGhvZE5hbWUpKSk7Ci0JaWYgKHN0bXQtPmV4Y2x1ZGVPcE5hbWVzICYmIGFt Um91dGluZS0+YW1nZXR0dXBsZSA9PSBOVUxMKQorCWlmIChleGNsdXNpb24gJiYgYW1Sb3V0 aW5lLT5hbWdldHR1cGxlID09IE5VTEwpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coImFjY2Vz cyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgZXhjbHVzaW9uIGNvbnN0cmFpbnRz IiwKQEAgLTkxMyw4ICs5MjQsOSBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJ ICBjb2xvcHRpb25zLCBhbGxJbmRleFBhcmFtcywKIAkJCQkJICBzdG10LT5leGNsdWRlT3BO YW1lcywgdGFibGVJZCwKIAkJCQkJICBhY2Nlc3NNZXRob2ROYW1lLCBhY2Nlc3NNZXRob2RJ ZCwKLQkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5pc2NvbnN0cmFpbnQsIHJvb3Rfc2F2ZV91 c2VyaWQsCi0JCQkJCSAgcm9vdF9zYXZlX3NlY19jb250ZXh0LCAmcm9vdF9zYXZlX25lc3Rs ZXZlbCk7CisJCQkJCSAgYW1jYW5vcmRlciwgc3RtdC0+aXNjb25zdHJhaW50LCBzdG10LT5p c3dpdGhvdXRvdmVybGFwcywKKwkJCQkJICByb290X3NhdmVfdXNlcmlkLCByb290X3NhdmVf c2VjX2NvbnRleHQsCisJCQkJCSAgJnJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOwogCiAJLyoKIAkg KiBFeHRyYSBjaGVja3Mgd2hlbiBjcmVhdGluZyBhIFBSSU1BUlkgS0VZIGluZGV4LgpAQCAt OTMyLDcgKzk0NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCSAqIFdlIGNvdWxk IGxpZnQgdGhpcyBsaW1pdGF0aW9uIGlmIHdlIGhhZCBnbG9iYWwgaW5kZXhlcywgYnV0IHRo b3NlIGhhdmUKIAkgKiB0aGVpciBvd24gcHJvYmxlbXMsIHNvIHRoaXMgaXMgYSB1c2VmdWwg ZmVhdHVyZSBjb21iaW5hdGlvbi4KIAkgKi8KLQlpZiAocGFydGl0aW9uZWQgJiYgKHN0bXQt PnVuaXF1ZSB8fCBzdG10LT5leGNsdWRlT3BOYW1lcykpCisJaWYgKHBhcnRpdGlvbmVkICYm IChzdG10LT51bmlxdWUgfHwgZXhjbHVzaW9uKSkKIAl7CiAJCVBhcnRpdGlvbktleSBrZXkg PSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShyZWwpOwogCQljb25zdCBjaGFyICpjb25zdHJh aW50X3R5cGU7CkBAIC05ODYsMTAgKzk5OCwxMCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJ ZCwKIAkJCSAqIGFzc29jaWF0ZWQgd2l0aCBpbmRleCBjb2x1bW5zLCB0b28uICBXZSBrbm93 IHdoYXQgdG8gZG8gd2l0aAogCQkJICogYnRyZWUgb3BjbGFzc2VzOyBpZiB0aGVyZSBhcmUg ZXZlciBhbnkgb3RoZXIgaW5kZXggdHlwZXMgdGhhdAogCQkJICogc3VwcG9ydCB1bmlxdWUg aW5kZXhlcywgdGhpcyBsb2dpYyB3aWxsIG5lZWQgZXh0ZW5zaW9uLiBCdXQgaWYKLQkJCSAq IHdlIGhhdmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQsIGl0IGFscmVhZHkga25vd3MgdGhl Ci0JCQkgKiBvcGVyYXRvcnMsIHNvIHdlIGRvbid0IGhhdmUgdG8gaW5mZXIgdGhlbS4KKwkJ CSAqIHdlIGhhdmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgKG9yIGEgdGVtcG9yYWwgUEsp LCBpdCBhbHJlYWR5CisJCQkgKiBrbm93cyB0aGUgb3BlcmF0b3JzLCBzbyB3ZSBkb24ndCBo YXZlIHRvIGluZmVyIHRoZW0uCiAJCQkgKi8KLQkJCWlmIChzdG10LT51bmlxdWUgJiYgYWNj ZXNzTWV0aG9kSWQgIT0gQlRSRUVfQU1fT0lEKQorCQkJaWYgKHN0bXQtPnVuaXF1ZSAmJiAh c3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMgJiYgYWNjZXNzTWV0aG9kSWQgIT0gQlRSRUVfQU1f T0lEKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRV UkVfTk9UX1NVUFBPUlRFRCksCiAJCQkJCQkgZXJybXNnKCJjYW5ub3QgbWF0Y2ggcGFydGl0 aW9uIGtleSB0byBhbiBpbmRleCB1c2luZyBhY2Nlc3MgbWV0aG9kIFwiJXNcIiIsCkBAIC0x MDI4LDEyICsxMDQwLDEyIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQl7CiAJ CQkJCQlPaWQJCQlpZHhfZXFvcCA9IEludmFsaWRPaWQ7CiAKLQkJCQkJCWlmIChzdG10LT51 bmlxdWUpCisJCQkJCQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10LT5pc3dpdGhvdXRvdmVy bGFwcykKIAkJCQkJCQlpZHhfZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIoaWR4X29wZmFt aWx5LAogCQkJCQkJCQkJCQkJCQkgICBpZHhfb3BjaW50eXBlLAogCQkJCQkJCQkJCQkJCQkg ICBpZHhfb3BjaW50eXBlLAogCQkJCQkJCQkJCQkJCQkgICBCVEVxdWFsU3RyYXRlZ3lOdW1i ZXIpOwotCQkJCQkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMpCisJCQkJCQllbHNl IGlmIChleGNsdXNpb24pCiAJCQkJCQkJaWR4X2Vxb3AgPSBpbmRleEluZm8tPmlpX0V4Y2x1 c2lvbk9wc1tqXTsKIAkJCQkJCUFzc2VydChpZHhfZXFvcCk7CiAKQEAgLTEwNDIsNyArMTA1 NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCWZvdW5kID0gdHJ1ZTsK IAkJCQkJCQlicmVhazsKIAkJCQkJCX0KLQkJCQkJCWVsc2UgaWYgKHN0bXQtPmV4Y2x1ZGVP cE5hbWVzKQorCQkJCQkJZWxzZSBpZiAoZXhjbHVzaW9uKQogCQkJCQkJewogCQkJCQkJCS8q CiAJCQkJCQkJICogV2UgZm91bmQgYSBtYXRjaCwgYnV0IGl0J3Mgbm90IGFuIGVxdWFsaXR5 CkBAIC0xMTg2LDYgKzExOTgsOCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJY29u c3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRTsKIAlpZiAoc3Rt dC0+aW5pdGRlZmVycmVkKQogCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFU RV9JTklUX0RFRkVSUkVEOworCWlmIChzdG10LT5pc3dpdGhvdXRvdmVybGFwcykKKwkJY29u c3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfV0lUSE9VVF9PVkVSTEFQUzsKIAog CWluZGV4UmVsYXRpb25JZCA9CiAJCWluZGV4X2NyZWF0ZShyZWwsIGluZGV4UmVsYXRpb25O YW1lLCBpbmRleFJlbGF0aW9uSWQsIHBhcmVudEluZGV4SWQsCkBAIC0xODUwLDYgKzE4NjQs NyBAQCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkgIE9p ZCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkgIGJvb2wg aXNjb25zdHJhaW50LAorCQkJCSAgYm9vbCBpc3dpdGhvdXRvdmVybGFwcywKIAkJCQkgIE9p ZCBkZGxfdXNlcmlkLAogCQkJCSAgaW50IGRkbF9zZWNfY29udGV4dCwKIAkJCQkgIGludCAq ZGRsX3NhdmVfbmVzdGxldmVsKQpAQCAtMTg3Myw2ICsxODg4LDE0IEBAIENvbXB1dGVJbmRl eEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCWVsc2UKIAkJbmV4dEV4Y2xPcCA9IE5V TEw7CiAKKwkvKiBleGNsdXNpb25PcE5hbWVzIGNhbiBiZSBub24tTklMIGlmIHdlIGFyZSBj cmVhdGluZyBhIHBhcnRpdGlvbiAqLworCWlmIChpc3dpdGhvdXRvdmVybGFwcyAmJiBleGNs dXNpb25PcE5hbWVzID09IE5JTCkKKwl7CisJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3Bz ID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleWNvbHMpOworCQlpbmRleEluZm8tPmlpX0V4Y2x1 c2lvblByb2NzID0gcGFsbG9jX2FycmF5KE9pZCwgbmtleWNvbHMpOworCQlpbmRleEluZm8t PmlpX0V4Y2x1c2lvblN0cmF0cyA9IHBhbGxvY19hcnJheSh1aW50MTYsIG5rZXljb2xzKTsK Kwl9CisKIAlpZiAoT2lkSXNWYWxpZChkZGxfdXNlcmlkKSkKIAkJR2V0VXNlcklkQW5kU2Vj Q29udGV4dCgmc2F2ZV91c2VyaWQsICZzYXZlX3NlY19jb250ZXh0KTsKIApAQCAtMjE0OSw2 ICsyMTcyLDMxIEBAIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAog CQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBzdHJhdDsKIAkJCW5l eHRFeGNsT3AgPSBsbmV4dChleGNsdXNpb25PcE5hbWVzLCBuZXh0RXhjbE9wKTsKIAkJfQor CQllbHNlIGlmIChpc3dpdGhvdXRvdmVybGFwcykKKwkJeworCQkJU3RyYXRlZ3lOdW1iZXIg c3RyYXQ7CisJCQlPaWQgb3BpZDsKKwkJCWNoYXIgKm9wbmFtZTsKKworCQkJaWYgKGF0dG4g PT0gbmtleWNvbHMgLSAxKQorCQkJeworCQkJCXN0cmF0ID0gUlRPdmVybGFwU3RyYXRlZ3lO dW1iZXI7CisJCQkJb3BuYW1lID0gIm92ZXJsYXBzIjsKKwkJCX0KKwkJCWVsc2UKKwkJCXsK KwkJCQlzdHJhdCA9IFJURXF1YWxTdHJhdGVneU51bWJlcjsKKwkJCQlvcG5hbWUgPSAiZXF1 YWxzIjsKKwkJCX0KKwkJCUdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KG9wY2xh c3NPaWRzW2F0dG5dLAorCQkJCQkJCQkJCQkgYXR0dHlwZSwKKwkJCQkJCQkJCQkJIG9wbmFt ZSwKKwkJCQkJCQkJCQkJICZvcGlkLAorCQkJCQkJCQkJCQkgJnN0cmF0KTsKKwkJCWluZGV4 SW5mby0+aWlfRXhjbHVzaW9uT3BzW2F0dG5dID0gb3BpZDsKKwkJCWluZGV4SW5mby0+aWlf RXhjbHVzaW9uUHJvY3NbYXR0bl0gPSBnZXRfb3Bjb2RlKG9waWQpOworCQkJaW5kZXhJbmZv LT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBzdHJhdDsKKwkJfQogCiAJCS8qCiAJCSAq IFNldCB1cCB0aGUgcGVyLWNvbHVtbiBvcHRpb25zIChpbmRvcHRpb24gZmllbGQpLiAgRm9y IG5vdywgdGhpcyBpcwpAQCAtMjM3OSw2ICsyNDI3LDg3IEBAIEdldERlZmF1bHRPcENsYXNz KE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAJcmV0dXJuIEludmFsaWRPaWQ7CiB9CiAKKy8q CisgKiBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneQorICoKKyAqIG9wY2xhc3Mg LSB0aGUgb3BjbGFzcyB0byB1c2UKKyAqIGF0dHR5cGUgLSB0aGUgdHlwZSB0byBhc2sgYWJv dXQKKyAqIG9wbmFtZSAtIHVzZWQgdG8gYnVpbGQgZXJyb3IgbWVzc2FnZXMKKyAqIG9waWQg LSBob2xkcyB0aGUgb3BlcmF0b3Igd2UgZm91bmQKKyAqIHN0cmF0IC0gaG9sZHMgdGhlIGlu cHV0IGFuZCBvdXRwdXQgc3RyYXRlZ3kgbnVtYmVyCisgKgorICogRmluZHMgYW4gb3BlcmF0 b3IgZnJvbSBhICJ3ZWxsLWtub3duIiBzdHJhdGVneSBudW1iZXIuCisgKiBUaGlzIGlzIHVz ZWQgZm9yIHRlbXBvcmFsIGluZGV4IGNvbnN0cmFpbnRzCisgKiAoYW5kIG90aGVyIHRlbXBv cmFsIGZlYXR1cmVzKQorICogdG8gbG9vayB1cCBlcXVhbGl0eSBhbmQgb3ZlcmxhcHMgb3Bl cmF0b3JzLCBzaW5jZQorICogdGhlIHN0cmF0ZWd5IG51bWJlcnMgZm9yIG5vbi1idHJlZSBp bmRleGFtcyBuZWVkIG5vdAorICogZm9sbG93IGFueSBmaXhlZCBzY2hlbWUuIFdlIGFzayBh biBvcGNsYXNzIHN1cHBvcnQKKyAqIGZ1bmN0aW9uIHRvIHRyYW5zbGF0ZSBmcm9tIHRoZSB3 ZWxsLWtub3duIG51bWJlcgorICogdG8gdGhlIGludGVybmFsIHZhbHVlLiBJZiB0aGUgZnVu Y3Rpb24gaXNuJ3QgZGVmaW5lZAorICogb3IgaXQgZ2l2ZXMgbm8gcmVzdWx0LCB3ZSByZXRy dW4gSW52YWxpZFN0cmF0ZWd5LgorICovCit2b2lkCitHZXRPcGVyYXRvckZyb21DYW5vbmlj YWxTdHJhdGVneShPaWQgb3BjbGFzcywKKwkJCQkJCQkJIE9pZCBhdHR0eXBlLAorCQkJCQkJ CQkgY29uc3QgY2hhciAqb3BuYW1lLAorCQkJCQkJCQkgT2lkICpvcGlkLAorCQkJCQkJCQkg U3RyYXRlZ3lOdW1iZXIgKnN0cmF0KQoreworCU9pZCBvcGZhbWlseTsKKwlPaWQgb3BjaW50 eXBlOworCVN0cmF0ZWd5TnVtYmVyIG9wc3RyYXQgPSAqc3RyYXQ7CisKKwkqb3BpZCA9IElu dmFsaWRPaWQ7CisKKwlpZiAoZ2V0X29wY2xhc3Nfb3BmYW1pbHlfYW5kX2lucHV0X3R5cGUo b3BjbGFzcywKKwkJCQkJCQkJCQkJJm9wZmFtaWx5LAorCQkJCQkJCQkJCQkmb3BjaW50eXBl KSkKKwl7CisJCS8qCisJCSAqIEFzayB0aGUgb3BjbGFzcyB0byB0cmFuc2xhdGUgdG8gaXRz IGludGVybmFsIHN0cmF0bnVtCisJCSAqCisJCSAqIEZvciBub3cgd2Ugb25seSBuZWVkIEdp U1Qgc3VwcG9ydCwgYnV0IHRoaXMgY291bGQgc3VwcG9ydAorCQkgKiBvdGhlciBpbmRleGFt cyBpZiB3ZSB3YW50ZWQuCisJCSAqLworCQkqc3RyYXQgPSBnaXN0VHJhbnNsYXRlU3RyYXRu dW0ob3BjbGFzcywgb3BzdHJhdCk7CisJCWlmICghU3RyYXRlZ3lJc1ZhbGlkKCpzdHJhdCkp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9P QkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgV0lUSE9V VCBPVkVSTEFQUyBjb25zdHJhaW50Iiwgb3BuYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ291 bGQgbm90IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJXUgZm9yIG9wY2xhc3MgJWQuIiwK KwkJCQkJCSBvcHN0cmF0LCBvcGNsYXNzKSwKKwkJCQkJIGVycmhpbnQoIkRlZmluZSBhIHN0 cmF0bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNzLiIpKSk7CisK KwkJKm9waWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9w Y2ludHlwZSwgKnN0cmF0KTsKKwl9CisKKwlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQorCXsK KwkJSGVhcFR1cGxlCW9wZnR1cGxlOworCQlGb3JtX3BnX29wZmFtaWx5IG9wZmZvcm07CisK KwkJLyoKKwkJICogYXR0cmlidXRlLT5vcGNsYXNzIG1pZ2h0IG5vdCBleHBsaWNpdGx5IG5h bWUgdGhlIG9wZmFtaWx5LAorCQkgKiBzbyBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgc2VsZWN0 ZWQgb3BmYW1pbHkgZm9yIHVzZSBpbiB0aGUKKwkJICogZXJyb3IgbWVzc2FnZS4KKwkJICov CisJCW9wZnR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKE9QRkFNSUxZT0lELAorCQkJCQkJCQkg ICBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5KSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxp ZChvcGZ0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig b3BmYW1pbHkgJXUiLAorCQkJCSBvcGZhbWlseSk7CisJCW9wZmZvcm0gPSAoRm9ybV9wZ19v cGZhbWlseSkgR0VUU1RSVUNUKG9wZnR1cGxlKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygibm8g JXMgb3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCIsIG9w bmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhlcmUgbXVzdCBiZSBhbiAlcyBvcGVyYXRvciB3 aXRoaW4gb3BmYW1pbHkgXCIlc1wiIGZvciB0eXBlIFwiJXNcIi4iLAorCQkJCQkJICAgb3Bu YW1lLAorCQkJCQkJICAgTmFtZVN0cihvcGZmb3JtLT5vcGZuYW1lKSwKKwkJCQkJCSAgIGZv cm1hdF90eXBlX2JlKGF0dHR5cGUpKSkpOworCX0KK30KKwogLyoKICAqCW1ha2VPYmplY3RO YW1lKCkKICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IDZiMGEyMDAxMGUu LmQxMTg5ZDc0YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC0xMDA5MCw2 ICsxMDA5MCw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGNvbmlz bG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCSAgY29uaW5oY291bnQsCS8qIGluaGNv dW50ICovCiAJCQkJCQkJCQkgIGNvbm5vaW5oZXJpdCwgLyogY29uTm9Jbmhlcml0ICovCisJ CQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8KIAkJCQkJCQkJCSAg ZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVzc1NldChhZGRyZXNz LCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTEwMzg4LDYgKzEwMzg5 LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWlu dCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJ CQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAgZmFsc2UsCS8qIGNv bldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0x MDg5Myw2ICsxMDg5NSw3IEBAIENsb25lRmtSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBS ZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBhcnRSZWwpCiAJCQkJCQkJCSAgZmFsc2Us CS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJICAxLAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkg IGZhbHNlLAkvKiBjb25Ob0luaGVyaXQgKi8KKwkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0 aG91dE92ZXJsYXBzICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRp dGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTQyODEs NyArMTQyODQsOCBAQCBUcnlSZXVzZUluZGV4KE9pZCBvbGRJZCwgSW5kZXhTdG10ICpzdG10 KQogCWlmIChDaGVja0luZGV4Q29tcGF0aWJsZShvbGRJZCwKIAkJCQkJCQkgc3RtdC0+YWNj ZXNzTWV0aG9kLAogCQkJCQkJCSBzdG10LT5pbmRleFBhcmFtcywKLQkJCQkJCQkgc3RtdC0+ ZXhjbHVkZU9wTmFtZXMpKQorCQkJCQkJCSBzdG10LT5leGNsdWRlT3BOYW1lcywKKwkJCQkJ CQkgc3RtdC0+aXN3aXRob3V0b3ZlcmxhcHMpKQogCXsKIAkJUmVsYXRpb24JaXJlbCA9IGlu ZGV4X29wZW4ob2xkSWQsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRl eCA1MjE3Nzc1OWFiLi5hMTBhNDJiOTdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBA IC04NDEsNiArODQxLDcgQEAgQ3JlYXRlVHJpZ2dlckZpcmluZ09uKENyZWF0ZVRyaWdTdG10 ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkJCQkJICB0cnVlLCAv KiBpc2xvY2FsICovCiAJCQkJCQkJCQkJCSAgMCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJ CQkJICB0cnVlLCAvKiBub2luaGVyaXQgKi8KKwkJCQkJCQkJCQkJICBmYWxzZSwgLyogY29u d2l0aG91dG92ZXJsYXBzICovCiAJCQkJCQkJCQkJCSAgaXNJbnRlcm5hbCk7CS8qIGlzX2lu dGVybmFsICovCiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCBhYWY5NzI4 Njk3Li4yNDcwMDE5ODE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTM1NDQs NiArMzU0NCw3IEBAIGRvbWFpbkFkZENvbnN0cmFpbnQoT2lkIGRvbWFpbk9pZCwgT2lkIGRv bWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAgdHJ1ZSwgLyogaXMg bG9jYWwgKi8KIAkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJICBmYWxzZSwJ LyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29ud2l0aG91dG92ZXJs YXBzICovCiAJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAJaWYgKGNvbnN0 ckFkZHIpCiAJCU9iamVjdEFkZHJlc3NTZXQoKmNvbnN0ckFkZHIsIENvbnN0cmFpbnRSZWxh dGlvbklkLCBjY29pZCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCBlNjZhOTkyNDdlLi5m NTJhZTNmYzk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTc1Niw2ICs3NTYsNyBAQCBf b3V0Q29uc3RyYWludChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ29uc3RyYWludCAqbm9kZSkK IAkJY2FzZSBDT05TVFJfUFJJTUFSWToKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3Ry LCAiUFJJTUFSWV9LRVkiKTsKIAkJCVdSSVRFX05PREVfRklFTEQoa2V5cyk7CisJCQlXUklU RV9CT09MX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChp bmNsdWRpbmcpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVdSSVRFX1NU UklOR19GSUVMRChpbmRleG5hbWUpOwpAQCAtNzY4LDYgKzc2OSw3IEBAIF9vdXRDb25zdHJh aW50KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJhaW50ICpub2RlKQogCQkJYXBwZW5k U3RyaW5nSW5mb1N0cmluZyhzdHIsICJVTklRVUUiKTsKIAkJCVdSSVRFX0JPT0xfRklFTEQo bnVsbHNfbm90X2Rpc3RpbmN0KTsKIAkJCVdSSVRFX05PREVfRklFTEQoa2V5cyk7CisJCQlX UklURV9CT09MX0ZJRUxEKHdpdGhvdXRfb3ZlcmxhcHMpOwogCQkJV1JJVEVfTk9ERV9GSUVM RChpbmNsdWRpbmcpOwogCQkJV1JJVEVfTk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVdSSVRF X1NUUklOR19GSUVMRChpbmRleG5hbWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBj YzIwMjFjMWY3Li5iNmVmMzBjZTBkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9y ZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwpAQCAtNDI3 LDYgKzQyNyw3IEBAIF9yZWFkQ29uc3RyYWludCh2b2lkKQogCiAJCWNhc2UgQ09OU1RSX1BS SU1BUlk6CiAJCQlSRUFEX05PREVfRklFTEQoa2V5cyk7CisJCQlSRUFEX0JPT0xfRklFTEQo d2l0aG91dF9vdmVybGFwcyk7CiAJCQlSRUFEX05PREVfRklFTEQoaW5jbHVkaW5nKTsKIAkJ CVJFQURfTk9ERV9GSUVMRChvcHRpb25zKTsKIAkJCVJFQURfU1RSSU5HX0ZJRUxEKGluZGV4 bmFtZSk7CkBAIC00MzgsNiArNDM5LDcgQEAgX3JlYWRDb25zdHJhaW50KHZvaWQpCiAJCWNh c2UgQ09OU1RSX1VOSVFVRToKIAkJCVJFQURfQk9PTF9GSUVMRChudWxsc19ub3RfZGlzdGlu Y3QpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGtleXMpOworCQkJUkVBRF9CT09MX0ZJRUxEKHdp dGhvdXRfb3ZlcmxhcHMpOwogCQkJUkVBRF9OT0RFX0ZJRUxEKGluY2x1ZGluZyk7CiAJCQlS RUFEX05PREVfRklFTEQob3B0aW9ucyk7CiAJCQlSRUFEX1NUUklOR19GSUVMRChpbmRleG5h bWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNjNmMTcyZTE3NS4uMDJhZGE0M2E5MCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CkBAIC01MjgsNyArNTI4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNp dmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5 KTsKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNlIGZ1bmNfdGFibGUgeG1s dGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9wZXJhdG9yX2RlZl9hcmcK ICV0eXBlIDxsaXN0Pglyb3dzZnJvbV9pdGVtIHJvd3Nmcm9tX2xpc3Qgb3B0X2NvbF9kZWZf bGlzdAotJXR5cGUgPGJvb2xlYW4+IG9wdF9vcmRpbmFsaXR5CisldHlwZSA8Ym9vbGVhbj4g b3B0X29yZGluYWxpdHkgb3B0X3dpdGhvdXRfb3ZlcmxhcHMKICV0eXBlIDxsaXN0PglFeGNs dXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxlbQogJXR5cGUgPGxp c3Q+CWZ1bmNfYXJnX2xpc3QgZnVuY19hcmdfbGlzdF9vcHQKICV0eXBlIDxub2RlPglmdW5j X2FyZ19leHByCkBAIC00MTE3LDcgKzQxMTcsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJ bi0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJ CX0KLQkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygnIGNvbHVtbkxp c3QgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UK KwkJCXwgVU5JUVVFIG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygnIGNvbHVtbkxpc3Qg b3B0X3dpdGhvdXRfb3ZlcmxhcHMgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24g T3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsK IAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpAQCAtNDEyNiwx MSArNDEyNiwxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsK IAkJCQkJbi0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gISQyOwogCQkJCQluLT5rZXlzID0gJDQ7 Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25zID0gJDc7CisJCQkJ CW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVkaW5nID0gJDc7CisJ CQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsKLQkJCQkJ bi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygkOSwgQDksICJVTklR VUUiLAorCQkJCQluLT5pbmRleHNwYWNlID0gJDk7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQx MCwgQDEwLCAiVU5JUVVFIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0 ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQk ID0gKE5vZGUgKikgbjsKQEAgLTQxNTEsNyArNDE1Miw3IEBAIENvbnN0cmFpbnRFbGVtOgog CQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQotCQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCAnKScgb3B0X2NfaW5jbHVk ZSBvcHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBQUklNQVJZIEtFWSAn KCcgY29sdW1uTGlzdCBvcHRfd2l0aG91dF9vdmVybGFwcyAnKScgb3B0X2NfaW5jbHVkZSBv cHRfZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1 dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWlu dCk7CkBAIC00MTU5LDExICs0MTYwLDEyIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5j b250eXBlID0gQ09OU1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJ CW4tPmtleXMgPSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0JCQkJCW4tPm9wdGlv bnMgPSAkNzsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9ICQ1OworCQkJCQluLT5pbmNs dWRpbmcgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQluLT5pbmRleG5hbWUg PSBOVUxMOwotCQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nlc3NDQVNiaXRz KCQ5LCBAOSwgIlBSSU1BUlkgS0VZIiwKKwkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ5OworCQkJ CQlwcm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwKIAkJCQkJCQkJICAg Jm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5V TEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQyMzEsNiArNDIz MywxMSBAQCBvcHRfbm9faW5oZXJpdDoJTk8gSU5IRVJJVAkJCQkJCQl7ICAkJCA9IHRydWU7 IH0KIAkJCXwgLyogRU1QVFkgKi8JCQkJCQkJeyAgJCQgPSBmYWxzZTsgfQogCQk7CiAKK29w dF93aXRob3V0X292ZXJsYXBzOgorCQkJV0lUSE9VVCBPVkVSTEFQUwkJCQkJCXsgJCQgPSB0 cnVlOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJCQkJeyAkJCA9IGZhbHNlOyB9CisJOworCiBv cHRfY29sdW1uX2xpc3Q6CiAJCQknKCcgY29sdW1uTGlzdCAnKScJCQkJCQl7ICQkID0gJDI7 IH0KIAkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gTklMOyB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYwppbmRleCBjZjBkNDMyYWIxLi5hNWJiNDVkZjFlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTE3MTYsNiArMTcxNiw3IEBAIGdlbmVy YXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBzb3VyY2Vf aWR4LAogCWluZGV4LT51bmlxdWUgPSBpZHhyZWMtPmluZGlzdW5pcXVlOwogCWluZGV4LT5u dWxsc19ub3RfZGlzdGluY3QgPSBpZHhyZWMtPmluZG51bGxzbm90ZGlzdGluY3Q7CiAJaW5k ZXgtPnByaW1hcnkgPSBpZHhyZWMtPmluZGlzcHJpbWFyeTsKKwlpbmRleC0+aXN3aXRob3V0 b3ZlcmxhcHMgPSAoaWR4cmVjLT5pbmRpc3ByaW1hcnkgfHwgaWR4cmVjLT5pbmRpc3VuaXF1 ZSkgJiYgaWR4cmVjLT5pbmRpc2V4Y2x1c2lvbjsKIAlpbmRleC0+dHJhbnNmb3JtZWQgPSB0 cnVlOwkvKiBkb24ndCBuZWVkIHRyYW5zZm9ybUluZGV4U3RtdCAqLwogCWluZGV4LT5jb25j dXJyZW50ID0gZmFsc2U7CiAJaW5kZXgtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKQEAgLTE3 NjUsNyArMTc2Niw5IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFw UmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCQkJCWludAkJCW5FbGVtczsKIAkJCQlpbnQJ CQlpOwogCi0JCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xV U0lPTik7CisJCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xV U0lPTiB8fAorCQkJCQkJKGluZGV4LT5pc3dpdGhvdXRvdmVybGFwcyAmJgorCQkJCQkJIChj b25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9QUklNQVJZIHx8IGNvbnJlYy0+Y29udHlw ZSA9PSBDT05TVFJBSU5UX1VOSVFVRSkpKTsKIAkJCQkvKiBFeHRyYWN0IG9wZXJhdG9yIE9J RHMgZnJvbSB0aGUgcGdfY29uc3RyYWludCB0dXBsZSAqLwogCQkJCWRhdHVtID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIGh0X2NvbnN0ciwKIAkJCQkJCQkJCQkJICAg QW51bV9wZ19jb25zdHJhaW50X2NvbmV4Y2xvcCk7CkBAIC0yMzA1LDYgKzIzMDgsNyBAQCB0 cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRl U3RtdENvbnRleHQgKmN4dCkKIAl9CiAJaW5kZXgtPm51bGxzX25vdF9kaXN0aW5jdCA9IGNv bnN0cmFpbnQtPm51bGxzX25vdF9kaXN0aW5jdDsKIAlpbmRleC0+aXNjb25zdHJhaW50ID0g dHJ1ZTsKKwlpbmRleC0+aXN3aXRob3V0b3ZlcmxhcHMgPSBjb25zdHJhaW50LT53aXRob3V0 X292ZXJsYXBzOwogCWluZGV4LT5kZWZlcnJhYmxlID0gY29uc3RyYWludC0+ZGVmZXJyYWJs ZTsKIAlpbmRleC0+aW5pdGRlZmVycmVkID0gY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwog CkBAIC0yMzk3LDYgKzI0MDEsMTEgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0 cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJCSBlcnJt c2coImluZGV4IFwiJXNcIiBpcyBub3QgdmFsaWQiLCBpbmRleF9uYW1lKSwKIAkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29uc3RyYWludC0+bG9jYXRpb24pKSk7 CiAKKwkJLyoKKwkJICogVG9kYXkgd2UgZm9yYmlkIG5vbi11bmlxdWUgaW5kZXhlcywgYnV0 IHdlIGNvdWxkIHBlcm1pdCBHaVNUCisJCSAqIGluZGV4ZXMgd2hvc2UgbGFzdCBlbnRyeSBp cyBhIHJhbmdlIHR5cGUgYW5kIHVzZSB0aGF0IHRvIGNyZWF0ZSBhCisJCSAqIFdJVEhPVVQg T1ZFUkxBUFMgY29uc3RyYWludCAoaS5lLiBhIHRlbXBvcmFsIGNvbnN0cmFpbnQpLgorCQkg Ki8KIAkJaWYgKCFpbmRleF9mb3JtLT5pbmRpc3VuaXF1ZSkKIAkJCWVyZXBvcnQoRVJST1Is CiAJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLApAQCAtMjY3Myw2 ICsyNjgyLDIzIEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25z dHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCQkJCW5vdG51bGxjbWRzID0gbGFw cGVuZChub3RudWxsY21kcywgbm90bnVsbGNtZCk7CiAJCQl9CiAJCX0KKworCQlpZiAoY29u c3RyYWludC0+d2l0aG91dF9vdmVybGFwcykKKwkJeworCQkJLyoKKwkJCSAqIFRoaXMgZW5m b3JjZXMgdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgZXF1YWxpdHkgY29sdW1uIGJlc2lk ZXMKKwkJCSAqIHRoZSBXSVRIT1VUIE9WRVJMQVBTIGNvbHVtbnMuICBUaGlzIGlzIHBlciBT UUwgc3RhbmRhcmQuICBYWFgKKwkJCSAqIERvIHdlIG5lZWQgdGhpcz8KKwkJCSAqLworCQkJ aWYgKGxpc3RfbGVuZ3RoKGNvbnN0cmFpbnQtPmtleXMpIDwgMikKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJt c2coImNvbnN0cmFpbnQgdXNpbmcgV0lUSE9VVCBPVkVSTEFQUyBuZWVkcyBhdCBsZWFzdCB0 d28gY29sdW1ucyIpKTsKKworCQkJLyogV0lUSE9VVCBPVkVSTEFQUyByZXF1aXJlcyBhIEdp U1QgaW5kZXggKi8KKwkJCWluZGV4LT5hY2Nlc3NNZXRob2QgPSAiZ2lzdCI7CisJCX0KKwog CX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggZWQ3ZjQwZjA1 My4uMjVhYzBhZDFiYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1 dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzM5 LDcgKzMzOSw3IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lkIHZp ZXdvaWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwog c3RhdGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29s IHByZXR0eSk7CiBzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0 dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJCQkJIFN0cmluZ0lu Zm8gYnVmKTsKKwkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8g YnVmKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQs IGludCBwcmV0dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtl cihPaWQgaW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lkICpleGNs dWRlT3BzLApAQCAtMjI0Nyw3ICsyMjQ3LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29y a2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lz Q2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1f cGdfY29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAmYnVmKTsK IAogCQkJCS8qIGFkZCBmb3JlaWduIHJlbGF0aW9uIG5hbWUgKi8KIAkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWYsICIpIFJFRkVSRU5DRVMgJXMoIiwKQEAgLTIyNTgsNyArMjI1OCw3IEBA IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1 bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lE LCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZmtleSk7CiAKLQkJ CQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlk LCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9y bS0+Y29uZnJlbGlkLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cigmYnVmLCAnKScpOwogCkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBwZ19nZXRfY29uc3RyYWlu dGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlp ZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1Ziwg IiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3Jt LT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko dmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsICZidWYpOwogCQkJCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCQkJCX0KIApAQCAtMjM3OSw3ICsyMzc5LDcgQEAg cGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVs bENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQs IHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJ a2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5j b25yZWxpZCwgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29ud2l0aG91dG92ZXJs YXBzLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAK QEAgLTI1NzUsNyArMjU3NSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQg Y29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogICovCiBzdGF0aWMgaW50CiBkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lk IHJlbElkLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRob3V0 T3ZlcmxhcHMsIFN0cmluZ0luZm8gYnVmKQogewogCURhdHVtCSAgICprZXlzOwogCWludAkJ CW5LZXlzOwpAQCAtMjU5Niw2ICsyNTk2LDggQEAgZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKIAkJZWxzZQogCQkJ YXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1l KSk7CiAJfQorCWlmICh3aXRob3V0T3ZlcmxhcHMpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCAiIFdJVEhPVVQgT1ZFUkxBUFMiKTsKIAogCXJldHVybiBuS2V5czsKIH0KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgYi9zcmMvYmFj a2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCmluZGV4IGIzZmFjY2JlZmUuLmYzNDFjNWMz NzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNTU2OCwxMSArNTU2 OCwxNCBAQCBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKFJlbGF0aW9uIHJlbGF0aW9u KQogLyoKICAqIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5mbyAtLSBnZXQgaW5mbyBhYm91dCBp bmRleCdzIGV4Y2x1c2lvbiBjb25zdHJhaW50CiAgKgotICogVGhpcyBzaG91bGQgYmUgY2Fs bGVkIG9ubHkgZm9yIGFuIGluZGV4IHRoYXQgaXMga25vd24gdG8gaGF2ZSBhbgotICogYXNz b2NpYXRlZCBleGNsdXNpb24gY29uc3RyYWludC4gIEl0IHJldHVybnMgYXJyYXlzIChwYWxs b2MnZCBpbiBjYWxsZXIncwotICogY29udGV4dCkgb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRv ciBPSURzLCB0aGVpciB1bmRlcmx5aW5nIGZ1bmN0aW9ucycKLSAqIE9JRHMsIGFuZCB0aGVp ciBzdHJhdGVneSBudW1iZXJzIGluIHRoZSBpbmRleCdzIG9wY2xhc3Nlcy4gIFdlIGNhY2hl Ci0gKiBhbGwgdGhpcyBpbmZvcm1hdGlvbiBzaW5jZSBpdCByZXF1aXJlcyBhIGZhaXIgYW1v dW50IG9mIHdvcmsgdG8gZ2V0LgorICogVGhpcyBzaG91bGQgYmUgY2FsbGVkIG9ubHkgZm9y IGFuIGluZGV4IHRoYXQgaXMga25vd24gdG8gaGF2ZSBhbiBhc3NvY2lhdGVkCisgKiBleGNs dXNpb24gY29uc3RyYWludCBvciBwcmltYXJ5IGtleS91bmlxdWUgY29uc3RyYWludCB1c2lu ZyBXSVRIT1VUCisgKiBPVkVSTEFQUy4KKworICogSXQgcmV0dXJucyBhcnJheXMgKHBhbGxv YydkIGluIGNhbGxlcidzIGNvbnRleHQpIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3IKKyAq IE9JRHMsIHRoZWlyIHVuZGVybHlpbmcgZnVuY3Rpb25zJyBPSURzLCBhbmQgdGhlaXIgc3Ry YXRlZ3kgbnVtYmVycyBpbiB0aGUKKyAqIGluZGV4J3Mgb3BjbGFzc2VzLiAgV2UgY2FjaGUg YWxsIHRoaXMgaW5mb3JtYXRpb24gc2luY2UgaXQgcmVxdWlyZXMgYSBmYWlyCisgKiBhbW91 bnQgb2Ygd29yayB0byBnZXQuCiAgKi8KIHZvaWQKIFJlbGF0aW9uR2V0RXhjbHVzaW9uSW5m byhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLApAQCAtNTYzNiw3ICs1NjM5LDEwIEBAIFJlbGF0 aW9uR2V0RXhjbHVzaW9uSW5mbyhSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQlpbnQJCQlu ZWxlbTsKIAogCQkvKiBXZSB3YW50IHRoZSBleGNsdXNpb24gY29uc3RyYWludCBvd25pbmcg dGhlIGluZGV4ICovCi0JCWlmIChjb25mb3JtLT5jb250eXBlICE9IENPTlNUUkFJTlRfRVhD TFVTSU9OIHx8CisJCWlmICgoY29uZm9ybS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xV U0lPTiAmJgorCQkJCQkhKGNvbmZvcm0tPmNvbndpdGhvdXRvdmVybGFwcyAmJiAoCisJCQkJ CQkJY29uZm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BSSU1BUlkKKwkJCQkJCQl8fCBj b25mb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFKSkpIHx8CiAJCQljb25mb3Jt LT5jb25pbmRpZCAhPSBSZWxhdGlvbkdldFJlbGlkKGluZGV4UmVsYXRpb24pKQogCQkJY29u dGludWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDA1MGE4MzEyMjYuLjYzZmM3YzQ4ODAgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwpAQCAtNzAxNCw2ICs3MDE0LDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZl ICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWlfY29u bmFtZSwKIAkJCQlpX2NvbmRlZmVycmFibGUsCiAJCQkJaV9jb25kZWZlcnJlZCwKKwkJCQlp X2NvbndpdGhvdXRvdmVybGFwcywKIAkJCQlpX2NvbnRhYmxlb2lkLAogCQkJCWlfY29ub2lk LAogCQkJCWlfY29uZGVmLApAQCAtNzA5NSwxMCArNzA5NiwxNyBAQCBnZXRJbmRleGVzKEFy Y2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAKIAlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAotCQkJCQkJCSAiaS5pbmRudWxsc25vdGRpc3RpbmN0ICIpOworCQkJCQkJ CSAiaS5pbmRudWxsc25vdGRpc3RpbmN0LCAiKTsKIAllbHNlCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAotCQkJCQkJCSAiZmFsc2UgQVMgaW5kbnVsbHNub3RkaXN0aW5jdCAi KTsKKwkJCQkJCQkgImZhbHNlIEFTIGluZG51bGxzbm90ZGlzdGluY3QsICIpOworCisJaWYg KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTcwMDAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwKKwkJCQkJCQkgImMuY29ud2l0aG91dG92ZXJsYXBzICIpOworCWVsc2UKKwkJ YXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJOVUxMIEFTIGNvbndpdGhv dXRvdmVybGFwcyAiKTsKIAogCS8qCiAJICogVGhlIHBvaW50IG9mIHRoZSBtZXNzeS1sb29r aW5nIG91dGVyIGpvaW4gaXMgdG8gZmluZCBhIGNvbnN0cmFpbnQgdGhhdApAQCAtNzE2Niw2 ICs3MTc0LDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5m b1tdLCBpbnQgbnVtVGFibGVzKQogCWlfY29ubmFtZSA9IFBRZm51bWJlcihyZXMsICJjb25u YW1lIik7CiAJaV9jb25kZWZlcnJhYmxlID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmFi bGUiKTsKIAlpX2NvbmRlZmVycmVkID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZmVycmVkIik7 CisJaV9jb253aXRob3V0b3ZlcmxhcHMgPSBQUWZudW1iZXIocmVzLCAiY29ud2l0aG91dG92 ZXJsYXBzIik7CiAJaV9jb250YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJjb250YWJsZW9p ZCIpOwogCWlfY29ub2lkID0gUFFmbnVtYmVyKHJlcywgImNvbm9pZCIpOwogCWlfY29uZGVm ID0gUFFmbnVtYmVyKHJlcywgImNvbmRlZiIpOwpAQCAtNzI3Myw2ICs3MjgyLDcgQEAgZ2V0 SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFi bGVzKQogCQkJCWNvbnN0cmluZm8tPmNvbmluZGV4ID0gaW5keGluZm9bal0uZG9iai5kdW1w SWQ7CiAJCQkJY29uc3RyaW5mby0+Y29uZGVmZXJyYWJsZSA9ICooUFFnZXR2YWx1ZShyZXMs IGosIGlfY29uZGVmZXJyYWJsZSkpID09ICd0JzsKIAkJCQljb25zdHJpbmZvLT5jb25kZWZl cnJlZCA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29uZGVmZXJyZWQpKSA9PSAndCc7CisJ CQkJY29uc3RyaW5mby0+Y29ud2l0aG91dG92ZXJsYXBzID0gKihQUWdldHZhbHVlKHJlcywg aiwgaV9jb253aXRob3V0b3ZlcmxhcHMpKSA9PSAndCc7CiAJCQkJY29uc3RyaW5mby0+Y29u aXNsb2NhbCA9IHRydWU7CiAJCQkJY29uc3RyaW5mby0+c2VwYXJhdGUgPSB0cnVlOwogCkBA IC0xNjk3OCw2ICsxNjk4OCw4IEBAIGR1bXBDb25zdHJhaW50KEFyY2hpdmUgKmZvdXQsIGNv bnN0IENvbnN0cmFpbnRJbmZvICpjb25pbmZvKQogCQkJCQkJCQkgIChrID09IDApID8gIiIg OiAiLCAiLAogCQkJCQkJCQkgIGZtdElkKGF0dG5hbWUpKTsKIAkJCX0KKwkJCWlmIChjb25p bmZvLT5jb253aXRob3V0b3ZlcmxhcHMpCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwg IiBXSVRIT1VUIE9WRVJMQVBTIik7CiAKIAkJCWlmIChpbmR4aW5mby0+aW5kbmtleWF0dHJz IDwgaW5keGluZm8tPmluZG5hdHRycykKIAkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAi KSBJTkNMVURFICgiKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgg Yi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDY3M2NhNWM5MmQuLjEwNjA1ZWNh YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNDg4LDYgKzQ4OCw3IEBAIHR5cGVkZWYgc3RydWN0 IF9jb25zdHJhaW50SW5mbwogCUR1bXBJZAkJY29uaW5kZXg7CQkvKiBpZGVudGlmaWVzIGFz c29jaWF0ZWQgaW5kZXggaWYgYW55ICovCiAJYm9vbAkJY29uZGVmZXJyYWJsZTsJLyogdHJ1 ZSBpZiBjb25zdHJhaW50IGlzIERFRkVSUkFCTEUgKi8KIAlib29sCQljb25kZWZlcnJlZDsJ LyogdHJ1ZSBpZiBjb25zdHJhaW50IGlzIElOSVRJQUxMWSBERUZFUlJFRCAqLworCWJvb2wJ CWNvbndpdGhvdXRvdmVybGFwczsJLyogdHJ1ZSBpZiB0aGUgY29uc3RyYWludCBpcyBXSVRI T1VUIE9WRVJMQVBTICovCiAJYm9vbAkJY29uaXNsb2NhbDsJCS8qIHRydWUgaWYgY29uc3Ry YWludCBoYXMgbG9jYWwgZGVmaW5pdGlvbiAqLwogCWJvb2wJCXNlcGFyYXRlOwkJLyogdHJ1 ZSBpZiBtdXN0IGR1bXAgYXMgc2VwYXJhdGUgaXRlbSAqLwogfSBDb25zdHJhaW50SW5mbzsK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKaW5kZXggMTYzOWJkZDlmYy4uNjYxMzQyNWQ2 MyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKQEAgLTEwMTUsNiArMTAxNSw0NiBA QCBteSAldGVzdHMgPSAoCiAJCX0sCiAJfSwKIAorCSdDT05TVFJBSU5UIFBSSU1BUlkgS0VZ IC8gV0lUSE9VVCBPVkVSTEFQUycgPT4geworCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRB QkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3RwayAoCisJCQkJCQkJY29sMSBpbnQ0cmFuZ2Us CisJCQkJCQkJY29sMiB0c3R6cmFuZ2UsCisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxl X3Rwa19wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsn LAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50 ZXN0X3RhYmxlX3Rwa1xFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxl X3Rwa19wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xF CisJCQkveG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rf c2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgPT4gMSwKKwkJfSwKKwkJdW5s aWtlID0+IHsKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9k dW1wX21lYXN1cmVtZW50ICAgID0+IDEsCisJCX0sCisJfSwKKworCSdDT05TVFJBSU5UIFVO SVFVRSAvIFdJVEhPVVQgT1ZFUkxBUFMnID0+IHsKKwkJY3JlYXRlX3NxbCAgPT4gJ0NSRUFU RSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJsZV90dXEgKAorCQkJCQkJCWNvbDEgaW50NHJh bmdlLAorCQkJCQkJCWNvbDIgdHN0enJhbmdlLAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90 YWJsZV90dXFfdXEgVU5JUVVFIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAor CQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0 X3RhYmxlX3R1cVxFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1 cV91cSBVTklRVUUgKGNvbDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVu cywKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4gewor CQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3Vy ZW1lbnQgICAgPT4gMSwKKwkJfSwKKwl9LAorCiAJJ0FMVEVSIFRBQkxFIChwYXJ0aXRpb25l ZCkgQUREIENPTlNUUkFJTlQgLi4uIEZPUkVJR04gS0VZJyA9PiB7CiAJCWNyZWF0ZV9vcmRl ciA9PiA0LAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3Rf dGFibGVfZmsgKApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMv YmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCA1MDc3ZTdiMzU4Li42MWQ2NDUyYjUzIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVz Y3JpYmUuYwpAQCAtMjM3OSw2ICsyMzc5LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxz KGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKKwkJCWlmIChwc2V0 LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAi LCBjb24uY29ud2l0aG91dG92ZXJsYXBzIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgY29ud2l0aG91dG92ZXJsYXBzIik7CiAJCQlh cHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAogCQkJCQkJCSAgIlxuRlJPTSBwZ19jYXRhbG9nLnBn X2NsYXNzIGMsIHBnX2NhdGFsb2cucGdfY2xhc3MgYzIsIHBnX2NhdGFsb2cucGdfaW5kZXgg aVxuIgogCQkJCQkJCSAgIiAgTEVGVCBKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBj b24gT04gKGNvbnJlbGlkID0gaS5pbmRyZWxpZCBBTkQgY29uaW5kaWQgPSBpLmluZGV4cmVs aWQgQU5EIGNvbnR5cGUgSU4gKCdwJywndScsJ3gnKSlcbiIKQEAgLTI0MDAsOCArMjQwNCwx MiBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAog CQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgIFwiJXNcIiIsCiAJCQkJCQkJCQkg IFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CiAKLQkJCQkJLyogSWYgZXhjbHVzaW9uIGNv bnN0cmFpbnQsIHByaW50IHRoZSBjb25zdHJhaW50ZGVmICovCi0JCQkJCWlmIChzdHJjbXAo UFFnZXR2YWx1ZShyZXN1bHQsIGksIDcpLCAieCIpID09IDApCisJCQkJCS8qCisJCQkJCSAq IElmIGV4Y2x1c2lvbiBjb25zdHJhaW50IG9yIFBLL1VOSVFVRSBjb25zdHJhaW50IFdJVEhP VVQKKwkJCQkJICogT1ZFUkxBUFMsIHByaW50IHRoZSBjb25zdHJhaW50ZGVmCisJCQkJCSAq LworCQkJCQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9PSAw IHx8CisJCQkJCQkJc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxMiksICJ0IikgPT0g MCkKIAkJCQkJewogCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAlcyIsCiAJCQkJ CQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgNikpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpc3RfcHJpdmF0ZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dpc3Rf cHJpdmF0ZS5oCmluZGV4IDgyZWI3YjRiZDguLjI4MjczZmI5ODYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9naXN0X3ByaXZhdGUuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvZ2lzdF9wcml2YXRlLmgKQEAgLTUzMiw2ICs1MzIsNyBAQCBleHRlcm4gdm9pZCBnaXN0 TWFrZVVuaW9uS2V5KEdJU1RTVEFURSAqZ2lzdHN0YXRlLCBpbnQgYXR0bm8sCiAJCQkJCQkJ IERhdHVtICpkc3QsIGJvb2wgKmRzdGlzbnVsbCk7CiAKIGV4dGVybiBYTG9nUmVjUHRyIGdp c3RHZXRGYWtlTFNOKFJlbGF0aW9uIHJlbCk7CitleHRlcm4gU3RyYXRlZ3lOdW1iZXIgZ2lz dFRyYW5zbGF0ZVN0cmF0bnVtKE9pZCBvcGNsYXNzLCBTdHJhdGVneU51bWJlciBzdHJhdCk7 CiAKIC8qIGdpc3R2YWN1dW0uYyAqLwogZXh0ZXJuIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAq Z2lzdGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLApkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3N0cmF0bnVtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRu dW0uaAppbmRleCAxYjI5NjUzYThhLi43ODQ1ZDU0MDEyIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9hY2Nlc3Mvc3RyYXRudW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRu dW0uaApAQCAtMjIsNiArMjIsNyBAQAogdHlwZWRlZiB1aW50MTYgU3RyYXRlZ3lOdW1iZXI7 CiAKICNkZWZpbmUgSW52YWxpZFN0cmF0ZWd5ICgoU3RyYXRlZ3lOdW1iZXIpIDApCisjZGVm aW5lIFN0cmF0ZWd5SXNWYWxpZChzdHJhdG51bSkgKChib29sKSAoKHN0cmF0bnVtKSAhPSBJ bnZhbGlkU3RyYXRlZ3kpKQogCiAvKgogICogU3RyYXRlZ3kgbnVtYmVycyBmb3IgQi10cmVl IGluZGV4ZXMuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNDFhMGI5YWVlMS4uNzM5ZDg0M2Ey YiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtOTIsNiArOTIsNyBAQCBleHRlcm4gT2lkCWlu ZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAjZGVmaW5lCUlOREVYX0NPTlNU Ul9DUkVBVEVfSU5JVF9ERUZFUlJFRAkoMSA8PCAyKQogI2RlZmluZQlJTkRFWF9DT05TVFJf Q1JFQVRFX1VQREFURV9JTkRFWAkoMSA8PCAzKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JF QVRFX1JFTU9WRV9PTERfREVQUwkoMSA8PCA0KQorI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JF QVRFX1dJVEhPVVRfT1ZFUkxBUFMgKDEgPDwgNSkKIAogZXh0ZXJuIE9pZAlpbmRleF9jb25j dXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkJ CSAgIE9pZCBvbGRJbmRleElkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApp bmRleCBhMDI2YjQyNTE1Li5jMTdiMWU5ZDMxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Nv bnN0cmFpbnQuaApAQCAtMTA3LDYgKzEwNywxMiBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQs MjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkKIAkvKiBIYXMgYSBsb2NhbCBkZWZpbml0aW9u IGFuZCBjYW5ub3QgYmUgaW5oZXJpdGVkICovCiAJYm9vbAkJY29ubm9pbmhlcml0OwogCisJ LyoKKwkgKiBGb3IgcHJpbWFyeSBrZXlzIGFuZCB1bmlxdWUgY29uc3RyYWludHMsIHNpZ25p ZmllcyB0aGUgbGFzdCBjb2x1bW4gdXNlcworCSAqIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1 YWxzLgorCSAqLworCWJvb2wJCWNvbndpdGhvdXRvdmVybGFwczsKKwogI2lmZGVmIENBVEFM T0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAK IAkvKgpAQCAtMTQ2LDcgKzE1Miw4IEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENv bnN0cmFpbnRSZWxhdGlvbklkKQogCiAJLyoKIAkgKiBJZiBhbiBleGNsdXNpb24gY29uc3Ry YWludCwgdGhlIE9JRHMgb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9yCi0JICogZWFj aCBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQKKwkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29u c3RyYWludC4gIEFsc28gc2V0IGZvciB1bmlxdWUgY29uc3RyYWludHMvcHJpbWFyeQorCSAq IGtleXMgdXNpbmcgV0lUSE9VVCBPVkVSTEFQUy4KIAkgKi8KIAlPaWQJCQljb25leGNsb3Bb MV0gQktJX0xPT0tVUChwZ19vcGVyYXRvcik7CiAKQEAgLTIzNiw2ICsyNDMsNyBAQCBleHRl cm4gT2lkCUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShjb25zdCBjaGFyICpjb25zdHJhaW50TmFt ZSwKIAkJCQkJCQkJICBib29sIGNvbklzTG9jYWwsCiAJCQkJCQkJCSAgaW50IGNvbkluaENv dW50LAogCQkJCQkJCQkgIGJvb2wgY29uTm9Jbmhlcml0LAorCQkJCQkJCQkgIGJvb2wgY29u V2l0aG91dE92ZXJsYXBzLAogCQkJCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpOwogCiBleHRl cm4gYm9vbCBDb25zdHJhaW50TmFtZUlzVXNlZChDb25zdHJhaW50Q2F0ZWdvcnkgY29uQ2F0 LCBPaWQgb2JqSWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0u aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCmluZGV4IDE3OWViOTkwMWYuLjFm NzM4YjAxMjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCisr KyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oCkBAIC0xNCw2ICsxNCw3IEBACiAj aWZuZGVmIERFRlJFTV9ICiAjZGVmaW5lIERFRlJFTV9ICiAKKyNpbmNsdWRlICJhY2Nlc3Mv c3RyYXRudW0uaCIKICNpbmNsdWRlICJjYXRhbG9nL29iamVjdGFkZHJlc3MuaCIKICNpbmNs dWRlICJub2Rlcy9wYXJhbXMuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgpA QCAtNDQsMTAgKzQ1LDE0IEBAIGV4dGVybiBjaGFyICpDaG9vc2VSZWxhdGlvbk5hbWUoY29u c3QgY2hhciAqbmFtZTEsIGNvbnN0IGNoYXIgKm5hbWUyLAogZXh0ZXJuIGJvb2wgQ2hlY2tJ bmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkJCQkgY29uc3QgY2hhciAqYWNjZXNz TWV0aG9kTmFtZSwKIAkJCQkJCQkJIGNvbnN0IExpc3QgKmF0dHJpYnV0ZUxpc3QsCi0JCQkJ CQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVzKTsKKwkJCQkJCQkJIGNvbnN0IExp c3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCQkJCSBib29sIGlzV2l0aG91dE92ZXJsYXBz KTsKIGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9p ZCk7CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKGNvbnN0IExpc3QgKm9wY2xhc3MsIE9p ZCBhdHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9p ZCBhY2Nlc3NNZXRob2RJZCk7CitleHRlcm4gdm9pZCBHZXRPcGVyYXRvckZyb21DYW5vbmlj YWxTdHJhdGVneShPaWQgb3BjbGFzcywgT2lkIGF0dHR5cGUsCisJCQkJCQkJCQkJCSBjb25z dCBjaGFyICpvcG5hbWUsIE9pZCAqb3BpZCwKKwkJCQkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVy ICpzdHJhdCk7CiAKIC8qIGNvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICovCiBleHRlcm4gT2Jq ZWN0QWRkcmVzcyBDcmVhdGVGdW5jdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZUZ1 bmN0aW9uU3RtdCAqc3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZTQ5NDMw OWRhOC4uMDk4OTkwZGQxNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjU4OSw2 ICsyNTg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCWJvb2wJCW51bGxzX25v dF9kaXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQgZm9yIFVOSVFVRSBjb25zdHJhaW50cyAq LwogCUxpc3QJICAgKmtleXM7CQkJLyogU3RyaW5nIG5vZGVzIG5hbWluZyByZWZlcmVuY2Vk IGtleQogCQkJCQkJCQkgKiBjb2x1bW4ocyk7IGFsc28gdXNlZCBmb3IgTk9UIE5VTEwgKi8K Kwlib29sCQl3aXRob3V0X292ZXJsYXBzOwkvKiBXSVRIT1VUIE9WRVJMQVBTIHNwZWNpZmll ZCAqLwogCUxpc3QJICAgKmluY2x1ZGluZzsJCS8qIFN0cmluZyBub2RlcyBuYW1pbmcgcmVm ZXJlbmNlZCBub25rZXkKIAkJCQkJCQkJICogY29sdW1uKHMpICovCiAKQEAgLTMyMTgsNiAr MzIxOSw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U3RtdAogCWJvb2wJCW51bGxzX25vdF9k aXN0aW5jdDsgLyogbnVsbCB0cmVhdG1lbnQgZm9yIFVOSVFVRSBjb25zdHJhaW50cyAqLwog CWJvb2wJCXByaW1hcnk7CQkvKiBpcyBpbmRleCBhIHByaW1hcnkga2V5PyAqLwogCWJvb2wJ CWlzY29uc3RyYWludDsJLyogaXMgaXQgZm9yIGEgcGtleS91bmlxdWUgY29uc3RyYWludD8g Ki8KKwlib29sCQlpc3dpdGhvdXRvdmVybGFwczsJLyogaXMgdGhlIGNvbnN0cmFpbnQgV0lU SE9VVCBPVkVSTEFQUz8gKi8KIAlib29sCQlkZWZlcnJhYmxlOwkJLyogaXMgdGhlIGNvbnN0 cmFpbnQgREVGRVJSQUJMRT8gKi8KIAlib29sCQlpbml0ZGVmZXJyZWQ7CS8qIGlzIHRoZSBj b25zdHJhaW50IElOSVRJQUxMWSBERUZFUlJFRD8gKi8KIAlib29sCQl0cmFuc2Zvcm1lZDsJ LyogdHJ1ZSB3aGVuIHRyYW5zZm9ybUluZGV4U3RtdCBpcyBmaW5pc2hlZCAqLwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uY2QwNDQ2ZmE1MQotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5v dXQKQEAgLTAsMCArMSwzOTUgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9WRVJMQVBTLgor LS0KKy0tIFdlIGxlYXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0byB0ZXN0IHBnX2R1bXAg ZXRjOgorLS0gdGVtcG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAorLS0gdGVtcG9yYWxfZmtf cm5nMnJuZy4KKy0tCistLSB0ZXN0IGlucHV0IHBhcnNlcgorLS0KKy0tIFBLIHdpdGggbm8g Y29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3Br IFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAg Y29uc3RyYWludCB1c2luZyBXSVRIT1VUIE9WRVJMQVBTIG5lZWRzIGF0IGxlYXN0IHR3byBj b2x1bW5zCistLSBQSyB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRo ZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBr ZXkgZG9lcyBub3QgZXhpc3QKK0xJTkUgMzogIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VLi4uCisgICAgICAgICBeCistLSBQ SyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitFUlJPUjogIGRhdGEgdHlwZSB0ZXh0IGhhcyBubyBkZWZhdWx0IG9wZXJhdG9yIGNs YXNzIGZvciBhY2Nlc3MgbWV0aG9kICJnaXN0IgorSElOVDogIFlvdSBtdXN0IHNwZWNpZnkg YW4gb3BlcmF0b3IgY2xhc3MgZm9yIHRoZSBpbmRleCBvciBkZWZpbmUgYSBkZWZhdWx0IG9w ZXJhdG9yIGNsYXNzIGZvciB0aGUgZGF0YSB0eXBlLgorLS0gUEsgd2l0aCBvbmUgY29sdW1u IHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCS0tIFNpbmNl IHdlIGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBh biBpbnQ0cmFuZ2UgaW5zdGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJl Z3Jlc3Npb24gdGVzdCB1c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxf cm5nCisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nIgorICBDb2x1 bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQor IGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxp ZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgor ICAgICJ0ZW1wb3JhbF9ybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKKyAgICAg ICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2lu ZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u bmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9y YWxfcm5nX3BrIE9OIHRlbXBvcmFsX3JuZyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCiso MSByb3cpCisKKy0tIFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorLS0gV2Ug ZG9uJ3QgZHJvcCB0aGlzIHRhYmxlIGJlY2F1c2UgdGVzdHMgYmVsb3cgYWxzbyBuZWVkIG11 bHRpcGxlIHNjYWxhciBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAor CWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMgorICAgICAg ICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMiIKKyAgQ29sdW1uICB8ICAgVHlw ZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEgICAgICB8 IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgaWQyICAgICAgfCBpbnQ0 cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAg IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3Ju ZzJfcGsiIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisgICAgICAgICAgICAg ICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFBSSU1BUlkgS0VZIChp ZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNU IHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nMl9wayBPTiB0ZW1wb3JhbF9ybmcy IFVTSU5HIGdpc3QgKGlkMSwgaWQyLCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0gUEsgd2l0 aCBhIGN1c3RvbSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5n ZSAoc3VidHlwZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzNfcGs7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitE Uk9QIFRZUEUgdGV4dHJhbmdlMjsKKy0tIFBLIHdpdGggYSBtdWx0aXJhbmdlOgorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX21sdHJuZyAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQg dHNtdWx0aXJhbmdlLAorICBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxf bWx0cm5nCisgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfbWx0cm5nIgor ICBDb2x1bW4gIHwgICAgIFR5cGUgICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t Ky0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlICAgIHwgICAgICAgICAgIHwgbm90 IG51bGwgfCAKKyB2YWxpZF9hdCB8IHRzbXVsdGlyYW5nZSB8ICAgICAgICAgICB8IG5vdCBu dWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9tbHRybmdfcGsiIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKworLS0gVU5JUVVFIHdpdGggbm8g Y29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nMyAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNf dXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgY29u c3RyYWludCB1c2luZyBXSVRIT1VUIE9WRVJMQVBTIG5lZWRzIGF0IGxlYXN0IHR3byBjb2x1 bW5zCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0 aGVyZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBJTlRFR0VSLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4ga2V5 IGRvZXMgbm90IGV4aXN0CitMSU5FIDM6ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVi4uLgorICAgICAgICAgXgorLS0gVU5J UVVFIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK0VSUk9SOiAgZGF0YSB0eXBlIHRleHQgaGFzIG5vIGRlZmF1bHQgb3BlcmF0b3IgY2xh c3MgZm9yIGFjY2VzcyBtZXRob2QgImdpc3QiCitISU5UOiAgWW91IG11c3Qgc3BlY2lmeSBh biBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQgb3Bl cmF0b3IgY2xhc3MgZm9yIHRoZSBkYXRhIHR5cGUuCistLSBVTklRVUUgd2l0aCBvbmUgY29s dW1uIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Ju ZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0 ZW1wb3JhbF9ybmczCisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmcz IgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZh dWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0t LS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJ bmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmczX3VxIiBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsK KyAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNv bmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ybmczX3VxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBn X2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9y bmczX3VxIE9OIHRlbXBvcmFsX3JuZzMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEg cm93KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CistLSBVTklRVUUgd2l0aCB0d28g Y29sdW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJ aWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworICAgICAgICAgICAg IFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8 IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEgICAgICB8IGludDRy YW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgaWQyICAgICAgfCBpbnQ0cmFuZ2Ug fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZzNfdXEi IFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVD VCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBj b25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAgICAgIHBnX2dldF9jb25z dHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQs IDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZzNfdXEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0 X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBv cmFsX3JuZzNfdXEgT04gdGVtcG9yYWxfcm5nMyBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFs aWRfYXQpCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKy0tIFVOSVFV RSB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFT IHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitE Uk9QIFRZUEUgdGV4dHJhbmdlMjsKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05T VFJBSU5UCistLQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX3JuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19w aworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBQ SyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUg SU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZh bGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsM19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitF UlJPUjogICJpZHhfdGVtcG9yYWwzX3VxIiBpcyBub3QgYSB1bmlxdWUgaW5kZXgKK0xJTkUg MjogIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworICAgICAgICAgICAgIF4KK0RFVEFJ TDogIENhbm5vdCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1bmlxdWUgY29uc3RyYWludCB1 c2luZyBzdWNoIGFuIGluZGV4LgorRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBVTklRVUUg d2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElO REVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxp ZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0VSUk9SOiAg ImlkeF90ZW1wb3JhbDNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQURE IENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisgICAgICAgICAgICAgXgorREVUQUlMOiAgQ2Fu bm90IGNyZWF0ZSBhIHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJhaW50IHVzaW5nIHN1 Y2ggYW4gaW5kZXguCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIFVOSVFVRSB3aXRoIFVT SU5HIFtVTklRVUVdIElOREVYIChwb3NzaWJsZSBidXQgbm90IGEgdGVtcG9yYWwgY29uc3Ry YWludCk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBVTklRVUUgSU5ERVggaWR4X3RlbXBvcmFsM191 cSBPTiB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4 X3RlbXBvcmFsM191cTsKK05PVElDRTogIEFMVEVSIFRBQkxFIC8gQUREIENPTlNUUkFJTlQg VVNJTkcgSU5ERVggd2lsbCByZW5hbWUgaW5kZXggImlkeF90ZW1wb3JhbDNfdXEiIHRvICJ0 ZW1wb3JhbDNfdXEiCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBjb2x1 bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwz ICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09M VU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJ UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFC TEUgdGVtcG9yYWwzOworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgVU5JUVVFIGNvbnN0cmFp bnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50 NHJhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9h dCB0c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7Cist LQorLS0gdGVzdCBQSyBpbnNlcnRzCistLQorLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0w Mi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRz cmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w MS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMS0wNScpKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xh dGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmdfcGsiCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBr ZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIs IlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsK K0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gImlkIiBvZiByZWxhdGlvbiAidGVtcG9y YWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5n IHJvdyBjb250YWlucyAobnVsbCwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkg SmFuIDA1IDAwOjAwOjAwIDIwMTgiKSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzMsM10nLCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZh bGlkX2F0IiBvZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBj b25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwp LgorLS0KKy0tIHRlc3QgYSByYW5nZSB3aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29u c3RyYWludAorLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0cmFuZ2Us CisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFtZSBURVhU LAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVOSVFV RSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFd JywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDddJywgJ2Zv bycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEn KSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0 ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcworLS0KK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlk X2F0IERST1AgTk9UIE5VTEw7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGlzIGluIGEg cHJpbWFyeSBrZXkKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRf YXQgVFlQRSB0c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBw ZXIodmFsaWRfYXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBSRU5BTUUgQ09MVU1OIHZh bGlkX2F0IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xV TU4gdmFsaWRfdGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgUEFS VElUSU9OIEJZIGZvciByYW5nZXMKKy0tCistLSB0ZW1wb3JhbCBQUklNQVJZIEtFWToKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZh bGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cGFyaXRpb25lZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRp dGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAn WzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRp dGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFu Z2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBk YXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCww Mi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBv bmUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygzIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDAp IHwgb25lCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAg IHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0y MDEwKSB8IHRocmVlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQ7CistLSB0ZW1wb3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUg dGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsK K0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZP UiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0 aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywg J1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUn KSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyks ICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAx LTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0K KyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDIt MDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEt MjAxMCkgfCB0aHJlZQorKDMgcm93cykKKworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwg WzAxLTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAz LTAxLTIwMDApIHwgb25lCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5h bWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMyw0 KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygxIHJvdykKKworRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCmluZGV4IGYwOTg3ZmY1MzcuLmIwOGFhYWU0NGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQpAQCAtNzgsNyArNzgsNyBAQCB0ZXN0OiBicmluX2Jsb29tIGJyaW5f bXVsdGkKICMgcHNxbCBkZXBlbmRzIG9uIGNyZWF0ZV9hbQogIyBhbXV0aWxzIGRlcGVuZHMg b24gZ2VvbWV0cnksIGNyZWF0ZV9pbmRleF9zcGdpc3QsIGhhc2hfaW5kZXgsIGJyaW4KICMg LS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRl cl9vcGVyYXRvciBtaXNjIGFzeW5jIGRic2l6ZSBtZXJnZSBtaXNjX2Z1bmN0aW9ucyBzeXN2 aWV3cyB0c3JmIHRpZCB0aWRzY2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRlLmljdS51dGY4IGlu Y3JlbWVudGFsX3NvcnQgY3JlYXRlX3JvbGUKK3Rlc3Q6IGNyZWF0ZV90YWJsZV9saWtlIGFs dGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3luYyBkYnNpemUgbWVyZ2UgbWlz Y19mdW5jdGlvbnMgc3lzdmlld3MgdHNyZiB0aWQgdGlkc2NhbiB0aWRyYW5nZXNjYW4gY29s bGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRhbF9zb3J0IGNyZWF0ZV9yb2xlIHdpdGhvdXRfb3Zl cmxhcHMKIAogIyBjb2xsYXRlLioudXRmOCB0ZXN0cyBjYW5ub3QgYmUgcnVuIGluIHBhcmFs bGVsIHdpdGggZWFjaCBvdGhlcgogdGVzdDogcnVsZXMgcHNxbCBwc3FsX2Nyb3NzdGFiIGFt dXRpbHMgc3RhdHNfZXh0IGNvbGxhdGUubGludXgudXRmOCBjb2xsYXRlLndpbmRvd3Mud2lu MTI1MgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zOWVhMjRmNjQzCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwK QEAgLTAsMCArMSwyOTAgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9WRVJMQVBTLgorLS0K Ky0tIFdlIGxlYXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0byB0ZXN0IHBnX2R1bXAgZXRj OgorLS0gdGVtcG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAorLS0gdGVtcG9yYWxfZmtfcm5n MnJuZy4KKworLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorCistLSBQSyB3aXRoIG5v IGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5n X3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0g UEsgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKKworQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworCistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IFRFWFQsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBvbmUgY29sdW1uIHBsdXMgYSBy YW5nZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJLS0gU2luY2Ugd2UgY2Fu J3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRy YW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lv biB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9h dCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKK1NF TEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVm KGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9ybmdfcGsnOworCistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSBy YW5nZToKKy0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93 IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4KK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkg KGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFs X3JuZzIKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOworU0VMRUNUIHBnX2dl dF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CisKKworLS0gUEsgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlOgorQ1JFQVRFIFRZUEUgdGV4dHJhbmdlMiBBUyByYW5nZSAoc3VidHlw ZT10ZXh0LCBjb2xsYXRpb249IkMiKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdGV4dHJhbmdlMiwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3JuZzNfcGs7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUg dGV4dHJhbmdlMjsKKworLS0gUEsgd2l0aCBhIG11bHRpcmFuZ2U6CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfbWx0cm5nICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c211bHRp cmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9tbHRybmcK KworLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CisK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhh dCBpc24ndCB0aGVyZToKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIElO VEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBVTklRVUUgd2l0aCBhIG5vbi1yYW5n ZSBjb2x1bW46CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5J UVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3 aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworXGQgdGVtcG9yYWxfcm5nMworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n M191cSc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKK0RS T1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKworLS0gVU5JUVVFIHdpdGggdHdvIGNvbHVtbnMg cGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkMSBpbnQ0 cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzMKK1NFTEVDVCBwZ19nZXRfY29uc3Ry YWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBv cmFsX3JuZzNfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1 ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191 cSc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CisKKy0tIFVOSVFVRSB3aXRoIGEgY3Vz dG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0 eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzMgRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX3JuZzNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitEUk9QIFRZUEUgdGV4 dHJhbmdlMjsKKworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0t CisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsKKwlQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworCistLSBQSyB3aXRo IFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVgg aWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0 KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19w aworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRB QkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVFIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3Nz aWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRl bXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9y YWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIFVTSU5HIElOREVY IGlkeF90ZW1wb3JhbDNfdXE7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gVU5JUVVF IHdpdGggVVNJTkcgW1VOSVFVRV0gSU5ERVggKHBvc3NpYmxlIGJ1dCBub3QgYSB0ZW1wb3Jh bCBjb25zdHJhaW50KToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGVt cG9yYWwzX3VxIE9OIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSBVU0lORyBJ TkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tIEFk ZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFC TEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBV TklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9y YWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQg Q09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3Vx CisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxF IHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgUEsgaW5zZXJ0cworLS0KKworLS0gb2theToK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CisKKy0tIHNo b3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgTlVM TCk7CisKKy0tCistLSB0ZXN0IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsgYW5kIGEgVU5JUVVF IGNvbnN0cmFpbnQKKy0tCisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0 cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFt ZSBURVhULAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlx IFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAo J1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDdd JywgJ2ZvbycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAt MDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKwor LS0KKy0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCistLQorCitDUkVB VEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIg Q09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMg QUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShs b3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bDMgUkVOQU1FIENPTFVNTiB2YWxpZF9hdCBUTyB2YWxpZF90aHJ1OworQUxURVIgVEFCTEUg dGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxFIHRlbXBvcmFs MzsKKworLS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciByYW5nZXMKKy0tCisKKy0tIHRl bXBvcmFsIFBSSU1BUlkgS0VZOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQs CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsK K0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZP UiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0 aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywg J1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUn KSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyks ICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAx LTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitE Uk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLSB0ZW1wb3JhbCBVTklRVUU6 CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0 aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdb MiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5n ZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitT RUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9N IHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkOwotLSAKMi40Mi4wCgo= --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0003-Add-GiST-referencedagg-support-func.patch" Content-Disposition: attachment; filename="v20-0003-Add-GiST-referencedagg-support-func.patch" Content-Transfer-Encoding: base64 RnJvbSA1YTQyNzE4NWM4Yjg4N2FkODI5MDJmYjdjNzgyOTFjNTEzN2FhZDJmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjkgRGVjIDIwMjMgMTQ6MzY6MjcgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMCAzLzhdIEFkZCBHaVNUIHJlZmVyZW5jZWRhZ2cgc3Vw cG9ydCBmdW5jCgpUaGlzIGlzIHRoZSB0aGlydGVlbnRoIHN1cHBvcnQgZnVuY3Rpb24gYW5k IGxldHMgdXMgaW1wbGVtZW50IHRlbXBvcmFsCmZvcmVpZ24ga2V5cyB3aXRob3V0IGhhcmRj b2RpbmcgdGhlIHJhbmdlX2FnZyBmdW5jdGlvbi4gVGhlIHN1cHBvcnQKZnVuY3Rpb24gc2hv dWxkIGJlIGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB0aGF0IHRha2VzIGEgdHlwZSBtYXRjaGlu ZyB0aGUKZm9yZWlnbiBrZXkncyBQRVJJT0QgZWxlbWVudCBhbmQgcmV0dXJucyBhIHR5cGUg dGhhdCBjYW4gYXBwZWFyIG9uIHRoZQpyaWdodGhhbmQgc2lkZSBvZiBhIENvbnRhaW5lZEJ5 IG9wZXJhdG9yLCBzbyB0aGF0IGZvciBleGFtcGxlIHdlIGNhbiBzYXkKYGZrcGVyaW9kIDxA IHJhbmdlX2FnZyhwa3BlcmlvZClgLgotLS0KIGRvYy9zcmMvc2dtbC9naXN0LnNnbWwgICAg ICAgICAgICAgICAgIHwgMTEyICsrKysrKysrKysrKysrKysrKysrKysrKysKIGRvYy9zcmMv c2dtbC94aW5kZXguc2dtbCAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFja2VuZC9h Y2Nlc3MvZ2lzdC9naXN0dmFsaWRhdGUuYyB8ICAgNyArLQogc3JjL2JhY2tlbmQvYWNjZXNz L2luZGV4L2FtdmFsaWRhdGUuYyAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9naXN0 LmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2FtcHJv Yy5kYXQgICAgICB8ICAgNiArKwogNiBmaWxlcyBjaGFuZ2VkLCAxMzggaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21s IGIvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAppbmRleCBmMDU4NzVkMzZjLi5jNDkwOWU2ZDhh IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9naXN0LnNnbWwKQEAgLTMwMCw2ICszMDAsMTAgQEAgQ1JFQVRFIElOREVYIE9OIG15X3Rh YmxlIFVTSU5HIEdJU1QgKG15X2luZXRfY29sdW1uIGluZXRfb3BzKTsKICAgIDxmaWxlbmFt ZT5zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaDwvZmlsZW5hbWU+KSBpbnRvIHN0cmF0 ZWd5IG51bWJlcnMKICAgIHVzZWQgYnkgdGhlIG9wY2xhc3MuIFRoaXMgbGV0cyB0aGUgY29y ZSBjb2RlIGxvb2sgdXAgb3BlcmF0b3JzIGZvciB0ZW1wb3JhbAogICAgY29uc3RyYWludCBp bmRleGVzLgorICAgVGhlIG9wdGlvbmFsIHRoaXJ0ZWVudGggbWV0aG9kIDxmdW5jdGlvbj5y ZWZlcmVuY2VkYWdnPC9mdW5jdGlvbj4gaXMgdXNlZCBieQorICAgdGVtcG9yYWwgZm9yZWln biBrZXlzIHRvIGNvbWJpbmVkIHJlZmVyZW5jZWQgcm93cyB3aXRoIHRoZSBzYW1lCisgICBu b24tPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gaW50byBvbmUgPGxpdGVy YWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4KKyAgIHNwYW4gdG8gY29tcGFyZSBhZ2Fp bnN0IHJlZmVyZW5jaW5nIHJvd3MuCiAgPC9wYXJhPgogCiAgPHZhcmlhYmxlbGlzdD4KQEAg LTEyNDksNiArMTI1MywxMTQgQEAgbXlfc3RyYXRudW0oUEdfRlVOQ1RJT05fQVJHUykKICAg ICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAg ICA8dmFybGlzdGVudHJ5PgorICAgICA8dGVybT48ZnVuY3Rpb24+cmVmZXJlbmNlZGFnZzwv ZnVuY3Rpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAg ICBBbiBhZ2dyZWdhdGUgZnVuY3Rpb24uIEdpdmVuIHZhbHVlcyBvZiB0aGlzIG9wY2xhc3Ms CisgICAgICAgaXQgcmV0dXJucyBhIHZhbHVlIGNvbWJpbmluZyB0aGVtIGFsbC4gVGhlIHJl dHVybiB2YWx1ZQorICAgICAgIG5lZWQgbm90IGJlIHRoZSBzYW1lIHR5cGUgYXMgdGhlIGlu cHV0LCBidXQgaXQgbXVzdCBiZSBhCisgICAgICAgdHlwZSB0aGF0IGNhbiBhcHBlYXIgb24g dGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiB0aGUgImNvbnRhaW5lZCBieSIKKyAgICAgICBvcGVy YXRvci4gRm9yIGV4YW1wbGUgdGhlIGJ1aWx0LWluIDxsaXRlcmFsPnJhbmdlX29wczwvbGl0 ZXJhbD4KKyAgICAgICBvcGNsYXNzIHVzZXMgPGxpdGVyYWw+cmFuZ2VfYWdnPC9saXRlcmFs PiBoZXJlLCBzbyB0aGF0IGZvcmVpZ24KKyAgICAgICBrZXlzIGNhbiBjaGVjayA8bGl0ZXJh bD5ma3BlcmlvZCBAPiByYW5nZV9hZ2cocGtwZXJpb2QpPC9saXRlcmFsPi4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXkgY29uc3RyYWludHMuCisgICAgICAgSWYgeW91IG9taXQgdGhpcyBzdXBw b3J0IGZ1bmN0aW9uLCB5b3VyIHR5cGUgY2Fubm90IGJlIHVzZWQKKyAgICAgICBhcyB0aGUg PGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPiBwYXJ0IG9mIGEgZm9yZWlnbiBrZXkuCisgICAg ICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSA8YWNyb255bT5TUUw8L2Fj cm9ueW0+IGRlY2xhcmF0aW9uIG9mIHRoZSBmdW5jdGlvbiBtdXN0IGxvb2sgbGlrZQorICAg ICAgIHRoaXMgKHVzaW5nIDxsaXRlcmFsPm15X3JhbmdlX2FnZzwvbGl0ZXJhbD4gYXMgYW4g ZXhhbXBsZSk6CisKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBPUiBSRVBMQUNFIEZVTkNU SU9OIG15X3JhbmdlX2FnZ190cmFuc2ZuKGludGVybmFsLCBhbnlyYW5nZSkKK1JFVFVSTlMg aW50ZXJuYWwKK0FTICdNT0RVTEVfUEFUSE5BTUUnCitMQU5HVUFHRSBDIFNUUklDVDsKKwor Q1JFQVRFIE9SIFJFUExBQ0UgRlVOQ1RJT04gbXlfcmFuZ2VfYWdnX2ZpbmFsZm4oaW50ZXJu YWwsIGFueXJhbmdlKQorUkVUVVJOUyBhbnltdWx0aXJhbmdlCitBUyAnTU9EVUxFX1BBVEhO QU1FJworTEFOR1VBR0UgQyBTVFJJQ1Q7CisKK0NSRUFURSBBR0dSRUdBVEUgbXlfcmFuZ2Vf YWdnKGFueXJhbmdlKSB7CisgIFNGVU5DID0gbXlfcmFuZ2VfYWdnX3RyYW5zZm4sCisgIFNU WVBFID0gaW50ZXJuYWwsCisgIEZJTkFMRlVOQyA9IG15X3JhbmdlX2FnZ19maW5hbGZuCit9 OworPC9wcm9ncmFtbGlzdGluZz4KKyAgICAgIDwvcGFyYT4KKworICAgICAgIDxwYXJhPgor ICAgICAgICBUaGUgbWF0Y2hpbmcgY29kZSBpbiB0aGUgQyBtb2R1bGUgY291bGQgdGhlbiBm b2xsb3cgdGhpcyBleGFtcGxlOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitEYXR1bQorbXlfcmFu Z2VfYWdnX3RyYW5zZm4oUEdfRlVOQ1RJT05fQVJHUykKK3sKKyAgICBNZW1vcnlDb250ZXh0 ICAgIGFnZ0NvbnRleHQ7CisgICAgT2lkICAgICAgICAgICAgICBybmd0eXBvaWQ7CisgICAg QXJyYXlCdWlsZFN0YXRlICpzdGF0ZTsKKworICAgIGlmICghQWdnQ2hlY2tDYWxsQ29udGV4 dChmY2luZm8sICZhbXA7YWdnQ29udGV4dCkpCisgICAgICAgIGVsb2coRVJST1IsICJyYW5n ZV9hZ2dfdHJhbnNmbiBjYWxsZWQgaW4gbm9uLWFnZ3JlZ2F0ZSBjb250ZXh0Iik7CisKKyAg ICBybmd0eXBvaWQgPSBnZXRfZm5fZXhwcl9hcmd0eXBlKGZjaW5mby0mZ3Q7ZmxpbmZvLCAx KTsKKyAgICBpZiAoIXR5cGVfaXNfcmFuZ2Uocm5ndHlwb2lkKSkKKyAgICAgICAgZWxvZyhF UlJPUiwgInJhbmdlX2FnZyBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgcmFuZ2UiKTsKKworICAg IGlmIChQR19BUkdJU05VTEwoMCkpCisgICAgICAgIHN0YXRlID0gaW5pdEFycmF5UmVzdWx0 KHJuZ3R5cG9pZCwgYWdnQ29udGV4dCwgZmFsc2UpOworICAgIGVsc2UKKyAgICAgICAgc3Rh dGUgPSAoQXJyYXlCdWlsZFN0YXRlICopIFBHX0dFVEFSR19QT0lOVEVSKDApOworCisgICAg Lyogc2tpcCBOVUxMcyAqLworICAgIGlmICghUEdfQVJHSVNOVUxMKDEpKQorICAgICAgICBh Y2N1bUFycmF5UmVzdWx0KHN0YXRlLCBQR19HRVRBUkdfREFUVU0oMSksIGZhbHNlLCBybmd0 eXBvaWQsIGFnZ0NvbnRleHQpOworCisgICAgUEdfUkVUVVJOX1BPSU5URVIoc3RhdGUpOwor fQorCitEYXR1bQorbXlfcmFuZ2VfYWdnX2ZpbmFsZm4oUEdfRlVOQ1RJT05fQVJHUykKK3sK KyAgICBNZW1vcnlDb250ZXh0ICAgIGFnZ0NvbnRleHQ7CisgICAgT2lkICAgICAgICAgICAg ICBtbHRybmd0eXBvaWQ7CisgICAgVHlwZUNhY2hlRW50cnkgICp0eXBjYWNoZTsKKyAgICBB cnJheUJ1aWxkU3RhdGUgKnN0YXRlOworICAgIGludDMyICAgICAgICAgICAgcmFuZ2VfY291 bnQ7CisgICAgUmFuZ2VUeXBlICAgICAgKipyYW5nZXM7CisgICAgaW50ICAgICAgICAgICAg ICBpOworCisgICAgaWYgKCFBZ2dDaGVja0NhbGxDb250ZXh0KGZjaW5mbywgJmFtcDthZ2dD b250ZXh0KSkKKyAgICAgICAgZWxvZyhFUlJPUiwgInJhbmdlX2FnZ19maW5hbGZuIGNhbGxl ZCBpbiBub24tYWdncmVnYXRlIGNvbnRleHQiKTsKKworICAgIHN0YXRlID0gUEdfQVJHSVNO VUxMKDApID8gTlVMTCA6IChBcnJheUJ1aWxkU3RhdGUgKikgUEdfR0VUQVJHX1BPSU5URVIo MCk7CisgICAgaWYgKHN0YXRlID09IE5VTEwpCisgICAgICAgIC8qIFRoaXMgc2hvdWxkbid0 IGJlIHBvc3NpYmxlLCBidXQganVzdCBpbiBjYXNlLi4uLiAqLworICAgICAgICBQR19SRVRV Uk5fTlVMTCgpOworCisgICAgLyogQWxzbyByZXR1cm4gTlVMTCBpZiB3ZSBoYWQgemVybyBp bnB1dHMsIGxpa2Ugb3RoZXIgYWdncmVnYXRlcyAqLworICAgIHJhbmdlX2NvdW50ID0gc3Rh dGUtJmd0O25lbGVtczsKKyAgICBpZiAocmFuZ2VfY291bnQgPT0gMCkKKyAgICAgICAgUEdf UkVUVVJOX05VTEwoKTsKKworICAgIG1sdHJuZ3R5cG9pZCA9IGdldF9mbl9leHByX3JldHR5 cGUoZmNpbmZvLSZndDtmbGluZm8pOworICAgIHR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRf dHlwY2FjaGUoZmNpbmZvLCBtbHRybmd0eXBvaWQpOworCisgICAgcmFuZ2VzID0gcGFsbG9j MChyYW5nZV9jb3VudCAqIHNpemVvZihSYW5nZVR5cGUgKikpOworICAgIGZvciAoaSA9IDA7 IGkgJmx0OyByYW5nZV9jb3VudDsgaSsrKQorICAgICAgICByYW5nZXNbaV0gPSBEYXR1bUdl dFJhbmdlVHlwZVAoc3RhdGUtJmd0O2R2YWx1ZXNbaV0pOworCisgICAgUEdfUkVUVVJOX01V TFRJUkFOR0VfUChtYWtlX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkLCB0eXBjYWNoZS0mZ3Q7 cm5ndHlwZSwgcmFuZ2VfY291bnQsIHJhbmdlcykpOworfQorPC9wcm9ncmFtbGlzdGluZz4K KyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRlbT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4K ICAgPC92YXJpYWJsZWxpc3Q+CiAKICAgPHBhcmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwveGluZGV4LnNnbWwgYi9kb2Mvc3JjL3NnbWwveGluZGV4LnNnbWwKaW5kZXggOGM0ZWRl MzEwNS4uM2VlMTM2MTcxNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3hpbmRleC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC94aW5kZXguc2dtbApAQCAtNTA4LDcgKzUwOCw3IEBACiAg ICA8L3RhYmxlPgogCiAgIDxwYXJhPgotICAgR2lTVCBpbmRleGVzIGhhdmUgdHdlbHZlIHN1 cHBvcnQgZnVuY3Rpb25zLCBzZXZlbiBvZiB3aGljaCBhcmUgb3B0aW9uYWwsCisgICBHaVNU IGluZGV4ZXMgaGF2ZSB0aGlydGVlbiBzdXBwb3J0IGZ1bmN0aW9ucywgZWlnaHQgb2Ygd2hp Y2ggYXJlIG9wdGlvbmFsLAogICAgYXMgc2hvd24gaW4gPHhyZWYgbGlua2VuZD0ieGluZGV4 LWdpc3Qtc3VwcG9ydC10YWJsZSIvPi4KICAgIChGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUg PHhyZWYgbGlua2VuZD0iZ2lzdCIvPi4pCiAgIDwvcGFyYT4KQEAgLTU5Niw2ICs1OTYsMTIg QEAKICAgICAgICAgdXNlZCBieSB0aGUgb3BjbGFzcyAob3B0aW9uYWwpPC9lbnRyeT4KICAg ICAgICA8ZW50cnk+MTI8L2VudHJ5PgogICAgICAgPC9yb3c+CisgICAgICA8cm93PgorICAg ICAgIDxlbnRyeT48ZnVuY3Rpb24+cmVmZXJlbmNlZGFnZzwvZnVuY3Rpb24+PC9lbnRyeT4K KyAgICAgICA8ZW50cnk+YWdncmVnYXRlcyByZWZlcmVuY2VkIHJvd3MnIDxsaXRlcmFsPldJ VEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+CisgICAgICAgIHBhcnQ8L2VudHJ5PgorICAgICAg IDxlbnRyeT4xMzwvZW50cnk+CisgICAgICA8L3Jvdz4KICAgICAgPC90Ym9keT4KICAgICA8 L3Rncm91cD4KICAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv Z2lzdC9naXN0dmFsaWRhdGUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxp ZGF0ZS5jCmluZGV4IDRkMWIyYzQ0MDAuLmFiZmNkZTZjYmEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9naXN0L2dpc3R2YWxpZGF0ZS5jCkBAIC0xNTEsNiArMTUxLDExIEBAIGdpc3R2YWxp ZGF0ZShPaWQgb3BjbGFzc29pZCkKIAkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUo cHJvY2Zvcm0tPmFtcHJvYywgSU5UMk9JRCwgdHJ1ZSwKIAkJCQkJCQkJCQkJMSwgMSwgSU5U Mk9JRCk7CiAJCQkJYnJlYWs7CisJCQljYXNlIEdJU1RfUkVGRVJFTkNFRF9BR0dfUFJPQzoK KwkJCQlvayA9IGNoZWNrX2FtcHJvY19zaWduYXR1cmUocHJvY2Zvcm0tPmFtcHJvYywgSW52 YWxpZE9pZCwgZmFsc2UsCisJCQkJCQkJCQkJCSAgIDEsIDEsIG9wY2ludHlwZSk7CisJCQkJ Ly8gVE9ETzogbXVzdCBiZSBhZ2dyZWdhdGUKKwkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJ CQkJZXJlcG9ydChJTkZPLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKQEAgLTI3Miw3ICsyNzcsNyBAQCBnaXN0dmFsaWRhdGUoT2lkIG9w Y2xhc3NvaWQpCiAJCWlmIChpID09IEdJU1RfRElTVEFOQ0VfUFJPQyB8fCBpID09IEdJU1Rf RkVUQ0hfUFJPQyB8fAogCQkJaSA9PSBHSVNUX0NPTVBSRVNTX1BST0MgfHwgaSA9PSBHSVNU X0RFQ09NUFJFU1NfUFJPQyB8fAogCQkJaSA9PSBHSVNUX09QVElPTlNfUFJPQyB8fCBpID09 IEdJU1RfU09SVFNVUFBPUlRfUFJPQyB8fAotCQkJaSA9PSBHSVNUX1NUUkFUTlVNX1BST0Mp CisJCQlpID09IEdJU1RfU1RSQVROVU1fUFJPQyB8fCBpID09IEdJU1RfUkVGRVJFTkNFRF9B R0dfUFJPQykKIAkJCWNvbnRpbnVlOwkJCS8qIG9wdGlvbmFsIG1ldGhvZHMgKi8KIAkJZXJl cG9ydChJTkZPLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5J VElPTiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvYW12YWxpZGF0 ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2FtdmFsaWRhdGUuYwppbmRleCA1YzJk NzdlOTA4Li44ZWI5OWU5YjFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvYW12YWxpZGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9hbXZhbGlk YXRlLmMKQEAgLTE0Niw3ICsxNDYsOCBAQCBpZGVudGlmeV9vcGZhbWlseV9ncm91cHMoQ2F0 Q0xpc3QgKm9wcmxpc3QsIENhdENMaXN0ICpwcm9jbGlzdCkKICAqCiAgKiBUaGUgIi4uLiIg cmVwcmVzZW50cyBtYXhhcmdzIGFyZ3VtZW50LXR5cGUgT0lEcy4gIElmICJleGFjdCIgaXMg dHJ1ZSwgdGhleQogICogbXVzdCBtYXRjaCB0aGUgZnVuY3Rpb24gYXJnIHR5cGVzIGV4YWN0 bHksIGVsc2Ugb25seSBiaW5hcnktY29lcmNpYmx5LgotICogSW4gYW55IGNhc2UgdGhlIGZ1 bmN0aW9uIHJlc3VsdCB0eXBlIG11c3QgbWF0Y2ggcmVzdHlwZSBleGFjdGx5LgorICogSW4g YW55IGNhc2UgdGhlIGZ1bmN0aW9uIHJlc3VsdCB0eXBlIG11c3QgbWF0Y2ggcmVzdHlwZSBl eGFjdGx5LAorICogdW5sZXNzIGl0IGlzIEludmFsaWRPaWQuCiAgKi8KIGJvb2wKIGNoZWNr X2FtcHJvY19zaWduYXR1cmUoT2lkIGZ1bmNpZCwgT2lkIHJlc3R5cGUsIGJvb2wgZXhhY3Qs CkBAIC0xNjMsOCArMTY0LDkgQEAgY2hlY2tfYW1wcm9jX3NpZ25hdHVyZShPaWQgZnVuY2lk LCBPaWQgcmVzdHlwZSwgYm9vbCBleGFjdCwKIAkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1 cCBmYWlsZWQgZm9yIGZ1bmN0aW9uICV1IiwgZnVuY2lkKTsKIAlwcm9jZm9ybSA9IChGb3Jt X3BnX3Byb2MpIEdFVFNUUlVDVCh0cCk7CiAKLQlpZiAocHJvY2Zvcm0tPnByb3JldHR5cGUg IT0gcmVzdHlwZSB8fCBwcm9jZm9ybS0+cHJvcmV0c2V0IHx8Ci0JCXByb2Nmb3JtLT5wcm9u YXJncyA8IG1pbmFyZ3MgfHwgcHJvY2Zvcm0tPnByb25hcmdzID4gbWF4YXJncykKKwlpZiAo KHByb2Nmb3JtLT5wcm9yZXR0eXBlICE9IHJlc3R5cGUgJiYgT2lkSXNWYWxpZChyZXN0eXBl KSkKKwkJfHwgcHJvY2Zvcm0tPnByb3JldHNldCB8fCBwcm9jZm9ybS0+cHJvbmFyZ3MgPCBt aW5hcmdzCisJCXx8IHByb2Nmb3JtLT5wcm9uYXJncyA+IG1heGFyZ3MpCiAJCXJlc3VsdCA9 IGZhbHNlOwogCiAJdmFfc3RhcnQoYXAsIG1heGFyZ3MpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dpc3QuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9naXN0LmgKaW5kZXgg MTgxNjM1MmI5NC4uYTljNGVhOTY0MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L2dpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2lzdC5oCkBAIC0zOSw3ICszOSw4 IEBACiAjZGVmaW5lIEdJU1RfT1BUSU9OU19QUk9DCQkJCTEwCiAjZGVmaW5lIEdJU1RfU09S VFNVUFBPUlRfUFJPQwkJCTExCiAjZGVmaW5lIEdJU1RfU1RSQVROVU1fUFJPQwkJCQkxMgot I2RlZmluZSBHSVNUTlByb2NzCQkJCQkxMgorI2RlZmluZSBHSVNUX1JFRkVSRU5DRURfQUdH X1BST0MJCTEzCisjZGVmaW5lIEdJU1ROUHJvY3MJCQkJCTEzCiAKIC8qCiAgKiBQYWdlIG9w YXF1ZSBkYXRhIGluIGEgR2lTVCBpbmRleCBwYWdlLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19hbXByb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbXBy b2MuZGF0CmluZGV4IDg1ZDNiODc2YWUuLmFlMGFiYmUzOGMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfYW1wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2FtcHJvYy5kYXQKQEAgLTYxMCw2ICs2MTAsOSBAQAogeyBhbXByb2NmYW1pbHkgPT4g J2dpc3QvcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2FueXJhbmdlJywKICAgYW1w cm9jcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFtcHJvY251bSA9PiAnMTInLAogICBhbXBy b2MgPT4gJ2dpc3Rfc3RyYXRudW1faWRlbnRpdHknIH0sCit7IGFtcHJvY2ZhbWlseSA9PiAn Z2lzdC9yYW5nZV9vcHMnLCBhbXByb2NsZWZ0dHlwZSA9PiAnYW55cmFuZ2UnLAorICBhbXBy b2NyaWdodHR5cGUgPT4gJ2FueXJhbmdlJywgYW1wcm9jbnVtID0+ICcxMycsCisgIGFtcHJv YyA9PiAncmFuZ2VfYWdnKGFueXJhbmdlKScgfSwKIHsgYW1wcm9jZmFtaWx5ID0+ICdnaXN0 L25ldHdvcmtfb3BzJywgYW1wcm9jbGVmdHR5cGUgPT4gJ2luZXQnLAogICBhbXByb2NyaWdo dHR5cGUgPT4gJ2luZXQnLCBhbXByb2NudW0gPT4gJzEnLAogICBhbXByb2MgPT4gJ2luZXRf Z2lzdF9jb25zaXN0ZW50JyB9LApAQCAtNjUwLDYgKzY1Myw5IEBACiB7IGFtcHJvY2ZhbWls eSA9PiAnZ2lzdC9tdWx0aXJhbmdlX29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnltdWx0 aXJhbmdlJywKICAgYW1wcm9jcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1wcm9j bnVtID0+ICcxMicsCiAgIGFtcHJvYyA9PiAnZ2lzdF9zdHJhdG51bV9pZGVudGl0eScgfSwK K3sgYW1wcm9jZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywgYW1wcm9jbGVmdHR5 cGUgPT4gJ2FueW11bHRpcmFuZ2UnLAorICBhbXByb2NyaWdodHR5cGUgPT4gJ2FueW11bHRp cmFuZ2UnLCBhbXByb2NudW0gPT4gJzEzJywKKyAgYW1wcm9jID0+ICdyYW5nZV9hZ2coYW55 bXVsdGlyYW5nZSknIH0sCiAKICMgZ2luCiB7IGFtcHJvY2ZhbWlseSA9PiAnZ2luL2FycmF5 X29wcycsIGFtcHJvY2xlZnR0eXBlID0+ICdhbnlhcnJheScsCi0tIAoyLjQyLjAKCg== --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v20-0004-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSBjOGIzMTgzMGY2YTg3MTZmZDQ2YzJhYjUxMzBjOTI1ZDEwNDg3NjFjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMCA0LzhdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogLi4uL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgIHwg IDI3ICsKIGNvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICB8 ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAg fCAgNDggKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jICAgICAgICAgICAg ICB8ICAyNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAg ICAgIHwgODY0ICsrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRm dW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jICAgICAgICAgICB8IDQwNCArKysrKysrLQogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyAgICAgICAgICAgfCAgMzEgKwogc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAgICAgIHwgICA4ICstCiBzcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjQgKwogc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMv aW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMuaCAgICAgICAgICAgICAgfCAgIDMgKwogc3Jj L2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgICA2ICsKIHNy Yy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgNTUxICsr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAg ICAgfCA1MjYgKysrKysrKysrKysKIDIwIGZpbGVzIGNoYW5nZWQsIDIyNDUgaW5zZXJ0aW9u cygrKSwgMzUzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lz dC9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL2NvbnRyaWIvYnRyZWVfZ2lzdC9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCAwNjkyNzI2ODhmLi5kMTE2MDFl NTcwIDEwMDY0NAotLS0gYS9jb250cmliL2J0cmVlX2dpc3QvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQKKysrIGIvY29udHJpYi9idHJlZV9naXN0L2V4cGVjdGVkL3dpdGhvdXRf b3ZlcmxhcHMub3V0CkBAIC0yOSwzICsyOSwzMCBAQCBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVm KGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZQogIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nX3BrIE9OIHRlbXBvcmFs X3JuZyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCiAoMSByb3cpCiAKKy0tIEZvcmVpZ24g a2V5CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisgIGlkIGludGVnZXIs CisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIHBhcmVudF9pZCBpbnRlZ2VyLAorICBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKyAgICBSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitcZCB0ZW1wb3Jh bF9ma19ybmcycm5nCisgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ma19ybmcy cm5nIgorICBDb2x1bW4gICB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERl ZmF1bHQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBpZCAgICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgbm90IG51bGwg fCAKKyB2YWxpZF9hdCAgfCB0c3JhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBw YXJlbnRfaWQgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6 CisgICAgInRlbXBvcmFsX2ZrX3JuZzJybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKK0ZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzOgorICAgICJ0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpIFJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nKGlkLCBQRVJJT0QgdmFsaWRfYXQp CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJybmdfZmsnOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisoMSByb3cpCisKZGlm ZiAtLWdpdCBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwg Yi9jb250cmliL2J0cmVlX2dpc3Qvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IDk4 NjY1ZGJiOWUuLjAzNmVlMGE3NjAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYnRyZWVfZ2lzdC9z cWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvY29udHJpYi9idHJlZV9naXN0L3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMTEsMyArMTEsMTUgQEAgQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZyAoCiBcZCB0ZW1wb3JhbF9ybmcKIFNFTEVDVCBwZ19nZXRfY29uc3RyYWlu dGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZ19wayc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBG Uk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOwor CistLSBGb3JlaWduIGtleQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAor ICBpZCBpbnRlZ2VyLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBwYXJlbnRfaWQgaW50ZWdl ciwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisgIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisgICAgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisp OworXGQgdGVtcG9yYWxfZmtfcm5nMnJuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtf cm5nMnJuZ19mayc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCBhMGJk MmI4YWRjLi5iNWY0ODUyNWRlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK QEAgLTgxLDcgKzgxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9S QVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVF IFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gV0lUSE9V VCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3Bh cmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g WywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xVREUgWyBVU0lO RyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNl YWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1l bnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5v cGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdIRVJFICggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFjZWFibGU+ICkg XSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNv bHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFi bGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0 YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IF0g KSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENIIFNJTVBMRSBd IFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRp YWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSB9CiBb IERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVSUkVEIHwg SU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTQ2LDggKzExNDYsOCBAQCBXSVRIICggTU9E VUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxl LXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPlJFRkVSRU5DRVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxl PiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bWF0Y2h0eXBl PC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBs YWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KIAotICAg PHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApCi0gICAgUkVGRVJF TkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2Vh YmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApCisgICAgUkVGRVJFTkNFUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBb ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFi bGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkgXQogICAgIFsgTUFUQ0ggPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVwbGFjZWFibGU+IF0K ICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJl bnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBEQVRFIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxl PiBdPC9saXRlcmFsPgpAQCAtMTE1OCwxMSArMTE1OCwyOSBAQCBXSVRIICggTU9EVUxVUyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNl YWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEgZm9yZWlnbiBrZXkg Y29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBncm91cCBvZiBvbmUg b3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5CiAgICAgICBjb250 YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJlbmNlZAotICAgICAg Y29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLiAgSWYgdGhl IDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZl cmVuY2VkIHRhYmxlLgorICAgICAgSWYgdGhlIDxyZXBsYWNlYWJsZQogICAgICAgY2xhc3M9 InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gbGlzdCBpcyBvbWl0dGVkLCB0 aGUKICAgICAgIHByaW1hcnkga2V5IG9mIHRoZSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPgogICAgICAgaXMgdXNlZC4gIFRoZSByZWZl cmVuY2VkIGNvbHVtbnMgbXVzdCBiZSB0aGUgY29sdW1ucyBvZiBhIG5vbi1kZWZlcnJhYmxl Ci0gICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVmZXJl bmNlZCB0YWJsZS4gIFRoZSB1c2VyCisgICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29u c3RyYWludCBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgPC9wYXJhPgorCisgICAg IDxwYXJhPgorICAgICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtlZCB3aXRoIDxsaXRl cmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICBpdCBtdXN0IGJlIGEgcGVyaW9kIG9yIHJh bmdlIGNvbHVtbiwgYW5kIHRoZSByZWZlcmVuY2VkIHRhYmxlCisgICAgICBtdXN0IGhhdmUg YSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgIFRoZSBub24tPGxpdGVyYWw+UEVSSU9E PC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5vcm1hbGx5CisgICAgICAoYW5kIHRo ZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0pLAorICAgICAgYnV0IHRoZSA8bGl0 ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVtbiBpcyBub3QgY29tcGFyZWQgZm9yIGVxdWFs aXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29uc3RyYWludCBpcyBjb25zaWRlcmVkIHNhdGlz ZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5jZWQgdGFibGUgaGFzIG1hdGNoaW5nIHJlY29y ZHMgd2hvc2UgY29tYmluZWQgcmFuZ2VzIGNvbXBsZXRlbHkgY292ZXIKKyAgICAgIHRoZSBy ZWZlcmVuY2luZyByZWNvcmQuCisgICAgICBJbiBvdGhlciB3b3JkcywgdGhlIHJlZmVyZW5j ZSBtdXN0IGhhdmUgYSByZWZlcmVudCBmb3IgaXRzIGVudGlyZSBkdXJhdGlvbi4KKyAgICAg PC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIHVzZXIKICAgICAgIG11c3QgaGF2 ZSA8bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBwZXJtaXNzaW9uIG9uIHRoZSByZWZl cmVuY2VkIHRhYmxlCiAgICAgICAoZWl0aGVyIHRoZSB3aG9sZSB0YWJsZSwgb3IgdGhlIHNw ZWNpZmljIHJlZmVyZW5jZWQgY29sdW1ucykuICBUaGUKICAgICAgIGFkZGl0aW9uIG9mIGEg Zm9yZWlnbiBrZXkgY29uc3RyYWludCByZXF1aXJlcyBhCkBAIC0xMjM2LDYgKzEyNTQsMTIg QEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVy aWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgICB2YWx1ZXMgb2YgdGhl IHJlZmVyZW5jaW5nIGNvbHVtbihzKSB0byB0aGUgbmV3IHZhbHVlcyBvZiB0aGUKICAgICAg ICAgICByZWZlcmVuY2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4KICAgICAgICAgIDwvcGFy YT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWdu IGtleSwgdGhlIGRlbGV0ZS91cGRhdGUgd2lsbCB1c2UKKyAgICAgICAgICA8bGl0ZXJhbD5G T1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUKKyAg ICAgICAgICBlZmZlY3QgdG8gdGhlIGJvdW5kcyBiZWluZyBkZWxldGVkL3VwZGF0ZWQgaW4g dGhlIHJlZmVyZW5jZWQgcm93LgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3Rp dGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCkBAIC0xMjQ3LDYgKzEyNzEsMTMgQEAg V0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNf bGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgICByZWZlcmVuY2luZyBjb2x1 bW5zLCB0byBudWxsLiBBIHN1YnNldCBvZiBjb2x1bW5zIGNhbiBvbmx5IGJlCiAgICAgICAg ICAgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFjdGlvbnMu CiAgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9S IFBPUlRJT04KKyAgICAgICAgICBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFp biB0aGUgZWZmZWN0IHRvIHRoZSBib3VuZHMgYmVpbmcKKyAgICAgICAgICBkZWxldGVkL3Vw ZGF0ZWQgaW4gdGhlIHJlZmVyZW5jZWQgcm93LiBUaGUgY29sdW1uIG1ha2VkIHdpdGgKKyAg ICAgICAgICA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IHdpbGwgbm90IGJlIHNldCB0byBu dWxsLgorICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwv dmFybGlzdGVudHJ5PgogCkBAIC0xMjYwLDYgKzEyOTEsMTMgQEAgV0lUSCAoIE1PRFVMVVMg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFj ZWFibGU+LCBSRU0KICAgICAgICAgICAoVGhlcmUgbXVzdCBiZSBhIHJvdyBpbiB0aGUgcmVm ZXJlbmNlZCB0YWJsZSBtYXRjaGluZyB0aGUgZGVmYXVsdAogICAgICAgICAgIHZhbHVlcywg aWYgdGhleSBhcmUgbm90IG51bGwsIG9yIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsLikKICAg ICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSW4gYSB0ZW1w b3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxsIHVzZSA8bGl0ZXJhbD5GT1IgUE9S VElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1hbnRpY3MgdG8gY29uc3RyYWluIHRo ZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBiZWluZworICAgICAgICAgIGRlbGV0ZWQvdXBkYXRl ZCBpbiB0aGUgcmVmZXJlbmNlZCByb3cuIFRoZSBjb2x1bW4gbWFya2VkIHdpdGgKKyAgICAg ICAgICA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IHdpdGggbm90IGJlIHNldCB0byBhIGRl ZmF1bHQgdmFsdWUuCisgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAg ICAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgICA8L3ZhcmlhYmxlbGlzdD4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggOGMwNmFhMDk1Ni4uOGQ0OGI3OWNlYSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTIxODksOCArMjE4OSw5IEBAIENvbXB1dGVJ bmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCW9wbmFtZSA9ICJlcXVhbHMi OwogCQkJfQogCQkJR2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3kob3BjbGFzc09p ZHNbYXR0bl0sCi0JCQkJCQkJCQkJCSBhdHR0eXBlLAorCQkJCQkJCQkJCQkgSW52YWxpZE9p ZCwKIAkJCQkJCQkJCQkJIG9wbmFtZSwKKwkJCQkJCQkJCQkJICJXSVRIT1VUIE9WRVJMQVBT IGNvbnN0cmFpbnQiLAogCQkJCQkJCQkJCQkgJm9waWQsCiAJCQkJCQkJCQkJCSAmc3RyYXQp OwogCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNbYXR0bl0gPSBvcGlkOwpAQCAtMjQz MSw4ICsyNDMyLDkgQEAgR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9p ZCkKICAqIEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5CiAgKgogICogb3BjbGFz cyAtIHRoZSBvcGNsYXNzIHRvIHVzZQotICogYXR0dHlwZSAtIHRoZSB0eXBlIHRvIGFzayBh Ym91dAorICogcmhzdHlwZSAtIHRoZSB0eXBlIGZvciB0aGUgcmlnaHQtaGFuZCBzaWRlCiAg KiBvcG5hbWUgLSB1c2VkIHRvIGJ1aWxkIGVycm9yIG1lc3NhZ2VzCisgKiBjb250ZXh0IC0g dXNlZCB0byBidWlsZCBlcnJvciBtZXNzYWdlcwogICogb3BpZCAtIGhvbGRzIHRoZSBvcGVy YXRvciB3ZSBmb3VuZAogICogc3RyYXQgLSBob2xkcyB0aGUgaW5wdXQgYW5kIG91dHB1dCBz dHJhdGVneSBudW1iZXIKICAqCkBAIC0yNDQ1LDExICsyNDQ3LDE0IEBAIEdldERlZmF1bHRP cENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpCiAgKiBmdW5jdGlvbiB0byB0cmFuc2xh dGUgZnJvbSB0aGUgd2VsbC1rbm93biBudW1iZXIKICAqIHRvIHRoZSBpbnRlcm5hbCB2YWx1 ZS4gSWYgdGhlIGZ1bmN0aW9uIGlzbid0IGRlZmluZWQKICAqIG9yIGl0IGdpdmVzIG5vIHJl c3VsdCwgd2UgcmV0cnVuIEludmFsaWRTdHJhdGVneS4KKyAqCisgKiByaHN0eXBlIGNhbiBi ZSBJbnZhbGlkT2lkIHRvIHVzZSB0aGUgb3BjaW50eXBlIGluc3RlYWQuCiAgKi8KIHZvaWQK IEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KE9pZCBvcGNsYXNzLAotCQkJCQkJ CQkgT2lkIGF0dHR5cGUsCisJCQkJCQkJCSBPaWQgcmhzdHlwZSwKIAkJCQkJCQkJIGNvbnN0 IGNoYXIgKm9wbmFtZSwKKwkJCQkJCQkJIGNvbnN0IGNoYXIgKmNvbnRleHQsCiAJCQkJCQkJ CSBPaWQgKm9waWQsCiAJCQkJCQkJCSBTdHJhdGVneU51bWJlciAqc3RyYXQpCiB7CkBAIC0y NDczLDEyICsyNDc4LDE5IEBAIEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KE9p ZCBvcGNsYXNzLAogCQlpZiAoIVN0cmF0ZWd5SXNWYWxpZCgqc3RyYXQpKQogCQkJZXJlcG9y dChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKLQkJ CQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxBUFMg Y29uc3RyYWludCIsIG9wbmFtZSksCisJCQkJCSBlcnJtc2coIm5vICVzIG9wZXJhdG9yIGZv dW5kIGZvciAlcyIsIG9wbmFtZSwgY29udGV4dCksCiAJCQkJCSBlcnJkZXRhaWwoIkNvdWxk IG5vdCB0cmFuc2xhdGUgc3RyYXRlZ3kgbnVtYmVyICV1IGZvciBvcGNsYXNzICVkLiIsCiAJ CQkJCQkgb3BzdHJhdCwgb3BjbGFzcyksCiAJCQkJCSBlcnJoaW50KCJEZWZpbmUgYSBzdHJh dG51bSBzdXBwb3J0IGZ1bmN0aW9uIGZvciB5b3VyIEdpU1Qgb3BjbGFzcy4iKSkpOwogCi0J CSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBvcGNp bnR5cGUsICpzdHJhdCk7CisJCS8qCisJCSAqIFdlIHBhcmFtZXRlcml6ZSByaHN0eXBlIHNv IGZvcmVpZ24ga2V5cyBjYW4gYXNrIGZvciBhIDxAIG9wZXJhdG9yCisJCSAqIHdob3NlIHJo cyBtYXRjaGVzIHRoZSBhZ2dyZWdhdGUgZnVuY3Rpb24uIEZvciBleGFtcGxlIHJhbmdlX2Fn ZworCQkgKiByZXR1cm5zIGFueW11bHRpcmFuZ2UuCisJCSAqLworCQlpZiAoIU9pZElzVmFs aWQocmhzdHlwZSkpCisJCQlyaHN0eXBlID0gb3BjaW50eXBlOworCQkqb3BpZCA9IGdldF9v cGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgcmhzdHlwZSwgKnN0cmF0KTsK IAl9CiAKIAlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQpAQCAtMjUwMCwxMSArMjUxMiwxMSBA QCBHZXRPcGVyYXRvckZyb21DYW5vbmljYWxTdHJhdGVneShPaWQgb3BjbGFzcywKIAogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCks Ci0JCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxB UFMgY29uc3RyYWludCIsIG9wbmFtZSksCisJCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3Ig Zm91bmQgZm9yICVzIiwgb3BuYW1lLCBjb250ZXh0KSwKIAkJCQkgZXJyZGV0YWlsKCJUaGVy ZSBtdXN0IGJlIGFuICVzIG9wZXJhdG9yIHdpdGhpbiBvcGZhbWlseSBcIiVzXCIgZm9yIHR5 cGUgXCIlc1wiLiIsCiAJCQkJCQkgICBvcG5hbWUsCiAJCQkJCQkgICBOYW1lU3RyKG9wZmZv cm0tPm9wZm5hbWUpLAotCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoYXR0dHlwZSkpKSk7CisJ CQkJCQkgICBmb3JtYXRfdHlwZV9iZShvcGNpbnR5cGUpKSkpOwogCX0KIH0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBkMTE4OWQ3NGE4Li40MzIwYzZmMTVlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVk ZSAiYWNjZXNzL2F0dG1hcC5oIgogI2luY2x1ZGUgImFjY2Vzcy9nZW5hbS5oIgorI2luY2x1 ZGUgImFjY2Vzcy9naXN0X3ByaXZhdGUuaCIKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgi CiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL211 bHRpeGFjdC5oIgpAQCAtMjA3LDggKzIwOCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBOZXdDb25z dHJhaW50CiAJQ29uc3RyVHlwZQljb250eXBlOwkJLyogQ0hFQ0sgb3IgRk9SRUlHTiAqLwog CU9pZAkJCXJlZnJlbGlkOwkJLyogUEsgcmVsLCBpZiBGT1JFSUdOICovCiAJT2lkCQkJcmVm aW5kaWQ7CQkvKiBPSUQgb2YgUEsncyBpbmRleCwgaWYgRk9SRUlHTiAqLworCWJvb2wJCWNv bndpdGhwZXJpb2Q7CS8qIFdoZXRoZXIgdGhlIG5ldyBGT1JFSUdOIEtFWSB1c2VzIFBFUklP RCAqLwogCU9pZAkJCWNvbmlkOwkJCS8qIE9JRCBvZiBwZ19jb25zdHJhaW50IGVudHJ5LCBp ZiBGT1JFSUdOICovCiAJTm9kZQkgICAqcXVhbDsJCQkvKiBDaGVjayBleHByIG9yIENPTlNU Ul9GT1JFSUdOIENvbnN0cmFpbnQgKi8KKwlPaWQJCSAgICpvcGVyb2lkczsJCS8qIG9wZXIg b2lkcyBmb3IgRk9SRUlHTiBLRVkgd2l0aCBQRVJJT0QgKi8KKwlPaWQJCSAgICpwcm9jb2lk czsJCS8qIHByb2Mgb2lkcyBmb3IgRk9SRUlHTiBLRVkgd2l0aCBQRVJJT0QgKi8KIAlFeHBy U3RhdGUgICpxdWFsc3RhdGU7CQkvKiBFeGVjdXRpb24gc3RhdGUgZm9yIENIRUNLIGV4cHIg Ki8KIH0gTmV3Q29uc3RyYWludDsKIApAQCAtMzc5LDE3ICszODMsMjAgQEAgc3RhdGljIGlu dAl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNvbExpc3QsCiAJ CQkJCQkJCQlpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMpOwogc3RhdGljIGludAl0 cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwgT2lkICppbmRleE9p ZCwKIAkJCQkJCQkJCSAgIExpc3QgKiphdHRuYW1lbGlzdCwKKwkJCQkJCQkJCSAgIE5vZGUg Kipwa19wZXJpb2QsCiAJCQkJCQkJCQkgICBpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBp ZHMsCisJCQkJCQkJCQkgICBpbnQxNiAqcGVyaW9kYXR0bnVtcywgT2lkICpwZXJpb2RhdHR0 eXBpZHMsCiAJCQkJCQkJCQkgICBPaWQgKm9wY2xhc3Nlcyk7CiBzdGF0aWMgT2lkCXRyYW5z Zm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJCQkJaW50IG51bWF0 dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGludDE2 IHBlcmlvZGF0dG51bSwKIAkJCQkJCQkJCU9pZCAqb3BjbGFzc2VzKTsKIHN0YXRpYyB2b2lk IGNoZWNrRmtleVBlcm1pc3Npb25zKFJlbGF0aW9uIHJlbCwgaW50MTYgKmF0dG51bXMsIGlu dCBuYXR0cyk7CiBzdGF0aWMgQ29lcmNpb25QYXRoVHlwZSBmaW5kRmtleUNhc3QoT2lkIHRh cmdldFR5cGVJZCwgT2lkIHNvdXJjZVR5cGVJZCwKIAkJCQkJCQkJCSBPaWQgKmZ1bmNpZCk7 CiBzdGF0aWMgdm9pZCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5h bWUsCiAJCQkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUmVsYXRpb24gcGtyZWwsCi0JCQkJCQkJ CQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQpOworCQkJCQkJCQkJCSBPaWQg cGtpbmRPaWQsIE9pZCBjb25zdHJhaW50T2lkLCBib29sIHRlbXBvcmFsKTsKIHN0YXRpYyB2 b2lkIEFUQ29udHJvbGxlcihBbHRlclRhYmxlU3RtdCAqcGFyc2V0cmVlLAogCQkJCQkJIFJl bGF0aW9uIHJlbCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBMT0NLTU9ERSBsb2NrbW9k ZSwKIAkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwpAQCAtNDk5 LDcgKzUwNiw4IEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIGFkZEZrUmVjdXJzZVJlZmVyZW5j ZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhCiAJCQkJCQkJCQkJCU9p ZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVyYXRv cnMsCiAJCQkJCQkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2ICpma2RlbHNldGNv bHMsCiAJCQkJCQkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLAotCQkJCQkJCQkJCQlPaWQgcGFy ZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIpOworCQkJCQkJCQkJCQlPaWQg cGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQkJCWJv b2wgaXNfdGVtcG9yYWwpOwogc3RhdGljIHZvaWQgdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29s dW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmthdHRudW1zLAogCQkJCQkJCQkJCSBp bnQgbnVtZmtzZXRjb2xzLCBjb25zdCBpbnQxNiAqZmtzZXRjb2xzYXR0bnVtcywKIAkJCQkJ CQkJCQkgTGlzdCAqZmtzZXRjb2xzKTsKQEAgLTUwOSw3ICs1MTcsOSBAQCBzdGF0aWMgdm9p ZCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsCiAJCQkJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9w ZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJCQkJaW50IG51bWZrZGVsc2V0 Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCQkJCWJvb2wgb2xkX2NoZWNrX29r LCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBP aWQgcGFyZW50VXBkVHJpZ2dlcik7CisJCQkJCQkJCQlPaWQgcGFyZW50SW5zVHJpZ2dlciwg T2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCQkJCQlib29sIGlzX3RlbXBvcmFsKTsKKwog c3RhdGljIHZvaWQgQ2xvbmVGb3JlaWduS2V5Q29uc3RyYWludHMoTGlzdCAqKndxdWV1ZSwg UmVsYXRpb24gcGFyZW50UmVsLAogCQkJCQkJCQkJICAgUmVsYXRpb24gcGFydGl0aW9uUmVs KTsKIHN0YXRpYyB2b2lkIENsb25lRmtSZWZlcmVuY2VkKFJlbGF0aW9uIHBhcmVudFJlbCwg UmVsYXRpb24gcGFydGl0aW9uUmVsKTsKQEAgLTU0MSw2ICs1NTEsMTIgQEAgc3RhdGljIHZv aWQgR2V0Rm9yZWlnbktleUNoZWNrVHJpZ2dlcnMoUmVsYXRpb24gdHJpZ3JlbCwKIAkJCQkJ CQkJCSAgIE9pZCBjb25vaWQsIE9pZCBjb25mcmVsaWQsIE9pZCBjb25yZWxpZCwKIAkJCQkJ CQkJCSAgIE9pZCAqaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQkJCQkJCSAgIE9pZCAqdXBkYXRl VHJpZ2dlck9pZCk7CitzdGF0aWMgdm9pZCBGaW5kRktDb21wYXJpc29uT3BlcmF0b3JzKENv bnN0cmFpbnQgKmZrY29uc3RyYWludCwKKwkJCQkJQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBp bnQgaSwgaW50MTYgKmZrYXR0bnVtLAorCQkJCQlib29sICpvbGRfY2hlY2tfb2ssIExpc3RD ZWxsICoqb2xkX3BmZXFvcF9pdGVtLAorCQkJCQlPaWQgcGt0eXBlLCBPaWQgZmt0eXBlLCBP aWQgb3BjbGFzcywKKwkJCQkJYm9vbCBpc190ZW1wb3JhbCwgYm9vbCBmb3Jfb3ZlcmxhcHMs CisJCQkJCU9pZCAqcGZlcW9wT3V0LCBPaWQgKnBwZXFvcE91dCwgT2lkICpmZmVxb3BPdXQp Owogc3RhdGljIHZvaWQgQVRFeGVjRHJvcENvbnN0cmFpbnQoUmVsYXRpb24gcmVsLCBjb25z dCBjaGFyICpjb25zdHJOYW1lLAogCQkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLCBi b29sIHJlY3Vyc2UsCiAJCQkJCQkJCSBib29sIG1pc3Npbmdfb2ssIExPQ0tNT0RFIGxvY2tt b2RlKTsKQEAgLTU4OTUsNyArNTkxMSw4IEBAIEFUUmV3cml0ZVRhYmxlcyhBbHRlclRhYmxl U3RtdCAqcGFyc2V0cmVlLCBMaXN0ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSwKIAog CQkJCXZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoZmtjb25zdHJhaW50LT5jb25uYW1l LCByZWwsIHJlZnJlbCwKIAkJCQkJCQkJCQkJIGNvbi0+cmVmaW5kaWQsCi0JCQkJCQkJCQkJ CSBjb24tPmNvbmlkKTsKKwkJCQkJCQkJCQkJIGNvbi0+Y29uaWQsCisJCQkJCQkJCQkJCSBj b24tPmNvbndpdGhwZXJpb2QpOwogCiAJCQkJLyoKIAkJCQkgKiBObyBuZWVkIHRvIG1hcmsg dGhlIGNvbnN0cmFpbnQgcm93IGFzIHZhbGlkYXRlZCwgd2UgZGlkCkBAIC05NTI0LDYgKzk1 NDEsMTMgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlPaWQJCQlwcGVxb3BlcmF0b3Jz W0lOREVYX01BWF9LRVlTXSA9IHswfTsKIAlPaWQJCQlmZmVxb3BlcmF0b3JzW0lOREVYX01B WF9LRVlTXSA9IHswfTsKIAlpbnQxNgkJZmtkZWxzZXRjb2xzW0lOREVYX01BWF9LRVlTXSA9 IHswfTsKKwlib29sCQlpc190ZW1wb3JhbCA9IChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAh PSBOVUxMKTsKKwlpbnQxNgkJcGtwZXJpb2RhdHRudW1zWzFdID0gezB9OworCWludDE2CQlm a3BlcmlvZGF0dG51bXNbMV0gPSB7MH07CisJT2lkCQkJcGtwZXJpb2R0eXBvaWRzWzFdID0g ezB9OworCU9pZAkJCWZrcGVyaW9kdHlwb2lkc1sxXSA9IHswfTsKKwlPaWQJCQlwZXJpb2Rv cGVyb2lkOworCU9pZAkJCXBlcmlvZHByb2NvaWQ7CiAJaW50CQkJaTsKIAlpbnQJCQludW1m a3MsCiAJCQkJbnVtcGtzLApAQCAtOTYxOCw2ICs5NjQyLDE1IEBAIEFUQWRkRm9yZWlnbktl eUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxh dGlvbiByZWwsCiAJbnVtZmtzID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25H ZXRSZWxpZChyZWwpLAogCQkJCQkJCQkJIGZrY29uc3RyYWludC0+ZmtfYXR0cnMsCiAJCQkJ CQkJCQkgZmthdHRudW0sIGZrdHlwb2lkKTsKKwlpZiAoaXNfdGVtcG9yYWwpCisJCXRyYW5z Zm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKKwkJCQkJCQkgIGxp c3RfbWFrZTEoZmtjb25zdHJhaW50LT5ma19wZXJpb2QpLAorCQkJCQkJCSAgZmtwZXJpb2Rh dHRudW1zLCBma3BlcmlvZHR5cG9pZHMpOworCWVsc2UKKwkJaWYgKGZrY29uc3RyYWludC0+ cGtfcGVyaW9kKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9J TlZBTElEX0ZPUkVJR05fS0VZKSwKKwkJCQkJZXJybXNnKCJmb3JlaWduIGtleSB1c2VzIFBF UklPRCBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZSBidXQgbm90IHRoZSByZWZlcmVuY2luZyB0 YWJsZSIpKSk7CiAKIAludW1ma2RlbHNldGNvbHMgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlz dChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJCQkJCSAgZmtjb25zdHJhaW50LT5m a19kZWxfc2V0X2NvbHMsCkBAIC05NjM2LDcgKzk2NjksOSBAQCBBVEFkZEZvcmVpZ25LZXlD b25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRp b24gcmVsLAogCXsKIAkJbnVtcGtzID0gdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkocGty ZWwsICZpbmRleE9pZCwKIAkJCQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfYXR0cnMsCisJ CQkJCQkJCQkJCSZma2NvbnN0cmFpbnQtPnBrX3BlcmlvZCwKIAkJCQkJCQkJCQkJcGthdHRu dW0sIHBrdHlwb2lkLAorCQkJCQkJCQkJCQlwa3BlcmlvZGF0dG51bXMsIHBrcGVyaW9kdHlw b2lkcywKIAkJCQkJCQkJCQkJb3BjbGFzc2VzKTsKIAl9CiAJZWxzZQpAQCAtOTY0NCw4ICs5 Njc5LDIyIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0 ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCW51bXBrcyA9IHRyYW5zZm9y bUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAogCQkJCQkJCQkJCSBm a2NvbnN0cmFpbnQtPnBrX2F0dHJzLAogCQkJCQkJCQkJCSBwa2F0dG51bSwgcGt0eXBvaWQp OworCQlpZiAoaXNfdGVtcG9yYWwpCisJCXsKKwkJCS8qIFNpbmNlIHdlIGdvdCBwa19hdHRy cywgd2Ugc2hvdWxkIGhhdmUgcGtfcGVyaW9kIHRvby4gKi8KKwkJCWlmICghZmtjb25zdHJh aW50LT5wa19wZXJpb2QpCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCQllcnJtc2coImZvcmVpZ24ga2V5 IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVuY2luZyB0YWJsZSBidXQgbm90IHRoZSByZWZl cmVuY2VkIHRhYmxlIikpKTsKKworCQkJdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRp b25HZXRSZWxpZChwa3JlbCksCisJCQkJCQkJCQlsaXN0X21ha2UxKGZrY29uc3RyYWludC0+ cGtfcGVyaW9kKSwKKwkJCQkJCQkJCXBrcGVyaW9kYXR0bnVtcywgcGtwZXJpb2R0eXBvaWRz KTsKKwkJfQorCiAJCS8qIExvb2sgZm9yIGFuIGluZGV4IG1hdGNoaW5nIHRoZSBjb2x1bW4g bGlzdCAqLwogCQlpbmRleE9pZCA9IHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKHBrcmVsLCBu dW1wa3MsIHBrYXR0bnVtLAorCQkJCQkJCQkJCSAgIGlzX3RlbXBvcmFsLCBwa3BlcmlvZGF0 dG51bXNbMF0sCiAJCQkJCQkJCQkJICAgb3BjbGFzc2VzKTsKIAl9CiAKQEAgLTk3MDQsMTg5 ICs5NzUzLDQwIEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAKIAlmb3IgKGkgPSAwOyBp IDwgbnVtcGtzOyBpKyspCiAJewotCQlPaWQJCQlwa3R5cGUgPSBwa3R5cG9pZFtpXTsKLQkJ T2lkCQkJZmt0eXBlID0gZmt0eXBvaWRbaV07Ci0JCU9pZAkJCWZrdHlwZWQ7Ci0JCUhlYXBU dXBsZQljbGFfaHQ7Ci0JCUZvcm1fcGdfb3BjbGFzcyBjbGFfdHVwOwotCQlPaWQJCQlhbWlk OwotCQlPaWQJCQlvcGZhbWlseTsKLQkJT2lkCQkJb3BjaW50eXBlOwotCQlPaWQJCQlwZmVx b3A7Ci0JCU9pZAkJCXBwZXFvcDsKLQkJT2lkCQkJZmZlcW9wOwotCQlpbnQxNgkJZXFzdHJh dGVneTsKLQkJT2lkCQkJcGZlcW9wX3JpZ2h0OwotCi0JCS8qIFdlIG5lZWQgc2V2ZXJhbCBm aWVsZHMgb3V0IG9mIHRoZSBwZ19vcGNsYXNzIGVudHJ5ICovCi0JCWNsYV9odCA9IFNlYXJj aFN5c0NhY2hlMShDTEFPSUQsIE9iamVjdElkR2V0RGF0dW0ob3BjbGFzc2VzW2ldKSk7Ci0J CWlmICghSGVhcFR1cGxlSXNWYWxpZChjbGFfaHQpKQotCQkJZWxvZyhFUlJPUiwgImNhY2hl IGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzZXNbaV0pOwotCQljbGFf dHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7Ci0JCWFtaWQgPSBj bGFfdHVwLT5vcGNtZXRob2Q7Ci0JCW9wZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFtaWx5Owot CQlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7Ci0JCVJlbGVhc2VTeXNDYWNoZShj bGFfaHQpOwotCi0JCS8qCi0JCSAqIENoZWNrIGl0J3MgYSBidHJlZTsgY3VycmVudGx5IHRo aXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKLQkJICogaW5kZXggQU1zIHN1cHBv cnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVzCi0J CSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIHdo aWNoIG9wZXJhdG9yCi0JCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4gIChJcyBp dCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0Ci0JCSAqIGV2ZXJ5IHN1Y2ggaW5kZXggQU0g dXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCi0JCSAqLwotCQlpZiAoYW1pZCAh PSBCVFJFRV9BTV9PSUQpCi0JCQllbG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhlcyBh cmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKLQkJZXFzdHJhdGVneSA9IEJURXF1 YWxTdHJhdGVneU51bWJlcjsKLQotCQkvKgotCQkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEg cHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgotCQkgKiBXZSdsbCB1 c2UgaXQgZm9yIFBLID0gUEsgY29tcGFyaXNvbnMuCi0JCSAqLwotCQlwcGVxb3AgPSBnZXRf b3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwKLQkJCQkJ CQkJCSBlcXN0cmF0ZWd5KTsKLQotCQlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKLQkJCWVs b2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAldSIs Ci0JCQkJIGVxc3RyYXRlZ3ksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBvcGZhbWlseSk7Ci0K LQkJLyoKLQkJICogQXJlIHRoZXJlIGVxdWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRha2UgZXhh Y3RseSB0aGUgRksgdHlwZT8gQXNzdW1lCi0JCSAqIHdlIHNob3VsZCBsb29rIHRocm91Z2gg YW55IGRvbWFpbiBoZXJlLgotCQkgKi8KLQkJZmt0eXBlZCA9IGdldEJhc2VUeXBlKGZrdHlw ZSk7Ci0KLQkJcGZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50 eXBlLCBma3R5cGVkLAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCQlpZiAoT2lkSXNWYWxp ZChwZmVxb3ApKQotCQl7Ci0JCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOwotCQkJZmZlcW9w ID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgZmt0eXBlZCwgZmt0eXBlZCwKLQkJ CQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBrZWVwIGNv bXBpbGVyIHF1aWV0ICovCi0JCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlkT2lkOwotCQkJZmZl cW9wID0gSW52YWxpZE9pZDsKLQkJfQotCi0JCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAm JiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQl7Ci0JCQkvKgotCQkJICogT3RoZXJ3aXNlLCBs b29rIGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhlCi0JCQkg KiBvcGNpbnR5cGUsIGFuZCBpZiBmb3VuZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFsaXR5IG9w ZXJhdG9yLgotCQkJICogVGhpcyBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUg bWlnaHQgYmUgYSBwb2x5bW9ycGhpYwotCQkJICogdHlwZSBzdWNoIGFzIEFOWUFSUkFZIG9y IEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCi0JCQkgKiB3aGV0aGVyIHRo ZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBlcyBjYW4gYmUgY29uY3VycmVudGx5IGNhc3QgdG8K LQkJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29t YmluYXRpb25zIHN1Y2gKLQkJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKLQkJCSAqLwot CQkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKLQkJCU9pZAkJCXRhcmdldF90eXBlaWRzWzJd OwotCi0JCQlpbnB1dF90eXBlaWRzWzBdID0gcGt0eXBlOwotCQkJaW5wdXRfdHlwZWlkc1sx XSA9IGZrdHlwZTsKLQkJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOwotCQkJdGFy Z2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5cGU7Ci0JCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIs IGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAotCQkJCQkJCQlDT0VSQ0lPTl9JTVBM SUNJVCkpCi0JCQl7Ci0JCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9wOwotCQkJCXBmZXFv cF9yaWdodCA9IG9wY2ludHlwZTsKLQkJCX0KLQkJfQotCi0JCWlmICghKE9pZElzVmFsaWQo cGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2co ImZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCIs Ci0JCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKLQkJCQkJIGVycmRldGFpbCgiS2V5 IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVzXCIgIgotCQkJCQkJCSAgICJhcmUgb2YgaW5jb21w YXRpYmxlIHR5cGVzOiAlcyBhbmQgJXMuIiwKLQkJCQkJCQkgICBzdHJWYWwobGlzdF9udGgo Zmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpLAotCQkJCQkJCSAgIHN0clZhbChsaXN0X250 aChma2NvbnN0cmFpbnQtPnBrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgZm9ybWF0X3R5cGVf YmUoZmt0eXBlKSwKLQkJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkpOwotCi0J CWlmIChvbGRfY2hlY2tfb2spCi0JCXsKLQkJCS8qCi0JCQkgKiBXaGVuIGEgcGZlcW9wIGNo YW5nZXMsIHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAotCQkJICogcGVy bWl0IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxlIGNvbXBs ZXhpdHkKLQkJCSAqIHdpdGhvdXQgYW55IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNvcmUgdHlw ZXMuICBXZSBuZWVkIG5vdAotCQkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNo IFJJX0luaXRpYWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCi0JCQkgKi8KLQkJCW9sZF9jaGVj a19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29pZChvbGRfcGZlcW9wX2l0ZW0pKTsKLQkJCW9s ZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKLQkJ CQkJCQkJCW9sZF9wZmVxb3BfaXRlbSk7Ci0JCX0KLQkJaWYgKG9sZF9jaGVja19vaykKLQkJ ewotCQkJT2lkCQkJb2xkX2ZrdHlwZTsKLQkJCU9pZAkJCW5ld19ma3R5cGU7Ci0JCQlDb2Vy Y2lvblBhdGhUeXBlIG9sZF9wYXRodHlwZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3Bh dGh0eXBlOwotCQkJT2lkCQkJb2xkX2Nhc3RmdW5jOwotCQkJT2lkCQkJbmV3X2Nhc3RmdW5j OwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGRE ZXNjLAotCQkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAxKTsKLQotCQkJLyoKLQkJCSAq IElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBu ZXcgRkstc2lkZQotCQkJICogY29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9yZWlnbikg b3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCi0JCQkgKiBXZSBtYXkgYXNzdW1lIHRoYXQg cGdfY29uc3RyYWludC5jb25rZXkgaXMgbm90IGNoYW5naW5nLgotCQkJICovCi0JCQlvbGRf Zmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7Ci0JCQluZXdfZmt0eXBlID0gZmt0eXBlOwotCQkJ b2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwK LQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKLQkJCW5ld19wYXRodHlwZSA9IGZpbmRGa2V5 Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19ma3R5cGUsCi0JCQkJCQkJCQkJJm5ld19jYXN0ZnVu Yyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9uIGEgY2hhbmdlIHRvIHRoZSBjYXN0IGZyb20gdGhl IEZLIGNvbHVtbiB0byBpdHMgcGZlcW9wCi0JCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRo ZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlvbiwgYQotCQkJICogYmluYXJ5IGNv ZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCi0J CQkgKiB0eXBlIGltcGxlbWVudG9ycyBzaG91bGQgZGVzaWduIGltcGxpY2l0IGNhc3RzIHdp dGggYW4gZXllCi0JCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtl IGVxdWFsaXR5LCB3ZSBjYW5ub3QKLQkJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZl IGRvbmUgc28uCi0JCQkgKgotCQkJICogQSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMg YXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCi0JCQkgKiBhcmJpdHJhcmlseSBpbiBy ZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCi0JCQkgKiB3 aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9uIGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5IGF2b2lk Ci0JCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2Vk IGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBqdXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9w ZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKLQkJCSAqIHByZXZlbnRzIG5vIHdv dWxkLWJlIG9wdGltaXphdGlvbnMuCi0JCQkgKgotCQkJICogSWYgdGhlIGNhc3QgY29udmVy dHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9uLCB0aGVuCi0JCQkgKiB0 aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUgdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5pcXVlIGlu ZGV4LgotCQkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVzdCB0 aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29uc3RyYWlu dCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgotCQkJICogdGhlIGZvcmVp Z24gc2lkZSBuZWNlc3NhcmlseSBleGlzdCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFuZCBpbgot CQkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5l ZWQgbm90IHRyZWF0Ci0JCQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgotCQkJICoKLQkJ CSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2Ft ZSBub3Rpb24gb2YKLQkJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNlIHRl eHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKLQkJCSAqIGVxdWFsaXR5KSwgd2UgZG9uJ3QgY29t cGFyZSBjb2xsYXRpb24gaGVyZS4KLQkJCSAqCi0JCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3Rs eSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKLQkJCSAqIGJpbmFy eSBjb2VyY2libGUgdG8gdGhlIG9wY2ludHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4IGNvbHVt biwKLQkJCSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0 dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0aGF0IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBv cGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KLQkJCSAqLwotCQkJb2xkX2NoZWNrX29r ID0gKG5ld19wYXRodHlwZSA9PSBvbGRfcGF0aHR5cGUgJiYKLQkJCQkJCQluZXdfY2FzdGZ1 bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0JCQkJCQkJKCFJc1BvbHltb3JwaGljVHlwZShwZmVx b3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5ld19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkpOwotCQl9 CisJCUZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIs IGksIGZrYXR0bnVtLAorCQkJCSZvbGRfY2hlY2tfb2ssICZvbGRfcGZlcW9wX2l0ZW0sCisJ CQkJcGt0eXBvaWRbaV0sIGZrdHlwb2lkW2ldLCBvcGNsYXNzZXNbaV0sCisJCQkJaXNfdGVt cG9yYWwsIGZhbHNlLAorCQkJCSZwZmVxb3BlcmF0b3JzW2ldLCAmcHBlcW9wZXJhdG9yc1tp XSwgJmZmZXFvcGVyYXRvcnNbaV0pOworCX0KKwlpZiAoaXNfdGVtcG9yYWwpIHsKKwkJcGth dHRudW1bbnVtcGtzXSA9IHBrcGVyaW9kYXR0bnVtc1swXTsKKwkJcGt0eXBvaWRbbnVtcGtz XSA9IHBrcGVyaW9kdHlwb2lkc1swXTsKKwkJZmthdHRudW1bbnVtcGtzXSA9IGZrcGVyaW9k YXR0bnVtc1swXTsKKwkJZmt0eXBvaWRbbnVtcGtzXSA9IGZrcGVyaW9kdHlwb2lkc1swXTsK IAotCQlwZmVxb3BlcmF0b3JzW2ldID0gcGZlcW9wOwotCQlwcGVxb3BlcmF0b3JzW2ldID0g cHBlcW9wOwotCQlmZmVxb3BlcmF0b3JzW2ldID0gZmZlcW9wOworCQlGaW5kRktDb21wYXJp c29uT3BlcmF0b3JzKAorCQkJCWZrY29uc3RyYWludCwgdGFiLCBudW1wa3MsIGZrYXR0bnVt LAorCQkJCSZvbGRfY2hlY2tfb2ssICZvbGRfcGZlcW9wX2l0ZW0sCisJCQkJcGtwZXJpb2R0 eXBvaWRzWzBdLCBma3BlcmlvZHR5cG9pZHNbMF0sIG9wY2xhc3Nlc1tudW1wa3NdLAorCQkJ CWlzX3RlbXBvcmFsLCB0cnVlLAorCQkJCSZwZmVxb3BlcmF0b3JzW251bXBrc10sICZwcGVx b3BlcmF0b3JzW251bXBrc10sICZmZmVxb3BlcmF0b3JzW251bXBrc10pOworCQludW1ma3Mg Kz0gMTsKKwkJbnVtcGtzICs9IDE7CiAJfQogCisJLyoKKwkgKiBGb3IgRktzIHdpdGggUEVS SU9EIHdlIG5lZWQgYW4gb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0ZSBmdW5jdGlvbgorCSAqIHRv IGNoZWNrIHdoZXRoZXIgdGhlIHJlZmVyZW5jaW5nIHJvdydzIHJhbmdlIGlzIGNvbnRhaW5l ZAorCSAqIGJ5IHRoZSBhZ2dyZWdhdGVkIHJhbmdlcyBvZiB0aGUgcmVmZXJlbmNlZCByb3co cykuCisJICogRm9yIHJhbmdldHlwZXMgdGhpcyBpcyBmay5wZXJpb2RhdHQgPEAgcmFuZ2Vf YWdnKHBrLnBlcmlvZGF0dCkuCisJICogRktzIHdpbGwgbG9vayB0aGVzZSB1cCBhdCAicnVu dGltZSIsIGJ1dCB3ZSBzaG91bGQgbWFrZSBzdXJlCisJICogdGhlIGxvb2t1cCB3b3JrcyBo ZXJlLgorCSAqLworCWlmIChpc190ZW1wb3JhbCkKKwkJRmluZEZLUGVyaW9kT3BlcnNBbmRQ cm9jcyhvcGNsYXNzZXNbbnVtcGtzIC0gMV0sICZwZXJpb2RvcGVyb2lkLCAmcGVyaW9kcHJv Y29pZCk7CisKIAkvKgogCSAqIENyZWF0ZSBhbGwgdGhlIGNvbnN0cmFpbnQgYW5kIHRyaWdn ZXIgb2JqZWN0cywgcmVjdXJzaW5nIHRvIHBhcnRpdGlvbnMKIAkgKiBhcyBuZWNlc3Nhcnku ICBGaXJzdCBoYW5kbGUgdGhlIHJlZmVyZW5jZWQgc2lkZS4KQEAgLTk5MDMsNyArOTgwMyw4 IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgbnVtZmtkZWxzZXRjb2xz LAogCQkJCQkJCQkJIGZrZGVsc2V0Y29scywKIAkJCQkJCQkJCSBvbGRfY2hlY2tfb2ssCi0J CQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkgSW52YWxpZE9p ZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSBpc190ZW1wb3JhbCk7CiAKIAkvKiBOb3cgaGFu ZGxlIHRoZSByZWZlcmVuY2luZyBzaWRlLiAqLwogCWFkZEZrUmVjdXJzZVJlZmVyZW5jaW5n KHdxdWV1ZSwgZmtjb25zdHJhaW50LCByZWwsIHBrcmVsLApAQCAtOTkxOSw3ICs5ODIwLDgg QEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFi bGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQlma2RlbHNldGNvbHMsCiAJCQkJ CQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCWxvY2ttb2RlLAotCQkJCQkJCUludmFsaWRPaWQs IEludmFsaWRPaWQpOworCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJ aXNfdGVtcG9yYWwpOwogCiAJLyoKIAkgKiBEb25lLiAgQ2xvc2UgcGsgdGFibGUsIGJ1dCBr ZWVwIGxvY2sgdW50aWwgd2UndmUgY29tbWl0dGVkLgpAQCAtMTAwMDQsNyArOTkwNiw4IEBA IGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtj b25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCSAgIE9pZCAqcHBlcW9wZXJhdG9ycywg T2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkgICBpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQx NiAqZmtkZWxzZXRjb2xzLAogCQkJCQkgICBib29sIG9sZF9jaGVja19vaywKLQkJCQkJICAg T2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKQorCQkJCQkgICBP aWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBhcmVudFVwZFRyaWdnZXIsCisJCQkJCSAgIGJv b2wgaXNfdGVtcG9yYWwpCiB7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOwogCU9pZAkJCWNv bnN0ck9pZDsKQEAgLTEwMDkwLDcgKzk5OTMsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2Vk KExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVs LAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkgIGNv bmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJICBjb25ub2luaGVyaXQsIC8q IGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkJICBmYWxzZSwJLyogY29uV2l0aG91dE92ZXJs YXBzICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMg Ki8KIAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRk cmVzc1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAg LTEwMTY2LDcgKzEwMDY5LDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1 ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJ ICAgcGZlcW9wZXJhdG9ycywgcHBlcW9wZXJhdG9ycywgZmZlcW9wZXJhdG9ycywKIAkJCQkJ CQkJICAgbnVtZmtkZWxzZXRjb2xzLCBma2RlbHNldGNvbHMsCiAJCQkJCQkJCSAgIG9sZF9j aGVja19vaywKLQkJCQkJCQkJICAgZGVsZXRlVHJpZ2dlck9pZCwgdXBkYXRlVHJpZ2dlck9p ZCk7CisJCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0ZVRyaWdnZXJPaWQsCisJ CQkJCQkJCSAgIGlzX3RlbXBvcmFsKTsKIAogCQkJLyogRG9uZSAtLSBjbGVhbiB1cCAoYnV0 IGtlZXAgdGhlIGxvY2spICovCiAJCQl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOwpA QCAtMTAyMjQsNyArMTAxMjgsOCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoq d3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJ CU9pZCAqcGZlcW9wZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVy YXRvcnMsCiAJCQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xz LAogCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJ T2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKQorCQkJCQkJT2lk IHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJYm9vbCBp c190ZW1wb3JhbCkKIHsKIAlPaWQJCQlpbnNlcnRUcmlnZ2VyT2lkLAogCQkJCXVwZGF0ZVRy aWdnZXJPaWQ7CkBAIC0xMDI3Miw2ICsxMDE3Nyw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5j aW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24g cmVsLAogCQkJbmV3Y29uLT5yZWZyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpOwog CQkJbmV3Y29uLT5yZWZpbmRpZCA9IGluZGV4T2lkOwogCQkJbmV3Y29uLT5jb25pZCA9IHBh cmVudENvbnN0cjsKKwkJCW5ld2Nvbi0+Y29ud2l0aHBlcmlvZCA9IGZrY29uc3RyYWludC0+ ZmtfcGVyaW9kICE9IE5VTEw7CiAJCQluZXdjb24tPnF1YWwgPSAoTm9kZSAqKSBma2NvbnN0 cmFpbnQ7CiAKIAkJCXRhYi0+Y29uc3RyYWludHMgPSBsYXBwZW5kKHRhYi0+Y29uc3RyYWlu dHMsIG5ld2Nvbik7CkBAIC0xMDM4OSw3ICsxMDI5NSw3IEBAIGFkZEZrUmVjdXJzZVJlZmVy ZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRp b24gcmVsLAogCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgMSwKIAkJCQkJCQkJCSAg ZmFsc2UsCi0JCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRob3V0T3ZlcmxhcHMgKi8KKwkJ CQkJCQkJCSAgaXNfdGVtcG9yYWwsCS8qIGNvbldpdGhvdXRPdmVybGFwcyAqLwogCQkJCQkJ CQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0xMDQyMCw3ICsxMDMyNiw4IEBAIGFkZEZrUmVj dXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCQkJbG9j a21vZGUsCiAJCQkJCQkJCQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQkJdXBkYXRlVHJp Z2dlck9pZCk7CisJCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkJaXNfdGVt cG9yYWwpOwogCiAJCQl0YWJsZV9jbG9zZShwYXJ0aXRpb24sIE5vTG9jayk7CiAJCX0KQEAg LTEwNjU2LDcgKzEwNTYzLDggQEAgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50 UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJICAgY29uZmRlbHNldGNvbHMs CiAJCQkJCQkJICAgdHJ1ZSwKIAkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLAotCQkJCQkJ CSAgIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQsCisJ CQkJCQkJICAgY29uc3RyRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzKTsKIAogCQl0YWJsZV9j bG9zZShma1JlbCwgTm9Mb2NrKTsKIAkJUmVsZWFzZVN5c0NhY2hlKHR1cGxlKTsKQEAgLTEw NzQ5LDYgKzEwNjU3LDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJTGlzdENlbGwgICAqbGM7 CiAJCU9pZAkJCWluc2VydFRyaWdnZXJPaWQsCiAJCQkJCXVwZGF0ZVRyaWdnZXJPaWQ7CisJ CWJvb2wJCWlzX3RlbXBvcmFsOwogCiAJCXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKENPTlNU Uk9JRCwgT2JqZWN0SWRHZXREYXR1bShwYXJlbnRDb25zdHJPaWQpKTsKIAkJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHR1cGxlKSkKQEAgLTEwODY0LDYgKzEwNzczLDcgQEAgQ2xvbmVGa1Jl ZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24g cGFydFJlbCkKIAkJCWZrY29uc3RyYWludC0+Y29ubmFtZSA9IHBzdHJkdXAoTmFtZVN0cihj b25zdHJGb3JtLT5jb25uYW1lKSk7CiAKIAkJaW5kZXhPaWQgPSBjb25zdHJGb3JtLT5jb25p bmRpZDsKKwkJaXNfdGVtcG9yYWwgPSBjb25zdHJGb3JtLT5jb253aXRob3V0b3ZlcmxhcHM7 CiAJCWNvbnN0ck9pZCA9CiAJCQlDcmVhdGVDb25zdHJhaW50RW50cnkoZmtjb25zdHJhaW50 LT5jb25uYW1lLAogCQkJCQkJCQkgIGNvbnN0ckZvcm0tPmNvbm5hbWVzcGFjZSwKQEAgLTEw ODk1LDcgKzEwODA1LDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJICBmYWxzZSwJ LyogaXNsb2NhbCAqLwogCQkJCQkJCQkgIDEsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAqLwotCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25XaXRo b3V0T3ZlcmxhcHMgKi8KKwkJCQkJCQkJICBpc190ZW1wb3JhbCwJLyogY29uV2l0aG91dE92 ZXJsYXBzICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRpdGlvbiBk ZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTA5MjksMTMgKzEw ODM5LDMwMCBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24g cGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQlmYWxzZSwJLyogbm8gb2xk IGNoZWNrIGV4aXN0cyAqLwogCQkJCQkJCQlBY2Nlc3NFeGNsdXNpdmVMb2NrLAogCQkJCQkJ CQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJ CQkJdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJaXNfdGVtcG9yYWwpOwogCQl0YWJsZV9j bG9zZShwa3JlbCwgTm9Mb2NrKTsKIAl9CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dF eGNsdXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVy YXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQlBbHRlcmVkVGFibGVJbmZvICp0 YWIsCisJCWludCBpLAorCQlpbnQxNiAqZmthdHRudW0sCisJCWJvb2wgKm9sZF9jaGVja19v aywKKwkJTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUsIE9pZCBm a3R5cGUsIE9pZCBvcGNsYXNzLAorCQlib29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVy bGFwcywKKwkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91 dCkKK3sKKwlPaWQJCQlma3R5cGVkOworCUhlYXBUdXBsZQljbGFfaHQ7CisJRm9ybV9wZ19v cGNsYXNzIGNsYV90dXA7CisJT2lkCQkJYW1pZDsKKwlPaWQJCQlvcGZhbWlseTsKKwlPaWQJ CQlvcGNpbnR5cGU7CisJT2lkCQkJcGZlcW9wOworCU9pZAkJCXBwZXFvcDsKKwlPaWQJCQlm ZmVxb3A7CisJU3RyYXRlZ3lOdW1iZXIJcnRzdHJhdGVneTsKKwlpbnQxNgkJZXFzdHJhdGVn eTsKKwlPaWQJCQlwZmVxb3BfcmlnaHQ7CisJY2hhcgkgICAqc3RyYXRuYW1lOworCisJLyog V2UgbmVlZCBzZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8K KwljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9w Y2xhc3MpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzKTsKKwlj bGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7CisJYW1pZCA9 IGNsYV90dXAtPm9wY21ldGhvZDsKKwlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsK KwlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5c0NhY2hlKGNs YV9odCk7CisKKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlpZiAoYW1pZCAhPSBHSVNUX0FN X09JRCkKKwkJCWVsb2coRVJST1IsICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUgc3VwcG9ydGVk IGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKTsKKwkJLyoKKwkJICogRm9yIHRoZSBub24t b3ZlcmxhcHMgcGFydHMsIHdlIHdhbnQgZWl0aGVyIFJURXF1YWxTdHJhdGVneU51bWJlciAo d2l0aG91dCBidHJlZV9naXN0KQorCQkgKiBvciBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIgKHdp dGggYnRyZWVfZ2lzdCkuIFdlJ2xsIHRyeSB0aGUgbGF0dGVyIGZpcnN0LgorCQkgKi8KKwkJ aWYgKGZvcl9vdmVybGFwcykKKwkJeworCQkJc3RyYXRuYW1lID0gIm92ZXJsYXBzIjsKKwkJ CXJ0c3RyYXRlZ3kgPSBSVE92ZXJsYXBTdHJhdGVneU51bWJlcjsKKwkJfQorCQllbHNlCisJ CXsKKwkJCXN0cmF0bmFtZSA9ICJlcXVhbGl0eSI7CisJCQlydHN0cmF0ZWd5ID0gUlRFcXVh bFN0cmF0ZWd5TnVtYmVyOworCQl9CisJCWVxc3RyYXRlZ3kgPSBnaXN0VHJhbnNsYXRlU3Ry YXRudW0ob3BjbGFzcywgcnRzdHJhdGVneSk7CisJCWlmICghU3RyYXRlZ3lJc1ZhbGlkKGVx c3RyYXRlZ3kpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9V TkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gJXMgb3BlcmF0b3IgZm91bmQg Zm9yIGZvcmVpZ24ga2V5Iiwgc3RyYXRuYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ291bGQg bm90IHRyYW5zbGF0ZSBzdHJhdGVneSBudW1iZXIgJWQgZm9yIG9wY2xhc3MgJWQuIiwKKwkJ CQkJCSBydHN0cmF0ZWd5LCBvcGNsYXNzKSwKKwkJCQkJIGVycmhpbnQoIkRlZmluZSBhIHN0 cmF0bnVtIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNsYXNzLiIpKSk7CisJ fQorCWVsc2UKKwl7CisJCS8qCisJCSAqIENoZWNrIGl0J3MgYSBidHJlZTsgY3VycmVudGx5 IHRoaXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ugbm8gb3RoZXIKKwkJICogaW5kZXggQU1zIHN1 cHBvcnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVz CisJCSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5l IHdoaWNoIG9wZXJhdG9yCisJCSAqIHN0cmF0ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4gIChJ cyBpdCByZWFzb25hYmxlIHRvIGluc2lzdCB0aGF0CisJCSAqIGV2ZXJ5IHN1Y2ggaW5kZXgg QU0gdXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBlcXVhbGl0eT8pCisJCSAqLworCQlpZiAoYW1p ZCAhPSBCVFJFRV9BTV9PSUQpCisJCQllbG9nKEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhl cyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWduIGtleXMiKTsKKwkJZXFzdHJhdGVneSA9IEJU RXF1YWxTdHJhdGVneU51bWJlcjsKKwl9CisKKwkvKgorCSAqIFRoZXJlIGhhZCBiZXR0ZXIg YmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCisJICogV2Un bGwgdXNlIGl0IGZvciBQSyA9IFBLIGNvbXBhcmlzb25zLgorCSAqLworCXBwZXFvcCA9IGdl dF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLAorCQkJ CQkJCQkgZXFzdHJhdGVneSk7CisKKwlpZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKKwkJZWxv ZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFtaWx5ICV1IiwK KwkJCSBlcXN0cmF0ZWd5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwgb3BmYW1pbHkpOworCisJ LyoKKwkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQgdGFrZSBleGFjdGx5 IHRoZSBGSyB0eXBlPyBBc3N1bWUKKwkgKiB3ZSBzaG91bGQgbG9vayB0aHJvdWdoIGFueSBk b21haW4gaGVyZS4KKwkgKi8KKwlma3R5cGVkID0gZ2V0QmFzZVR5cGUoZmt0eXBlKTsKKwor CXBmZXFvcCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgZmt0 eXBlZCwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCWlmIChPaWRJc1ZhbGlkKHBmZXFvcCkp CisJeworCQlwZmVxb3BfcmlnaHQgPSBma3R5cGVkOworCQlmZmVxb3AgPSBnZXRfb3BmYW1p bHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5cGVkLAorCQkJCQkJCQkJIGVxc3Ry YXRlZ3kpOworCX0KKwllbHNlCisJeworCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJ CXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7CisJCWZmZXFvcCA9IEludmFsaWRPaWQ7CisJ fQorCisJaWYgKCEoT2lkSXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkp CisJeworCQkvKgorCQkgKiBPdGhlcndpc2UsIGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3Qg ZnJvbSB0aGUgRksgdHlwZSB0byB0aGUKKwkJICogb3BjaW50eXBlLCBhbmQgaWYgZm91bmQs IHVzZSB0aGUgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvci4KKwkJICogVGhpcyBpcyBhIGJp dCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYworCQkg KiB0eXBlIHN1Y2ggYXMgQU5ZQVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRv IHRlc3QgaXMKKwkJICogd2hldGhlciB0aGUgdHdvIGFjdHVhbCBjb2x1bW4gdHlwZXMgY2Fu IGJlIGNvbmN1cnJlbnRseSBjYXN0IHRvCisJCSAqIHRoYXQgdHlwZS4gIChPdGhlcndpc2Us IHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmluYXRpb25zIHN1Y2gKKwkJICogYXMgaW50W10g YW5kIHBvaW50W10uKQorCQkgKi8KKwkJT2lkCQkJaW5wdXRfdHlwZWlkc1syXTsKKwkJT2lk CQkJdGFyZ2V0X3R5cGVpZHNbMl07CisKKwkJaW5wdXRfdHlwZWlkc1swXSA9IHBrdHlwZTsK KwkJaW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsKKwkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBv cGNpbnR5cGU7CisJCXRhcmdldF90eXBlaWRzWzFdID0gb3BjaW50eXBlOworCQlpZiAoY2Fu X2NvZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90eXBlaWRzLAorCQkJCQkJ CUNPRVJDSU9OX0lNUExJQ0lUKSkKKwkJeworCQkJcGZlcW9wID0gZmZlcW9wID0gcHBlcW9w OworCQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOworCQl9CisJfQorCisJaWYgKCEoT2lk SXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCisJeworCQljaGFyICpm a2F0dHJfbmFtZTsKKwkJY2hhciAqcGthdHRyX25hbWU7CisKKwkJaWYgKGZvcl9vdmVybGFw cykKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5ma19wZXJp b2QpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwoZmtjb25zdHJhaW50LT5wa19wZXJpb2Qp OworCQl9CisJCWVsc2UKKwkJeworCQkJZmthdHRyX25hbWUgPSBzdHJWYWwobGlzdF9udGgo Zmtjb25zdHJhaW50LT5ma19hdHRycywgaSkpOworCQkJcGthdHRyX25hbWUgPSBzdHJWYWwo bGlzdF9udGgoZmtjb25zdHJhaW50LT5wa19hdHRycywgaSkpOworCQl9CisKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkgZXJybXNnKCJmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiBjYW5ub3QgYmUgaW1w bGVtZW50ZWQiLAorCQkJCQkJZmtjb25zdHJhaW50LT5jb25uYW1lKSwKKwkJCQkgZXJyZGV0 YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCisJCQkJCQkgICAiYXJlIG9m IGluY29tcGF0aWJsZSB0eXBlczogJXMgYW5kICVzLiIsCisJCQkJCQkgICBma2F0dHJfbmFt ZSwKKwkJCQkJCSAgIHBrYXR0cl9uYW1lLAorCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0 eXBlKSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkpKSk7CisJfQorCisJaWYg KCpvbGRfY2hlY2tfb2spCisJeworCQkvKgorCQkgKiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMs IHJldmFsaWRhdGUgdGhlIGNvbnN0cmFpbnQuICBXZSBjb3VsZAorCQkgKiBwZXJtaXQgaW50 cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0bGUgY29tcGxleGl0eQor CQkgKiB3aXRob3V0IGFueSBjb25jcmV0ZSBiZW5lZml0IGZvciBjb3JlIHR5cGVzLiAgV2Ug bmVlZCBub3QKKwkJICogYXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNoIFJJX0luaXRp YWxfQ2hlY2soKSBkb2VzIG5vdCB1c2UuCisJCSAqLworCQkqb2xkX2NoZWNrX29rID0gKHBm ZXFvcCA9PSBsZmlyc3Rfb2lkKCpvbGRfcGZlcW9wX2l0ZW0pKTsKKwkJKm9sZF9wZmVxb3Bf aXRlbSA9IGxuZXh0KGZrY29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKKwkJCQkJCQkJKm9s ZF9wZmVxb3BfaXRlbSk7CisJfQorCWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJT2lkCQkJ b2xkX2ZrdHlwZTsKKwkJT2lkCQkJbmV3X2ZrdHlwZTsKKwkJQ29lcmNpb25QYXRoVHlwZSBv bGRfcGF0aHR5cGU7CisJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0eXBlOworCQlPaWQJ CQlvbGRfY2FzdGZ1bmM7CisJCU9pZAkJCW5ld19jYXN0ZnVuYzsKKwkJRm9ybV9wZ19hdHRy aWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAorCQkJCQkJCQkJCQkg ICBma2F0dG51bVtpXSAtIDEpOworCisJCS8qCisJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBh dGh3YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQorCQkgKiBjb2x1 bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChmb3JlaWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBm ZXFvcC4KKwkJICogV2UgbWF5IGFzc3VtZSB0aGF0IHBnX2NvbnN0cmFpbnQuY29ua2V5IGlz IG5vdCBjaGFuZ2luZy4KKwkJICovCisJCW9sZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsK KwkJbmV3X2ZrdHlwZSA9IGZrdHlwZTsKKwkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlDYXN0 KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKKwkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOwor CQluZXdfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBuZXdfZmt0eXBl LAorCQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7CisKKwkJLyoKKwkJICogVXBvbiBhIGNoYW5n ZSB0byB0aGUgY2FzdCBmcm9tIHRoZSBGSyBjb2x1bW4gdG8gaXRzIHBmZXFvcAorCQkgKiBv cGVyYW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMgZXZhbHVhdGlv biwgYQorCQkgKiBiaW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNh c3QgYXQgYWxsLiAgV2hpbGUKKwkJICogdHlwZSBpbXBsZW1lbnRvcnMgc2hvdWxkIGRlc2ln biBpbXBsaWNpdCBjYXN0cyB3aXRoIGFuIGV5ZQorCQkgKiB0b3dhcmQgY29uc2lzdGVuY3kg b2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKKwkJICogYXNzdW1lIGhl cmUgdGhhdCB0aGV5IGhhdmUgZG9uZSBzby4KKwkJICoKKwkJICogQSBmdW5jdGlvbiB3aXRo IGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJlaGF2aW9yCisJCSAqIGFy Yml0cmFyaWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJl Zm9yZSwKKwkJICogd2hlbiB0aGUgY2FzdCBkZXN0aW5hdGlvbiBpcyBwb2x5bW9ycGhpYywg d2Ugb25seSBhdm9pZAorCQkgKiByZXZhbGlkYXRpb24gaWYgdGhlIGlucHV0IHR5cGUgaGFz IG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCisJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0 eXBlcyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAorCQkgKiBwcmV2 ZW50cyBubyB3b3VsZC1iZSBvcHRpbWl6YXRpb25zLgorCQkgKgorCQkgKiBJZiB0aGUgY2Fz dCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4K KwkJICogdGhhdCBkb21haW4gdHlwZSBtdXN0IGJlIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVu aXF1ZSBpbmRleC4KKwkJICogTmVjZXNzYXJpbHksIHRoZSBwcmltYXJ5IGtleSBjb2x1bW4g bXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KKwkJICogdHlwZS4gIFNpbmNlIHRoZSBjb25z dHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCisJCSAqIHRoZSBm b3JlaWduIHNpZGUgbmVjZXNzYXJpbHkgZXhpc3Qgb24gdGhlIHByaW1hcnkgc2lkZSBhbmQg aW4KKwkJICogdHVybiBjb25mb3JtIHRvIHRoZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdl IG5lZWQgbm90IHRyZWF0CisJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCisJCSAqCisJ CSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhhdCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2Ft ZSBub3Rpb24gb2YKKwkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJlY2F1c2UgdGV4 dGVxIHJlZHVjZXMgdG8gYml0d2lzZQorCQkgKiBlcXVhbGl0eSksIHdlIGRvbid0IGNvbXBh cmUgY29sbGF0aW9uIGhlcmUuCisJCSAqCisJCSAqIFdlIG5lZWQgbm90IGRpcmVjdGx5IGNv bnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQorCQkgKiBiaW5hcnkgY29l cmNpYmxlIHRvIHRoZSBvcGNpbnR5cGUgb2YgdGhlIHVuaXF1ZSBpbmRleCBjb2x1bW4sCisJ CSAqIGFuZCByaV90cmlnZ2Vycy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGlu IHRlcm1zIG9mCisJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdpbmcgdGhlIG9wY2ludHlw ZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgorCQkgKi8KKwkJKm9sZF9jaGVja19vayA9IChuZXdf cGF0aHR5cGUgPT0gb2xkX3BhdGh0eXBlICYmCisJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xk X2Nhc3RmdW5jICYmCisJCQkJCQkoIUlzUG9seW1vcnBoaWNUeXBlKHBmZXFvcF9yaWdodCkg fHwKKwkJCQkJCSBuZXdfZmt0eXBlID09IG9sZF9ma3R5cGUpKTsKKworCX0KKworCSpwZmVx b3BPdXQgPSBwZmVxb3A7CisJKnBwZXFvcE91dCA9IHBwZXFvcDsKKwkqZmZlcW9wT3V0ID0g ZmZlcW9wOworfQorCisvKgorICogRmluZEZrUGVyaW9kT3BlcnNBbmRQcm9jcyAtCisgKgor ICogTG9va3MgdXAgdGhlIG9wZXIgYW5kIHByb2Mgb2lkcyBmb3IgY29uZmtwZXJpb2RvcGVy b2lkcyBhbmQgY29uZmtwZXJpb2Rwcm9jb2lkcy4KKyAqIFRoZXNlIGFyZSB1c2VkIGJ5IGZv cmVpZ24ga2V5cyB3aXRoIGEgUEVSSU9EIGVsZW1lbnQuCisgKi8KK3ZvaWQKK0ZpbmRGS1Bl cmlvZE9wZXJzQW5kUHJvY3MoT2lkIG9wY2xhc3MsCisJCQkJCQkgIE9pZCAqcGVyaW9kb3Bl cm9pZCwKKwkJCQkJCSAgT2lkICpwZXJpb2Rwcm9jb2lkKQoreworCU9pZAlvcGZhbWlseTsK KwlPaWQJb3BjaW50eXBlOworCU9pZAlhZ2dyZXR0eXBlOworCU9pZAlmdW5jaWQgPSBJbnZh bGlkT2lkOworCVN0cmF0ZWd5TnVtYmVyIHN0cmF0ID0gUlRDb250YWluZWRCeVN0cmF0ZWd5 TnVtYmVyOworCisJLyogRmlyc3QgbG9vayB1cCB0aGUgc3VwcG9ydCBwcm9jIGZvciBhZ2dy ZWdhdGlvbi4gKi8KKwlpZiAoZ2V0X29wY2xhc3Nfb3BmYW1pbHlfYW5kX2lucHV0X3R5cGUo b3BjbGFzcywgJm9wZmFtaWx5LCAmb3BjaW50eXBlKSkKKwkJZnVuY2lkID0gZ2V0X29wZmFt aWx5X3Byb2Mob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBlLCBHSVNUX1JFRkVSRU5D RURfQUdHX1BST0MpOworCisJaWYgKCFPaWRJc1ZhbGlkKGZ1bmNpZCkpCisJCWVyZXBvcnQo RVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkg ZXJybXNnKCJubyBzdXBwb3J0IGZ1bmMgJXUgZm91bmQgZm9yIEZPUkVJR04gS0VZIGNvbnN0 cmFpbnQiLCBHSVNUX1JFRkVSRU5DRURfQUdHX1BST0MpLAorCQkJCSBlcnJoaW50KCJEZWZp bmUgYSByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24gZm9yIHlvdXIgR2lTVCBvcGNs YXNzLiIpKSk7CisKKwkqcGVyaW9kcHJvY29pZCA9IGZ1bmNpZDsKKworCS8qIExvb2sgdXAg dGhlIGZ1bmN0aW9uJ3MgcmV0dHlwZS4gKi8KKwlhZ2dyZXR0eXBlID0gZ2V0X2Z1bmNfcmV0 dHlwZShmdW5jaWQpOworCisJLyoKKwkgKiBOb3cgbG9vayB1cCB0aGUgQ29udGFpbmVkQnkg b3BlcmF0b3IuCisJICogSXRzIGxlZnQgYXJnIG11c3QgYmUgdGhlIHR5cGUgb2YgdGhlIGNv bHVtbiAob3IgcmF0aGVyIG9mIHRoZSBvcGNsYXNzKS4KKwkgKiBJdHMgcmlnaHQgYXJnIG11 c3QgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIHRoZSBzdXBwb3J0IHByb2MuCisJICovCisJ R2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3kob3BjbGFzcywKKwkJCQkJCQkJCSBh Z2dyZXR0eXBlLAorCQkJCQkJCQkJICJjb250YWluZWQgYnkiLAorCQkJCQkJCQkJICJGT1JF SUdOIEtFWSBjb25zdHJhaW50IiwKKwkJCQkJCQkJCSBwZXJpb2RvcGVyb2lkLAorCQkJCQkJ CQkJICZzdHJhdCk7Cit9CisKIC8qCiAgKiBXaGVuIHRoZSBwYXJlbnQgb2YgYSBwYXJ0aXRp b24gcmVjZWl2ZXMgW3RoZSByZWZlcmVuY2luZyBzaWRlIG9mXSBhIGZvcmVpZ24KICAqIGtl eSwgd2UgbXVzdCBwcm9wYWdhdGUgdGhhdCBmb3JlaWduIGtleSB0byB0aGUgcGFydGl0aW9u LiAgSG93ZXZlciwgdGhlCkBAIC0xMTQzMyw3ICsxMTYzMCwxMSBAQCBBVEV4ZWNBbHRlckNv bnN0clJlY3Vyc2UoQ29uc3RyYWludCAqY21kY29uLCBSZWxhdGlvbiBjb25yZWwsIFJlbGF0 aW9uIHRncmVsLAogCQkJaWYgKHRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9OT0FDVElP Tl9ERUwgJiYKIAkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBE ICYmCiAJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX0lOUyAmJgotCQkJ CXRnZm9ybS0+dGdmb2lkICE9IEZfUklfRktFWV9DSEVDS19VUEQpCisJCQkJdGdmb3JtLT50 Z2ZvaWQgIT0gRl9SSV9GS0VZX0NIRUNLX1VQRCAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9 IEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMICYmCisJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9U UklfRktFWV9OT0FDVElPTl9VUEQgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9G S0VZX0NIRUNLX0lOUyAmJgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfQ0hF Q0tfVVBEKQogCQkJCWNvbnRpbnVlOwogCiAJCQl0Z0NvcHlUdXBsZSA9IGhlYXBfY29weXR1 cGxlKHRndHVwbGUpOwpAQCAtMTE2ODAsNyArMTE4ODEsNiBAQCBBVEV4ZWNWYWxpZGF0ZUNv bnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1l LAogCXJldHVybiBhZGRyZXNzOwogfQogCi0KIC8qCiAgKiB0cmFuc2Zvcm1Db2x1bW5OYW1l TGlzdCAtIHRyYW5zZm9ybSBsaXN0IG9mIGNvbHVtbiBuYW1lcwogICoKQEAgLTExNzQ2LDcg KzExOTQ2LDkgQEAgdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpj b2xMaXN0LAogc3RhdGljIGludAogdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRp b24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkgICBMaXN0ICoqYXR0bmFtZWxpc3Qs CisJCQkJCQkgICBOb2RlICoqcGtfcGVyaW9kLAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMs IE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJICAgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAq cGVyaW9kYXR0dHlwaWRzLAogCQkJCQkJICAgT2lkICpvcGNsYXNzZXMpCiB7CiAJTGlzdAkg ICAqaW5kZXhvaWRsaXN0OwpAQCAtMTE4MTEsMzYgKzEyMDEzLDU1IEBAIHRyYW5zZm9ybUZr ZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCiAJLyoK IAkgKiBOb3cgYnVpbGQgdGhlIGxpc3Qgb2YgUEsgYXR0cmlidXRlcyBmcm9tIHRoZSBpbmRr ZXkgZGVmaW5pdGlvbiAod2UKLQkgKiBhc3N1bWUgYSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2 ZSBleHByZXNzaW9uYWwgZWxlbWVudHMpCisJICogYXNzdW1lIGEgcHJpbWFyeSBrZXkgY2Fu bm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1lbnRzLCB1bmxlc3MgaXQKKwkgKiBoYXMgYSBQ RVJJT0QpCiAJICovCiAJKmF0dG5hbWVsaXN0ID0gTklMOwogCWZvciAoaSA9IDA7IGkgPCBp bmRleFN0cnVjdC0+aW5kbmtleWF0dHM7IGkrKykKIAl7CiAJCWludAkJCXBrYXR0bm8gPSBp bmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKIAotCQlhdHRudW1zW2ldID0gcGthdHRu bzsKLQkJYXR0dHlwaWRzW2ldID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBwa2F0dG5vKTsKLQkJ b3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKLQkJKmF0dG5hbWVsaXN0ID0g bGFwcGVuZCgqYXR0bmFtZWxpc3QsCi0JCQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKE5h bWVTdHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKKwkJaWYgKGkgPT0g aW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzIC0gMSAmJiBpbmRleFN0cnVjdC0+aW5kaXNleGNs dXNpb24pCisJCXsKKwkJCS8qIHdlIGhhdmUgYSByYW5nZSAqLworCQkJLyogVGhlIGNhbGxl ciB3aWxsIHNldCBhdHRudW1zW2ldICovCisJCQlwZXJpb2RhdHRudW1zWzBdID0gcGthdHRu bzsKKwkJCXBlcmlvZGF0dHR5cGlkc1swXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRu byk7CisJCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCisJCQlBc3Nl cnQoKnBrX3BlcmlvZCA9PSBOVUxMKTsKKwkJCSpwa19wZXJpb2QgPSAoTm9kZSAqKSBtYWtl U3RyaW5nKHBzdHJkdXAoTmFtZVN0cigqYXR0bnVtQXR0TmFtZShwa3JlbCwgcGthdHRubykp KSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhdHRudW1zW2ldID0gcGthdHRubzsKKwkJCWF0 dHR5cGlkc1tpXSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7CisJCQlvcGNsYXNz ZXNbaV0gPSBpbmRjbGFzcy0+dmFsdWVzW2ldOworCQkJKmF0dG5hbWVsaXN0ID0gbGFwcGVu ZCgqYXR0bmFtZWxpc3QsCisJCQkJCQkJCSAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIo KmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpKTsKKwkJfQogCX0KIAogCVJlbGVh c2VTeXNDYWNoZShpbmRleFR1cGxlKTsKIAotCXJldHVybiBpOworCWlmIChpbmRleFN0cnVj dC0+aW5kaXNleGNsdXNpb24pIHJldHVybiBpIC0gMTsKKwllbHNlIHJldHVybiBpOwogfQog CiAvKgogICogdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMgLQogICoKICAqCU1ha2Ugc3VyZSB0 aGF0IHRoZSBhdHRyaWJ1dGVzIG9mIGEgcmVmZXJlbmNlZCB0YWJsZSBiZWxvbmcgdG8gYSB1 bmlxdWUKLSAqCShvciBwcmltYXJ5IGtleSkgY29uc3RyYWludC4gIFJldHVybiB0aGUgT0lE IG9mIHRoZSBpbmRleCBzdXBwb3J0aW5nCi0gKgl0aGUgY29uc3RyYWludCwgYXMgd2VsbCBh cyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKKyAqCShvciBwcmlt YXJ5IGtleSkgY29uc3RyYWludC4gIE9yIGlmIHRoaXMgaXMgYSB0ZW1wb3JhbCBmb3JlaWdu IGtleQorICoJdGhlIHByaW1hcnkga2V5IHNob3VsZCBiZSBhbiBleGNsdXNpb24gY29uc3Ry YWludCBpbnN0ZWFkLgorICoJUmV0dXJuIHRoZSBPSUQgb2YgdGhlIGluZGV4IHN1cHBvcnRp bmcgdGhlIGNvbnN0cmFpbnQsCisgKglhcyB3ZWxsIGFzIHRoZSBvcGNsYXNzZXMgYXNzb2Np YXRlZCB3aXRoIHRoZSBpbmRleAogICoJY29sdW1ucy4KICAqLwogc3RhdGljIE9pZAogdHJh bnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQlpbnQgbnVtYXR0 cnMsIGludDE2ICphdHRudW1zLAorCQkJCQkJYm9vbCBpc190ZW1wb3JhbCwgaW50MTYgcGVy aW9kYXR0bnVtLAogCQkJCQkJT2lkICpvcGNsYXNzZXMpIC8qIG91dHB1dCBwYXJhbWV0ZXIg Ki8KIHsKIAlPaWQJCQlpbmRleG9pZCA9IEludmFsaWRPaWQ7CkBAIC0xMTg2Nyw2ICsxMjA4 OCwxMCBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJ CShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCiAJCQkJCQkgZXJybXNn KCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWlu IGR1cGxpY2F0ZXMiKSkpOwogCQl9CisJCWlmIChpc190ZW1wb3JhbCAmJiBhdHRudW1zW2ld ID09IHBlcmlvZGF0dG51bSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfSU5WQUxJRF9GT1JFSUdOX0tFWSksCisJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5 IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcyIp KSk7CiAJfQogCiAJLyoKQEAgLTExODg4LDEyICsxMjExMywxNiBAQCB0cmFuc2Zvcm1Ga2V5 Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJaW5kZXhTdHJ1Y3QgPSAoRm9ybV9wZ19p bmRleCkgR0VUU1RSVUNUKGluZGV4VHVwbGUpOwogCiAJCS8qCi0JCSAqIE11c3QgaGF2ZSB0 aGUgcmlnaHQgbnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVlIGFuZCBub3QgYQot CQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFueSBleHByZXNz aW9ucywgdG9vLiBJbnZhbGlkCi0JCSAqIGluZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgorCQkg KiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVuaXF1 ZQorCQkgKiAob3IgaWYgdGVtcG9yYWwgdGhlbiBleGNsdXNpb24gaW5zdGVhZCkgYW5kIG5v dCBhCisJCSAqIHBhcnRpYWwgaW5kZXg7IGZvcmdldCBpdCBpZiB0aGVyZSBhcmUgYW55IGV4 cHJlc3Npb25zLCB0b28uCisJCSAqIEludmFsaWQgaW5kZXhlcyBhcmUgb3V0IGFzIHdlbGwu CiAJCSAqLwotCQlpZiAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51bWF0dHJzICYm Ci0JCQlpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUgJiYKKwkJaWYgKChpc190ZW1wb3JhbAor CQkJICA/IChpbmRleFN0cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgKyAxICYmCisJ CQkJIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKKwkJCSAgOiAoaW5kZXhTdHJ1Y3Qt PmluZG5rZXlhdHRzID09IG51bWF0dHJzICYmCisJCQkJIGluZGV4U3RydWN0LT5pbmRpc3Vu aXF1ZSkpICYmCiAJCQlpbmRleFN0cnVjdC0+aW5kaXN2YWxpZCAmJgogCQkJaGVhcF9hdHRp c251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRwcmVkLCBOVUxMKSAmJgogCQkJ aGVhcF9hdHRpc251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRleHBycywgTlVM TCkpCkBAIC0xMTkzMSw2ICsxMjE2MCwxOSBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhS ZWxhdGlvbiBwa3JlbCwKIAkJCQlpZiAoIWZvdW5kKQogCQkJCQlicmVhazsKIAkJCX0KKwkJ CWlmIChmb3VuZCAmJiBpc190ZW1wb3JhbCkKKwkJCXsKKwkJCQlmb3VuZCA9IGZhbHNlOwor CQkJCWZvciAoaiA9IDA7IGogPCBudW1hdHRycyArIDE7IGorKykKKwkJCQl7CisJCQkJCWlm IChwZXJpb2RhdHRudW0gPT0gaW5kZXhTdHJ1Y3QtPmluZGtleS52YWx1ZXNbal0pCisJCQkJ CXsKKwkJCQkJCW9wY2xhc3Nlc1tudW1hdHRyc10gPSBpbmRjbGFzcy0+dmFsdWVzW2pdOwor CQkJCQkJZm91bmQgPSB0cnVlOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9 CiAKIAkJCS8qCiAJCQkgKiBSZWZ1c2UgdG8gdXNlIGEgZGVmZXJyYWJsZSB1bmlxdWUvcHJp bWFyeSBrZXkuICBUaGlzIGlzIHBlciBTUUwKQEAgLTEyMDQwLDcgKzEyMjgyLDggQEAgdmFs aWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQkJCQkJCSBSZWxh dGlvbiByZWwsCiAJCQkJCQkJIFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJCSBPaWQgcGtpbmRP aWQsCi0JCQkJCQkJIE9pZCBjb25zdHJhaW50T2lkKQorCQkJCQkJCSBPaWQgY29uc3RyYWlu dE9pZCwKKwkJCQkJCQkgYm9vbCB0ZW1wb3JhbCkKIHsKIAlUdXBsZVRhYmxlU2xvdCAqc2xv dDsKIAlUYWJsZVNjYW5EZXNjIHNjYW47CkBAIC0xMjA2OSw4ICsxMjMxMiwxMCBAQCB2YWxp ZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUsCiAJLyoKIAkgKiBTZWUg aWYgd2UgY2FuIGRvIGl0IHdpdGggYSBzaW5nbGUgTEVGVCBKT0lOIHF1ZXJ5LiAgQSBmYWxz ZSByZXN1bHQKIAkgKiBpbmRpY2F0ZXMgd2UgbXVzdCBwcm9jZWVkIHdpdGggdGhlIGZpcmUt dGhlLXRyaWdnZXIgbWV0aG9kLgorCSAqIFdlIGNhbid0IGRvIGEgTEVGVCBKT0lOIGZvciB0 ZW1wb3JhbCBGS3MgeWV0LAorCSAqIGJ1dCB3ZSBjYW4gb25jZSB3ZSBzdXBwb3J0IHRlbXBv cmFsIGxlZnQgam9pbnMuCiAJICovCi0JaWYgKFJJX0luaXRpYWxfQ2hlY2soJnRyaWcsIHJl bCwgcGtyZWwpKQorCWlmICghdGVtcG9yYWwgJiYgUklfSW5pdGlhbF9DaGVjaygmdHJpZywg cmVsLCBwa3JlbCkpCiAJCXJldHVybjsKIAogCS8qCkBAIC0xMjEzOSw2ICsxMjM4NCw3IEBA IENyZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LAogewogCU9iamVjdEFkZHJlc3MgdHJpZ0FkZHJlc3M7 CiAJQ3JlYXRlVHJpZ1N0bXQgKmZrX3RyaWdnZXI7CisJYm9vbCBpc190ZW1wb3JhbCA9IGZr Y29uc3RyYWludC0+ZmtfcGVyaW9kOwogCiAJLyoKIAkgKiBOb3RlOiBmb3IgYSBzZWxmLXJl ZmVyZW50aWFsIEZLIChyZWZlcmVuY2luZyBhbmQgcmVmZXJlbmNlZCB0YWJsZXMgYXJlCkBA IC0xMjE1OCwxMiArMTI0MDQsMTggQEAgQ3JlYXRlRktDaGVja1RyaWdnZXIoT2lkIG15UmVs T2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsCiAJLyogRWl0 aGVyIE9OIElOU0VSVCBvciBPTiBVUERBVEUgKi8KIAlpZiAob25faW5zZXJ0KQogCXsKLQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja19p bnMiKTsKKwkJaWYgKGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWVsc2UKKwkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7 CiAJCWZrX3RyaWdnZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9JTlNFUlQ7CiAJfQogCWVs c2UKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfY2hlY2tfdXBkIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX3VwZCIpOworCQllbHNl CisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2No ZWNrX3VwZCIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVfVVBEQVRF OwogCX0KIApAQCAtMTIyMjEsMzcgKzEyNDczLDY4IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rp b25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZr Y29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9IE5VTEw7CiAJZmtfdHJpZ2dlci0+ dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dlci0+Y29uc3RycmVsID0gTlVMTDsK LQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwlpZiAoZmtjb25zdHJh aW50LT5ma19wZXJpb2QgIT0gTlVMTCkKIAl7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX05P QUNUSU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVm ZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+ aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiUklfRktleV9ub2FjdGlvbl9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RS X0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsKLQkJ CWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgotCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X2Nhc2NhZGVfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUg PSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOwotCQkJYnJlYWs7Ci0J CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6Ci0JCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0 ZGVmYXVsdF9kZWwiKTsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwg InVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAotCQkJCSAoaW50KSBma2NvbnN0 cmFpbnQtPmZrX2RlbF9hY3Rpb24pOwotCQkJYnJlYWs7CisJCS8qIFRlbXBvcmFsIGZvcmVp Z24ga2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJ eworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190 cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9ub2FjdGlvbl9k ZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgor CQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5p bml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNh c2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9T RVROVUxMOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkJIGVycm1zZygiYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFs IGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQp IGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KKwl9CisJ ZWxzZQorCXsKKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJCXsK KwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRl ZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+ aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJp Z2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl9kZWwi KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBG S0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2Rl bCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJ CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5p dGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1G dW5jTmFtZSgiUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBG S0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxl ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZh dWx0X2RlbCIpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0 cmFpbnQtPmZrX2RlbF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CiAJfQogCiAJdHJpZ0Fk ZHJlc3MgPSBDcmVhdGVUcmlnZ2VyKGZrX3RyaWdnZXIsIE5VTEwsIHJlZlJlbE9pZCwKQEAg LTEyMjgxLDM3ICsxMjU2NCw2OCBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMo UmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZr X3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25S ZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChm a2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVy aW9kICE9IE5VTEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0J CQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJl ZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlf bm9hY3Rpb25fdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVT VFJJQ1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0g U3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7Ci0JCQlicmVhazsKLQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRl X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0J CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfc2V0bnVsbF91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZh bHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmln Z2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBk Iik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6 ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191 cGRfYWN0aW9uKTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8K KwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2Ug RktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUg PSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJ YnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi VFJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RS X0FDVElPTl9DQVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CSBlcnJtc2coImFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtl eXMiKSkpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5y ZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFp bnQtPmZrX3VwZF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJ CXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCQl7CisJCQljYXNlIEZL Q09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0g Zmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fdXBkIik7CisJCQkJYnJl YWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklf RktleV9yZXN0cmljdF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9 IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJ X0ZLZXlfc2V0bnVsbF91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX1NFVERFRkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsK KwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXpl ZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191 cGRfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3Jl YXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxPaWQsCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYwppbmRleCBmNTJhZTNmYzk3Li4zYmRkNDZhNDEzIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMKQEAgLTc5NCw3ICs3OTQsOSBAQCBfb3V0Q29uc3RyYWludChTdHJpbmdJbmZvIHN0ciwg Y29uc3QgQ29uc3RyYWludCAqbm9kZSkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3Ry LCAiRk9SRUlHTl9LRVkiKTsKIAkJCVdSSVRFX05PREVfRklFTEQocGt0YWJsZSk7CiAJCQlX UklURV9OT0RFX0ZJRUxEKGZrX2F0dHJzKTsKKwkJCVdSSVRFX05PREVfRklFTEQoZmtfcGVy aW9kKTsKIAkJCVdSSVRFX05PREVfRklFTEQocGtfYXR0cnMpOworCQkJV1JJVEVfTk9ERV9G SUVMRChwa19wZXJpb2QpOwogCQkJV1JJVEVfQ0hBUl9GSUVMRChma19tYXRjaHR5cGUpOwog CQkJV1JJVEVfQ0hBUl9GSUVMRChma191cGRfYWN0aW9uKTsKIAkJCVdSSVRFX0NIQVJfRklF TEQoZmtfZGVsX2FjdGlvbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFk ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCmluZGV4IGI2ZWYzMGNl MGQuLjE5MGVjMTRlZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC00NjIsNyArNDYy LDkgQEAgX3JlYWRDb25zdHJhaW50KHZvaWQpCiAJCWNhc2UgQ09OU1RSX0ZPUkVJR046CiAJ CQlSRUFEX05PREVfRklFTEQocGt0YWJsZSk7CiAJCQlSRUFEX05PREVfRklFTEQoZmtfYXR0 cnMpOworCQkJUkVBRF9OT0RFX0ZJRUxEKGZrX3BlcmlvZCk7CiAJCQlSRUFEX05PREVfRklF TEQocGtfYXR0cnMpOworCQkJUkVBRF9OT0RFX0ZJRUxEKHBrX3BlcmlvZCk7CiAJCQlSRUFE X0NIQVJfRklFTEQoZmtfbWF0Y2h0eXBlKTsKIAkJCVJFQURfQ0hBUl9GSUVMRChma191cGRf YWN0aW9uKTsKIAkJCVJFQURfQ0hBUl9GSUVMRChma19kZWxfYWN0aW9uKTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3Jh bS55CmluZGV4IDAyYWRhNDNhOTAuLmM1NjNhNWI3OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAt NTIxLDEyICs1MjEsMTMgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAkJCQkgU2V0 UmVzZXRDbGF1c2UgRnVuY3Rpb25TZXRSZXNldENsYXVzZQogCiAldHlwZSA8bm9kZT4JVGFi bGVFbGVtZW50IFR5cGVkVGFibGVFbGVtZW50IENvbnN0cmFpbnRFbGVtIFRhYmxlRnVuY0Vs ZW1lbnQKLSV0eXBlIDxub2RlPgljb2x1bW5EZWYgY29sdW1uT3B0aW9ucworJXR5cGUgPG5v ZGU+CWNvbHVtbkRlZiBjb2x1bW5PcHRpb25zIG9wdGlvbmFsUGVyaW9kTmFtZQogJXR5cGUg PGRlZmVsdD4JZGVmX2VsZW0gcmVsb3B0aW9uX2VsZW0gb2xkX2FnZ3JfZWxlbSBvcGVyYXRv cl9kZWZfZWxlbQogJXR5cGUgPG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aGVyZV9jbGF1 c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9leHByIGNfZXhwciBB ZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAogCQkJCWNvbHVtbnJl ZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJsZSBhcnJheV9leHBy CiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZworJXR5cGUgPGxpc3Q+CW9w dF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0CiAldHlwZSA8bGlzdD4Jcm93c2Zyb21faXRlbSBy b3dzZnJvbV9saXN0IG9wdF9jb2xfZGVmX2xpc3QKICV0eXBlIDxib29sZWFuPiBvcHRfb3Jk aW5hbGl0eSBvcHRfd2l0aG91dF9vdmVybGFwcwogJXR5cGUgPGxpc3Q+CUV4Y2x1c2lvbkNv bnN0cmFpbnRMaXN0IEV4Y2x1c2lvbkNvbnN0cmFpbnRFbGVtCkBAIC03NDQsNyArNzQ1LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkg T1ZFUlJJRElORyBPV05FRCBPV05FUgogCiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQ QVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JECi0JUExBQ0lORyBQTEFOUyBQT0xJ Q1kKKwlQRVJJT0QgUExBQ0lORyBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcg UFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBS SVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJ Q0FUSU9OCiAKQEAgLTQyMDYsMjEgKzQyMDcsMjMgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJ CQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 Ci0JCQl8IEZPUkVJR04gS0VZICcoJyBjb2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIHF1YWxp ZmllZF9uYW1lCi0JCQkJb3B0X2NvbHVtbl9saXN0IGtleV9tYXRjaCBrZXlfYWN0aW9ucyBD b25zdHJhaW50QXR0cmlidXRlU3BlYworCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlz dCBvcHRpb25hbFBlcmlvZE5hbWUgJyknIFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUKKwkJ CQlvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29u c3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBtYWtl Tm9kZShDb25zdHJhaW50KTsKIAogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047 CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7Ci0JCQkJCW4tPnBrdGFibGUgPSAkNzsKKwkJCQkJ bi0+cGt0YWJsZSA9ICQ4OwogCQkJCQluLT5ma19hdHRycyA9ICQ0OwotCQkJCQluLT5wa19h dHRycyA9ICQ4OwotCQkJCQluLT5ma19tYXRjaHR5cGUgPSAkOTsKLQkJCQkJbi0+ZmtfdXBk X2FjdGlvbiA9ICgkMTApLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVs X2FjdGlvbiA9ICgkMTApLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVs X3NldF9jb2xzID0gKCQxMCktPmRlbGV0ZUFjdGlvbi0+Y29sczsKLQkJCQkJcHJvY2Vzc0NB U2JpdHMoJDExLCBAMTEsICJGT1JFSUdOIEtFWSIsCisJCQkJCW4tPmZrX3BlcmlvZCA9ICQ1 OworCQkJCQluLT5wa19hdHRycyA9IGxpbml0aWFsKCQ5KTsKKwkJCQkJbi0+cGtfcGVyaW9k ID0gbHNlY29uZCgkOSk7CisJCQkJCW4tPmZrX21hdGNodHlwZSA9ICQxMDsKKwkJCQkJbi0+ ZmtfdXBkX2FjdGlvbiA9ICgkMTEpLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJbi0+ ZmtfZGVsX2FjdGlvbiA9ICgkMTEpLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJbi0+ ZmtfZGVsX3NldF9jb2xzID0gKCQxMSktPmRlbGV0ZUFjdGlvbi0+Y29sczsKKwkJCQkJcHJv Y2Vzc0NBU2JpdHMoJDEyLCBAMTIsICJGT1JFSUdOIEtFWSIsCiAJCQkJCQkJCSAgICZuLT5k ZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLAogCQkJCQkJCQkgICAmbi0+c2tpcF92YWxp ZGF0aW9uLCBOVUxMLAogCQkJCQkJCQkgICB5eXNjYW5uZXIpOwpAQCAtNDI0OCw2ICs0MjUx LDE2IEBAIGNvbHVtbkxpc3Q6CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVtbkVsZW0JCQkJ eyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK29wdGlvbmFsUGVyaW9kTmFtZToK KwkJCScsJyBQRVJJT0QgY29sdW1uRWxlbSB7ICQkID0gJDM7IH0KKwkJCXwgLypFTVBUWSov ICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKK29wdF9jb2x1bW5fYW5kX3Bl cmlvZF9saXN0OgorCQkJJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJwkJ CXsgJCQgPSBsaXN0X21ha2UyKCQyLCAkMyk7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7 ICQkID0gbGlzdF9tYWtlMihOSUwsIE5VTEwpOyB9CisJCTsKKwogY29sdW1uRWxlbTogQ29s SWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7CkBAIC0xNzYw Miw2ICsxNzYxNSw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkKIAkJCXwgT1IK IAkJCXwgT1JERVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJTUFSWQog CQkJfCBSRUZFUkVOQ0VTCkBAIC0xNzkxMSw2ICsxNzkyNSw3IEBAIGJhcmVfbGFiZWxfa2V5 d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJ CXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDY5NDVkOTliM2QuLmRlYzdiMDg2 NDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw3ICszMSw5 IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgi CisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf dHlwZS5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RhYmxlY21kcy5oIgogI2luY2x1ZGUgImNv bW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL3NwaS5oIgpAQCAtNDgsNiArNTAsNyBAQAogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcnVsZXV0aWxzLmgiCkBAIC0xMTgsMTIgKzEyMSwxNSBAQCB0eXBlZGVmIHN0cnVj dCBSSV9Db25zdHJhaW50SW5mbwogCWludDE2CQljb25mZGVsc2V0Y29sc1tSSV9NQVhfTlVN S0VZU107IC8qIGF0dG51bXMgb2YgY29scyB0byBzZXQgb24KIAkJCQkJCQkJCQkJCSAqIGRl bGV0ZSAqLwogCWNoYXIJCWNvbmZtYXRjaHR5cGU7CS8qIGZvcmVpZ24ga2V5J3MgbWF0Y2gg dHlwZSAqLworCWJvb2wJCXRlbXBvcmFsOwkJLyogaWYgdGhlIGZvcmVpZ24ga2V5IGlzIHRl bXBvcmFsICovCiAJaW50CQkJbmtleXM7CQkJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zICov CiAJaW50MTYJCXBrX2F0dG51bXNbUklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIHJl ZmVyZW5jZWQgY29scyAqLwogCWludDE2CQlma19hdHRudW1zW1JJX01BWF9OVU1LRVlTXTsg LyogYXR0bnVtcyBvZiByZWZlcmVuY2luZyBjb2xzICovCiAJT2lkCQkJcGZfZXFfb3Byc1tS SV9NQVhfTlVNS0VZU107IC8qIGVxdWFsaXR5IG9wZXJhdG9ycyAoUEsgPSBGSykgKi8KIAlP aWQJCQlwcF9lcV9vcHJzW1JJX01BWF9OVU1LRVlTXTsgLyogZXF1YWxpdHkgb3BlcmF0b3Jz IChQSyA9IFBLKSAqLwogCU9pZAkJCWZmX2VxX29wcnNbUklfTUFYX05VTUtFWVNdOyAvKiBl cXVhbGl0eSBvcGVyYXRvcnMgKEZLID0gRkspICovCisJT2lkCQkJcGVyaW9kX2NvbnRhaW5l ZF9ieV9vcGVyOwkvKiBvcGVyYXRvciBmb3IgUEVST0lEIFNRTCAqLworCU9pZAkJCXBlcmlv ZF9yZWZlcmVuY2VkX2FnZ19wcm9jOwkvKiBwcm9jIGZvciBQRVJJT0QgU1FMICovCiAJZGxp c3Rfbm9kZQl2YWxpZF9saW5rOwkJLyogTGluayBpbiBsaXN0IG9mIHZhbGlkIGVudHJpZXMg Ki8KIH0gUklfQ29uc3RyYWludEluZm87CiAKQEAgLTIwMCw4ICsyMDYsOSBAQCBzdGF0aWMg aW50CXJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVzYywgVHVwbGVUYWJsZVNsb3QgKnNs b3QsCiBzdGF0aWMgdm9pZCByaV9CdWlsZFF1ZXJ5S2V5KFJJX1F1ZXJ5S2V5ICprZXksCiAJ CQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJIGludDMy IGNvbnN0cl9xdWVyeW5vKTsKLXN0YXRpYyBib29sIHJpX0tleXNFcXVhbChSZWxhdGlvbiBy ZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwK K3N0YXRpYyBib29sIHJpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xv dCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkJCQkgY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspOworc3RhdGljIGJvb2wg cmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBvbGR2 YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwogc3RhdGljIGJvb2wgcmlfQXR0cmlidXRlc0VxdWFs KE9pZCBlcV9vcHIsIE9pZCB0eXBlaWQsCiAJCQkJCQkJICAgRGF0dW0gb2xkdmFsdWUsIERh dHVtIG5ld3ZhbHVlKTsKIApAQCAtMjMxLDYgKzIzOCw4IEBAIHN0YXRpYyB2b2lkIHJpX1Jl cG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJ CSAgIFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgIFR1cGxl VGFibGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJCQkJCSAg IGludCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsK K3N0YXRpYyB2b2lkIGxvb2t1cFRSSU9wZXJBbmRQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm8sCisJCQkJCQkJCSBjaGFyICoqb3BuYW1lLCBjaGFyICoqYWdnbmFtZSk7 CiAKIAogLyoKQEAgLTM2MSwyNiArMzcwLDU4IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRh dGEgKnRyaWdkYXRhKQogCiAJCS8qIC0tLS0tLS0tLS0KIAkJICogVGhlIHF1ZXJ5IHN0cmlu ZyBidWlsdCBpcwotCQkgKglTRUxFQ1QgMSBGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVS RSBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KLQkJICoJCSAgIEZPUiBLRVkgU0hBUkUgT0YgeAor CQkgKglTRUxFQ1QgMQorCQkgKglGUk9NIFtPTkxZXSA8cGt0YWJsZT4geCBXSEVSRSBwa2F0 dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJRk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0 eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBj b3JyZXNwb25kaW5nIEZLIGF0dHJpYnV0ZXMuCisJCSAqCisJCSAqIEJ1dCBmb3IgdGVtcG9y YWwgRktzIHdlIG5lZWQgdG8gbWFrZSBzdXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNv bXBsZXRlbHkgY292ZXJlZC4KKwkJICogU28gd2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoK KwkJICogIFNFTEVDVCAxCisJCSAqCUZST00JKAorCQkgKgkJU0VMRUNUIHBrcGVyaW9kYXR0 IEFTIHIKKwkJICoJCUZST00gICBbT05MWV0gcGt0YWJsZSB4CisJCSAqCQlXSEVSRSAgcGth dHQxID0gJDEgW0FORCAuLi5dCisJCSAqCQlBTkQgICAgcGtwZXJpb2RhdHQgJiYgJG4KKwkJ ICoJCUZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKgkpIHgxCisJCSAqICBIQVZJTkcgJG4gPEAg cmFuZ2VfYWdnKHgxLnIpCisJCSAqIE5vdGUgaWYgRk9SIEtFWSBTSEFSRSBldmVyIGFsbG93 cyBHUk9VUCBCWSBhbmQgSEFWSU5HCisJCSAqIHdlIGNhbiBtYWtlIHRoaXMgYSBiaXQgc2lt cGxlci4KIAkJICogLS0tLS0tLS0tLQogCQkgKi8KIAkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5 YnVmKTsKIAkJcGtfb25seSA9IHBrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRf UEFSVElUSU9ORURfVEFCTEUgPwogCQkJIiIgOiAiT05MWSAiOwogCQlxdW90ZVJlbGF0aW9u TmFtZShwa3JlbG5hbWUsIHBrX3JlbCk7Ci0JCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAotCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7 CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwKKwkJCQkJUklBdHROYW1lKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+ bmtleXMgLSAxXSkpOworCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJ IlNFTEVDVCAxIEZST00gKFNFTEVDVCAlcyBBUyByIEZST00gJXMlcyB4IiwKKwkJCQkJYXR0 bmFtZSwgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVu ZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiU0VMRUNUIDEgRlJPTSAlcyVzIHgiLAorCQkJCQkJ CSBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJ Zm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJ CXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwot CQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CisJCQlPaWQJcGtfdHlwZTsKKwkJCU9pZAlma190eXBlOwogCisJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCXF1b3Rl T25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1tpXSkpOworCisJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW2ldKTsKKwogCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsg MSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKIAkJCQkJCQlh dHRuYW1lLCBwa190eXBlLApAQCAtMzkwLDYgKzQzMSwxNSBAQCBSSV9GS2V5X2NoZWNrKFRy aWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0K IAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBP RiB4Iik7CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQl7CisJCQljaGFyICpvcG5hbWU7 CisJCQljaGFyICphZ2duYW1lOworCQkJbG9va3VwVFJJT3BlckFuZFByb2MocmlpbmZvLCAm b3BuYW1lLCAmYWdnbmFtZSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIikg eDEgSEFWSU5HICQlZCAlcyAlcyh4MS5yKSIsIHJpaW5mby0+bmtleXMsIG9wbmFtZSwgYWdn bmFtZSk7CisJCQlwZnJlZShvcG5hbWUpOworCQkJcGZyZWUoYWdnbmFtZSk7CisJCX0KIAog CQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCiAJCXFwbGFuID0gcmlfUGxhbkNo ZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKQEAgLTQ5Nywy MSArNTQ3LDQ5IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRp b24gZmtfcmVsLAogCQkgKgkJICAgRk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBl IGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBQSyBh dHRyaWJ1dGVzIHRoZW1zZWx2ZXMuCisJCSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5l ZWQgdG8gbWFrZSBzdXJlCisJCSAqIHRoZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292 ZXJlZC4KKwkJICogU28gd2UgdXNlIHRoaXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVD VCAxCisJCSAqICBGUk9NICAgICgKKwkJICoJICBTRUxFQ1QgcGtwZXJpb2RhdHQgQVMgcgor CQkgKgkgIEZST00gICBbT05MWV0gcGt0YWJsZSB4CisJCSAqCSAgV0hFUkUgIHBrYXR0MSA9 ICQxIFtBTkQgLi4uXQorCQkgKgkgIEFORCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkgKgkg IEZPUiBLRVkgU0hBUkUgT0YgeAorCQkgKiAgKSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJh bmdlX2FnZyh4MS5yKQorCQkgKiBOb3RlIGlmIEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3Mg R1JPVVAgQlkgYW5kIEhBVklORworCQkgKiB3ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBs ZXIuCiAJCSAqIC0tLS0tLS0tLS0KIAkJICovCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1 Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BB UlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5h bWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1Ziwg IlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOwor CQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUs IFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0g MV0pKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCisJCQkJCSJTRUxFQ1Qg MSBGUk9NIChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMgeCIsCisJCQkJCWF0dG5hbWUsIHBr X29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRTdHJpbmdJ bmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKKwkJCQkJcGtfb25seSwg cGtyZWxuYW1lKTsKKwkJfQorCiAJCXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQg aSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJCXBrX3R5cGUg PSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCQlw a190eXBlOwogCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW2ldKTsKIAkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFt ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCiAJCQlzcHJpbnRmKHBhcmFt bmFtZSwgIiQlZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1 ZXJ5c2VwLAogCQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUsCkBAIC01MjEsNiArNTk5LDE1IEBA IHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAog CQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKIAkJfQogCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKCZxdWVyeWJ1ZiwgIiBGT1IgS0VZIFNIQVJFIE9GIHgiKTsKKwkJaWYgKHJpaW5mby0+ dGVtcG9yYWwpCisJCXsKKwkJCWNoYXIgKm9wbmFtZTsKKwkJCWNoYXIgKmFnZ25hbWU7CisJ CQlsb29rdXBUUklPcGVyQW5kUHJvYyhyaWluZm8sICZvcG5hbWUsICZhZ2duYW1lKTsKKwkJ CWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkICVzICVzKHgx LnIpIiwgcmlpbmZvLT5ua2V5cywgb3BuYW1lLCBhZ2duYW1lKTsKKwkJCXBmcmVlKG9wbmFt ZSk7CisJCQlwZnJlZShhZ2duYW1lKTsKKwkJfQogCiAJCS8qIFByZXBhcmUgYW5kIHNhdmUg dGhlIHBsYW4gKi8KIAkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlp bmZvLT5ua2V5cywgcXVlcnlvaWRzLApAQCAtNjk1LDEwICs3ODIsMTYgQEAgcmlfcmVzdHJp Y3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJcXVlcnlz ZXAgPSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkr KykKIAkJewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+ cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwg cmlpbmZvLT5ma19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma19jb2xs ID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJ T2lkCQlwa190eXBlOworCQkJT2lkCQlma190eXBlOworCQkJT2lkCQlwa19jb2xsOworCQkJ T2lkCQlma19jb2xsOworCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKKwkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWws IHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisKKwkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQkJcXVvdGVPbmVOYW1l KGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKSk7CkBAIC0xMjEzLDYgKzEzMDYsMTI2IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJfQogfQogCisvKiAtLS0t LS0tLS0tCisgKiBUUklfRktleV9jaGVja19pbnMgLQorICoKKyAqCUNoZWNrIHRlbXBvcmFs IGZvcmVpZ24ga2V5IGV4aXN0ZW5jZSBhdCBpbnNlcnQgZXZlbnQgb24gRksgdGFibGUuCisg KiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktleV9jaGVja19pbnMoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdn ZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tU cmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlfY2hlY2tfaW5zIiwgUklfVFJJR1RZUEVfSU5TRVJU KTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNlLgorCSAqLworCXJl dHVybiBSSV9GS2V5X2NoZWNrKChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQpOwor fQorCisKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX3VwZCAtCisgKgorICoJ Q2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IHVwZGF0ZSBldmVudCBv biBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2NoZWNr X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlz IGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkg Ki8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVja191cGQiLCBSSV9U UklHVFlQRV9VUERBVEUpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggSU5TRVJUIGNh c2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZjaW5m by0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlfbm9hY3Rp b25fZGVsIC0KKyAqCisgKglHaXZlIGFuIGVycm9yIGFuZCByb2xsIGJhY2sgdGhlIGN1cnJl bnQgdHJhbnNhY3Rpb24gaWYgdGhlCisgKglkZWxldGUgaGFzIHJlc3VsdGVkIGluIGEgdmlv bGF0aW9uIG9mIHRoZSBnaXZlbiB0ZW1wb3JhbAorICoJcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IGNvbnN0cmFpbnQuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktleV9ub2Fj dGlvbl9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhp cyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQu CisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX2Rl bCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBS RVNUUklDVC9VUERBVEUgY2FzZXMuCisJICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgorICogVFJJX0ZL ZXlfcmVzdHJpY3RfZGVsIC0KKyAqCisgKiBSZXN0cmljdCBkZWxldGUgZnJvbSBQSyB0YWJs ZSB0byByb3dzIHVucmVmZXJlbmNlZCBieSBmb3JlaWduIGtleS4KKyAqCisgKiBUaGUgU1FM IHN0YW5kYXJkIGludGVuZHMgdGhhdCB0aGlzIHJlZmVyZW50aWFsIGFjdGlvbiBvY2N1ciBl eGFjdGx5IHdoZW4KKyAqIHRoZSBkZWxldGUgaXMgcGVyZm9ybWVkLCByYXRoZXIgdGhhbiBh ZnRlci4gIFRoaXMgYXBwZWFycyB0byBiZQorICogdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3 ZWVuICJOTyBBQ1RJT04iIGFuZCAiUkVTVFJJQ1QiLiAgSW4gUG9zdGdyZXMKKyAqIHdlIHN0 aWxsIGltcGxlbWVudCB0aGlzIGFzIGFuIEFGVEVSIHRyaWdnZXIsIGJ1dCBpdCdzIG5vbi1k ZWZlcnJhYmxlLgorICovCitEYXR1bQorVFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBj YWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIo ZmNpbmZvLCAiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsK KworCS8qIFNoYXJlIGNvZGUgd2l0aCBOTyBBQ1RJT04vVVBEQVRFIGNhc2VzLiAqLworCXJl dHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxz ZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9ub2FjdGlvbl91cGQgLQorICoKKyAqIEdpdmUg YW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUK KyAqIHVwZGF0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHJl ZmVyZW50aWFsCisgKiBpbnRlZ3JpdHkgY29uc3RyYWludC4KKyAqLworRGF0dW0KK1RSSV9G S2V5X25vYWN0aW9uX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQg dGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX3Vw ZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggUkVTVFJJ Q1QvREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X3Jlc3Ry aWN0X3VwZCAtCisgKgorICogUmVzdHJpY3QgdXBkYXRlIG9mIFBLIHRvIHJvd3MgdW5yZWZl cmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5k cyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICog dGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBl YXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIg YW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRo aXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8K K0RhdHVtCitUUklfRktleV9yZXN0cmljdF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkv KiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0 IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktl eV9yZXN0cmljdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29k ZSB3aXRoIE5PIEFDVElPTi9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0 KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKK30KIAogLyoKICAq IFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KQEAgLTEyNDEsNyArMTQ1NCw3IEBA IFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIHBrX3JlbCwKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogSWYgYWxsIG9sZCBhbmQgbmV3 IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBpcyBuZWVkZWQgKi8KLQlpZiAobmV3 c2xvdCAmJiByaV9LZXlzRXF1YWwocGtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8s IHRydWUpKQorCWlmIChuZXdzbG90ICYmIHJpX0tleXNTdGFibGUocGtfcmVsLCBvbGRzbG90 LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNl IHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KQEAgLTEzNDAsNyArMTU1Myw3IEBA IFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIGZrX3JlbCwKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBJZiBhbGwgb2xkIGFuZCBuZXcg a2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5lZWRlZCAqLwotCWlmIChyaV9L ZXlzRXF1YWwoZmtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8sIGZhbHNlKSkKKwlp ZiAocmlfS2V5c1N0YWJsZShma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgZmFs c2UpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUg dHJpZ2dlci4gKi8KQEAgLTE0ODgsMTUgKzE3MDEsMTcgQEAgUklfSW5pdGlhbF9DaGVjayhU cmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAlz ZXAgPSAiKCI7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJ ewotCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKLQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENv bGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCU9pZAlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJT2lkCWZr X3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQlP aWQJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W2ldKTsKKwkJT2lkCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CiAKIAkJcXVvdGVPbmVOYW1lKHBrYXR0bmFtZSArIDMsCiAJCQkJ CSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKwogCQlxdW90 ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKIAkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSkpOworCiAJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHNl cCwKIAkJCQkJCXBrYXR0bmFtZSwgcGtfdHlwZSwKIAkJCQkJCXJpaW5mby0+cGZfZXFfb3By c1tpXSwKQEAgLTIxMzcsNiArMjM1Miw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQg Y29uc3RyYWludE9pZCkKIAlyaWluZm8gPSAoUklfQ29uc3RyYWludEluZm8gKikgaGFzaF9z ZWFyY2gocmlfY29uc3RyYWludF9jYWNoZSwKIAkJCQkJCQkJCQkJICAgJmNvbnN0cmFpbnRP aWQsCiAJCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisKIAlpZiAoIWZvdW5k KQogCQlyaWluZm8tPnZhbGlkID0gZmFsc2U7CiAJZWxzZSBpZiAocmlpbmZvLT52YWxpZCkK QEAgLTIxNzEsNiArMjM4Nyw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3Ry YWludE9pZCkKIAlyaWluZm8tPmNvbmZ1cGR0eXBlID0gY29uRm9ybS0+Y29uZnVwZHR5cGU7 CiAJcmlpbmZvLT5jb25mZGVsdHlwZSA9IGNvbkZvcm0tPmNvbmZkZWx0eXBlOwogCXJpaW5m by0+Y29uZm1hdGNodHlwZSA9IGNvbkZvcm0tPmNvbmZtYXRjaHR5cGU7CisJcmlpbmZvLT50 ZW1wb3JhbCA9IGNvbkZvcm0tPmNvbndpdGhvdXRvdmVybGFwczsKIAogCURlY29uc3RydWN0 RmtDb25zdHJhaW50Um93KHR1cCwKIAkJCQkJCQkgICAmcmlpbmZvLT5ua2V5cywKQEAgLTIx ODIsNiArMjM5OSwxOCBAQCByaV9Mb2FkQ29uc3RyYWludEluZm8oT2lkIGNvbnN0cmFpbnRP aWQpCiAJCQkJCQkJICAgJnJpaW5mby0+bmRlbHNldGNvbHMsCiAJCQkJCQkJICAgcmlpbmZv LT5jb25mZGVsc2V0Y29scyk7CiAKKwkvKgorCSAqIEZvciB0ZW1wb3JhbCBGS3MsIGdldCB0 aGUgb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0ZSBmdW5jdGlvbiB3ZSBuZWVkLgorCSAqIFdlIGFz ayB0aGUgb3BjbGFzcyBvZiB0aGUgUEsgZWxlbWVudCBmb3IgdGhpcy4KKwkgKiBUaGlzIGFs bCBnZXRzIGNhY2hlZCAoYXMgZG9lcyB0aGUgZ2VuZXJhdGVkIHBsYW4pLAorCSAqIHNvIHRo ZXJlJ3Mgbm8gcGVyZm9ybWFuY2UgaXNzdWUuCisJICovCisJaWYgKHJpaW5mby0+dGVtcG9y YWwpCisJeworCQlPaWQJb3BjbGFzcyA9IGdldF9pbmRleF9jb2x1bW5fb3BjbGFzcyhjb25G b3JtLT5jb25pbmRpZCwgcmlpbmZvLT5ua2V5cyk7CisJCUZpbmRGS1BlcmlvZE9wZXJzQW5k UHJvY3Mob3BjbGFzcywgJnJpaW5mby0+cGVyaW9kX2NvbnRhaW5lZF9ieV9vcGVyLCAmcmlp bmZvLT5wZXJpb2RfcmVmZXJlbmNlZF9hZ2dfcHJvYyk7CisJfQorCiAJUmVsZWFzZVN5c0Nh Y2hlKHR1cCk7CiAKIAkvKgpAQCAtMjc5MSw5ICszMDIwLDEyIEBAIHJpX0hhc2hQcmVwYXJl ZFBsYW4oUklfUXVlcnlLZXkgKmtleSwgU1BJUGxhblB0ciBwbGFuKQogCiAKIC8qCi0gKiBy aV9LZXlzRXF1YWwgLQorICogcmlfS2V5c1N0YWJsZSAtCiAgKgotICogQ2hlY2sgaWYgYWxs IGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBORVcgYXJlIGVxdWFsLgorICogQ2hlY2sgaWYgYWxs IGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBORVcgYXJlICJlcXVpdmFsZW50IjoKKyAqIEZvciBu b3JtYWwgRktzIHdlIGNoZWNrIGZvciBlcXVhbGl0eS4KKyAqIEZvciB0ZW1wb3JhbCBGS3Mg d2UgY2hlY2sgdGhhdCB0aGUgUEsgc2lkZSBpcyBhIHN1cGVyc2V0IG9mIGl0cyBvbGQgdmFs dWUsCisgKiBvciB0aGUgRksgc2lkZSBpcyBhIHN1YnNldC4KICAqCiAgKiBOb3RlOiBhdCBz b21lIHBvaW50IHdlIG1pZ2h0IHdpc2ggdG8gcmVkZWZpbmUgdGhpcyBhcyBjaGVja2luZyBm b3IKICAqICJJUyBOT1QgRElTVElOQ1QiIHJhdGhlciB0aGFuICI9IiwgdGhhdCBpcywgYWxs b3cgdHdvIG51bGxzIHRvIGJlCkBAIC0yODAxLDcgKzMwMzMsNyBAQCByaV9IYXNoUHJlcGFy ZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQSVBsYW5QdHIgcGxhbikKICAqIHByZXZpb3Vz bHkgZm91bmQgYXQgbGVhc3Qgb25lIG9mIHRoZSByb3dzIHRvIGNvbnRhaW4gbm8gbnVsbHMu CiAgKi8KIHN0YXRpYyBib29sCi1yaV9LZXlzRXF1YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRh YmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCityaV9LZXlzU3Rh YmxlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVT bG90ICpuZXdzbG90LAogCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJv b2wgcmVsX2lzX3BrKQogewogCWNvbnN0IGludDE2ICphdHRudW1zOwpAQCAtMjgzNCwzNSAr MzA2Niw4NiBAQCByaV9LZXlzRXF1YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAq b2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAKIAkJaWYgKHJlbF9pc19waykK IAkJewotCQkJLyoKLQkJCSAqIElmIHdlIGFyZSBsb29raW5nIGF0IHRoZSBQSyB0YWJsZSwg dGhlbiBkbyBhIGJ5dGV3aXNlCi0JCQkgKiBjb21wYXJpc29uLiAgV2UgbXVzdCBwcm9wYWdh dGUgUEsgY2hhbmdlcyBpZiB0aGUgdmFsdWUgaXMKLQkJCSAqIGNoYW5nZWQgdG8gb25lIHRo YXQgImxvb2tzIiBkaWZmZXJlbnQgYnV0IHdvdWxkIGNvbXBhcmUgYXMKLQkJCSAqIGVxdWFs IHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVyYXRvci4gIFRoaXMgb25seSBtYWtlcyBhCi0JCQkg KiBkaWZmZXJlbmNlIGZvciBPTiBVUERBVEUgQ0FTQ0FERSwgYnV0IGZvciBjb25zaXN0ZW5j eSB3ZSB0cmVhdAotCQkJICogYWxsIGNoYW5nZXMgdG8gdGhlIFBLIHRoZSBzYW1lLgotCQkJ ICovCi0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKG9sZHNsb3Qt PnR0c190dXBsZURlc2NyaXB0b3IsIGF0dG51bXNbaV0gLSAxKTsKKwkJCWlmIChyaWluZm8t PnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5cyAtIDEpCisJCQl7CisJCQkJaWYgKHJp X1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayh0cnVlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQor CQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkg KiBJZiB3ZSBhcmUgbG9va2luZyBhdCB0aGUgUEsgdGFibGUsIHRoZW4gZG8gYSBieXRld2lz ZQorCQkJCSAqIGNvbXBhcmlzb24uICBXZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlm IHRoZSB2YWx1ZSBpcworCQkJCSAqIGNoYW5nZWQgdG8gb25lIHRoYXQgImxvb2tzIiBkaWZm ZXJlbnQgYnV0IHdvdWxkIGNvbXBhcmUgYXMKKwkJCQkgKiBlcXVhbCB1c2luZyB0aGUgZXF1 YWxpdHkgb3BlcmF0b3IuICBUaGlzIG9ubHkgbWFrZXMgYQorCQkJCSAqIGRpZmZlcmVuY2Ug Zm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0CisJ CQkJICogYWxsIGNoYW5nZXMgdG8gdGhlIFBLIHRoZSBzYW1lLgorCQkJCSAqLworCQkJCUZv cm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIob2xkc2xvdC0+dHRzX3R1cGxl RGVzY3JpcHRvciwgYXR0bnVtc1tpXSAtIDEpOwogCi0JCQlpZiAoIWRhdHVtX2ltYWdlX2Vx KG9sZHZhbHVlLCBuZXd2YWx1ZSwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQotCQkJ CXJldHVybiBmYWxzZTsKKwkJCQlpZiAoIWRhdHVtX2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2 YWx1ZSwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQorCQkJCQlyZXR1cm4gZmFsc2U7 CisJCQl9CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQkvKgotCQkJICogRm9yIHRoZSBGSyB0YWJs ZSwgY29tcGFyZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcXVhbGl0eQotCQkJICogb3BlcmF0 b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhl Ci0JCQkgKiBjb25zdHJhaW50IGFmdGVyIHRoZSB1cGRhdGUuCi0JCQkgKi8KLQkJCWlmICgh cmlfQXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJl bCwgYXR0bnVtc1tpXSksCi0JCQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQotCQkJCXJl dHVybiBmYWxzZTsKKwkJCWlmIChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5u a2V5cyAtIDEpCisJCQl7CisJCQkJaWYgKHJpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayhm YWxzZSwgb2xkdmFsdWUsIG5ld3ZhbHVlKSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFy ZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcXVhbGl0eQorCQkJCSAqIG9wZXJhdG9yLiAgQ2hh bmdlcyB0aGF0IGNvbXBhcmUgZXF1YWwgd2lsbCBzdGlsbCBzYXRpc2Z5IHRoZQorCQkJCSAq IGNvbnN0cmFpbnQgYWZ0ZXIgdGhlIHVwZGF0ZS4KKwkJCQkgKi8KKwkJCQlpZiAoIXJpX0F0 dHJpYnV0ZXNFcXVhbChyaWluZm8tPmZmX2VxX29wcnNbaV0sIFJJQXR0VHlwZShyZWwsIGF0 dG51bXNbaV0pLAorCQkJCQkJCQkJCW9sZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVy biBmYWxzZTsKKwkJCX0KIAkJfQogCX0KIAogCXJldHVybiB0cnVlOwogfQogCisvKgorICog cmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrIC0KKyAqCisgKiBDb21wYXJlIG9sZCBhbmQg bmV3IHZhbHVlcywgYW5kIHJldHVybiB0cnVlIGlmIHdlIG5lZWQgdG8gY2hlY2sgdGhlIEZL LgorICoKKyAqIE5COiB3ZSBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IG5laXRoZXIgdmFs dWUgaXMgbnVsbC4KKyAqLworc3RhdGljIGJvb2wKK3JpX1JhbmdlQXR0cmlidXRlTmVlZHND aGVjayhib29sIHJlbF9pc19waywgRGF0dW0gb2xkdmFsdWUsIERhdHVtIG5ld3ZhbHVlKQor eworCVJhbmdlVHlwZSAqb2xkcmFuZ2UsICpuZXdyYW5nZTsKKwlPaWQgb2xkcm5ndHlwZSwg bmV3cm5ndHlwZTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisKKwlvbGRyYW5nZSA9 IERhdHVtR2V0UmFuZ2VUeXBlUChvbGR2YWx1ZSk7CisJbmV3cmFuZ2UgPSBEYXR1bUdldFJh bmdlVHlwZVAobmV3dmFsdWUpOworCW9sZHJuZ3R5cGUgPSBSYW5nZVR5cGVHZXRPaWQob2xk cmFuZ2UpOworCW5ld3JuZ3R5cGUgPSBSYW5nZVR5cGVHZXRPaWQobmV3cmFuZ2UpOworCisJ aWYgKG9sZHJuZ3R5cGUgIT0gbmV3cm5ndHlwZSkKKwkJZWxvZyhFUlJPUiwgInJhbmdlIHR5 cGVzIGFyZSBpbmNvbnNpc3RlbnQiKTsKKworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2Fj aGUob2xkcm5ndHlwZSwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCWlmICh0eXBjYWNoZS0+ cm5nZWxlbXR5cGUgPT0gTlVMTCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgJXUgaXMgbm90IGEg cmFuZ2UgdHlwZSIsIG9sZHJuZ3R5cGUpOworCisJaWYgKHJlbF9pc19waykKKwkJLyogSWYg dGhlIFBLJ3MgcmFuZ2Ugc2hydW5rLCBhIGNvbmZsaWN0IGlzIHBvc3NpYmxlLiAqLworCQly ZXR1cm4gIXJhbmdlX2VxX2ludGVybmFsKHR5cGNhY2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2Up ICYmCisJCQkhcmFuZ2VfY29udGFpbnNfaW50ZXJuYWwodHlwY2FjaGUsIG5ld3JhbmdlLCBv bGRyYW5nZSk7CisJZWxzZQorCQkvKiBJZiB0aGUgRksncyByYW5nZSBncmV3LCBhIGNvbmZs aWN0IGlzIHBvc3NpYmxlLiAqLworCQlyZXR1cm4gIXJhbmdlX2VxX2ludGVybmFsKHR5cGNh Y2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2UpICYmCisJCQlyYW5nZV9jb250YWluc19pbnRlcm5h bCh0eXBjYWNoZSwgbmV3cmFuZ2UsIG9sZHJhbmdlKTsKK30KIAogLyoKICAqIHJpX0F0dHJp YnV0ZXNFcXVhbCAtCkBAIC0zMDIxLDEyICszMzA0LDQ5IEBAIFJJX0ZLZXlfdHJpZ2dlcl90 eXBlKE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgogCQlj YXNlIEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9O X1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX0RFTDoKKwkJY2FzZSBGX1RSSV9G S0VZX1JFU1RSSUNUX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKKwkJ Y2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BL OwogCiAJCWNhc2UgRl9SSV9GS0VZX0NIRUNLX0lOUzoKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hF Q0tfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0hFQ0tfSU5TOgorCQljYXNlIEZfVFJJX0ZL RVlfQ0hFQ0tfVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfRks7CiAJfQogCiAJcmV0dXJu IFJJX1RSSUdHRVJfTk9ORTsKIH0KKworLyoKKyAqIGxvb2t1cFRSSU9wZXJBbmRQcm9jIC0K KyAqCisgKiBHZXRzIHRoZSBuYW1lcyBvZiB0aGUgb3BlcmF0b3IgYW5kIGFnZ3JlZ2F0ZSBm dW5jdGlvbgorICogdXNlZCB0byBidWlsZCB0aGUgU1FMIGZvciBUUkkgY29uc3RyYWludHMu CisgKiBSYWlzZXMgYW4gZXJyb3IgaWYgZWl0aGVyIGlzIG5vdCBmb3VuZC4KKyAqLworc3Rh dGljIHZvaWQKK2xvb2t1cFRSSU9wZXJBbmRQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm8sIGNoYXIgKipvcG5hbWUsIGNoYXIgKiphZ2duYW1lKQoreworCU9pZAlvaWQ7 CisKKwlvaWQgPSByaWluZm8tPnBlcmlvZF9jb250YWluZWRfYnlfb3BlcjsKKwlpZiAoIU9p ZElzVmFsaWQob2lkKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coIm5vIENvbnRhaW5lZEJ5IG9wZXJh dG9yIGZvciBmb3JlaWduIGtleSBjb25zdHJhaW50IFwiJXNcIiIsCisJCQkJCQlOYW1lU3Ry KHJpaW5mby0+Y29ubmFtZSkpLAorCQkJCSBlcnJoaW50KCJZb3UgbXVzdCB1c2UgYW4gb3Bl cmF0b3IgY2xhc3Mgd2l0aCBhIG1hdGNoaW5nIENvbnRhaW5lZEJ5IG9wZXJhdG9yLiIpKSk7 CisJKm9wbmFtZSA9IGdldF9vcG5hbWUob2lkKTsKKworCW9pZCA9IHJpaW5mby0+cGVyaW9k X3JlZmVyZW5jZWRfYWdnX3Byb2M7CisJaWYgKCFPaWRJc1ZhbGlkKG9pZCkpCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJ CQkgZXJybXNnKCJubyByZWZlcmVuY2VkYWdnIHN1cHBvcnQgZnVuY3Rpb24gZm9yIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgXCIlc1wiIiwKKwkJCQkJCU5hbWVTdHIocmlpbmZvLT5jb25u YW1lKSksCisJCQkJIGVycmhpbnQoIllvdSBtdXN0IHVzZSBhbiBvcGVyYXRvciBjbGFzcyB3 aXRoIGEgcmVmZXJlbmNlZGFnZyBzdXBwb3J0IGZ1bmN0aW9uLiIpKSk7CisJKmFnZ25hbWUg PSBnZXRfZnVuY19uYW1lX2FuZF9uYW1lc3BhY2Uob2lkKTsKK30KZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9ydWxldXRpbHMuYwppbmRleCAyNWFjMGFkMWJjLi4xYmYzYWViMzQyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIGNoYXIg KnBnX2dldF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29pZCwKIAkJCQkJCQkJICAgaW50IHBy ZXR0eUZsYWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdn ZXJkZWZfd29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKIHN0YXRpYyBpbnQJZGVj b21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9p ZCByZWxJZCwKLQkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8g YnVmKTsKKwkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIGJvb2wgd2l0aFBlcmlv ZCwgU3RyaW5nSW5mbyBidWYpOwogc3RhdGljIGNoYXIgKnBnX2dldF9ydWxlZGVmX3dvcmtl cihPaWQgcnVsZW9pZCwgaW50IHByZXR0eUZsYWdzKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRf aW5kZXhkZWZfd29ya2VyKE9pZCBpbmRleHJlbGlkLCBpbnQgY29sbm8sCiAJCQkJCQkJCQlj b25zdCBPaWQgKmV4Y2x1ZGVPcHMsCkBAIC0yMjQ3LDcgKzIyNDcsOSBAQCBwZ19nZXRfY29u c3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwK IAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJ CQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlkZWNvbXBpbGVf Y29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGZhbHNlLCAmYnVm KTsKKwkJCQkvKiBJZiBpdCBpcyBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5IHRoZW4gaXQgdXNl cyBQRVJJT0QuICovCisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNv bkZvcm0tPmNvbnJlbGlkLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbndpdGhv dXRvdmVybGFwcywgJmJ1Zik7CiAKIAkJCQkvKiBhZGQgZm9yZWlnbiByZWxhdGlvbiBuYW1l ICovCiAJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiKSBSRUZFUkVOQ0VTICVzKCIsCkBA IC0yMjU4LDcgKzIyNjAsOCBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNv bnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0 dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJh aW50X2NvbmZrZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWws IGNvbkZvcm0tPmNvbmZyZWxpZCwgZmFsc2UsICZidWYpOworCQkJCWRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsIGZhbHNlLAorCQkJCQkJ CQkJCQkgY29uRm9ybS0+Y29ud2l0aG91dG92ZXJsYXBzLCAmYnVmKTsKIAogCQkJCWFwcGVu ZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTIzNDQsNyArMjM0Nyw3IEBAIHBn X2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxD b21tYW5kLAogCQkJCWlmICghaXNudWxsKQogCQkJCXsKIAkJCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJh eSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBmYWxzZSwgJmJ1Zik7CisJCQkJCWRlY29tcGls ZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgZmFsc2UsIGZh bHNlLCAmYnVmKTsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAkJ CQl9CiAKQEAgLTIzNzksNyArMjM4Miw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtl cihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0Nh Y2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3Bn X2NvbnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGNvbkZvcm0tPmNvbndpdGhv dXRvdmVybGFwcywgJmJ1Zik7CisJCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5faW5k ZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29ud2l0aG91dG92 ZXJsYXBzLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVm LCAnKScpOwogCkBAIC0yNTc1LDcgKzI1NzgsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93 b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKICAqLwogc3RhdGlj IGludAogZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhf YXJyYXksIE9pZCByZWxJZCwKLQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmlu Z0luZm8gYnVmKQorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRoUGVy aW9kLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlEYXR1bQkgICAqa2V5czsKIAlpbnQJCQluS2V5 czsKQEAgLTI1OTQsNyArMjU5Nyw5IEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXko RGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCiAJCWlmIChqID09IDApCiAJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1l KSk7CiAJCWVsc2UKLQkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCAlcyIsIHF1b3RlX2lk ZW50aWZpZXIoY29sTmFtZSkpOworCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzJXMi LAorCQkJCQkJCSAod2l0aFBlcmlvZCAmJiBqID09IG5LZXlzIC0gMSkgPyAiUEVSSU9EICIg OiAiIiwKKwkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJfQogCWlmICh3 aXRob3V0T3ZlcmxhcHMpCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFdJVEhP VVQgT1ZFUkxBUFMiKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xz eXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXgg ZmM2ZDI2N2U0NC4uMTJhZWRlNWRhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMKQEAgLTE2MjcsNiArMTYyNywzNyBAQCBnZXRfZnVuY19uYW1lKE9pZCBmdW5jaWQp CiAJCXJldHVybiBOVUxMOwogfQogCisvKgorICogZ2V0X2Z1bmNfbmFtZV9hbmRfbmFtZXNw YWNlCisgKgkgIHJldHVybnMgdGhlIHNjaGVtYS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgZnVu Y3Rpb24gd2l0aCB0aGUgZ2l2ZW4gZnVuY2lkCisgKgorICogTm90ZTogcmV0dXJucyBhIHBh bGxvYydkIGNvcHkgb2YgdGhlIHN0cmluZywgb3IgTlVMTCBpZiBubyBzdWNoIGZ1bmN0aW9u LgorICovCitjaGFyICoKK2dldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShPaWQgZnVuY2lk KQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFBST0NPSUQs IE9iamVjdElkR2V0RGF0dW0oZnVuY2lkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHAp KQorCXsKKwkJRm9ybV9wZ19wcm9jIGZ1bmN0dXAgPSAoRm9ybV9wZ19wcm9jKSBHRVRTVFJV Q1QodHApOworCQljaGFyCSAgICpuYW1lc3AgPSBnZXRfbmFtZXNwYWNlX25hbWUoZnVuY3R1 cC0+cHJvbmFtZXNwYWNlKTsKKwkJY2hhcgkgICAqZnVuYyA9IE5hbWVTdHIoZnVuY3R1cC0+ cHJvbmFtZSk7CisJCWNoYXIJICAgKnJlc3VsdDsKKwkJaW50CQkJbGVuID0gc3RybGVuKG5h bWVzcCkgKyBzdHJsZW4oZnVuYykgKyAyOworCisJCXJlc3VsdCA9IHBhbGxvYyhsZW4gKiBz aXplb2YoY2hhcikpOworCQlzbnByaW50ZihyZXN1bHQsIGxlbiwgIiVzLiVzIiwgbmFtZXNw LCBmdW5jKTsKKworCQlwZnJlZShuYW1lc3ApOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOwor CQlyZXR1cm4gcmVzdWx0OworCX0KKwllbHNlCisJCXJldHVybiBOVUxMOworfQorCiAvKgog ICogZ2V0X2Z1bmNfbmFtZXNwYWNlCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaAppbmRleCBjMTdiMWU5ZDMxLi4wY2MxNWE1MGQ3IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuaApAQCAtMTI3LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25z dHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07 CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZL IGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRo ZSBPSURzIG9mIHRoZSBQSyA9IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJ ICogY29sdW1uIG9mIHRoZSBjb25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFd IEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5 LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gK KwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJp c29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAo aS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lk CQkJY29ucHBlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJ ZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVy YXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUg RksgPSBGSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0 aGUgY29uc3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1 bW5zKQogCSAqLwogCU9pZAkJCWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9y KTsKQEAgLTE4MSw3ICsxODEsNyBAQCBERUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29u cGFyZW50aWRfaW5kZXgsIDI1NzksIENvbnN0cmFpbnRQYXJlbnRJbmRleElkLCBwZwogCiAv KiBjb25rZXkgY2FuIGNvbnRhaW4gemVybyAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hv bGUtcm93IFZhciBpcyB1c2VkICovCiBERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgo Y29ucmVsaWQsIGNvbmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsK LURFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0 dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9L RVlfT1BUKChjb25mcmVsaWQsIGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwg YXR0bnVtKSk7CiAKICNpZmRlZiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcHJvYy5kYXQKaW5kZXggMTc4N2FmYmE3NC4uODc0Y2E5OGVkNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0zOTQ1LDYgKzM5NDUsMzAgQEAKICAgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ1JJX0ZL ZXlfbm9hY3Rpb25fdXBkJyB9LAogCisjIFRlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0 eSBjb25zdHJhaW50IHRyaWdnZXJzCit7IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICd0ZW1w b3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMn LAorICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja19pbnMnLCBwcm92b2xhdGlsZSA9PiAn dicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJv c3JjID0+ICdUUklfRktleV9jaGVja19pbnMnIH0sCit7IG9pZCA9PiAnNjEyMycsIGRlc2Ny ID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJF RkVSRU5DRVMnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja191cGQnLCBwcm92b2xh dGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9 PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jaGVja191cGQnIH0sCit7IG9pZCA9PiAnNjEy NicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRF IFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJywgcHJv dm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlw ZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJyB9LAoreyBv aWQgPT4gJzYxMjcnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IE9OIFVQREFURSBSRVNUUklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0 X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcics IHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3Vw ZCcgfSwKK3sgb2lkID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFs IGludGVncml0eSBPTiBERUxFVEUgTk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZL ZXlfbm9hY3Rpb25fZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlf bm9hY3Rpb25fZGVsJyB9LAoreyBvaWQgPT4gJzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBOTyBBQ1RJT04nLAorICBwcm9uYW1l ID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHBy b3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ ICdUUklfRktleV9ub2FjdGlvbl91cGQnIH0sCisKIHsgb2lkID0+ICcxNjY2JywKICAgcHJv bmFtZSA9PiAndmFyYml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ ICdib29sJywKICAgcHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQnLCBwcm9zcmMgPT4g J2JpdGVxJyB9LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCAxZjczOGIwMTI5Li5lMmI5 ZGNhMWUwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtNTAsOCArNTAsMTAgQEAgZXh0 ZXJuIGJvb2wgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogZXh0ZXJuIE9pZAlH ZXREZWZhdWx0T3BDbGFzcyhPaWQgdHlwZV9pZCwgT2lkIGFtX2lkKTsKIGV4dGVybiBPaWQJ UmVzb2x2ZU9wQ2xhc3MoY29uc3QgTGlzdCAqb3BjbGFzcywgT2lkIGF0dHJUeXBlLAogCQkJ CQkJICAgY29uc3QgY2hhciAqYWNjZXNzTWV0aG9kTmFtZSwgT2lkIGFjY2Vzc01ldGhvZElk KTsKLWV4dGVybiB2b2lkIEdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KE9pZCBv cGNsYXNzLCBPaWQgYXR0dHlwZSwKLQkJCQkJCQkJCQkJIGNvbnN0IGNoYXIgKm9wbmFtZSwg T2lkICpvcGlkLAorZXh0ZXJuIHZvaWQgR2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRl Z3koT2lkIG9wY2xhc3MsIE9pZCByaHN0eXBlLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAq b3BuYW1lLAorCQkJCQkJCQkJCQkgY29uc3QgY2hhciAqY29udGV4dCwKKwkJCQkJCQkJCQkJ IE9pZCAqb3BpZCwKIAkJCQkJCQkJCQkJIFN0cmF0ZWd5TnVtYmVyICpzdHJhdCk7CiAKIC8q IGNvbW1hbmRzL2Z1bmN0aW9uY21kcy5jICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j b21tYW5kcy90YWJsZWNtZHMuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5o CmluZGV4IGE5YzY4MjU2MDEuLjgyYTE0NDRkMzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxl Y21kcy5oCkBAIC0xMDUsNSArMTA1LDggQEAgZXh0ZXJuIHZvaWQgUmFuZ2VWYXJDYWxsYmFj a093bnNSZWxhdGlvbihjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiAJCQkJCQkJCQkJIE9p ZCByZWxJZCwgT2lkIG9sZFJlbElkLCB2b2lkICphcmcpOwogZXh0ZXJuIGJvb2wgUGFydENv bnN0cmFpbnRJbXBsaWVkQnlSZWxDb25zdHJhaW50KFJlbGF0aW9uIHNjYW5yZWwsCiAJCQkJ CQkJCQkJCQkgTGlzdCAqcGFydENvbnN0cmFpbnQpOworZXh0ZXJuIHZvaWQgRmluZEZLUGVy aW9kT3BlcnNBbmRQcm9jcyhPaWQgb3BjbGFzcywKKwkJCQkJCQkJCSAgT2lkICpwZXJpb2Rv cGVyb2lkLAorCQkJCQkJCQkJICBPaWQgKnBlcmlvZHByb2NvaWQpOwogCiAjZW5kaWYJCQkJ CQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAwOTg5 OTBkZDE2Li4wM2M1ZTcwN2I5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yNTYz LDYgKzI1NjMsMTAgQEAgdHlwZWRlZiBlbnVtIENvbnN0clR5cGUJCQkvKiB0eXBlcyBvZiBj b25zdHJhaW50cyAqLwogI2RlZmluZSBGS0NPTlNUUl9NQVRDSF9QQVJUSUFMCQkncCcKICNk ZWZpbmUgRktDT05TVFJfTUFUQ0hfU0lNUExFCQkncycKIAorLyogRm9yZWlnbiBrZXkgd2l0 aCBQRVJJT0QgcG9zaXRpb25zICovCisjZGVmaW5lIEZLQ09OU1RSX1BFUklPRF9PUF9DT05U QUlORURfQlkJMAorI2RlZmluZSBGS0NPTlNUUl9QRVJJT0RfUFJPQ19SRUZFUkVOQ0VEX0FH RyAwCisKIHR5cGVkZWYgc3RydWN0IENvbnN0cmFpbnQKIHsKIAlwZ19ub2RlX2F0dHIoY3Vz dG9tX3JlYWRfd3JpdGUpCkBAIC0yNjA5LDcgKzI2MTMsOSBAQCB0eXBlZGVmIHN0cnVjdCBD b25zdHJhaW50CiAJLyogRmllbGRzIHVzZWQgZm9yIEZPUkVJR04gS0VZIGNvbnN0cmFpbnRz OiAqLwogCVJhbmdlVmFyICAgKnBrdGFibGU7CQkvKiBQcmltYXJ5IGtleSB0YWJsZSAqLwog CUxpc3QJICAgKmZrX2F0dHJzOwkJLyogQXR0cmlidXRlcyBvZiBmb3JlaWduIGtleSAqLwor CU5vZGUJICAgKmZrX3BlcmlvZDsJCS8qIFN0cmluZyBub2RlIG5hbWluZyBQZXJpb2Qgb3Ig cmFuZ2UgY29sdW1uICovCiAJTGlzdAkgICAqcGtfYXR0cnM7CQkvKiBDb3JyZXNwb25kaW5n IGF0dHJzIGluIFBLIHRhYmxlICovCisJTm9kZQkgICAqcGtfcGVyaW9kOwkJLyogU3RyaW5n IG5vZGUgbmFtaW5nIFBlcmlvZCBvciByYW5nZSBjb2x1bW4gKi8KIAljaGFyCQlma19tYXRj aHR5cGU7CS8qIEZVTEwsIFBBUlRJQUwsIFNJTVBMRSAqLwogCWNoYXIJCWZrX3VwZF9hY3Rp b247CS8qIE9OIFVQREFURSBhY3Rpb24gKi8KIAljaGFyCQlma19kZWxfYWN0aW9uOwkvKiBP TiBERUxFVEUgYWN0aW9uICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggNTk4NGRjZmE0Yi4u Y2NmNWJmOGFhNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIFBH X0tFWVdPUkQoInBhcnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04sIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3NpbmciLCBQQVNTSU5HLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzd29yZCIs IFBBU1NXT1JELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwZXJpb2QiLCBQRVJJT0QsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFjaW5nIiwgUExBQ0lORywgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBsYW5zIiwgUExBTlMsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBvbGljeSIsIFBPTElDWSwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2Nh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBjMjJjYWJkZjQy Li5lODJmYjZmNDI1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUu aAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtMTIwLDYgKzEyMCw3 IEBAIGV4dGVybiBPaWQJZ2V0X25lZ2F0b3IoT2lkIG9wbm8pOwogZXh0ZXJuIFJlZ1Byb2Nl ZHVyZSBnZXRfb3BycmVzdChPaWQgb3Bubyk7CiBleHRlcm4gUmVnUHJvY2VkdXJlIGdldF9v cHJqb2luKE9pZCBvcG5vKTsKIGV4dGVybiBjaGFyICpnZXRfZnVuY19uYW1lKE9pZCBmdW5j aWQpOworZXh0ZXJuIGNoYXIgKmdldF9mdW5jX25hbWVfYW5kX25hbWVzcGFjZShPaWQgZnVu Y2lkKTsKIGV4dGVybiBPaWQJZ2V0X2Z1bmNfbmFtZXNwYWNlKE9pZCBmdW5jaWQpOwogZXh0 ZXJuIE9pZAlnZXRfZnVuY19yZXR0eXBlKE9pZCBmdW5jaWQpOwogZXh0ZXJuIGludAlnZXRf ZnVuY19uYXJncyhPaWQgZnVuY2lkKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IGNkMDQ0NmZhNTEuLjdlNWUyMDkyMzcg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFw cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dApAQCAtMzkzLDMgKzM5Myw1NTQgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkg aWQsIHZhbGlkX2F0OwogKDEgcm93KQogCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOworLS0KKy0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCistLQorLS0gY2FuJ3QgZHJvcCBh IHJhbmdlIHJlZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsMyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitFUlJPUjog IGNhbm5vdCBkcm9wIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3JhbDMgYmVjYXVz ZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgY29uc3RyYWludCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIG9uIHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcgZGVwZW5k cyBvbiBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzCitISU5UOiAgVXNlIERS T1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorQUxU RVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitOT1RJ Q0U6ICBkcm9wIGNhc2NhZGVzIHRvIGNvbnN0cmFpbnQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m ayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5nCitEUk9QIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IEZPUkVJR04g S0VZLCByYW5nZSByZWZlcmVuY2VzIHJhbmdlCistLQorLS0gQ2FuJ3QgY3JlYXRlIGEgRksg d2l0aCBhIG1pc21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsy IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9y YWxfZmtfcm5nMnJuZ19mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5 IGNvbHVtbnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxl IHR5cGVzOiBpbnQ0cmFuZ2UgYW5kIHRzcmFuZ2UuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFy ZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2 YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSB3aXRo IG1pc21hdGNoZWQgUEVSSU9EIGNvbHVtbnM6CistLSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpIFJFRkVSRU5DRVMgKGlkLCB2YWxpZF9hdCkKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRf YXQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUgcmVmZXJl bmNpbmcgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorLS0gKHBhcmVudF9p ZCwgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgdXNlcyBQRVJJT0Qg b24gdGhlIHJlZmVyZW5jZWQgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNpbmcgdGFibGUK Ky0tIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyAoaWQpCitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZyAoaWQpCispOworRVJST1I6ICBmb3JlaWduIGtleSB1c2VzIFBFUklPRCBvbiB0aGUg cmVmZXJlbmNpbmcgdGFibGUgYnV0IG5vdCB0aGUgcmVmZXJlbmNlZCB0YWJsZQorLS0gKHBh cmVudF9pZCkgUkVGRVJFTkNFUyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkKQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9h dCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHVzZXMgUEVSSU9EIG9uIHRoZSByZWZlcmVu Y2VkIHRhYmxlIGJ1dCBub3QgdGhlIHJlZmVyZW5jaW5nIHRhYmxlCistLSB3aXRoIGluZmVy cmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1 cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQp CispOworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0 IG5vdCBjb250YWluIGR1cGxpY2F0ZXMKKy0tIFR3byBzY2FsYXIgY29sdW1ucworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJlbnRfaWQyIGludDRy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkMSwgaWQy LCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3JuZzJybmcKKyAgICAg ICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9mazJfcm5nMnJuZyIKKyAgIENvbHVtbiAg IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg aWQgICAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFs aWRfYXQgICB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgcGFyZW50 X2lkMSB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgcGFyZW50X2lk MiB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorRm9yZWlnbi1rZXkgY29uc3RyYWludHM6CisgICAgInRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrIiBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lk MiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIs IFBFUklPRCB2YWxpZF9hdCkKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsK Ky0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2 YWxpZF9hdCk7CistLSBUd28gc2NhbGFyIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmsyX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZDEgaW50NHJhbmdlLAorCXBhcmVudF9pZDIgaW50NHJhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcy cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCk7CitcZCB0 ZW1wb3JhbF9mazJfcm5nMnJuZworICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFs X2ZrMl9ybmcycm5nIgorICAgQ29sdW1uICAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBO dWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgICAgIHwgaW50NHJhbmdlIHwgICAg ICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCAgIHwgdHNyYW5nZSAgIHwgICAgICAg ICAgIHwgbm90IG51bGwgfCAKKyBwYXJlbnRfaWQxIHwgaW50NHJhbmdlIHwgICAgICAgICAg IHwgICAgICAgICAgfCAKKyBwYXJlbnRfaWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCitGb3JlaWduLWtl eSBjb25zdHJhaW50czoKKyAgICAidGVtcG9yYWxfZmsyX3JuZzJybmdfZmsiIEZPUkVJR04g S0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMihpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KQorCistLSB3aXRo IGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1u IHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZ UEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVw cGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgY2Fubm90IGJlIGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFs aWRfYXQiIGFuZCAidmFsaWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVy YW5nZSBhbmQgdHNyYW5nZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB TFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIo dmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5n OworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1 bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBp ZCk7CitFUlJPUjogIGZvcmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qg bm90IGNvbnRhaW4gZHVwbGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkK Ky0tCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWls OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBv ciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBL ZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4g dGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOwor LS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhp ZCwgUEVSSU9EIHZhbGlkX2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBp bnNlcnRzCistLQorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsK Ky0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEs MV0nKTsKK0VSUk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIKK0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIp LCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBub3QgcHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBp dCBzaG91bGQgd29yazoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwx XScsIHRzcmFuZ2UoJzIwMTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1 cGRhdGVzCistLQorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0n OworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9 ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFs X2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShb MSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAw IDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERB VEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBp ZCA9ICdbMSwxXSc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQp PShbOCw5KSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAw OjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCist LSBBTFRFUiBGSyBERUZFUlJBQkxFCitCRUdJTjsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUworICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSksCisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMKKyAg ICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1 XScpOworICBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAgQUxURVIgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJMRSBJTklUSUFM TFkgREVGRVJSRUQ7CisgIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxkIGZhaWwg aGVyZS4KK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBO TyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhl IG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w MS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRh dGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVu Y2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwg J1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBL IHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFU RSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcy MDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFu Z2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVu IGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRl IHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVh biB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04g REVMRVRFIFJFU1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNl IHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVm ZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0g Y2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0g dGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVw ZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0g Y2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7 CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0 aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQg YmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVu Y2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9S OiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJs ZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQg dGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJ Q1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBh IFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlz IHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0 c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywg JzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3Ro IGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5n IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQs IHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04gVVBEQVRFL0RF TEVURSBvcHRpb25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FT Q0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBT RVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04g REVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAgYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb OCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScp OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFy ZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFU RSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0 cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElO ICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDEx XScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4 XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0w Mi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0d28nKTsKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0Qg dmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZr cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZB TFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywg J1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0n LCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CistLSBwYXJ0aXRp b25lZCBGSyBjaGlsZCBpbnNlcnRzCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIw MDEtMDEtMDEnLCAnMjAwMi0wMS0wMScpLCAnWzIsMl0nKSwKKyAgKCdbMiwyXScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpOworLS0gc2hvdWxk IGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIwMTAtMDItMTUn KSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRma3Ax IiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0o WzEsMiksIFswMS0wMS0yMDEwLDAyLTE1LTIwMTApKSBpcyBub3QgcHJlc2VudCBpbiB0YWJs ZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIi4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKK0VSUk9SOiAgaW5zZXJ0IG9y IHVwZGF0ZSBvbiB0YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkg KHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMyw0KSwgWzAxLTAxLTIwMDAsMDItMTUtMjAwMCkp IGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmciLgor LS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMDAtMDItMTMnKSBXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBtb3ZlIGEgcm93IGZy b20gdGhlIGZpcnN0IHBhcnRpdGlvbiB0byB0aGUgc2Vjb25kCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0nIFdIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0aGUgc2Vjb25kIHBhcnRpdGlvbiB0byB0aGUg Zmlyc3QKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9 ICdbMSwxXScgV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wNC0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK0VS Uk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJh aW50ICJ0ZmtwMV9wa2V5IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwg WzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAo aWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDAwLDA0LTAxLTIwMDApKS4KKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx JykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAn KSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgor LS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNs ZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCB1cGRhdGVzIFJFU1RSSUNUCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScp CisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0w MScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMg c3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRp dGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ii4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7CitFUlJP UjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERF TEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBk YXRlcyBTRVQgREVGQVVMVAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFd JywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr CisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxU IE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRl bGV0ZXMgU0VUIERFRkFVTFQKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCAzOWVhMjRmNjQz Li45Yjc5YmI2MzQ1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0 X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJs YXBzLnNxbApAQCAtMjg4LDMgKzI4OCw1MjkgQEAgU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworCistLQorLS0g dGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCisKKy0tIGNhbid0IGRyb3AgYSByYW5nZSByZWZl cmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworQUxURVIgVEFC TEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9y YWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitEUk9QIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgRk9S RUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCisKKy0tIENhbid0IGNyZWF0 ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQs IFBFUklPRCB2YWxpZF9hdCkKKyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQg aW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0 KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKworLS0gd2l0aCBtaXNt YXRjaGVkIFBFUklPRCBjb2x1bW5zOgorLS0gKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KSBSRUZFUkVOQ0VTIChpZCwgdmFsaWRfYXQpCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50 X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KQor KTsKKy0tIChwYXJlbnRfaWQsIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIChpZCwgUEVSSU9EIHZh bGlkX2F0KQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CistLSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpIFJFRkVSRU5DRVMgKGlkKQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkKQorKTsKKy0t IChwYXJlbnRfaWQpIFJFRkVSRU5DRVMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCispOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRh YmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CisK Ky0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1u czoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgcGFyZW50X2lkKQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCkKKyk7CisKKy0tIFR3byBzY2FsYXIgY29s dW1ucworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQxIGludDRyYW5nZSwKKwlwYXJl bnRfaWQyIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwg cGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzIgKGlkMSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCispOworXGQgdGVtcG9yYWxfZmsyX3Ju ZzJybmcKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CisKKy0tCistLSB0ZXN0 IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJ cGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KTsK Ky0tIFR3byBzY2FsYXIgY29sdW1uczoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5n MnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lk MSBpbnQ0cmFuZ2UsCisJcGFyZW50X2lkMiBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJl bnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcyIChpZDEsIGlkMiwgUEVSSU9EIHZhbGlkX2F0KTsKK1xkIHRlbXBvcmFsX2Zr Ml9ybmcycm5nCisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFi bGUsIGFuZCB3cm9uZyBjb2x1bW4gdHlwZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBTFRF UiBDT0xVTU4gdmFsaWRfYXQgVFlQRSBkYXRlcmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2Vy KHZhbGlkX2F0KTo6ZGF0ZSwgdXBwZXIodmFsaWRfYXQpOjpkYXRlKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCUFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShs b3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CisKKy0tIHdpdGggaW5mZXJyZWQg UEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZzsKKworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJl bmNlZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQs IFBFUklPRCBpZCk7CisKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJF RkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBva2F5IGFnYWluOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nOworCistLQorLS0gdGVzdCBwZ19nZXRfY29uc3RyYWludGRlZgorLS0KKworU0VM RUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJF IGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJuZ19mayc7CisKKy0tCistLSB0ZXN0IEZL IGNoaWxkIGluc2VydHMKKy0tCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwg J1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQt MDEnKSwgJ1sxLDFdJyk7CistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIw MTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScp OworCistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorCitVUERBVEUgdGVtcG9y YWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFU RSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1wb3Jh bF9ma19ybmcycm5nIFNFVCBwYXJlbnRfaWQgPSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFd JzsKKworLS0gQUxURVIgRksgREVGRVJSQUJMRQorCitCRUdJTjsKKyAgSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUworICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSksCisgICAgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKKyAgSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMKKyAgICAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEw JyksICdbNSw1XScpOworICBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisgICAg QUxURVIgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisgICAgREVGRVJSQUJM RSBJTklUSUFMTFkgREVGRVJSRUQ7CisKKyAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJzsgLS1zaG91bGQgbm90IGZhaWwgeWV0LgorQ09NTUlUOyAtLSBz aG91bGQgZmFpbCBoZXJlLgorCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBB Q1RJT04KKy0tCisKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUg bnVtZXJpYyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykp OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAx LTAxJywgJzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0 ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5j ZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsg dXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBw YXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBh bmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRh dGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJ RFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKKy0tIGEgUEsgdXBk YXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCByZWZlcmVu Y2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhv dWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNu J3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAx JykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgZmFpbHMgYmVjYXVz ZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRl bGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1 Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1 cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0g J1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7 CistLQorLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KKy0tCitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIGEg UEsgZGVsZXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBpc24ndCBy ZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3Vj Y2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNl IHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1 LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNj ZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMs M10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0K Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCisKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJT04gREVMRVRF IFJFU1RSSUNUOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgc3Vj Y2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNl IHRoZSByYW5nZSBpc24ndDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1 LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g YSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxl dGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNj ZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMs M10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0K Ky0tIHRlc3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorCistLSB0ZXN0IEZLIHBh cmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzQsNF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nCisJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBO VUxMOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScsIHRzcmFuZ2UobnVsbCwgbnVs bCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcy cm5nCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAor CURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxF VEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOworCistLSBGSyBiZXR3ZWVu IHBhcnRpdGlvbmVkIHRhYmxlcworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1l IHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBM SVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywg J1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0 aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0n LCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCisgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgn WzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyks CisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAn dHdvJyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBM SVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywg J1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0 ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1Ig VkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEw XScsICdbMTIsMTJdJyk7CisKKy0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGluc2VydHMKKwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwx XScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAxLTAxLTAxJywgJzIwMDItMDEtMDEn KSwgJ1syLDJdJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0xNScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVy YW5nZSgnMjAxMC0wMS0wMScsICcyMDEwLTAyLTE1JyksICdbMSwxXScpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScs IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMywzXScpOworCist LSBwYXJ0aXRpb25lZCBGSyBjaGlsZCB1cGRhdGVzCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDAwLTAyLTEzJykgV0hFUkUgaWQgPSAnWzIsMl0nOworLS0gbW92ZSBhIHJvdyBm cm9tIHRoZSBmaXJzdCBwYXJ0aXRpb24gdG8gdGhlIHNlY29uZAorVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1s0LDRdJyBXSEVSRSBpZCA9ICdb MSwxXSc7CistLSBtb3ZlIGEgcm93IGZyb20gdGhlIHNlY29uZCBwYXJ0aXRpb24gdG8gdGhl IGZpcnN0CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQg PSAnWzEsMV0nIFdIRVJFIGlkID0gJ1s0LDRdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDQtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CisK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFu Z2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAx OC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQor ICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVu dF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRl cyBOTyBBQ1RJT04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNo b3VsZCBmYWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCist LSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorCitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9O IERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAx JykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1 XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hv dWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4 LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCisKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKworLS0gcGFydGl0aW9u ZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9O IERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworCistLSBwYXJ0aXRpb25lZCBG SyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBO VUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRl bGV0ZXMgU0VUIE5VTEwKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VU IERFRkFVTFQKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQ REFURSBTRVQgREVGQVVMVDsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMg U0VUIERFRkFVTFQKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7Ci0tIAoyLjQyLjAK Cg== --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Disposition: attachment; filename*0="v20-0005-Add-multi-range_without_portion-proc-operator.patch" Content-Transfer-Encoding: base64 RnJvbSAyYWUwNzE2MjJiNDE5Mjg2MjYxYTUxOGQ0OTNlMWEwNWQ1ZWQ1MjViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMzAgRGVjIDIwMjMgMjM6MTA6NTkgLTA4 MDAKU3ViamVjdDogW1BBVENIIHYyMCA1LzhdIEFkZCB7bXVsdGksfXJhbmdlX3dpdGhvdXRf cG9ydGlvbiBwcm9jICYgb3BlcmF0b3IKClRoZXNlIHJldHVybiBhbiBhcnJheSBvZiB0aGVp ciBpbnB1dCB0eXBlIGFyZSB3b3JrIGxpa2UgbWludXMgYnV0IGRvbid0CmZhaWwgb24gc3Bs aXRzLiBUaGV5IG5ldmVyIGNvbnRhaW4gZW1wdHkgZWxlbWVudHMuIFdlIHdpbGwgdXNlIHRo aXMgdG8Kc3VwcG9ydCBGT1IgUE9SVElPTiBPRi4KLS0tCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvbXVsdGlyYW5nZXR5cGVzLmMgICAgICAgfCAgNDkgKysrKysrKwogc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JhbmdldHlwZXMuYyAgICAgICAgICAgIHwgMTI0ICsrKysrKysrKysrKysr KysrKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19vcGVyYXRvci5kYXQgICAgICAgICAgIHwg ICA2ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8 ICAgNiArCiBzcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmggICAgICAgICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdldHlwZXMub3V0 IHwgMTIxICsrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jh bmdldHlwZXMub3V0ICAgICAgfCAgNTQgKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L211bHRpcmFuZ2V0eXBlcy5zcWwgICAgICB8ICAyMiArKysrCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9yYW5nZXR5cGVzLnNxbCAgICAgICAgICAgfCAgMTAgKysKIDkgZmlsZXMgY2hhbmdl ZCwgMzk0IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvbXVsdGlyYW5nZXR5cGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbXVsdGlyYW5n ZXR5cGVzLmMKaW5kZXggOTQ0M2MyYjg4NC4uMDkwNjM0NTE1OSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L211bHRpcmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9tdWx0aXJhbmdldHlwZXMuYwpAQCAtMTIyNiw2ICsxMjI2LDU1IEBAIG11 bHRpcmFuZ2VfbWludXNfaW50ZXJuYWwoT2lkIG1sdHJuZ3R5cG9pZCwgVHlwZUNhY2hlRW50 cnkgKnJhbmdldHlwLAogCXJldHVybiBtYWtlX211bHRpcmFuZ2UobWx0cm5ndHlwb2lkLCBy YW5nZXR5cCwgcmFuZ2VfY291bnQzLCByYW5nZXMzKTsKIH0KIAorLyoKKyAqIG11bHRpcmFu Z2UgbWludXMgYnV0IHJldHVybmluZyBhbiBhcnJheSBvZiBvbmUsCisgKiBvciB6ZXJvIGlm IHRoZSByZXN1bHQgd291bGQgYmUgZW1wdHkuCisgKi8KKworRGF0dW0KK211bHRpcmFuZ2Vf d2l0aG91dF9wb3J0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJTXVsdGlyYW5nZVR5cGUg Km1yMSA9IFBHX0dFVEFSR19NVUxUSVJBTkdFX1AoMCk7CisJTXVsdGlyYW5nZVR5cGUgKm1y MiA9IFBHX0dFVEFSR19NVUxUSVJBTkdFX1AoMSk7CisJT2lkCQkJbWx0cm5ndHlwb2lkID0g TXVsdGlyYW5nZVR5cGVHZXRPaWQobXIxKTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7 CisJVHlwZUNhY2hlRW50cnkgKnJhbmdldHlwOworCWludDMyCQlyYW5nZV9jb3VudDE7CisJ aW50MzIJCXJhbmdlX2NvdW50MjsKKwlSYW5nZVR5cGUgKipyYW5nZXMxOworCVJhbmdlVHlw ZSAqKnJhbmdlczI7CisJTXVsdGlyYW5nZVR5cGUgKm1yOworCURhdHVtCWRhdHVtc1sxXTsK KwlBcnJheVR5cGUgKnJldDsKKworCXR5cGNhY2hlID0gbXVsdGlyYW5nZV9nZXRfdHlwY2Fj aGUoZmNpbmZvLCBtbHRybmd0eXBvaWQpOworCXJhbmdldHlwID0gdHlwY2FjaGUtPnJuZ3R5 cGU7CisKKwlpZiAoTXVsdGlyYW5nZUlzRW1wdHkobXIxKSB8fCBNdWx0aXJhbmdlSXNFbXB0 eShtcjIpKQorCQltciA9IG1yMTsKKwllbHNlCisJeworCQltdWx0aXJhbmdlX2Rlc2VyaWFs aXplKHR5cGNhY2hlLT5ybmd0eXBlLCBtcjEsICZyYW5nZV9jb3VudDEsICZyYW5nZXMxKTsK KwkJbXVsdGlyYW5nZV9kZXNlcmlhbGl6ZSh0eXBjYWNoZS0+cm5ndHlwZSwgbXIyLCAmcmFu Z2VfY291bnQyLCAmcmFuZ2VzMik7CisKKwkJbXIgPSBtdWx0aXJhbmdlX21pbnVzX2ludGVy bmFsKG1sdHJuZ3R5cG9pZCwKKwkJCQkJCQkJCSAgIHJhbmdldHlwLAorCQkJCQkJCQkJICAg cmFuZ2VfY291bnQxLAorCQkJCQkJCQkJICAgcmFuZ2VzMSwKKwkJCQkJCQkJCSAgIHJhbmdl X2NvdW50MiwKKwkJCQkJCQkJCSAgIHJhbmdlczIpOworCX0KKworCWlmIChNdWx0aXJhbmdl SXNFbXB0eShtcikpCisJCVBHX1JFVFVSTl9BUlJBWVRZUEVfUChjb25zdHJ1Y3RfZW1wdHlf YXJyYXkodHlwY2FjaGUtPnR5cGVfaWQpKTsKKwllbHNlCisJeworCQlkYXR1bXNbMF0gPSBN dWx0aXJhbmdlVHlwZVBHZXREYXR1bShtcik7CisJCXJldCA9IGNvbnN0cnVjdF9hcnJheShk YXR1bXMsIDEsIHR5cGNhY2hlLT50eXBlX2lkLCB0eXBjYWNoZS0+dHlwbGVuLCB0eXBjYWNo ZS0+dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBhbGlnbik7CisJCVBHX1JFVFVSTl9BUlJBWVRZ UEVfUChyZXQpOworCX0KK30KKwogLyogbXVsdGlyYW5nZSBpbnRlcnNlY3Rpb24gKi8KIERh dHVtCiBtdWx0aXJhbmdlX2ludGVyc2VjdChQR19GVU5DVElPTl9BUkdTKQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggMjRiYWQ1MjkyMy4uNGVkYTM5Njc2YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j bHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9kZXMvbWlzY25vZGVzLmgiCiAjaW5j bHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL2FycmF5LmgiCiAj aW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRlLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBAIC0xMjA2LDYgKzEyMDcsMTI5IEBAIHJh bmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFu Z2VUeXBlICpyMSwgY29uc3QgUmFuZ2VUCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiBzdWJ0 cmFjdGlvbiBidXQgcmV0dXJuaW5nIGFuIGFycmF5IHRvIGFjY29tbW9kYXRlIHNwbGl0cyAq LworRGF0dW0KK3JhbmdlX3dpdGhvdXRfcG9ydGlvbihQR19GVU5DVElPTl9BUkdTKQorewor CVJhbmdlVHlwZSAgKnIxID0gUEdfR0VUQVJHX1JBTkdFX1AoMCk7CisJUmFuZ2VUeXBlICAq cjIgPSBQR19HRVRBUkdfUkFOR0VfUCgxKTsKKwlSYW5nZVR5cGUgICpyc1syXTsKKwlpbnQJ CQluOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKworCS8qIERpZmZlcmVudCB0eXBl cyBzaG91bGQgYmUgcHJldmVudGVkIGJ5IEFOWVJBTkdFIG1hdGNoaW5nIHJ1bGVzICovCisJ aWYgKFJhbmdlVHlwZUdldE9pZChyMSkgIT0gUmFuZ2VUeXBlR2V0T2lkKHIyKSkKKwkJZWxv ZyhFUlJPUiwgInJhbmdlIHR5cGVzIGRvIG5vdCBtYXRjaCIpOworCisJdHlwY2FjaGUgPSBy YW5nZV9nZXRfdHlwY2FjaGUoZmNpbmZvLCBSYW5nZVR5cGVHZXRPaWQocjEpKTsKKworCXJh bmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyLCBycywgJm4p OworCisJaWYgKG4gPT0gMCkKKwkJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKGNvbnN0cnVjdF9l bXB0eV9hcnJheSh0eXBjYWNoZS0+dHlwZV9pZCkpOworCWVsc2UKKwl7CisJCURhdHVtCQl4 c1syXTsKKwkJaW50CQkJaTsKKwkJQXJyYXlUeXBlCSpyZXQ7CisKKwkJZm9yIChpID0gMDsg aSA8IG47IGkrKykKKwkJCXhzW2ldID0gUmFuZ2VUeXBlUEdldERhdHVtKHJzW2ldKTsKKwkJ CisJCXJldCA9IGNvbnN0cnVjdF9hcnJheSh4cywgbiwgdHlwY2FjaGUtPnR5cGVfaWQsIHR5 cGNhY2hlLT50eXBsZW4sIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2FjaGUtPnR5cGFsaWdu KTsKKwkJUEdfUkVUVVJOX0FSUkFZVFlQRV9QKHJldCk7CisJfQorfQorCisvKgorICogcmFu Z2Vfd2l0aG91dF9wb3J0aW9uX2ludGVybmFsIC0gU2V0cyBvdXRwdXRzIGFuZCBvdXRwdXRu IHRvIHRoZSByYW5nZXMKKyAqIHJlbWFpbmluZyBhbmQgdGhlaXIgY291bnQgKHJlc3BlY3Rp dmVseSkgYWZ0ZXIgc3VidHJhY3RpbmcgcjIgZnJvbSByMS4KKyAqIFRoZSBhcnJheSBzaG91 bGQgbmV2ZXIgY29udGFpbiBlbXB0eSByYW5nZXMuCisgKiBUaGUgb3V0cHV0cyB3aWxsIGJl IG9yZGVyZWQuIFdlIGV4cGVjdCB0aGF0IG91dHB1dHMgaXMgYW4gYXJyYXkgb2YKKyAqIFJh bmdlVHlwZSBwb2ludGVycywgYWxyZWFkeSBhbGxvY2F0ZWQgd2l0aCB0d28gc2xvdHMuCisg Ki8KK3ZvaWQKK3JhbmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5hbChUeXBlQ2FjaGVFbnRy eSAqdHlwY2FjaGUsIFJhbmdlVHlwZSAqcjEsCisJCQkJCQkJICAgUmFuZ2VUeXBlICpyMiwg UmFuZ2VUeXBlICoqb3V0cHV0cywgaW50ICpvdXRwdXRuKQoreworCWludAkJCWNtcF9sMWwy LAorCQkJCWNtcF9sMXUyLAorCQkJCWNtcF91MWwyLAorCQkJCWNtcF91MXUyOworCVJhbmdl Qm91bmQJbG93ZXIxLAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1 cHBlcjI7CisJYm9vbAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKworCXJhbmdlX2Rlc2VyaWFs aXplKHR5cGNhY2hlLCByMSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5MSk7CisJcmFuZ2Vf ZGVzZXJpYWxpemUodHlwY2FjaGUsIHIyLCAmbG93ZXIyLCAmdXBwZXIyLCAmZW1wdHkyKTsK KworCWlmIChlbXB0eTEpCisJeworCQkvKiBpZiByMSBpcyBlbXB0eSB0aGVuIHIxIC0gcjIg aXMgZW1wdHksIHNvIHJldHVybiB6ZXJvIHJlc3VsdHMgKi8KKwkJKm91dHB1dG4gPSAwOwor CQlyZXR1cm47CisJfQorCWVsc2UgaWYgKGVtcHR5MikKKwl7CisJCS8qIHIyIGlzIGVtcHR5 IHNvIHRoZSByZXN1bHQgaXMganVzdCByMSAod2hpY2ggd2Uga25vdyBpcyBub3QgZW1wdHkp ICovCisJCW91dHB1dHNbMF0gPSByMTsKKwkJKm91dHB1dG4gPSAxOworCQlyZXR1cm47CisJ fQorCisJLyoKKwkgKiBVc2UgdGhlIHNhbWUgbG9naWMgYXMgcmFuZ2VfbWludXNfaW50ZXJu YWwsCisJICogYnV0IHN1cHBvcnQgdGhlIHNwbGl0IGNhc2UKKwkgKi8KKwljbXBfbDFsMiA9 IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIpOworCWNtcF9s MXUyID0gcmFuZ2VfY21wX2JvdW5kcyh0eXBjYWNoZSwgJmxvd2VyMSwgJnVwcGVyMik7CisJ Y21wX3UxbDIgPSByYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmdXBwZXIxLCAmbG93ZXIy KTsKKwljbXBfdTF1MiA9IHJhbmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZ1cHBlcjEsICZ1 cHBlcjIpOworCisJaWYgKGNtcF9sMWwyIDwgMCAmJiBjbXBfdTF1MiA+IDApCisJeworCQls b3dlcjIuaW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2VyMi5sb3dlciA9 IGZhbHNlOwkvKiBpdCB3aWxsIGJlY29tZSB0aGUgdXBwZXIgYm91bmQgKi8KKwkJb3V0cHV0 c1swXSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIsIGZhbHNlLCBO VUxMKTsKKworCQl1cHBlcjIuaW5jbHVzaXZlID0gIXVwcGVyMi5pbmNsdXNpdmU7CisJCXVw cGVyMi5sb3dlciA9IHRydWU7CS8qIGl0IHdpbGwgYmVjb21lIHRoZSBsb3dlciBib3VuZCAq LworCQlvdXRwdXRzWzFdID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJnVwcGVyMiwgJnVwcGVy MSwgZmFsc2UsIE5VTEwpOworCisJCSpvdXRwdXRuID0gMjsKKwl9CisJZWxzZSBpZiAoY21w X2wxdTIgPiAwIHx8IGNtcF91MWwyIDwgMCkKKwl7CisJCW91dHB1dHNbMF0gPSByMTsKKwkJ Km91dHB1dG4gPSAxOworCX0KKwllbHNlIGlmIChjbXBfbDFsMiA+PSAwICYmIGNtcF91MXUy IDw9IDApCisJeworCQkqb3V0cHV0biA9IDA7CisJfQorCWVsc2UgaWYgKGNtcF9sMWwyIDw9 IDAgJiYgY21wX3UxbDIgPj0gMCAmJiBjbXBfdTF1MiA8PSAwKQorCXsKKwkJbG93ZXIyLmlu Y2x1c2l2ZSA9ICFsb3dlcjIuaW5jbHVzaXZlOworCQlsb3dlcjIubG93ZXIgPSBmYWxzZTsJ LyogaXQgd2lsbCBiZWNvbWUgdGhlIHVwcGVyIGJvdW5kICovCisJCW91dHB1dHNbMF0gPSBt YWtlX3JhbmdlKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyLCBmYWxzZSwgTlVMTCk7CisJ CSpvdXRwdXRuID0gMTsKKwl9CisJZWxzZSBpZiAoY21wX2wxbDIgPj0gMCAmJiBjbXBfdTF1 MiA+PSAwICYmIGNtcF9sMXUyIDw9IDApCisJeworCQl1cHBlcjIuaW5jbHVzaXZlID0gIXVw cGVyMi5pbmNsdXNpdmU7CisJCXVwcGVyMi5sb3dlciA9IHRydWU7CS8qIGl0IHdpbGwgYmVj b21lIHRoZSBsb3dlciBib3VuZCAqLworCQlvdXRwdXRzWzBdID0gbWFrZV9yYW5nZSh0eXBj YWNoZSwgJnVwcGVyMiwgJnVwcGVyMSwgZmFsc2UsIE5VTEwpOworCQkqb3V0cHV0biA9IDE7 CisJfQorCWVsc2UKKwl7CisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIGNhc2UgaW4gcmFu Z2Vfd2l0aG91dF9wb3J0aW9uIik7CisJfQorfQorCiAvKiByYW5nZSAtPiByYW5nZSBhZ2dy ZWdhdGUgZnVuY3Rpb25zICovCiAKIERhdHVtCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX29wZXJhdG9yLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0 b3IuZGF0CmluZGV4IGIyY2RlYTY2YzQuLjliNzgzY2UzMjYgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfb3BlcmF0b3IuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfb3BlcmF0b3IuZGF0CkBAIC0zNDU3LDUgKzM0NTcsMTEgQEAKICAgb3BycmVzdWx0 ID0+ICdib29sJywgb3ByY29tID0+ICc8PChhbnltdWx0aXJhbmdlLGFueW11bHRpcmFuZ2Up JywKICAgb3ByY29kZSA9PiAnbXVsdGlyYW5nZV9hZnRlcl9tdWx0aXJhbmdlJywgb3BycmVz dCA9PiAnbXVsdGlyYW5nZXNlbCcsCiAgIG9wcmpvaW4gPT4gJ3NjYWxhcmd0am9pbnNlbCcg fSwKK3sgb2lkID0+ICc4NDA1JywgZGVzY3IgPT4gJ3JhbmdlIHdpdGhvdXQgcG9ydGlvbics CisgIG9wcm5hbWUgPT4gJ0AtJywgb3BybGVmdCA9PiAnYW55cmFuZ2UnLCBvcHJyaWdodCA9 PiAnYW55cmFuZ2UnLAorICBvcHJyZXN1bHQgPT4gJ2FueWFycmF5Jywgb3ByY29kZSA9PiAn cmFuZ2Vfd2l0aG91dF9wb3J0aW9uJyB9LAoreyBvaWQgPT4gJzg0MDcnLCBkZXNjciA9PiAn bXVsdGlyYW5nZSB3aXRob3V0IHBvcnRpb24nLAorICBvcHJuYW1lID0+ICdALScsIG9wcmxl ZnQgPT4gJ2FueW11bHRpcmFuZ2UnLCBvcHJyaWdodCA9PiAnYW55bXVsdGlyYW5nZScsCisg IG9wcnJlc3VsdCA9PiAnYW55YXJyYXknLCBvcHJjb2RlID0+ICdtdWx0aXJhbmdlX3dpdGhv dXRfcG9ydGlvbicgfSwKIAogXQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggODc0 Y2E5OGVkNi4uNzI3ZWIzNTA4NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0x MDU3MCw2ICsxMDU3MCw5IEBACiB7IG9pZCA9PiAnMzg2OScsCiAgIHByb25hbWUgPT4gJ3Jh bmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55cmFuZ2UnLAogICBwcm9hcmd0eXBlcyA9 PiAnYW55cmFuZ2UgYW55cmFuZ2UnLCBwcm9zcmMgPT4gJ3JhbmdlX21pbnVzJyB9LAoreyBv aWQgPT4gJzg0MDQnLAorICBwcm9uYW1lID0+ICdyYW5nZV93aXRob3V0X3BvcnRpb24nLCBw cm9yZXR0eXBlID0+ICdhbnlhcnJheScsCisgIHByb2FyZ3R5cGVzID0+ICdhbnlyYW5nZSBh bnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2Vfd2l0aG91dF9wb3J0aW9uJyB9LAogeyBvaWQg PT4gJzM4NzAnLCBkZXNjciA9PiAnbGVzcy1lcXVhbC1ncmVhdGVyJywKICAgcHJvbmFtZSA9 PiAncmFuZ2VfY21wJywgcHJvcmV0dHlwZSA9PiAnaW50NCcsCiAgIHByb2FyZ3R5cGVzID0+ ICdhbnlyYW5nZSBhbnlyYW5nZScsIHByb3NyYyA9PiAncmFuZ2VfY21wJyB9LApAQCAtMTA4 NTcsNiArMTA4NjAsOSBAQAogeyBvaWQgPT4gJzQyNzEnLAogICBwcm9uYW1lID0+ICdtdWx0 aXJhbmdlX21pbnVzJywgcHJvcmV0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsCiAgIHByb2Fy Z3R5cGVzID0+ICdhbnltdWx0aXJhbmdlIGFueW11bHRpcmFuZ2UnLCBwcm9zcmMgPT4gJ211 bHRpcmFuZ2VfbWludXMnIH0sCit7IG9pZCA9PiAnODQwNicsCisgIHByb25hbWUgPT4gJ211 bHRpcmFuZ2Vfd2l0aG91dF9wb3J0aW9uJywgcHJvcmV0dHlwZSA9PiAnYW55YXJyYXknLAor ICBwcm9hcmd0eXBlcyA9PiAnYW55bXVsdGlyYW5nZSBhbnltdWx0aXJhbmdlJywgcHJvc3Jj ID0+ICdtdWx0aXJhbmdlX3dpdGhvdXRfcG9ydGlvbicgfSwKIHsgb2lkID0+ICc0MjcyJywK ICAgcHJvbmFtZSA9PiAnbXVsdGlyYW5nZV9pbnRlcnNlY3QnLCBwcm9yZXR0eXBlID0+ICdh bnltdWx0aXJhbmdlJywKICAgcHJvYXJndHlwZXMgPT4gJ2FueW11bHRpcmFuZ2UgYW55bXVs dGlyYW5nZScsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgg Yi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggNmI0MjBhODYxOC4uZTFi NTFhMTAxNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaApAQCAtMTY0LDUgKzE2NCw3IEBA IGV4dGVybiBSYW5nZVR5cGUgKm1ha2VfZW1wdHlfcmFuZ2UoVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlKTsKIGV4dGVybiBib29sIHJhbmdlX3NwbGl0X2ludGVybmFsKFR5cGVDYWNoZUVu dHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwKIAkJCQkJCQkJIGNvbnN0IFJh bmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCiAJCQkJCQkJCSBSYW5nZVR5cGUg KipvdXRwdXQyKTsKK2V4dGVybiB2b2lkIHJhbmdlX3dpdGhvdXRfcG9ydGlvbl9pbnRlcm5h bChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIFJhbmdlVHlwZSAqcjEsCisJCQkJCQkJCQlS YW5nZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXRzLCBpbnQgKm91dHB1dG4pOwogCiAj ZW5kaWYJCQkJCQkJLyogUkFOR0VUWVBFU19IICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL211bHRpcmFuZ2V0eXBlcy5vdXQKaW5kZXggYTBjYjg3NTQ5Mi4uMjk3YWEw Y2M4NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9tdWx0aXJhbmdl dHlwZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbXVsdGlyYW5nZXR5 cGVzLm91dApAQCAtMjIwMCw2ICsyMjAwLDEyNyBAQCBTRUxFQ1QgbnVtbXVsdGlyYW5nZShu dW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo LTIsMAogIHtbMSwyKSxbNCw1KX0KICgxIHJvdykKIAorLS0gd2l0aG91dF9wb3J0aW9uCitT RUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAtIG51bW11bHRpcmFuZ2UoKTsKKyA/Y29sdW1uPyAK Ky0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAt IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSk7CisgP2NvbHVtbj8gCistLS0tLS0tLS0t Cisge30KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkg QC0gbnVtbXVsdGlyYW5nZSgpOworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsi e1sxLDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEs MiksIG51bXJhbmdlKDMsNCkpIEAtIG51bW11bHRpcmFuZ2UoKTsKKyAgICAgP2NvbHVtbj8g ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbMyw0KX0ifQorKDEgcm93 KQorCitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBALSBudW1tdWx0aXJh bmdlKG51bXJhbmdlKDEsMikpOworID9jb2x1bW4/IAorLS0tLS0tLS0tLQorIHt9CisoMSBy b3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMiw0KSk7CisgID9jb2x1bW4/ICAgCistLS0tLS0tLS0tLS0tCisg eyJ7WzEsMil9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgzLDQpKTsKKyAgP2NvbHVtbj8gICAK Ky0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKX0ifQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikp OworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1syLDQpfSJ9CisoMSByb3cp CisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMiwzKSk7CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tCisgeyJ7WzEsMiksWzMsNCl9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDgpKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMikp OworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1syLDQpfSJ9CisoMSByb3cp CisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMCwyKSwgbnVtcmFuZ2UoMyw0KSk7CisgICAgID9jb2x1bW4/ICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzIsMyksWzQsOCl9In0KKygxIHJvdykKKwor U0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSw4KSkgQC0gbnVtbXVsdGlyYW5nZShu dW1yYW5nZSgyLDMpLCBudW1yYW5nZSg1LG51bGwpKTsKKyAgICAgP2NvbHVtbj8gICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbMyw1KX0ifQorKDEgcm93KQorCitT RUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKC0yLDApKTsKKyAgICAgP2NvbHVtbj8gICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0KKyB7IntbMSwyKSxbNCw1KX0ifQorKDEgcm93KQorCitTRUxF Q1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1t dWx0aXJhbmdlKG51bXJhbmdlKDIsNCkpOworICAgICA/Y29sdW1uPyAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsie1sxLDIpLFs0LDUpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMyw1KSk7CisgID9jb2x1bW4/ICAgCistLS0tLS0tLS0tLS0tCisg eyJ7WzEsMil9In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2Uo MSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDkpKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDMpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKDIsOSkpOworICA/Y29sdW1uPyAgIAorLS0tLS0tLS0tLS0tLQorIHsie1sx LDIpfSJ9CisoMSByb3cpCisKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiks IG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoOCw5KSk7CisgICAg ID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7WzEsMiksWzQsNSl9 In0KKygxIHJvdykKKworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVt cmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2Uo OCw5KSk7CisgICAgID9jb2x1bW4/ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgeyJ7 WzEsMiksWzQsNSl9In0KKygxIHJvdykKKwogLS0gaW50ZXJzZWN0aW9uCiBTRUxFQ1QgbnVt bXVsdGlyYW5nZSgpICogbnVtbXVsdGlyYW5nZSgpOwogID9jb2x1bW4/IApkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5cGVzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcmFuZ2V0eXBlcy5vdXQKaW5kZXggZWUwMmZmMDE2My4uMWYx NGU5NjgwMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yYW5nZXR5 cGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3JhbmdldHlwZXMub3V0 CkBAIC00ODEsNiArNDgxLDYwIEBAIHNlbGVjdCByYW5nZV9taW51cyhudW1yYW5nZSgxMC4x LDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAuMiwnKF0nKSk7CiAgZW1wdHkKICgxIHJv dykKIAorc2VsZWN0ICdlbXB0eSc6Om51bXJhbmdlIEAtIG51bXJhbmdlKDIuMCwgMy4wKTsK KyA/Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB7fQorKDEgcm93KQorCitzZWxlY3QgbnVtcmFu Z2UoMS4xLCAyLjIpIEAtICdlbXB0eSc6Om51bXJhbmdlOworICAgP2NvbHVtbj8gICAgCist LS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4yKSJ9CisoMSByb3cpCisKK3NlbGVjdCBudW1y YW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOworICAgP2NvbHVtbj8gICAg CistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4wKSJ9CisoMSByb3cpCisKK3NlbGVjdCBu dW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4yLCAzLjApOworICAgP2NvbHVtbj8g ICAgCistLS0tLS0tLS0tLS0tLS0KKyB7IlsxLjEsMi4yKSJ9CisoMSByb3cpCisKK3NlbGVj dCBudW1yYW5nZSgxLjEsIDIuMiwnW10nKSBALSBudW1yYW5nZSgyLjAsIDMuMCk7CisgICA/ Y29sdW1uPyAgICAKKy0tLS0tLS0tLS0tLS0tLQorIHsiWzEuMSwyLjApIn0KKygxIHJvdykK Kworc2VsZWN0IG51bXJhbmdlKDEuMCwgMy4wKSBALSBudW1yYW5nZSgxLjUsIDIuMCk7Cisg ICAgICAgICA/Y29sdW1uPyAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIHsiWzEuMCwxLjUpIiwiWzIuMCwzLjApIn0KKygxIHJvdykKKworc2VsZWN0IHJhbmdl X3dpdGhvdXRfcG9ydGlvbihudW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDEx MC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHsiWzEwLjEsMTIuMl0ifQorKDEgcm93KQorCitzZWxlY3QgcmFu Z2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFuZ2Uo MC4wLDEyMC4yLCcoXScpKTsKKyByYW5nZV93aXRob3V0X3BvcnRpb24gCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIHt9CisoMSByb3cpCisKK3NlbGVjdCByYW5nZV93aXRob3V0X3Bv cnRpb24obnVtcmFuZ2UoMS4wLDMuMCwnW10nKSwgbnVtcmFuZ2UoMS41LDIuMCwnKF0nKSk7 CisgICByYW5nZV93aXRob3V0X3BvcnRpb24gICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIHsiWzEuMCwxLjVdIiwiKDIuMCwzLjBdIn0KKygxIHJvdykKKwogc2VsZWN0IG51 bXJhbmdlKDQuNSwgNS41LCAnW10nKSAmJiBudW1yYW5nZSg1LjUsIDYuNSk7CiAgP2NvbHVt bj8gCiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9tdWx0 aXJhbmdldHlwZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbXVsdGlyYW5nZXR5cGVz LnNxbAppbmRleCBmZWZiNGI0ZDQyLi42NTkyNzI3OTFiIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9tdWx0aXJhbmdldHlwZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL211bHRpcmFuZ2V0eXBlcy5zcWwKQEAgLTQxNCw2ICs0MTQsMjggQEAgU0VMRUNU IG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwzKSwgbnVtcmFuZ2UoNCw1KSkgLSBudW1tdWx0 aXJhbmdlKG51bXJhbmdlKDIsOSkKIFNFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEs MiksIG51bXJhbmdlKDQsNSkpIC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSg4LDkpKTsKIFNF TEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiksIG51bXJhbmdlKDQsNSkpIC0gbnVt bXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2UoOCw5KSk7CiAKKy0tIHdpdGhv dXRfcG9ydGlvbgorU0VMRUNUIG51bW11bHRpcmFuZ2UoKSBALSBudW1tdWx0aXJhbmdlKCk7 CitTRUxFQ1QgbnVtbXVsdGlyYW5nZSgpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwy KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpKSBALSBudW1tdWx0aXJh bmdlKCk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSgz LDQpKSBALSBudW1tdWx0aXJhbmdlKCk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5n ZSgxLDIpKSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOworU0VMRUNUIG51bW11 bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDQp KTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpIEAtIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMyw0KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQp KSBALSBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMikpOworU0VMRUNUIG51bW11bHRpcmFu Z2UobnVtcmFuZ2UoMSw0KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgyLDMpKTsKK1NF TEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsNCkpIEAtIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMCw4KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDQpKSBALSBu dW1tdWx0aXJhbmdlKG51bXJhbmdlKDAsMikpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVt cmFuZ2UoMSw4KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDIpLCBudW1yYW5nZSgz LDQpKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsOCkpIEAtIG51bW11bHRp cmFuZ2UobnVtcmFuZ2UoMiwzKSwgbnVtcmFuZ2UoNSxudWxsKSk7CitTRUxFQ1QgbnVtbXVs dGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdl KG51bXJhbmdlKC0yLDApKTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMiks IG51bXJhbmdlKDQsNSkpIEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw0KSk7CitTRUxF Q1QgbnVtbXVsdGlyYW5nZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1t dWx0aXJhbmdlKG51bXJhbmdlKDMsNSkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFu Z2UoMSwyKSwgbnVtcmFuZ2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgwLDkp KTsKK1NFTEVDVCBudW1tdWx0aXJhbmdlKG51bXJhbmdlKDEsMyksIG51bXJhbmdlKDQsNSkp IEAtIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMiw5KSk7CitTRUxFQ1QgbnVtbXVsdGlyYW5n ZShudW1yYW5nZSgxLDIpLCBudW1yYW5nZSg0LDUpKSBALSBudW1tdWx0aXJhbmdlKG51bXJh bmdlKDgsOSkpOworU0VMRUNUIG51bW11bHRpcmFuZ2UobnVtcmFuZ2UoMSwyKSwgbnVtcmFu Z2UoNCw1KSkgQC0gbnVtbXVsdGlyYW5nZShudW1yYW5nZSgtMiwwKSwgbnVtcmFuZ2UoOCw5 KSk7CisKIC0tIGludGVyc2VjdGlvbgogU0VMRUNUIG51bW11bHRpcmFuZ2UoKSAqIG51bW11 bHRpcmFuZ2UoKTsKIFNFTEVDVCBudW1tdWx0aXJhbmdlKCkgKiBudW1tdWx0aXJhbmdlKG51 bXJhbmdlKDEsMikpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcmFuZ2V0 eXBlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yYW5nZXR5cGVzLnNxbAppbmRleCBj MjNiZTkyOGMzLi41NjJkNDZjNWRhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9yYW5nZXR5cGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yYW5nZXR5cGVz LnNxbApAQCAtMTA3LDYgKzEwNywxNiBAQCBzZWxlY3QgbnVtcmFuZ2UoMS4xLCAyLjIsJ1td JykgLSBudW1yYW5nZSgyLjAsIDMuMCk7CiBzZWxlY3QgcmFuZ2VfbWludXMobnVtcmFuZ2Uo MTAuMSwxMi4yLCdbXScpLCBudW1yYW5nZSgxMTAuMCwxMjAuMiwnKF0nKSk7CiBzZWxlY3Qg cmFuZ2VfbWludXMobnVtcmFuZ2UoMTAuMSwxMi4yLCdbXScpLCBudW1yYW5nZSgwLjAsMTIw LjIsJyhdJykpOwogCitzZWxlY3QgJ2VtcHR5Jzo6bnVtcmFuZ2UgQC0gbnVtcmFuZ2UoMi4w LCAzLjApOworc2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBALSAnZW1wdHknOjpudW1yYW5n ZTsKK3NlbGVjdCBudW1yYW5nZSgxLjEsIDIuMikgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOwor c2VsZWN0IG51bXJhbmdlKDEuMSwgMi4yKSBALSBudW1yYW5nZSgyLjIsIDMuMCk7CitzZWxl Y3QgbnVtcmFuZ2UoMS4xLCAyLjIsJ1tdJykgQC0gbnVtcmFuZ2UoMi4wLCAzLjApOworc2Vs ZWN0IG51bXJhbmdlKDEuMCwgMy4wKSBALSBudW1yYW5nZSgxLjUsIDIuMCk7CitzZWxlY3Qg cmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEwLjEsMTIuMiwnW10nKSwgbnVtcmFu Z2UoMTEwLjAsMTIwLjIsJyhdJykpOworc2VsZWN0IHJhbmdlX3dpdGhvdXRfcG9ydGlvbihu dW1yYW5nZSgxMC4xLDEyLjIsJ1tdJyksIG51bXJhbmdlKDAuMCwxMjAuMiwnKF0nKSk7Citz ZWxlY3QgcmFuZ2Vfd2l0aG91dF9wb3J0aW9uKG51bXJhbmdlKDEuMCwzLjAsJ1tdJyksIG51 bXJhbmdlKDEuNSwyLjAsJyhdJykpOworCiBzZWxlY3QgbnVtcmFuZ2UoNC41LCA1LjUsICdb XScpICYmIG51bXJhbmdlKDUuNSwgNi41KTsKIHNlbGVjdCBudW1yYW5nZSgxLjAsIDIuMCkg PDwgbnVtcmFuZ2UoMy4wLCA0LjApOwogc2VsZWN0IG51bXJhbmdlKDEuMCwgMy4wLCdbXScp IDw8IG51bXJhbmdlKDMuMCwgNC4wLCdbXScpOwotLSAKMi40Mi4wCgo= --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v20-0006-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSAwMGFhZDhmMjVlNGQyYTU4ODRkMjM5MzI2MDY4Zjg2NTQ3OTAyYjRlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYyMCA2LzhdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICB8ICAxOSArLQogZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDcwICsrKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUu c2dtbCAgICAgICAgICAgICAgICAgIHwgIDg4ICsrKysKIGRvYy9zcmMvc2dtbC90cmlnZ2Vy LnNnbWwgICAgICAgICAgICAgICAgICAgICB8ICA2MCArKy0KIHNyYy9iYWNrZW5kL2FjY2Vz cy9naXN0L2dpc3R2YWxpZGF0ZS5jICAgICAgICB8ICAzOSArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3RyaWdnZXIuYyAgICAgICAgICAgICAgICB8ICA0OSArKwogc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgICB8IDE5OSArKysrKysrLQogc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsKIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCArLQog c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsK IHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgMjAz ICsrKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAg ICAgfCAgNTYgKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAg ICAgICAgfCAgMTAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyAgICAg ICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAg ICAgICAgICB8ICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAg ICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMgICAg ICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVy LmMgICAgICAgICAgfCAgNDAgKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxl ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2Qu YyAgICAgICAgICAgICAgICB8ICA1NiArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jICAgICAgICAgICB8ICA3NCArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L2xzeXNjYWNoZS5jICAgICAgICAgICB8ICA1MyArKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9z dHJhdG51bS5oICAgICAgICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19hbW9wLmRhdCAgICAgICAgICAgICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfYW1vcC5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21t YW5kcy90cmlnZ2VyLmggICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDI2ICsKIHNyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICA0NiArLQogc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgMjYgKwogc3JjL2luY2x1 ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5j bHVkZS9wYXJzZXIvYW5hbHl6ZS5oICAgICAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9p bmNsdWRlL3BhcnNlci9rd2xpc3QuaCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3Jj L2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggICAgICAgICAgICAgICAgIHwgICAyICsKIHNy Yy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oICAgICAgICAgICAgICAgICAgICB8ICAxOSArCiBz cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA0NTAgKysr KysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5pdHku b3V0ICAgICAgfCAgIDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdl cy5vdXQgICAgICB8ICAxOCArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJs ZV92aWV3cy5vdXQgfCAgMzIgKysKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zl cmxhcHMub3V0ICAgICB8IDE0NCArKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxf c2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9y X3BvcnRpb25fb2Yuc3FsICAgICAgIHwgMzQ5ICsrKysrKysrKysrKysrCiBzcmMvdGVzdC9y ZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbCAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVz dC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgOTMgKysrLQogNTIg ZmlsZXMgY2hhbmdlZCwgMjI3OCBpbnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCA2MThhMDVhYzg5Li40NjE3MGMwNzQ5IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv Y2F0YWxvZ3Muc2dtbApAQCAtNzU3LDEyICs3NTcsMTQgQEAKICAgIFRoZSBjYXRhbG9nIDxz dHJ1Y3RuYW1lPnBnX2Ftb3A8L3N0cnVjdG5hbWU+IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91 dAogICAgb3BlcmF0b3JzIGFzc29jaWF0ZWQgd2l0aCBhY2Nlc3MgbWV0aG9kIG9wZXJhdG9y IGZhbWlsaWVzLiAgVGhlcmUgaXMgb25lCiAgICByb3cgZm9yIGVhY2ggb3BlcmF0b3IgdGhh dCBpcyBhIG1lbWJlciBvZiBhbiBvcGVyYXRvciBmYW1pbHkuICBBIGZhbWlseQotICAgbWVt YmVyIGNhbiBiZSBlaXRoZXIgYSA8Zmlyc3R0ZXJtPnNlYXJjaDwvZmlyc3R0ZXJtPiBvcGVy YXRvciBvciBhbgotICAgPGZpcnN0dGVybT5vcmRlcmluZzwvZmlyc3R0ZXJtPiBvcGVyYXRv ci4gIEFuIG9wZXJhdG9yCi0gICBjYW4gYXBwZWFyIGluIG1vcmUgdGhhbiBvbmUgZmFtaWx5 LCBidXQgY2Fubm90IGFwcGVhciBpbiBtb3JlIHRoYW4gb25lCi0gICBzZWFyY2ggcG9zaXRp b24gbm9yIG1vcmUgdGhhbiBvbmUgb3JkZXJpbmcgcG9zaXRpb24gd2l0aGluIGEgZmFtaWx5 LgotICAgKEl0IGlzIGFsbG93ZWQsIHRob3VnaCB1bmxpa2VseSwgZm9yIGFuIG9wZXJhdG9y IHRvIGJlIHVzZWQgZm9yIGJvdGgKLSAgIHNlYXJjaCBhbmQgb3JkZXJpbmcgcHVycG9zZXMu KQorICAgbWVtYmVyIGNhbiBiZSBlaXRoZXIgYSA8Zmlyc3R0ZXJtPnNlYXJjaDwvZmlyc3R0 ZXJtPiBvcGVyYXRvciwgYW4KKyAgIDxmaXJzdHRlcm0+b3JkZXJpbmc8L2ZpcnN0dGVybT4g b3BlcmF0b3IsIG9yIGEKKyAgIDxmaXJzdHRlcm0+cG9ydGlvbjwvZmlyc3R0ZXJtPiBvcGVy YXRvci4gQQorICAgPGZpcnN0dGVybT5wb3J0aW9uPC9maXJzdHRlcm0+IG9wZXJhdG9yIGlz IHVzZWQgZm9yIGNvbXB1dGluZworICAgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVy YWw+IHJlc3VsdHMuIEFuIG9wZXJhdG9yIGNhbiBhcHBlYXIgaW4gbW9yZQorICAgdGhhbiBv bmUgZmFtaWx5LCBidXQgY2Fubm90IGFwcGVhciBpbiBtb3JlIHRoYW4gb25lIHNlYXJjaCwg b3JkZXJpbmcsIG9yCisgICBwb3J0aW9uIHBvc2l0aW9uIHdpdGhpbiBhIGZhbWlseS4gKEl0 IGlzIGFsbG93ZWQsIHRob3VnaCB1bmxpa2VseSwgZm9yIGFuCisgICBvcGVyYXRvciB0byBi ZSB1c2VkIGZvciBtb3JlIHRoYW4gb25lIHB1cnBvc2UuKQogICA8L3BhcmE+CiAKICAgPHRh YmxlPgpAQCAtODMzLDggKzgzNSw5IEBACiAgICAgICAgPHN0cnVjdGZpZWxkPmFtb3BwdXJw b3NlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAg ICAgIDxwYXJhPgotICAgICAgIE9wZXJhdG9yIHB1cnBvc2UsIGVpdGhlciA8bGl0ZXJhbD5z PC9saXRlcmFsPiBmb3Igc2VhcmNoIG9yCi0gICAgICAgPGxpdGVyYWw+bzwvbGl0ZXJhbD4g Zm9yIG9yZGVyaW5nCisgICAgICAgT3BlcmF0b3IgcHVycG9zZSwgZWl0aGVyIDxsaXRlcmFs PnM8L2xpdGVyYWw+IGZvciBzZWFyY2gsCisgICAgICAgPGxpdGVyYWw+bzwvbGl0ZXJhbD4g Zm9yIG9yZGVyaW5nLAorICAgICAgIG9yIDxsaXRlcmFsPnA8L2xpdGVyYWw+IGZvciBwb3J0 aW9uCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBh L2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0 ZS5zZ21sCmluZGV4IDFiODFiNGU3ZDcuLjM4OWRlNWJjMDYgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUu c2dtbApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5v cHNpcz4KIFsgV0lUSCBbIFJFQ1VSU0lWRSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj53aXRoX3F1ZXJ5PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiBERUxFVEUgRlJPTSBb IE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVw bGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5hbGlhczwvcmVwbGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JUSU9OIE9GIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFi bGU+IEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3Jl cGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8 L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdCiAgICAgWyBXSEVSRSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uZGl0aW9uPC9yZXBsYWNlYWJsZT4g fCBXSEVSRSBDVVJSRU5UIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jdXJz b3JfbmFtZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIFJFVFVSTklORyAqIHwgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4g WyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm91dHB1dF9uYW1lPC9y ZXBsYWNlYWJsZT4gXSBbLCAuLi5dIF0KQEAgLTU0LDYgKzU1LDQwIEBAIERFTEVURSBGUk9N IFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9y ZXBsYWNlYWJsZT4gWyAqCiAgICBjaXJjdW1zdGFuY2VzLgogICA8L3BhcmE+CiAKKyAgPHBh cmE+CisgICBJZiB0aGUgdGFibGUgaGFzIGEgcmFuZ2UgY29sdW1uIG9yCisgICA8bGluayBs aW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj48bGl0ZXJhbD5QRVJJ T0Q8L2xpdGVyYWw+PC9saW5rPiwKKyAgIHlvdSBtYXkgc3VwcGx5IGEgPGxpdGVyYWw+Rk9S IFBPUlRJT04gT0Y8L2xpdGVyYWw+IGNsYXVzZSwgYW5kIHlvdXIgZGVsZXRlIHdpbGwKKyAg IG9ubHkgYWZmZWN0IHJvd3MgdGhhdCBvdmVybGFwIHRoZSBnaXZlbiBpbnRlcnZhbC4gRnVy dGhlcm1vcmUsIGlmIGEgcm93J3Mgc3BhbgorICAgZXh0ZW5kcyBvdXRzaWRlIHRoZSA8bGl0 ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYm91bmRzLCB0aGVuIHlvdXIgZGVsZXRl CisgICB3aWxsIG9ubHkgY2hhbmdlIHRoZSBzcGFuIHdpdGhpbiB0aG9zZSBib3VuZHMuIElu IGVmZmVjdCB5b3UgYXJlIGRlbGV0aW5nIGFueQorICAgbW9tZW50IHRhcmdldGVkIGJ5IDxs aXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBhbmQgbm8gbW9tZW50cyBvdXRzaWRl LgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBTcGVjaWZpY2FsbHksIGFmdGVyIDxwcm9k dWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gZGVsZXRlcyB0aGUgZXhpc3Rpbmcg cm93LAorICAgaXQgd2lsbCA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICBuZXcgcm93 cyB3aG9zZSByYW5nZSBvciBzdGFydC9lbmQgY29sdW1uKHMpIHJlY2VpdmUgdGhlIHJlbWFp bmluZyBzcGFuIG91dHNpZGUKKyAgIHRoZSB0YXJnZXRlZCBib3VuZHMsIGNvbnRhaW5pbmcg dGhlIG9yaWdpbmFsIHZhbHVlcyBpbiBvdGhlciBjb2x1bW5zLgorICAgVGhlcmUgd2lsbCBi ZSB6ZXJvIHRvIHR3byBpbnNlcnRlZCByZWNvcmRzLAorICAgZGVwZW5kaW5nIG9uIHdoZXRo ZXIgdGhlIG9yaWdpbmFsIHNwYW4gZXh0ZW5kZWQgYmVmb3JlIHRoZSB0YXJnZXRlZAorICAg PGxpdGVyYWw+RlJPTTwvbGl0ZXJhbD4sIGFmdGVyIHRoZSB0YXJnZXRlZCA8bGl0ZXJhbD5U TzwvbGl0ZXJhbD4sIGJvdGgsIG9yIG5laXRoZXIuCisgIDwvcGFyYT4KKworICA8cGFyYT4K KyAgIFRoZXNlIHNlY29uZGFyeSBpbnNlcnRzIGZpcmUgPGxpdGVyYWw+SU5TRVJUPC9saXRl cmFsPiB0cmlnZ2Vycy4gRmlyc3QKKyAgIDxsaXRlcmFsPkJFRk9SRSBERUxFVEU8L2xpdGVy YWw+IHRyaWdnZXJzIGZpcnN0LCB0aGVuCisgICA8bGl0ZXJhbD5CRUZPUkUgSU5TRVJUPC9s aXRlcmFsPiwgdGhlbiA8bGl0ZXJhbD5BRlRFUiBJTlNFUlQ8L2xpdGVyYWw+LAorICAgdGhl biA8bGl0ZXJhbD5BRlRFUiBERUxFVEU8L2xpdGVyYWw+LgorICA8L3BhcmE+CisKKyAgPHBh cmE+CisgICBUaGVzZSBzZWNvbmRhcnkgaW5zZXJ0cyBkbyBub3QgcmVxdWlyZSA8bGl0ZXJh bD5JTlNFUlQ8L2xpdGVyYWw+IHByaXZpbGVnZSBvbiB0aGUgdGFibGUuCisgICBUaGlzIGlz IGJlY2F1c2UgY29uY2VwdHVhbGx5IG5vIG5ldyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBhZGRl ZC4gVGhlIGluc2VydGVkIHJvd3Mgb25seSBwcmVzZXJ2ZQorICAgZXhpc3RpbmcgZGF0YSBh Ym91dCB0aGUgdW50YXJnZXRlZCB0aW1lIHBlcmlvZC4gTm90ZSB0aGlzIG1heSByZXN1bHQg aW4gdXNlcnMgZmlyaW5nIDxsaXRlcmFsPklOU0VSVDwvbGl0ZXJhbD4KKyAgIHRyaWdnZXJz IHdobyBkb24ndCBoYXZlIGluc2VydCBwcml2aWxlZ2VzLCBzbyBiZSBjYXJlZnVsIGFib3V0 IDxsaXRlcmFsPlNFQ1VSSVRZIERFRklORVI8L2xpdGVyYWw+IHRyaWdnZXIgZnVuY3Rpb25z IQorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwgPGxpdGVyYWw+UkVU VVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2VzIDxjb21tYW5kPkRFTEVURTwvY29tbWFu ZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJv dyBhY3R1YWxseSBkZWxldGVkLgpAQCAtMTE2LDYgKzE1MSw0MSBAQCBERUxFVEUgRlJPTSBb IE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVw bGFjZWFibGU+IFsgKgogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8 bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBwZXJp b2QgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgPC9w YXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxp c3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Rh cnRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBUaGUgZWFybGllc3QgdGltZSAoaW5jbHVzaXZlKSB0byBjaGFuZ2UgaW4g YSB0ZW1wb3JhbCBkZWxldGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2YWx1ZSBtYXRjaGlu ZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJvbQorICAgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBs YWNlYWJsZT4uIEEKKyAgICAgIDxsaXRlcmFsPk5VTEw8L2xpdGVyYWw+IGhlcmUgaW5kaWNh dGVzIGEgZGVsZXRlIHdob3NlIGJlZ2lubmluZyBpcworICAgICAgdW5ib3VuZGVkIChhcyB3 aXRoIHJhbmdlIHR5cGVzKS4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGxhdGVzdCB0aW1lIChl eGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgIFRoaXMg bXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9y IHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFu Z2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gQQorICAgICAgPGxpdGVyYWw+TlVM TDwvbGl0ZXJhbD4gaGVyZSBpbmRpY2F0ZXMgYSBkZWxldGUgd2hvc2UgZW5kIGlzIHVuYm91 bmRlZAorICAgICAgKGFzIHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5Pgog ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3Jl cGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL3VwZGF0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbApp bmRleCAyYWIyNGIwNTIzLi5jNTFhZWYyMTc1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL3VwZGF0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwKQEAg LTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8c3lub3BzaXM+CiBb IFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+d2l0 aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogVVBEQVRFIFsgT05MWSBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAq IF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFsaWFzPC9yZXBs YWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZvcl9wb3J0aW9uX29mX3RhcmdldDwvcmVwbGFjZWFi bGU+IF0KICAgICBTRVQgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiA9IHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQgfSB8CiAgICAgICAgICAgKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi5dICkgPSBbIFJPVyBdICggeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVMVCB9IFssIC4uLl0gKSB8CiAg ICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zdWItU0VMRUNUPC9yZXBsYWNlYWJsZT4gKQpAQCAtNTEsNiArNTIsNDIgQEAgVVBE QVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gWyAqIF0gWwogICAgY2lyY3Vtc3RhbmNlcy4KICAgPC9wYXJhPgog CisgIDxwYXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIHJhbmdlIGNvbHVtbiBvcgorICAg PGxpbmsgbGlua2VuZD0iZGRsLXBlcmlvZHMtYXBwbGljYXRpb24tcGVyaW9kcyI+PGxpdGVy YWw+UEVSSU9EPC9saXRlcmFsPjwvbGluaz4sCisgICB5b3UgbWF5IHN1cHBseSBhIDxsaXRl cmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIHVwZGF0ZSB3 aWxsCisgICBvbmx5IGFmZmVjdCByb3dzIHRoYXQgb3ZlcmxhcCB0aGUgZ2l2ZW4gaW50ZXJ2 YWwuIEZ1cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4KKyAgIGV4dGVuZHMgb3V0c2lkZSB0 aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcywgdGhlbiB5b3Vy IHVwZGF0ZQorICAgd2lsbCBvbmx5IGNoYW5nZSB0aGUgc3BhbiB3aXRoaW4gdGhvc2UgYm91 bmRzLiBJbiBlZmZlY3QgeW91IGFyZSB1cGRhdGluZyBhbnkKKyAgIG1vbWVudCB0YXJnZXRl ZCBieSA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gYW5kIG5vIG1vbWVudHMg b3V0c2lkZS4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgU3BlY2lmaWNhbGx5LCB3aGVu IDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4gdXBkYXRlcyB0aGUgZXhp c3Rpbmcgcm93LAorICAgaXQgd2lsbCBhbHNvIGNoYW5nZSB0aGUgcmFuZ2Ugb3Igc3RhcnQv ZW5kIGNvbHVtbihzKSBzbyB0aGF0IHRoZWlyIGludGVydmFsCisgICBubyBsb25nZXIgZXh0 ZW5kcyBiZXlvbmQgdGhlIHRhcmdldGVkIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRl cmFsPiBib3VuZHMuCisgICBUaGVuIDxwcm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0 bmFtZT4gd2lsbCA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+CisgICBuZXcgcm93cyB3aG9z ZSByYW5nZSBvciBzdGFydC9lbmQgY29sdW1uKHMpIHJlY2VpdmUgdGhlIHJlbWFpbmluZyBz cGFuIG91dHNpZGUKKyAgIHRoZSB0YXJnZXRlZCBib3VuZHMsIGNvbnRhaW5pbmcgdGhlIHVu LXVwZGF0ZWQgdmFsdWVzIGluIG90aGVyIGNvbHVtbnMuCisgICBUaGVyZSB3aWxsIGJlIHpl cm8gdG8gdHdvIGluc2VydGVkIHJlY29yZHMsCisgICBkZXBlbmRpbmcgb24gd2hldGhlciB0 aGUgb3JpZ2luYWwgc3BhbiBleHRlbmRlZCBiZWZvcmUgdGhlIHRhcmdldGVkCisgICA8bGl0 ZXJhbD5GUk9NPC9saXRlcmFsPiwgYWZ0ZXIgdGhlIHRhcmdldGVkIDxsaXRlcmFsPlRPPC9s aXRlcmFsPiwgYm90aCwgb3IgbmVpdGhlci4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAg VGhlc2Ugc2Vjb25kYXJ5IGluc2VydHMgZmlyZSA8bGl0ZXJhbD5JTlNFUlQ8L2xpdGVyYWw+ IHRyaWdnZXJzLiBGaXJzdAorICAgPGxpdGVyYWw+QkVGT1JFIFVQREFURTwvbGl0ZXJhbD4g dHJpZ2dlcnMgZmlyc3QsIHRoZW4KKyAgIDxsaXRlcmFsPkJFRk9SRSBJTlNFUlQ8L2xpdGVy YWw+LCB0aGVuIDxsaXRlcmFsPkFGVEVSIElOU0VSVDwvbGl0ZXJhbD4sCisgICB0aGVuIDxs aXRlcmFsPkFGVEVSIFVQREFURTwvbGl0ZXJhbD4uCisgIDwvcGFyYT4KKworICA8cGFyYT4K KyAgIFRoZXNlIHNlY29uZGFyeSBpbnNlcnRzIGRvIG5vdCByZXF1aXJlIDxsaXRlcmFsPklO U0VSVDwvbGl0ZXJhbD4gcHJpdmlsZWdlIG9uIHRoZSB0YWJsZS4KKyAgIFRoaXMgaXMgYmVj YXVzZSBjb25jZXB0dWFsbHkgbm8gbmV3IGluZm9ybWF0aW9uIGhhcyBiZWVuIGFkZGVkLiBU aGUgaW5zZXJ0ZWQgcm93cyBvbmx5IHByZXNlcnZlCisgICBleGlzdGluZyBkYXRhIGFib3V0 IHRoZSB1bnRhcmdldGVkIHRpbWUgcGVyaW9kLiBOb3RlIHRoaXMgbWF5IHJlc3VsdCBpbiB1 c2VycyBmaXJpbmcgPGxpdGVyYWw+SU5TRVJUPC9saXRlcmFsPgorICAgdHJpZ2dlcnMgd2hv IGRvbid0IGhhdmUgaW5zZXJ0IHByaXZpbGVnZXMsIHNvIGJlIGNhcmVmdWwgYWJvdXQgPGxp dGVyYWw+U0VDVVJJVFkgREVGSU5FUjwvbGl0ZXJhbD4gdHJpZ2dlciBmdW5jdGlvbnMhCisg IDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5SRVRVUk5J Tkc8L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21tYW5kPgog ICAgdG8gY29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2ggcm93IGFj dHVhbGx5IHVwZGF0ZWQuCkBAIC0xMTQsNiArMTUxLDU3IEBAIFVQREFURSBbIE9OTFkgXSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdIFsKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRv IHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgIDwvcGFyYT4K KyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50 cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmZvcl9wb3J0 aW9uX29mX3RhcmdldDwvcmVwbGFjZWFibGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAg ICAgPHBhcmE+CisgICAgICBUaGUgaW50ZXJ2YWwgdG8gdXBkYXRlLiBJZiB5b3UgYXJlIHRh cmdldGluZyBhIHJhbmdlIGNvbHVtbiBvciA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+LAor ICAgICAgeW91IG1heSBnaXZlIHRoaXMgaW4gdGhlIGZvcm0gPGxpdGVyYWw+RlJPTTwvbGl0 ZXJhbD4KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1l PC9yZXBsYWNlYWJsZT4gPGxpdGVyYWw+VE88L2xpdGVyYWw+CisgICAgICA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPi4KKyAgICAgIE90 aGVyd2lzZSB5b3UgbXVzdCB1c2UKKyAgICAgIDxsaXRlcmFsPig8L2xpdGVyYWw+PHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPjxsaXRl cmFsPik8L2xpdGVyYWw+CisgICAgICB3aGVyZSB0aGUgZXhwcmVzc2lvbiB5aWVsZHMgYSB2 YWx1ZSBmb3IgdGhlIHNhbWUgdHlwZSBhcworICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4uCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0 YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGlu IGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hp bmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVw bGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5OVUxMPC9saXRlcmFsPiBoZXJlIGluZGlj YXRlcyBhbiB1cGRhdGUgd2hvc2UgYmVnaW5uaW5nIGlzCisgICAgICB1bmJvdW5kZWQgKGFz IHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAg IDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0ZXN0IHRpbWUg KGV4Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhp cyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ug b3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y YW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBBCisgICAgICA8bGl0ZXJhbD5O VUxMPC9saXRlcmFsPiBoZXJlIGluZGljYXRlcyBhbiB1cGRhdGUgd2hvc2UgZW5kIGlzIHVu Ym91bmRlZAorICAgICAgKGFzIHdpdGggcmFuZ2UgdHlwZXMpLgorICAgICA8L3BhcmE+Cisg ICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5 PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmlu ZGV4IGE1MzkwZmY2NDQuLjUzOGExZTA3OGQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90 cmlnZ2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNTM1LDE3 ICs1MzUsMTggQEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1saXN0aW5n PgogdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAgICAgICAg IHR5cGU7Ci0gICAgVHJpZ2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxhdGlvbiAg ICAgICAgIHRnX3JlbGF0aW9uOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJpZ3R1cGxl OwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dlciAgICAg ICAgICp0Z190cmlnZ2VyOwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Nsb3Q7Ci0g ICAgVHVwbGVUYWJsZVNsb3QgICp0Z19uZXdzbG90OwotICAgIFR1cGxlc3RvcmVzdGF0ZSAq dGdfb2xkdGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKLSAgICBj b25zdCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworICAgIE5vZGVUYWcgICAgICAgICAg ICB0eXBlOworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19ldmVudDsKKyAgICBSZWxhdGlv biAgICAgICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxlICAgICAgICAgIHRnX3Ry aWd0dXBsZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVwbGU7CisgICAgVHJp Z2dlciAgICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRn X3RyaWdzbG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90OworICAgIFR1 cGxlc3RvcmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3RhdGUgICAq dGdfbmV3dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRjb2xzOwor ICAgIEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiA8 L3Byb2dyYW1saXN0aW5nPgogCkBAIC04MTMsNiArODE0LDQzIEBAIHR5cGVkZWYgc3RydWN0 IFRyaWdnZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zh cmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHN0cnVj dGZpZWxkPnRnX3RlbXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8bGlzdGl0 ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBEQVRFPC9s aXRlcmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisgICAgICAg IHRoYXQgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3RoZXJ3aXNl IDxzeW1ib2w+TlVMTDwvc3ltYm9sPi4KKyAgICAgICAgQ29udGFpbnMgYSBwb2ludGVyIHRv IGEgc3RydWN0dXJlIG9mIHR5cGUKKyAgICAgICAgPHN0cnVjdG5hbWU+Rm9yUG9ydGlvbk9m U3RhdGU8L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGluCisgICAgICAgIDxmaWxlbmFtZT5ub2Rl cy9leGVjbm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVm IHN0cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5vZGVUYWcgdHlwZTsKKworICAg IGNoYXIgICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1l ZCBpbiBGT1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFuZ2VUeXBlOyAgICAg ICAvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworICAg IGJvb2wgICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVS SU9EIG5vdCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7IC8q IHRoZSBQRVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZEVu ZE5hbWU7ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1bSAgIGZw X3RhcmdldFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8K K30gRm9yUG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICAgd2hl cmUgPHN0cnVjdGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBwZXJp b2Qgb3IgcmFuZ2UKKyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFsPkZPUiBQ T1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3Jh bmdlVHlwZTwvc3RydWN0ZmllbGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAgIDxzdHJ1 Y3RmaWVsZD5mcF9oYXNQZXJpb2Q8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hldGhlciBh IHBlcmlvZCB3YXMgdXNlZAorICAgICAgIG9yIGEgcmFuZ2UgY29sdW1uLCA8c3RydWN0Zmll bGQ+ZnBfcGVyaW9kU3RhcnROYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVj dGZpZWxkPmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVjdGZpZWxkPiBhcmUgdGhlIG5hbWVzIG9m IHRoZSBwZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAob3IgPHN5bWJv bD5OVUxMPC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdhcyB1c2VkKSwKKyAgICAgICBh bmQgPHN0cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3RmaWVsZD4gaXMgYSByYW5n ZXR5cGUgdmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcgdGhlIDxsaXRlcmFs PkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9wYXJhPgorICAg ICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxp c3Q+CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naXN0 L2dpc3R2YWxpZGF0ZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRl LmMKaW5kZXggYWJmY2RlNmNiYS4uMWYwNWIwOTE0ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2dpc3QvZ2lzdHZhbGlkYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2dpc3QvZ2lzdHZhbGlkYXRlLmMKQEAgLTE5OSw3ICsxOTksNyBAQCBnaXN0dmFsaWRhdGUo T2lkIG9wY2xhc3NvaWQpCiAJCX0KIAogCQkvKiBHaVNUIHN1cHBvcnRzIE9SREVSIEJZIG9w ZXJhdG9ycyAqLwotCQlpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgIT0gQU1PUF9TRUFSQ0gp CisJCWlmIChvcHJmb3JtLT5hbW9wcHVycG9zZSA9PSBBTU9QX09SREVSKQogCQl7CiAJCQkv KiAuLi4gYnV0IG11c3QgaGF2ZSBtYXRjaGluZyBkaXN0YW5jZSBwcm9jICovCiAJCQlpZiAo IU9pZElzVmFsaWQoZ2V0X29wZmFtaWx5X3Byb2Mob3BmYW1pbHlvaWQsCkBAIC0yMjYsMjQg KzIyNiw0MyBAQCBnaXN0dmFsaWRhdGUoT2lkIG9wY2xhc3NvaWQpCiAJCQkJcmVzdWx0ID0g ZmFsc2U7CiAJCQl9CiAJCX0KLQkJZWxzZQorCQllbHNlIGlmIChvcHJmb3JtLT5hbW9wcHVy cG9zZSA9PSBBTU9QX1NFQVJDSCkKIAkJewogCQkJLyogU2VhcmNoIG9wZXJhdG9ycyBtdXN0 IGFsd2F5cyByZXR1cm4gYm9vbCAqLwogCQkJb3BfcmV0dHlwZSA9IEJPT0xPSUQ7CiAJCX0K LQotCQkvKiBDaGVjayBvcGVyYXRvciBzaWduYXR1cmUgKi8KLQkJaWYgKCFjaGVja19hbW9w X3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBvcF9yZXR0eXBlLAotCQkJCQkJCQkgIG9w cmZvcm0tPmFtb3BsZWZ0dHlwZSwKLQkJCQkJCQkJICBvcHJmb3JtLT5hbW9wcmlnaHR0eXBl KSkKKwkJZWxzZSBpZiAob3ByZm9ybS0+YW1vcHB1cnBvc2UgPT0gQU1PUF9QT1JUSU9OKQog CQl7CisJCQkvKiBObyByZXN0cmljdGlvbnMgb24gUE9SVElPTiAqLworCQkJb3BfcmV0dHlw ZSA9IEludmFsaWRPaWQ7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBOb3RoaW5nIGVsc2Ug aXQgY291bGQgYmUgKi8KIAkJCWVyZXBvcnQoSU5GTywKIAkJCQkJKGVycmNvZGUoRVJSQ09E RV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKLQkJCQkJIGVycm1zZygib3BlcmF0b3Ig ZmFtaWx5IFwiJXNcIiBvZiBhY2Nlc3MgbWV0aG9kICVzIGNvbnRhaW5zIG9wZXJhdG9yICVz IHdpdGggd3Jvbmcgc2lnbmF0dXJlIiwKLQkJCQkJCQlvcGZhbWlseW5hbWUsICJnaXN0IiwK LQkJCQkJCQlmb3JtYXRfb3BlcmF0b3Iob3ByZm9ybS0+YW1vcG9wcikpKSk7CisJCQkJCSBl cnJtc2coIm9wZXJhdG9yIGZhbWlseSBcIiVzXCIgb2YgYWNjZXNzIG1ldGhvZCAlcyBjb250 YWlucyB1bmtub3duIHB1cnBvc2UgJWMgZm9yIG9wZXJhdG9yICVzIiwKKwkJCQkJCSBvcGZh bWlseW5hbWUsICJnaXN0Iiwgb3ByZm9ybS0+YW1vcHB1cnBvc2UsCisJCQkJCQkgZm9ybWF0 X29wZXJhdG9yKG9wcmZvcm0tPmFtb3BvcHIpKSkpOworCQkJb3BfcmV0dHlwZSA9IEludmFs aWRPaWQ7CiAJCQlyZXN1bHQgPSBmYWxzZTsKIAkJfQorCisJCS8qIENoZWNrIG9wZXJhdG9y IHNpZ25hdHVyZSAqLworCQlpZiAoT2lkSXNWYWxpZChvcF9yZXR0eXBlKSkKKwkJeworCQkJ aWYgKCFjaGVja19hbW9wX3NpZ25hdHVyZShvcHJmb3JtLT5hbW9wb3ByLCBvcF9yZXR0eXBl LAorCQkJCQkJCQkJICBvcHJmb3JtLT5hbW9wbGVmdHR5cGUsCisJCQkJCQkJCQkgIG9wcmZv cm0tPmFtb3ByaWdodHR5cGUpKQorCQkJeworCQkJCWVyZXBvcnQoSU5GTywKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJCQkgZXJy bXNnKCJvcGVyYXRvciBmYW1pbHkgXCIlc1wiIG9mIGFjY2VzcyBtZXRob2QgJXMgY29udGFp bnMgb3BlcmF0b3IgJXMgd2l0aCB3cm9uZyBzaWduYXR1cmUiLAorCQkJCQkJCQlvcGZhbWls eW5hbWUsICJnaXN0IiwKKwkJCQkJCQkJZm9ybWF0X29wZXJhdG9yKG9wcmZvcm0tPmFtb3Bv cHIpKSkpOworCQkJCXJlc3VsdCA9IGZhbHNlOworCQkJfQorCQl9CiAJfQogCiAJLyogTm93 IGNoZWNrIGZvciBpbmNvbnNpc3RlbnQgZ3JvdXBzIG9mIG9wZXJhdG9ycy9mdW5jdGlvbnMg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNDMyMGM2ZjE1ZS4uYjU0ZTBl NzQwNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTEyMzU1LDYgKzEyMzU1 LDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQl0 cmlnZGF0YS50Z190cmlndHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKHNsb3QsIGZh bHNlLCBOVUxMKTsKIAkJdHJpZ2RhdGEudGdfdHJpZ3Nsb3QgPSBzbG90OwogCQl0cmlnZGF0 YS50Z190cmlnZ2VyID0gJnRyaWc7CisJCXRyaWdkYXRhLnRnX3RlbXBvcmFsID0gTlVMTDsK IAogCQlmY2luZm8tPmNvbnRleHQgPSAoTm9kZSAqKSAmdHJpZ2RhdGE7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3RyaWdnZXIuYwppbmRleCBhMTBhNDJiOTdmLi4wNjljMjJiMzhlIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdHJpZ2dlci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAidXRpbHMvYWNs LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ieXRl YS5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9p ZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9p bnZhbC5oIgpAQCAtMjYzOCw2ICsyNjM5LDcgQEAgRXhlY0JTRGVsZXRlVHJpZ2dlcnMoRVN0 YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJTG9jVHJpZ2dlckRhdGEu dGdfZXZlbnQgPSBUUklHR0VSX0VWRU5UX0RFTEVURSB8CiAJCVRSSUdHRVJfRVZFTlRfQkVG T1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRp b25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9y UG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkr KykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2MtPnRyaWdnZXJzW2ld OwpAQCAtMjczNyw2ICsyNzM5LDcgQEAgRXhlY0JSRGVsZXRlVHJpZ2dlcnMoRVN0YXRlICpl c3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlU UklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJl bGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9 IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2Mt Pm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJbmV3dHVwbGU7CkBAIC0yODI4 LDYgKzI4MzEsNyBAQCBFeGVjSVJEZWxldGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVz dWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VS X0VWRU5UX0lOU1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZv LT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxp bmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZSh0cmln dHVwbGUsIHNsb3QsIGZhbHNlKTsKIApAQCAtMjg5MSw2ICsyODk1LDcgQEAgRXhlY0JTVXBk YXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJ CVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0g cmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUxvY1RyaWdnZXJEYXRhLnRnX3VwZGF0ZWRj b2xzID0gdXBkYXRlZENvbHM7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxp bmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10 cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dlciA9ICZ0cmlnZGVzYy0+ dHJpZ2dlcnNbaV07CkBAIC0zMDA4LDYgKzMwMTMsNyBAQCBFeGVjQlJVcGRhdGVUcmlnZ2Vy cyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQlUUklHR0VSX0VWRU5U X1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3Jl bGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRn X3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCXVwZGF0ZWRDb2xzID0g RXhlY0dldEFsbFVwZGF0ZWRDb2xzKHJlbGluZm8sIGVzdGF0ZSk7CiAJTG9jVHJpZ2dlckRh dGEudGdfdXBkYXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKIAlmb3IgKGkgPSAwOyBpIDwgdHJp Z2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCkBAIC0zMTU3LDYgKzMxNjMsNyBAQCBFeGVjSVJV cGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywK IAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0lOU1RFQUQ7CiAJTG9j VHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJ TG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7 CiAKIAlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZSh0cmlndHVwbGUsIG9sZHNsb3QsIGZhbHNl KTsKIApAQCAtMzYyMyw2ICszNjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWZ0ZXJUcmlnZ2Vy U2hhcmVkRGF0YQogCU9pZAkJCWF0c190Z29pZDsJCS8qIHRoZSB0cmlnZ2VyJ3MgSUQgKi8K IAlPaWQJCQlhdHNfcmVsaWQ7CQkvKiB0aGUgcmVsYXRpb24gaXQncyBvbiAqLwogCUNvbW1h bmRJZAlhdHNfZmlyaW5nX2lkOwkvKiBJRCBmb3IgZmlyaW5nIGN5Y2xlICovCisJRm9yUG9y dGlvbk9mU3RhdGUgKmZvcl9wb3J0aW9uX29mOwkvKiB0aGUgRk9SIFBPUlRJT04gT0YgY2xh dXNlICovCiAJc3RydWN0IEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEgKmF0c190YWJsZTsJLyog dHJhbnNpdGlvbiB0YWJsZSBhY2Nlc3MgKi8KIAlCaXRtYXBzZXQgICphdHNfbW9kaWZpZWRj b2xzOwkvKiBtb2RpZmllZCBjb2x1bW5zICovCiB9IEFmdGVyVHJpZ2dlclNoYXJlZERhdGE7 CkBAIC0zODk2LDYgKzM5MDQsNyBAQCBzdGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENv bnN0cmFpbnRTdGF0ZUNyZWF0ZShpbnQgbnVtYWxsb2MpOwogc3RhdGljIFNldENvbnN0cmFp bnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDb3B5KFNldENvbnN0cmFpbnRTdGF0ZSBvcmln c3RhdGUpOwogc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVB ZGRJdGVtKFNldENvbnN0cmFpbnRTdGF0ZSBzdGF0ZSwKIAkJCQkJCQkJCQkJCQlPaWQgdGdv aWQsIGJvb2wgdGdpc2RlZmVycmVkKTsKK3N0YXRpYyBGb3JQb3J0aW9uT2ZTdGF0ZSAqQ29w eUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMpOwogc3RhdGljIHZv aWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJlbGlkLCBDbWRUeXBlIGNtZFR5 cGUsIGludCB0Z2V2ZW50KTsKIAogCkBAIC00MTA1LDYgKzQxMTQsNyBAQCBhZnRlclRyaWdn ZXJBZGRFdmVudChBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywKIAkJCW5ld3NoYXJl ZC0+YXRzX3JlbGlkID09IGV2dHNoYXJlZC0+YXRzX3JlbGlkICYmCiAJCQluZXdzaGFyZWQt PmF0c19ldmVudCA9PSBldnRzaGFyZWQtPmF0c19ldmVudCAmJgogCQkJbmV3c2hhcmVkLT5h dHNfdGFibGUgPT0gZXZ0c2hhcmVkLT5hdHNfdGFibGUgJiYKKwkJCW5ld3NoYXJlZC0+Zm9y X3BvcnRpb25fb2YgPT0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiAmJgogCQkJbmV3c2hh cmVkLT5hdHNfZmlyaW5nX2lkID09IDApCiAJCQlicmVhazsKIAl9CkBAIC00NDY5LDYgKzQ0 NzksNyBAQCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRlLAogCUxvY1RyaWdn ZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsOwogCWlmIChUUklHR0VSX0ZPUl9VUERBVEUoTG9j VHJpZ2dlckRhdGEudGdfdHJpZ2dlci0+dGd0eXBlKSkKIAkJTG9jVHJpZ2dlckRhdGEudGdf dXBkYXRlZGNvbHMgPSBldnRzaGFyZWQtPmF0c19tb2RpZmllZGNvbHM7CisJTG9jVHJpZ2dl ckRhdGEudGdfdGVtcG9yYWwgPSBldnRzaGFyZWQtPmZvcl9wb3J0aW9uX29mOwogCiAJTWVt b3J5Q29udGV4dFJlc2V0KHBlcl90dXBsZV9jb250ZXh0KTsKIApAQCAtNjAwNSw2ICs2MDE2 LDQzIEBAIEFmdGVyVHJpZ2dlclBlbmRpbmdPblJlbChPaWQgcmVsaWQpCiAJcmV0dXJuIGZh bHNlOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZTdGF0ZSgpCisgKgor ICogQ29waWVzIGEgRm9yUG9ydGlvbk9mU3RhdGUgaW50byB0aGUgY3VycmVudCBtZW1vcnkg Y29udGV4dC4KKyAqLworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICoKK0NvcHlGb3JQb3J0 aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKQoreworCUZvclBvcnRpb25PZlN0 YXRlICpkc3QgPSBOVUxMOworCWlmIChzcmMpIHsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7 CisJCVJhbmdlVHlwZSAqcjsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCisJCS8q CisJCSAqIE5lZWQgdG8gbGlmdCB0aGUgRk9SIFBPUlRJT04gT0YgZGV0YWlscyBpbnRvIGEg aGlnaGVyIG1lbW9yeSBjb250ZXh0CisJCSAqIGJlY2F1c2UgY2FzY2FkaW5nIGZvcmVpZ24g a2V5IHVwZGF0ZS9kZWxldGVzIGNhbiBjYXVzZSB0cmlnZ2VycyB0byBmaXJlCisJCSAqIHRy aWdnZXJzLCBhbmQgdGhlIEFmdGVyVHJpZ2dlckV2ZW50cyB3aWxsIG91dGxpdmUgdGhlIEZQ TworCQkgKiBkZXRhaWxzIG9mIHRoZSBvcmlnaW5hbCBxdWVyeS4KKwkJICovCisJCW9sZGN0 eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNvbnRleHQpOworCQlk c3QgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCWRzdC0+ZnBfcmFuZ2VOYW1l ID0gcHN0cmR1cChzcmMtPmZwX3JhbmdlTmFtZSk7CisJCWRzdC0+ZnBfcmFuZ2VUeXBlID0g c3JjLT5mcF9yYW5nZVR5cGU7CisJCWRzdC0+ZnBfaGFzUGVyaW9kID0gc3JjLT5mcF9oYXNQ ZXJpb2Q7CisJCWRzdC0+ZnBfcmFuZ2VBdHRubyA9IHNyYy0+ZnBfcmFuZ2VBdHRubzsKKwkJ ZHN0LT5mcF9wZXJpb2RTdGFydEF0dG5vID0gc3JjLT5mcF9wZXJpb2RTdGFydEF0dG5vOwor CQlkc3QtPmZwX3BlcmlvZEVuZEF0dG5vID0gc3JjLT5mcF9wZXJpb2RFbmRBdHRubzsKKwor CQlyID0gRGF0dW1HZXRSYW5nZVR5cGVQKHNyYy0+ZnBfdGFyZ2V0UmFuZ2UpOworCQl0eXBj YWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChyKSwgVFlQRUNBQ0hF X1JBTkdFX0lORk8pOworCQlkc3QtPmZwX3RhcmdldFJhbmdlID0gZGF0dW1Db3B5KHNyYy0+ ZnBfdGFyZ2V0UmFuZ2UsIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2FjaGUtPnR5cGxlbik7 CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKwlyZXR1cm4gZHN0Owor fQorCiAvKiAtLS0tLS0tLS0tCiAgKiBBZnRlclRyaWdnZXJTYXZlRXZlbnQoKQogICoKQEAg LTY0MjAsNiArNjQ2OCw3IEBAIEFmdGVyVHJpZ2dlclNhdmVFdmVudChFU3RhdGUgKmVzdGF0 ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJZWxzZQogCQkJbmV3X3NoYXJlZC5hdHNf dGFibGUgPSBOVUxMOwogCQluZXdfc2hhcmVkLmF0c19tb2RpZmllZGNvbHMgPSBhZnRlclRy aWdnZXJDb3B5Qml0bWFwKG1vZGlmaWVkQ29scyk7CisJCW5ld19zaGFyZWQuZm9yX3BvcnRp b25fb2YgPSBDb3B5Rm9yUG9ydGlvbk9mU3RhdGUocmVsaW5mby0+cmlfZm9yUG9ydGlvbk9m KTsKIAogCQlhZnRlclRyaWdnZXJBZGRFdmVudCgmYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9zdGFj a1thZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoXS5ldmVudHMsCiAJCQkJCQkJICZuZXdfZXZl bnQsICZuZXdfc2hhcmVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDRjNWE3 YmJmNjIuLjY5MDk2Y2JlZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtMTI3 NCw2ICsxMjc0LDcgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0 UmVsSW5mbywKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJuaW5nID0gTlVMTDsK IAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4ZXMgPSBOSUw7CiAJ cmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJcmVzdWx0UmVsSW5mby0+ cmlfZm9yUG9ydGlvbk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9SZXR1cm5pbmdT bG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xvdCA9IE5VTEw7CiAJ cmVzdWx0UmVsSW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCBlZTdlNjY2MTcxLi5iZjU2M2JiZThkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNTgsOSArNTgs MTIgQEAKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKKyNpbmNsdWRl ICJ1dGlscy9hcnJheS5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1 ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2lu Y2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTE0MSw2ICsxNDQsMTAgQEAgc3RhdGljIGJv b2wgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAog CQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKmV4Y2x1ZGVkU2xvdCwKIAkJCQkJCQkJIGJvb2wg Y2FuU2V0VGFnLAogCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKipyZXR1cm5pbmcpOworc3Rh dGljIHZvaWQgRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNvbnRleHQg KmNvbnRleHQsCisJCQkJCQkJCQkgIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJICBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJICBJdGVtUG9pbnRlciB0dXBs ZWlkKTsKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAqRXhlY1ByZXBhcmVUdXBsZVJvdXRpbmco TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJCQkJCQkJCQkJICAgRVN0YXRlICplc3Rh dGUsCiAJCQkJCQkJCQkJCSAgIFBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRlLApAQCAt MTIwNSw2ICsxMjEyLDExNSBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29u dGV4dCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgkJc2V0X2xl ZnRvdmVyX3R1cGxlX2JvdW5kcworICoKKyAqCQlTYXZlcyB0aGUgbmV3IGJvdW5kcyBpbnRv IHRoZSByYW5nZSBhdHRyaWJ1dGUKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIHZvaWQg c2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBs ZSwKKwkJCQkJCQkJCSAgRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJ CQkJICBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsCisJCQkJCQkJCQkgIERhdHVtIGxlZnRv dmVyKQoreworCS8qIFN0b3JlIHRoZSByYW5nZSBkaXJlY3RseSAqLworCisJbGVmdG92ZXJU dXBsZS0+dHRzX3ZhbHVlc1tmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFd ID0gbGVmdG92ZXI7CisJbGVmdG92ZXJUdXBsZS0+dHRzX2lzbnVsbFtmb3JQb3J0aW9uT2Yt PnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gZmFsc2U7Cit9CisKKy8qIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqCQlFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzCisgKgorICoJCUluc2VydCB0dXBsZXMg Zm9yIHRoZSB1bnRvdWNoZWQgdGltZXN0YW1wIG9mIGEgcm93IGluIGEgRk9SCisgKgkJUE9S VElPTiBPRiBVUERBVEUvREVMRVRFCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lk CitFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwKKwkJCQkJCSAgRVN0YXRlICplc3RhdGUsCisJCQkJCQkgIFJlc3VsdFJlbEluZm8gKnJl c3VsdFJlbEluZm8sCisJCQkJCQkgIEl0ZW1Qb2ludGVyIHR1cGxlaWQpCit7CisJTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSA9IGNvbnRleHQtPm10c3RhdGU7CisJTW9kaWZ5VGFibGUg Km5vZGUgPSAoTW9kaWZ5VGFibGUgKikgbXRzdGF0ZS0+cHMucGxhbjsKKwlGb3JQb3J0aW9u T2ZFeHByICpmb3JQb3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlLT5mb3JQ b3J0aW9uT2Y7CisJRGF0dW0Jb2xkUmFuZ2U7CisJRGF0dW0JYWxsTGVmdG92ZXJzOworCURh dHVtCSpsZWZ0b3ZlcnM7CisJaW50CQlubGVmdG92ZXJzOworCWJvb2wgaXNOdWxsID0gZmFs c2U7CisJVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlOworCUZvclBvcnRpb25PZlN0YXRlICpm cG9TdGF0ZSA9IHJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZjsKKwlUdXBsZVRhYmxl U2xvdCAqb2xkdHVwbGVTbG90ID0gZnBvU3RhdGUtPmZwX0V4aXN0aW5nOworCVR1cGxlVGFi bGVTbG90ICpsZWZ0b3ZlclR1cGxlID0gZnBvU3RhdGUtPmZwX0xlZnRvdmVyOworCisJLyoK KwkgKiBHZXQgdGhlIHJhbmdlIG9mIHRoZSBvbGQgcHJlLVVQREFURS9ERUxFVEUgdHVwbGUs CisJICogc28gd2UgY2FuIGludGVyc2VjdCBpdCB3aXRoIHRoZSBGT1IgUE9SVElPTiBPRiB0 YXJnZXQKKwkgKiBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgImxlZnRvdmVycyIgdG8gaW5z ZXJ0LgorCSAqCisJICogV2UgaGF2ZSBhbHJlYWR5IGxvY2tlZCB0aGUgdHVwbGUgaW4gRXhl Y1VwZGF0ZS9FeGVjRGVsZXRlCisJICogKFRPRE86IGlmIGl0IHdhcyAqbm90KiBjb25jdXJy ZW50bHkgdXBkYXRlZCwgZG9lcyB0YWJsZV90dXBsZV91cGRhdGUgbG9jayB0aGUgdHVwbGUg aXRzZWxmPworCSAqIEkgZG9uJ3QgZm91bmQgdGhlIGNvZGUgZm9yIHRoYXQgeWV0LCBhbmQg bWF5YmUgaXQgZGVwZW5kcyBvbiB0aGUgQU0/KQorCSAqIGFuZCBpdCBoYXMgcGFzc2VkIEV2 YWxQbGFuUXVhbC4KKwkgKiBNYWtlIHN1cmUgd2UncmUgbG9va2luZyBhdCB0aGUgbW9zdCBy ZWNlbnQgdmVyc2lvbi4KKwkgKiBPdGhlcndpc2UgY29uY3VycmVudCB1cGRhdGVzIG9mIHRo ZSBzYW1lIHR1cGxlIGluIFJFQUQgQ09NTUlUVEVECisJICogY291bGQgaW5zZXJ0IGNvbmZs aWN0aW5nICJsZWZ0b3ZlcnMiLgorCSAqLworCWlmICghdGFibGVfdHVwbGVfZmV0Y2hfcm93 X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLCB0dXBsZWlkLCBTbmFw c2hvdEFueSwgb2xkdHVwbGVTbG90KSkKKwkJZWxvZyhFUlJPUiwgImZhaWxlZCB0byBmZXRj aCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0YiKTsKKworCW9sZFJhbmdlID0gc2xvdF9nZXRh dHRyKG9sZHR1cGxlU2xvdCwgZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8sICZp c051bGwpOworCisJaWYgKGlzTnVsbCkKKwkJZWxvZyhFUlJPUiwgImZvdW5kIGEgTlVMTCBy YW5nZSBpbiBhIHRlbXBvcmFsIHRhYmxlIik7CisKKwkvKgorCSAqIEdldCB0aGUgcmFuZ2Un cyB0eXBlIGNhY2hlIGVudHJ5LiBUaGlzIGlzIHdvcnRoIGNhY2hpbmcgZm9yIHRoZSB3aG9s ZSBVUERBVEUKKwkgKiBhcyByYW5nZSBmdW5jdGlvbnMgZG8uCisJICovCisKKwl0eXBjYWNo ZSA9IGZwb1N0YXRlLT5mcF9sZWZ0b3ZlcnN0eXBjYWNoZTsKKwlpZiAodHlwY2FjaGUgPT0g TlVMTCkKKwl7CisJCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoZm9yUG9ydGlvbk9m LT5yYW5nZVR5cGUsIDApOworCQlmcG9TdGF0ZS0+ZnBfbGVmdG92ZXJzdHlwY2FjaGUgPSB0 eXBjYWNoZTsKKwl9CisKKwkvKiBHZXQgdGhlIHJhbmdlcyB0byB0aGUgbGVmdC9yaWdodCBv ZiB0aGUgdGFyZ2V0ZWQgcmFuZ2UuICovCisKKwlhbGxMZWZ0b3ZlcnMgPSBPaWRGdW5jdGlv bkNhbGwyQ29sbChmb3JQb3J0aW9uT2YtPndpdGhvdXRQb3J0aW9uUHJvYywKKwkJCQkJCQkJ CQlJbnZhbGlkT2lkLCBvbGRSYW5nZSwgZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlKTsKKwor CWRlY29uc3RydWN0X2FycmF5KERhdHVtR2V0QXJyYXlUeXBlUChhbGxMZWZ0b3ZlcnMpLCB0 eXBjYWNoZS0+dHlwZV9pZCwgdHlwY2FjaGUtPnR5cGxlbiwKKwkJCQkJICB0eXBjYWNoZS0+ dHlwYnl2YWwsIHR5cGNhY2hlLT50eXBhbGlnbiwgJmxlZnRvdmVycywgTlVMTCwgJm5sZWZ0 b3ZlcnMpOworCisJaWYgKG5sZWZ0b3ZlcnMgPiAwKQorCXsKKwkJYm9vbCBzaG91bGRGcmVl OworCQlIZWFwVHVwbGUgb2xkdHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1 cGxlU2xvdCwgZmFsc2UsICZzaG91bGRGcmVlKTsKKwkJaW50IGk7CisJCS8vIFR1cGxlRGVz YyB0dXBEZXNjID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9hdHQ7CisK KwkJZm9yIChpID0gMDsgaSA8IG5sZWZ0b3ZlcnM7IGkrKykKKwkJeworCQkJLy8gVE9ETzog b2theSB0byBrZWVwIHJlLXVzaW5nIHRoZSBzYW1lIGxlZnRvdmVyVHVwbGUgVFRTIGV2ZXJ5 IGl0ZXJhdGlvbj86CisJCQkvLyBsZWZ0b3ZlclR1cGxlID0gRXhlY0luaXRFeHRyYVR1cGxl U2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVzYywgJlRUU09wc1ZpcnR1YWwpOworCQkJ RXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyVHVwbGUsIGZhbHNl KTsKKworCQkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlLCBmb3JQ b3J0aW9uT2YsIHR5cGNhY2hlLCBsZWZ0b3ZlcnNbaV0pOworCQkJRXhlY01hdGVyaWFsaXpl U2xvdChsZWZ0b3ZlclR1cGxlKTsKKworCQkJLy8gVE9ETzogTmVlZCB0byBzYXZlIGNvbnRl eHQtPm10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21tZW50IG9uIEV4 ZWNJbnNlcnQpCisJCQlFeGVjSW5zZXJ0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8sIGxlZnRv dmVyVHVwbGUsIG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJCX0KKworCQlpZiAo c2hvdWxkRnJlZSkKKwkJCWhlYXBfZnJlZXR1cGxlKG9sZHR1cGxlKTsKKwl9Cit9CisKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjQmF0Y2hJbnNlcnQKICAqCkBAIC0xMzU3LDcgKzE0NzMs OCBAQCBFeGVjRGVsZXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKICAqCiAgKiBDbG9zaW5nIHN0ZXBzIG9mIHR1cGxl IGRlbGV0aW9uOyB0aGlzIGludm9rZXMgQUZURVIgRk9SIEVBQ0ggUk9XIHRyaWdnZXJzLAog ICogaW5jbHVkaW5nIHRoZSBVUERBVEUgdHJpZ2dlcnMgaWYgdGhlIGRlbGV0aW9uIGlzIGJl aW5nIGRvbmUgYXMgcGFydCBvZiBhCi0gKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4K KyAqIGNyb3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLiBJdCBhbHNvIGluc2VydHMgbGVmdG92 ZXJzIGZyb20gYSBGT1IgUE9SVElPTiBPRgorICogZGVsZXRlLgogICovCiBzdGF0aWMgdm9p ZAogRXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKQEAgLTEzOTAsNiArMTUwNywxMSBAQCBFeGVj RGVsZXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvLAogCQlhcl9kZWxldGVfdHJpZ190Y3MgPSBOVUxMOwogCX0K IAorCS8qIENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9E TzogU2tpcCB0aGlzIGZvciBGRFcgZGVsZXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBj b250ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9y dGlvbk9mTGVmdG92ZXJzKGNvbnRleHQsIGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVp ZCk7CisKIAkvKiBBRlRFUiBST1cgREVMRVRFIFRyaWdnZXJzICovCiAJRXhlY0FSRGVsZXRl VHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKIAkJ CQkJCSBhcl9kZWxldGVfdHJpZ190Y3MsIGNoYW5naW5nUGFydCk7CkBAIC0yMTM5LDYgKzIy NjEsMTEgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCQkJCQkJCQkJCQkgICBOVUxMLCBOSUws CiAJCQkJCQkJCQkJCSAgICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFy aXppbmcpKTsKIAorCS8qIENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICov CisJLy8gVE9ETzogU2tpcCB0aGlzIGZvciBGRFcgdXBkYXRlcz8KKwlpZiAoKChNb2RpZnlU YWJsZSAqKSBjb250ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlF eGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKGNvbnRleHQsIGNvbnRleHQtPmVzdGF0ZSwgcmVz dWx0UmVsSW5mbywgdHVwbGVpZCk7CisKIAkvKiBBRlRFUiBST1cgVVBEQVRFIFRyaWdnZXJz ICovCiAJRXhlY0FSVXBkYXRlVHJpZ2dlcnMoY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJ bmZvLAogCQkJCQkJIE5VTEwsIE5VTEwsCkBAIC0zNjMwLDYgKzM3NTcsNyBAQCBFeGVjTW9k aWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqIFJlc2V0IHBlci10dXBsZSBtZW1v cnkgY29udGV4dCB1c2VkIGZvciBwcm9jZXNzaW5nIG9uIGNvbmZsaWN0IGFuZAogCQkgKiBy ZXR1cm5pbmcgY2xhdXNlcywgdG8gZnJlZSBhbnkgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHN0 b3JhZ2UKIAkJICogYWxsb2NhdGVkIGluIHRoZSBwcmV2aW91cyBjeWNsZS4KKwkJICogVE9E TzogSXQgc291bmRzIGxpa2UgRk9SIFBPUlRJT04gT0YgbWlnaHQgbmVlZCB0byBkbyBzb21l dGhpbmcgaGVyZSB0b28/CiAJCSAqLwogCQlpZiAocHN0YXRlLT5wc19FeHByQ29udGV4dCkK IAkJCVJlc2V0RXhwckNvbnRleHQocHN0YXRlLT5wc19FeHByQ29udGV4dCk7CkBAIC00MzAz LDYgKzQ0MzEsNzUgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIG5l ZWRlZCwgaW5pdGlhbGl6ZSB0aGUgdGFyZ2V0IHJhbmdlIGZvciBGT1IgUE9SVElPTiBPRi4K KwkgKi8KKwlpZiAobm9kZS0+Zm9yUG9ydGlvbk9mKQorCXsKKwkJVHVwbGVEZXNjIHR1cERl c2M7CisJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwkJRGF0dW0JdGFyZ2V0 UmFuZ2U7CisJCWJvb2wJaXNOdWxsOworCQlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJCUV4 cHJTdGF0ZSAqZXhwclN0YXRlOworCQlGb3JQb3J0aW9uT2ZTdGF0ZSAqZnBvU3RhdGU7CisK KwkJcmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm87CisJCXR1cERlc2Mg PSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MtPnJkX2F0dDsKKwkJZm9yUG9ydGlv bk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZS0+Zm9yUG9ydGlvbk9mOworCisJCS8q IEV2YWwgdGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdldCAqLworCQlpZiAobXRzdGF0ZS0+cHMu cHNfRXhwckNvbnRleHQgPT0gTlVMTCkKKwkJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3Rh dGUsICZtdHN0YXRlLT5wcyk7CisJCWVjb250ZXh0ID0gbXRzdGF0ZS0+cHMucHNfRXhwckNv bnRleHQ7CisKKwkJZXhwclN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChFeHByICopIGZvclBv cnRpb25PZi0+dGFyZ2V0UmFuZ2UsIGVzdGF0ZSk7CisJCXRhcmdldFJhbmdlID0gRXhlY0V2 YWxFeHByKGV4cHJTdGF0ZSwgZWNvbnRleHQsICZpc051bGwpOworCQlpZiAoaXNOdWxsKQor CQkJZWxvZyhFUlJPUiwgIkdvdCBhIE5VTEwgRk9SIFBPUlRJT04gT0YgdGFyZ2V0IHJhbmdl Iik7CisKKwkJLyogQ3JlYXRlIHN0YXRlIGZvciBGT1IgUE9SVElPTiBPRiBvcGVyYXRpb24g Ki8KKworCQlmcG9TdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZnBv U3RhdGUtPmZwX3JhbmdlTmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZTsKKwkJZnBv U3RhdGUtPmZwX3JhbmdlVHlwZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VUeXBlOworCQlmcG9T dGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5v OworCQlmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UgPSB0YXJnZXRSYW5nZTsKKworCQkvKiBJ bml0aWFsaXplIHNsb3QgZm9yIHRoZSBleGlzdGluZyB0dXBsZSAqLworCisJCWZwb1N0YXRl LT5mcF9FeGlzdGluZyA9CisJCQl0YWJsZV9zbG90X2NyZWF0ZShyZXN1bHRSZWxJbmZvLT5y aV9SZWxhdGlvbkRlc2MsCisJCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3RhdGUtPmVzX3R1cGxl VGFibGUpOworCisJCS8qIENyZWF0ZSB0aGUgdHVwbGUgc2xvdCBmb3IgSU5TRVJUaW5nIHRo ZSBsZWZ0b3ZlcnMgKi8KKworCQlmcG9TdGF0ZS0+ZnBfTGVmdG92ZXIgPQorCQkJRXhlY0lu aXRFeHRyYVR1cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVzYywgJlRUU09wc1Zp cnR1YWwpOworCisJCS8qCisJCSAqIFdlIG11c3QgYXR0YWNoIHRoZSBGb3JQb3J0aW9uT2ZT dGF0ZSB0byBhbGwgcmVzdWx0IHJlbHMsCisJCSAqIGluIGNhc2Ugb2YgYSBjcm9zcy1wYXJ0 aXRpb24gdXBkYXRlIG9yIHRyaWdnZXJzIGZpcmluZworCQkgKiBvbiBwYXJ0aXRpb25zLgor CQkgKgorCQkgKiBUaGV5IHNob3VsZCBhbGwgaGF2ZSB0aGUgc2FtZSB0dXBsZWRlc2MsIHNv IGl0J3Mgb2theQorCQkgKiB0aGF0IGFueSBvbmUgb2YgdGhlbSBjYW4gdXNlIHRoZSB0dXBs ZSB0YWJsZSBzbG90cyB0aGVyZS4KKwkJICogVE9ETzogVGhpcyBpcyB3cm9uZyBpZiBhIGNv bHVtbiB3YXMgZHJvcHBlZCB0aGVuIGFkZGVkIGFnYWluIQorCQkgKiBXZSBzaG91bGQgdXNl IGV4ZWN1dGVfYXR0cl9tYXBfc2xvdCB0byB1c2UgdGhlIGNvcnJlY3QgYXR0bnVtcy4KKwkJ ICovCisJCWZvciAoaSA9IDA7IGkgPCBucmVsczsgaSsrKQorCQl7CisJCQlyZXN1bHRSZWxJ bmZvID0gJm10c3RhdGUtPnJlc3VsdFJlbEluZm9baV07CisJCQlyZXN1bHRSZWxJbmZvLT5y aV9mb3JQb3J0aW9uT2YgPSBmcG9TdGF0ZTsKKwkJfQorCisJCS8qIE1ha2Ugc3VyZSB0aGUg cm9vdCByZWxhdGlvbiBoYXMgdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSB0b28uICovCisJ CWlmIChub2RlLT5yb290UmVsYXRpb24gPiAwKQorCQkJbXRzdGF0ZS0+cm9vdFJlc3VsdFJl bEluZm8tPnJpX2ZvclBvcnRpb25PZiA9IGZwb1N0YXRlOworCisJCS8qIERvbid0IGZyZWUg dGhlIEV4cHJDb250ZXh0IGhlcmUgYmVjYXVzZSB0aGUgcmVzdWx0IG11c3QgbGFzdCBmb3Ig dGhlIHdob2xlIHF1ZXJ5ICovCisJfQorCiAJLyoKIAkgKiBJZiB3ZSBoYXZlIGFueSBzZWNv bmRhcnkgcmVsYXRpb25zIGluIGFuIFVQREFURSBvciBERUxFVEUsIHRoZXkgbmVlZCB0bwog CSAqIGJlIHRyZWF0ZWQgbGlrZSBub24tbG9ja2VkIHJlbGF0aW9ucyBpbiBTRUxFQ1QgRk9S IFVQREFURSwgaS5lLiwgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9ub2Rl RnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4IGMwM2Y0ZjIz ZTIuLjYyY2NiZjlkM2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5j cy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0yNDQyLDYgKzI0 NDIsMTQgQEAgZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJ CXJldHVybiB0cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZF eHByOgorCQkJeworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQ b3J0aW9uT2ZFeHByICopIG5vZGU7CisKKwkJCQlpZiAoV0FMSyhmb3JQb3J0aW9uT2YtPnRh cmdldFJhbmdlKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJY2Fz ZSBUX1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJewogCQkJCVBhcnRpdGlvblBydW5lU3Rl cE9wICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVwT3AgKikgbm9kZTsKQEAgLTI1ODIs NiArMjU5MCw4IEBAIHF1ZXJ5X3RyZWVfd2Fsa2VyX2ltcGwoUXVlcnkgKnF1ZXJ5LAogCQly ZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+bWVyZ2VBY3Rpb25MaXN0KSkKIAkJcmV0 dXJuIHRydWU7CisJaWYgKFdBTEsocXVlcnktPmZvclBvcnRpb25PZikpCisJCXJldHVybiB0 cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0KSkKIAkJcmV0dXJuIHRydWU7 CiAJaWYgKFdBTEsocXVlcnktPmpvaW50cmVlKSkKQEAgLTM0MjUsNiArMzQzNSwxOSBAQCBl eHByZXNzaW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJcmV0dXJuIChO b2RlICopIG5ld25vZGU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX0ZvclBvcnRpb25P ZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAqZnBvID0gKEZvclBvcnRpb25P ZkV4cHIgKikgbm9kZTsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpuZXdub2RlOworCisJCQkJ RkxBVENPUFkobmV3bm9kZSwgZnBvLCBGb3JQb3J0aW9uT2ZFeHByKTsKKwkJCQlNVVRBVEUo bmV3bm9kZS0+cmFuZ2VWYXIsIGZwby0+cmFuZ2VWYXIsIFZhciAqKTsKKwkJCQlNVVRBVEUo bmV3bm9kZS0+dGFyZ2V0UmFuZ2UsIGZwby0+dGFyZ2V0UmFuZ2UsIE5vZGUgKik7CisJCQkJ TVVUQVRFKG5ld25vZGUtPnJhbmdlU2V0LCBmcG8tPnJhbmdlU2V0LCBMaXN0ICopOworCisJ CQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKIAkJY2FzZSBU X1BhcnRpdGlvblBydW5lU3RlcE9wOgogCQkJewogCQkJCVBhcnRpdGlvblBydW5lU3RlcE9w ICpvcHN0ZXAgPSAoUGFydGl0aW9uUHJ1bmVTdGVwT3AgKikgbm9kZTsKQEAgLTM2MDMsNiAr MzYyNiw3IEBAIHF1ZXJ5X3RyZWVfbXV0YXRvcl9pbXBsKFF1ZXJ5ICpxdWVyeSwKIAlNVVRB VEUocXVlcnktPndpdGhDaGVja09wdGlvbnMsIHF1ZXJ5LT53aXRoQ2hlY2tPcHRpb25zLCBM aXN0ICopOwogCU1VVEFURShxdWVyeS0+b25Db25mbGljdCwgcXVlcnktPm9uQ29uZmxpY3Qs IE9uQ29uZmxpY3RFeHByICopOwogCU1VVEFURShxdWVyeS0+bWVyZ2VBY3Rpb25MaXN0LCBx dWVyeS0+bWVyZ2VBY3Rpb25MaXN0LCBMaXN0ICopOworCU1VVEFURShxdWVyeS0+Zm9yUG9y dGlvbk9mLCBxdWVyeS0+Zm9yUG9ydGlvbk9mLCBGb3JQb3J0aW9uT2ZFeHByICopOwogCU1V VEFURShxdWVyeS0+cmV0dXJuaW5nTGlzdCwgcXVlcnktPnJldHVybmluZ0xpc3QsIExpc3Qg Kik7CiAJTVVUQVRFKHF1ZXJ5LT5qb2ludHJlZSwgcXVlcnktPmpvaW50cmVlLCBGcm9tRXhw ciAqKTsKIAlNVVRBVEUocXVlcnktPnNldE9wZXJhdGlvbnMsIHF1ZXJ5LT5zZXRPcGVyYXRp b25zLCBOb2RlICopOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v Y3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j CmluZGV4IDM0Y2E2ZDRhYzIuLjk1NGViNGRhODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTMxMSw3ICszMTEsOCBAQCBzdGF0aWMgTW9kaWZ5 VGFibGUgKm1ha2VfbW9kaWZ5dGFibGUoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnN1YnBs YW4sCiAJCQkJCQkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJCQkJCQkgTGlz dCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCQkJ CQkJIExpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdCwKLQkJCQkJ CQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pOworCQkJCQkJCQkJ IExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25P ZiwKKwkJCQkJCQkJCSBpbnQgZXBxUGFyYW0pOwogc3RhdGljIEdhdGhlck1lcmdlICpjcmVh dGVfZ2F0aGVyX21lcmdlX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCSBH YXRoZXJNZXJnZVBhdGggKmJlc3RfcGF0aCk7CiAKQEAgLTI4MzUsNiArMjgzNiw3IEBAIGNy ZWF0ZV9tb2RpZnl0YWJsZV9wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNb2RpZnlUYWJsZVBh dGggKmJlc3RfcGF0aCkKIAkJCQkJCQliZXN0X3BhdGgtPnJvd01hcmtzLAogCQkJCQkJCWJl c3RfcGF0aC0+b25jb25mbGljdCwKIAkJCQkJCQliZXN0X3BhdGgtPm1lcmdlQWN0aW9uTGlz dHMsCisJCQkJCQkJYmVzdF9wYXRoLT5mb3JQb3J0aW9uT2YsCiAJCQkJCQkJYmVzdF9wYXRo LT5lcHFQYXJhbSk7CiAKIAljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZwbGFuLT5wbGFuLCAm YmVzdF9wYXRoLT5wYXRoKTsKQEAgLTcwMDUsNyArNzAwNyw4IEBAIG1ha2VfbW9kaWZ5dGFi bGUoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJCQkJIExpc3QgKnVwZGF0 ZUNvbG5vc0xpc3RzLAogCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAq cmV0dXJuaW5nTGlzdHMsCiAJCQkJIExpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAq b25jb25mbGljdCwKLQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBhcmFt KQorCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQ b3J0aW9uT2YsCisJCQkJIGludCBlcHFQYXJhbSkKIHsKIAlNb2RpZnlUYWJsZSAqbm9kZSA9 IG1ha2VOb2RlKE1vZGlmeVRhYmxlKTsKIAlMaXN0CSAgICpmZHdfcHJpdmF0ZV9saXN0OwpA QCAtNzA3MSw2ICs3MDc0LDcgQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9v dCwgUGxhbiAqc3VicGxhbiwKIAkJbm9kZS0+ZXhjbFJlbFRsaXN0ID0gb25jb25mbGljdC0+ ZXhjbFJlbFRsaXN0OwogCX0KIAlub2RlLT51cGRhdGVDb2xub3NMaXN0cyA9IHVwZGF0ZUNv bG5vc0xpc3RzOworCW5vZGUtPmZvclBvcnRpb25PZiA9IChOb2RlICopIGZvclBvcnRpb25P ZjsKIAlub2RlLT53aXRoQ2hlY2tPcHRpb25MaXN0cyA9IHdpdGhDaGVja09wdGlvbkxpc3Rz OwogCW5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJuaW5nTGlzdHM7CiAJbm9kZS0+cm93 TWFya3MgPSByb3dNYXJrczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpp bmRleCA2ZjQ1ZWZkZTIxLi5jNGI3MDNhNWEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jCkBAIC0xOTYzLDYgKzE5NjMsNyBAQCBncm91cGluZ19wbGFubmVyKFBs YW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCQkJCQkJCQkJcm93 TWFya3MsCiAJCQkJCQkJCQkJcGFyc2UtPm9uQ29uZmxpY3QsCiAJCQkJCQkJCQkJbWVyZ2VB Y3Rpb25MaXN0cywKKwkJCQkJCQkJCQlwYXJzZS0+Zm9yUG9ydGlvbk9mLAogCQkJCQkJCQkJ CWFzc2lnbl9zcGVjaWFsX2V4ZWNfcGFyYW0ocm9vdCkpOwogCQl9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmluZGV4IDBiMWQxN2I5ZDMuLjBlMDQ0OTA3OTYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtMzY4Niw3ICsz Njg2LDggQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJl bE9wdEluZm8gKnJlbCwKIAkJCQkJCUxpc3QgKnVwZGF0ZUNvbG5vc0xpc3RzLAogCQkJCQkJ TGlzdCAqd2l0aENoZWNrT3B0aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJ CQkJTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCQkJ TGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBhcmFtKQorCQkJCQkJTGlzdCAqbWVy Z2VBY3Rpb25MaXN0cywgRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJ aW50IGVwcVBhcmFtKQogewogCU1vZGlmeVRhYmxlUGF0aCAqcGF0aG5vZGUgPSBtYWtlTm9k ZShNb2RpZnlUYWJsZVBhdGgpOwogCkBAIC0zNzUyLDYgKzM3NTMsNyBAQCBjcmVhdGVfbW9k aWZ5dGFibGVfcGF0aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCXBh dGhub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJldHVybmluZ0xpc3RzOwogCXBhdGhub2RlLT5y b3dNYXJrcyA9IHJvd01hcmtzOwogCXBhdGhub2RlLT5vbmNvbmZsaWN0ID0gb25jb25mbGlj dDsKKwlwYXRobm9kZS0+Zm9yUG9ydGlvbk9mID0gZm9yUG9ydGlvbk9mOwogCXBhdGhub2Rl LT5lcHFQYXJhbSA9IGVwcVBhcmFtOwogCXBhdGhub2RlLT5tZXJnZUFjdGlvbkxpc3RzID0g bWVyZ2VBY3Rpb25MaXN0czsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggN2ExZGZiNjM2 NC4uNWZlYTE3NGFkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC0yNCw3ICsyNCw5IEBA CiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVt LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgiCkBAIC00NywxMSAr NDksMTMgQEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRl ICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUu aCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VyLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNl dHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAi dXRpbHMvYmFja2VuZF9zdGF0dXMuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgog I2luY2x1ZGUgInV0aWxzL2d1Yy5oIgorI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgog I2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAK QEAgLTYwLDEwICs2NCwxNiBAQAogcG9zdF9wYXJzZV9hbmFseXplX2hvb2tfdHlwZSBwb3N0 X3BhcnNlX2FuYWx5emVfaG9vayA9IE5VTEw7CiAKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3Jt T3B0aW9uYWxTZWxlY3RJbnRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqcGFyc2VUcmVl KTsKK3N0YXRpYyBOb2RlICphZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMoUXVlcnkg KnFyeSwgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJCQkJCU5v ZGUgKndoZXJlQ2xhdXNlKTsKIHN0YXRpYyBRdWVyeSAqdHJhbnNmb3JtRGVsZXRlU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpOwogc3RhdGljIFF1ZXJ5ICp0 cmFuc2Zvcm1JbnNlcnRTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgSW5zZXJ0U3RtdCAqc3Rt dCk7CiBzdGF0aWMgT25Db25mbGljdEV4cHIgKnRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2Uo UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCQkJCQkJIE9uQ29uZmxpY3RDbGF1c2UgKm9u Q29uZmxpY3RDbGF1c2UpOworc3RhdGljIEZvclBvcnRpb25PZkV4cHIgKnRyYW5zZm9ybUZv clBvcnRpb25PZkNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJCQkJIGlu dCBydGluZGV4LAorCQkJCQkJCQkJCQkJCSBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRp b25PZkNsYXVzZSwKKwkJCQkJCQkJCQkJCQkgYm9vbCBpc1VwZGF0ZSk7CiBzdGF0aWMgaW50 CWNvdW50X3Jvd2V4cHJfY29sdW1ucyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIp Owogc3RhdGljIFF1ZXJ5ICp0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgU2VsZWN0U3RtdCAqc3RtdCk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVZhbHVlc0Ns YXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpOwpAQCAtNDc5LDYg KzQ4OSwyMCBAQCBzdG10X3JlcXVpcmVzX3BhcnNlX2FuYWx5c2lzKFJhd1N0bXQgKnBhcnNl VHJlZSkKIAlyZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgTm9kZSAqCithZGRGb3JQb3J0 aW9uT2ZXaGVyZUNvbmRpdGlvbnMoUXVlcnkgKnFyeSwgRm9yUG9ydGlvbk9mQ2xhdXNlICpm b3JQb3J0aW9uT2YsIE5vZGUgKndoZXJlQ2xhdXNlKQoreworCWlmIChmb3JQb3J0aW9uT2Yp CisJeworCQlpZiAod2hlcmVDbGF1c2UpCisJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xF eHByKEFORF9FWFBSLCBsaXN0X21ha2UyKHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4 cHIsIHdoZXJlQ2xhdXNlKSwgLTEpOworCQllbHNlCisJCQlyZXR1cm4gcXJ5LT5mb3JQb3J0 aW9uT2YtPm92ZXJsYXBzRXhwcjsKKwl9CisJZWxzZQorCQlyZXR1cm4gd2hlcmVDbGF1c2U7 Cit9CisKIC8qCiAgKiBhbmFseXplX3JlcXVpcmVzX3NuYXBzaG90CiAgKgkJUmV0dXJucyB0 cnVlIGlmIGEgc25hcHNob3QgbXVzdCBiZSBzZXQgYmVmb3JlIGRvaW5nIHBhcnNlIGFuYWx5 c2lzCkBAIC01MTIsNiArNTM2LDcgQEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIERlbGV0ZVN0bXQgKnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VO b2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3 aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpxdWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENN RF9ERUxFVEU7CkBAIC01NTAsNyArNTc1LDExIEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFs X29ubHkgPSBmYWxzZTsKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFs ID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwlp ZiAoc3RtdC0+Zm9yUG9ydGlvbk9mKQorCQlxcnktPmZvclBvcnRpb25PZiA9IHRyYW5zZm9y bUZvclBvcnRpb25PZkNsYXVzZShwc3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRpb24sIHN0bXQt PmZvclBvcnRpb25PZiwgZmFsc2UpOworCisJd2hlcmVDbGF1c2UgPSBhZGRGb3JQb3J0aW9u T2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0bXQtPndoZXJl Q2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNs YXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0 dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3QocHN0YXRlLCBzdG10LT5yZXR1 cm5pbmdMaXN0KTsKQEAgLTExNzMsNyArMTIwMiw3IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RD bGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkgKiBOb3cgdHJhbnNmb3JtIHRoZSBVUERB VEUgc3ViZXhwcmVzc2lvbnMuCiAJCSAqLwogCQlvbkNvbmZsaWN0U2V0ID0KLQkJCXRyYW5z Zm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRM aXN0KTsKKwkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0 Q2xhdXNlLT50YXJnZXRMaXN0LCBOVUxMKTsKIAogCQlvbkNvbmZsaWN0V2hlcmUgPSB0cmFu c2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsCiAJCQkJCQkJCQkJCSAgIG9uQ29uZmxpY3RDbGF1 c2UtPndoZXJlQ2xhdXNlLApAQCAtMTIwMyw2ICsxMjMyLDE0OSBAQCB0cmFuc2Zvcm1PbkNv bmZsaWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgorICogdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgorICoJICBUcmFuc2Zv cm1zIGEgRm9yUG9ydGlvbk9mQ2xhdXNlIGluIGFuIFVQREFURS9ERUxFVEUgc3RhdGVtZW50 LgorICoKKyAqCSAgLSBMb29rIHVwIHRoZSByYW5nZS9wZXJpb2QgcmVxdWVzdGVkLgorICoJ ICAtIEJ1aWxkIGEgY29tcGF0aWJsZSByYW5nZSB2YWx1ZSBmcm9tIHRoZSBGUk9NIGFuZCBU TyBleHByZXNzaW9ucy4KKyAqCSAgLSBCdWlsZCBhbiAib3ZlcmxhcHMiIGV4cHJlc3Npb24g Zm9yIGZpbHRlcmluZy4KKyAqCSAgLSBGb3IgVVBEQVRFcywgYnVpbGQgYW4gImludGVyc2Vj dHMiIGV4cHJlc3Npb24gdGhlIHJld3JpdGVyIGNhbiBhZGQKKyAqCQl0byB0aGUgdGFyZ2V0 TGlzdCB0byBjaGFuZ2UgdGhlIHRlbXBvcmFsIGJvdW5kcy4KKyAqLworc3RhdGljIEZvclBv cnRpb25PZkV4cHIgKgordHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwKKwkJCQkJCQlpbnQgcnRpbmRleCwKKwkJCQkJCQlGb3JQb3J0aW9uT2ZDbGF1 c2UgKmZvclBvcnRpb25PZiwKKwkJCQkJCQlib29sIGlzVXBkYXRlKQoreworCVJlbGF0aW9u IHRhcmdldHJlbCA9IHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb247CisJUlRFUGVybWlzc2lv bkluZm8gKnRhcmdldF9wZXJtaW5mbyA9IHBzdGF0ZS0+cF90YXJnZXRfbnNpdGVtLT5wX3Bl cm1pbmZvOworCWNoYXIgKnJhbmdlX25hbWUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWU7 CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lc3BhY2UgPSBOVUxMOworCWNoYXIgKnJhbmdlX3R5 cGVfbmFtZSA9IE5VTEw7CisJaW50IHJhbmdlX2F0dG5vID0gSW52YWxpZEF0dHJOdW1iZXI7 CisJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cjsKKwlPaWQJb3BjbGFzczsKKwlTdHJhdGVneU51 bWJlciBzdHJhdDsKKwlPaWQJb3BpZDsKKwlGb3JQb3J0aW9uT2ZFeHByICpyZXN1bHQ7CisJ VmFyICpyYW5nZVZhcjsKKwlOb2RlICp0YXJnZXRFeHByOworCisJcmVzdWx0ID0gbWFrZU5v ZGUoRm9yUG9ydGlvbk9mRXhwcik7CisKKwkvKiBMb29rIHVwIHRoZSBGT1IgUE9SVElPTiBP RiBuYW1lIHJlcXVlc3RlZC4gKi8KKwlyYW5nZV9hdHRubyA9IGF0dG5hbWVBdHROdW0odGFy Z2V0cmVsLCByYW5nZV9uYW1lLCBmYWxzZSk7CisJaWYgKHJhbmdlX2F0dG5vID09IEludmFs aWRBdHRyTnVtYmVyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG9yIHBlcmlvZCBcIiVz XCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXJhbmdlX25h bWUsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xv Y2F0aW9uKSkpOworCWF0dHIgPSBUdXBsZURlc2NBdHRyKHRhcmdldHJlbC0+cmRfYXR0LCBy YW5nZV9hdHRubyAtIDEpOworCisJLyogTWFrZSBzdXJlIGl0J3MgYSByYW5nZSBjb2x1bW4g Ki8KKwlpZiAoIXR5cGVfaXNfcmFuZ2UoYXR0ci0+YXR0dHlwaWQpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJFTkNFKSwK KwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBpcyBub3Qg YSByYW5nZSB0eXBlIiwKKwkJCQkJCXJhbmdlX25hbWUsCisJCQkJCQlSZWxhdGlvbkdldFJl bGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKSkpOworCisJcmFuZ2VWYXIg PSBtYWtlVmFyKAorCQkJcnRpbmRleCwKKwkJCXJhbmdlX2F0dG5vLAorCQkJYXR0ci0+YXR0 dHlwaWQsCisJCQlhdHRyLT5hdHR0eXBtb2QsCisJCQlhdHRyLT5hdHRjb2xsYXRpb24sCisJ CQkwKTsKKwlyYW5nZVZhci0+bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVf bG9jYXRpb247CisJcmVzdWx0LT5yYW5nZVZhciA9IHJhbmdlVmFyOworCXJlc3VsdC0+cmFu Z2VUeXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJaWYgKCFnZXRfdHlwbmFtZV9hbmRfbmFtZXNw YWNlKGF0dHItPmF0dHR5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFuZ2VfdHlwZV9uYW1l c3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBlICVkIiwgYXR0ci0+ YXR0dHlwaWQpOworCisKKwlpZiAoZm9yUG9ydGlvbk9mLT50YXJnZXQpCisJCS8qCisJCSAq IFdlIHdlcmUgYWxyZWFkeSBnaXZlbiBhbiBleHByZXNzaW9uIGZvciB0aGUgdGFyZ2V0LAor CQkgKiBzbyB3ZSBkb24ndCBoYXZlIHRvIGJ1aWxkIGFueXRoaW5nLgorCQkgKi8KKwkJdGFy Z2V0RXhwciA9IGZvclBvcnRpb25PZi0+dGFyZ2V0OworCWVsc2UKKwl7CisJCS8qCisJCSAq IEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTSAuLi4gVE8gLi4uLiBib3VuZHMuCisJCSAq IFRoaXMgc2hvdWxkIGdpdmUgYSBjb25zdGFudCByZXN1bHQsIHNvIHdlIGFjY2VwdCBmdW5j dGlvbnMgbGlrZSBOT1coKQorCQkgKiBidXQgbm90IGNvbHVtbiByZWZlcmVuY2VzLCBzdWJx dWVyaWVzLCBldGMuCisJCSAqCisJCSAqIEl0IGFsc28gcGVybWl0cyBVTkJPVU5ERUQgaW4g ZWl0aGVyIHBsYWNlLgorCQkgKi8KKwkJdGFyZ2V0RXhwciA9IChOb2RlICopIG1ha2VGdW5j Q2FsbCgKKwkJCQlsaXN0X21ha2UyKG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lc3BhY2Up LCBtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZSkpLAorCQkJCWxpc3RfbWFrZTIoZm9yUG9y dGlvbk9mLT50YXJnZXRfc3RhcnQsIGZvclBvcnRpb25PZi0+dGFyZ2V0X2VuZCksCisJCQkJ Q09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xv Y2F0aW9uKTsKKwl9CisJcmVzdWx0LT50YXJnZXRSYW5nZSA9IHRyYW5zZm9ybUV4cHIocHN0 YXRlLCB0YXJnZXRFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCisJLyoKKwkg KiBCdWlsZCBvdmVybGFwc0V4cHIgdG8gdXNlIGluIHRoZSB3aGVyZUNsYXVzZS4KKwkgKiBU aGlzIG1lYW5zIHdlIG9ubHkgaGl0IHJvd3MgbWF0Y2hpbmcgdGhlIEZST00gJiBUTyBib3Vu ZHMuCisJICogV2UgbXVzdCBsb29rIHVwIHRoZSBvdmVybGFwcyBvcGVyYXRvciAodXN1YWxs eSAiJiYiKS4KKwkgKi8KKwlvcGNsYXNzID0gR2V0RGVmYXVsdE9wQ2xhc3MoYXR0ci0+YXR0 dHlwaWQsIEdJU1RfQU1fT0lEKTsKKwlzdHJhdCA9IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVy OworCUdldE9wZXJhdG9yRnJvbUNhbm9uaWNhbFN0cmF0ZWd5KG9wY2xhc3MsIEludmFsaWRP aWQsICJvdmVybGFwcyIsICJGT1IgUE9SVElPTiBPRiIsICZvcGlkLCAmc3RyYXQpOworCXJl c3VsdC0+b3ZlcmxhcHNFeHByID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9P UCwgZ2V0X29wbmFtZShvcGlkKSwKKwkJCShOb2RlICopIGNvcHlPYmplY3QocmFuZ2VWYXIp LCB0YXJnZXRFeHByLAorCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsK KworCS8qCisJICogTG9vayB1cCB0aGUgd2l0aG91dFBvcnRpb25PcGVyIHNvIHdlIGNhbiBj b21wdXRlIHRoZSBsZWZ0b3ZlcnMuCisJICogTGVmdG92ZXJzIHdpbGwgYmUgb2xkX3Jhbmdl IEAtIHRhcmdldF9yYW5nZQorCSAqIChvbmUgcGVyIGVsZW1lbnQgb2YgdGhlIHJlc3VsdCku CisJICovCisJc3RyYXQgPSBSVFdpdGhvdXRQb3J0aW9uU3RyYXRlZ3lOdW1iZXI7CisJR2V0 T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3kob3BjbGFzcywgSW52YWxpZE9pZCwgIndp dGhvdXQgcG9ydGlvbiIsICJGT1IgUE9SVElPTiBPRiIsICZvcGlkLCAmc3RyYXQpOworCXJl c3VsdC0+d2l0aG91dFBvcnRpb25Qcm9jID0gZ2V0X29wY29kZShvcGlkKTsKKworCWlmIChp c1VwZGF0ZSkKKwl7CisJCS8qCisJCSAqIE5vdyBtYWtlIHN1cmUgd2UgdXBkYXRlIHRoZSBz dGFydC9lbmQgdGltZSBvZiB0aGUgcmVjb3JkLgorCQkgKiBGb3IgYSByYW5nZSBjb2wgKHIp IHRoaXMgaXMgYHIgPSByICogdGFyZ2V0UmFuZ2VgLgorCQkgKi8KKwkJRXhwciAqcmFuZ2VT ZXRFeHByOworCQlUYXJnZXRFbnRyeSAqdGxlOworCisJCXN0cmF0ID0gUlRJbnRlcnNlY3RT dHJhdGVneU51bWJlcjsKKwkJR2V0T3BlcmF0b3JGcm9tQ2Fub25pY2FsU3RyYXRlZ3kob3Bj bGFzcywgSW52YWxpZE9pZCwgImludGVyc2VjdHMiLCAiRk9SIFBPUlRJT04gT0YiLCAmb3Bp ZCwgJnN0cmF0KTsKKwkJcmFuZ2VTZXRFeHByID0gKEV4cHIgKikgbWFrZVNpbXBsZUFfRXhw cihBRVhQUl9PUCwgZ2V0X29wbmFtZShvcGlkKSwKKwkJCQkoTm9kZSAqKSBjb3B5T2JqZWN0 KHJhbmdlVmFyKSwgdGFyZ2V0RXhwciwKKwkJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVf bG9jYXRpb24pOworCQlyYW5nZVNldEV4cHIgPSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBz dGF0ZSwgKE5vZGUgKikgcmFuZ2VTZXRFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04p OworCisJCS8qIE1ha2UgYSBUTEUgdG8gc2V0IHRoZSByYW5nZSBjb2x1bW4gKi8KKwkJcmVz dWx0LT5yYW5nZVNldCA9IE5JTDsKKwkJdGxlID0gbWFrZVRhcmdldEVudHJ5KHJhbmdlU2V0 RXhwciwgcmFuZ2VfYXR0bm8sIHJhbmdlX25hbWUsIGZhbHNlKTsKKwkJcmVzdWx0LT5yYW5n ZVNldCA9IGxhcHBlbmQocmVzdWx0LT5yYW5nZVNldCwgdGxlKTsKKworCQkvKiBNYXJrIHRo ZSByYW5nZSBjb2x1bW4gYXMgcmVxdWlyaW5nIHVwZGF0ZSBwZXJtaXNzaW9ucyAqLworCQl0 YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRDb2xzID0gYm1zX2FkZF9tZW1iZXIodGFyZ2V0X3Bl cm1pbmZvLT51cGRhdGVkQ29scywKKwkJCQkJCQkJCQkJCQkgIHJhbmdlX2F0dG5vIC0gRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJfQorCWVsc2UKKwkJcmVzdWx0 LT5yYW5nZVNldCA9IE5JTDsKKworCXJlc3VsdC0+cmFuZ2VfbmFtZSA9IHJhbmdlX25hbWU7 CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKgogICogQnVpbGRPbkNvbmZsaWN0RXhjbHVk ZWRUYXJnZXRsaXN0CkBAIC0yNDA5LDYgKzI1ODEsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIHsKIAlRdWVyeQkgICAq cXJ5ID0gbWFrZU5vZGUoUXVlcnkpOwogCVBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtOwor CU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCU5vZGUJICAgKnF1YWw7CiAKIAlxcnktPmNvbW1h bmRUeXBlID0gQ01EX1VQREFURTsKQEAgLTI0MjYsNiArMjU5OSwxMCBAQCB0cmFuc2Zvcm1V cGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAkJCQkJ CQkJCQkgc3RtdC0+cmVsYXRpb24tPmluaCwKIAkJCQkJCQkJCQkgdHJ1ZSwKIAkJCQkJCQkJ CQkgQUNMX1VQREFURSk7CisKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9mKQorCQlxcnktPmZv clBvcnRpb25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShwc3RhdGUsIHFyeS0+ cmVzdWx0UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgdHJ1ZSk7CisKIAluc2l0ZW0g PSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbTsKIAogCS8qIHN1YnF1ZXJpZXMgaW4gRlJPTSBj YW5ub3QgYWNjZXNzIHRoZSByZXN1bHQgcmVsYXRpb24gKi8KQEAgLTI0NDIsNyArMjYxOSw4 IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10 ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0ZW0tPnBf bGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1c2UocHN0 YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwl3aGVyZUNsYXVzZSA9IGFkZEZvclBvcnRpb25P ZldoZXJlQ29uZGl0aW9ucyhxcnksIHN0bXQtPmZvclBvcnRpb25PZiwgc3RtdC0+d2hlcmVD bGF1c2UpOworCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3RhdGUsIHdoZXJlQ2xh dXNlLAogCQkJCQkJCQlFWFBSX0tJTkRfV0hFUkUsICJXSEVSRSIpOwogCiAJcXJ5LT5yZXR1 cm5pbmdMaXN0ID0gdHJhbnNmb3JtUmV0dXJuaW5nTGlzdChwc3RhdGUsIHN0bXQtPnJldHVy bmluZ0xpc3QpOwpAQCAtMjQ1MSw3ICsyNjI5LDcgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQ YXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJICogTm93IHdlIGFyZSBk b25lIHdpdGggU0VMRUNULWxpa2UgcHJvY2Vzc2luZywgYW5kIGNhbiBnZXQgb24gd2l0aAog CSAqIHRyYW5zZm9ybWluZyB0aGUgdGFyZ2V0IGxpc3QgdG8gbWF0Y2ggdGhlIFVQREFURSB0 YXJnZXQgY29sdW1ucy4KIAkgKi8KLQlxcnktPnRhcmdldExpc3QgPSB0cmFuc2Zvcm1VcGRh dGVUYXJnZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCk7CisJcXJ5LT50YXJnZXRM aXN0ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExp c3QsIHFyeS0+Zm9yUG9ydGlvbk9mKTsKIAogCXFyeS0+cnRhYmxlID0gcHN0YXRlLT5wX3J0 YWJsZTsKIAlxcnktPnJ0ZXBlcm1pbmZvcyA9IHBzdGF0ZS0+cF9ydGVwZXJtaW5mb3M7CkBA IC0yNDcwLDcgKzI2NDgsNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKICAqCWhhbmRsZSBTRVQgY2xhdXNlIGluIFVQREFU RS9NRVJHRS9JTlNFUlQgLi4uIE9OIENPTkZMSUNUIFVQREFURQogICovCiBMaXN0ICoKLXRy YW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpvcmln VGxpc3QpCit0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwg TGlzdCAqb3JpZ1RsaXN0LCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2YpCiB7CiAJ TGlzdAkgICAqdGxpc3QgPSBOSUw7CiAJUlRFUGVybWlzc2lvbkluZm8gKnRhcmdldF9wZXJt aW5mbzsKQEAgLTI1MjAsNiArMjY5OCwyMSBAQCB0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQogCQkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24pKSwKIAkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG9yaWdUYXJnZXQtPmxvY2F0aW9uKSkpOwogCisJ CS8qCisJCSAqIElmIHRoaXMgaXMgYSBGT1IgUE9SVElPTiBPRiB1cGRhdGUsCisJCSAqIGZv cmJpZCBkaXJlY3RseSBzZXR0aW5nIHRoZSByYW5nZSBjb2x1bW4sCisJCSAqIHNpbmNlIHRo YXQgd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgaW1wbGljaXQgdXBkYXRlcy4KKwkJICovCisJ CWlmIChmb3JQb3J0aW9uT2YgIT0gTlVMTCkKKwkJeworCQkJaWYgKGF0dHJubyA9PSBmb3JQ b3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubykKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY2Fu J3QgZGlyZWN0bHkgYXNzaWduIHRvIFwiJXNcIiBpbiBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0 ZSIsCisJCQkJCQkJCW9yaWdUYXJnZXQtPm5hbWUpLAorCQkJCQkJIHBhcnNlcl9lcnJwb3Np dGlvbihwc3RhdGUsIG9yaWdUYXJnZXQtPmxvY2F0aW9uKSkpOworCQl9CisKIAkJdXBkYXRl VGFyZ2V0TGlzdEVudHJ5KHBzdGF0ZSwgdGxlLCBvcmlnVGFyZ2V0LT5uYW1lLAogCQkJCQkJ CSAgYXR0cm5vLAogCQkJCQkJCSAgb3JpZ1RhcmdldC0+aW5kaXJlY3Rpb24sCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCBjNTYzYTViNzliLi5hODkwNGIyNzM2IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAg LTI1OCw2ICsyNTgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVJhbmdlVmFy ICAgKnJhbmdlOwogCUludG9DbGF1c2UgKmludG87CiAJV2l0aENsYXVzZSAqd2l0aDsKKwlG b3JQb3J0aW9uT2ZDbGF1c2UgKmZvcnBvcnRpb25vZjsKIAlJbmZlckNsYXVzZQkqaW5mZXI7 CiAJT25Db25mbGljdENsYXVzZSAqb25jb25mbGljdDsKIAlBX0luZGljZXMgICphaW5kOwpA QCAtNTUwLDYgKzU1MSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVj dChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8 cmFuZ2U+CXJlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4JZXh0ZW5kZWRfcmVsYXRpb25f ZXhwcgogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByX29wdF9hbGlhcworJXR5cGUgPGZv cnBvcnRpb25vZj4gZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAldHlwZSA8bm9kZT4JdGFibGVz YW1wbGVfY2xhdXNlIG9wdF9yZXBlYXRhYmxlX2NsYXVzZQogJXR5cGUgPHRhcmdldD4JdGFy Z2V0X2VsIHNldF90YXJnZXQgaW5zZXJ0X2NvbHVtbl9pdGVtCiAKQEAgLTc0Niw3ICs3NDgs NyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFt ZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJUEFSQUxMRUwgUEFSQU1FVEVS IFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JECiAJUEVSSU9EIFBM QUNJTkcgUExBTlMgUE9MSUNZCi0JUE9TSVRJT04gUFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVT RVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKKwlQT1JUSU9OIFBPU0lUSU9OIFBSRUNF RElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJ T1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dSQU0g UFVCTElDQVRJT04KIAogCVFVT1RFCkBAIC04NjQsNiArODY2LDE3IEBAIHN0YXRpYyBOb2Rl ICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2Vz LCBOb2RlICpxdWVyeSk7CiAgKiBqc29uX3ByZWRpY2F0ZV90eXBlX2NvbnN0cmFpbnQgYW5k IGpzb25fa2V5X3VuaXF1ZW5lc3NfY29uc3RyYWludF9vcHQKICAqIHByb2R1Y3Rpb25zIChz ZWUgY29tbWVudHMgdGhlcmUpLgogICovCisvKgorICogV2UgbmVlZCB0byBoYW5kbGUgdGhp cyBzaGlmdC9yZWR1Y2UgY29uZmxpY3Q6CisgKiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NIElOVEVSVkFMIFlFQVIgVE8gTU9OVEggVE8gZm9vLgorICogVGhpcyBpcyBiYXNpY2Fs bHkgdGhlIGNsYXNzaWMgImRhbmdsaW5nIGVsc2UiIHByb2JsZW0sIGFuZCB3ZSB3YW50IGEK KyAqIHNpbWlsYXIgcmVzb2x1dGlvbjogdHJlYXQgdGhlIFRPIGFzIHBhcnQgb2YgdGhlIElO VEVSVkFMLCBub3QgYXMgcGFydCBvZgorICogdGhlIEZST00gLi4uIFRPIC4uLi4gVXNlcnMg Y2FuIGFkZCBwYXJlbnRoZXNlcyBpZiB0aGF0J3MgYSBwcm9ibGVtLgorICogVE8ganVzdCBu ZWVkcyB0byBiZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIFlFQVJfUCBldGMuCisgKiBUT0RP OiBJIG5lZWQgdG8gZmlndXJlIG91dCBhICVwcmVjIHNvbHV0aW9uIGJlZm9yZSB0aGlzIGdl dHMgY29tbWl0dGVkIQorICovCislbm9uYXNzb2MgWUVBUl9QIE1PTlRIX1AgREFZX1AgSE9V Ul9QIE1JTlVURV9QCislbm9uYXNzb2MgVE8KICVub25hc3NvYwlVTkJPVU5ERUQJCS8qIGlk ZWFsbHkgd291bGQgaGF2ZSBzYW1lIHByZWNlZGVuY2UgYXMgSURFTlQgKi8KICVub25hc3Nv YwlJREVOVCBQQVJUSVRJT04gUkFOR0UgUk9XUyBHUk9VUFMgUFJFQ0VESU5HIEZPTExPV0lO RyBDVUJFIFJPTExVUAogCQkJU0VUIEtFWVMgT0JKRUNUX1AgU0NBTEFSIFZBTFVFX1AgV0lU SCBXSVRIT1VUCkBAIC0xMjIxNSwxNCArMTIyMjgsMTYgQEAgcmV0dXJuaW5nX2NsYXVzZToK ICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogRGVsZXRlU3RtdDogb3B0X3dpdGhfY2xh dXNlIERFTEVURV9QIEZST00gcmVsYXRpb25fZXhwcl9vcHRfYWxpYXMKKwkJCWZvcl9wb3J0 aW9uX29mX2NsYXVzZQogCQkJdXNpbmdfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNl IHJldHVybmluZ19jbGF1c2UKIAkJCQl7CiAJCQkJCURlbGV0ZVN0bXQgKm4gPSBtYWtlTm9k ZShEZWxldGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlvbiA9ICQ0OwotCQkJCQluLT51c2lu Z0NsYXVzZSA9ICQ1OwotCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ2OwotCQkJCQluLT5yZXR1 cm5pbmdMaXN0ID0gJDc7CisJCQkJCW4tPmZvclBvcnRpb25PZiA9ICQ1OworCQkJCQluLT51 c2luZ0NsYXVzZSA9ICQ2OworCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ3OworCQkJCQluLT5y ZXR1cm5pbmdMaXN0ID0gJDg7CiAJCQkJCW4tPndpdGhDbGF1c2UgPSAkMTsKIAkJCQkJJCQg PSAoTm9kZSAqKSBuOwogCQkJCX0KQEAgLTEyMjg1LDYgKzEyMzAwLDcgQEAgb3B0X25vd2Fp dF9vcl9za2lwOgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBVcGRhdGVTdG10OiBv cHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCisJCQlmb3Jf cG9ydGlvbl9vZl9jbGF1c2UKIAkJCVNFVCBzZXRfY2xhdXNlX2xpc3QKIAkJCWZyb21fY2xh dXNlCiAJCQl3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQpAQCAtMTIyOTMsMTAgKzEyMzA5LDEx IEBAIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBVUERBVEUgcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKIAkJCQkJVXBkYXRlU3RtdCAqbiA9IG1ha2VOb2RlKFVwZGF0ZVN0bXQpOwog CiAJCQkJCW4tPnJlbGF0aW9uID0gJDM7Ci0JCQkJCW4tPnRhcmdldExpc3QgPSAkNTsKLQkJ CQkJbi0+ZnJvbUNsYXVzZSA9ICQ2OwotCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ3OwotCQkJ CQluLT5yZXR1cm5pbmdMaXN0ID0gJDg7CisJCQkJCW4tPmZvclBvcnRpb25PZiA9ICQ0Owor CQkJCQluLT50YXJnZXRMaXN0ID0gJDY7CisJCQkJCW4tPmZyb21DbGF1c2UgPSAkNzsKKwkJ CQkJbi0+d2hlcmVDbGF1c2UgPSAkODsKKwkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ5Owog CQkJCQluLT53aXRoQ2xhdXNlID0gJDE7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 CkBAIC0xMzczMiw2ICsxMzc0OSwyNyBAQCByZWxhdGlvbl9leHByX29wdF9hbGlhczogcmVs YXRpb25fZXhwcgkJCQkJJXByZWMgVU1JTlVTCiAJCQkJfQogCQk7CiAKK2Zvcl9wb3J0aW9u X29mX2NsYXVzZToKKwkJCUZPUiBQT1JUSU9OIE9GIENvbElkICcoJyBhX2V4cHIgJyknCisJ CQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2UgKm4gPSBtYWtlTm9kZShGb3JQb3J0aW9u T2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1lID0gJDQ7CisJCQkJCW4tPnJhbmdlX25h bWVfbG9jYXRpb24gPSBANDsKKwkJCQkJbi0+dGFyZ2V0ID0gJDY7CisJCQkJCSQkID0gbjsK KwkJCQl9CisJCQl8IEZPUiBQT1JUSU9OIE9GIENvbElkIEZST00gYV9leHByIFRPIGFfZXhw cgorCQkJCXsKKwkJCQkJRm9yUG9ydGlvbk9mQ2xhdXNlICpuID0gbWFrZU5vZGUoRm9yUG9y dGlvbk9mQ2xhdXNlKTsKKwkJCQkJbi0+cmFuZ2VfbmFtZSA9ICQ0OworCQkJCQluLT5yYW5n ZV9uYW1lX2xvY2F0aW9uID0gQDQ7CisJCQkJCW4tPnRhcmdldF9zdGFydCA9ICQ2OworCQkJ CQluLT50YXJnZXRfZW5kID0gJDg7CisJCQkJCSQkID0gbjsKKwkJCQl9CisJCQl8IC8qRU1Q VFkqLwkJCQkJeyAkJCA9IE5VTEw7IH0KKwkJOworCiAvKgogICogVEFCTEVTQU1QTEUgZGVj b3JhdGlvbiBpbiBhIEZST00gaXRlbQogICovCkBAIC0xNzMyNSw2ICsxNzM2Myw3IEBAIHVu cmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFTU1dPUkQKIAkJCXwgUExBTlMKIAkJCXwgUE9M SUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8IFBSRVBBUkUKIAkJCXwg UFJFUEFSRUQKQEAgLTE3OTI5LDYgKzE3OTY4LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgog CQkJfCBQTEFDSU5HCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JUSU9OCiAJ CQl8IFBPU0lUSU9OCiAJCQl8IFBSRUNFRElORwogCQkJfCBQUkVQQVJFCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfYWdnLmMKaW5kZXggOWJiYWQzM2ZiZC4uYmZmMTBjOWM3OCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9hZ2cuYwpAQCAtNTc0LDYgKzU3NCwxMyBAQCBjaGVja19hZ2dsZXZlbHNfYW5k X2NvbnN0cmFpbnRzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcikKIAkJY2FzZSBF WFBSX0tJTkRfQ1lDTEVfTUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJ CWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgorCQkJaWYgKGlzQWdnKQorCQkJCWVy ciA9IF8oImFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JU SU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQllbHNlCisJCQkJZXJyID0gXygiZ3JvdXBpbmcg b3BlcmF0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lv bnMiKTsKKworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25h bGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTk2NCw2ICs5NzEs OSBAQCB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRv d0Z1bmMgKndmdW5jLAogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2lu ZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046 CisJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBU aGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0 aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY29sbGF0ZS5jCmluZGV4IGM0ODBjZTM2ODIuLmM2 MzMwMWYwZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRl LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwpAQCAtNDg0LDYg KzQ4NCw3IEBAIGFzc2lnbl9jb2xsYXRpb25zX3dhbGtlcihOb2RlICpub2RlLCBhc3NpZ25f Y29sbGF0aW9uc19jb250ZXh0ICpjb250ZXh0KQogCQljYXNlIFRfSm9pbkV4cHI6CiAJCWNh c2UgVF9Gcm9tRXhwcjoKIAkJY2FzZSBUX09uQ29uZmxpY3RFeHByOgorCQljYXNlIFRfRm9y UG9ydGlvbk9mRXhwcjoKIAkJY2FzZSBUX1NvcnRHcm91cENsYXVzZToKIAkJY2FzZSBUX01l cmdlQWN0aW9uOgogCQkJKHZvaWQpIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfZXhwci5jCmluZGV4IDY0YzU4MmMzNDQuLmZlZTZiZDkwMmEgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwpAQCAtNTY2LDYgKzU2Niw5IEBAIHRyYW5zZm9y bUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJY2Fz ZSBFWFBSX0tJTkRfUEFSVElUSU9OX0JPVU5EOgogCQkJZXJyID0gXygiY2Fubm90IHVzZSBj b2x1bW4gcmVmZXJlbmNlIGluIHBhcnRpdGlvbiBib3VuZCBleHByZXNzaW9uIik7CiAJCQli cmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIgPSBfKCJj YW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lv biIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5 IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUKQEAgLTE4MTMsNiArMTgxNiw5 IEBAIHRyYW5zZm9ybVN1YkxpbmsoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTdWJMaW5rICpzdWJs aW5rKQogCQljYXNlIEVYUFJfS0lORF9HRU5FUkFURURfQ09MVU1OOgogCQkJZXJyID0gXygi Y2Fubm90IHVzZSBzdWJxdWVyeSBpbiBjb2x1bW4gZ2VuZXJhdGlvbiBleHByZXNzaW9uIik7 CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQllcnIg PSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24i KTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBu byBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0zMTA0LDYgKzMxMTAsOCBA QCBQYXJzZUV4cHJLaW5kTmFtZShQYXJzZUV4cHJLaW5kIGV4cHJLaW5kKQogCQkJcmV0dXJu ICJVUERBVEUiOwogCQljYXNlIEVYUFJfS0lORF9NRVJHRV9XSEVOOgogCQkJcmV0dXJuICJN RVJHRSBXSEVOIjsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJCQlyZXR1 cm4gIkZPUiBQT1JUSU9OIE9GIjsKIAkJY2FzZSBFWFBSX0tJTkRfR1JPVVBfQlk6CiAJCQly ZXR1cm4gIkdST1VQIEJZIjsKIAkJY2FzZSBFWFBSX0tJTkRfT1JERVJfQlk6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX2Z1bmMuYwppbmRleCA2YzI5NDcxYmIzLi5jZWYwYmVjNDZkIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTI2NTYsNiArMjY1Niw5IEBAIGNoZWNrX3NyZl9j YWxsX3BsYWNlbWVudChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmxhc3Rfc3JmLCBpbnQg bG9jYXRpb24pCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0g dHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJ CWVyciA9IF8oInNldC1yZXR1cm5pbmcgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBG T1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkg KiBUaGVyZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhh dCB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jIGIv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKaW5kZXggOTFiMTE1NmQ5OS4uYzAw ODAyYWUyMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMK KysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMKQEAgLTM3Miw3ICszNzIs NyBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBNZXJnZVN0bXQg KnN0bXQpCiAJCQkJCXBzdGF0ZS0+cF9pc19pbnNlcnQgPSBmYWxzZTsKIAkJCQkJYWN0aW9u LT50YXJnZXRMaXN0ID0KIAkJCQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0YXRl LAotCQkJCQkJCQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3QpOworCQkJCQkJ CQkJCQkJICBtZXJnZVdoZW5DbGF1c2UtPnRhcmdldExpc3QsIE5VTEwpOwogCQkJCX0KIAkJ CQlicmVhazsKIAkJCWNhc2UgQ01EX0RFTEVURToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0 ZUhhbmRsZXIuYwppbmRleCA0MWEzNjIzMTBhLi4yNjYyYWQ4NGNlIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCkBAIC0zNDU5LDYgKzM0NTksMzAgQEAgcmV3cml0 ZVRhcmdldFZpZXcoUXVlcnkgKnBhcnNldHJlZSwgUmVsYXRpb24gdmlldykKIAkJCQkJCQkJ CSAgJnBhcnNldHJlZS0+aGFzU3ViTGlua3MpOwogCX0KIAorCWlmIChwYXJzZXRyZWUtPmZv clBvcnRpb25PZiAmJiBwYXJzZXRyZWUtPmNvbW1hbmRUeXBlID09IENNRF9VUERBVEUpCisJ eworCQkvKgorCQkgKiBMaWtlIHRoZSBJTlNFUlQvVVBEQVRFIGNvZGUgYWJvdmUsIHVwZGF0 ZSB0aGUgcmVzbm9zIGluIHRoZQorCQkgKiBhdXhpbGlhcnkgVVBEQVRFIHRhcmdldGxpc3Qg dG8gcmVmZXIgdG8gY29sdW1ucyBvZiB0aGUgYmFzZQorCQkgKiByZWxhdGlvbi4KKwkJICov CisJCWZvcmVhY2gobGMsIHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mLT5yYW5nZVNldCkKKwkJ eworCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRyeSAqKSBsZmlyc3QobGMpOwor CQkJVGFyZ2V0RW50cnkgKnZpZXdfdGxlOworCisJCQlpZiAodGxlLT5yZXNqdW5rKQorCQkJ CWNvbnRpbnVlOworCisJCQl2aWV3X3RsZSA9IGdldF90bGVfYnlfcmVzbm8odmlld190YXJn ZXRsaXN0LCB0bGUtPnJlc25vKTsKKwkJCWlmICh2aWV3X3RsZSAhPSBOVUxMICYmICF2aWV3 X3RsZS0+cmVzanVuayAmJiBJc0Eodmlld190bGUtPmV4cHIsIFZhcikpCisJCQkJdGxlLT5y ZXNubyA9ICgoVmFyICopIHZpZXdfdGxlLT5leHByKS0+dmFyYXR0bm87CisJCQllbHNlCisJ CQkJZWxvZyhFUlJPUiwgImF0dHJpYnV0ZSBudW1iZXIgJWQgbm90IGZvdW5kIGluIHZpZXcg dGFyZ2V0bGlzdCIsCisJCQkJCSB0bGUtPnJlc25vKTsKKwkJfQorCX0KKwogCS8qCiAJICog Rm9yIFVQREFURS9ERUxFVEUsIHB1bGwgdXAgYW55IFdIRVJFIHF1YWxzIGZyb20gdGhlIHZp ZXcuICBXZSBrbm93IHRoYXQKIAkgKiBhbnkgVmFycyBpbiB0aGUgcXVhbHMgbXVzdCByZWZl cmVuY2UgdGhlIG9uZSBiYXNlIHJlbGF0aW9uLCBzbyB3ZSBuZWVkCkBAIC0zNzk3LDYgKzM4 MjEsMjIgQEAgUmV3cml0ZVF1ZXJ5KFF1ZXJ5ICpwYXJzZXRyZWUsIExpc3QgKnJld3JpdGVf ZXZlbnRzLCBpbnQgb3JpZ19ydF9sZW5ndGgpCiAJCWVsc2UgaWYgKGV2ZW50ID09IENNRF9V UERBVEUpCiAJCXsKIAkJCUFzc2VydChwYXJzZXRyZWUtPm92ZXJyaWRlID09IE9WRVJSSURJ TkdfTk9UX1NFVCk7CisJCQkvKgorCQkJICogVXBkYXRlIEZPUiBQT1JUSU9OIE9GIGNvbHVt bihzKSBhdXRvbWF0aWNhbGx5LiBEb24ndAorCQkJICogZG8gdGhpcyB1bnRpbCB3ZSdyZSBk b25lIHJld3JpdGluZyBhIHZpZXcgdXBkYXRlLCBzbworCQkJICogdGhhdCB3ZSBkb24ndCBh ZGQgdGhlIHNhbWUgdXBkYXRlIG9uIHRoZSByZWN1cnNpb24uCisJCQkgKi8KKwkJCWlmIChw YXJzZXRyZWUtPmZvclBvcnRpb25PZiAmJgorCQkJCXJ0X2VudHJ5X3JlbGF0aW9uLT5yZF9y ZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9WSUVXKQorCQkJeworCQkJCUxpc3RDZWxsICp0bDsK KwkJCQlmb3JlYWNoKHRsLCBwYXJzZXRyZWUtPmZvclBvcnRpb25PZi0+cmFuZ2VTZXQpCisJ CQkJeworCQkJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdCh0 bCk7CisJCQkJCXBhcnNldHJlZS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQocGFyc2V0cmVlLT50 YXJnZXRMaXN0LCB0bGUpOworCQkJCX0KKwkJCX0KKwogCQkJcGFyc2V0cmVlLT50YXJnZXRM aXN0ID0KIAkJCQlyZXdyaXRlVGFyZ2V0TGlzdElVKHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwK IAkJCQkJCQkJCXBhcnNldHJlZS0+Y29tbWFuZFR5cGUsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCmluZGV4 IDM2NmEyN2FlOGUuLjJhMjk4MjE5NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3Av dXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCkBAIC0xNTU2LDcg KzE1NTYsNyBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJ CQkJCQkJdHJ1ZSwJLyogY2hlY2tfcmlnaHRzICovCiAJCQkJCQkJCQl0cnVlLAkvKiBjaGVj a19ub3RfaW5fdXNlICovCiAJCQkJCQkJCQlmYWxzZSwJLyogc2tpcF9idWlsZCAqLwotCQkJ CQkJCQkJZmFsc2UpOyAvKiBxdWlldCAqLworCQkJCQkJCQkJZmFsc2UpOwkvKiBxdWlldCAq LwogCiAJCQkJCS8qCiAJCQkJCSAqIEFkZCB0aGUgQ1JFQVRFIElOREVYIG5vZGUgaXRzZWxm IHRvIHN0YXNoIHJpZ2h0IGF3YXk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKaW5kZXggMTk5 ZWFlNTI1ZC4uZDA0Yzc1YjM5OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQpAQCAtNzgs NiArNzgsNyBAQCBPQkpTID0gXAogCW9yYWNsZV9jb21wYXQubyBcCiAJb3JkZXJlZHNldGFn Z3MubyBcCiAJcGFydGl0aW9uZnVuY3MubyBcCisJcGVyaW9kLm8gXAogCXBnX2xvY2FsZS5v IFwKIAlwZ19sc24ubyBcCiAJcGdfdXBncmFkZV9zdXBwb3J0Lm8gXApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3BlcmlvZC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3BlcmlvZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBlZDQz MDRlMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9k LmMKQEAgLTAsMCArMSw1NiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGVy aW9kLmMKKyAqCSAgRnVuY3Rpb25zIHRvIHN1cHBvcnQgcGVyaW9kcy4KKyAqCisgKgorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKKyAqCisgKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNs dWRlICJleGVjdXRvci90dXB0YWJsZS5oIgorI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRl ICJub2Rlcy9wcmltbm9kZXMuaCIKKyNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCisj aW5jbHVkZSAidXRpbHMvcGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5o IgorCitEYXR1bSBwZXJpb2RfdG9fcmFuZ2UoVHVwbGVUYWJsZVNsb3QgKnNsb3QsIGludCBz dGFydGF0dG5vLCBpbnQgZW5kYXR0bm8sIE9pZCByYW5nZXR5cGUpCit7CisJRGF0dW0gc3Rh cnR2YWx1ZTsKKwlEYXR1bSBlbmR2YWx1ZTsKKwlEYXR1bSByZXN1bHQ7CisJYm9vbAlzdGFy dGlzbnVsbDsKKwlib29sCWVuZGlzbnVsbDsKKwlMT0NBTF9GQ0lORk8oZmNpbmZvLCAyKTsK KwlGbWdySW5mbwlmbGluZm87CisJRnVuY0V4cHIgICAqZjsKKworCUluaXRGdW5jdGlvbkNh bGxJbmZvRGF0YSgqZmNpbmZvLCAmZmxpbmZvLCAyLCBJbnZhbGlkT2lkLCBOVUxMLCBOVUxM KTsKKwlmID0gbWFrZU5vZGUoRnVuY0V4cHIpOworCWYtPmZ1bmNyZXN1bHR0eXBlID0gcmFu Z2V0eXBlOworCWZsaW5mby5mbl9leHByID0gKE5vZGUgKikgZjsKKwlmbGluZm8uZm5fZXh0 cmEgPSBOVUxMOworCisJLyogY29tcHV0ZSBvbGR2YWx1ZSAqLworCXN0YXJ0dmFsdWUgPSBz bG90X2dldGF0dHIoc2xvdCwgc3RhcnRhdHRubywgJnN0YXJ0aXNudWxsKTsKKwllbmR2YWx1 ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBlbmRhdHRubywgJmVuZGlzbnVsbCk7CisKKwlmY2lu Zm8tPmFyZ3NbMF0udmFsdWUgPSBzdGFydHZhbHVlOworCWZjaW5mby0+YXJnc1swXS5pc251 bGwgPSBzdGFydGlzbnVsbDsKKwlmY2luZm8tPmFyZ3NbMV0udmFsdWUgPSBlbmR2YWx1ZTsK KwlmY2luZm8tPmFyZ3NbMV0uaXNudWxsID0gZW5kaXNudWxsOworCisJcmVzdWx0ID0gcmFu Z2VfY29uc3RydWN0b3IyKGZjaW5mbyk7CisJaWYgKGZjaW5mby0+aXNudWxsKQorCQllbG9n KEVSUk9SLCAiZnVuY3Rpb24gJXUgcmV0dXJuZWQgTlVMTCIsIGZsaW5mby5mbl9vaWQpOwor CisJcmV0dXJuIHJlc3VsdDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMK aW5kZXggZGVjN2IwODY0NC4uMWEyYjljZjY4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jp X3RyaWdnZXJzLmMKQEAgLTIzMCw2ICsyMzAsNyBAQCBzdGF0aWMgYm9vbCByaV9QZXJmb3Jt Q2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQlSSV9RdWVy eUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwKIAkJCQkJCQlSZWxhdGlvbiBma19yZWws IFJlbGF0aW9uIHBrX3JlbCwKIAkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVw bGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJCQkJaW50IGZvclBvcnRpb25PZlBhcmFtLCBE YXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJCQkJYm9vbCBkZXRlY3ROZXdSb3dzLCBpbnQgZXhw ZWN0X09LKTsKIHN0YXRpYyB2b2lkIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVsLCBU dXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8g KnJpaW5mbywgYm9vbCByZWxfaXNfcGssCkBAIC0yNDAsNiArMjQxLDExIEBAIHN0YXRpYyB2 b2lkIHJpX1JlcG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv LAogCQkJCQkJCSAgIGludCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVf bm9yZXR1cm4oKTsKIHN0YXRpYyB2b2lkIGxvb2t1cFRSSU9wZXJBbmRQcm9jKGNvbnN0IFJJ X0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJCSBjaGFyICoqb3BuYW1lLCBjaGFy ICoqYWdnbmFtZSk7CitzdGF0aWMgYm9vbCBmcG9fdGFyZ2V0c19wa19yYW5nZShjb25zdCBG b3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJCQkJCQkJCSBjb25zdCBSSV9Db25z dHJhaW50SW5mbyAqcmlpbmZvKTsKK3N0YXRpYyBEYXR1bSByZXN0cmljdF9jYXNjYWRpbmdf cmFuZ2UoY29uc3QgRm9yUG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsLAorCQkJCQkJCQkJ ICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAorCQkJCQkJCQkJICBUdXBsZVRh YmxlU2xvdCAqb2xkc2xvdCk7CiAKIAogLyoKQEAgLTQ1Niw2ICs0NjIsNyBAQCBSSV9GS2V5 X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZv LCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlOVUxMLCBuZXdz bG90LAorCQkJCQktMSwgMCwKIAkJCQkJcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSwKIAkJCQkJU1BJX09LX1NFTEVDVCk7CiAKQEAgLTYy MCw2ICs2MjcsNyBAQCByaV9DaGVja19Qa19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0 aW9uIGZrX3JlbCwKIAlyZXN1bHQgPSByaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwg cXBsYW4sCiAJCQkJCQkJIGZrX3JlbCwgcGtfcmVsLAogCQkJCQkJCSBvbGRzbG90LCBOVUxM LAorCQkJCQkJCSAtMSwgMCwKIAkJCQkJCQkgdHJ1ZSwJLyogdHJlYXQgbGlrZSB1cGRhdGUg Ki8KIAkJCQkJCQkgU1BJX09LX1NFTEVDVCk7CiAKQEAgLTcxOSw2ICs3MjcsOCBAQCByaV9y ZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCVR1 cGxlVGFibGVTbG90ICpvbGRzbG90OwogCVJJX1F1ZXJ5S2V5IHFrZXk7CiAJU1BJUGxhblB0 cglxcGxhbjsKKwlpbnQJCQl0YXJnZXRSYW5nZVBhcmFtID0gLTE7CisJRGF0dW0JCXRhcmdl dFJhbmdlID0gMDsKIAogCXJpaW5mbyA9IHJpX0ZldGNoQ29uc3RyYWludEluZm8odHJpZ2Rh dGEtPnRnX3RyaWdnZXIsCiAJCQkJCQkJCQl0cmlnZGF0YS0+dGdfcmVsYXRpb24sIHRydWUp OwpAQCAtODE1LDkgKzgyNSwxNiBAQCByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2Rh dGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCS8qCiAJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBS dW4gaXQgdG8gY2hlY2sgZm9yIGV4aXN0aW5nIHJlZmVyZW5jZXMuCiAJICovCisJaWYgKHRy aWdkYXRhLT50Z190ZW1wb3JhbCkKKwl7CisJCXRhcmdldFJhbmdlUGFyYW0gPSByaWluZm8t Pm5rZXlzIC0gMTsKKwkJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2Uo dHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCX0KKwogCXJpX1Bl cmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWws CiAJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXRhcmdldFJhbmdlUGFyYW0sIHRhcmdldFJh bmdlLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8KIAkJCQkJU1BJ X09LX1NFTEVDVCk7CiAKQEAgLTkyNCw2ICs5NDEsNyBAQCBSSV9GS2V5X2Nhc2NhZGVfZGVs KFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFw bGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJ LTEsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlT UElfT0tfREVMRVRFKTsKIApAQCAtMTA0NSw2ICsxMDYzLDcgQEAgUklfRktleV9jYXNjYWRl X3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5 LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIG5ld3Nsb3Qs CisJCQkJCS0xLCAwLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJvd3MgKi8K IAkJCQkJU1BJX09LX1VQREFURSk7CiAKQEAgLTEyNzcsNiArMTI5Niw3IEBAIHJpX3NldChU cmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJ cmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBr X3JlbCwKIAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJLTEsIDAsCiAJCQkJCXRydWUsCQkv KiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAt MjU1MSw2ICsyNTcxLDcgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJ bmZvICpyaWluZm8sCiAJCQkJUklfUXVlcnlLZXkgKnFrZXksIFNQSVBsYW5QdHIgcXBsYW4s CiAJCQkJUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBwa19yZWwsCiAJCQkJVHVwbGVUYWJs ZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorCQkJCWludCBmb3JQ b3J0aW9uT2ZQYXJhbSwgRGF0dW0gZm9yUG9ydGlvbk9mLAogCQkJCWJvb2wgZGV0ZWN0TmV3 Um93cywgaW50IGV4cGVjdF9PSykKIHsKIAlSZWxhdGlvbglxdWVyeV9yZWwsCkBAIC0yNjA2 LDYgKzI2MjcsMTIgQEAgcmlfUGVyZm9ybUNoZWNrKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm8sCiAJCXJpX0V4dHJhY3RWYWx1ZXMoc291cmNlX3JlbCwgb2xkc2xvdCwgcmlp bmZvLCBzb3VyY2VfaXNfcGssCiAJCQkJCQkgdmFscywgbnVsbHMpOwogCX0KKwkvKiBBZGQg b25lIG1vcmUgcXVlcnkgcGFyYW0gaWYgd2UgYXJlIHVzaW5nIEZPUiBQT1JUSU9OIE9GICov CisJaWYgKGZvclBvcnRpb25PZikKKwl7CisJCXZhbHNbZm9yUG9ydGlvbk9mUGFyYW1dID0g Zm9yUG9ydGlvbk9mOworCQludWxsc1tmb3JQb3J0aW9uT2ZQYXJhbV0gPSAnICc7CisJfQog CiAJLyoKIAkgKiBJbiBSRUFEIENPTU1JVFRFRCBtb2RlLCB3ZSBqdXN0IG5lZWQgdG8gdXNl IGFuIHVwLXRvLWRhdGUgcmVndWxhcgpAQCAtMzM1MCwzICszMzc3LDUwIEBAIGxvb2t1cFRS SU9wZXJBbmRQcm9jKGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGNoYXIgKipv cG5hbWUsIGNoYXIgKiphZ2duCiAJCQkJIGVycmhpbnQoIllvdSBtdXN0IHVzZSBhbiBvcGVy YXRvciBjbGFzcyB3aXRoIGEgcmVmZXJlbmNlZGFnZyBzdXBwb3J0IGZ1bmN0aW9uLiIpKSk7 CiAJKmFnZ25hbWUgPSBnZXRfZnVuY19uYW1lX2FuZF9uYW1lc3BhY2Uob2lkKTsKIH0KKwor LyoKKyAqIGZwb190YXJnZXRzX3BrX3JhbmdlCisgKgorICogUmV0dXJucyB0cnVlIGlmZiB0 aGUgcHJpbWFyeSBrZXkgcmVmZXJlbmNlZCBieSByaWluZm8gaW5jbHVkZXMgdGhlIHJhbmdl CisgKiBjb2x1bW4gdGFyZ2V0ZWQgYnkgdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAoYWNj b3JkaW5nIHRvIHRnX3RlbXBvcmFsKS4KKyAqLworc3RhdGljIGJvb2wKK2Zwb190YXJnZXRz X3BrX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwgY29uc3Qg UklfQ29uc3RyYWludEluZm8gKnJpaW5mbykKK3sKKwlpZiAodGdfdGVtcG9yYWwgPT0gTlVM TCkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHJpaW5mby0+cGtfYXR0bnVtc1tyaWlu Zm8tPm5rZXlzIC0gMV0gPT0gdGdfdGVtcG9yYWwtPmZwX3JhbmdlQXR0bm87Cit9CisKKy8q CisgKiByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UgLQorICoKKyAqIFJldHVybnMgYSBEYXR1 bSBvZiBSYW5nZVR5cGVQIGhvbGRpbmcgdGhlIGFwcHJvcHJpYXRlIHRpbWVzcGFuCisgKiB0 byB0YXJnZXQgY2hpbGQgcmVjb3JkcyB3aGVuIHdlIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQuCisgKgorICogSW4gYSBub3JtYWwgVVBEQVRFL0RFTEVURSB0aGlzIHNob3VsZCBi ZSB0aGUgcGFyZW50J3Mgb3duIHZhbGlkIHRpbWUsCisgKiBidXQgaWYgdGhlcmUgd2FzIGEg Rk9SIFBPUlRJT04gT0YgY2xhdXNlLCB0aGVuIHdlIHNob3VsZCB1c2UgdGhhdCB0bworICog dHJpbSBkb3duIHRoZSBwYXJlbnQncyBzcGFuIGZ1cnRoZXIuCisgKi8KK3N0YXRpYyBEYXR1 bQorcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRlICp0 Z190ZW1wb3JhbCwgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgVHVwbGVUYWJs ZVNsb3QgKm9sZHNsb3QpCit7CisJRGF0dW0JcGtSZWNvcmRSYW5nZTsKKwlib29sCWlzbnVs bDsKKworCXBrUmVjb3JkUmFuZ2UgPSBzbG90X2dldGF0dHIob2xkc2xvdCwgcmlpbmZvLT5w a19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSwgJmlzbnVsbCk7CisJaWYgKGlzbnVsbCkK KwkJZWxvZyhFUlJPUiwgImFwcGxpY2F0aW9uIHRpbWUgc2hvdWxkIG5vdCBiZSBudWxsIik7 CisKKwlpZiAoZnBvX3RhcmdldHNfcGtfcmFuZ2UodGdfdGVtcG9yYWwsIHJpaW5mbykpCisJ eworCQlSYW5nZVR5cGUgKnIxID0gRGF0dW1HZXRSYW5nZVR5cGVQKHBrUmVjb3JkUmFuZ2Up OworCQlSYW5nZVR5cGUgKnIyID0gRGF0dW1HZXRSYW5nZVR5cGVQKHRnX3RlbXBvcmFsLT5m cF90YXJnZXRSYW5nZSk7CisJCU9pZCBybmd0eXBpZCA9IFJhbmdlVHlwZUdldE9pZChyMSk7 CisJCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJuZ3R5 cGlkLCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisJCXJldHVybiBSYW5nZVR5cGVQR2V0RGF0 dW0ocmFuZ2VfaW50ZXJzZWN0X2ludGVybmFsKHR5cGNhY2hlLCByMSwgcjIpKTsKKwl9CisJ ZWxzZQorCQlyZXR1cm4gcGtSZWNvcmRSYW5nZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMKaW5kZXggMTJhZWRlNWRhOS4uYjg4MTMwNDJkMCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTIyMDEsNiArMjIwMSw1OSBAQCBnZXRfdHlw aXNkZWZpbmVkKE9pZCB0eXBpZCkKIAkJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogZ2V0 X3R5cG5hbWUKKyAqCisgKgkgIFJldHVybnMgdGhlIG5hbWUgb2YgYSBnaXZlbiB0eXBlCisg KgorICogUmV0dXJucyBhIHBhbGxvYydkIGNvcHkgb2YgdGhlIHN0cmluZywgb3IgTlVMTCBp ZiBubyBzdWNoIHR5cGUuCisgKi8KK2NoYXIgKgorZ2V0X3R5cG5hbWUoT2lkIHR5cGlkKQor eworCUhlYXBUdXBsZSAgIHRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwg T2JqZWN0SWRHZXREYXR1bSh0eXBpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkK Kwl7CisJCUZvcm1fcGdfdHlwZSB0eXB0dXAgPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1Qo dHApOworCQljaGFyCSAgICpyZXN1bHQ7CisKKwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3Ry KHR5cHR1cC0+dHlwbmFtZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4g cmVzdWx0OworCX0KKwllbHNlCisJCXJldHVybiBOVUxMOworfQorCisvKgorICogZ2V0X3R5 cG5hbWVfYW5kX25hbWVzcGFjZQorICoKKyAqCSAgUmV0dXJucyB0aGUgbmFtZSBhbmQgbmFt ZXNwYWNlIG9mIGEgZ2l2ZW4gdHlwZQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBvbmUgZm91 bmQsIG9yIGZhbHNlIGlmIG5vdC4KKyAqLworYm9vbAorZ2V0X3R5cG5hbWVfYW5kX25hbWVz cGFjZShPaWQgdHlwaWQsIGNoYXIgKip0eXBuYW1lLCBjaGFyICoqdHlwbmFtZXNwYWNlKQor eworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVPSUQsIE9i amVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJ eworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RSVUNUKHRw KTsKKworCQkqdHlwbmFtZSA9IHBzdHJkdXAoTmFtZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsK KwkJKnR5cG5hbWVzcGFjZSA9IGdldF9uYW1lc3BhY2VfbmFtZSh0eXB0dXAtPnR5cG5hbWVz cGFjZSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCS8qICp0eXBuYW1lc3BhY2UgaXMg TlVMTCBpZiBpdCB3YXNuJ3QgZm91bmQ6ICovCisJCXJldHVybiAqdHlwbmFtZXNwYWNlOwor CX0KKwllbHNlCisJCXJldHVybiBmYWxzZTsKK30KKwogLyoKICAqIGdldF90eXBsZW4KICAq CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3RyYXRudW0uaCBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9zdHJhdG51bS5oCmluZGV4IDc4NDVkNTQwMTIuLmQzZmRmOGQ4ZTcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdHJhdG51bS5oCisrKyBiL3NyYy9pbmNs dWRlL2FjY2Vzcy9zdHJhdG51bS5oCkBAIC03OSw4ICs3OSwxMCBAQCB0eXBlZGVmIHVpbnQx NiBTdHJhdGVneU51bWJlcjsKICNkZWZpbmUgUlRQcmVmaXhTdHJhdGVneU51bWJlcgkJCTI4 CS8qIGZvciB0ZXh0IF5AICovCiAjZGVmaW5lIFJUT2xkQmVsb3dTdHJhdGVneU51bWJlcgkJ MjkJLyogZm9yIG9sZCBzcGVsbGluZyBvZiA8PHwgKi8KICNkZWZpbmUgUlRPbGRBYm92ZVN0 cmF0ZWd5TnVtYmVyCQkzMAkvKiBmb3Igb2xkIHNwZWxsaW5nIG9mIHw+PiAqLworI2RlZmlu ZSBSVEludGVyc2VjdFN0cmF0ZWd5TnVtYmVyCQkzMQkvKiBmb3IgKiAqLworI2RlZmluZSBS VFdpdGhvdXRQb3J0aW9uU3RyYXRlZ3lOdW1iZXIJMzIJLyogZm9yIEAtICovCiAKLSNkZWZp bmUgUlRNYXhTdHJhdGVneU51bWJlcgkJCQkzMAorI2RlZmluZSBSVE1heFN0cmF0ZWd5TnVt YmVyCQkJCTMyCiAKIAogI2VuZGlmCQkJCQkJCS8qIFNUUkFUTlVNX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2Ftb3AuZGF0CmluZGV4IGM0ZDZhZGNkM2UuLmJhYWY1OGYzZTEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfYW1vcC5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19hbW9wLmRhdApAQCAtMTEwOCw2ICsxMTA4LDkgQEAKIHsgYW1vcGZhbWls eSA9PiAnZ2lzdC9ib3hfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdib3gnLCBhbW9wcmlnaHR0 eXBlID0+ICdwb2ludCcsCiAgIGFtb3BzdHJhdGVneSA9PiAnMTUnLCBhbW9wcHVycG9zZSA9 PiAnbycsIGFtb3BvcHIgPT4gJzwtPihib3gscG9pbnQpJywKICAgYW1vcG1ldGhvZCA9PiAn Z2lzdCcsIGFtb3Bzb3J0ZmFtaWx5ID0+ICdidHJlZS9mbG9hdF9vcHMnIH0sCit7IGFtb3Bm YW1pbHkgPT4gJ2dpc3QvYm94X29wcycsIGFtb3BsZWZ0dHlwZSA9PiAnYm94JywgYW1vcHJp Z2h0dHlwZSA9PiAnYm94JywKKyAgYW1vcHN0cmF0ZWd5ID0+ICczMScsIGFtb3BwdXJwb3Nl ID0+ICdwJywgYW1vcG9wciA9PiAnIyhib3gsYm94KScsCisgIGFtb3BtZXRob2QgPT4gJ2dp c3QnIH0sCiAKICMgZ2lzdCBwb2ludF9vcHMKIHsgYW1vcGZhbWlseSA9PiAnZ2lzdC9wb2lu dF9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ3BvaW50JywKQEAgLTEzOTcsNiArMTQwMCwxMiBA QAogeyBhbW9wZmFtaWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAn YW55cmFuZ2UnLAogICBhbW9wcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFtb3BzdHJhdGVn eSA9PiAnMTgnLAogICBhbW9wb3ByID0+ICc9KGFueXJhbmdlLGFueXJhbmdlKScsIGFtb3Bt ZXRob2QgPT4gJ2dpc3QnIH0sCit7IGFtb3BmYW1pbHkgPT4gJ2dpc3QvcmFuZ2Vfb3BzJywg YW1vcGxlZnR0eXBlID0+ICdhbnlyYW5nZScsCisgIGFtb3ByaWdodHR5cGUgPT4gJ2FueXJh bmdlJywgYW1vcHN0cmF0ZWd5ID0+ICczMScsIGFtb3BwdXJwb3NlID0+ICdwJywKKyAgYW1v cG9wciA9PiAnKihhbnlyYW5nZSxhbnlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9 LAoreyBhbW9wZmFtaWx5ID0+ICdnaXN0L3JhbmdlX29wcycsIGFtb3BsZWZ0dHlwZSA9PiAn YW55cmFuZ2UnLAorICBhbW9wcmlnaHR0eXBlID0+ICdhbnlyYW5nZScsIGFtb3BzdHJhdGVn eSA9PiAnMzInLCBhbW9wcHVycG9zZSA9PiAncCcsCisgIGFtb3BvcHIgPT4gJ0AtKGFueXJh bmdlLGFueXJhbmdlKScsIGFtb3BtZXRob2QgPT4gJ2dpc3QnIH0sCiAKICMgR2lTVCBtdWx0 aXJhbmdlX29wcwogeyBhbW9wZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywgYW1v cGxlZnR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywKQEAgLTE0NTMsNiArMTQ2MiwxMiBAQAog eyBhbW9wZmFtaWx5ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywgYW1vcGxlZnR0eXBlID0+ ICdhbnltdWx0aXJhbmdlJywKICAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScs IGFtb3BzdHJhdGVneSA9PiAnMTgnLAogICBhbW9wb3ByID0+ICc9KGFueW11bHRpcmFuZ2Us YW55bXVsdGlyYW5nZSknLCBhbW9wbWV0aG9kID0+ICdnaXN0JyB9LAoreyBhbW9wZmFtaWx5 ID0+ICdnaXN0L211bHRpcmFuZ2Vfb3BzJywgYW1vcGxlZnR0eXBlID0+ICdhbnltdWx0aXJh bmdlJywKKyAgYW1vcHJpZ2h0dHlwZSA9PiAnYW55bXVsdGlyYW5nZScsIGFtb3BzdHJhdGVn eSA9PiAnMzEnLCBhbW9wcHVycG9zZSA9PiAncCcsCisgIGFtb3BvcHIgPT4gJyooYW55bXVs dGlyYW5nZSxhbnltdWx0aXJhbmdlKScsIGFtb3BtZXRob2QgPT4gJ2dpc3QnIH0sCit7IGFt b3BmYW1pbHkgPT4gJ2dpc3QvbXVsdGlyYW5nZV9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2Fu eW11bHRpcmFuZ2UnLAorICBhbW9wcmlnaHR0eXBlID0+ICdhbnltdWx0aXJhbmdlJywgYW1v cHN0cmF0ZWd5ID0+ICczMicsIGFtb3BwdXJwb3NlID0+ICdwJywKKyAgYW1vcG9wciA9PiAn QC0oYW55bXVsdGlyYW5nZSxhbnltdWx0aXJhbmdlKScsIGFtb3BtZXRob2QgPT4gJ2dpc3Qn IH0sCiAKICMgYnRyZWUgbXVsdGlyYW5nZV9vcHMKIHsgYW1vcGZhbWlseSA9PiAnYnRyZWUv bXVsdGlyYW5nZV9vcHMnLCBhbW9wbGVmdHR5cGUgPT4gJ2FueW11bHRpcmFuZ2UnLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hbW9wLmggYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2Ftb3AuaAppbmRleCBjOWJiN2I0Nzg3Li5mOGI5NGFmNmZmIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2Ftb3AuaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2Ftb3AuaApAQCAtOTYsNiArOTYsNyBAQCBERUNMQVJFX1VOSVFVRV9JTkRF WF9QS0VZKHBnX2Ftb3Bfb2lkX2luZGV4LCAyNzU2LCBBY2Nlc3NNZXRob2RPcGVyYXRvck9p ZEluZGV4SQogLyogYWxsb3dlZCB2YWx1ZXMgb2YgYW1vcHB1cnBvc2U6ICovCiAjZGVmaW5l IEFNT1BfU0VBUkNICQkncycJCS8qIG9wZXJhdG9yIGlzIGZvciBzZWFyY2ggKi8KICNkZWZp bmUgQU1PUF9PUkRFUgkJJ28nCQkvKiBvcGVyYXRvciBpcyBmb3Igb3JkZXJpbmcgKi8KKyNk ZWZpbmUgQU1PUF9QT1JUSU9OCSdwJwkJLyogb3BlcmF0b3IgaXMgZm9yIEZPUiBQT1JUSU9O IE9GICovCiAKICNlbmRpZgkJCQkJCQkvKiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIvc3JjL2luY2x1 ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDQzMGUzY2E3ZGQuLmIzZDkwZGVhYTcgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysgYi9zcmMvaW5j bHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgVHJpZ2dlckRhdGEKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX29sZHRhYmxlOwogCVR1cGxl c3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7CiAJY29uc3QgQml0bWFwc2V0ICp0Z191cGRhdGVk Y29sczsKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWw7CiB9IFRyaWdnZXJEYXRh OwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA1ZDdmMTdkZWUwLi5iOTQwMmQy OWQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNDEsMTIgKzQxLDE0IEBACiAjaW5j bHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJ1dGlscy9o c2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5oIgorI2luY2x1 ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0cmlnZ2VyLmgi CiAjaW5jbHVkZSAidXRpbHMvc2hhcmVkdHVwbGVzdG9yZS5oIgogI2luY2x1ZGUgInV0aWxz L3NuYXBzaG90LmgiCiAjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIKICNpbmNsdWRl ICJ1dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0b3JlLmgiCisj aW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAogc3RydWN0IFBsYW5TdGF0ZTsJCQkJLyog Zm9yd2FyZCByZWZlcmVuY2VzIGluIHRoaXMgZmlsZSAqLwogc3RydWN0IFBhcmFsbGVsSGFz aEpvaW5TdGF0ZTsKQEAgLTQyMSw2ICs0MjMsMjcgQEAgdHlwZWRlZiBzdHJ1Y3QgTWVyZ2VB Y3Rpb25TdGF0ZQogCUV4cHJTdGF0ZSAgKm1hc193aGVucXVhbDsJLyogV0hFTiBbTk9UXSBN QVRDSEVEIEFORCBjb25kaXRpb25zICovCiB9IE1lcmdlQWN0aW9uU3RhdGU7CiAKKy8qCisg KiBGb3JQb3J0aW9uT2ZTdGF0ZQorICoKKyAqIEV4ZWN1dG9yIHN0YXRlIG9mIGEgRk9SIFBP UlRJT04gT0Ygb3BlcmF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZT dGF0ZQoreworCU5vZGVUYWcJCXR5cGU7CisKKwljaGFyICAgKmZwX3JhbmdlTmFtZTsJCS8q IHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQT1JUSU9OIE9GICovCisJT2lkCQlm cF9yYW5nZVR5cGU7CQkvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVz c2lvbiAqLworCWJvb2wJZnBfaGFzUGVyaW9kOwkJLyogdHJ1ZSBpZmYgdGhpcyBpcyBhIFBF UklPRCBub3QgYSByYW5nZSAqLworCWludAkJZnBfcmFuZ2VBdHRubzsJCS8qIHRoZSBhdHRu byBvZiB0aGUgcmFuZ2UgY29sdW1uIChvciAwIGZvciBhIFBFUklPRCkgKi8KKwlpbnQJCWZw X3BlcmlvZFN0YXJ0QXR0bm87CS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9EIHN0YXJ0IGNv bHVtbiAob3IgMCBmb3IgYSByYW5nZSkgKi8KKwlpbnQJCWZwX3BlcmlvZEVuZEF0dG5vOwkJ LyogdGhlIGF0dG5vIG9mIHRoZSBQRVJJT0QgZW5kIGNvbHVtbiAob3IgMCBmb3IgYSByYW5n ZSkgKi8KKwlEYXR1bQlmcF90YXJnZXRSYW5nZTsJCS8qIHRoZSByYW5nZSBmcm9tIEZPUiBQ T1JUSU9OIE9GICovCisJVHlwZUNhY2hlRW50cnkgKmZwX2xlZnRvdmVyc3R5cGNhY2hlOwkv KiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRoZSByYW5nZSAqLworCVR1cGxlVGFibGVTbG90ICpm cF9FeGlzdGluZzsJCS8qIHNsb3QgdG8gc3RvcmUgZXhpc3RpbmcgdGFyZ2V0IHR1cGxlIGlu ICovCisJVHVwbGVUYWJsZVNsb3QgKmZwX0xlZnRvdmVyOwkJLyogc2xvdCB0byBzdG9yZSBs ZWZ0b3ZlciAqLworfSBGb3JQb3J0aW9uT2ZTdGF0ZTsKKwogLyoKICAqIFJlc3VsdFJlbElu Zm8KICAqCkBAIC01NDEsNiArNTY0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0UmVsSW5m bwogCUxpc3QJICAgKnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKIAlMaXN0CSAgICpyaV9ub3RN YXRjaGVkTWVyZ2VBY3Rpb247CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBldmFsdWF0aW9uIHN0 YXRlICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKnJpX2ZvclBvcnRpb25PZjsKKwogCS8qIHBh cnRpdGlvbiBjaGVjayBleHByZXNzaW9uIHN0YXRlIChOVUxMIGlmIG5vdCBzZXQgdXAgeWV0 KSAqLwogCUV4cHJTdGF0ZSAgKnJpX1BhcnRpdGlvbkNoZWNrRXhwcjsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCmluZGV4IDAzYzVlNzA3YjkuLmQxMzA0NDU4MDAgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmgKQEAgLTE0MSw2ICsxNDEsOSBAQCB0eXBlZGVmIHN0cnVjdCBRdWVy eQogCSAqLwogCWludAkJCXJlc3VsdFJlbGF0aW9uIHBnX25vZGVfYXR0cihxdWVyeV9qdW1i bGVfaWdub3JlKTsKIAorCS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBEQVRFL0RF TEVURSAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwogCS8qIGhhcyBh Z2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNBZ2dzIHBn X25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93IGZ1bmN0 aW9ucyBpbiB0bGlzdCAqLwpAQCAtMTUzMCw2ICsxNTMzLDIxIEBAIHR5cGVkZWYgc3RydWN0 IFJvd01hcmtDbGF1c2UKIAlib29sCQlwdXNoZWREb3duOwkJLyogcHVzaGVkIGRvd24gZnJv bSBoaWdoZXIgcXVlcnkgbGV2ZWw/ICovCiB9IFJvd01hcmtDbGF1c2U7CiAKKy8qCisgKiBG b3JQb3J0aW9uT2ZDbGF1c2UKKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBGT1IgUE9SVElPTiBP RiA8cGVyaW9kLW5hbWU+IEZST00gPHRzPiBUTyA8dGU+CisgKgkJb3IgRk9SIFBPUlRJT04g T0YgPHBlcmlvZC1uYW1lPiAoPHRhcmdldD4pCisgKi8KK3R5cGVkZWYgc3RydWN0IEZvclBv cnRpb25PZkNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqcmFuZ2VfbmFt ZTsKKwlpbnQJCQlyYW5nZV9uYW1lX2xvY2F0aW9uOworCU5vZGUJICAgKnRhcmdldDsKKwlO b2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJTm9kZQkgICAqdGFyZ2V0X2VuZDsKK30gRm9yUG9y dGlvbk9mQ2xhdXNlOworCiAvKgogICogV2l0aENsYXVzZSAtCiAgKgkgICByZXByZXNlbnRh dGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAtMTg5MywxMiArMTkxMSwxMyBAQCB0eXBlZGVmIHN0 cnVjdCBJbnNlcnRTdG10CiAgKi8KIHR5cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKIHsKLQlO b2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8g ZGVsZXRlIGZyb20gKi8KLQlMaXN0CSAgICp1c2luZ0NsYXVzZTsJLyogb3B0aW9uYWwgdXNp bmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkv KiBxdWFsaWZpY2F0aW9ucyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qg b2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJ CS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAq cmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBkZWxldGUgZnJvbSAqLworCUZvclBvcnRpb25P ZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlM aXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1c2luZyBjbGF1c2UgZm9yIG1v cmUgdGFibGVzICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlv bnMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lv bnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRI IGNsYXVzZSAqLwogfSBEZWxldGVTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t CkBAIC0xOTA3LDEzICsxOTI2LDE0IEBAIHR5cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKICAq LwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3RtdAogewotCU5vZGVUYWcJCXR5cGU7Ci0JUmFu Z2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KLQlMaXN0CSAg ICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCi0J Tm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAq ZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAq LwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8g cmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICov CisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxh dGlvbiB0byB1cGRhdGUgKi8KKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZjsJ LyogRk9SIFBPUlRJT04gT0YgY2xhdXNlICovCisJTGlzdAkJCSAgICp0YXJnZXRMaXN0OwkJ LyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNUYXJnZXQpICovCisJTm9kZQkJCSAgICp3aGVy ZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKmZyb21DbGF1c2U7 CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBmb3IgbW9yZSB0YWJsZXMgKi8KKwlMaXN0CQkJ ICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICov CisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBV cGRhdGVTdG10OwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCmluZGV4IGVkODVkYzc0MTQuLjU0YWNhZGM4ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCkBAIC0yMzUyLDYgKzIzNTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJs ZVBhdGgKIAlMaXN0CSAgICpyZXR1cm5pbmdMaXN0czsgLyogcGVyLXRhcmdldC10YWJsZSBS RVRVUk5JTkcgdGxpc3RzICovCiAJTGlzdAkgICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFy a3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Q7 IC8qIE9OIENPTkZMSUNUIGNsYXVzZSwgb3IgTlVMTCAqLworCUZvclBvcnRpb25PZkV4cHIg KmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVM RVRFICovCiAJaW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5R dWFsIHJlLWV2YWwgKi8KIAlMaXN0CSAgICptZXJnZUFjdGlvbkxpc3RzOwkvKiBwZXItdGFy Z2V0LXRhYmxlIGxpc3RzIG9mIGFjdGlvbnMgZm9yCiAJCQkJCQkJCQkgKiBNRVJHRSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCBkNDBhZjhlNTlmLi5lZDhmZjczMThlIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjQzLDYgKzI0Myw3IEBAIHR5cGVkZWYgc3RydWN0 IE1vZGlmeVRhYmxlCiAJTGlzdAkgICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5v bi1sb2NraW5nIG9ubHkpICovCiAJaW50CQkJZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBm b3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KIAlPbkNvbmZsaWN0QWN0aW9uIG9uQ29uZmxp Y3RBY3Rpb247CS8qIE9OIENPTkZMSUNUIGFjdGlvbiAqLworCU5vZGUJICAgKmZvclBvcnRp b25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJ TGlzdAkgICAqYXJiaXRlckluZGV4ZXM7IC8qIExpc3Qgb2YgT04gQ09ORkxJQ1QgYXJiaXRl ciBpbmRleCBPSURzICAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RTZXQ7CS8qIElOU0VSVCBP TiBDT05GTElDVCBETyBVUERBVEUgdGFyZ2V0bGlzdCAqLwogCUxpc3QJICAgKm9uQ29uZmxp Y3RDb2xzOyAvKiB0YXJnZXQgY29sdW1uIG51bWJlcnMgZm9yIG9uQ29uZmxpY3RTZXQgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXggYmI5MzBhZmI1Mi4uYzYxOGUzZDU1MSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIwNjgsNCArMjA2OCwzMCBAQCB0eXBlZGVmIHN0 cnVjdCBPbkNvbmZsaWN0RXhwcgogCUxpc3QJICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qg b2YgdGhlIEVYQ0xVREVEIHBzZXVkbyByZWxhdGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsK IAorLyotLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZFeHByIC0gcmVwcmVzZW50cyBhIEZP UiBQT1JUSU9OIE9GIC4uLiBleHByZXNzaW9uCisgKgorICogV2Ugc2V0IHVwIGFuIGV4cHJl c3Npb24gdG8gbWFrZSBhIHJhbmdlIGZyb20gdGhlIEZST00vVE8gYm91bmRzLAorICogc28g dGhhdCB3ZSBjYW4gdXNlIHJhbmdlIG9wZXJhdG9ycyB3aXRoIGl0LgorICoKKyAqIFRoZW4g d2Ugc2V0IHVwIGFuIG92ZXJsYXBzIGV4cHJlc3Npb24gYmV0d2VlbiB0aGF0IGFuZCB0aGUg cmFuZ2UgY29sdW1uLAorICogc28gdGhhdCB3ZSBjYW4gZmluZCB0aGUgcm93cyB3ZSBuZWVk IHRvIHVwZGF0ZS9kZWxldGUuCisgKgorICogSW4gdGhlIGV4ZWN1dG9yIHdlJ2xsIGFsc28g YnVpbGQgYW4gaW50ZXJzZWN0IGV4cHJlc3Npb24gYmV0d2VlbiB0aGUKKyAqIHRhcmdldGVk IHJhbmdlIGFuZCB0aGUgcmFuZ2UgY29sdW1uLCBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgdGhl IHN0YXJ0L2VuZAorICogYm91bmRzIG9mIHRoZSBVUERBVEUnZCByZWNvcmQuCisgKi0tLS0t LS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mRXhwcgoreworCU5vZGVU YWcJCXR5cGU7CisJVmFyCQkgICAqcmFuZ2VWYXI7CQkJLyogUmFuZ2UgY29sdW1uICovCisJ Y2hhcgkgICAqcmFuZ2VfbmFtZTsJCQkvKiBSYW5nZSBuYW1lICovCisJTm9kZQkgICAqdGFy Z2V0UmFuZ2U7CQkvKiBGT1IgUE9SVElPTiBPRiBib3VuZHMgYXMgYSByYW5nZSAqLworCU9p ZAkJCXJhbmdlVHlwZTsJCQkvKiB0eXBlIG9mIHRhcmdldFJhbmdlICovCisJTm9kZQkgICAq b3ZlcmxhcHNFeHByOwkJLyogcmFuZ2UgJiYgdGFyZ2V0UmFuZ2UgKi8KKwlMaXN0CSAgICpy YW5nZVNldDsJCQkvKiBMaXN0IG9mIFRhcmdldEVudHJ5cyB0byBzZXQgdGhlIHRpbWUgY29s dW1uKHMpICovCisJT2lkCQkJd2l0aG91dFBvcnRpb25Qcm9jOwkvKiBwcm9jIGZvciBvbGRf cmFuZ2UgQC0gdGFyZ2V0X3JhbmdlICovCit9IEZvclBvcnRpb25PZkV4cHI7CisKICNlbmRp ZgkJCQkJCQkvKiBQUklNTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BhdGhub2RlLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaApp bmRleCA2ZTU1N2JlYmM0Li5jOTMyZDEyMDRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9v cHRpbWl6ZXIvcGF0aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5v ZGUuaApAQCAtMjgzLDcgKzI4Myw4IEBAIGV4dGVybiBNb2RpZnlUYWJsZVBhdGggKmNyZWF0 ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJTGlz dCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRp b25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICpyb3dN YXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJCQkJCQkJCQlMaXN0ICpt ZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pOworCQkJCQkJCQkJCQkJTGlzdCAqbWVy Z2VBY3Rpb25MaXN0cywKKwkJCQkJCQkJCQkJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRp b25PZiwgaW50IGVwcVBhcmFtKTsKIGV4dGVybiBMaW1pdFBhdGggKmNyZWF0ZV9saW1pdF9w YXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQlQYXRo ICpzdWJwYXRoLAogCQkJCQkJCQkJTm9kZSAqbGltaXRPZmZzZXQsIE5vZGUgKmxpbWl0Q291 bnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2FuYWx5emUuaAppbmRleCBjOTY0ODNhZTc4Li5iNmQ1MDY1ZTEyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCisrKyBiL3NyYy9pbmNs dWRlL3BhcnNlci9hbmFseXplLmgKQEAgLTQzLDcgKzQzLDggQEAgZXh0ZXJuIExpc3QgKnRy YW5zZm9ybUluc2VydFJvdyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmV4cHJsaXN0LAog CQkJCQkJCQlMaXN0ICpzdG10Y29scywgTGlzdCAqaWNvbHVtbnMsIExpc3QgKmF0dHJub3Ms CiAJCQkJCQkJCWJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOwogZXh0ZXJuIExpc3QgKnRyYW5z Zm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAotCQkJCQkJCQkJICAg TGlzdCAqb3JpZ1RsaXN0KTsKKwkJCQkJCQkJCSAgIExpc3QgKm9yaWdUbGlzdCwKKwkJCQkJ CQkJCSAgIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZik7CiBleHRlcm4gUXVlcnkg KnRyYW5zZm9ybVRvcExldmVsU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJhd1N0bXQgKnBh cnNlVHJlZSk7CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9ybVN0bXQoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBOb2RlICpwYXJzZVRyZWUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJz ZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKaW5kZXggY2NmNWJm OGFhNi4uYzg5Y2VlYTlmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAtMzMwLDYgKzMzMCw3 IEBAIFBHX0tFWVdPUkQoInBlcmlvZCIsIFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBV TlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJwb3J0aW9uIiwg UE9SVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cG9zaXRpb24iLCBQT1NJVElPTiwgQ09MX05BTUVfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInByZWNlZGluZyIsIFBSRUNFRElORywgVU5SRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2lzaW9uIiwgUFJFQ0lTSU9OLCBDT0xfTkFN RV9LRVlXT1JELCBBU19MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IGY1 ODkxMTJkNWUuLjBkNjAxZjM0YTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9w YXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAt NTYsNiArNTYsNyBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lORF9V UERBVEVfU09VUkNFLAkvKiBVUERBVEUgYXNzaWdubWVudCBzb3VyY2UgaXRlbSAqLwogCUVY UFJfS0lORF9VUERBVEVfVEFSR0VULAkvKiBVUERBVEUgYXNzaWdubWVudCB0YXJnZXQgaXRl bSAqLwogCUVYUFJfS0lORF9NRVJHRV9XSEVOLAkJLyogTUVSR0UgV0hFTiBbTk9UXSBNQVRD SEVEIGNvbmRpdGlvbiAqLworCUVYUFJfS0lORF9VUERBVEVfUE9SVElPTiwJLyogVVBEQVRF IEZPUiBQT1JUSU9OIE9GIGl0ZW0gKi8KIAlFWFBSX0tJTkRfR1JPVVBfQlksCQkJLyogR1JP VVAgQlkgKi8KIAlFWFBSX0tJTkRfT1JERVJfQlksCQkJLyogT1JERVIgQlkgKi8KIAlFWFBS X0tJTkRfRElTVElOQ1RfT04sCQkvKiBESVNUSU5DVCBPTiAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaAppbmRleCBlODJmYjZmNDI1Li40YjUyZTJkZmRlIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaApAQCAtMTQ0LDYgKzE0NCw4IEBAIGV4dGVybiBjaGFyIGdldF9yZWxfcGVyc2lzdGVu Y2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9mcm9tc3FsKE9pZCB0 eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJuIE9pZAlnZXRfdHJh bnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwog ZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOworZXh0ZXJuIGNoYXIg KmdldF90eXBuYW1lKE9pZCB0eXBpZCk7CitleHRlcm4gYm9vbCBnZXRfdHlwbmFtZV9hbmRf bmFtZXNwYWNlKE9pZCB0eXBpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBuYW1lc3Bh Y2UpOwogZXh0ZXJuIGludDE2IGdldF90eXBsZW4oT2lkIHR5cGlkKTsKIGV4dGVybiBib29s IGdldF90eXBieXZhbChPaWQgdHlwaWQpOwogZXh0ZXJuIHZvaWQgZ2V0X3R5cGxlbmJ5dmFs KE9pZCB0eXBpZCwgaW50MTYgKnR5cGxlbiwgYm9vbCAqdHlwYnl2YWwpOwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZXJp b2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wYThhZjNlZGIw Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKQEAgLTAs MCArMSwxOSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGVyaW9kLmgKKyAq CSAgc3VwcG9ydCBmb3IgUG9zdGdyZXMgcGVyaW9kcy4KKyAqCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3V0aWxzL3Bl cmlvZC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5kZWYgUEVSSU9E X0gKKyNkZWZpbmUgUEVSSU9EX0gKKworZXh0ZXJuIERhdHVtIHBlcmlvZF90b19yYW5nZShU dXBsZVRhYmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lk IHJhbmdldHlwZSk7CisKKyNlbmRpZgkJCQkJCQkvKiBQRVJJT0RfSCAqLwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41YjQ0YTFhNGRkCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKQEAgLTAs MCArMSw0NTAgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUvREVMRVRFIEZPUiBQT1JUSU9OIE9G CistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9u X29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5h bWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3Qg VkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMjAtMDEtMDEpJywgJ29uZScpOwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZm9vJzsKK0RF TEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMTUnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsx LDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJUdWUgSmFuIDE1IDAwOjAwOjAwIDIwMTkiKSB8IG9uZQorKDMg cm93cykKKworLS0gV29ya3Mgb24gbW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBUQUJMRSBm b3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Qg KAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxpZDJfYXQg dHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3Bv cnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0w MyknLCAnWzIwMTUtMDEtMDEsMjAyNS0wMS0wMSknLCAnb25lJyk7CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEt MTUnIFRPIE5VTEwKK1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9h dCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZDJfYXQgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIg MDMgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBvbmUKKygy IHJvd3MpCisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAorU0VUIG5hbWUgPSAnYmFyJzsK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwg bmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAw MDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisg WzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6 MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIw MTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsi VHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4Iikg fCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIpIHwgb25lCisoNCByb3dzKQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gTlVMTDsK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwg bmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAw MDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisg WzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6 MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIw MTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsi TW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4Iikg fCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIpIHwgZm9vCisoNCByb3dzKQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gTlVMTDsK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwg bmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAw MDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4g MDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisg WzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6 MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIw MTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBiYXIKKyBbMSwyKSB8IFsi TW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4Iikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAx OCIpIHwgYmFyCisoNCByb3dzKQorCistLSBUZXN0IHdpdGggTlVMTHMgaW4gdGhlIHNjYWxh ci9yYW5nZSBrZXkgY29sdW1ucy4KKy0tIFRoaXMgd29uJ3QgaGFwcGVuIGlmIHRoZXJlIGlz IGEgUFJJTUFSWSBLRVkgb3IgVU5JUVVFIGNvbnN0cmFpbnQKKy0tIGJ1dCBGT1IgUE9SVElP TiBPRiBzaG91bGRuJ3QgcmVxdWlyZSB0aGF0LgorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9v Zl90ZXN0OworQ1JFQVRFIFVOTE9HR0VEIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAor ICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dAorKTsK K0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisgICgnWzEsMV0nLCBO VUxMLCAnMSBudWxsJyksCisgICgnWzEsMV0nLCAnKCwpJywgJzEgdW5ib3VuZGVkJyksCisg ICgnWzEsMV0nLCAnZW1wdHknLCAnMSBlbXB0eScpLAorICAoTlVMTCwgTlVMTCwgTlVMTCks CisgIChOVUxMLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTktMDEtMDEnKSwgJ251bGwg a2V5Jyk7CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorICBTRVQgbmFtZSA9ICdOVUxMIHRvIE5VTEwn OworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICBuYW1lICAgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tCisgWzEsMikgfCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwg MSBudWxsCisgWzEsMikgfCBlbXB0eSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgMSBlbXB0eQorICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IAorIFsxLDIpIHwg KCwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IE5VTEwgdG8gTlVMTAorICAgICAgIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IE5VTEwgdG8gTlVMTAorKDUgcm93cykK KworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9w b3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0 IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5U IGZvcl9wb3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0CitWQUxVRVMK KygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFd JywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAx OC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEs MjAxOC0wMS0wNSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhy ZWUnKSwKKygnWzQsNF0nLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyksCisoJ1s1LDVdJywg JygsKScsICdmaXZlJykKKzsKKy0tCistLSBVUERBVEUgdGVzdHMKKy0tCistLSBTZXR0aW5n IHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVM TAorU0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICBjb2x1 bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2Zf dGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIFNldHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAor U0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworV0hFUkUgaWQgPSAn WzUsNV0nOworRVJST1I6ICBjYW4ndCBkaXJlY3RseSBhc3NpZ24gdG8gInZhbGlkX2F0IiBp biBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZQorTElORSAzOiBTRVQgdmFsaWRfYXQgPSAnWzE5 OTAtMDEtMDEsMTk5OS0wMS0wMSknCisgICAgICAgICAgICBeCistLSBUaGUgd3JvbmcgdHlw ZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gMSBUTyA0CitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMs M10nOworRVJST1I6ICBmdW5jdGlvbiBwZ19jYXRhbG9nLnRzcmFuZ2UoaW50ZWdlciwgaW50 ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAxIFRPIDQKKyAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE5vIGZ1bmN0 aW9uIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWUgYW5kIGFyZ3VtZW50IHR5cGVzLiBZb3UgbWln aHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlwZSBjYXN0cy4KKy0tIFNldHRpbmcgd2l0aCB0 aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEt MDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6 ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5n ZSB1cHBlciBib3VuZAorLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChT RUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUn CitXSEVSRSBpZCA9ICdbMywzXSc7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4g Rk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0uLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHdpdGggYSBjb2x1 bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBOVUxMCitTRVQgbmFtZSA9ICdub3Bl JworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICBjYW5ub3QgdXNlIGNvbHVtbiByZWZl cmVuY2UgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAyOiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBOVUxMCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB3aXRoIHRp bWVzdGFtcHMgZXF1YWwgZG9lcyBub3RoaW5nCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgt MDQtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4wJworV0hFUkUgaWQgPSAnWzMsM10nOworLS0g VXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hF UkUgaWQgPSAnWzMsM10nOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdp dGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAzLTAxJworU0VU IG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDNdJzsKKy0tIFVwZGF0aW5nIGFu IG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjEnCitXSEVSRSBpZCA9ICdb NCw0XSc7CistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYSBmaW5p dGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdm b3VyXjInCitXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9maW5p dGUgcG9ydGlvbiB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDE4 LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNF0nOworLS0g VXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9 ICd0d29eMicKK1dIRVJFIGlkID0gJ1syLDJdJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3Bl biBwb3J0aW9uIHdpdGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEn IFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUs NV0nOworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3Ry dWRpbmcgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1l ID0gJ2ZpdmVeMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIFVwZGF0aW5nIG11bHRpcGxl IGVuY2xvc2VkIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1NFVCBuYW1lID0gJ29uZV4yJwor V0hFUkUgaWQgPSAnWzEsMV0nOworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBj b25mbGljdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScg SE9VUiBUTyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycK K1dIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVe NCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5l YXIgIicyMDE5LTAxLTAxJyIKK0xJTkUgNDogICBUTyAnMjAxOS0wMS0wMScKKyAgICAgICAg ICAgICBeCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMicg SE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJFIGlk ID0gJ1sxLDFdJzsKKy0tIFdpdGggYSBkaXJlY3QgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRp b25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgKHRzcmFuZ2UoJzIwMTgtMDMt MTAnLCAnMjAxOC0wMy0xNycpKQorU0VUIG5hbWUgPSAnb25lXjUnCitXSEVSRSBpZCA9ICdb MSwxXSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBhcnQgb2YgdGhlIFBLOgorVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw2XScKK1dIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMzAtMDEtMDEn IFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CitTRUxFQ1QgKiBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAg ICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg bmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAy IDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IG9uZV4yCisg WzEsMikgfCBbIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6 MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29eMgorIFszLDQpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSB8IHRo cmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAw MSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFszLDQpIHwgWyJGcmkgSnVuIDAxIDAwOjAw OjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IHRocmVlXjEKKyBbMyw0 KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4g SmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZv dXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAx IDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDow MDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8 IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBmaXZlXjMK KyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDow MDowMCAyMDMwIikgfCBmaXZlCisgWzUsNikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAz MCIsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZSoKKyBbNiw3KSB8IFsiVGh1 IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwODowMTowMCAyMDE4IikgfCBv bmVeMgorIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDA4OjAxOjAwIDIwMTgiLCJUaHUgTWFyIDAx IDEwOjAwOjAwIDIwMTgiKSB8IG9uZV4zCisgWzYsNykgfCBbIlRodSBNYXIgMDEgMTA6MDA6 MDAgMjAxOCIsIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQKKyBbNiw3KSB8 IFsiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IiwiU2F0IE1hciAxMCAwMDowMDowMCAyMDE4 IikgfCBvbmVeNAorIFs2LDcpIHwgWyJTYXQgTWFyIDEwIDAwOjAwOjAwIDIwMTgiLCJTYXQg TWFyIDE3IDAwOjAwOjAwIDIwMTgiKSB8IG9uZV41CisgWzYsNykgfCBbIlNhdCBNYXIgMTcg MDA6MDA6MDAgMjAxOCIsIldlZCBBcHIgMDQgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjQKKygy MiByb3dzKQorCistLQorLS0gREVMRVRFIHRlc3RzCistLQorLS0gRGVsZXRpbmcgd2l0aCBh IG1pc3NpbmcgY29sdW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIE5VTEwK K1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBlcmlvZCAiaW52YWxp ZF9hdCIgb2YgcmVsYXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRvZXMgbm90IGV4aXN0 CitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScg VE8gTlVMTAorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBEZWxldGluZyB3aXRoIHRp bWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4 LTAxLTAxJworV0hFUkUgaWQgPSAnWzMsM10nOworRVJST1I6ICByYW5nZSBsb3dlciBib3Vu ZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBlciBib3VuZAorLS0g RGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdbMywzXSc7CistLSBE ZWxldGluZyB3aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPICcyMDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gRGVsZXRpbmcg d2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVM TAorV0hFUkUgaWQgPSAnWzMsM10nOworLS0gRGVsZXRpbmcgd2l0aCBhbiBvcGVuL2Nsb3Nl ZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dIRVJFIGlkID0gJ1sx LDFdJzsKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBO VUxMIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s2LDZdJzsKKy0tIERFTEVURSB3aXRoIG5vIFdI RVJFIGNsYXVzZQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0wMScgVE8gTlVMTDsKK1NFTEVDVCAqIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsxLDIpIHwgWyJUaHUg RmViIDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9u ZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUg MDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkg fCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAx OCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAw MSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMK KyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDow MDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAg MjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1 biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwg Zml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4g MDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6 MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZml2ZQorKDExIHJv d3MpCisKKy0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25seSB0aGUgdXBkYXRl ZCB2YWx1ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0w MScgVE8gJzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJworV0hFUkUgaWQgPSAn WzMsM10nCitSRVRVUk5JTkcgKjsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlRo dSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworKDEgcm93KQorCistLSB0ZXN0 IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cgYW5kIHRo ZSBJTlNFUlRlZCByb3dzCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dl cigpCitSRVRVUk5TIHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJU0UgTk9USUNFICcl ICUgJSBvZiAlJywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9hdCwgT0xELnZhbGlkX2F0 OworICBJRiBUR19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSRVRVUk4gT0xEOworICBFTFNF CisgICAgUkVUVVJOIE5FVzsKKyAgRU5EIElGOworRU5EOworJCQKK0xBTkdVQUdFIHBscGdz cWw7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlCisgIEJFRk9S RSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0Cisg IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdn ZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcgorICBBRlRF UiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0Cisg IEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdn ZXIoKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2Zp dmVeNCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK05PVElDRTogIEJFRk9SRSBVUERBVEUgWyJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSBv ZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy NSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBCRUZP UkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJNb24gSnVu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSBvZiA8TlVM TD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIg VVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAwMSAwMDowMDow MCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjUiKQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEtMDEnCitX SEVSRSBpZCA9ICdbNSw1XSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRFIDxOVUxMPiBvZiBb IlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIp CitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwi U3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJQ0U6ICBCRUZPUkUg SU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQgWyJTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSBvZiA8TlVMTD4K K05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgREVM RVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyNSIpCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDowMCAyMDE4IiwiVGh1 IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwgWyJNb24gSmFuIDAx IDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSB8IHR3b14yCisg WzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMKKyBbMyw0KSB8IFsi VGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4Iikg fCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBB cHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEg MDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBb NCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDow MCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1 biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBm aXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikg fCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgZml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQg SmFuIDAxIDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAorIFs1LDYpIHwgWyJTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMiKSB8IGZpdmUKKyBb NSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDI1IikgfCBmaXZlCisoMTYgcm93cykKKworLS0gVGVzdCB3aXRoIGEgY3VzdG9tIHJh bmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5cGU9ZGF0 ZSk7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAorICBpZCBpbnQ0cmFu Z2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBOVUxMLAorICBuYW1l IHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl90ZXN0Ml9wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJU IElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwxXScsICdbMjAxOC0w MS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMsMjAx OC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQp JywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1LTAxKScsICd0d28n KSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOworOworVVBEQVRFIGZv cl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29uZV4xJworV0hFUkUgaWQg PSAnWzEsMV0nOworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4LTAyLTE1JworV0hF UkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0MiBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0K KyBbMSwyKSB8IFswMS0wMi0yMDE4LDAxLTEwLTIwMTgpIHwgb25lCisgWzEsMikgfCBbMDEt MTAtMjAxOCwwMi0wMy0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMDMtMjAxOCwwMi0x MC0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMTAtMjAxOCwwMy0wMy0yMDE4KSB8IG9u ZQorIFsxLDIpIHwgWzAzLTAzLTIwMTgsMDQtMDQtMjAxOCkgfCBvbmUKKyBbMiwzKSB8IFsw MS0wMS0yMDE4LDAxLTE1LTIwMTgpIHwgdHdvCisgWzIsMykgfCBbMDItMTUtMjAxOCwwNS0w MS0yMDE4KSB8IHR3bworIFszLDQpIHwgWzAxLTAxLTIwMTgsKSAgICAgICAgICAgfCB0aHJl ZQorKDggcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MjsKK0RST1Ag VFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvb3ByX3Nhbml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL29wcl9zYW5p dHkub3V0CmluZGV4IDc2MTBiMDExZDYuLmRhMDc5Y2ZjNTggMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvb3ByX3Nhbml0eS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9vcHJfc2FuaXR5Lm91dApAQCAtMTk0Miw2ICsxOTQyLDcgQEAgV0hF UkUgYTEuYW1vcGZhbWlseSA9IDAgT1IgYTEuYW1vcGxlZnR0eXBlID0gMCBPUiBhMS5hbW9w cmlnaHR0eXBlID0gMAogU0VMRUNUIGExLmFtb3BmYW1pbHksIGExLmFtb3BzdHJhdGVneQog RlJPTSBwZ19hbW9wIGFzIGExCiBXSEVSRSBOT1QgKChhMS5hbW9wcHVycG9zZSA9ICdzJyBB TkQgYTEuYW1vcHNvcnRmYW1pbHkgPSAwKSBPUgorICAgICAgICAgICAoYTEuYW1vcHB1cnBv c2UgPSAncCcgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5ID0gMCkgT1IKICAgICAgICAgICAgKGEx LmFtb3BwdXJwb3NlID0gJ28nIEFORCBhMS5hbW9wc29ydGZhbWlseSA8PiAwKSk7CiAgYW1v cGZhbWlseSB8IGFtb3BzdHJhdGVneSAKIC0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQpA QCAtMjAwOCw2ICsyMDA5LDkgQEAgT1JERVIgQlkgMSwgMiwgMzsKICAgICAgICAgNzgzIHwg ICAgICAgICAgIDI4IHwgPEAKICAgICAgICAgNzgzIHwgICAgICAgICAgIDI5IHwgPF4KICAg ICAgICAgNzgzIHwgICAgICAgICAgIDMwIHwgPl4KKyAgICAgICAgNzgzIHwgICAgICAgICAg IDMxIHwgIworICAgICAgICA3ODMgfCAgICAgICAgICAgMzEgfCAqCisgICAgICAgIDc4MyB8 ICAgICAgICAgICAzMiB8IEAtCiAgICAgICAgIDc4MyB8ICAgICAgICAgICA0OCB8IDxACiAg ICAgICAgIDc4MyB8ICAgICAgICAgICA2OCB8IDxACiAgICAgICAgMjc0MiB8ICAgICAgICAg ICAgMSB8ICYmCkBAIC0yMDg4LDcgKzIwOTIsNyBAQCBPUkRFUiBCWSAxLCAyLCAzOwogICAg ICAgIDQwMDAgfCAgICAgICAgICAgMjggfCBeQAogICAgICAgIDQwMDAgfCAgICAgICAgICAg MjkgfCA8XgogICAgICAgIDQwMDAgfCAgICAgICAgICAgMzAgfCA+XgotKDEyNCByb3dzKQor KDEyNyByb3dzKQogCiAtLSBDaGVjayB0aGF0IGFsbCBvcGNsYXNzIHNlYXJjaCBvcGVyYXRv cnMgaGF2ZSBzZWxlY3Rpdml0eSBlc3RpbWF0b3JzLgogLS0gVGhpcyBpcyBub3QgYWJzb2x1 dGVseSByZXF1aXJlZCwgYnV0IGl0IHNlZW1zIGEgcmVhc29uYWJsZSB0aGluZwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKaW5kZXggZmJiMDQ4OWE0Zi4u MzM5NWQyMTUwZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2 aWxlZ2VzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMu b3V0CkBAIC05ODUsNiArOTg1LDI0IEBAIEVSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4g ImIiIG9mIHJlbGF0aW9uICJlcnJ0c3RfcGFydF8yIiB2aW9sYXRlcyBub3QtbnVsbCBjCiBE RVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoYSwgYiwgYykgPSAoYWFhYSwgbnVsbCwg Y2NjKS4KIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwog RFJPUCBUQUJMRSBlcnJ0c3Q7CistLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIG9u IHRoZSByYW5nZS9QRVJJT0QgdXNlZCBpbiBGT1IgUE9SVElPTiBPRgorU0VUIFNFU1NJT04g QVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CitDUkVBVEUgVEFCTEUgdDEgKAor ICBjMSBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0MXBr IFBSSU1BUlkgS0VZIChjMSwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitHUkFO VCBTRUxFQ1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOworR1JBTlQgU0VMRUNUIE9O IHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK0dSQU5UIFVQREFURSAoYzEpIE9OIHQxIFRP IHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFVQREFURSAoYzEsIHZhbGlkX2F0KSBPTiB0 MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJl Z3Jlc3NfcHJpdl91c2VyMjsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsKK0VS Uk9SOiAgcGVybWlzc2lvbiBkZW5pZWQgZm9yIHRhYmxlIHQxCitTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0g J1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIx OworRFJPUCBUQUJMRSB0MTsKIC0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZpbGVnZXMgd2hl biBpbnZvbHZlZCB3aXRoIERFTEVURQogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjE7CiBBTFRFUiBUQUJMRSBhdGVzdDYgQUREIENPTFVNTiB0aHJlZSBp bnRlZ2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFi bGVfdmlld3Mub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmll d3Mub3V0CmluZGV4IGE3M2MxZjkwYzQuLjcyN2FkMDhlMDggMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKQEAgLTMwMjAsNiArMzAy MCwzOCBAQCBzZWxlY3QgKiBmcm9tIHV2X2lvY3VfdGFiOwogCiBkcm9wIHZpZXcgdXZfaW9j dV92aWV3OwogZHJvcCB0YWJsZSB1dl9pb2N1X3RhYjsKKy0tIENoZWNrIFVQREFURSBGT1Ig UE9SVElPTiBPRiB3b3JrcyBjb3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChp ZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWlu dCBwa191dl9mcG9fdGFiIHByaW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVy bGFwcykpOworaW5zZXJ0IGludG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAy MC0wMS0wMSwgMjAzMC0wMS0wMSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFz CisgICAgc2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFz IHR3byBmcm9tIHV2X2Zwb190YWI7CitpbnNlcnQgaW50byB1dl9mcG9fdmlldyAoaWQsIHZh bGlkX2F0LCBiKSB2YWx1ZXMgKCdbMSwxXScsICdbMjAxMC0wMS0wMSwgMjAyMC0wMS0wMSkn LCAxKTsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIGlkICAg fCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMCB8IDEgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIpIHwgWzEsMikg fCAyLjAKKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBbMSwyKSB8IDIuMAorKDIgcm93cykKKwordXBkYXRlIHV2 X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20gJzIwMTUtMDEtMDEnIHRv ICcyMDIwLTAxLTAxJyBzZXQgYiA9IDIgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICog ZnJvbSB1dl9mcG9fdmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0rLS0tLS0KKyAwIHwgMSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDIgfCAzIHwg WyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi KSB8IFsxLDIpIHwgMi4wCisgMSB8IDIgfCBbIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIs IlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisK K2RlbGV0ZSBmcm9tIHV2X2Zwb192aWV3IGZvciBwb3J0aW9uIG9mIHZhbGlkX2F0IGZyb20g JzIwMTctMDEtMDEnIHRvICcyMDIyLTAxLTAxJyB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxl Y3QgKiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0t Ky0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMTAiLCJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisgMCB8 IDEgfCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAy MDE1IiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgfCBbMSwyKSB8IDIuMAorKDMgcm93 cykKKwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJlbmNlcyB0byB0aGUgdmlldwogY3JlYXRl IHRhYmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlxdWUsIGIgdGV4dCk7CiBjcmVhdGUgdmll dyB1dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDdlNWUyMDkyMzcuLmU3M2ViOGJiMzMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApA QCAtMzA1LDYgKzMwNSwzNiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9h dCwgaWQyLCBuYW1lKQogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ1s3LDddJywgJ2ZvbycpLAogICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCiA7CitVUERBVEUg dGVtcG9yYWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDUtMDEnIFRP ICcyMDAwLTA3LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzEnOworVVBEQVRFIHRlbXBv cmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA0LTAxJyBUTyAnMjAw MC0wNi0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcyJworICBXSEVSRSBpZCA9ICdbMiwy XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsMyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Cisg IGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBpZDIgICB8IG5hbWUgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0KKyBbMSwy KSB8IFswMS0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzcsOCkgIHwgZm9vCisgWzEsMikgfCBb MDUtMDEtMjAwMCwwNy0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbzEKKyBbMSwyKSB8IFswNy0w MS0yMDAwLDAxLTAxLTIwMTApIHwgWzcsOCkgIHwgZm9vCisgWzIsMykgfCBbMDEtMDEtMjAw MCwwNC0wMS0yMDAwKSB8IFs5LDEwKSB8IGJhcgorIFsyLDMpIHwgWzA0LTAxLTIwMDAsMDUt MDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIyCisgWzIsMykgfCBbMDUtMDEtMjAwMCwwNi0wMS0y MDAwKSB8IFs5LDEwKSB8IGJhcjEyCisgWzIsMykgfCBbMDYtMDEtMjAwMCwwNy0wMS0yMDAw KSB8IFs5LDEwKSB8IGJhcjEKKyBbMiwzKSB8IFswNy0wMS0yMDAwLDAxLTAxLTIwMTApIHwg WzksMTApIHwgYmFyCisoOCByb3dzKQorCistLSBjb25mbGljdGluZyBpZCBvbmx5OgorSU5T RVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVT CisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAwNi0wMS0wMScpLCAn WzgsOF0nLCAnZm9vMycpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0 ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsM19wayIKK0RFVEFJTDogIEtleSAo aWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDA1LDAxLTAxLTIwMDYpKSBjb25mbGlj dHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDctMDEtMjAw MCwwMS0wMS0yMDEwKSkuCistLSBjb25mbGljdGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRP IHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sz LDNdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywg J2JhcjMnKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1 c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbDNfdW5pcSIKK0RFVEFJTDogIEtleSAoaWQyLCB2 YWxpZF9hdCk9KFs5LDEwKSwgWzAxLTAxLTIwMDUsMDEtMDEtMjAxMCkpIGNvbmZsaWN0cyB3 aXRoIGV4aXN0aW5nIGtleSAoaWQyLCB2YWxpZF9hdCk9KFs5LDEwKSwgWzA3LTAxLTIwMDAs MDEtMDEtMjAxMCkpLgogRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAtLQogLS0gdGVzdCBjaGFu Z2luZyB0aGUgUEsncyBkZXBlbmRlbmNpZXMKQEAgLTM1Nyw2ICszODcsMzYgQEAgU0VMRUNU ICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIw MDAsMDEtMDEtMjAxMCkgfCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3Bh cnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUn IFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdb MSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQg PSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFy dGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScg VE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0 aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hF UkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0K KyBbMSwyKSB8IFswMS0wMS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEt MTUtMjAwMCwwMi0wMS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1 LTIwMDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUK KyBbMSwyKSB8IFswMi0yNS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEt MDEtMjAwMiwwMS0wMS0yMDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0x NS0yMDAwKSB8IHRocmVlCisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRo cmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkg fCBbMDItMjAtMjAwMCwwMi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CiAtLSB0ZW1wb3JhbCBVTklRVUU6CiBDUkVBVEUg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKApAQCAtMzkyLDYgKzQ1MiwzNiBAQCBTRUxF Q1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAgWzMsNCkgfCBbMDEtMDEt MjAwMCwwMS0wMS0yMDEwKSB8IHRocmVlCiAoMSByb3cpCiAKK1VQREFURSAgdGVtcG9yYWxf cGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0x NScgVE8gJzIwMDAtMDItMTUnCisgIFNFVCBuYW1lID0gJ29uZTInCisgIFdIRVJFIGlkID0g J1sxLDFdJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMi0yMCcgVE8gJzIwMDAtMDItMjUnCisgIFNFVCBp ZCA9ICdbNCw0XScKKyAgV0hFUkUgbmFtZSA9ICdvbmUnOworVVBEQVRFICB0ZW1wb3JhbF9w YXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAyLTAxLTAx JyBUTyAnMjAwMy0wMS0wMScKKyAgU0VUIGlkID0gJ1syLDJdJworICBXSEVSRSBuYW1lID0g J3RocmVlJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBX SEVSRSBpZCA9ICdbMywzXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVk IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAg ICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFsw MS0xNS0yMDAwLDAyLTAxLTIwMDApIHwgb25lMgorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDIt MTUtMjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMTUtMjAwMCwwMi0yMC0yMDAwKSB8IG9u ZQorIFsxLDIpIHwgWzAyLTI1LTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMiwzKSB8IFsw MS0wMS0yMDAyLDAxLTAxLTIwMDMpIHwgdGhyZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAx LTE1LTIwMDApIHwgdGhyZWUKKyBbMyw0KSB8IFswMi0xNS0yMDAwLDAxLTAxLTIwMDIpIHwg dGhyZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAzLDAxLTAxLTIwMTApIHwgdGhyZWUKKyBbNCw1 KSB8IFswMi0yMC0yMDAwLDAyLTI1LTIwMDApIHwgb25lCisoMTAgcm93cykKKwogRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIC0tCiAtLSB0ZXN0IEZLIGRlcGVuZGVuY2ll cwpAQCAtNjgyLDEzICs3NzIsMjUgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24g dGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmci CiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcg YW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAz JworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcg anVzdCBhIHBhcnQgZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9 ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAw MyAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxs IHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVu IGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRl IHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVh biB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lk ID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScsICdb Nyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKIC0tCkBA IC03MTksMTMgKzgyMSwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKIERF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBjaGFuZ2luZyBhbiB1 bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitT RVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0 IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3 LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg InRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5n IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAw OjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVm ZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVs ZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3Vj Y2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sz LDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx Ni0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVw OgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAn WzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDdd Jyk7CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJT04KIC0tCkBAIC03 NDcsOSArODYxLDIyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsCiBERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1cGRhdGUgb3IgZGVs ZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0 cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19y bmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3Rp bGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGRl bGV0aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRP ICcyMDE4LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcganVzdCBh IHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hFUkUgaWQg PSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5 IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJXZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJU aHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRh YmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rp bmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQog LS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAogLS0KQEAgLTc3MSw5ICs4OTgs MjIgQEAgREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywKIERFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDE4LTAyLTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFi bGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVt cG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVu Y2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gZGVsZXRpbmcgYW4g dW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZwor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIwMTgtMDEt MDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBkZWxldGluZyBqdXN0IGEgcGFydCBmYWls czoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7 CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlv bGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIg b24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxp ZF9hdCk9KFs1LDYpLCBbIldlZCBKYW4gMDMgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEg MDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBv cmFsX2ZrX3JuZzJybmciLgogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIC0tCiAtLSB0ZXN0IE9O IFVQREFURS9ERUxFVEUgb3B0aW9ucwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jl c3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVk dWxlCmluZGV4IGIwOGFhYWU0NGIuLmNjMmY2YjQ2ZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJh bGxlbF9zY2hlZHVsZQpAQCAtNDgsNyArNDgsNyBAQCB0ZXN0OiBjcmVhdGVfaW5kZXggY3Jl YXRlX2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5j bHVkaQogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMK ICMgLS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25f c3FsIGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5 cGVkX3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0 dHJpYnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZQor dGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0ZV9jYXN0 IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1 bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRl X2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZSBmb3JfcG9ydGlvbl9vZgog CiAjIC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0sIGFmZmVjdGlu ZyB0aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9y X3BvcnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAu Ljk3YWM1Nzc2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9m b3JfcG9ydGlvbl9vZi5zcWwKQEAgLTAsMCArMSwzNDkgQEAKKy0tIFRlc3RzIGZvciBVUERB VEUvREVMRVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5z CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwK KyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJU IElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEt MDIsMjAyMC0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0w MS0wMScKK1NFVCBuYW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIE5V TEw7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworLS0gV29ya3Mg b24gbW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0 OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2Us CisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxpZDJfYXQgdHNyYW5nZSwKKyAgbmFtZSB0 ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxV RVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnWzIwMTUtMDEtMDEs MjAyNS0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gTlVMTAorU0VU IG5hbWUgPSAnZm9vJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkMl9hdCBG Uk9NICcyMDE4LTAxLTE1JyBUTyBOVUxMCitTRVQgbmFtZSA9ICdiYXInOworU0VMRUNUICog RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8g TlVMTDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00g JzIwMTgtMDEtMjAnIFRPIE5VTEw7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisKKy0tIFRlc3Qgd2l0aCBOVUxMcyBpbiB0aGUgc2NhbGFyL3JhbmdlIGtleSBjb2x1 bW5zLgorLS0gVGhpcyB3b24ndCBoYXBwZW4gaWYgdGhlcmUgaXMgYSBQUklNQVJZIEtFWSBv ciBVTklRVUUgY29uc3RyYWludAorLS0gYnV0IEZPUiBQT1JUSU9OIE9GIHNob3VsZG4ndCBy ZXF1aXJlIHRoYXQuCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUg VU5MT0dHRUQgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwK KyAgdmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworSU5TRVJUIElOVE8gZm9y X3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKyAgKCdbMSwxXScsIE5VTEwsICcxIG51bGwnKSwK KyAgKCdbMSwxXScsICcoLCknLCAnMSB1bmJvdW5kZWQnKSwKKyAgKCdbMSwxXScsICdlbXB0 eScsICcxIGVtcHR5JyksCisgIChOVUxMLCBOVUxMLCBOVUxMKSwKKyAgKE5VTEwsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOS0wMS0wMScpLCAnbnVsbCBrZXknKTsKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVM TCBUTyBOVUxMCisgIFNFVCBuYW1lID0gJ05VTEwgdG8gTlVMTCc7CitTRUxFQ1QgKiBGUk9N IGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVz dDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdl IE5PVCBOVUxMLAorICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1lIHRleHQg Tk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gZm9yX3Bv cnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDFdJywgJ1syMDE4LTAxLTAyLDIwMTgtMDIt MDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAzKScsICdv bmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25lJyksCiso J1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdbMywzXScs ICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDRdJywgJygsMjAxOC0wNC0wMSkn LCAnZm91cicpLAorKCdbNSw1XScsICcoLCknLCAnZml2ZScpCis7CisKKy0tCistLSBVUERB VEUgdGVzdHMKKy0tCisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxz CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb28nCitXSEVSRSBp ZCA9ICdbNSw1XSc7CisKKy0tIFNldHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERBVEUgZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w Ni0wMScgVE8gTlVMTAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEp JworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBUaGUgd3JvbmcgdHlwZSBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g MSBUTyA0CitTRVQgbmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBT ZXR0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZvcl9wb3J0 aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEn IFRPICcyMDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1sz LDNdJzsKKworLS0gU2V0dGluZyB3aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3Jf cG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1Qg JzIwMTgtMDEtMDEnKSBUTyAnMjAxOC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVS RSBpZCA9ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIGNvbHVtbiBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g bG93ZXIodmFsaWRfYXQpIFRPIE5VTEwKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9 ICdbMywzXSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90 aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUgPSAndGhy ZWVeMCcKK1dIRVJFIGlkID0gJ1szLDNdJzsKKworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3Bl biBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBU TyBOVUxMCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMsM10nOworCist LSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0 YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NIE5VTEwgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4yJwor V0hFUkUgaWQgPSAnWzMsM10nOworCistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0 aW9uIHdpdGggYW4gb3Blbi9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPICcyMDE4LTAyLTAx JworU0VUIG5hbWUgPSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQsNF0nOworCistLSBVcGRh dGluZyBhbiBvcGVuL2Zpbml0ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE3LTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVSRSBp ZCA9ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdp dGggYW4gZXhhY3QgZml0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQg bmFtZSA9ICdmb3VyXjMnCitXSEVSRSBpZCA9ICdbNCw0XSc7CisKKy0tIFVwZGF0aW5nIGFu IGVuY2xvc2VkIHNwYW4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAndHdvXjInCitX SEVSRSBpZCA9ICdbMiwyXSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0aW9u IHdpdGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5 LTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNV0nOworCist LSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBz cGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2 ZV4zJworV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNs b3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJF IGlkID0gJ1sxLDFdJzsKKworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25m bGljdAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9V UiBUTyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dI RVJFIGlkID0gJ1sxLDFdJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJ TlRFUlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40 JworV0hFUkUgaWQgPSAnWzEsMV0nOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUg Wk9ORSBJTlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9 ICdvbmVeNCcKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gV2l0aCBhIGRpcmVjdCB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCAodHNyYW5nZSgnMjAxOC0wMy0xMCcsICcyMDE4LTAzLTE3JykpCitTRVQgbmFtZSA9ICdv bmVeNScKK1dIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5n ZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAn WzYsNl0nCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJF IGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAn Kic7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCisKKy0tIERlbGV0aW5nIHdp dGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBO VUxMCitXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1w cyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEn CitXSEVSRSBpZCA9ICdbMywzXSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyBl cXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAx JworV0hFUkUgaWQgPSAnWzMsM10nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Ns b3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hF UkUgaWQgPSAnWzUsNV0nOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMywzXSc7 CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tIERlbGV0aW5n IHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJF IGlkID0gJ1s2LDZdJzsKKworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBVUERBVEUgLi4uIFJFVFVS TklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVk IHNpZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5h bWUgPSAndGhyZWVeMycKK1dIRVJFIGlkID0gJ1szLDNdJworUkVUVVJOSU5HICo7CisKKy0t IHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBh bmQgdGhlIElOU0VSVGVkIHJvd3MKKworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5P VElDRSAnJSAlICUgb2YgJScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfYXQsIE9MRC52 YWxpZF9hdDsKKyAgSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsK KyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5HVUFH RSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3Jl CisgIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9v Zl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9u X29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRl cgorICBBRlRFUiBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9v Zl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9u X29mX3RyaWdnZXIoKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjEtMDEtMDEnIFRPICcyMDIyLTAxLTAxJworU0VU IG5hbWUgPSAnZml2ZV40JworV0hFUkUgaWQgPSAnWzUsNV0nOworCitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIz LTAxLTAxJyBUTyAnMjAyNC0wMS0wMScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKworU0VMRUNU ICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKwor LS0gVGVzdCB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZUEUgbXlkYXRl cmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0 aW9uX29mX3Rlc3QyICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCBt eWRhdGVyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMLAorCUNPTlNUUkFJ TlQgZm9yX3BvcnRpb25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9wb3J0aW9uX29mX3Rlc3Qy CitWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25lJyks CisoJ1sxLDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdbMSwx XScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMl0nLCAnWzIw MTgtMDEtMDEsMjAxOC0wNS0wMSknLCAndHdvJyksCisoJ1szLDNdJywgJ1syMDE4LTAxLTAx LCknLCAndGhyZWUnKTsKKzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcK K1NFVCBuYW1lID0gJ29uZV4xJworV0hFUkUgaWQgPSAnWzEsMV0nOworCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0xNScgVE8gJzIwMTgtMDItMTUnCitXSEVSRSBpZCA9ICdbMiwyXSc7CisKK1NF TEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOworRFJPUCBUWVBFIG15ZGF0 ZXJhbmdlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvb3ByX3Nhbml0eS5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbAppbmRleCAyZmU3YjZk Y2M0Li4yZGZmZTdjNWI2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJf c2FuaXR5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9vcHJfc2FuaXR5LnNxbApA QCAtMTI0MSw2ICsxMjQxLDcgQEAgV0hFUkUgYTEuYW1vcGZhbWlseSA9IDAgT1IgYTEuYW1v cGxlZnR0eXBlID0gMCBPUiBhMS5hbW9wcmlnaHR0eXBlID0gMAogU0VMRUNUIGExLmFtb3Bm YW1pbHksIGExLmFtb3BzdHJhdGVneQogRlJPTSBwZ19hbW9wIGFzIGExCiBXSEVSRSBOT1Qg KChhMS5hbW9wcHVycG9zZSA9ICdzJyBBTkQgYTEuYW1vcHNvcnRmYW1pbHkgPSAwKSBPUgor ICAgICAgICAgICAoYTEuYW1vcHB1cnBvc2UgPSAncCcgQU5EIGExLmFtb3Bzb3J0ZmFtaWx5 ID0gMCkgT1IKICAgICAgICAgICAgKGExLmFtb3BwdXJwb3NlID0gJ28nIEFORCBhMS5hbW9w c29ydGZhbWlseSA8PiAwKSk7CiAKIC0tIGFtb3BtZXRob2QgbXVzdCBtYXRjaCBvd25pbmcg b3BmYW1pbHkncyBvcGZtZXRob2QKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwK aW5kZXggM2Y2OGNhZmNkMS4uZTEwYWRkZWQ5ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJp dmlsZWdlcy5zcWwKQEAgLTcxMyw2ICs3MTMsMjQgQEAgVVBEQVRFIGVycnRzdCBTRVQgYSA9 ICdhYWFhJywgYiA9IE5VTEwgV0hFUkUgYSA9ICdhYWEnOwogU0VUIFNFU1NJT04gQVVUSE9S SVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBEUk9QIFRBQkxFIGVycnRzdDsKIAorLS0g dGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9EIHVzZWQg aW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAorICB2YWxp ZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRPIHJlZ3Jl c3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNl cjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitH UkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIz OworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7CitVUERB VEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIw MDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9O IHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0wMScgU0VUIGMxID0gJ1syLDMpJzsK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworRFJPUCBU QUJMRSB0MTsKKwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyB3aGVuIGludm9s dmVkIHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJp dl91c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQgQ09MVU1OIHRocmVlIGludGVnZXI7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3Fs IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAppbmRleCBlYWVl MGI3ZTFkLi5mODE0NzAxYTQzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91 cGRhdGFibGVfdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJs ZV92aWV3cy5zcWwKQEAgLTE1NDEsNiArMTU0MSwyMCBAQCBzZWxlY3QgKiBmcm9tIHV2X2lv Y3VfdGFiOwogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsKIGRyb3AgdGFibGUgdXZfaW9jdV90 YWI7CiAKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElPTiBPRiB3b3JrcyBjb3JyZWN0bHkK K2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0cmFuZ2UsIHZhbGlkX2F0IHRzcmFu Z2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191dl9mcG9fdGFiIHByaW1hcnkga2V5 IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykpOworaW5zZXJ0IGludG8gdXZfZnBv X3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0wMSwgMjAzMC0wMS0wMSknLCAwKTsK K2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAgc2VsZWN0IGIsIGIrMSBhcyBjLCB2 YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBmcm9tIHV2X2Zwb190YWI7CisKK2lu c2VydCBpbnRvIHV2X2Zwb192aWV3IChpZCwgdmFsaWRfYXQsIGIpIHZhbHVlcyAoJ1sxLDFd JywgJ1syMDEwLTAxLTAxLCAyMDIwLTAxLTAxKScsIDEpOworc2VsZWN0ICogZnJvbSB1dl9m cG9fdmlldzsKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBm cm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScgc2V0IGIgPSAyIHdoZXJlIGlkID0g J1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CitkZWxldGUgZnJvbSB1dl9m cG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAxLTAxJyB0byAn MjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9f dmlldzsKKwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJlbmNlcyB0byB0aGUgdmlldwogY3Jl YXRlIHRhYmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlxdWUsIGIgdGV4dCk7CiBjcmVhdGUg dmlldyB1dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9v dmVybGFwcy5zcWwKaW5kZXggOWI3OWJiNjM0NS4uNzUxYzQyYWI2YiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTIzMSw2ICsyMzEsMjAg QEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3 XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAg U0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBu YW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworLS0gY29uZmxpY3RpbmcgaWQg b25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUp CisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYt MDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKKy0tIGNvbmZsaWN0aW5nIGlkMiBvbmx5Ogor SU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKKyAgVkFM VUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAxMC0wMS0wMScp LCAnWzksOV0nLCAnYmFyMycpOwogRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAKIC0tCkBAIC0y NjksNiArMjgzLDIyIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVF UwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxF Q1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFs X3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEt MTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9 ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQg aWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxf cGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0w MScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9 ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAg V0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOwogCiAtLSB0ZW1wb3JhbCBVTklRVUU6CkBAIC0yODcsNiArMzE3LDIyIEBAIElOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9N IHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1Jwor ICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRl bXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJF IG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisg IFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCiAtLQpAQCAtNTQ3LDEz ICs1OTMsMjMgQEAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBw YXJ0IGZhaWxzOgogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CistLSBjaGFuZ2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5 OgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBjaGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0 ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUn IFRPICcyMDE4LTAxLTEwJworU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0n OwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1l IFBLIHVwZGF0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzMsM10nOwogVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OwogLS0gY2xlYW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgn WzUsNV0nLCAnWzcsN10nKTsKIAogLS0KIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgUkVT VFJJQ1QKQEAgLTU4MiwxMyArNjM4LDIzIEBAIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIC0tIGNoYW5n aW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlk ID0gJ1s3LDddJwogV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2hhbmdpbmcgYW4gdW5yZWZlcmVu Y2VkIHBhcnQgaXMgb2theToKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDInIFRPICcyMDE4LTAxLTAzJworU0VUIGlkID0g J1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gY2hhbmdpbmcganVzdCBhIHBhcnQg ZmFpbHM6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dI RVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVj b3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9y bmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykK IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJywgJ1s3LDddJyk7CiAtLQogLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBOTyBBQ1RJT04KIC0tCkBAIC02MDgsMTQgKzY3NCwyNCBAQCBJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAx OC0wMS0wNScsICcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKIC0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSBy ZWZlcmVuY2VkOgogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIGRlbGV0aW5nIGFuIHVucmVmZXJlbmNlZCBwYXJ0IGlzIG9rYXk6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEt MDInIFRPICcyMDE4LTAxLTAzJworV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gZGVsZXRpbmcg anVzdCBhIHBhcnQgZmFpbHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJworV0hF UkUgaWQgPSAnWzUsNV0nOwogLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNv cmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKIERFTEVURSBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOwogREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzUsNV0nKTsKIAogLS0KIC0tIHRlc3Qg RksgcGFyZW50IGRlbGV0ZXMgUkVTVFJJQ1QKIC0tCi0KIEFMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsK IEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKQEAgLTYzMiw5ICs3MDgsMjAgQEAg SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJyk7CiAtLSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVM RVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRl bGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0x MCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rpbmcg RksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAKIC0tCiAt LSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucwotLSAKMi40Mi4wCgo= --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v20-0007-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5NWI4ODc4YmYwMTkwZjg2MjE1Yzg3NTEyMjNlYjdkYWMwMDM3Nzc2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjIwIDcvOF0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDQyICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKystCiBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAgMjAgKwog Li4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgODI3ICsr KysrKysrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgNDM4ICsrKysrKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTgzNiBpbnNl cnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IGI1NGUwZTc0MDYuLjQzY2VmNWVlZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jCkBAIC01MDgsNyArNTA4LDcgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgYWRkRmtS ZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmEK IAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ssCiAJCQkJCQkJCQkJCU9pZCBwYXJlbnRE ZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKIAkJCQkJCQkJCQkJYm9vbCBpc190 ZW1wb3JhbCk7Ci1zdGF0aWMgdm9pZCB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGlu dCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51bXMsCitzdGF0aWMgdm9pZCB2YWxpZGF0 ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0dG51 bXMsIGNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51bXMsCiAJCQkJCQkJCQkJIGludCBudW1m a3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBM aXN0ICpma3NldGNvbHMpOwogc3RhdGljIHZvaWQgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmco TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LApAQCAtOTY1NSw3ICs5 NjU1LDcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCiAJCQkJCQkJCQkJCSAgZmtk ZWxzZXRjb2xzLCBOVUxMKTsKLQl2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKG51bWZr cywgZmthdHRudW0sCisJdmFsaWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhudW1ma3MsIGZr YXR0bnVtLCBma3BlcmlvZGF0dG51bXMsCiAJCQkJCQkJCSBudW1ma2RlbHNldGNvbHMsIGZr ZGVsc2V0Y29scywKIAkJCQkJCQkJIGZrY29uc3RyYWludC0+ZmtfZGVsX3NldF9jb2xzKTsK IApAQCAtOTgzOCwxMiArOTgzOCwxNSBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogICov CiB2b2lkCiB2YWxpZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0 IGludDE2ICpma2F0dG51bXMsCisJCQkJCQkJIGNvbnN0IGludDE2ICpma3BlcmlvZGF0dG51 bXMsCiAJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3NldGNvbHNh dHRudW1zLAogCQkJCQkJCSBMaXN0ICpma3NldGNvbHMpCiB7CiAJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1ma3NldGNvbHM7IGkrKykKIAl7CiAJCWludDE2CQlzZXRjb2xfYXR0bnVtID0g ZmtzZXRjb2xzYXR0bnVtc1tpXTsKKwkJLyogYXNzdW1lIG9ubHkgb25lIFBFUklPRCBrZXkg Y29sdW1uIGluIGEgZm9yZWlnbiBrZXkgKi8KKwkJaW50MTYJCWZrcGVyaW9kX2F0dG51bSA9 IGZrcGVyaW9kYXR0bnVtc1swXTsKIAkJYm9vbAkJc2VlbiA9IGZhbHNlOwogCiAJCWZvciAo aW50IGogPSAwOyBqIDwgbnVtZmtzOyBqKyspCkBAIC05ODUzLDYgKzk4NTYsMTMgQEAgdmFs aWRhdGVGa09uRGVsZXRlU2V0Q29sdW1ucyhpbnQgbnVtZmtzLCBjb25zdCBpbnQxNiAqZmth dHRudW1zLAogCQkJCXNlZW4gPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJfQorCQkJaWYgKGZr cGVyaW9kX2F0dG51bSA9PSBzZXRjb2xfYXR0bnVtKQorCQkJeworCQkJCWNoYXIJICAgKmNv bCA9IHN0clZhbChsaXN0X250aChma3NldGNvbHMsIGkpKTsKKwkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAor CQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiByZWZlcmVuY2VkIGluIE9OIERFTEVURSBT RVQgYWN0aW9uIGNhbm5vdCBiZSBQRVJJT0QiLCBjb2wpKSk7CisJCQl9CiAJCX0KIAogCQlp ZiAoIXNlZW4pCkBAIC0xMjQ5MCwxMSArMTI1MDAsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFj dGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAq Zmtjb25zdHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJU UklfRktleV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJf QUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJ CQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3Ry aWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJUUklfRktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0 aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRk ZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZh dWx0OgogCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVk IiwKQEAgLTEyNTgxLDExICsxMjU5OSwxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJp Z2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0 cgogCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3Jlc3RyaWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f Q0FTQ0FERToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtf dHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVh azsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9G S2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9TRVRERUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVk ID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi VFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJ CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCAxYTJiOWNmNjgzLi5mOTQ0NjY1 ZDcxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtODQsNiArODQs MTIgQEAKICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBEQVRFCQk3CiAjZGVmaW5lIFJJ X1BMQU5fU0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmluZSBSSV9QTEFOX1NFVERFRkFV TFRfT05VUERBVEUJCTkKKyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURQkJMTAK KyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTlVQREFURQkJMTEKKyNkZWZpbmUgVFJJX1BM QU5fU0VUTlVMTF9PTlVQREFURQkJMTIKKyNkZWZpbmUgVFJJX1BMQU5fU0VUTlVMTF9PTkRF TEVURQkJMTMKKyNkZWZpbmUgVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2Rl ZmluZSBUUklfUExBTl9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FV T1RFRF9OQU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9S RUxfTkFNRV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xOTMsNiArMTk5LDcg QEAgc3RhdGljIGJvb2wgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxh dGlvbiBma19yZWwsCiAJCQkJCQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZv KTsKIHN0YXRpYyBEYXR1bSByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJv b2wgaXNfbm9fYWN0aW9uKTsKIHN0YXRpYyBEYXR1bSByaV9zZXQoVHJpZ2dlckRhdGEgKnRy aWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKK3N0YXRpYyBEYXR1bSB0 cmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRn a2luZCk7CiBzdGF0aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBj aGFyICpuYW1lKTsKIHN0YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZl ciwgUmVsYXRpb24gcmVsKTsKIHN0YXRpYyB2b2lkIHJpX0dlbmVyYXRlUXVhbChTdHJpbmdJ bmZvIGJ1ZiwKQEAgLTE0MTAsNiArMTQxNywxMjcgQEAgVFJJX0ZLZXlfcmVzdHJpY3RfZGVs KFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5X2Nhc2Nh ZGVfZGVsIC0KKyAqCisgKiBDYXNjYWRlZCBkZWxldGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNl cyBhdCBkZWxldGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitU UklfRktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRh ICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3Qg UklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRp b24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFr ZXk7CisJU1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9j YXNjYWRlX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwlyaWluZm8gPSByaV9GZXRj aENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2Rh dGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBk ZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4K KwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNp bmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIERFTEVURSB3aWxsIGdldCBvbiBp dC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRz bG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUg dGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBieSBhbiBv cmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFu Z2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCBy aWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5F Q1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNo IG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICovCisJ cmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX09OREVM RVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09 IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hhcgkJZmtyZWxu YW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAq cXVlcnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOworCQlj b25zdCBjaGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5 IHN0cmluZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxma3RhYmxlPgor CQkgKiAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBl cigke24rMX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICogVGhl IHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJCSAq IGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8K KwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRf cmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAi T05MWSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1 b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnli dWYsICJERUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVk KSBUTyB1cHBlcigkJWQpIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUs IHJpaW5mby0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisJCXF1ZXJ5c2VwID0g IldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJ CXsKKwkJCU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFt ZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSkpOworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CisJCQlyaV9H ZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBr X3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUs IGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVl cnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNldCBhIHBhcmFtIGZvciBGT1Ig UE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJ QXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0p OworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9Q bGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywK KwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkvKgorCSAqIFdlIGhh dmUgYSBwbGFuIG5vdy4gQnVpbGQgdXAgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBrZXkgdmFs dWVzIGluIHRoZQorCSAqIGRlbGV0ZWQgUEsgdHVwbGUgYW5kIGRlbGV0ZSB0aGUgcmVmZXJl bmNpbmcgcm93cworCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxh biwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJp aW5mby0+bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkgICAvKiBtdXN0IGRldGVj dCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKworCWlmIChTUElfZmluaXNo KCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVk Iik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0 dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCiAvKgogICogVFJJX0ZLZXlfbm9h Y3Rpb25fdXBkIC0KICAqCkBAIC0xNDQ3LDYgKzE1NzUsNDE1IEBAIFRSSV9GS2V5X3Jlc3Ry aWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dl ckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8qCisgKiBUUklfRktl eV9jYXNjYWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZvcmVpZ24ga2V5IHJl ZmVyZW5jZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitE YXR1bQorVFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmln Z2VyRGF0YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0Owor CWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOwor CVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlUdXBsZVRh YmxlU2xvdCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIgIHFw bGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEg dmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwly aV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV91cGQiLCBSSV9UUklH VFlQRV9VUERBVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmln ZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1 ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2YgdGhlIEZL IGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBuZXcgYW5kCisJICogb2xkIHR1cGxlLgorCSAqCisJ ICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhh dCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAq LworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVzaXZl TG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW5ld3Nsb3QgPSB0 cmlnZGF0YS0+dGdfbmV3c2xvdDsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90 OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVy YXRpb24sCisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBu ZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFu Z2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQ SV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29u bmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZv ciB0aGUgY2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlp bmZvLCBUUklfUExBTl9DQVNDQURFX09OVVBEQVRFKTsKKworCWlmICgocXBsYW4gPSByaV9G ZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0 YSBxdWVyeWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hhcgkJZmtyZWxu YW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVP VEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAq cXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJIHF1ZXJ5b2lkc1sy ICogUklfTUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3QgY2hhciAqZmtfb25seTsKKworCQkv KiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICogIFVQ REFURSBbT05MWV0gPGZrdGFibGU+CisJCSAqCQkgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBG Uk9NIGxvd2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4rMX0pCisJCSAqCQkgIFNFVCBma2F0 dDEgPSAkMSwgWywgLi4uXQorCQkgKgkJICBXSEVSRSAkbiA9IGZrYXR0MSBbQU5EIC4uLl0K KwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2Yg dGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4gIE5vdGUgdGhhdCB3ZSBh cmUgYXNzdW1pbmcKKwkJICogdGhlcmUgaXMgYW4gYXNzaWdubWVudCBjYXN0IGZyb20gdGhl IFBLIHRvIHRoZSBGSyB0eXBlOworCQkgKiBlbHNlIHRoZSBwYXJzZXIgd2lsbCBmYWlsLgor CQkgKiAtLS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOwor CQlpbml0U3RyaW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3Jl bC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9O TFkgIjsKKwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90 ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W3JpaW5mby0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVm LCAiVVBEQVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVw cGVyKCQlZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIDIg KiByaWluZm8tPm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVy eXNlcCA9ICIiOworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDAsIGog PSByaWluZm8tPm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBqKyspCisJCXsKKwkJ CU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRu YW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OworCQkJLyoKKwkJCSAqIERvbid0IHNldCB0aGUgdGVtcG9yYWwgY29sdW1uKHMpLgorCQkJ ICogRk9SIFBPUlRJT04gT0Ygd2lsbCB0YWtlIGNhcmUgb2YgdGhhdC4KKwkJCSAqLworCQkJ aWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVy eWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBxdWVyeXNlcCwgYXR0 bmFtZSwgaSArIDEpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGogKyAxKTsK KwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5h bWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0 dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2Nv bGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFs Q29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJ CXF1YWxzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJCQlxdWVy eW9pZHNbal0gPSBwa190eXBlOworCQl9CisJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJnF1 ZXJ5YnVmLCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKKworCQkvKiBTZXQgYSBwYXJh bSBmb3IgRk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNbMiAqIHJpaW5m by0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5m by0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLwor CQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCAyICogcmlpbmZvLT5ua2V5 cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9 CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUg ZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBuZXdz bG90LAorCQkJCQlyaWluZm8tPm5rZXlzICogMiwgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUs CQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfVVBEQVRFKTsKKwor CWlmIChTUElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQ SV9maW5pc2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAq IFRSSV9GS2V5X3NldG51bGxfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBOVUxMIHZhbHVlcyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8K K0RhdHVtCitUUklfRktleV9zZXRudWxsX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X3NldG51bGxfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUg d2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBm Y2luZm8tPmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisg KiBUUklfRktleV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVy ZW5jZXMgdG8gTlVMTCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRudWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51 bGxfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBE RUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRkZWZhdWx0X2RlbCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5j ZXMgdG8gZGVmYXVsdHMgYXQgZGVsZXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1 bQorVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBD aGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRp bWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9z ZXRkZWZhdWx0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2Rl IHdpdGggVVBEQVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikg ZmNpbmZvLT5jb250ZXh0LCBmYWxzZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoK KyAqIFRSSV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkg cmVmZXJlbmNlcyB0byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisg Ki8KK0RhdHVtCitUUklfRktleV9zZXRkZWZhdWx0X3VwZChQR19GVU5DVElPTl9BUkdTKQor eworCS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUg cmlnaHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRS SV9GS2V5X3NldGRlZmF1bHRfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNo YXJlIGNvZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2Vy RGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9VUERBVEUpOwor fQorCisvKgorICogdHJpX3NldCAtCisgKgorICogQ29tbW9uIGNvZGUgZm9yIHRlbXBvcmFs IE9OIERFTEVURSBTRVQgTlVMTCwgT04gREVMRVRFIFNFVCBERUZBVUxULCBPTgorICogVVBE QVRFIFNFVCBOVUxMLCBhbmQgT04gVVBEQVRFIFNFVCBERUZBVUxULgorICovCitzdGF0aWMg RGF0dW0KK3RyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxs LCBpbnQgdGdraW5kKQoreworCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJ UmVsYXRpb24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAq b2xkc2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIJcXBsYW47CisJRGF0 dW0JCXRhcmdldFJhbmdlOworCWludDMyCQlxdWVyeW5vOworCisJcmlpbmZvID0gcmlfRmV0 Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdk YXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24g ZGVzY3JpcHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUu CisJICoKKwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBz aW5jZSB0aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24g aXQuCisJICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xk c2xvdCA9IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgU0VUIE5V TEwvREVGQVVMVCB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmlt bWVkIGJ5IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8K Kwl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdf dGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBT UElfT0tfQ09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOwor CisJLyoKKwkgKiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIHRyaWdn ZXIuCisJICovCisJc3dpdGNoICh0Z2tpbmQpCisJeworCQljYXNlIFJJX1RSSUdUWVBFX1VQ REFURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVM TF9PTlVQREFURQorCQkJCTogVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURTsKKwkJCWJy ZWFrOworCQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRf bnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQorCQkJCTogVFJJX1BMQU5f U0VUREVGQVVMVF9PTkRFTEVURTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhF UlJPUiwgImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwl9CisKKwlyaV9C dWlsZFF1ZXJ5S2V5KCZxa2V5LCByaWluZm8sIHF1ZXJ5bm8pOworCisJaWYgKChxcGxhbiA9 IHJpX0ZldGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0lu Zm9EYXRhIHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlm a3JlbG5hbWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01B WF9RVU9URURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBj aGFyICpxdWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkJcXVlcnlv aWRzW1JJX01BWF9OVU1LRVlTICsgMV07IC8qICsxIGZvciBGT1IgUE9SVElPTiBPRiAqLwor CQljb25zdCBjaGFyICpma19vbmx5OworCQlpbnQJCQludW1fY29sc190b19zZXQ7CisJCWNv bnN0IGludDE2ICpzZXRfY29sczsKKworCQlzd2l0Y2ggKHRna2luZCkKKwkJeworCQkJY2Fz ZSBSSV9UUklHVFlQRV9VUERBVEU6CisJCQkJLyogLTEgc28gd2UgbGV0IEZPUiBQT1JUSU9O IE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5u a2V5cyAtIDE7CisJCQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7CisJCQkJYnJl YWs7CisJCQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCQkvKgorCQkJCSAqIElmIGNv bmZkZWxzZXRjb2xzIGFyZSBwcmVzZW50LCB0aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQorCQkJ CSAqIGNvbHVtbnMgc3BlY2lmaWVkIGluIHRoYXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRh dGUgYWxsCisJCQkJICogdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMuCisJCQkJICovCisJCQkJ aWYgKHJpaW5mby0+bmRlbHNldGNvbHMgIT0gMCkKKwkJCQl7CisJCQkJCW51bV9jb2xzX3Rv X3NldCA9IHJpaW5mby0+bmRlbHNldGNvbHM7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5j b25mZGVsc2V0Y29sczsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogLTEgc28g d2UgbGV0IEZPUiBQT1JUSU9OIE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJCW51bV9jb2xz X3RvX3NldCA9IHJpaW5mby0+bmtleXMgLSAxOworCQkJCQlzZXRfY29scyA9IHJpaW5mby0+ ZmtfYXR0bnVtczsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2co RVJST1IsICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJCX0KKworCQkv KiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICoJVVBE QVRFIFtPTkxZXSA8Zmt0YWJsZT4KKwkJICoJCQlGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJP TSBsb3dlcigke24rMX0pIFRPIHVwcGVyKCR7bisxfSkKKwkJICoJCQlTRVQgZmthdHQxID0g e05VTEx8REVGQVVMVH0gWywgLi4uXQorCQkgKgkJCVdIRVJFICQxID0gZmthdHQxIFtBTkQg Li4uXQorCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9z ZSBvZiB0aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0t LS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0U3Ry aW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2lu ZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsKKwkJ cXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5hbWUo YXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+ bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBEQVRF ICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCkg U0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtl eXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisKKwkJLyoKKwkJICogQWRkIGFzc2lnbm1l bnQgY2xhdXNlcworCQkgKi8KKwkJcXVlcnlzZXAgPSAiIjsKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1fY29sc190b19zZXQ7IGkrKykKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5h bWUsIFJJQXR0TmFtZShma19yZWwsIHNldF9jb2xzW2ldKSk7CisJCQlhcHBlbmRTdHJpbmdJ bmZvKCZxdWVyeWJ1ZiwKKwkJCQkJCQkgIiVzICVzID0gJXMiLAorCQkJCQkJCSBxdWVyeXNl cCwgYXR0bmFtZSwKKwkJCQkJCQkgaXNfc2V0X251bGwgPyAiTlVMTCIgOiAiREVGQVVMVCIp OworCQkJcXVlcnlzZXAgPSAiLCI7CisJCX0KKworCQkvKgorCQkgKiBBZGQgV0hFUkUgY2xh dXNlCisJCSAqLworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkg PCByaWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZAlwa190eXBlID0gUklBdHRUeXBl KHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAlma190eXBlID0gUklB dHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa19jb2xs ID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJ T2lkCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVt c1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCisJCQlzcHJpbnRmKHBhcmFtbmFt ZSwgIiQlZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxz ZXAsCisJCQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+cGZfZXFf b3Byc1tpXSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19jb2xsICE9 IGZrX2NvbGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQor CQkJCXJpX0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOworCQkJ cXVhbHNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJ CS8qIFNldCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5 b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhl IHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZv LT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVs KTsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0 ZSB0aGUgZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlp bmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90 LCBOVUxMLAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJ CS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJ aWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJ X2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwlpZiAoaXNfc2V0X251bGwpCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0o TlVMTCk7CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgd2UganVzdCBkZWxldGVkIG9yIHVw ZGF0ZWQgdGhlIFBLIHJvdyB3aG9zZSBrZXkgd2FzIGVxdWFsIHRvIHRoZQorCQkgKiBGSyBj b2x1bW5zJyBkZWZhdWx0IHZhbHVlcywgYW5kIGEgcmVmZXJlbmNpbmcgcm93IGV4aXN0cyBp biB0aGUgRksKKwkJICogdGFibGUsIHdlIHdvdWxkIGhhdmUgdXBkYXRlZCB0aGF0IHJvdyB0 byB0aGUgc2FtZSB2YWx1ZXMgaXQgYWxyZWFkeQorCQkgKiBoYWQgLS0tIGFuZCBSSV9GS2V5 X2ZrX3VwZF9jaGVja19yZXF1aXJlZCB3b3VsZCBoZW5jZSBiZWxpZXZlIG5vCisJCSAqIGNo ZWNrIGlzIG5lY2Vzc2FyeS4gIFNvIHdlIG5lZWQgdG8gZG8gYW5vdGhlciBsb29rdXAgbm93 IGFuZCBpbgorCQkgKiBjYXNlIGEgcmVmZXJlbmNlIHN0aWxsIGV4aXN0cywgYWJvcnQgdGhl IG9wZXJhdGlvbi4gIFRoYXQgaXMKKwkJICogYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiB0aGUg Tk8gQUNUSU9OIHRyaWdnZXIsIHNvIGp1c3QgcnVuIGl0LiAoVGhpcworCQkgKiByZWNoZWNr IGlzIG9ubHkgbmVlZGVkIGluIHRoZSBTRVQgREVGQVVMVCBjYXNlLCBzaW5jZSBDQVNDQURF IHdvdWxkCisJCSAqIHJlbW92ZSBzdWNoIHJvd3MgaW4gY2FzZSBvZiBhIERFTEVURSBvcGVy YXRpb24gb3Igd291bGQgY2hhbmdlIHRoZQorCQkgKiBGSyBrZXkgdmFsdWVzIGluIGNhc2Ug b2YgYW4gVVBEQVRFLCB3aGlsZSBTRVQgTlVMTCBpcyBjZXJ0YWluIHRvCisJCSAqIHJlc3Vs dCBpbiByb3dzIHRoYXQgc2F0aXNmeSB0aGUgRksgY29uc3RyYWludC4pCisJCSAqLworCQly ZXR1cm4gcmlfcmVzdHJpY3QodHJpZ2RhdGEsIHRydWUpOworCX0KK30KKwogLyoKICAqIFJJ X0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KICAqCkBAIC0yNTgzLDggKzMxMjAsOCBA QCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlp bnQJCQlzcGlfcmVzdWx0OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2Vj X2NvbnRleHQ7Ci0JRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAyXTsKLQljaGFyCQlu dWxsc1tSSV9NQVhfTlVNS0VZUyAqIDJdOworCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlT ICogMiArIDFdOworCWNoYXIJCW51bGxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOwogCiAJ LyoKIAkgKiBVc2UgdGhlIHF1ZXJ5IHR5cGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0 aGUgcXVlcnkgaXMgcnVuIGFnYWluc3QKQEAgLTI2MTksOCArMzE1NiwxMCBAQCByaV9QZXJm b3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJcmlfRXh0cmFj dFZhbHVlcyhzb3VyY2VfcmVsLCBuZXdzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJ CQkJCSB2YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQorCQl7CiAJCQlyaV9FeHRyYWN0 VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJ CQkJCSB2YWxzICsgcmlpbmZvLT5ua2V5cywgbnVsbHMgKyByaWluZm8tPm5rZXlzKTsKKwkJ fQogCX0KIAllbHNlCiAJewpAQCAtMzMzMSw4ICszODcwLDE0IEBAIFJJX0ZLZXlfdHJpZ2dl cl90eXBlKE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgog CQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNU SU9OX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX0NBU0NBREVfREVMOgorCQljYXNlIEZfVFJJ X0ZLRVlfQ0FTQ0FERV9VUEQ6CiAJCWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9ERUw6CiAJ CWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9TRVRO VUxMX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExfVVBEOgorCQljYXNlIEZfVFJJ X0ZLRVlfU0VUREVGQVVMVF9ERUw6CisJCWNhc2UgRl9UUklfRktFWV9TRVRERUZBVUxUX1VQ RDoKIAkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1RSSV9GS0VZ X05PQUNUSU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKaW5kZXggNzI3ZWIzNTA4Ny4uY2EwNzc2NmJhZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3Byb2MuZGF0CkBAIC0zOTUyLDYgKzM5NTIsMTIgQEAKIHsgb2lkID0+ICc2MTIz JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtF WSAuLi4gUkVGRVJFTkNFUycsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCiAgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lk ID0+ICc2MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBERUxFVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVs JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJv YXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnIH0sCit7 IG9pZCA9PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3Jp dHkgT04gVVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRl X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisg IHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9 LAogeyBvaWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50 ZWdyaXR5IE9OIERFTEVURSBSRVNUUklDVCcsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jl c3RyaWN0X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJp Z2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLApAQCAtMzk2MCw2ICszOTY2LDIwIEBACiAgIHBy b25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywK ICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9z cmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTI4JywgZGVz Y3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgU0VUIE5V TEwnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcsIHByb3ZvbGF0aWxl ID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcn LCBwcm9zcmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjkn LCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBT RVQgTlVMTCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJywgcHJvdm9s YXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMg PT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0sCit7IG9pZCA9PiAn NjEzMCcsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVM RVRFIFNFVCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9k ZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBw cm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2Rl bCcgfSwKK3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFs IGludGVncml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklf RktleV9zZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9G S2V5X3NldGRlZmF1bHRfdXBkJyB9LAogeyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVt cG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAogICBw cm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndics CiAgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4 IGU3M2ViOGJiMzMuLjQzYTU3ZDFkMDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtOTE3LDMwICs5MTcsMTg0IEBAIERF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1LDVdJyk7CiAtLQogLS0g dGVzdCBPTiBVUERBVEUvREVMRVRFIG9wdGlvbnMKIC0tCistLSBUT0M6CistLSBwYXJlbnQg dXBkYXRlcyBDQVNDQURFCistLSBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJlbnQg dXBkYXRlcyBTRVQgTlVMTAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKKy0tIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAor LS0gcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50 IGRlbGV0ZXMgQ0FTQ0FERSAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IHVwZGF0ZXMg U0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxM ICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNj YWxhciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCistLSBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVCAodHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQg KHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28g c2NhbGFyIGNvbHMsIFNFVCBERUZBVUxUIHN1YnNldCkKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92ZXJzIG9uIGJv dGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcsOCkKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3Mp CisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg WzcsOCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzcsOCkKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzcsOCkK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzksMTApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJG cmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVh biB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBb MTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6 MDA6MDAgMjAyMSIpIHwgWzYsNykKKygyIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworIGlk IHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygx IHJvdykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOwogLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAotSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzks OV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24g bm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBsZWZ0b3ZlcnMg b24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBb MTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3Mp CisKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg CisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiKSB8IAorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzIwMCwyMDEp IHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3 LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNF VCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVz OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KQorIFsx MDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyBkZWxldGU6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAg aWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgCisgWzEwMCwxMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IAorKDMgcm93cykKKworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5 LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAw MSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbMjAw LDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAs MjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkIElOICgnWzYsNl0n LCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEs LTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7Ci1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwogICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKIAlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKQEAgLTk0OCw3ICsxMTAyLDQ2MSBAQCBB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRf aWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04g REVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKLUVSUk9SOiAgYWN0 aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gbGVmdG92 ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAn WzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcp CisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcg U0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEwMCwx MDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbMTAwLDEwMSkg fCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAy MSIpIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQg cm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIwMCwy MDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOwor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4LDhd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBp ZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAg ICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzIwMCwyMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAw OjAwOjAwIDIwMjAiKSB8IFstMSwwKQorIFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbOCw5KQorKDIgcm93 cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5 XScpOworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBU TyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMDAsMTAx KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIikgfCBbLTEsMCkKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkg fCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIpIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworICAgIGlkICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAs MTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5n MnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7 CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAx JyBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlk ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgpICAgICAg fCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEw MSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAg MjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVw ZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJl bnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBb MTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIpIHwgWzcsOCkgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs3 LDgpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNyw4KSAgICAgIHwgWzYsNykK KygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s5LDld JyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRp bWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQg PSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZh bGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9p ZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAs MjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbOSwxMCkgICAgIHwgWzgsOSkKKyBbMjAwLDIwMSkgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkg ICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZdJywg J1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IENBU0NBREUgKHR3byBzY2FsYXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd JywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0w MScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAg ICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8 IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDIgcm93cykK KworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KygwIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9 ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0n OworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzIwMCwyMDEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4 LDkpICAgICAgfCBbOCw5KQorKDEgcm93KQorCistLSBjbGVhbiB1cAorREVMRVRFIEZST00g dGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwy MDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSBJTiAoJ1s2LDZd JywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0IEZLIHBhcmVudCB1cGRh dGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb Niw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEs IHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBsZWZ0 b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQx ID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAgICAgfCAKKyBbMTAw LDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcp ICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUg dGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEw MF0nOworICAgIGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 ICAgICAgICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgICAgICAgICAgICB8IAorIFsxMDAs MTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCAgICAgICAgICAgIHwgCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdv IHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworVVBEQVRFIHRlbXBv cmFsX3JuZzIgU0VUIGlkMSA9ICdbOSw5XScgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFs aWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAorIFsy MDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDow MDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNsZWFu IHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sx MDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hF UkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0tIHRl c3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scykKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m azJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90 aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQy IAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEw MSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAg MjAyMCIpIHwgICAgICAgICAgICB8IAorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwg WzYsNykKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQor CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUg aWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBh cmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQor IFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgCisgWzEwMCwxMDEpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8ICAgICAg ICAgICAgfCAKKyBbMTAwLDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgICAgICAgICAgICB8IAorKDMgcm93cykKKwor LS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdb OCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQg dmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IAor IFsyMDAsMjAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAw MDowMDowMCAyMDIxIikgfCBbOCw5KSAgICAgIHwgWzgsOSkKKygyIHJvd3MpCisKKy0tIGNs ZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAo J1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIg V0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKy0t IHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2FsYXIgY29scywgU0VU IE5VTEwgc3Vic2V0KQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2 XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsK Ky0tIGZhaWxzIGJlY2F1c2UgeW91IGNhbid0IHNldCB0aGUgUEVSSU9EIGNvbHVtbjoKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VU IE5VTEwgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGNvbHVtbiAi dmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNFVCBhY3Rpb24gY2Fubm90IGJl IFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwg cGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzIKKwkJT04gREVMRVRFIFNFVCBOVUxMIChwYXJlbnRfaWQxKSBPTiBVUERBVEUgU0VUIE5V TEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIw MjAtMDEtMDEnIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgICAgICAgICAgICB8IFs2LDcpCisg WzEwMCwxMDEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2Vk IEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBb Niw3KSAgICAgIHwgWzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVM RVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAg IGlkICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAx IDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8ICAgICAgICAg ICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAgICAgICAgICAgIHwgWzYsNykKKyBbMTAw LDEwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgICAgICAgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBGSyBhY3Jv c3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAgICAgICAgICAgIHwgWzgsOSkKKyBbMjAw LDIwMSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWzgsOSkgICAgICB8IFs4LDkpCisoMiByb3dzKQorCistLSBjbGVhbiB1 cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJF IGlkMSBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CistLSB0ZXN0 IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWy0xLC0xXScsIHRz cmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbNiw2XScsICdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAw XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYs Nl0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVN TiBwYXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBh cmVudF9pZDIgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9E IHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIFNF VCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3Ro IHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZDEgPSAnWzcsN10nLCBp ZDIgPSAnWzcsN10nIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAg ICB8IHBhcmVudF9pZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAg MjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSww KQorIFsxMDAsMTAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IikgfCBbNiw3KSAgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBb IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIp IHwgWzYsNykgICAgICB8IFs2LDcpCisoMyByb3dzKQorCistLSBub24tRlBPIHVwZGF0ZToK K1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzcsN10nLCBpZDIgPSAnWzcsN10n IFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9p ZDEgfCBwYXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyBbMTAwLDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAx KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAy MDE5IikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSwwKSAg ICAgfCBbLTEsMCkKKygzIHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCBy b3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIw LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5n MnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQg aWQxID0gJ1s5LDldJywgaWQyID0gJ1s5LDldJyBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0x LDApCisgWzIwMCwyMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKwor LS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk IElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScp OworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBj b2xzKQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbNiw2XScsICdbNiw2 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nLCAnWzYsNl0nKTsKKy0tIGxlZnRv dmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hF UkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsxMDAsMTAxKSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzEwMCwxMDEpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTki KSB8IFs2LDcpICAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KSAgICAgIHwg WzYsNykKKygzIHJvd3MpCisKKy0tIG5vbi1GUE8gdXBkYXRlOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworICAgIGlkICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAg fCBwYXJlbnRfaWQxIHwgcGFyZW50X2lkMiAKKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgWzEwMCwxMDEpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIw MTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSwwKSAgICAgfCBbLTEsMCkK KyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApICAgICB8IFstMSwwKQorIFsxMDAsMTAxKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkgICAgIHwgWy0xLDApCisoMyByb3dzKQorCistLSBGSyBhY3Jvc3MgdHdvIHJl ZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgs OF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcg V0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8 IHBhcmVudF9pZDIgCistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LQorIFsyMDAsMjAxKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkgICAgIHwgWy0xLDApCisgWzIwMCwyMDEpIHwg WyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEi KSB8IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywg J1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4g KCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzLCBTRVQgREVGQVVMVCBz dWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAn WzYsNl0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMg KCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2 LDZdJywgJ1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBF UklPRCBjb2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRf aWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlP TiBERUxFVEUgU0VUIERFRkFVTFQgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7 CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIHJlZmVyZW5jZWQgaW4gT04gREVMRVRFIFNF VCBhY3Rpb24gY2Fubm90IGJlIFBFUklPRAorLS0gb2s6CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAn Wy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgKHBhcmVudF9pZDEp IE9OIFVQREFURSBTRVQgREVGQVVMVDsKKy0tIGxlZnRvdmVycyBvbiBib3RoIHNpZGVzOgor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBd JzsKKyAgICBpZCAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkMSB8IHBhcmVudF9pZDIgCistLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIFsxMDAsMTAxKSB8IFsiVHVl IEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBb LTEsMCkgICAgIHwgWzYsNykKKyBbMTAwLDEwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzYsNykgICAgICB8IFs2LDcp CisgWzEwMCwxMDEpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAx IDAwOjAwOjAwIDIwMjEiKSB8IFs2LDcpICAgICAgfCBbNiw3KQorKDMgcm93cykKKworLS0g bm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMDAsMTAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2 YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBwYXJlbnRf aWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBbMTAw LDEwMSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs2LDcpCisgWzEwMCwxMDEpIHwgWyJNb24gSmFu IDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSww KSAgICAgfCBbNiw3KQorIFsxMDAsMTAxKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbLTEsMCkgICAgIHwgWzYsNykKKygz IHJvd3MpCisKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0n LCAnWzgsOF0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s4LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEt MDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkID0gJ1syMDAsMjAwXSc7CisgICAgaWQgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZDEgfCBw YXJlbnRfaWQyIAorLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBbMjAwLDIwMSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApICAgICB8IFs4LDkpCisgWzIwMCwyMDEpIHwgWyJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8 IFs4LDkpICAgICAgfCBbOCw5KQorKDIgcm93cykKKworLS0gY2xlYW4gdXAKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1sy MDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdb Niw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworLS0gRksgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBl PWRhdGUpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwK Kwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlk X2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9mazNfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfZmsgRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZzMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURFCisp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMyBWQUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9mazNfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcz IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrM19y bmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzUsNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4LDkp CisgWzUsNikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dzKQor CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrM19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3Jh bF9ybmczOworRFJPUCBUWVBFIG15ZGF0ZXJhbmdlOwogLS0gRksgYmV0d2VlbiBwYXJ0aXRp b25lZCB0YWJsZXMKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAog CWlkIGludDRyYW5nZSwKQEAgLTk1Niw4ICsxNTY0LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUgdGV4dCwKIAlDT05TVFJBSU5UIHRlbXBv cmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0 cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElO ICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDEx XScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4 XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9u IE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAn WzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0nLCAnWzExLDExXScsICdbMTMsMTNd JywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTksMTldJywgJ1syMSwyMV0nLCAnWzIzLDIz XScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScsICdbMiwyXScsICdbNCw0XScsICdbNiw2 XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nLCAnWzE0LDE0XScsICdbMTYsMTZd JywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIsMjJdJywgJ1syNCwyNF0nKTsKIElOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKICAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKICAgKCdbMSwx XScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKQEAg LTk3MCw4ICsxNTc4LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQog KSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlv biBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7 Ci1DUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywg J1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBh cnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMg SU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEs MTFdJywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIx LDIxXScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywg J1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEy XScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwy Ml0nLCAnWzI0LDI0XScpOwogLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5zZXJ0cwogSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKICAgKCdb MSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScp LApAQCAtMTAwNiw3ICsxNjE0LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0t IHNob3VsZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEi IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4gdXA6 CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBh cmVudF9pZCA9ICdbNSw1XSc7CkBAIC0xMDE4LDcgKzE2MjYsNyBAQCBJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJh bmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVwZGF0ZSBv ciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWlu dCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24g dGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleTEi IG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVUQUlMOiAg S2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKQEAgLTEwNDAsNyAr MTY0OCw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtCiAtLSBzaG91bGQgZmFpbDoK IFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQogICBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK LUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3Bh cmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBm b3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X3BhcmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAx OCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUs NV0nOwpAQCAtMTA1MiwzNSArMTY2MCwyMTQgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0KIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKIC0tIHNob3VsZCBmYWlsOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9u IHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRl IG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZl cmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s2LDZdJywgZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9O IERFTEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFs0LDUpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwg WzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbNiw3KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAs MDEtMDEtMjAyMSkgfCBbNiw3KQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb NCw0XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAK Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0LDUp IHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCBbNyw4KQorIFs0LDUpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAy MSkgfCBbNyw4KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1 LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2 LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFsxMCwxMSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFsx NiwxNykKKyBbMTAsMTEpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTUsMTYpCiso MiByb3dzKQorCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURFCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzUs NikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFs4LDkpCisgWzUsNikgfCBbMDEtMDEt MjAyMCwwMS0wMS0yMDIxKSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK KyBpZCB8IHZhbGlkX2F0IHwgcGFyZW50X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisoMCByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzE3LDE3XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sx NywxN10nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzExLDEx XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzE3 LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTEsMTFd JzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMSwx MikgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxNywxOCkKKygxIHJvdykKKwogLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBE RUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzks OV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwgWzAx LTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOSwxMCkKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAx LTAxLTIwMjEpIHwgWzksMTApCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzYsNl0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3 KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzYsNykgfCBbMDEtMDEtMjAxOCww MS0wMS0yMDE5KSB8IAorIFs2LDcpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCAKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTgsMThdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4XScs IGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTIsMTJdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlk ID0gJ1sxOCwxOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbMTIsMTMpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkgfCAKKyBbMTIsMTMpIHwgWzAx LTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTgsMTkpCisoMiByb3dzKQorCiAtLSBwYXJ0aXRp b25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRP ICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNyw3XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWzAxLTAxLTIw MTksMDEtMDEtMjAyMCkgfCAKKyBbNyw4KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwg WzExLDEyKQorIFs3LDgpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTEsMTIpCiso MyByb3dzKQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUg aWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisg WzcsOCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IAorIFs3LDgpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMTMsMTNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBX SEVSRSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRl OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgWzEzLDE0KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEzLDE0 KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIwLDIxKQorKDIgcm93cykKKwogLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShu dWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMg KCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIs MTJdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0g IEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRF UiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERF RkFVTFQ7Ci1FUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3Jl aWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9 ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlkICAg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWzAxLTAxLTIwMTks MDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkg fCBbMTIsMTMpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxMiwxMykK KygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAgaWQgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbMDEtMDEtMjAxOSww MS0wMS0yMDIwKSB8IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8 IFswLDEpCisgWzgsOSkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFswLDEpCisoMyBy b3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzIyLDIyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBk YXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE0LDE0XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9 ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzE0LDE1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTQsMTUpIHwg WzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMjIsMjMpCisoMiByb3dzKQorCiAtLSBwYXJ0 aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7 CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwg WzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDE4 LDAxLTAxLTIwMTkpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIw MjEpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbMDEtMDEtMjAx OSwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzksMTApIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAx OSkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzAsMSkK KygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0LDI0 XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUsMTVdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syNCwyNF0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMjQsMjRd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOwor ICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE1LDE2KSB8 IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbMTUsMTYpIHwgWzAxLTAxLTIw MjAsMDEtMDEtMjAyMSkgfCBbMjQsMjUpCisoMiByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRf b3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKaW5kZXggNzUxYzQyYWI2Yi4uZTQwZGEwYmM3NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTcyNiwzMSArNzI2LDExNCBAQCBERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNSw1XScpOwogLS0KIC0tIHRl c3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCiAtLQorLS0gVE9DOgorLS0gcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQorLS0gcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorLS0gcGFyZW50IHVw ZGF0ZXMgU0VUIE5VTEwKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCistLSBwYXJlbnQg dXBkYXRlcyBTRVQgREVGQVVMVAorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKKy0t IHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBk ZWxldGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCB1cGRhdGVzIFNF VCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAo dHdvIHNjYWxhciBjb2xzKQorLS0gcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwgKHR3byBzY2Fs YXIgY29scywgU0VUIE5VTEwgc3Vic2V0KQorLS0gcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFV TFQgKHR3byBzY2FsYXIgY29scykKKy0tIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0 d28gc2NhbGFyIGNvbHMpCistLSBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVCAodHdvIHNj YWxhciBjb2xzLCBTRVQgREVGQVVMVCBzdWJzZXQpCiAKIC0tIHRlc3QgRksgcGFyZW50IHVw ZGF0ZXMgQ0FTQ0FERQogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwotSU5TRVJUIElOVE8g dGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKy0tIGxlZnRvdmVycyBvbiBib3Ro IHNpZGVzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gdXBkYXRlOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0g RksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3Jhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s5LDldJyBXSEVSRSBpZCA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAx Jzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1syMDAsMjAwXSc7CistLSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywg J1s4LDhdJywgJ1s5LDldJyk7CisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FE RQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7Cist LSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRl bXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOwogCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVz IFNFVCBOVUxMCi1JTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7Ci1JTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbOSw5XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJyk7CiBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawog CQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5V TEw7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcg Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEt MDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24t RlBPIHVwZGF0ZToKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVS RSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dz OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5n IFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbOSw5XScgV0hFUkUgaWQgPSAnWzgsOF0nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgSU4gKCdbMTAw LDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0 IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcg VkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMDAsMTAwXScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKKy0tIGxl ZnRvdmVycyBvbiBib3RoIHNpZGVzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBX SEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIG5vbi1GUE8gZGVsZXRlOgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3Nz IHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb OCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1syMDAsMjAwXSc7Cist LSBjbGVhbiB1cAorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCBJ TiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCBJTiAoJ1s2LDZdJywgJ1s3LDddJywgJ1s4LDhdJywgJ1s5LDldJyk7CiAK IC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7Ci1J TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKLUlOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb Niw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZwogICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxU ICdbLTEsLTFdJywKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywK QEAgLTc1OCw2ICs4NDEsMjcxIEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK IAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNF VCBERUZBVUxUOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitVUERBVEUgdGVtcG9y YWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOwor LS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5j ZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIw MCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScp OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzksOV0nIFdIRVJFIGlkID0gJ1s4 LDhdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0t IGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkIElO ICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKwor LS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZd Jyk7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIHVwZGF0ZToK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0t IEZLIGFjcm9zcyB0d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5n ZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFt cDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAw LDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgSU4gKCdbMTAwLDEwMF0nLCAnWzIwMCwyMDBdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUgKHR3byBzY2Fs YXIgY29scykKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAn WzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9mazJfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJu Z19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIKKwkJT04gREVMRVRFIENBU0NB REUgT04gVVBEQVRFIENBU0NBREU7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQ REFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAn WzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5n MiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksg YWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIw LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScs ICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQ REFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEgPSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0g Y2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElO ICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n MiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOwor CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUgKHR3byBzY2FsYXIgY29scykK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CistLSBsZWZ0b3ZlcnMg b24gYm90aCBzaWRlczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlk MSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJF IGlkID0gJ1sxMDAsMTAwXSc7CistLSBub24tRlBPIGRlbGV0ZToKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZzIgV0hFUkUgaWQxID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwMCwxMDBdJzsKKy0tIEZLIGFjcm9zcyB0 d28gcmVmZXJlbmNlZCByb3dzOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMg KCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0n LCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAs MjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2 XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFM VUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbNiw2XScsICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcyCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CistLSBs ZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoKK1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQxID0gJ1s3LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1 cGRhdGU6CitVUERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJyBXSEVSRSBp ZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2VkIHJvd3M6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIwMjAtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9ybmcycm5n IFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNFVCBpZDEg PSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBv cmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdb Nyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMICh0d28gc2NhbGFyIGNvbHMpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcy IFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgn WzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2 XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEt MDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9u LUZQTyBkZWxldGU6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0g J1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVT ICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdb OCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEg PSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBd JzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVS RSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzks OV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgTlVMTCAodHdvIHNjYWxh ciBjb2xzLCBTRVQgTlVMTCBzdWJzZXQpCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZB TFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEw MCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScs ICdbNiw2XScpOworLS0gZmFpbHMgYmVjYXVzZSB5b3UgY2FuJ3Qgc2V0IHRoZSBQRVJJT0Qg Y29sdW1uOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmsyX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9p ZDIsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9O IERFTEVURSBTRVQgTlVMTCAodmFsaWRfYXQpIE9OIFVQREFURSBTRVQgTlVMTDsKKy0tIG9r OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsy X3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVU RSBTRVQgTlVMTCAocGFyZW50X2lkMSkgT04gVVBEQVRFIFNFVCBOVUxMOworLS0gbGVmdG92 ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVS RSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyBkZWxldGU6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jv c3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBA PiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsy X3JuZzJybmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUg RlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdb MjAwLDIwMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgn WzYsNl0nLCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJl bnQgdXBkYXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzKQorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1stMSwtMV0nLCB0c3JhbmdlKG51 bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgnWzYsNl0n LCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAwLDEwMF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywgJ1s2LDZdJyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50 X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisgIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQy IFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsy X3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBTRVQgREVGQVVM VCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBsZWZ0b3ZlcnMgb24gYm90aCBzaWRlczoK K1VQREFURSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3 LDddJyBXSEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJf cm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitV UERBVEUgdGVtcG9yYWxfcm5nMiBTRVQgaWQxID0gJ1s3LDddJywgaWQyID0gJ1s3LDddJyBX SEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gRksgYWNyb3NzIHR3byByZWZlcmVuY2Vk IHJvd3M6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4 LDhdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsICdbOCw4XScsIHRzcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrMl9y bmcycm5nIFZBTFVFUyAoJ1syMDAsMjAwXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzgsOF0nLCAnWzgsOF0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcyIFNF VCBpZDEgPSAnWzksOV0nLCBpZDIgPSAnWzksOV0nIFdIRVJFIGlkMSA9ICdbOCw4XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIwMF0nOworLS0gY2xlYW4g dXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkIElOICgnWzEw MCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBXSEVS RSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdbOSw5XScpOworCistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUICh0d28gc2NhbGFyIGNvbHMpCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s2LDZdJywgJ1s2LDZdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzEwMCwxMDBdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScsICdbNiw2XScpOworLS0gbGVmdG92ZXJzIG9u IGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZDEg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBhY3Jvc3MgdHdv IHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFMVUVTICgn WzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywgJ1s4LDhdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzIwMCwyMDBdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScsICdbOCw4XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nMiBXSEVSRSBpZDEgPSAnWzgsOF0nIEFORCB2YWxpZF9hdCBAPiAnMjAx OS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmsyX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzIwMCwyMDBdJzsKKy0tIGNsZWFuIHVwCitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCBJTiAoJ1sxMDAsMTAwXScsICdbMjAwLDIw MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZzIgV0hFUkUgaWQxIElOICgnWzYsNl0n LCAnWzcsN10nLCAnWzgsOF0nLCAnWzksOV0nKTsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVs ZXRlcyBTRVQgREVGQVVMVCAodHdvIHNjYWxhciBjb2xzLCBTRVQgREVGQVVMVCBzdWJzZXQp CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1stMSwtMV0nLCAnWzYsNl0n LCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIgVkFM VUVTICgnWzYsNl0nLCAnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbMTAw LDEwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s2LDZdJywg J1s2LDZdJyk7CistLSBmYWlscyBiZWNhdXNlIHlvdSBjYW4ndCBzZXQgdGhlIFBFUklPRCBj b2x1bW46CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZworICBBTFRFUiBDT0xV TU4gcGFyZW50X2lkMSBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr Ml9ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQxLCBwYXJlbnRfaWQyLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nMgorCQlPTiBERUxF VEUgU0VUIERFRkFVTFQgKHZhbGlkX2F0KSBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CistLSBv azoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nCisgIEFMVEVSIENPTFVNTiBw YXJlbnRfaWQxIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3Ju ZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyCisJCU9OIERFTEVURSBT RVQgREVGQVVMVCAocGFyZW50X2lkMSkgT04gVVBEQVRFIFNFVCBERUZBVUxUOworLS0gbGVm dG92ZXJzIG9uIGJvdGggc2lkZXM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBX SEVSRSBpZDEgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbMTAwLDEwMF0nOworLS0gbm9uLUZQTyB1cGRhdGU6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlkMSA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1sxMDAsMTAwXSc7CistLSBGSyBh Y3Jvc3MgdHdvIHJlZmVyZW5jZWQgcm93czoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCAnWzgsOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg J1s4LDhdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbLTEsLTFdJywgJ1s4LDhdJywgdHNyYW5n ZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxV RVMgKCdbMjAwLDIwMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1s4LDhdJywgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIFdIRVJFIGlk MSA9ICdbOCw4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMjAwLDIw MF0nOworLS0gY2xlYW4gdXAKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdI RVJFIGlkIElOICgnWzEwMCwxMDBdJywgJ1syMDAsMjAwXScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcm5nMiBXSEVSRSBpZDEgSU4gKCdbNiw2XScsICdbNyw3XScsICdbOCw4XScsICdb OSw5XScpOworCistLSBGSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZ UEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazNf cm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazNfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmszX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzMgKGlkLCBQRVJJ T0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURFCispOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nMyBWQUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazNfcm5nMnJuZyBWQUxVRVMg KCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmczIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4 XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrM19ybmcycm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazNfcm5nMnJuZzsKK0RST1AgVEFCTEUg dGVtcG9yYWxfcm5nMzsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIAogLS0gRksgYmV0d2Vl biBwYXJ0aXRpb25lZCB0YWJsZXMKIApAQCAtNzY3LDggKzExMTUsOCBAQCBDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRF IFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBW QUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScs ICdbMTEsMTFdJyk7Ci1DUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywg J1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScs ICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRd JywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywg J1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScp OwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sx LDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAog ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29u ZScpLApAQCAtNzgyLDggKzExMzAsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdGZrcDEg cGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVF UyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sx MSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9S IFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDld JywgJ1sxMSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5 XScsICdbMjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgn WzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScs ICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0n LCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiAKIC0tIHBhcnRpdGlvbmVkIEZLIGNoaWxkIGlu c2VydHMKIApAQCAtODY3LDM3ICsxMjE1LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZQogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZwogCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQg PSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1 XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsK IAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVd JzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdb OCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiAK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdI RVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb MTIsMTJdJzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwK IAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwx MV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEs MTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1 cGRhdGVzIFNFVCBERUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJlbnRf aWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNF VCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERF TEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAn WzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0n OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIy LDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKIAor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbOSw5XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwot LSAKMi40Mi4wCgo= --------------q0P9SppGy0Gb0SiL8HntHna4 Content-Type: text/x-patch; charset=UTF-8; name="v20-0008-Add-PERIODs.patch" Content-Disposition: attachment; filename="v20-0008-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBkM2IyMzg0NzRiZGZhNzFhZTM4ZjhjY2U5MWM4NjdiYzkwMjUwMmMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjIwIDgvOF0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu 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 ZHMuYyAgICAgICAgICAgICAgfCA3NjMgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAxMCArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNDUgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3ICsr CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAgMjEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE3 MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNiArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAgICAg ICAgICAgIHwgIDU0ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21k LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bl cmlvZHMub3V0ICAgICAgICAgfCAxNzcgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w ZXJpb2RzLnNxbCAgICAgICAgICAgICAgfCAxMTkgKysrCiA0OCBmaWxlcyBjaGFuZ2VkLCAy MzE2IGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRl eCA0NjE3MGMwNzQ5Li42ZThjZjVlOTgzIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMwLDYg KzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlvbiBr ZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5hbWU+ cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnBl cmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19wb2xp Y3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNlY3Vy aXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MjYsNiArNTczMSwxMTMgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRhbG9n LXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9kIj4K KyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAg PHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNhdGlv biB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJl IGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0 aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5 cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAg IDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9kIG5h bWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0cnVj dGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5h bWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVsb25n cyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0 ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIgb2Yg dGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5w ZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5w Z19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg bnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0 cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk PmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFsPiBj b2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+Lgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3RyYWlu dDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHBl cmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+ CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggMjJkMDQwMDZhZC4uOGVhMGJlZDQyZiAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dt bApAQCAtMTI2Myw2ICsxMjYzLDY0IEBAIENSRUFURSBUQUJMRSBjaXJjbGVzICgKICAgPC9z ZWN0Mj4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJkZGwtcGVyaW9kcyI+CisgIDx0aXRs ZT5QZXJpb2RzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJlIGRlZmluaXRp b25zIG9uIGEgdGFibGUgdGhhdCBhc3NvY2lhdGUgYSBwZXJpb2QgbmFtZSB3aXRoIGEgc3Rh cnQKKyAgIGNvbHVtbiBhbmQgYW4gZW5kIGNvbHVtbi4gIEJvdGggY29sdW1ucyBtdXN0IGJl IG9mIGV4YWN0bHkgdGhlIHNhbWUgdHlwZQorICAgKGluY2x1ZGluZyBjb2xsYXRpb24pLCBo YXZlIGEgYnRyZWUgb3BlcmF0b3IgY2xhc3MsIGFuZCB0aGUgc3RhcnQgY29sdW1uCisgICB2 YWx1ZSBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGNvbHVtbiB2YWx1ZS4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBwZXJp b2RzOiBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtLiAgU3lzdGVtIHBlcmlvZHMgYXJlCisgICBk aXN0aW5ndWlzaGVkIGJ5IHRoZWlyIG5hbWUgd2hpY2ggbXVzdCBiZSA8bGl0ZXJhbD5TWVNU RU1fVElNRTwvbGl0ZXJhbD4uICBBbnkKKyAgIG90aGVyIG5hbWUgaXMgYW4gYXBwbGljYXRp b24gcGVyaW9kLgorICA8L3BhcmE+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1hcHBs aWNhdGlvbi1wZXJpb2RzIj4KKyAgPHRpdGxlPkFwcGxpY2F0aW9uIFBlcmlvZHM8L3RpdGxl PgorCisgICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAg ICA8c2Vjb25kYXJ5PmFwcGxpY2F0aW9uPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4K KworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBhcmUgZGVmaW5lZCBvbiBh IHRhYmxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorICAgPC9wYXJhPgorCis8cHJv Z3JhbWxpc3Rpbmc+CitDUkVBVEUgVEFCTEUgYmlsbGluZ19hZGRyZXNzZXMgKAorICBjdXN0 b21lcl9pZCBpbnRlZ2VyLAorICBhZGRyZXNzX2lkIGludGVnZXIsCisgIHZhbGlkX2Zyb20g ZGF0ZSwKKyAgdmFsaWRfdG8gZGF0ZSwKKyAgPGVtcGhhc2lzPlBFUklPRCBGT1IgdmFsaWRp dHkgKHZhbGlkX2Zyb20sIHZhbGlkX3RvKTwvZW1waGFzaXM+CispOworPC9wcm9ncmFtbGlz dGluZz4KKworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBjYW4gYmUgdXNl ZCB0byBkZWZpbmUgdGVtcG9yYWwgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLgorICAgIEFu eSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgaXMgYSB0ZW1wb3JhbCB0YWJs ZSBhbmQgc3VwcG9ydHMgdGVtcG9yYWwgdXBkYXRlIGFuZCBkZWxldGUgY29tbWFuZHMuCisg ICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0 ZW0tcGVyaW9kcyI+CisgICA8dGl0bGU+U3lzdGVtIFBlcmlvZHM8L3RpdGxlPgorCisgICA8 aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAgICA8c2Vjb25k YXJ5PnN5c3RlbTwvc2Vjb25kYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgor ICAgIFBlcmlvZHMgZm9yIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBhcmUgY3Vy cmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyA8L3Nl Y3QxPgorCiAgPHNlY3QxIGlkPSJkZGwtc3lzdGVtLWNvbHVtbnMiPgogICA8dGl0bGU+U3lz dGVtIENvbHVtbnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5mb3Jt YXRpb25fc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNn bWwKaW5kZXggMGNhN2Q1YTllMC4uNTZhNDQ2NGFiNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbmZvcm1h dGlvbl9zY2hlbWEuc2dtbApAQCAtNDE3MSw2ICs0MTcxLDY5IEBAIE9SREVSIEJZIGMub3Jk aW5hbF9wb3NpdGlvbjsKICAgPC90YWJsZT4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJp bmZvc2NoZW1hLXBlcmlvZHMiPgorICA8dGl0bGU+PGxpdGVyYWw+cGVyaW9kczwvbGl0ZXJh bD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGFyYW1ldGVy czwvbGl0ZXJhbD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICBwZXJpb2Rz IG9mIGFsbCB0YWJsZXMgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuICBUaGUgc3RhcnQgYW5k IGVuZCBjb2x1bW4KKyAgIG5hbWVzIGFyZSBvbmx5IHNob3duIGlmIHRoZSBjdXJyZW50IHVz ZXIgaGFzIGFjY2VzcyB0byB0aGVtIChieSB3YXkgb2YgYmVpbmcKKyAgIHRoZSBvd25lciBv ciBoYXZpbmcgc29tZSBwcml2aWxlZ2UpLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgorCisg ICA8dGdyb3VwIGNvbHM9IjMiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EYXRhIFR5cGU8L2VudHJ5PgorICAg ICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVh ZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50 YWJsZV9jYXRhbG9nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3Fs X2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBk YXRhYmFzZSBjb250YWluaW5nIHRoZSBwZXJpb2QgKGFsd2F5cyB0aGUgY3VycmVudCBkYXRh YmFzZSk8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPnRhYmxlX3NjaGVtYTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFt ZSBvZiB0aGUgc2NoZW1hIGNvbnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVfbmFtZTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmlu ZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5wZXJpb2RfbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50 cnk+TmFtZSBvZiB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5zdGFydF9jb2x1bW5fbmFtZTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgc3RhcnQgY29sdW1uIGZvciB0aGUgcGVy aW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5lbmRfY29sdW1uX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5h bWUgb2YgdGhlIGVuZCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jv dz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4K KwogIDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1yZWZlcmVudGlhbC1jb25zdHJhaW50cyI+CiAg IDx0aXRsZT48bGl0ZXJhbD5yZWZlcmVudGlhbF9jb25zdHJhaW50czwvbGl0ZXJhbD48L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggZTFkMjA3YmM2MC4u M2RjMDEwMTlhOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNjAsNiAr NjAsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05TVFJBSU5UIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2Vh YmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVS UkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVT VFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxlPiwgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2VhYmxlPiApIFsg V0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1IgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNU UklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVT RVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBdCiAgICAgRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJp Z2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU3MSw2ICs1NzMsMjkgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtYWRkLXBlcmlv ZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVyYWw+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gYWRkcyBh IG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMKKyAgICAg IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVy YWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZpZWQgcGVyaW9k IG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1ucyB3aWxsIG5v dCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8bGl0ZXJhbD5D SEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwgbmVlZCB0byBz YXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRoaW5nIG91dHNp ZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUtdHJpZ2dlciI+ CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVyYWw+RU5BQkxF IFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIxMy4uNDljMmRm OTk0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKQEAgLTQ0LDYgKzQ0LDcgQEAgQ09NTUVO VCBPTgogICBPUEVSQVRPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3JfbmFtZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bGVmdF90eXBlPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yaWdodF90eXBlPC9yZXBsYWNlYWJsZT4pIHwKICAgT1BFUkFUT1IgQ0xBU1MgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJ TkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFj ZWFibGU+IHwKICAgT1BFUkFUT1IgRkFNSUxZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiB8CisgIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVsYXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFj ZWFibGU+IHwKICAgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wb2xp Y3lfbmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBbIFBST0NFRFVSQUwgXSBMQU5HVUFH RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2Vh YmxlPiB8CiAgIFBST0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJv Y2VkdXJlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0gfApA QCAtMzQxLDYgKzM0Miw3IEBAIENPTU1FTlQgT04gT1BFUkFUT1IgXiAodGV4dCwgdGV4dCkg SVMgJ1BlcmZvcm1zIGludGVyc2VjdGlvbiBvZiB0d28gdGV4dHMnOwogQ09NTUVOVCBPTiBP UEVSQVRPUiAtIChOT05FLCBpbnRlZ2VyKSBJUyAnVW5hcnkgbWludXMnOwogQ09NTUVOVCBP TiBPUEVSQVRPUiBDTEFTUyBpbnQ0b3BzIFVTSU5HIGJ0cmVlIElTICc0IGJ5dGUgaW50ZWdl ciBvcGVyYXRvcnMgZm9yIGJ0cmVlcyc7CiBDT01NRU5UIE9OIE9QRVJBVE9SIEZBTUlMWSBp bnRlZ2VyX29wcyBVU0lORyBidHJlZSBJUyAnYWxsIGludGVnZXIgb3BlcmF0b3JzIGZvciBi dHJlZXMnOworQ09NTUVOVCBPTiBQRVJJT0QgbXlfdGFibGUubXlfY29sdW1uIElTICdTYWxl cyBwcm9tb3Rpb24gdmFsaWRpdHknOwogQ09NTUVOVCBPTiBQT0xJQ1kgbXlfcG9saWN5IE9O IG15dGFibGUgSVMgJ0ZpbHRlciByb3dzIGJ5IHVzZXJzJzsKIENPTU1FTlQgT04gUFJPQ0VE VVJFIG15X3Byb2MgKGludGVnZXIsIGludGVnZXIpIElTICdSdW5zIGEgcmVwb3J0JzsKIENP TU1FTlQgT04gUFVCTElDQVRJT04gYWxsdGFibGVzIElTICdQdWJsaXNoZXMgYWxsIG9wZXJh dGlvbnMgb24gYWxsIHRhYmxlcyc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCBiNWY0ODUyNWRlLi5iMDBiZDgwY2Y1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Rh YmxlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8 c3lub3BzaXM+CiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbCiAgIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFi bGU+IFsgU1RPUkFHRSB7IFBMQUlOIHwgRVhURVJOQUwgfCBFWFRFTkRFRCB8IE1BSU4gfCBE RUZBVUxUIH0gXSBbIENPTVBSRVNTSU9OIDxyZXBsYWNlYWJsZT5jb21wcmVzc2lvbl9tZXRo b2Q8L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9y ZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f Y29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxl PnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50 YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4KICAgICB8IExJS0UgPHJlcGxhY2VhYmxl PnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmxpa2Vfb3B0aW9u PC9yZXBsYWNlYWJsZT4gLi4uIF0gfQogICAgIFssIC4uLiBdCkBAIC0zNyw2ICszOCw3IEBA IENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVO TE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FM IF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4KICAgICBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFi bGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0aW9uPC9y ZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBs YWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0KQEAgLTQ5LDYgKzUxLDcgQEAgQ1JFQVRF IFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQg XSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PgogICAgIFBBUlRJVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy ZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVw bGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0 aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50 PC9yZXBsYWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0geyBGT1IgVkFMVUVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFj ZWFibGU+IHwgREVGQVVMVCB9CkBAIC03Myw2ICs3NiwxMSBAQCBDUkVBVEUgWyBbIEdMT0JB TCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsg SUYgTk9UIEVYSQogICAgIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxh Y2VhYmxlPiBdIH0KIFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFM TFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0KIAorPHBocmFzZT5hbmQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNl YWJsZT4gaXM6PC9waHJhc2U+CisKK1BFUklPRCBGT1IgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZU1RFTV9USU1FIH0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gKQorWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBl cmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfY29uc3RyYWludDwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCiBbIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IF0KQEAgLTE0MCw2 ICsxNDgsMTQgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIG5hbWUgYXMgYW55 IGV4aXN0aW5nIGRhdGEgdHlwZSBpbiB0aGUgc2FtZSBzY2hlbWEuCiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFBlcmlvZHMgbXkgYmUgZGVmaW5lZCBvbiB0YWJsZXMsIHNwZWNpZnlp bmcgdGhhdCB0d28gZXhpc3RpbmcgY29sdW1ucworICAgcmVwcmVzZW50IHN0YXJ0IGFuZCBl bmQgdmFsdWVzIGZvciB0aGUgcGVyaW9kLiAgUGVyaW9kcyBtYXkgaGF2ZSBhbnkgbmFtZQor ICAgdGhhdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYSBjb2x1bW4gbmFtZSwgYnV0IHRoZSBu YW1lCisgICA8bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gaXMgc3BlY2lhbCwgdXNl ZCBmb3IgdmVyc2lvbmluZyB0YWJsZXMuCisgICBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IHll dCBpbXBsZW1lbnRlZC4gIFNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPiBmb3Ig bW9yZSBkZXRhaWxzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwg Y29uc3RyYWludCBjbGF1c2VzIHNwZWNpZnkgY29uc3RyYWludHMgKHRlc3RzKSB0aGF0CiAg ICBuZXcgb3IgdXBkYXRlZCByb3dzIG11c3Qgc2F0aXNmeSBmb3IgYW4gaW5zZXJ0IG9yIHVw ZGF0ZSBvcGVyYXRpb24KQEAgLTgwMCw2ICs4MTYsMzAgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1wZXJpb2QiPgorICAgIDx0 ZXJtPjxsaXRlcmFsPlBFUklPRCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gKSBbIFdJVEggKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQSBwZXJpb2QgZGVmaW5pdGlvbiBnaXZlcyBzZW1hbnRpYyBtZWFuaW5nIHRv IHR3byBleGlzdGluZyBjb2x1bW5zIG9mCisgICAgICB0aGUgdGFibGUuICBJdCBkZWZpbmVz IGEgInN0YXJ0IGNvbHVtbiIgYW5kIGFuICJlbmQgY29sdW1uIiB3aGVyZSB0aGUKKyAgICAg IHN0YXJ0IHZhbHVlIGlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIHZhbHVlLiAgQQor ICAgICAgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXMgYXV0b21hdGlj YWxseSBjcmVhdGVkIHRvIGVuZm9yY2UKKyAgICAgIHRoaXMuIFlvdSBjYW4gc3BlY2lmeSB0 aGUgbmFtZSBvZiB0aGF0IGNvbnN0cmFpbnQgd2l0aCB0aGUKKyAgICAgIDxsaXRlcmFsPmNo ZWNrX2NvbnN0cmFpbnRfbmFtZTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgQm90aCBjb2x1bW5zIG11c3QgaGF2ZSBleGFjdGx5IHRoZSBz YW1lIHR5cGUgYW5kIG11c3QgaGF2ZSBhIHJhbmdlIHR5cGUKKyAgICAgIGRlZmluZWQgZnJv bSB0aGVpciBiYXNlIHR5cGUuICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCByYW5nZSB0eXBlcyBm b3IgdGhhdAorICAgICAgYmFzZSB0eXBlLCB5b3UgbXVzdCBzcGVjaWZ5IHdoaWNoIG9uZSB5 b3Ugd2FudCBieSB1c2luZyB0aGUKKyAgICAgIDxsaXRlcmFsPnJhbmdldHlwZTwvbGl0ZXJh bD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxh Y2VhYmxlPi4KKyAgICAgIEFueSBiYXNlIHR5cGUgaXMgYWxsb3dlZCwgYXMgbG9uZyBhcyBp dCBoYXMgYSByYW5nZSB0eXBlLCBhbHRob3VnaCBpdCBpcworICAgICAgZXhwZWN0ZWQgdGhh dCBtb3N0IHBlcmlvZHMgd2lsbCB1c2UgdGVtcG9yYWwgdHlwZXMgbGlrZSA8bGl0ZXJhbD50 aW1lc3RhbXB0ejwvbGl0ZXJhbD4KKyAgICAgIG9yIDxsaXRlcmFsPmRhdGU8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtY29uc3RyYWlu dCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv TWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IGVjN2I2ZjUz NjIuLjQ2NmY1NzA5NWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBA QCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19w YXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1 YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFM T0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3Jh bmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCmluZGV4IDE3NDYxYTkxODkuLmM2M2Y4MWY2YjAgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9h Y2xjaGsuYwpAQCAtMjgxNyw2ICsyODE3LDcgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0 IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9ERUZBVUxU OgogCQkJCQljYXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNUX0RPTUNPTlNU UkFJTlQ6CisJCQkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fTkFNRVNQQUNFOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6 CiAJCQkJCWNhc2UgT0JKRUNUX1JPTEU6CkBAIC0yOTU4LDYgKzI5NTksNyBAQCBhY2xjaGVj a19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNh c2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ CQkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9E OgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2Ug T0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggZjhhMTM2YmEwYS4uMjMyZjc3Yzk2ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgc3RhdGljIGNvbnN0IE9pZCBvYmpl Y3RfY2xhc3Nlc1tdID0gewogCUNhc3RSZWxhdGlvbklkLAkJCQkvKiBPQ0xBU1NfQ0FTVCAq LwogCUNvbGxhdGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09MTEFUSU9OICovCiAJQ29u c3RyYWludFJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09OU1RSQUlOVCAqLworCVBlcmlvZFJl bGF0aW9uSWQsCQkJLyogT0NMQVNTX1BFUklPRCAqLwogCUNvbnZlcnNpb25SZWxhdGlvbklk LAkJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAlBdHRyRGVmYXVsdFJlbGF0aW9uSWQsCQkv KiBPQ0xBU1NfREVGQVVMVCAqLwogCUxhbmd1YWdlUmVsYXRpb25JZCwJCQkvKiBPQ0xBU1Nf TEFOR1VBR0UgKi8KQEAgLTE0NDMsNiArMTQ0NSwxMCBAQCBkb0RlbGV0aW9uKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJUmVtb3ZlQ29uc3RyYWludEJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQlSZW1vdmVQZXJpb2RCeUlkKG9iamVjdC0+b2JqZWN0SWQpOworCQkJYnJlYWs7 CisKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJCVJlbW92ZUF0dHJEZWZhdWx0QnlJZChv YmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwpAQCAtMjg2Miw2ICsyODY4LDkgQEAgZ2V0 T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQljYXNlIENvbnN0 cmFpbnRSZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19DT05TVFJBSU5UOwogCisJCWNh c2UgUGVyaW9kUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfUEVSSU9EOworCiAJCWNh c2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlZFUlNJT047 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggMWU1NWIzNDE5Yy4uYmIwZTI3YmI5YSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25h bWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190YWJsZXNwYWNlLmgiCkBAIC0yMDQyLDYgKzIwNDMsODEgQEAgU2V0QXR0ck1pc3Npbmco T2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0 YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBl cmlvZCBvZiByZWxhdGlvbiByZWwuCisgKgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBu ZXcgcGdfcGVyaW9kIHR1cGxlLgorICovCitPaWQKK1N0b3JlUGVyaW9kKFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgQXR0ck51bWJlciBzdGFydG51bSwKKwkJCUF0 dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKQorewor CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcGVyaW9kXTsKKwlib29sCQludWxsc1tOYXR0c19w Z19wZXJpb2RdOworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJ T2lkCQkJb2lkOworCU5hbWVEYXRhCXBlcm5hbWU7CisJT2JqZWN0QWRkcmVzcwlteXNlbGYs IHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQocmFuZ2VudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIp OworCisJbmFtZXN0cmNweSgmcGVybmFtZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFs dWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3Bl cmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRleElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsK Kwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZw ZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0 aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAx XSA9IHN0YXJ0bnVtOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVu ZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmFuZ2UgLSAxXSA9IHJhbmdlbnVt OworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7 CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3Blcmlv ZCksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChwZ19wZXJpb2QsIHR1 cGxlKTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBQZXJpb2RSZWxhdGlvbklkLCBv aWQpOworCisJLyogRHJvcCB0aGUgcGVyaW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRyb3BwZWQu ICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYs ICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5n IHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJpb2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChy ZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg c3RhcnRudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwg REVQRU5ERU5DWV9OT1JNQUwpOworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwg UmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJ cmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05P Uk1BTCk7CisKKwkvKgorCSAqIFRoZSByYW5nZSBjb2x1bW4gaXMgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBjYW4ndCB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTAor CSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhlIHRhYmxlIHdpbGwgY2hlY2sgZm9yIGRlcGVuZGVu Y2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0b28KKwkgKiAoaW4gZmluZERlcGVuZGVudE9iamVj dHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtlIGFuIEFVVE8gZGVwZW5kZW5jeSBvbmUgd2F5IHdl IHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1bW4KKwkgKiB3aGVuIHdlIGRyb3AgdGhlIFBFUklP RCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVwZW5kZW5jeSB0aGUgb3RoZXIgd2F5IHdlIHdpbGwg Zm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW4gZGlyZWN0bHkuCisJICovCisJT2JqZWN0QWRk cmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgcmFuZ2VudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNl ZCwgJm15c2VsZiwgREVQRU5ERU5DWV9BVVRPKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15 c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qCisJICogVGhl IGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyB3ZSBtYXJrIGl0 IGFzIHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYgYW5kIHJlZmVyZW5jZWQgYXJlIHJl dmVyc2VkIGZvciB0aGlzIG9uZS4pCisJICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVu Y2VkLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29ub2lkKTsKKwlyZWNvcmREZXBlbmRlbmN5 T24oJnJlZmVyZW5jZWQsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCisJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBvaWQ7 Cit9CisKIC8qCiAgKiBTdG9yZSBhIGNoZWNrLWNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmb3Ig dGhlIGdpdmVuIHJlbGF0aW9uLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbAppbmRleCA4OTNmNzNlY2I1Li4zOTg3MTgwNTJmIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCkBAIC0xMjA3LDcg KzEyMDcsMjggQEAgR1JBTlQgU0VMRUNUIE9OIHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICog UEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVhdHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUg VklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNUIGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3Jt YXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAg ICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0 YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMucmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1h LnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25hbWUsCisgICAgICAgICAgIHAucGVybmFtZTo6 aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAg ICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAg ICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBz YS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAg ICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRl bnRpZmllcgorICAgICAgICAgICBFTkQgQVMgc3RhcnRfY29sdW1uX25hbWUsCisgICAgICAg ICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0 dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAg ICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyCisgICAgICAgICAgIEVORCBBUyBlbmRfY29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3Bl cmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFzcyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxp ZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFTIG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNw YWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5h dHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1 dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAu cGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQp CisgICAgICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBP TiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggZmE2NjA5ZTU3Ny4uYzQ5OWNkMmY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1 aWxkCkBAIC0yNiw2ICsyNiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3Bn X25hbWVzcGFjZS5jJywKICAgJ3BnX29wZXJhdG9yLmMnLAogICAncGdfcGFyYW1ldGVyX2Fj bC5jJywKKyAgJ3BnX3BlcmlvZC5jJywKICAgJ3BnX3Byb2MuYycsCiAgICdwZ19wdWJsaWNh dGlvbi5jJywKICAgJ3BnX3JhbmdlLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYwppbmRleCBiYjRlZmNhZDIwLi5iNDg4OTViMzU1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24u aCIKQEAgLTczNiw2ICs3MzcsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlw ZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIsIE9CSkVDVF9ET01DT05TVFJBSU5U CiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJeworCQkicGVyaW9kIiwgT0JKRUNUX1BF UklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAl7CiAJCSJjb252ZXJzaW9u IiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEwMTQsNiArMTAxOSw3IEBAIGdldF9vYmplY3Rf YWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVjdCwKIAkJCWNhc2UgT0JK RUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgogCQkJY2FzZSBP QkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCWFkZHJlc3MgPSBn ZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9i amVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLCBtaXNzaW5nX29rKTsKIAkJCQli cmVhazsKQEAgLTE1MTIsNiArMTUxOCwxMyBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2Jq ZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2JqZWN0LAogCQkJCUludmFsaWRPaWQ7 CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVD VF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQkJ YWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9uID8KKwkJCQlnZXRfcmVsYXRpb25fcGVyaW9k X29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Npbmdfb2spIDoKKwkJCQlJbnZhbGlkT2lkOwor CQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgKGludCkgb2Jq dHlwZSk7CiAJfQpAQCAtMjMyOSw2ICsyMzQyLDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1JVTEU6CiAJCWNhc2UgT0JKRUNU X1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNU X1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1J TFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKQEAgLTI0MzksNiArMjQ1Myw3IEBA IGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNh c2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2Fz ZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJl bGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pLCByb2xlaWQpKQogCQkJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwKIAkJCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwpAQCAtMzA4Nyw2ICszMTAyLDM4 IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwg Ym9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BF UklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9k IHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJ CQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICgh SGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsK KwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJ aWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJCQkJeworCQkJCQlTdHJpbmdJbmZv RGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJnJlbCk7CisJCQkJCWdldFJlbGF0 aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5wZXJyZWxpZCwgZmFsc2UpOworCQkJCQlhcHBl bmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyBvbiAlcyIpLAorCQkJCQkJCQkJ IE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVsLmRhdGEpOworCQkJCQlwZnJlZShyZWwuZGF0 YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJCQkJCQkgTmFtZVN0cihwZXItPnBlcm5hbWUp KTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsK KwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBs ZQljb25UdXA7CkBAIC00NDUxLDYgKzQ0OTgsMTAgQEAgZ2V0T2JqZWN0VHlwZURlc2NyaXB0 aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJ CQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklP RDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInBlcmlvZCIpOworCQkJ YnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsKIAkJCWJyZWFrOwpAQCAtNDk1OCw2 ICs1MDA5LDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsK KworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJ IE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlw ZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZp ZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgm YnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpuYW1lLCBmYWxzZSk7CisJCQkJaWYgKG9iam5h bWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2JqbmFtZSwgcHN0cmR1cChOYW1lU3Ry KHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXApOworCQkJ CWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQl7CiAJCQkJ SGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2NWI1YjY3NWUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEsMTMyIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICByb3V0 aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9u CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nl c3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVs LmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworCisvKgorICogRGVsZXRlIGEg c2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lk IHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwOwor CisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVjdElk R2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyog c2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVyaW9kIGl0 c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2VsZik7 CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Ns b3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVs YXRpb25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCBy ZWxhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdz IE9JRC4KKyAqLworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNv bnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19w ZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2Nhbktl eURhdGEgc2tleVsyXTsKKwlPaWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmV0 Y2ggdGhlIHBlcmlvZCB0dXBsZSBmcm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJpb2QgPSB0 YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2Fu S2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShy ZWxpZCkpOworCVNjYW5LZXlJbml0KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVyaW9kX3Bl cm5hbWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3Ry aW5nR2V0RGF0dW0ocGVybmFtZSkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihw Z19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxM LCAyLCBza2V5KTsKKworCS8qIFRoZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRjaGluZyBy b3cgKi8KKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQo c2NhbikpKQorCQlwZXJPaWQgPSAoKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUp KS0+b2lkOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2gg cGVyaW9kIGV4aXN0cywgY29tcGxhaW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAm JiAhbWlzc2luZ19vaykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRh YmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25h bWUocmVsaWQpKSkpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHBlck9pZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2RfYXR0bm9z CisgKgkJR2V0IHRoZSBhdHRubyBvZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBjb2x1bW4K KyAqCQlmb3IgYWxsIFBFUklPRHMgaW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJuIEJpdG1h cHNldAorKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBzZXQgKmF0 dG5vcyA9IE5VTEw7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsK KwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlwZ19wZXJp b2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShyZWxpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2Qs IFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCBza2V5 KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4 dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9wZ19wZXJp b2QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoYXR0 bm9zLCBwZXJpb2QtPnBlcnJhbmdlKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4p OworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVy biBhdHRub3M7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXgg ODBjNDBlYWY1Ny4uMmMxZDFhMTBhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dApAQCAtNDQ5LDcgKzQ0OSw3IEBAIFQxNzYJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1 cHBvcnQJCQlOTwlzdXBwb3J0ZWQgZXhjZXB0IGZvciBORVhUIFZBTFVFIEZPUgogVDE3NwlT ZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydDogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVT CQogVDE3OAlJZGVudGl0eSBjb2x1bW5zOiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJ CiBUMTgwCVN5c3RlbS12ZXJzaW9uZWQgdGFibGVzCQkJTk8JCi1UMTgxCUFwcGxpY2F0aW9u LXRpbWUgcGVyaW9kIHRhYmxlcwkJCU5PCQorVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlv ZCB0YWJsZXMJCQlZRVMJCiBUMTkxCVJlZmVyZW50aWFsIGFjdGlvbiBSRVNUUklDVAkJCVlF UwkKIFQyMDAJVHJpZ2dlciBEREwJCQlOTwlzaW1pbGFyIGJ1dCBub3QgZnVsbHkgY29tcGF0 aWJsZQogVDIwMQlDb21wYXJhYmxlIGRhdGEgdHlwZXMgZm9yIHJlZmVyZW50aWFsIGNvbnN0 cmFpbnRzCQkJWUVTCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKaW5kZXggZTlhMzQ0ZDAzZS4uMjFi YWU3ZWMzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC02NjksNiArNjY5LDcgQEAgQWx0 ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BP aWQsCiAKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoK KwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNl IE9DTEFTU19MQU5HVUFHRToKIAkJY2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb21tZW50LmMKaW5kZXggMjZjNGQ1OTIwMi4uNDUyYWYxZDQxMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbW1lbnQuYwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENv bW1lbnRTdG10ICpzdG10KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpLAogCQkJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRp b24tPnJkX3JlbC0+cmVsa2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BF UklPRDoKKwkJCS8qIFBlcmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAo cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRl ZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA0 NjlhNmMyZWU5Li4xYjk3NTRlOTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAg LTUwOSw2ICs1MDksNyBAQCBkb2VzX25vdF9leGlzdF9za2lwcGluZyhPYmplY3RUeXBlIG9i anR5cGUsIE5vZGUgKm9iamVjdCkKIAkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ Y2FzZSBPQkpFQ1RfTEFSR0VPQkpFQ1Q6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6 CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFN RVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCWNhc2UgT0JKRUNU X1RBQkNPTlNUUkFJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggYmY0N2IwZjZlMi4uZGM1MzJhMzllNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYwpAQCAtMTEzOCw2ICsxMTM4LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNP YmplY3RUeXBlKE9iamVjdFR5cGUgb2J0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgog CQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNh c2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVD VF9QUk9DRURVUkU6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgpAQCAtMTE5Niw2ICsx MTk3LDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBv YmpjbGFzcykKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09MTEFUSU9O OgogCQljYXNlIE9DTEFTU19DT05TVFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6CiAJ CWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNh c2UgT0NMQVNTX0xBTkdVQUdFOgpAQCAtMjIzNyw2ICsyMjM5LDcgQEAgc3RyaW5naWZ5X2dy YW50X29ianR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNT OgogCQljYXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJ CWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9C SkVDVF9QVUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNF OgpAQCAtMjMyMSw2ICsyMzI0LDcgQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9i amVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JK RUNUX09QRkFNSUxZOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9C SkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9zZWNsYWJlbC5jCmluZGV4IDdmZjE2ZTMyNzYuLjNkZGM5OTU4MWEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvc2VjbGFiZWwuYwpAQCAtNzksNiArNzksNyBAQCBTZWNMYWJlbFN1cHBv cnRzT2JqZWN0VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJB VE9SOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVS X0FDTDoKKwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJ CWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA0M2NlZjVl ZWY1Li4xOWUxYmQ4NmMxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDQs NiArNDQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3QuaCIKICNpbmNs dWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3Bj bGFzcy5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCkBAIC0xNTAsMTMgKzE1 MSwxOCBAQCBzdGF0aWMgTGlzdCAqb25fY29tbWl0cyA9IE5JTDsKICNkZWZpbmUgQVRfUEFT U19PTERfQ09OU1RSCQkzCS8qIHJlLWFkZCBleGlzdGluZyBjb25zdHJhaW50cyAqLwogLyog V2UgY291bGQgc3VwcG9ydCBhIFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQgbm90IGN1 cnJlbnRseSB1c2VkICovCiAjZGVmaW5lIEFUX1BBU1NfQUREX0NPTAkJCTQJLyogQUREIENP TFVNTiAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9DT05TVFIJCTUJLyogQUREIGNvbnN0cmFp bnRzIChpbml0aWFsIGV4YW1pbmF0aW9uKSAqLwotI2RlZmluZSBBVF9QQVNTX0NPTF9BVFRS UwkJNgkvKiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5PVCBOVUxMICovCi0jZGVmaW5l IEFUX1BBU1NfQUREX0lOREVYQ09OU1RSCTcJLyogQUREIGluZGV4LWJhc2VkIGNvbnN0cmFp bnRzICovCi0jZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYCQk4CS8qIEFERCBpbmRleGVzICov Ci0jZGVmaW5lIEFUX1BBU1NfQUREX09USEVSQ09OU1RSCTkJLyogQUREIG90aGVyIGNvbnN0 cmFpbnRzLCBkZWZhdWx0cyAqLwotI2RlZmluZSBBVF9QQVNTX01JU0MJCQkxMAkvKiBvdGhl ciBzdHVmZiAqLwotI2RlZmluZSBBVF9OVU1fUEFTU0VTCQkJMTEKKy8qCisgKiBXZSBtdXN0 IGFkZCBQRVJJT0RzIGFmdGVyIGNvbHVtbnMsIGluIGNhc2UgdGhleSByZWZlcmVuY2UgYSBu ZXdseS1hZGRlZCBjb2x1bW4sCisgKiBhbmQgYmVmb3JlIGNvbnN0cmFpbnRzLCBpbiBjYXNl IGEgbmV3bHktYWRkZWQgUEsvRksgcmVmZXJlbmNlcyB0aGVtLgorICovCisjZGVmaW5lIEFU X1BBU1NfQUREX1BFUklPRAkJNQkvKiBBREQgUEVSSU9EICovCisjZGVmaW5lIEFUX1BBU1Nf QUREX0NPTlNUUgkJNgkvKiBBREQgY29uc3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRpb24p ICovCisjZGVmaW5lIEFUX1BBU1NfQ09MX0FUVFJTCQk3CS8qIHNldCBjb2x1bW4gYXR0cmli dXRlcywgZWcgTk9UIE5VTEwgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfSU5ERVhDT05TVFIJ OAkvKiBBREQgaW5kZXgtYmFzZWQgY29uc3RyYWludHMgKi8KKyNkZWZpbmUgQVRfUEFTU19B RERfSU5ERVgJCTkJLyogQUREIGluZGV4ZXMgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfT1RI RVJDT05TVFIJMTAJLyogQUREIG90aGVyIGNvbnN0cmFpbnRzLCBkZWZhdWx0cyAqLworI2Rl ZmluZSBBVF9QQVNTX01JU0MJCQkxMQkvKiBvdGhlciBzdHVmZiAqLworI2RlZmluZSBBVF9O VU1fUEFTU0VTCQkJMTIKIAogdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJlZFRhYmxlSW5mbwogewpA QCAtMzU3LDYgKzM2Myw3IEBAIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JUcnVu Y2F0ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBzdGF0aWMgTGlzdCAqTWVyZ2VBdHRy aWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywgY2hhciByZWxwZXJz aXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24sIExpc3QgKipzdXBjb25zdHIs CiAJCQkJCQkJIExpc3QgKipzdXBub3RudWxscyk7CitzdGF0aWMgTGlzdCAqTWVyZ2VQZXJp b2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBlcmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlz dCAqc3VwZXJzKTsKIHN0YXRpYyBMaXN0ICpNZXJnZUNoZWNrQ29uc3RyYWludChMaXN0ICpj b25zdHJhaW50cywgY29uc3QgY2hhciAqbmFtZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgdm9p ZCBNZXJnZUF0dHJpYnV0ZXNJbnRvRXhpc3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxh dGlvbiBwYXJlbnRfcmVsKTsKIHN0YXRpYyB2b2lkIE1lcmdlQ29uc3RyYWludHNJbnRvRXhp c3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxhdGlvbiBwYXJlbnRfcmVsKTsKQEAgLTQz OCw2ICs0NDUsOCBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRDb2x1bW4oTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQkJCQkJCQkJIEFsdGVyVGFi bGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCk7CiBzdGF0aWMgYm9vbCBjaGVja19mb3JfY29s dW1uX25hbWVfY29sbGlzaW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwK IAkJCQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKK3N0YXRpYyBib29sIGNoZWNrX2Zv cl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJu YW1lLAorCQkJCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpOwogc3RhdGljIHZvaWQgYWRk X2NvbHVtbl9kYXRhdHlwZV9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50MzIgYXR0bnVtLCBP aWQgdHlwaWQpOwogc3RhdGljIHZvaWQgYWRkX2NvbHVtbl9jb2xsYXRpb25fZGVwZW5kZW5j eShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIGNvbGxpZCk7CiBzdGF0aWMgT2JqZWN0 QWRkcmVzcyBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsIGJvb2wgcmVjdXJzZSwKQEAgLTQ1Nyw2ICs0NjYsMTIgQEAgc3RhdGljIE9iamVj dEFkZHJlc3MgQVRFeGVjQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNvbE5hbWUsCiAJCQkJCQkJCQkJIE5vZGUgKm5ld0RlZmF1bHQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Nvb2tlZENvbHVtbkRlZmF1bHQo UmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJCQkJICAgTm9kZSAq bmV3RGVmYXVsdCk7CitzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRQZXJpb2QoUmVs YXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCwKKwkJCQkJCQkJCSBBbHRlclRhYmxlVXRp bGl0eUNvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgQVRFeGVjRHJvcFBlcmlvZChS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUsCisJCQkJCQkJIERyb3BCZWhh dmlvciBiZWhhdmlvciwKKwkJCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywK KwkJCQkJCQkgYm9vbCBtaXNzaW5nX29rKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhl Y0FkZElkZW50aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ CQkJCSAgIE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9iamVjdEFk ZHJlc3MgQVRFeGVjU2V0SWRlbnRpdHkoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xO YW1lLApAQCAtNjY1LDYgKzY4MCwxMCBAQCBzdGF0aWMgTGlzdCAqR2V0UGFyZW50ZWRGb3Jl aWduS2V5UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIHZvaWQgQVREZXRhY2hD aGVja05vRm9yZWlnbktleVJlZnMoUmVsYXRpb24gcGFydGl0aW9uKTsKIHN0YXRpYyBjaGFy IEdldEF0dHJpYnV0ZUNvbXByZXNzaW9uKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAqY29t cHJlc3Npb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlU3RvcmFnZShPaWQgYXR0dHlw aWQsIGNvbnN0IGNoYXIgKnN0b3JhZ2Vtb2RlKTsKK3N0YXRpYyB2b2lkIEFkZFJlbGF0aW9u TmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpOworc3RhdGljIHZv aWQgVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7Citz dGF0aWMgQ29uc3RyYWludCAqbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QoUmVsYXRpb24g cmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgQ29sdW1uRGVmICptYWtlX3Jhbmdl X2NvbHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKTsKIAogCiAvKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkBAIC04OTMsNiArOTEyLDI2IEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0 bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQkJCQlzdG10LT5wYXJ0Ym91bmQg IT0gTlVMTCwKIAkJCQkJCSZvbGRfY29uc3RyYWludHMsICZvbGRfbm90bnVsbHMpOwogCisJ LyoKKwkgKiBVc2luZyB0aGUgY29sdW1uIGxpc3QgKGluY2x1ZGluZyBpbmhlcml0ZWQgY29s dW1ucyksCisJICogZmluZCB0aGUgc3RhcnQvZW5kIGNvbHVtbnMgZm9yIGVhY2ggcGVyaW9k LgorCSAqIFBFUklPRHMgc2hvdWxkIGJlIGluaGVyaXRlZCB0b28gKGJ1dCBhcmVuJ3QgeWV0 KS4KKwkgKi8KKwlzdG10LT5wZXJpb2RzID0gTWVyZ2VQZXJpb2RzKHJlbG5hbWUsIHN0bXQt PnBlcmlvZHMsIHN0bXQtPnRhYmxlRWx0cywgaW5oZXJpdE9pZHMpOworCisJLyoKKwkgKiBG b3IgZWFjaCBQRVJJT0Qgd2UgbmVlZCB0byBjcmVhdGUgYSBHRU5FUkFURUQgY29sdW1uLAor CSAqIHNvIGFkZCB0aG9zZSB0byB0YWJsZUVsdHMuCisJICogVGhlc2UgY29sdW1ucyBhcmUg bm90IGluaGVyaXRlZCwKKwkgKiBzbyB3ZSBkb24ndCB3b3JyeSBhYm91dCBjb25mbGljdHMg aW4gdGFibGVFbHRzLgorCSAqLworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykK Kwl7CisJCVBlcmlvZERlZiAqcGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0 cik7CisJCUNvbHVtbkRlZiAqY29sID0gbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChw ZXJpb2QpOworCQlzdG10LT50YWJsZUVsdHMgPSBsYXBwZW5kKHN0bXQtPnRhYmxlRWx0cywg Y29sKTsKKwl9CisKIAkvKgogCSAqIENyZWF0ZSBhIHR1cGxlIGRlc2NyaXB0b3IgZnJvbSB0 aGUgcmVsYXRpb24gc2NoZW1hLiAgTm90ZSB0aGF0IHRoaXMKIAkgKiBkZWFscyB3aXRoIGNv bHVtbiBuYW1lcywgdHlwZXMsIGFuZCBpbi1kZXNjcmlwdG9yIE5PVCBOVUxMIGZsYWdzLCBi dXQKQEAgLTEyNzgsNiArMTMxNywyMSBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpz dG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCWZvcmVhY2gobGlzdHB0ciwgbm5j b2xzKQogCQlzZXRfYXR0bm90bnVsbChOVUxMLCByZWwsIGxmaXJzdF9pbnQobGlzdHB0ciks IGZhbHNlLCBOb0xvY2spOwogCisJLyoKKwkgKiBDcmVhdGUgcGVyaW9kcyBmb3IgdGhlIHRh YmxlLiBUaGlzIG11c3QgY29tZSBhZnRlciB3ZSBjcmVhdGUgY29sdW1ucworCSAqIGFuZCBi ZWZvcmUgd2UgY3JlYXRlIGluZGV4IGNvbnN0cmFpbnRzLiBJdCB3aWxsIGF1dG9tYXRpY2Fs bHkgY3JlYXRlCisJICogYSBDSEVDSyBjb25zdHJhaW50IGZvciB0aGUgcGVyaW9kLgorCSAq LworCWZvcmVhY2gobGlzdHB0ciwgc3RtdC0+cGVyaW9kcykKKwl7CisJCVBlcmlvZERlZiAq cGVyaW9kID0gKFBlcmlvZERlZiAqKSBsZmlyc3QobGlzdHB0cik7CisKKwkJLyogRG9uJ3Qg dXBkYXRlIHRoZSBjb3VudCBvZiBjaGVjayBjb25zdHJhaW50cyB0d2ljZSAqLworCQlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOworCisJCUFkZFJlbGF0aW9uTmV3UGVyaW9kKHJlbCwg cGVyaW9kKTsKKwl9CisKIAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIFJlbGF0aW9uUmVs YXRpb25JZCwgcmVsYXRpb25JZCk7CiAKIAkvKgpAQCAtMTM5NCw2ICsxNDQ4LDI2NCBAQCBC dWlsZERlc2NGb3JSZWxhdGlvbihjb25zdCBMaXN0ICpjb2x1bW5zKQogCXJldHVybiBkZXNj OwogfQogCisvKgorICogbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QKKyAqCisgKiBCdWls ZHMgYSBDSEVDSyBDb25zdHJhaW50IHRvIGVuc3VyZSBzdGFydCA8IGVuZC4KKyAqIFJldHVy bnMgdGhlIENIRUNLIENvbnN0cmFpbnQuCisgKiBBbHNvIGZpbGxzIGluIHBlcmlvZC0+Y29u c3RyYWludG5hbWUgaWYgbmVlZGVkLgorICovCitzdGF0aWMgQ29uc3RyYWludCAqCittYWtl X2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9k KQoreworCUNvbHVtblJlZiAgKnNjb2wsICplY29sOworCUNvbnN0cmFpbnQgKmNvbnN0cjsK KwlUeXBlQ2FjaGVFbnRyeSAqdHlwZTsKKworCWlmIChwZXJpb2QtPmNvbnN0cmFpbnRuYW1l ID09IE5VTEwpCisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBDaG9vc2VDb25zdHJhaW50 TmFtZShSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkJCQkJCSAgcGVy aW9kLT5wZXJpb2RuYW1lLAorCQkJCQkJCQkJCQkJCSAgImNoZWNrIiwKKwkJCQkJCQkJCQkJ CQkgIFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCksCisJCQkJCQkJCQkJCQkJICBOSUwpOwor CXNjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCXNjb2wtPmZpZWxkcyA9IGxpc3RfbWFr ZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCXNjb2wt PmxvY2F0aW9uID0gMDsKKworCWVjb2wgPSBtYWtlTm9kZShDb2x1bW5SZWYpOworCWVjb2wt PmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlvZC0+ZW5kY29s bmFtZSkpKTsKKwllY29sLT5sb2NhdGlvbiA9IDA7CisKKwl0eXBlID0gbG9va3VwX3R5cGVf Y2FjaGUocGVyaW9kLT5jb2x0eXBpZCwgVFlQRUNBQ0hFX0xUX09QUik7CisJaWYgKHR5cGUt Pmx0X29wciA9PSBJbnZhbGlkT2lkKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4g XCIlc1wiIGNhbm5vdCBiZSB1c2VkIGluIGEgUEVSSU9EIGJlY2F1c2UgaXRzIHR5cGUgJXMg aGFzIG5vIGxlc3MgdGhhbiBvcGVyYXRvciIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFt ZSwgZm9ybWF0X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBpZCkpKSk7CisKKwljb25zdHIgPSBt YWtlTm9kZShDb25zdHJhaW50KTsKKwljb25zdHItPmNvbnR5cGUgPSBDT05TVFJfQ0hFQ0s7 CisJY29uc3RyLT5jb25uYW1lID0gcGVyaW9kLT5jb25zdHJhaW50bmFtZTsKKwljb25zdHIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwljb25zdHItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CWNvbnN0ci0+bG9jYXRpb24gPSAtMTsKKwljb25zdHItPmlzX25vX2luaGVyaXQgPSBmYWxz ZTsKKwljb25zdHItPnJhd19leHByID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQ Ul9PUCwKKwkJCQkJCQkJCQkJCSBnZXRfb3BuYW1lKHR5cGUtPmx0X29wciksCisJCQkJCQkJ CQkJCQkgKE5vZGUgKikgc2NvbCwKKwkJCQkJCQkJCQkJCSAoTm9kZSAqKSBlY29sLAorCQkJ CQkJCQkJCQkJIDApOworCWNvbnN0ci0+Y29va2VkX2V4cHIgPSBOVUxMOworCWNvbnN0ci0+ c2tpcF92YWxpZGF0aW9uID0gZmFsc2U7CisJY29uc3RyLT5pbml0aWFsbHlfdmFsaWQgPSB0 cnVlOworCisJcmV0dXJuIGNvbnN0cjsKK30KKworLyoKKyAqIG1ha2VfcmFuZ2VfY29sdW1u X2Zvcl9wZXJpb2QKKyAqCisgKiBCdWlsZHMgYSBHRU5FUkFURUQgQUxXQVlTIHJhbmdlIGNv bHVtbiBiYXNlZCBvbiB0aGUgUEVSSU9ECisgKiBzdGFydC9lbmQgY29sdW1ucy4gUmV0dXJu cyB0aGUgQ29sdW1uRGVmLgorICovCitDb2x1bW5EZWYgKgorbWFrZV9yYW5nZV9jb2x1bW5f Zm9yX3BlcmlvZChQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwljaGFyICpyYW5nZV90eXBlX25h bWVzcGFjZTsKKwljaGFyICpyYW5nZV90eXBlX25hbWU7CisJQ29sdW1uRGVmICpjb2wgPSBt YWtlTm9kZShDb2x1bW5EZWYpOworCUNvbHVtblJlZiAqc3RhcnR2YXIsICplbmR2YXI7CisJ RXhwciAqcmFuZ2VDb25zdHJ1Y3RvcjsKKworCWlmICghZ2V0X3R5cG5hbWVfYW5kX25hbWVz cGFjZShwZXJpb2QtPnJuZ3R5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFuZ2VfdHlwZV9u YW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBlICVkIiwgcGVy aW9kLT5ybmd0eXBpZCk7CisKKwlzdGFydHZhciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ c3RhcnR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBlcmlv ZC0+c3RhcnRjb2xuYW1lKSkpOworCWVuZHZhciA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ ZW5kdmFyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2Qt PmVuZGNvbG5hbWUpKSk7CisJcmFuZ2VDb25zdHJ1Y3RvciA9IChFeHByICopIG1ha2VGdW5j Q2FsbCgKKwkJCWxpc3RfbWFrZTIobWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWVzcGFjZSks IG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lKSksCisJCQlsaXN0X21ha2UyKHN0YXJ0dmFy LCBlbmR2YXIpLAorCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQlwZXJpb2QtPmxvY2F0 aW9uKTsKKworCWNvbC0+Y29sbmFtZSA9IHBzdHJkdXAocGVyaW9kLT5wZXJpb2RuYW1lKTsK Kwljb2wtPnR5cGVOYW1lID0gbWFrZVR5cGVOYW1lKHJhbmdlX3R5cGVfbmFtZSk7CisJY29s LT5jb21wcmVzc2lvbiA9IE5VTEw7CisJY29sLT5pbmhjb3VudCA9IDA7CisJY29sLT5pc19s b2NhbCA9IHRydWU7CisJY29sLT5pc19ub3RfbnVsbCA9IHRydWU7CisJY29sLT5pc19mcm9t X3R5cGUgPSBmYWxzZTsKKwljb2wtPnN0b3JhZ2UgPSAwOworCWNvbC0+c3RvcmFnZV9uYW1l ID0gTlVMTDsKKwljb2wtPnJhd19kZWZhdWx0ID0gKE5vZGUgKikgcmFuZ2VDb25zdHJ1Y3Rv cjsKKwljb2wtPmNvb2tlZF9kZWZhdWx0ID0gTlVMTDsKKwljb2wtPmlkZW50aXR5ID0gMDsK Kwljb2wtPmdlbmVyYXRlZCA9IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEOworCWNvbC0+ Y29sbENsYXVzZSA9IE5VTEw7CisJY29sLT5jb2xsT2lkID0gSW52YWxpZE9pZDsKKwljb2wt PmZkd29wdGlvbnMgPSBOSUw7CisJY29sLT5sb2NhdGlvbiA9IHBlcmlvZC0+bG9jYXRpb247 CisKKwlyZXR1cm4gY29sOworfQorCisvKgorICogVmFsaWRhdGVQZXJpb2QKKyAqCisgKiBM b29rIHVwIHRoZSBhdHRyaWJ1dGVzIHVzZWQgYnkgdGhlIFBFUklPRCwKKyAqIG1ha2Ugc3Vy ZSB0aGV5IGV4aXN0LCBhcmUgbm90IHN5c3RlbSBjb2x1bW5zLAorICogYW5kIGhhdmUgdGhl IHNhbWUgdHlwZSBhbmQgY29sbGF0aW9uLgorICoKKyAqIFlvdSBtdXN0IGhhdmUgYSBSb3dF eGNsdXNpdmVMb2NrIG9uIHBnX2F0dHJpYnV0ZQorICogYmVmb3JlIGNhbGxpbmcgdGhpcyBm dW5jdGlvbi4KKyAqCisgKiBBZGQgb3VyIGZpbmRpbmdzIHRvIHRoZXNlIFBlcmlvZERlZiBm aWVsZHM6CisgKgorICogY29sdHlwaWQgLSB0aGUgdHlwZSBvZiBQRVJJT0QgY29sdW1ucy4K KyAqIHN0YXJ0YXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgc3RhcnQgY29sdW1uLgorICog ZW5kYXR0bnVtIC0gdGhlIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVtbi4KKyAqLworc3RhdGlj IHZvaWQKK1ZhbGlkYXRlUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2Qp Cit7CisJSGVhcFR1cGxlIHN0YXJ0dHVwbGU7CisJSGVhcFR1cGxlIGVuZHR1cGxlOworCUZv cm1fcGdfYXR0cmlidXRlCWF0dHR1cGxlOworCU9pZAlhdHRjb2xsYXRpb247CisKKwkvKiBG aW5kIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlzdGFydHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVD b3B5QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+c3RhcnRjb2xuYW1l KTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoc3RhcnR0dXBsZSkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJy bXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIs CisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKHN0 YXJ0dHVwbGUpOworCXBlcmlvZC0+Y29sdHlwaWQgPSBhdHR0dXBsZS0+YXR0dHlwaWQ7CisJ YXR0Y29sbGF0aW9uID0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbjsKKwlwZXJpb2QtPnN0YXJ0 YXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3VyZSBpdCdzIG5vdCBh IHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5zdGFydGF0dG51bSA8PSAwKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVG SU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0ZW0gY29sdW1uIFwiJXNc IiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisKKwkvKiBG aW5kIHRoZSBlbmQgY29sdW1uICovCisJZW5kdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHlB dHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5lbmRjb2xuYW1lKTsKKwlp ZiAoIUhlYXBUdXBsZUlzVmFsaWQoZW5kdHVwbGUpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29s dW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJ cGVyaW9kLT5lbmRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwor CWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoZW5kdHVwbGUpOwor CXBlcmlvZC0+ZW5kYXR0bnVtID0gYXR0dHVwbGUtPmF0dG51bTsKKworCS8qIE1ha2Ugc3Vy ZSBpdCdzIG5vdCBhIHN5c3RlbSBjb2x1bW4gKi8KKwlpZiAocGVyaW9kLT5lbmRhdHRudW0g PD0gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURf T0JKRUNUX0RFRklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ugc3lzdGVtIGNv bHVtbiBcIiVzXCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+ZW5kY29sbmFtZSkpKTsK KworCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNhbWUgdHlwZSAqLworCWlmIChwZXJp b2QtPmNvbHR5cGlkICE9IGF0dHR1cGxlLT5hdHR0eXBpZCkKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkgZXJybXNn KCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0eXBl IikpKTsKKworCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNhbWUgY29sbGF0aW9u ICovCisJaWYgKGF0dGNvbGxhdGlvbiAhPSBhdHR0dXBsZS0+YXR0Y29sbGF0aW9uKQorCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfQ09MTEFUSU9OX01JU01BVENI KSwKKwkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3Qg aGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwloZWFwX2ZyZWV0dXBsZShzdGFydHR1cGxl KTsKKwloZWFwX2ZyZWV0dXBsZShlbmR0dXBsZSk7Cit9CisKKy8qCisgKiBjaG9vc2VfcmFu Z2V0eXBlX2Zvcl9wZXJpb2QKKyAqCisgKiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBm b3Igb3BlcmF0aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJpb2QuCisgKiBVc2UgdGhlIHJhbmdl dHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmluZCBhCisgKiBu b24tYW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisgKi8KKy8vIFRPRE86IFRoaXMgY291bGQg YmUgc3RhdGljIG5vdworT2lkCitjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QoUGVyaW9k RGVmICpwZXJpb2QpCit7CisJT2lkCXJuZ3R5cGlkOworCisJaWYgKHBlcmlvZC0+cmFuZ2V0 eXBlbmFtZSAhPSBOVUxMKQorCXsKKwkJLyogTWFrZSBzdXJlIGl0IGV4aXN0cyAqLworCQly bmd0eXBpZCA9IFR5cGVuYW1lR2V0VHlwaWRFeHRlbmRlZChwZXJpb2QtPnJhbmdldHlwZW5h bWUsIGZhbHNlKTsKKwkJaWYgKHJuZ3R5cGlkID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0 KEVSUk9SLCAoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJy bXNnKCJSYW5nZSB0eXBlICVzIG5vdCBmb3VuZCIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkp KTsKKworCQkvKiBNYWtlIHN1cmUgaXQgaXMgYSByYW5nZSB0eXBlICovCisJCWlmICghdHlw ZV9pc19yYW5nZShybmd0eXBpZCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJIGVycm1zZygiVHlwZSAlcyBp cyBub3QgYSByYW5nZSB0eXBlIiwgcGVyaW9kLT5yYW5nZXR5cGVuYW1lKSkpOworCisJCS8q IE1ha2Ugc3VyZSBpdCBtYXRjaGVzIHRoZSBjb2x1bW4gdHlwZSAqLworCQlpZiAoZ2V0X3Jh bmdlX3N1YnR5cGUocm5ndHlwaWQpICE9IHBlcmlvZC0+Y29sdHlwaWQpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJIGVycm1zZygiUmFuZ2UgdHlwZSAlcyBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSAl cyIsCisJCQkJCQkgcGVyaW9kLT5yYW5nZXR5cGVuYW1lLAorCQkJCQkJIGZvcm1hdF90eXBl X2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCX0KKwllbHNlCisJeworCQlybmd0eXBpZCA9 IGdldF9zdWJ0eXBlX3JhbmdlKHBlcmlvZC0+Y29sdHlwaWQpOworCQlpZiAocm5ndHlwaWQg PT0gSW52YWxpZE9pZCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNP REVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBlcnJtc2coIm5vIHJhbmdlIHR5cGUgZm9y ICVzIGZvdW5kIGZvciBwZXJpb2QgJXMiLAorCQkJCQkJCWZvcm1hdF90eXBlX2JlKHBlcmlv ZC0+Y29sdHlwaWQpLAorCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSksCisJCQkJCSBlcnJo aW50KCJZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZ UEUiKSkpOworCisJfQorCisJcmV0dXJuIHJuZ3R5cGlkOworfQorCitzdGF0aWMgdm9pZAor QWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCkK K3sKKwlSZWxhdGlvbglhdHRyZWxhdGlvbjsKKwlPaWQJCQljb25vaWQ7CisJQ29uc3RyYWlu dCAqY29uc3RyOworCUxpc3QJICAgKm5ld2NvbnN0cnM7CisKKwlhdHRyZWxhdGlvbiA9IHRh YmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkv KiBGaW5kIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29sdW1uICovCisKKwlwZXJpb2QtPnJuZ2F0 dG51bSA9IGdldF9hdHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlv ZG5hbWUpOworCWlmIChwZXJpb2QtPnJuZ2F0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikK KwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgYXR0cmlidXRlICVzIiwgcGVyaW9kLT5wZXJpb2Ru YW1lKTsKKworCS8qIFRoZSBwYXJzZXIgaGFzIGFscmVhZHkgZm91bmQgcGVyaW9kLT5jb2x0 eXBpZCAqLworCisJY29uc3RyID0gbWFrZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QocmVsLCBw ZXJpb2QpOworCW5ld2NvbnN0cnMgPSBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKHJlbCwg TklMLCBsaXN0X21ha2UxKGNvbnN0ciksIGZhbHNlLCB0cnVlLCB0cnVlLCBOVUxMKTsKKwlj b25vaWQgPSAoKENvb2tlZENvbnN0cmFpbnQgKikgbGluaXRpYWwobmV3Y29uc3RycykpLT5j b25vaWQ7CisKKwkvKiBTYXZlIGl0ICovCisJU3RvcmVQZXJpb2QocmVsLCBwZXJpb2QtPnBl cmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlvZC0+ZW5kYXR0bnVtLCBwZXJp b2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCXRhYmxlX2Nsb3NlKGF0dHJlbGF0aW9uLCBS b3dFeGNsdXNpdmVMb2NrKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIHJpZ2h0IGVycm9yIG9y IHdhcm5pbmcgbWVzc2FnZSBmb3IgYSAiRFJPUCIgY29tbWFuZCBpc3N1ZWQgb24gYQogICog bm9uLWV4aXN0ZW50IHJlbGF0aW9uCkBAIC0zMzQ3LDYgKzM2NTksMTY4IEBAIE1lcmdlQXR0 cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVy c2lzdGVuY2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisgKiBNZXJnZVBlcmlvZHMKKyAqCQlS ZXR1cm5zIG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0aWFsIHBlcmlvZHMgYW5kIHN1cGVy Y2xhc3Nlcy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0IHN1cHBvcnQgaW5oZXJpdGVuY2Ug d2l0aCBQRVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1ha2UgaXQgd29yayBldmVudHVhbGx5 LgorICoKKyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hlY2tzIGhlcmUgYW5kIGFzc3VtZSBN ZXJnZUF0dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwKKyAqIGZvciBleGFtcGxlIHRoYXQg Y2hpbGQgJiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2YgcGVybWFuZW50IGFuZCB0ZW1wLgor ICovCitzdGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMoY2hhciAqcmVsbmFtZSwgTGlzdCAq cGVyaW9kcywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpzdXBlcnMpCit7CisJTGlzdENlbGwg ICAqZW50cnk7CisKKwkvKiBJZiB3ZSBoYXZlIGEgUEVSSU9EIHRoZW4gc3VwZXJzIG11c3Qg YmUgZW1wdHkuICovCisKKwlpZiAobGlzdF9sZW5ndGgocGVyaW9kcykgPiAwICYmIGxpc3Rf bGVuZ3RoKHN1cGVycykgPiAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJJbmhlcml0aW5n IGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBhIFBFUklPRCIpKSk7CisKKwkv KiBJZiBhbnkgcGFyZW50IHRhYmxlIGhhcyBhIFBFUklPRCwgdGhlbiBmYWlsLiAqLworCisJ Zm9yZWFjaChlbnRyeSwgc3VwZXJzKQorCXsKKwkJT2lkCQkJcGFyZW50ID0gbGZpcnN0X29p ZChlbnRyeSk7CisJCVJlbGF0aW9uCXJlbGF0aW9uOworCQlSZWxhdGlvbglwZ19wZXJpb2Q7 CisJCVN5c1NjYW5EZXNjIHNjYW47CisJCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJCUhlYXBU dXBsZQl0dXBsZTsKKworCQkvKiBjYWxsZXIgYWxyZWFkeSBnb3QgbG9jayAqLworCQlyZWxh dGlvbiA9IHRhYmxlX29wZW4ocGFyZW50LCBOb0xvY2spOworCQlwZ19wZXJpb2QgPSB0YWJs ZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJU2Nhbktl eUluaXQoJnNrZXlbMF0sCisJCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElkR2V0RGF0dW0o cGFyZW50KSk7CisKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBl cmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJCSAgTlVMTCwgMSwgc2tleSk7 CisKKwkJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNj YW4pKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiSW5oZXJpdGluZyBmcm9tIGEgdGFi bGUgd2l0aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCQlzeXN0YWJsZV9l bmRzY2FuKHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9j ayk7CisJCXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOworCX0KKworCS8qCisJICog RmluZCB0aGUgc3RhcnQgJiBlbmQgY29sdW1ucyBhbmQgZ2V0IHRoZWlyIGF0dG5vIGFuZCB0 eXBlLgorCSAqIEluIHRoZSBzYW1lIHBhc3MsIG1ha2Ugc3VyZSB0aGUgcGVyaW9kIGRvZXNu J3QgY29uZmxpY3Qgd2l0aCBhbnkgY29sdW1uIG5hbWVzLgorCSAqIEFsc28gbWFrZSBzdXJl IHRoZSBzYW1lIHBlcmlvZCBuYW1lIGlzbid0IHVzZWQgbW9yZSB0aGFuIG9uY2UuCisJICov CisJZm9yZWFjaCAoZW50cnksIHBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBlcmlvZCA9 IGxmaXJzdChlbnRyeSk7CisJCUxpc3RDZWxsICplbnRyeTI7CisJCWludCBpID0gMTsKKwkJ T2lkIHN0YXJ0Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQgZW5kY29sdHlwaWQgPSBJ bnZhbGlkT2lkOworCQlPaWQJc3RhcnRjb2xjb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCQlP aWQJZW5kY29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQlwZXJpb2QtPnN0YXJ0YXR0 bnVtID0gSW52YWxpZEF0dHJOdW1iZXI7CisJCXBlcmlvZC0+ZW5kYXR0bnVtID0gSW52YWxp ZEF0dHJOdW1iZXI7CisKKwkJaWYgKFN5c3RlbUF0dHJpYnV0ZUJ5TmFtZShwZXJpb2QtPnBl cmlvZG5hbWUpICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBc IiVzXCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJCXBl cmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQlmb3JlYWNoIChlbnRyeTIsIHBlcmlvZHMpCisJ CXsKKwkJCVBlcmlvZERlZiAqcGVyaW9kMiA9IGxmaXJzdChlbnRyeTIpOworCisJCQlpZiAo cGVyaW9kICE9IHBlcmlvZDIgJiYgc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9k Mi0+cGVyaW9kbmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInBlcmlvZCBu YW1lIFwiJXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiLAorCQkJCQkJCQlwZXJpb2Qt PnBlcmlvZG5hbWUpKSk7CisJCX0KKworCQlmb3JlYWNoIChlbnRyeTIsIHRhYmxlRWx0cykK KwkJeworCQkJQ29sdW1uRGVmICpjb2wgPSBsZmlyc3QoZW50cnkyKTsKKwkJCWludDMyCWF0 dHR5cG1vZDsKKwkJCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkJCWlmIChzdHJjbXAocGVy aW9kLT5wZXJpb2RuYW1lLCBjb2wtPmNvbG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJCQkg ZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFt ZSIsCisJCQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQkJaWYgKHN0cmNtcChw ZXJpb2QtPnN0YXJ0Y29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBl cmlvZC0+c3RhcnRhdHRudW0gPSBpOworCisJCQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVM TCwgY29sLT50eXBlTmFtZSwgJnN0YXJ0Y29sdHlwaWQsICZhdHR0eXBtb2QpOworCisJCQkJ YWNscmVzdWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBzdGFydGNvbHR5 cGlkLCBHZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFD TENIRUNLX09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgc3RhcnRj b2x0eXBpZCk7CisKKwkJCQlzdGFydGNvbGNvbGxhdGlvbiA9IEdldENvbHVtbkRlZkNvbGxh dGlvbihOVUxMLCBjb2wsIHN0YXJ0Y29sdHlwaWQpOworCQkJfQorCisJCQlpZiAoc3RyY21w KHBlcmlvZC0+ZW5kY29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBl cmlvZC0+ZW5kYXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEws IGNvbC0+dHlwZU5hbWUsICZlbmRjb2x0eXBpZCwgJmF0dHR5cG1vZCk7CisKKwkJCQlhY2xy ZXN1bHQgPSBvYmplY3RfYWNsY2hlY2soVHlwZVJlbGF0aW9uSWQsIGVuZGNvbHR5cGlkLCBH ZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNL X09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgZW5kY29sdHlwaWQp OworCisJCQkJZW5kY29sY29sbGF0aW9uID0gR2V0Q29sdW1uRGVmQ29sbGF0aW9uKE5VTEws IGNvbCwgZW5kY29sdHlwaWQpOworCQkJfQorCisJCQlpKys7CisJCX0KKworCQkvKiBEaWQg d2UgZmluZCB0aGUgY29sdW1ucz8gKi8KKwkJaWYgKHBlcmlvZC0+c3RhcnRhdHRudW0gPT0g SW52YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9kLT5z dGFydGNvbG5hbWUsIHJlbG5hbWUpKSk7CisJCWlmIChwZXJpb2QtPmVuZGF0dG51bSA9PSBJ bnZhbGlkQXR0ck51bWJlcikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIg b2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2QtPmVu ZGNvbG5hbWUsIHJlbG5hbWUpKSk7CisKKwkJLyogQm90aCBjb2x1bW5zIG11c3QgYmUgb2Yg c2FtZSB0eXBlICovCisJCWlmIChzdGFydGNvbHR5cGlkICE9IGVuZGNvbHR5cGlkKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRD SCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVz dCBiZSBvZiBzYW1lIHR5cGUiKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUg dGhlIHNhbWUgY29sbGF0aW9uICovCisJCWlmIChzdGFydGNvbGNvbGxhdGlvbiAhPSBlbmRj b2xjb2xsYXRpb24pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0NPTExBVElPTl9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29s dW1ucyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsKKworCQlwZXJp b2QtPmNvbHR5cGlkID0gc3RhcnRjb2x0eXBpZDsKKwkJcGVyaW9kLT5ybmd0eXBpZCA9IGNo b29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOworCX0KKworCXJldHVybiBwZXJp b2RzOworfQorCiAvKgogICogTWVyZ2VDaGVja0NvbnN0cmFpbnQKICAqCQlUcnkgdG8gbWVy Z2UgYW4gaW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnQgd2l0aCBwcmV2aW91cyBvbmVzCkBA IC00NDAzLDEyICs0ODc3LDEyIEBAIEFsdGVyVGFibGUoQWx0ZXJUYWJsZVN0bXQgKnN0bXQs IExPQ0tNT0RFIGxvY2ttb2RlLAogICogZXhpc3RpbmcgcXVlcnkgcGxhbnMuICBPbiB0aGUg YXNzdW1wdGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNoLCB3ZQogICogZG9uJ3QgaGF2ZSB0 byByZWplY3QgcGVuZGluZyBBRlRFUiB0cmlnZ2VycywgZWl0aGVyLgogICoKLSAqIEFsc28s IHNpbmNlIHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlz IGNhbm5vdCBiZQorICogQWxzbywgaWYgeW91IGRvbid0IHBhc3MgYW4gQWx0ZXJUYWJsZVV0 aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICogdXNlZCBmb3IgYW55IHN1YmNvbW1h bmQgdHlwZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5zZm9ybWF0aW9uIG9yCiAgKiBjb3Vs ZCBnZW5lcmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUgdG8gYmUgcGFzc2VkIHRvIFByb2Nl c3NVdGlsaXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBM aXN0ICpjbWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlk LCBMaXN0ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9DS01PREUJbG9ja21vZGUgPSBBbHRl clRhYmxlR2V0TG9ja0xldmVsKGNtZHMpOwpAQCAtNDQxNyw3ICs0ODkxLDcgQEAgQWx0ZXJU YWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlKQogCiAJ RXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKHJlbGlkKTsKIAotCUFUQ29udHJvbGxlcihO VUxMLCByZWwsIGNtZHMsIHJlY3Vyc2UsIGxvY2ttb2RlLCBOVUxMKTsKKwlBVENvbnRyb2xs ZXIoTlVMTCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgY29udGV4dCk7CiB9CiAK IC8qCkBAIC00NTEwLDYgKzQ5ODQsOCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3Qg KmNtZHMpCiAJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FSdWxlOgkvKiBtYXkgY2hhbmdlIFNF TEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9FbmFibGVSdWxlOiAvKiBtYXkgY2hhbmdlIFNF TEVDVCBydWxlcyAqLwogCQkJY2FzZSBBVF9EaXNhYmxlUnVsZToJLyogbWF5IGNoYW5nZSBT RUxFQ1QgcnVsZXMgKi8KKwkJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBzaGFyZXMgbmFtZXNw YWNlIHdpdGggY29sdW1ucywgYWRkcyBjb25zdHJhaW50ICovCisJCQljYXNlIEFUX0Ryb3BQ ZXJpb2Q6CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQli cmVhazsKIApAQCAtNDgyNSw2ICs1MzAxLDE0IEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIFRoaXMgY29tbWFu ZCBuZXZlciByZWN1cnNlcyAqLwogCQkJcGFzcyA9IEFUX1BBU1NfQUREX09USEVSQ09OU1RS OwogCQkJYnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4g QUREIFBFUklPRCBGT1IgbmFtZSAoc3RhcnQsIGVuZCkgKi8KKwkJCUFUU2ltcGxlUGVybWlz c2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFT U19BRERfUEVSSU9EOworCQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDogLyogQUxU RVIgVEFCTEUgLi4uIERST1AgUEVSSU9EIEZPUiBuYW1lICovCisJCQlBVFNpbXBsZVBlcm1p c3Npb25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BB U1NfRFJPUDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJQVRTaW1w bGVQZXJtaXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFIHwgQVRUX1ZJRVcg fCBBVFRfRk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJz ZXMgKi8KQEAgLTUyMjIsNiArNTcwNiwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Nvb2tlZENvbHVtbkRlZmF1bHQ6 CS8qIGFkZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwogCQkJYWRkcmVzcyA9IEFURXhlY0Nv b2tlZENvbHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwgY21kLT5kZWYpOwogCQkJYnJlYWs7 CisJCWNhc2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVzcyA9IEFURXhlY0FkZFBlcmlvZChy ZWwsIChQZXJpb2REZWYgKikgY21kLT5kZWYsIGNvbnRleHQpOworCQkJYnJlYWs7CisJCWNh c2UgQVRfRHJvcFBlcmlvZDoKKwkJCUFURXhlY0Ryb3BQZXJpb2QocmVsLCBjbWQtPm5hbWUs IGNtZC0+YmVoYXZpb3IsCisJCQkJCQkJCSBmYWxzZSwgZmFsc2UsCisJCQkJCQkJCSBjbWQt Pm1pc3Npbmdfb2spOworCQkJYnJlYWs7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQlj bWQgPSBBVFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2Us IGxvY2ttb2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CkBAIC02MzY2LDYg KzY4NTgsOCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBj bWR0eXBlKQogCQljYXNlIEFUX0FkZENvbHVtbjoKIAkJY2FzZSBBVF9BZGRDb2x1bW5Ub1Zp ZXc6CiAJCQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJ CXJldHVybiAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKIAkJY2Fz ZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4u IFNFVCBERUZBVUxUIjsKQEAgLTYzODksNiArNjg4Myw4IEBAIGFsdGVyX3RhYmxlX3R5cGVf dG9fc3RyaW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkFMVEVSIENP TFVNTiAuLi4gU0VUIENPTVBSRVNTSU9OIjsKIAkJY2FzZSBBVF9Ecm9wQ29sdW1uOgogCQkJ cmV0dXJuICJEUk9QIENPTFVNTiI7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCXJldHVy biAiRFJPUCBQRVJJT0QiOwogCQljYXNlIEFUX0FkZEluZGV4OgogCQljYXNlIEFUX1JlQWRk SW5kZXg6CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCByZWFsIGdyYW1tYXIgKi8KQEAgLTcz OTQsMTQgKzc4OTAsMjkgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogLyoKICAqIElmIGEgbmV3IG9yIHJl bmFtZWQgY29sdW1uIHdpbGwgY29sbGlkZSB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5n CiAgKiBjb2x1bW4gYW5kIGlmX25vdF9leGlzdHMgaXMgZmFsc2UgdGhlbiBlcnJvciBvdXQs IGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVja19mb3JfcGVyaW9kX25h bWVfY29sbGlzaW9uLgogICovCiBzdGF0aWMgYm9vbAogY2hlY2tfZm9yX2NvbHVtbl9uYW1l X2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJ CWJvb2wgaWZfbm90X2V4aXN0cykKIHsKLQlIZWFwVHVwbGUJYXR0VHVwbGU7CisJSGVhcFR1 cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKIAlpbnQJCQlhdHRudW07CiAKKwkvKiBJZiB0aGUg bmFtZSBleGlzdHMgYXMgYSBwZXJpb2QsIHdlJ3JlIGRvbmUuICovCisJcGVyVHVwbGUgPSBT ZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVt KFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKGNv bG5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBsZSkpCisJeworCQlSZWxl YXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG5hbWUg XCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUiLAorCQkJCQkJY29sbmFtZSkp KTsKKwl9CisKIAkvKgogCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0dGlz ZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCiAJICogYWRkIGEgY29sdW1u IG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFueXdh eS4KQEAgLTc0NDUsNiArNzk1Niw3NiBAQCBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlz aW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwKIAlyZXR1cm4gdHJ1ZTsK IH0KIAorLyoKKyAqIElmIGEgbmV3IHBlcmlvZCBuYW1lIHdpbGwgY29sbGlkZSB3aXRoIHRo ZSBuYW1lIG9mIGFuIGV4aXN0aW5nIGNvbHVtbiBvcgorICogcGVyaW9kIFthbmQgaWZfbm90 X2V4aXN0cyBpcyBmYWxzZV0gdGhlbiBlcnJvciBvdXQsIGVsc2UgZG8gbm90aGluZy4KKyAq CisgKiBTZWUgYWxzbyBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uLgorICovCitz dGF0aWMgYm9vbAorY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cykK K3sKKwlIZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxlOworCWludAkJCWF0dG51bTsKKwor CS8qIFRPRE86IGltcGxlbWVudCBJRiBbTk9UXSBFWElTVFMgZm9yIHBlcmlvZHMgKi8KKwlB c3NlcnQoIWlmX25vdF9leGlzdHMpOworCisJLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHBl cmlvZCB3aXRoIHRoaXMgbmFtZSwgdGhlbiB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0g U2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1 bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShw ZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJaWYg KGlmX25vdF9leGlzdHMpCisJCXsKKwkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisK KwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9D T0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNc IiBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXBlcm5hbWUsIFJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQll cmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiks CisJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgYWxyZWFk eSBleGlzdHMiLAorCQkJCQkJcGVybmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwl9CisKKwkvKgorCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0 dGlzZHJvcHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCisJICogYWRkIGEgY29s dW1uIG1hdGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFu eXdheS4KKwkgKi8KKwlhdHRUdXBsZSA9IFNlYXJjaFN5c0NhY2hlMihBVFROQU1FLAorCQkJ CQkJCSAgIE9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSwKKwkJCQkJ CQkgICBQb2ludGVyR2V0RGF0dW0ocGVybmFtZSkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlk KGF0dFR1cGxlKSkKKwl7CisJCWF0dG51bSA9ICgoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNU UlVDVChhdHRUdXBsZSkpLT5hdHRudW07CisJCVJlbGVhc2VTeXNDYWNoZShhdHRUdXBsZSk7 CisKKwkJLyoKKwkJICogV2UgdGhyb3cgYSBkaWZmZXJlbnQgZXJyb3IgbWVzc2FnZSBmb3Ig Y29uZmxpY3RzIHdpdGggc3lzdGVtIGNvbHVtbgorCQkgKiBuYW1lcywgc2luY2UgdGhleSBh cmUgbm9ybWFsbHkgbm90IHNob3duIGFuZCB0aGUgdXNlciBtaWdodCBvdGhlcndpc2UKKwkJ ICogYmUgY29uZnVzZWQgYWJvdXQgdGhlIHJlYXNvbiBmb3IgdGhlIGNvbmZsaWN0LgorCQkg Ki8KKwkJaWYgKGF0dG51bSA8PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIG5h bWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJCQkJ CQlwZXJuYW1lKSkpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNv bmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUiLAorCQkJCQkJcGVybmFtZSkpKTsKKwl9CisK KwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqIEluc3RhbGwgYSBjb2x1bW4ncyBkZXBlbmRl bmN5IG9uIGl0cyBkYXRhdHlwZS4KICAqLwpAQCAtODA5NSw2ICs4Njc2LDE1NSBAQCBBVEV4 ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51bWJlciBhdHRudW0s CiAJcmV0dXJuIGFkZHJlc3M7CiB9CiAKKy8qCisgKiBBTFRFUiBUQUJMRSBBREQgUEVSSU9E CisgKgorICogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBwZXJpb2QuCisgKi8KK3N0YXRp YyBPYmplY3RBZGRyZXNzCitBVEV4ZWNBZGRQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2RE ZWYgKnBlcmlvZCwgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KQoreworCVJl bGF0aW9uCQlhdHRyZWxhdGlvbjsKKwlPYmplY3RBZGRyZXNzCWFkZHJlc3MgPSBJbnZhbGlk T2JqZWN0QWRkcmVzczsKKwlDb25zdHJhaW50CSAgICpjb25zdHI7CisJQ29sdW1uRGVmCSAg ICpyYW5nZWNvbDsKKwlPaWQJCQkJY29ub2lkLCBwZXJpb2RvaWQ7CisJTGlzdAkJICAgKmNt ZHMgPSBOSUw7CisJQWx0ZXJUYWJsZUNtZCAgKmNtZDsKKworCS8qCisJICogUEVSSU9EIEZP UiBTWVNURU1fVElNRSBpcyBub3QgeWV0IGltcGxlbWVudGVkLCBidXQgbWFrZSBzdXJlIG5v IG9uZSB1c2VzCisJICogdGhlIG5hbWUuCisJICovCisJaWYgKHN0cmNtcChwZXJpb2QtPnBl cmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJt c2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkv KiBUaGUgcGVyaW9kIG5hbWUgbXVzdCBub3QgYWxyZWFkeSBleGlzdCAqLworCSh2b2lkKSBj aGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlzaW9uKHJlbCwgcGVyaW9kLT5wZXJpb2RuYW1l LCBmYWxzZSk7CisKKwkvKiBQYXJzZSBvcHRpb25zICovCisJdHJhbnNmb3JtUGVyaW9kT3B0 aW9ucyhwZXJpb2QpOworCisJYXR0cmVsYXRpb24gPSB0YWJsZV9vcGVuKEF0dHJpYnV0ZVJl bGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVZhbGlkYXRlUGVyaW9kKHJlbCwgcGVy aW9kKTsKKworCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJp b2QocGVyaW9kKTsKKworCS8qIE1ha2UgdGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljb25z dHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChyZWwsIHBlcmlvZCk7CisJY21kID0g bWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJY21kLT5zdWJ0eXBlID0gQVRfQWRkQ29uc3Ry YWludDsKKwljbWQtPmRlZiA9IChOb2RlICopIGNvbnN0cjsKKwljbWRzID0gbGFwcGVuZChj bWRzLCBjbWQpOworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlkKHJlbCks IGNtZHMsIHRydWUsIGNvbnRleHQpOworCWNvbm9pZCA9IGdldF9yZWxhdGlvbl9jb25zdHJh aW50X29pZChSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+Y29uc3RyYWludG5hbWUs IGZhbHNlKTsKKworCS8qIE1ha2UgdGhlIHJhbmdlIGNvbHVtbiAqLworCXJhbmdlY29sID0g bWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChwZXJpb2QpOworCWNtZCA9IG1ha2VOb2Rl KEFsdGVyVGFibGVDbWQpOworCWNtZC0+c3VidHlwZSA9IEFUX0FkZENvbHVtbjsKKwljbWQt PmRlZiA9IChOb2RlICopIHJhbmdlY29sOworCWNtZC0+bmFtZSA9IHBlcmlvZC0+cGVyaW9k bmFtZTsKKwljbWQtPnJlY3Vyc2UgPSBmYWxzZTsgLyogbm8sIGxldCB0aGUgUEVSSU9EIHJl Y3Vyc2UgaW5zdGVhZCAqLworCUFsdGVyVGFibGVJbnRlcm5hbChSZWxhdGlvbkdldFJlbGlk KHJlbCksIGxpc3RfbWFrZTEoY21kKSwgdHJ1ZSwgY29udGV4dCk7CisJcGVyaW9kLT5ybmdh dHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5wZXJp b2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIp CisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIsIHBlcmlvZC0+cGVyaW9k bmFtZSk7CisKKwkvKiBTYXZlIHRoZSBQZXJpb2QgKi8KKwlwZXJpb2RvaWQgPSBTdG9yZVBl cmlvZChyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9kLT5zdGFydGF0dG51bSwgcGVy aW9kLT5lbmRhdHRudW0sIHBlcmlvZC0+cm5nYXR0bnVtLCBjb25vaWQpOworCisJT2JqZWN0 QWRkcmVzc1NldChhZGRyZXNzLCBQZXJpb2RSZWxhdGlvbklkLCBwZXJpb2RvaWQpOworCisJ dGFibGVfY2xvc2UoYXR0cmVsYXRpb24sIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJu IGFkZHJlc3M7Cit9CisKKy8qCisgKiBBTFRFUiBUQUJMRSBEUk9QIFBFUklPRAorICoKKyAq IExpa2UgRFJPUCBDT0xVTU4sIHdlIGNhbid0IHVzZSB0aGUgbm9ybWFsIEFMVEVSIFRBQkxF IHJlY3Vyc2lvbiBtZWNoYW5pc20uCisgKi8KK3N0YXRpYyB2b2lkCitBVEV4ZWNEcm9wUGVy aW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJIERyb3BC ZWhhdmlvciBiZWhhdmlvciwKKwkJCQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcs CisJCQkJCSBib29sIG1pc3Npbmdfb2spCit7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUZv cm1fcGdfcGVyaW9kIHBlcmlvZDsKKwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRh IGtleTsKKwlIZWFwVHVwbGUJdHVwbGU7CisJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCS8q IEF0IHRvcCBsZXZlbCwgcGVybWlzc2lvbiBjaGVjayB3YXMgZG9uZSBpbiBBVFByZXBDbWQs IGVsc2UgZG8gaXQgKi8KKwlpZiAocmVjdXJzaW5nKQorCQlBVFNpbXBsZVBlcm1pc3Npb25z KEFUX0Ryb3BQZXJpb2QsIHJlbCwgQVRUX1RBQkxFKTsKKworCXBnX3BlcmlvZCA9IHRhYmxl X29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisKKwkvKgorCSAq IEZpbmQgYW5kIGRyb3AgdGhlIHRhcmdldCBwZXJpb2QKKwkgKi8KKwlTY2FuS2V5SW5pdCgm a2V5LAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVn eU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVs aWQocmVsKSkpOworCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJp b2RSZWxpZE5hbWVJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVMTCwgMSwgJmtleSk7CisK Kwl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQoc2Nh bikpKQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwZXJvYmo7CisKKwkJcGVyaW9kID0gKEZvcm1f cGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUpOworCisJCWlmIChzdHJjbXAoTmFtZVN0cihw ZXJpb2QtPnBlcm5hbWUpLCBwZXJpb2ROYW1lKSAhPSAwKQorCQkJY29udGludWU7CisKKwkJ LyoKKwkJICogUGVyZm9ybSB0aGUgYWN0dWFsIHBlcmlvZCBkZWxldGlvbgorCQkgKi8KKwkJ cGVyb2JqLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQlwZXJvYmoub2JqZWN0SWQg PSBwZXJpb2QtPm9pZDsKKwkJcGVyb2JqLm9iamVjdFN1YklkID0gMDsKKworCQlwZXJmb3Jt RGVsZXRpb24oJnBlcm9iaiwgYmVoYXZpb3IsIDApOworCisJCWZvdW5kID0gdHJ1ZTsKKwor CQkvKiBwZXJpb2QgZm91bmQgYW5kIGRyb3BwZWQgLS0gbm8gbmVlZCB0byBrZWVwIGxvb3Bp bmcgKi8KKwkJYnJlYWs7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCWlm ICghZm91bmQpCisJeworCQlpZiAoIW1pc3Npbmdfb2spCisJCXsKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJCSBl cnJtc2coInBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwKKwkJCQkJCQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkp OworCQl9CisJCWVsc2UKKwkJeworCQkJZXJlcG9ydChOT1RJQ0UsCisJCQkJCShlcnJtc2co InBlcmlvZCBcIiVzXCIgb24gcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0LCBza2lw cGluZyIsCisJCQkJCQkJcGVyaW9kTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKKwkJCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7CisJ CQlyZXR1cm47CisJCX0KKwl9CisKKwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1 c2l2ZUxvY2spOworfQorCiAvKgogICogQUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIEFERCBJ REVOVElUWQogICoKQEAgLTEzNzAwLDYgKzE0NDMwLDE1IEBAIEFURXhlY0FsdGVyQ29sdW1u VHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQlSZW1lbWJl ckNvbnN0cmFpbnRGb3JSZWJ1aWxkaW5nKGZvdW5kT2JqZWN0Lm9iamVjdElkLCB0YWIpOwog CQkJCWJyZWFrOwogCisJCQljYXNlIE9DTEFTU19QRVJJT0Q6CisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJ CQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBw ZXJpb2QiKSwKKwkJCQkJCSBlcnJkZXRhaWwoIiVzIGRlcGVuZHMgb24gY29sdW1uIFwiJXNc IiIsCisJCQkJCQkJCSAgIGdldE9iamVjdERlc2NyaXB0aW9uKCZmb3VuZE9iamVjdCwgZmFs c2UpLAorCQkJCQkJCQkgICBjb2xOYW1lKSkpOworCQkJCWJyZWFrOworCiAJCQljYXNlIE9D TEFTU19SRVdSSVRFOgogCQkJCS8qIFhYWCBzb21lZGF5IHNlZSBpZiB3ZSBjYW4gY29wZSB3 aXRoIHJldmlzaW5nIHZpZXdzICovCiAJCQkJZXJlcG9ydChFUlJPUiwKQEAgLTE1NzYzLDcg KzE2NTAyLDcgQEAgQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVBbGxTdG10ICpz dG10KQogCiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCgoTm9kZSAqKSBzdG10KTsK IAkJLyogT0lEIGlzIHNldCBieSBBbHRlclRhYmxlSW50ZXJuYWwgKi8KLQkJQWx0ZXJUYWJs ZUludGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlKTsKKwkJQWx0ZXJUYWJsZUlu dGVybmFsKGxmaXJzdF9vaWQobCksIGNtZHMsIGZhbHNlLCBOVUxMKTsKIAkJRXZlbnRUcmln Z2VyQWx0ZXJUYWJsZUVuZCgpOwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvdmlldy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IDliZDc3 NTQ2YjkuLmJlNDYzNzI4N2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Zp ZXcuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKQEAgLTE2OSw3ICsxNjks NyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0 bGlzdCwgYm9vbCByZXBsYWNlLAogCQkJfQogCiAJCQkvKiBFdmVudFRyaWdnZXJBbHRlclRh YmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGlsaXR5U2xvdyAqLwotCQkJQWx0ZXJUYWJs ZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSk7CisJCQlBbHRlclRhYmxlSW50ZXJu YWwodmlld09pZCwgYXRjbWRzLCB0cnVlLCBOVUxMKTsKIAogCQkJLyogTWFrZSB0aGUgbmV3 IHZpZXcgY29sdW1ucyB2aXNpYmxlICovCiAJCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgp OwpAQCAtMjAxLDcgKzIwMSw3IEBAIERlZmluZVZpcnR1YWxSZWxhdGlvbihSYW5nZVZhciAq cmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJlcGxhY2UsCiAJCWF0Y21kcyA9IGxpc3Rf bWFrZTEoYXRjbWQpOwogCiAJCS8qIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxs ZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3 T2lkLCBhdGNtZHMsIHRydWUpOworCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRj bWRzLCB0cnVlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBUaGVyZSBpcyB2ZXJ5IGxpdHRsZSB0 byBkbyBoZXJlIHRvIHVwZGF0ZSB0aGUgdmlldydzIGRlcGVuZGVuY2llcy4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKaW5kZXggNjJjY2JmOWQzYy4uYTBjMDY5ZmM1ZiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv bm9kZUZ1bmNzLmMKQEAgLTE2MzksNiArMTYzOSw5IEBAIGV4cHJMb2NhdGlvbihjb25zdCBO b2RlICpleHByKQogCQljYXNlIFRfQ29uc3RyYWludDoKIAkJCWxvYyA9ICgoY29uc3QgQ29u c3RyYWludCAqKSBleHByKS0+bG9jYXRpb247CiAJCQlicmVhazsKKwkJY2FzZSBUX1Blcmlv ZERlZjoKKwkJCWxvYyA9ICgoY29uc3QgUGVyaW9kRGVmICopIGV4cHIpLT5sb2NhdGlvbjsK KwkJCWJyZWFrOwogCQljYXNlIFRfRnVuY3Rpb25QYXJhbWV0ZXI6CiAJCQkvKiBqdXN0IHVz ZSB0eXBlbmFtZSdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUg KikgKChjb25zdCBGdW5jdGlvblBhcmFtZXRlciAqKSBleHByKS0+YXJnVHlwZSk7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQppbmRleCBhODkwNGIyNzM2Li45ZTMwMjllNWMyIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkK QEAgLTU5NCw3ICs1OTQsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUg PGtleXdvcmQ+IGNvbF9uYW1lX2tleXdvcmQgcmVzZXJ2ZWRfa2V5d29yZAogJXR5cGUgPGtl eXdvcmQ+IGJhcmVfbGFiZWxfa2V5d29yZAogCi0ldHlwZSA8bm9kZT4JVGFibGVDb25zdHJh aW50IFRhYmxlTGlrZUNsYXVzZQorJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3RyYWludCBUYWJs ZUxpa2VDbGF1c2UgVGFibGVQZXJpb2QKICV0eXBlIDxpdmFsPglUYWJsZUxpa2VPcHRpb25M aXN0IFRhYmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNvbHVtbl9jb21wcmVzc2lvbiBv cHRfY29sdW1uX2NvbXByZXNzaW9uIGNvbHVtbl9zdG9yYWdlIG9wdF9jb2x1bW5fc3RvcmFn ZQogJXR5cGUgPGxpc3Q+CUNvbFF1YWxMaXN0CkBAIC0yNjE0LDYgKzI2MTQsMjQgQEAgYWx0 ZXJfdGFibGVfY21kOgogCQkJCQluLT5kZWYgPSAoTm9kZSAqKSAkNDsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBREQgUEVSSU9E IEZPUiA8bmFtZT4gKDxuYW1lPiwgPG5hbWU+KSAqLworCQkJfCBBRERfUCBUYWJsZVBlcmlv ZAorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFibGVD bWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkUGVyaW9kOworCQkJCQluLT5kZWYgPSAk MjsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5h bWU+IERST1AgUEVSSU9EIEZPUiA8bmFtZT4gW1JFU1RSSUNUfENBU0NBREVdICovCisJCQl8 IERST1AgUEVSSU9EIEZPUiBuYW1lIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkJeworCQkJCQlB bHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4tPnN1 YnR5cGUgPSBBVF9Ecm9wUGVyaW9kOworCQkJCQluLT5uYW1lID0gJDQ7CisJCQkJCW4tPmJl aGF2aW9yID0gJDU7CisJCQkJCW4tPm1pc3Npbmdfb2sgPSBmYWxzZTsKKwkJCQkJJCQgPSAo Tm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBDT05TVFJB SU5UIC4uLiAqLwogCQkJfCBBRERfUCBUYWJsZUNvbnN0cmFpbnQKIAkJCQl7CkBAIC0zNzMz LDggKzM3NTEsMTAgQEAgVGFibGVFbGVtZW50OgogCQkJY29sdW1uRGVmCQkJCQkJCXsgJCQg PSAkMTsgfQogCQkJfCBUYWJsZUxpa2VDbGF1c2UJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCBU YWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQorCQkJfCBUYWJsZVBlcmlvZAkJCQkJ CXsgJCQgPSAkMTsgfQogCQk7CiAKKwogVHlwZWRUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5P cHRpb25zCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWludAkJCQkJeyAk JCA9ICQxOyB9CkBAIC00MDg2LDYgKzQxMDYsMTkgQEAgVGFibGVMaWtlT3B0aW9uOgogCQk7 CiAKIAorVGFibGVQZXJpb2Q6CisJCQlQRVJJT0QgRk9SIG5hbWUgJygnIG5hbWUgJywnIG5h bWUgJyknIG9wdF9kZWZpbml0aW9uCisJCQkJeworCQkJCQlQZXJpb2REZWYgKm4gPSBtYWtl Tm9kZShQZXJpb2REZWYpOworCQkJCQluLT5wZXJpb2RuYW1lID0gJDM7CisJCQkJCW4tPnN0 YXJ0Y29sbmFtZSA9ICQ1OworCQkJCQluLT5lbmRjb2xuYW1lID0gJDc7CisJCQkJCW4tPm9w dGlvbnMgPSAkOTsKKwkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KKwkJOworCiAvKiBDb25zdHJhaW50RWxlbSBzcGVjaWZpZXMgY29uc3Ry YWludCBzeW50YXggd2hpY2ggaXMgbm90IGVtYmVkZGVkIGludG8KICAqCWEgY29sdW1uIGRl ZmluaXRpb24uIENvbENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyB0aGUgZW1iZWRkZWQgZm9y bS4KICAqIC0gdGhvbWFzIDE5OTctMTItMDMKQEAgLTcxNDQsNiArNzE3NywxNCBAQCBDb21t ZW50U3RtdDoKIAkJCQkJbi0+Y29tbWVudCA9ICQ5OwogCQkJCQkkJCA9IChOb2RlICopIG47 CiAJCQkJfQorCQkJfCBDT01NRU5UIE9OIFBFUklPRCBhbnlfbmFtZSBJUyBjb21tZW50X3Rl eHQKKwkJCQl7CisJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQp OworCQkJCQluLT5vYmp0eXBlID0gT0JKRUNUX1BFUklPRDsKKwkJCQkJbi0+b2JqZWN0ID0g KE5vZGUgKikgJDQ7CisJCQkJCW4tPmNvbW1lbnQgPSAkNjsKKwkJCQkJJCQgPSAoTm9kZSAq KSBuOworCQkJCX0KIAkJCXwgQ09NTUVOVCBPTiBMQVJHRV9QIE9CSkVDVF9QIE51bWVyaWNP bmx5IElTIGNvbW1lbnRfdGV4dAogCQkJCXsKIAkJCQkJQ29tbWVudFN0bXQgKm4gPSBtYWtl Tm9kZShDb21tZW50U3RtdCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfcmVsYXRpb24uYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jCmlu ZGV4IDg2NGVhOWIwZDUuLmZiYmFkZTUxNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9y ZWxhdGlvbi5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9oZWFwLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3Bh Y2UuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJub2Rlcy9t YWtlZnVuY3MuaCIKQEAgLTMxODksNiArMzE5MCw3IEBAIGV4cGFuZE5TSXRlbUF0dHJzKFBh cnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3BhY2VJdGVtICpuc2l0ZW0sCiAJCQkJICBp bnQgc3VibGV2ZWxzX3VwLCBib29sIHJlcXVpcmVfY29sX3ByaXZzLCBpbnQgbG9jYXRpb24p CiB7CiAJUmFuZ2VUYmxFbnRyeSAqcnRlID0gbnNpdGVtLT5wX3J0ZTsKKwlCaXRtYXBzZXQg ICpwZXJpb2RhdHRzID0gTlVMTDsKIAlSVEVQZXJtaXNzaW9uSW5mbyAqcGVybWluZm8gPSBu c2l0ZW0tPnBfcGVybWluZm87CiAJTGlzdAkgICAqbmFtZXMsCiAJCQkgICAqdmFyczsKQEAg LTMyMTIsMTIgKzMyMTQsMjAgQEAgZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJcGVybWluZm8tPnJlcXVpcmVk UGVybXMgfD0gQUNMX1NFTEVDVDsKIAl9CiAKKwkvKiBHZXQgUEVSSU9EIGNvbHVtbnMgdG8g ZXhjbHVkZSAqLworCWlmIChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OKQorCQlwZXJp b2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MocnRlLT5yZWxpZCk7CisKIAlmb3Jib3RoKG5h bWUsIG5hbWVzLCB2YXIsIHZhcnMpCiAJewogCQljaGFyCSAgICpsYWJlbCA9IHN0clZhbChs Zmlyc3QobmFtZSkpOwogCQlWYXIJCSAgICp2YXJub2RlID0gKFZhciAqKSBsZmlyc3QodmFy KTsKIAkJVGFyZ2V0RW50cnkgKnRlOwogCisJCS8qIElmIHRoaXMgY29sdW1uIGlzIGZyb20g YSBQRVJJT0QsIHNraXAgaXQgKi8KKwkJaWYgKGJtc19pc19tZW1iZXIocHN0YXRlLT5wX25l eHRfcmVzbm8sIHBlcmlvZGF0dHMpKQorCQkJCWNvbnRpbnVlOworCiAJCXRlID0gbWFrZVRh cmdldEVudHJ5KChFeHByICopIHZhcm5vZGUsCiAJCQkJCQkJIChBdHRyTnVtYmVyKSBwc3Rh dGUtPnBfbmV4dF9yZXNubysrLAogCQkJCQkJCSBsYWJlbCwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jCmluZGV4IGE1YmI0NWRmMWUuLmMwMmFhMWIwOTcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfY29uc3RyYWludC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljX2V4dC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2NvbW1l bnQuaCIKQEAgLTgwLDYgKzgxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QKIAlib29sCQlpc2ZvcmVp Z247CQkvKiB0cnVlIGlmIENSRUFURS9BTFRFUiBGT1JFSUdOIFRBQkxFICovCiAJYm9vbAkJ aXNhbHRlcjsJCS8qIHRydWUgaWYgYWx0ZXJpbmcgZXhpc3RpbmcgdGFibGUgKi8KIAlMaXN0 CSAgICpjb2x1bW5zOwkJLyogQ29sdW1uRGVmIGl0ZW1zICovCisJTGlzdAkgICAqcGVyaW9k czsJCS8qIFBlcmlvZERlZiBpdGVtcyAqLwogCUxpc3QJICAgKmNrY29uc3RyYWludHM7CS8q IENIRUNLIGNvbnN0cmFpbnRzICovCiAJTGlzdAkgICAqbm5jb25zdHJhaW50czsJLyogTk9U IE5VTEwgY29uc3RyYWludHMgKi8KIAlMaXN0CSAgICpma2NvbnN0cmFpbnRzOwkvKiBGT1JF SUdOIEtFWSBjb25zdHJhaW50cyAqLwpAQCAtMTExLDYgKzExMyw4IEBAIHR5cGVkZWYgc3Ry dWN0CiAKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSAgQ29sdW1uRGVmICpjb2x1bW4pOworc3RhdGlj IHZvaWQgdHJhbnNmb3JtVGFibGVQZXJpb2QoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwKKwkJ CQkJCQkJIFBlcmlvZERlZiAqcGVyaW9kKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxl Q29uc3RyYWludChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkJIENvbnN0cmFp bnQgKmNvbnN0cmFpbnQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNl KENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCkBAIC0yNDAsNiArMjQ0LDcgQEAgdHJhbnNmb3Jt Q3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykK IAljeHQuaW5oUmVsYXRpb25zID0gc3RtdC0+aW5oUmVsYXRpb25zOwogCWN4dC5pc2FsdGVy ID0gZmFsc2U7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJ Y3h0LmNrY29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3RyYWludHMgPSBOSUw7CiAJ Y3h0LmZrY29uc3RyYWludHMgPSBOSUw7CkBAIC0yODAsNiArMjg1LDEwIEBAIHRyYW5zZm9y bUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcp CiAJCQkJdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbigmY3h0LCAoQ29sdW1uRGVmICopIGVs ZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfUGVyaW9kRGVmOgorCQkJCXRyYW5z Zm9ybVRhYmxlUGVyaW9kKCZjeHQsIChQZXJpb2REZWYgKikgZWxlbWVudCk7CisJCQkJYnJl YWs7CisKIAkJCWNhc2UgVF9Db25zdHJhaW50OgogCQkJCXRyYW5zZm9ybVRhYmxlQ29uc3Ry YWludCgmY3h0LCAoQ29uc3RyYWludCAqKSBlbGVtZW50KTsKIAkJCQlicmVhazsKQEAgLTM0 Nyw2ICszNTYsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCSAqIE91dHB1dCByZXN1bHRzLgogCSAqLwogCXN0 bXQtPnRhYmxlRWx0cyA9IGN4dC5jb2x1bW5zOworCXN0bXQtPnBlcmlvZHMgPSBjeHQucGVy aW9kczsKIAlzdG10LT5jb25zdHJhaW50cyA9IGN4dC5ja2NvbnN0cmFpbnRzOwogCXN0bXQt Pm5uY29uc3RyYWludHMgPSBjeHQubm5jb25zdHJhaW50czsKIApAQCAtOTEzLDYgKzkyMywx MTMgQEAgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0 LCBDb2x1bW5EZWYgKmNvbHVtbikKIAl9CiB9CiAKK3ZvaWQKK3RyYW5zZm9ybVBlcmlvZE9w dGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJTGlzdENlbGwgICAqb3B0aW9uOworCURl ZkVsZW0JICAgKmRjb25zdHJhaW50bmFtZSA9IE5VTEw7CisJRGVmRWxlbQkgICAqZHJhbmdl dHlwZW5hbWUgPSBOVUxMOworCisJZm9yZWFjaChvcHRpb24sIHBlcmlvZC0+b3B0aW9ucykK Kwl7CisJCURlZkVsZW0gICAgKmRlZmVsID0gKERlZkVsZW0gKikgbGZpcnN0KG9wdGlvbik7 CisKKwkJaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgImNoZWNrX2NvbnN0cmFpbnRfbmFt ZSIpID09IDApCisJCXsKKwkJCWlmIChkY29uc3RyYWludG5hbWUpCisJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBl cnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRjb25z dHJhaW50bmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVm bmFtZSwgInJhbmdldHlwZSIpID09IDApCisJCXsKKwkJCWlmIChkcmFuZ2V0eXBlbmFtZSkK KwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMi KSkpOworCQkJZHJhbmdldHlwZW5hbWUgPSBkZWZlbDsKKwkJfQorCQllbHNlCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CSBlcnJtc2coIm9wdGlvbiBcIiVzXCIgbm90IHJlY29nbml6ZWQiLCBkZWZlbC0+ZGVmbmFt ZSkpKTsKKwl9CisKKwlpZiAoZGNvbnN0cmFpbnRuYW1lICE9IE5VTEwpCisJCXBlcmlvZC0+ Y29uc3RyYWludG5hbWUgPSBkZWZHZXRTdHJpbmcoZGNvbnN0cmFpbnRuYW1lKTsKKwllbHNl CisJCXBlcmlvZC0+Y29uc3RyYWludG5hbWUgPSBOVUxMOworCisJaWYgKGRyYW5nZXR5cGVu YW1lICE9IE5VTEwpCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFtZSA9IGRlZkdldFN0cmluZyhk cmFuZ2V0eXBlbmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPnJhbmdldHlwZW5hbWUgPSBOVUxM OworfQorCisvKgorICogdHJhbnNmb3JtVGFibGVQZXJpb2QKKyAqCQl0cmFuc2Zvcm0gYSBQ ZXJpb2REZWYgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxFCisgKgkJ VE9ETzogRG9lcyBBTFRFUiBUQUJMRSByZWFsbHkgY2FsbCB1cz8/IEl0IGRvZXNuJ3Qgc2Vl bSBsaWtlIGl0IGRvZXMuIE1heWJlIGl0IHNob3VsZC4gRGlkIGl0IGluIFZpaydzIG9yaWdp bmFsIHBhdGNoPworICovCitzdGF0aWMgdm9pZAordHJhbnNmb3JtVGFibGVQZXJpb2QoQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgUGVyaW9kRGVmICpwZXJpb2QpCit7CisJLy8gT2lkCQkJ Y29sdHlwaWQ7CisJLy8gQ29sdW1uRGVmICAqY29sOworCS8vIExpc3RDZWxsICAgKmNvbHVt bnM7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgInN5c3RlbV90aW1lIikg PT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVS RV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiUEVSSU9EIEZPUiBTWVNURU1fVElN RSBpcyBub3Qgc3VwcG9ydGVkIiksCisJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0LT5w c3RhdGUsCisJCQkJCQkJCQkJcGVyaW9kLT5sb2NhdGlvbikpKTsKKworCWlmIChzdHJjbXAo cGVyaW9kLT5zdGFydGNvbG5hbWUsIHBlcmlvZC0+ZW5kY29sbmFtZSkgPT0gMCkKKwkJZXJl cG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwiJXNcIiBjYW4ndCBiZSB0aGUgc3RhcnQg YW5kIGVuZCBjb2x1bW4gZm9yIHBlcmlvZCBcIiVzXCIiLAorCQkJCQkgICAgcGVyaW9kLT5z dGFydGNvbG5hbWUsIHBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCS8qCisJICogRGV0ZXJt aW5lIHRoZSBjb2x1bW4gaW5mbyBhbmQgcmFuZ2UgdHlwZSBzbyB0aGF0IHRyYW5zZm9ybUlu ZGV4Q29uc3RyYWludHMKKwkgKiBrbm93cyBob3cgdG8gY3JlYXRlIFBSSU1BUlkgS0VZL1VO SVFVRSBjb25zdHJhaW50cyB1c2luZyB0aGlzIFBFUklPRC4KKwkgKi8KKwl0cmFuc2Zvcm1Q ZXJpb2RPcHRpb25zKHBlcmlvZCk7CisKKwkvKgorCSAqIEZpbmQgYSBzdWl0YWJsZSByYW5n ZSB0eXBlIGZvciBvcGVyYXRpb25zIGludm9sdmluZyB0aGlzIHBlcmlvZC4KKwkgKiBVc2Ug dGhlIHJhbmdldHlwZSBvcHRpb24gaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB0cnkgdG8gZmlu ZCBhCisJICogbm9uLWFtYmlndW91cyBleGlzdGluZyB0eXBlLgorCSAqLworCisjaWZkZWYg YXNkc2RmYQorCS8qIEZpcnN0IGZpbmQgb3V0IHRoZSB0eXBlIG9mIHRoZSBwZXJpb2QncyBj b2x1bW5zICovCisJLy8gVE9ETzogSSdtIGRvaW5nIHRoaXMgaW4gRGVmaW5lUmVsYXRpb24g bm93LAorCS8vIHdoaWNoIHNlZW1zIGxpa2UgYSBiZXR0ZXIgcGxhY2Ugc2luY2UgaXQga25v d3MgYWJvdXQgaW5oZXJpdGVkIGNvbHVtbnMuCisJcGVyaW9kLT5jb2x0eXBpZCA9IEludmFs aWRPaWQ7CisJcGVyaW9kLT5ybmd0eXBpZCA9IEludmFsaWRPaWQ7CisJZm9yZWFjaCAoY29s dW1ucywgY3h0LT5jb2x1bW5zKQorCXsKKwkJY29sID0gKENvbHVtbkRlZiAqKSBsZmlyc3Qo Y29sdW1ucyk7CisJCWlmIChzdHJjbXAoY29sLT5jb2xuYW1lLCBwZXJpb2QtPnN0YXJ0Y29s bmFtZSkgPT0gMCkKKwkJeworCQkJY29sdHlwaWQgPSB0eXBlbmFtZVR5cGVJZChjeHQtPnBz dGF0ZSwgY29sLT50eXBlTmFtZSk7CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoY29sdHlw aWQgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwgKGVycm1zZygiY29sdW1uIFwi JXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJcGVyaW9k LT5zdGFydGNvbG5hbWUsIGN4dC0+cmVsYXRpb24tPnJlbG5hbWUpKSk7CisKKwlwZXJpb2Qt PmNvbHR5cGlkID0gY29sdHlwaWQ7CisKKwkvKiBOb3cgbWFrZSBzdXJlIGl0IG1hdGNoZXMg cmFuZ2V0eXBlbmFtZSBvciB3ZSBjYW4gZmluZCBhIG1hdGNoaW5nIHJhbmdlICovCisJcGVy aW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOwor I2VuZGlmCisKKwljeHQtPnBlcmlvZHMgPSBsYXBwZW5kKGN4dC0+cGVyaW9kcywgcGVyaW9k KTsKK30KKwogLyoKICAqIHRyYW5zZm9ybVRhYmxlQ29uc3RyYWludAogICoJCXRyYW5zZm9y bSBhIENvbnN0cmFpbnQgbm9kZSB3aXRoaW4gQ1JFQVRFIFRBQkxFIG9yIEFMVEVSIFRBQkxF CkBAIC0xMDAzLDYgKzExMjAsNyBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCUF0 dHJOdW1iZXIJcGFyZW50X2F0dG5vOwogCVJlbGF0aW9uCXJlbGF0aW9uOwogCVR1cGxlRGVz Ywl0dXBsZURlc2M7CisJQml0bWFwc2V0ICAqcGVyaW9kYXR0czsKIAlBY2xSZXN1bHQJYWNs cmVzdWx0OwogCWNoYXIJICAgKmNvbW1lbnQ7CiAJUGFyc2VDYWxsYmFja1N0YXRlIHBjYnN0 YXRlOwpAQCAtMTA1NSw2ICsxMTczLDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEK IAl9CiAKIAl0dXBsZURlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbGF0aW9uKTsKKwlwZXJp b2RhdHRzID0gZ2V0X3BlcmlvZF9hdHRub3MoUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbikp OwogCiAJLyoKIAkgKiBJbnNlcnQgdGhlIGNvcGllZCBhdHRyaWJ1dGVzIGludG8gdGhlIGN4 dCBmb3IgdGhlIG5ldyB0YWJsZSBkZWZpbml0aW9uLgpAQCAtMTA2NCwxMCArMTE4MywxOCBA QCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVGFi bGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCWZvciAocGFyZW50X2F0dG5vID0gMTsg cGFyZW50X2F0dG5vIDw9IHR1cGxlRGVzYy0+bmF0dHM7CiAJCSBwYXJlbnRfYXR0bm8rKykK IAl7Ci0JCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJpYnV0ZSA9IFR1cGxlRGVzY0F0dHIodHVw bGVEZXNjLAotCQkJCQkJCQkJCQkJCXBhcmVudF9hdHRubyAtIDEpOworCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRyaWJ1dGU7CiAJCUNvbHVtbkRlZiAgKmRlZjsKIAorCQkvKgorCQkgKiBJ ZiB0aGlzIGNvbHVtbiBpcyBmcm9tIGEgUEVSSU9ELCBza2lwIGl0CisJCSAqIChzaW5jZSBM SUtFIG5ldmVyIGNvcGllcyBQRVJJT0RzKS4KKwkJICovCisJCWlmIChibXNfaXNfbWVtYmVy KHBhcmVudF9hdHRubywgcGVyaW9kYXR0cykpCisJCQljb250aW51ZTsKKworCQlhdHRyaWJ1 dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywgcGFyZW50X2F0dG5vIC0gMSk7CisKIAkJ LyoKIAkJICogSWdub3JlIGRyb3BwZWQgY29sdW1ucyBpbiB0aGUgcGFyZW50LgogCQkgKi8K QEAgLTMwMDgsNiArMzEzNSwxMCBAQCB0cmFuc2Zvcm1JbmRleFN0bXQoT2lkIHJlbGlkLCBJ bmRleFN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCQl9CiAJfQogCisJ LyogdGFrZSBjYXJlIG9mIHRoZSBwZXJpb2QgKi8KKwlpZiAoc3RtdC0+cGVyaW9kKQorCQlz dG10LT5wZXJpb2QtPm9pZCA9IGdldF9wZXJpb2Rfb2lkKHJlbGlkLCBzdG10LT5wZXJpb2Qt PnBlcmlvZG5hbWUsIGZhbHNlKTsKKwogCS8qCiAJICogQ2hlY2sgdGhhdCBvbmx5IHRoZSBi YXNlIHJlbCBpcyBtZW50aW9uZWQuICAoVGhpcyBzaG91bGQgYmUgZGVhZCBjb2RlCiAJICog bm93IHRoYXQgYWRkX21pc3NpbmdfZnJvbSBpcyBoaXN0b3J5LikKQEAgLTM0NjUsNiArMzU5 Niw3IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0 bXQgKnN0bXQsCiAJY3h0LmluaFJlbGF0aW9ucyA9IE5JTDsKIAljeHQuaXNhbHRlciA9IHRy dWU7CiAJY3h0LmNvbHVtbnMgPSBOSUw7CisJY3h0LnBlcmlvZHMgPSBOSUw7CiAJY3h0LmNr Y29uc3RyYWludHMgPSBOSUw7CiAJY3h0Lm5uY29uc3RyYWludHMgPSBOSUw7CiAJY3h0LmZr Y29uc3RyYWludHMgPSBOSUw7CkBAIC0zNTI3LDYgKzM2NTksMTUgQEAgdHJhbnNmb3JtQWx0 ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJCSAo aW50KSBub2RlVGFnKGNtZC0+ZGVmKSk7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQVRfQWRk UGVyaW9kOgorCQkJCXsKKwkJCQkJbmV3Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsK KwkJCQkJLy8gV2h5IG5vdCBjYWxsIHRyYW5zZm9ybVRhYmxlUGVyaW9kIGhlcmU/CisJCQkJ CS8vIEFoIGJlY2F1c2UgaXQgbG9va3MgYXQgY3h0LT5jb2x1bW5zCisJCQkJCS8vIGFuZCBp biBhbiBBTFRFUiBzdGF0ZW1lbnQgdGhlIGNvbHVtbnMgbWlnaHQgYWxyZWFkeSBleGlzdCAo b3Igbm90KS4KKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQljYXNlIEFUX0FsdGVyQ29sdW1u VHlwZToKIAkJCQl7CiAJCQkJCUNvbHVtbkRlZiAgKmRlZiA9IGNhc3ROb2RlKENvbHVtbkRl ZiwgY21kLT5kZWYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRleCBi ODgxMzA0MmQwLi4xNDk3OTA2MDUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9j YWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2Fj aGUuYwpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNwYWNl LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCkBAIC0xMDIxLDYgKzEwMjIs NjggQEAgZ2V0X2F0dG9wdGlvbnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pCiAJcmV0dXJu IHJlc3VsdDsKIH0KIAorLyoJCQkJLS0tLS0tLS0tLSBQR19QRVJJT0QgQ0FDSEUgLS0tLS0t LS0tLQkJCQkgKi8KKworLyoKKyAqIGdldF9wZXJpb2RuYW1lIC0gZ2l2ZW4gaXRzIE9JRCwg bG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Npbmdfb2sgaXMgZmFsc2UsIHRocm93 IGFuIGVycm9yIGlmIHRoZSBwZXJpb2QgaXMgbm90IGZvdW5kLgorICogSWYgdHJ1ZSwganVz dCByZXR1cm4gSW52YWxpZE9pZC4KKyAqLworY2hhciAqCitnZXRfcGVyaW9kbmFtZShPaWQg cGVyaW9kaWQsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9 IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShw ZXJpb2RpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdf cGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0cCk7CisJ CWNoYXIJICAgKnJlc3VsdDsKKworCQlyZXN1bHQgPSBwc3RyZHVwKE5hbWVTdHIocGVyaW9k X3R1cC0+cGVybmFtZSkpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVz dWx0OworCX0KKworCWlmICghbWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxv b2t1cCBmYWlsZWQgZm9yIHBlcmlvZCAlZCIsCisJCQkgcGVyaW9kaWQpOworCXJldHVybiBO VUxMOworfQorCisvKgorICogZ2V0X3BlcmlvZF9vaWQgLSBnZXRzIGl0cyByZWxhdGlvbiBh bmQgbmFtZSwgbG9vayB1cCBhIHBlcmlvZAorICoKKyAqIElmIG1pc3Npbmdfb2sgaXMgZmFs c2UsIHRocm93IGFuIGVycm9yIGlmIHRoZSBjYXN0IGlzIG5vdCBmb3VuZC4gIElmCisgKiB0 cnVlLCBqdXN0IHJldHVybiBJbnZhbGlkT2lkLgorICovCitPaWQKK2dldF9wZXJpb2Rfb2lk KE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgYm9vbCBtaXNzaW5nX29rKQor eworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUs CisJCQkJCQkgT2JqZWN0SWRHZXREYXR1bShyZWxpZCksCisJCQkJCQkgUG9pbnRlckdldERh dHVtKHBlcmlvZG5hbWUpKTsKKworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJ CUZvcm1fcGdfcGVyaW9kIHBlcmlvZF90dXAgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVD VCh0cCk7CisJCU9pZCByZXN1bHQ7CisKKwkJcmVzdWx0ID0gcGVyaW9kX3R1cC0+b2lkOwor CQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gcmVzdWx0OworCX0KKworCWlmICgh bWlzc2luZ19vaykKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIHBl cmlvZCAlcyIsCisJCQkgcGVyaW9kbmFtZSk7CisJcmV0dXJuIEludmFsaWRPaWQ7Cit9CisK IC8qCQkJCS0tLS0tLS0tLS0gUEdfQ0FTVCBDQUNIRSAtLS0tLS0tLS0tCQkJCQkgKi8KIAog LyoKQEAgLTM1NjQsNiArMzYyNywzMCBAQCBnZXRfbXVsdGlyYW5nZV9yYW5nZShPaWQgbXVs dGlyYW5nZU9pZCkKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiB9CiAKK09pZAorZ2V0X3N1YnR5 cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpCit7CisJQ2F0Q0xpc3QgKmNhdGxpc3Q7CisJT2lk CXJlc3VsdCA9IEludmFsaWRPaWQ7CisKKwljYXRsaXN0ID0gU2VhcmNoU3lzQ2FjaGVMaXN0 MShSQU5HRVNVQlRZUEUsIE9iamVjdElkR2V0RGF0dW0oc3VidHlwZU9pZCkpOworCisJaWYg KGNhdGxpc3QtPm5fbWVtYmVycyA9PSAxKQorCXsKKwkJSGVhcFR1cGxlCXR1cGxlID0gJmNh dGxpc3QtPm1lbWJlcnNbMF0tPnR1cGxlOworCQlGb3JtX3BnX3JhbmdlIHJuZ3R1cCA9IChG b3JtX3BnX3JhbmdlKSBHRVRTVFJVQ1QodHVwbGUpOworCQlyZXN1bHQgPSBybmd0dXAtPnJu Z3R5cGlkOworCQlSZWxlYXNlQ2F0Q2FjaGVMaXN0KGNhdGxpc3QpOworCX0KKwllbHNlIGlm IChjYXRsaXN0LT5uX21lbWJlcnMgPiAxKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJj b2RlKEVSUkNPREVfSU5ERVRFUk1JTkFURV9EQVRBVFlQRSksCisJCQkJIGVycm1zZygiYW1i aWd1b3VzIHJhbmdlIGZvciB0eXBlICVzIiwKKwkJCQkJCWZvcm1hdF90eXBlX2JlKHN1YnR5 cGVPaWQpKSkpOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoJCQkJLS0tLS0tLS0tLSBQ R19JTkRFWCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3N5c2NhY2hlLmMKaW5kZXggOGRiZGEwMDI0Zi4uNDRlNjM2ZTViZSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCkBAIC00OSw2ICs0OSw3IEBACiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGZhbWlseS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVy X2FjbC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHJv Yy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24uaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uX25hbWVzcGFjZS5oIgpAQCAtNDIyLDYgKzQyMywxOSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9bXSA9IHsKIAkJS0VZ KEFudW1fcGdfcGFydGl0aW9uZWRfdGFibGVfcGFydHJlbGlkKSwKIAkJMzIKIAl9LAorCVtQ RVJJT0ROQU1FXSA9IHsKKwkJUGVyaW9kUmVsYXRpb25JZCwKKwkJUGVyaW9kUmVsaWROYW1l SW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJQW51bV9wZ19w ZXJpb2RfcGVybmFtZSksCisJCTMyCisJfSwKKwlbUEVSSU9ET0lEXSA9IHsKKwkJUGVyaW9k UmVsYXRpb25JZCwKKwkJUGVyaW9kT2JqZWN0SW5kZXhJZCwKKwkJS0VZKEFudW1fcGdfcGVy aW9kX29pZCksCisJCTMyCisJfSwKIAlbUFJPQ05BTUVBUkdTTlNQXSA9IHsKIAkJUHJvY2Vk dXJlUmVsYXRpb25JZCwKIAkJUHJvY2VkdXJlTmFtZUFyZ3NOc3BJbmRleElkLApAQCAtNDgw LDYgKzQ5NCwxMyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNhY2hlZGVzYyBjYWNoZWluZm9b XSA9IHsKIAkJS0VZKEFudW1fcGdfcmFuZ2Vfcm5nbXVsdGl0eXBpZCksCiAJCTQKIAl9LAor CVtSQU5HRVNVQlRZUEVdID0geworCQlSYW5nZVJlbGF0aW9uSWQsCisJCVJhbmdlU3ViVHlw aWRUeXBpZEluZGV4SWQsCisJCUtFWShBbnVtX3BnX3JhbmdlX3JuZ3N1YnR5cGUsCisJCQlB bnVtX3BnX3JhbmdlX3JuZ3R5cGlkKSwKKwkJNAorCX0sCiAJW1JBTkdFVFlQRV0gPSB7CiAJ CVJhbmdlUmVsYXRpb25JZCwKIAkJUmFuZ2VUeXBpZEluZGV4SWQsCmRpZmYgLS1naXQgYS9z cmMvYmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMgYi9zcmMvYmluL3BnX2R1bXAv cGdfYmFja3VwX2FyY2hpdmVyLmMKaW5kZXggMjU2ZDFlMzVhNC4uMGEyNjk2YzU1OSAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jCisrKyBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYwpAQCAtMzUxOCw2ICszNTE4LDcg QEAgX2dldE9iamVjdERlc2NyaXB0aW9uKFBRRXhwQnVmZmVyIGJ1ZiwgY29uc3QgVG9jRW50 cnkgKnRlKQogCQkJIHN0cmNtcCh0eXBlLCAiREFUQUJBU0UgUFJPUEVSVElFUyIpID09IDAg fHwKIAkJCSBzdHJjbXAodHlwZSwgIkRFRkFVTFQiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5 cGUsICJGSyBDT05TVFJBSU5UIikgPT0gMCB8fAorCQkJIHN0cmNtcCh0eXBlLCAiUEVSSU9E IikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiSU5ERVgiKSA9PSAwIHx8CiAJCQkgc3Ry Y21wKHR5cGUsICJSVUxFIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiVFJJR0dFUiIp ID09IDAgfHwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IDYzZmM3YzQ4ODAuLjc3NTM4MzBmN2YgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19k dW1wL3BnX2R1bXAuYwpAQCAtNjM4MSw2ICs2MzgxLDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUg KmZvdXQsIGludCAqbnVtVGFibGVzKQogCWludAkJCWlfcmVsdHlwZTsKIAlpbnQJCQlpX3Jl bG93bmVyOwogCWludAkJCWlfcmVsY2hlY2tzOworCWludAkJCWlfbnBlcmlvZDsKIAlpbnQJ CQlpX3JlbGhhc2luZGV4OwogCWludAkJCWlfcmVsaGFzcnVsZXM7CiAJaW50CQkJaV9yZWxw YWdlczsKQEAgLTY0NTgsNiArNjQ1OSwxNCBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwg aW50ICpudW1UYWJsZXMpCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAogCQkJCQkJ CSAiYy5yZWxoYXNvaWRzLCAiKTsKIAorCS8qIEluIFBHMTYgdXB3YXJkcyB3ZSBoYXZlIFBF UklPRHMuICovCisJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIihTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wZXJpb2QgV0hFUkUgcGVycmVsaWQgPSBjLm9pZCkgQVMgbnBlcmlvZHMsICIpOwor CWVsc2UKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICIwIEFTIG5w ZXJpb2RzLCAiKTsKKwogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDkwMzAwKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaXNwb3B1bGF0ZWQs ICIpOwpAQCAtNjU5NSw2ICs2NjA0LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGlu dCAqbnVtVGFibGVzKQogCWlfcmVsdHlwZSA9IFBRZm51bWJlcihyZXMsICJyZWx0eXBlIik7 CiAJaV9yZWxvd25lciA9IFBRZm51bWJlcihyZXMsICJyZWxvd25lciIpOwogCWlfcmVsY2hl Y2tzID0gUFFmbnVtYmVyKHJlcywgInJlbGNoZWNrcyIpOworCWlfbnBlcmlvZCA9IFBRZm51 bWJlcihyZXMsICJucGVyaW9kcyIpOwogCWlfcmVsaGFzaW5kZXggPSBQUWZudW1iZXIocmVz LCAicmVsaGFzaW5kZXgiKTsKIAlpX3JlbGhhc3J1bGVzID0gUFFmbnVtYmVyKHJlcywgInJl bGhhc3J1bGVzIik7CiAJaV9yZWxwYWdlcyA9IFBRZm51bWJlcihyZXMsICJyZWxwYWdlcyIp OwpAQCAtNjY3OCw2ICs2Njg4LDcgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAq bnVtVGFibGVzKQogCQl9CiAJCXRibGluZm9baV0ucmVsdGFibGVzcGFjZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWx0YWJsZXNwYWNlKSk7CiAJCXRibGluZm9baV0u aGFzb2lkcyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVsaGFzb2lkcyksICJ0 IikgPT0gMCk7CisJCXRibGluZm9baV0ubnBlcmlvZCA9IGF0b2koUFFnZXR2YWx1ZShyZXMs IGksIGlfbnBlcmlvZCkpOwogCQl0YmxpbmZvW2ldLmhhc3RyaWdnZXJzID0gKHN0cmNtcChQ UWdldHZhbHVlKHJlcywgaSwgaV9yZWxoYXN0cmlnZ2VycyksICJ0IikgPT0gMCk7CiAJCXRi bGluZm9baV0ucmVscGVyc2lzdGVuY2UgPSAqKFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbHBl cnNpc3RlbmNlKSk7CiAJCXRibGluZm9baV0ucmVsaXNwb3B1bGF0ZWQgPSAoc3RyY21wKFBR Z2V0dmFsdWUocmVzLCBpLCBpX3JlbGlzcG9wdWxhdGVkKSwgInQiKSA9PSAwKTsKQEAgLTg0 MTYsNyArODQyNyw3IEBAIGdldFRyYW5zZm9ybXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1U cmFuc2Zvcm1zKQogLyoKICAqIGdldFRhYmxlQXR0cnMgLQogICoJICBmb3IgZWFjaCBpbnRl cmVzdGluZyB0YWJsZSwgcmVhZCBpbmZvIGFib3V0IGl0cyBhdHRyaWJ1dGVzCi0gKgkgIChu YW1lcywgdHlwZXMsIGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgZXRjKQor ICoJICAobmFtZXMsIHR5cGVzLCBkZWZhdWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMs IFBFUklPRHMsIGV0YykKICAqCiAgKgltb2RpZmllcyB0YmxpbmZvCiAgKi8KQEAgLTg0Njks NiArODQ4MCw4IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0 YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVz OyBpKyspCiAJewogCQlUYWJsZUluZm8gICp0YmluZm8gPSAmdGJsaW5mb1tpXTsKKwkJaW50 CQkJbmR1bXBhYmxlY2hlY2tzOwkvKiBudW1iZXIgb2YgQ0hFQ0sgY29uc3RyYWludHMgdGhh dCBkbworCQkJCQkJCQkJCSAgIG5vdCBiZWxvbmcgdG8gYSBwZXJpb2QgKi8KIAogCQkvKiBE b24ndCBib3RoZXIgdG8gY29sbGVjdCBpbmZvIGZvciBzZXF1ZW5jZXMgKi8KIAkJaWYgKHRi aW5mby0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKQpAQCAtODQ4Myw3ICs4NDk2LDgg QEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGlu dCBudW1UYWJsZXMpCiAJCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIodGJsb2lkcywgJywnKTsK IAkJYXBwZW5kUFFFeHBCdWZmZXIodGJsb2lkcywgIiV1IiwgdGJpbmZvLT5kb2JqLmNhdElk Lm9pZCk7CiAKLQkJaWYgKHRiaW5mby0+bmNoZWNrID4gMCkKKwkJbmR1bXBhYmxlY2hlY2tz ID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7CisJCWlmIChuZHVtcGFibGVj aGVja3MgPiAwKQogCQl7CiAJCQkvKiBBbHNvIG1ha2UgYSBsaXN0IG9mIHRoZSBvbmVzIHdp dGggY2hlY2sgY29uc3RyYWludHMgKi8KIAkJCWlmIChjaGVja29pZHMtPmxlbiA+IDEpIC8q IGRvIHdlIGhhdmUgbW9yZSB0aGFuIHRoZSAneyc/ICovCkBAIC05MDE5LDE1ICs5MDMzLDM2 IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBp bnQgbnVtVGFibGVzKQogCQlwZ19sb2dfaW5mbygiZmluZGluZyB0YWJsZSBjaGVjayBjb25z dHJhaW50cyIpOwogCiAJCXJlc2V0UFFFeHBCdWZmZXIocSk7Ci0JCWFwcGVuZFBRRXhwQnVm ZmVyKHEsCi0JCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNvbnJlbGlkLCBj b25uYW1lLCAiCi0JCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMu b2lkKSBBUyBjb25zcmMsICIKLQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRlZCAi Ci0JCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9pZFtdKSBBUyBzcmMo dGJsb2lkKVxuIgotCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBP TiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCi0JCQkJCQkgICJXSEVSRSBjb250eXBl ID0gJ2MnICIKLQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29ubmFtZSIsCi0J CQkJCQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49 IDE2MDAwMCkKKwkJeworCQkJLyoKKwkJCSAqIFBFUklPRHMgd2VyZSBhZGRlZCBpbiB2MTcg YW5kIHdlIGRvbid0IGR1bXAgQ0hFQ0sKKwkJCSAqIGNvbnN0cmFpbnRzIGZvciB0aGVtLgor CQkJICovCisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRh Ymxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRh bG9nLnBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkg ICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQgIgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCcl cyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9J TiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVs aWQpXG4iCisJCQkJCQkJICAiV0hFUkUgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJICAiICAg QU5EIE5PVCBFWElTVFMgKFNFTEVDVCBGUk9NIHBnX3BlcmlvZCAiCisJCQkJCQkJICAiICAg ICAgICAgICAgICAgICAgIFdIRVJFIChwZXJyZWxpZCwgcGVyY29uc3RyYWludCkgPSAoY29u cmVsaWQsIGMub2lkKSkgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMuY29ucmVsaWQsIGMuY29u bmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9CisJCWVsc2UKKwkJewor CQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwg Yy5vaWQsIGNvbnJlbGlkLCBjb25uYW1lLCAiCisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19n ZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNs b2NhbCwgY29udmFsaWRhdGVkICIKKwkJCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19j YXRhbG9nLm9pZFtdKSBBUyBzcmModGJsb2lkKVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0 YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgor CQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgorCQkJCQkJCSAgIk9SREVSIEJZIGMu Y29ucmVsaWQsIGMuY29ubmFtZSIsCisJCQkJCQkJICBjaGVja29pZHMtPmRhdGEpOworCQl9 CiAKIAkJcmVzID0gRXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExF U19PSyk7CiAKQEAgLTkwNDksNiArOTA4NCw3IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAq Zm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJT2lkCQkJY29u cmVsaWQgPSBhdG9vaWQoUFFnZXR2YWx1ZShyZXMsIGosIGlfY29ucmVsaWQpKTsKIAkJCVRh YmxlSW5mbyAgKnRiaW5mbyA9IE5VTEw7CiAJCQlpbnQJCQludW1jb25zOworCQkJaW50CQkJ bmR1bXBhYmxlY2hlY2tzOwogCiAJCQkvKiBDb3VudCByb3dzIGZvciB0aGlzIHRhYmxlICov CiAJCQlmb3IgKG51bWNvbnMgPSAxOyBudW1jb25zIDwgbnVtQ29uc3RycyAtIGo7IG51bWNv bnMrKykKQEAgLTkwNjgsMTIgKzkxMDQsMTMgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpm b3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlpZiAoY3VydGJs aW5keCA+PSBudW1UYWJsZXMpCiAJCQkJcGdfZmF0YWwoInVucmVjb2duaXplZCB0YWJsZSBP SUQgJXUiLCBjb25yZWxpZCk7CiAKLQkJCWlmIChudW1jb25zICE9IHRiaW5mby0+bmNoZWNr KQorCQkJbmR1bXBhYmxlY2hlY2tzID0gdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJp b2Q7CisJCQlpZiAobnVtY29ucyAhPSBuZHVtcGFibGVjaGVja3MpCiAJCQl7CiAJCQkJcGdf bG9nX2Vycm9yKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50IG9uIHRh YmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAogCQkJCQkJCQkJICAiZXhwZWN0ZWQgJWQgY2hl Y2sgY29uc3RyYWludHMgb24gdGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCi0JCQkJCQkJ CQkgIHRiaW5mby0+bmNoZWNrKSwKLQkJCQkJCQkgdGJpbmZvLT5uY2hlY2ssIHRiaW5mby0+ ZG9iai5uYW1lLCBudW1jb25zKTsKKwkJCQkJCQkJCSAgbmR1bXBhYmxlY2hlY2tzKSwKKwkJ CQkJCQkgbmR1bXBhYmxlY2hlY2tzLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29ucyk7CiAJ CQkJcGdfbG9nX2Vycm9yX2hpbnQoIlRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUgY29y cnVwdGVkLiIpOwogCQkJCWV4aXRfbmljZWx5KDEpOwogCQkJfQpAQCAtOTEzMiw2ICs5MTY5 LDc5IEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZv LCBpbnQgbnVtVGFibGVzKQogCQlQUWNsZWFyKHJlcyk7CiAJfQogCisJZm9yIChpbnQgaSA9 IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKKwl7CisJCVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0 YmxpbmZvW2ldOworCisJCS8qCisJCSAqIEdldCBpbmZvIGFib3V0IFBFUklPRCBkZWZpbml0 aW9ucworCQkgKi8KKwkJaWYgKHRiaW5mby0+bnBlcmlvZCA+IDApCisJCXsKKwkJCVBlcmlv ZEluZm8gKnBlcmlvZHM7CisJCQlpbnQJCQludW1QZXJpb2RzOworCQkJaW50CQkJajsKKwor CQkJLyogV2Ugc2hvdWxkbid0IGhhdmUgYW55IHBlcmlvZHMgYmVmb3JlIHYxNyAqLworCQkJ QXNzZXJ0KGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKTsKKworCQkJcGdfbG9nX2lu Zm8oImZpbmRpbmcgcGVyaW9kcyBmb3IgdGFibGUgXCIlcy4lc1wiIiwKKwkJCQkJCXRiaW5m by0+ZG9iai5uYW1lc3BhY2UtPmRvYmoubmFtZSwKKwkJCQkJCXRiaW5mby0+ZG9iai5uYW1l KTsKKworCQkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKKwkJCWFwcGVuZFBRRXhwQnVmZmVyKHEs CisJCQkJIlNFTEVDVCBwLnRhYmxlb2lkLCBwLm9pZCwgcC5wZXJuYW1lLCAiCisJCQkJIiAg ICAgICBzYS5hdHRuYW1lIEFTIHBlcnN0YXJ0LCBlYS5hdHRuYW1lIEFTIHBlcmVuZCwgIgor CQkJCSIgICAgICAgci50eXBuYW1lIEFTIHJuZ3R5cGUsICIKKwkJCQkiICAgICAgIGMuY29u bmFtZSBBUyBjb25uYW1lICIKKwkJCQkiRlJPTSBwZ19jYXRhbG9nLnBnX3BlcmlvZCBBUyBw ICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2EuYXR0 cmVsaWQsIHNhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkgIgorCQkJCSJK T0lOIHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIGVhIE9OIChlYS5hdHRyZWxpZCwgZWEu YXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZCkgIgorCQkJCSJKT0lOIHBnX2NhdGFs b2cucGdfdHlwZSBBUyByIE9OIHIub2lkID0gcC5wZXJybmd0eXBlICIKKwkJCQkiSk9JTiBw Z19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgQVMgYyBPTiBjLm9pZCA9IHAucGVyY29uc3RyYWlu dCAiCisJCQkJIldIRVJFIHAucGVycmVsaWQgPSAnJXUnOjpwZ19jYXRhbG9nLm9pZCAiCisJ CQkJIk9SREVSIEJZIHAucGVybmFtZSIsCisJCQkJdGJpbmZvLT5kb2JqLmNhdElkLm9pZCk7 CisKKwkJCXJlcyA9IEV4ZWN1dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBM RVNfT0spOworCisJCQkvKgorCQkJICogSWYgd2UgZGlkbid0IGdldCB0aGUgbnVtYmVyIG9m IHJvd3Mgd2UgdGhvdWdodCB3ZSB3ZXJlIGdvaW5nIHRvLAorCQkJICogdGhlbiB0aG9zZSBK T0lOcyBkaWRuJ3Qgd29yay4KKwkJCSAqLworCQkJbnVtUGVyaW9kcyA9IFBRbnR1cGxlcyhy ZXMpOworCQkJaWYgKG51bVBlcmlvZHMgIT0gdGJpbmZvLT5ucGVyaW9kKQorCQkJeworCQkJ CXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJleHBlY3RlZCAlZCBwZXJpb2Qgb24gdGFibGUgXCIl c1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJCQkgImV4cGVjdGVkICVkIHBlcmlvZHMgb24g dGFibGUgXCIlc1wiIGJ1dCBmb3VuZCAlZCIsCisJCQkJCQkJCQkgdGJpbmZvLT5ucGVyaW9k KSwKKwkJCQkJCQl0YmluZm8tPm5wZXJpb2QsIHRiaW5mby0+ZG9iai5uYW1lLCBudW1QZXJp b2RzKTsKKwkJCQlwZ19sb2dfaW5mbygiKFRoZSBzeXN0ZW0gY2F0YWxvZ3MgbWlnaHQgYmUg Y29ycnVwdGVkLikiKTsKKwkJCQlleGl0X25pY2VseSgxKTsKKwkJCX0KKworCQkJcGVyaW9k cyA9IChQZXJpb2RJbmZvICopIHBnX21hbGxvYyhudW1QZXJpb2RzICogc2l6ZW9mKFBlcmlv ZEluZm8pKTsKKwkJCXRiaW5mby0+cGVyaW9kcyA9IHBlcmlvZHM7CisKKwkJCWZvciAoaiA9 IDA7IGogPCBudW1QZXJpb2RzOyBqKyspCisJCQl7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm9i alR5cGUgPSBET19QRVJJT0Q7CisJCQkJcGVyaW9kc1tqXS5kb2JqLmNhdElkLnRhYmxlb2lk ID0gYXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAwKSk7CisJCQkJcGVyaW9kc1tqXS5kb2Jq LmNhdElkLm9pZCA9IGF0b29pZChQUWdldHZhbHVlKHJlcywgaiwgMSkpOworCQkJCUFzc2ln bkR1bXBJZCgmcGVyaW9kc1tqXS5kb2JqKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZSA9 IHBnX3N0cmR1cChQUWdldHZhbHVlKHJlcywgaiwgMikpOworCQkJCXBlcmlvZHNbal0uZG9i ai5uYW1lc3BhY2UgPSB0YmluZm8tPmRvYmoubmFtZXNwYWNlOworCQkJCXBlcmlvZHNbal0u cGVydGFibGUgPSB0YmluZm87CisJCQkJcGVyaW9kc1tqXS5wZXJzdGFydCA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaiwgMykpOworCQkJCXBlcmlvZHNbal0ucGVyZW5kID0gcGdf c3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA0KSk7CisJCQkJcGVyaW9kc1tqXS5ybmd0eXBl ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA1KSk7CisJCQkJcGVyaW9kc1tqXS5j b25uYW1lID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUocmVzLCBqLCA2KSk7CisJCQl9CisJCQlQ UWNsZWFyKHJlcyk7CisJCX0KKwl9CisKIAlkZXN0cm95UFFFeHBCdWZmZXIocSk7CiAJZGVz dHJveVBRRXhwQnVmZmVyKHRibG9pZHMpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihjaGVja29p ZHMpOwpAQCAtMTA0MDIsNiArMTA1MTIsOCBAQCBkdW1wRHVtcGFibGVPYmplY3QoQXJjaGl2 ZSAqZm91dCwgRHVtcGFibGVPYmplY3QgKmRvYmopCiAJCWNhc2UgRE9fRktfQ09OU1RSQUlO VDoKIAkJCWR1bXBDb25zdHJhaW50KGZvdXQsIChjb25zdCBDb25zdHJhaW50SW5mbyAqKSBk b2JqKTsKIAkJCWJyZWFrOworCQljYXNlIERPX1BFUklPRDoKKwkJCWJyZWFrOwogCQljYXNl IERPX1BST0NMQU5HOgogCQkJZHVtcFByb2NMYW5nKGZvdXQsIChjb25zdCBQcm9jTGFuZ0lu Zm8gKikgZG9iaik7CiAJCQlicmVhazsKQEAgLTE1OTM3LDYgKzE2MDQ5LDMyIEBAIGR1bXBU YWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJ CQl9CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBBZGQgbm9uLWluaGVyaXRlZCBQRVJJT0QgZGVm aW5pdGlvbnMsIGlmIGFueS4KKwkJCSAqLworCQkJZm9yIChqID0gMDsgaiA8IHRiaW5mby0+ bnBlcmlvZDsgaisrKQorCQkJeworCQkJCVBlcmlvZEluZm8gKnBlcmlvZCA9ICYodGJpbmZv LT5wZXJpb2RzW2pdKTsKKworCQkJCWNoYXIJICAgKm5hbWUgPSBwZ19zdHJkdXAoZm10SWQo cGVyaW9kLT5kb2JqLm5hbWUpKTsKKwkJCQljaGFyCSAgICpzdGFydCA9IHBnX3N0cmR1cChm bXRJZChwZXJpb2QtPnBlcnN0YXJ0KSk7CisJCQkJY2hhcgkgICAqZW5kID0gcGdfc3RyZHVw KGZtdElkKHBlcmlvZC0+cGVyZW5kKSk7CisJCQkJY2hhcgkgICAqcm5ndHlwZSA9IHBnX3N0 cmR1cChmbXRJZChwZXJpb2QtPnJuZ3R5cGUpKTsKKwkJCQljaGFyCSAgICpjb25uYW1lID0g cGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+Y29ubmFtZSkpOworCisJCQkJaWYgKGFjdHVhbF9h dHRzID09IDApCisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHEsICIgKFxuICAgICIpOwor CQkJCWVsc2UKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIixcbiAgICAiKTsKKwor CQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICJQRVJJT0QgRk9SICVzICglcywgJXMpICIKKwkJ CQkJCSJXSVRIIChyYW5nZXR5cGUgPSAlcywgY2hlY2tfY29uc3RyYWludF9uYW1lID0gJXMp IiwKKwkJCQkJCQkJICBuYW1lLCBzdGFydCwgZW5kLAorCQkJCQkJCQkgIHJuZ3R5cGUsIGNv bm5hbWUpOworCisJCQkJYWN0dWFsX2F0dHMrKzsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIEFk ZCBub24taW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnRzLCBpZiBhbnkuCiAJCQkgKgpAQCAt MTU5NDUsNyArMTYwODMsNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29u c3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBQQVJUSVRJT04gdGhhdCB3ZSdsbCBlbWl0 IGxhdGVyIGV4cGVjdHMgdGhlIGNvbnN0cmFpbnQgdG8gYmUKIAkJCSAqIHRoZXJlLiAgKE5v IG5lZWQgdG8gZml4IGNvbmlzbG9jYWw6IEFUVEFDSCBQQVJUSVRJT04gZG9lcyB0aGF0KQog CQkJICovCi0JCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2s7IGorKykKKwkJCWZv ciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaisrKQog CQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tleHBy c1tqXSk7CiAKQEAgLTE2MTYzLDcgKzE2MzAxLDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hp dmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJICogRm9yIHBhcnRpdGlv bnMsIHRoZXkgd2VyZSBhbHJlYWR5IGR1bXBlZCwgYW5kIGNvbmlzbG9jYWwKIAkJCSAqIGRv ZXNuJ3QgbmVlZCBmaXhpbmcuCiAJCQkgKi8KLQkJCWZvciAoayA9IDA7IGsgPCB0YmluZm8t Pm5jaGVjazsgaysrKQorCQkJZm9yIChrID0gMDsgayA8IHRiaW5mby0+bmNoZWNrIC0gdGJp bmZvLT5ucGVyaW9kOyBrKyspCiAJCQl7CiAJCQkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9 ICYodGJpbmZvLT5jaGVja2V4cHJzW2tdKTsKIApAQCAtMTY0NjUsNyArMTY2MDMsNyBAQCBk dW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8p CiAJCWR1bXBUYWJsZVNlY0xhYmVsKGZvdXQsIHRiaW5mbywgcmVsdHlwZW5hbWUpOwogCiAJ LyogRHVtcCBjb21tZW50cyBvbiBpbmxpbmVkIHRhYmxlIGNvbnN0cmFpbnRzICovCi0JZm9y IChqID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJZm9yIChqID0gMDsgaiA8IHRi aW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJewogCQlDb25zdHJhaW50 SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0pOwogCkBAIC0xODU1MCw2 ICsxODY4OCw3IEBAIGFkZEJvdW5kYXJ5RGVwZW5kZW5jaWVzKER1bXBhYmxlT2JqZWN0ICoq ZG9ianMsIGludCBudW1PYmpzLAogCQkJY2FzZSBET19UUklHR0VSOgogCQkJY2FzZSBET19F VkVOVF9UUklHR0VSOgogCQkJY2FzZSBET19ERUZBVUxUX0FDTDoKKwkJCWNhc2UgRE9fUEVS SU9EOgogCQkJY2FzZSBET19QT0xJQ1k6CiAJCQljYXNlIERPX1BVQkxJQ0FUSU9OOgogCQkJ Y2FzZSBET19QVUJMSUNBVElPTl9SRUw6CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5oIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAppbmRleCAxMDYwNWVjYWM1 Li45MTdjNzAwYTU3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKQEAgLTU5LDYgKzU5LDcgQEAgdHlwZWRl ZiBlbnVtCiAJRE9fVFJJR0dFUiwKIAlET19DT05TVFJBSU5ULAogCURPX0ZLX0NPTlNUUkFJ TlQsCQkJLyogc2VlIG5vdGUgZm9yIENvbnN0cmFpbnRJbmZvICovCisJRE9fUEVSSU9ELAog CURPX1BST0NMQU5HLAogCURPX0NBU1QsCiAJRE9fVEFCTEVfREFUQSwKQEAgLTI5OSwxMiAr MzAwLDE0IEBAIHR5cGVkZWYgc3RydWN0IF90YWJsZUluZm8KIAlib29sCQlyb3dzZWM7CQkJ LyogaXMgcm93IHNlY3VyaXR5IGVuYWJsZWQ/ICovCiAJYm9vbAkJZm9yY2Vyb3dzZWM7CS8q IGlzIHJvdyBzZWN1cml0eSBmb3JjZWQ/ICovCiAJYm9vbAkJaGFzb2lkczsJCS8qIGRvZXMg aXQgaGF2ZSBPSURzPyAqLworCWJvb2wJCWhhc3BlcmlvZHM7CQkvKiBkb2VzIGl0IGhhdmUg YW55IHBlcmlvZHM/ICovCiAJdWludDMyCQlmcm96ZW54aWQ7CQkvKiB0YWJsZSdzIHJlbGZy b3plbnhpZCAqLwogCXVpbnQzMgkJbWlubXhpZDsJCS8qIHRhYmxlJ3MgcmVsbWlubXhpZCAq LwogCU9pZAkJCXRvYXN0X29pZDsJCS8qIHRvYXN0IHRhYmxlJ3MgT0lELCBvciAwIGlmIG5v bmUgKi8KIAl1aW50MzIJCXRvYXN0X2Zyb3plbnhpZDsJLyogdG9hc3QgdGFibGUncyByZWxm cm96ZW54aWQsIGlmIGFueSAqLwogCXVpbnQzMgkJdG9hc3RfbWlubXhpZDsJLyogdG9hc3Qg dGFibGUncyByZWxtaW5teGlkICovCiAJaW50CQkJbmNoZWNrOwkJCS8qICMgb2YgQ0hFQ0sg ZXhwcmVzc2lvbnMgKi8KKwlpbnQJCQlucGVyaW9kOwkJLyogIyBvZiBQRVJJT0QgZGVmaW5p dGlvbnMgKi8KIAlPaWQJCQlyZWx0eXBlOwkJLyogT0lEIG9mIHRhYmxlJ3MgY29tcG9zaXRl IHR5cGUsIGlmIGFueSAqLwogCU9pZAkJCXJlbG9mdHlwZTsJCS8qIHVuZGVybHlpbmcgdHlw ZSBmb3IgdHlwZWQgdGFibGUgKi8KIAlPaWQJCQlmb3JlaWduX3NlcnZlcjsgLyogZm9yZWln biBzZXJ2ZXIgb2lkLCBpZiBhcHBsaWNhYmxlICovCkBAIC0zNTQsNiArMzU3LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJICAgKm5vdG51bGxfaW5oOwkvKiB0cnVl IGlmIE5PVCBOVUxMIGhhcyBubyBsb2NhbCBkZWZpbml0aW9uICovCiAJc3RydWN0IF9hdHRy RGVmSW5mbyAqKmF0dHJkZWZzOyAvKiBERUZBVUxUIGV4cHJlc3Npb25zICovCiAJc3RydWN0 IF9jb25zdHJhaW50SW5mbyAqY2hlY2tleHByczsgLyogQ0hFQ0sgY29uc3RyYWludHMgKi8K KwlzdHJ1Y3QgX3BlcmlvZEluZm8gKnBlcmlvZHM7CS8qIFBFUklPRCBkZWZpbml0aW9ucyAq LwogCWJvb2wJCW5lZWRzX292ZXJyaWRlOyAvKiBoYXMgR0VORVJBVEVEIEFMV0FZUyBBUyBJ REVOVElUWSAqLwogCWNoYXIJICAgKmFtbmFtZTsJCQkvKiByZWxhdGlvbiBhY2Nlc3MgbWV0 aG9kICovCiAKQEAgLTQ5Myw2ICs0OTcsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFp bnRJbmZvCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBh cmF0ZSBpdGVtICovCiB9IENvbnN0cmFpbnRJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBfcGVy aW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJVGFibGVJbmZvICAqcGVydGFi bGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0aGUgbmFtZSBvZiB0aGUgc3RhcnQgY29s dW1uICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRoZSBuYW1lIG9mIHRoZSBlbmQgY29s dW1uICovCisJY2hhcgkgICAqcm5ndHlwZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSByYW5nZSB0 eXBlICovCisJY2hhcgkgICAqY29ubmFtZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSBDSEVDSyBj b25zdHJhaW50ICovCit9IFBlcmlvZEluZm87CisKIHR5cGVkZWYgc3RydWN0IF9wcm9jTGFu Z0luZm8KIHsKIAlEdW1wYWJsZU9iamVjdCBkb2JqOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5j CmluZGV4IGFiZmVhMTVjMDkuLjgzMjRmNTAyZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0 LmMKQEAgLTg1LDYgKzg1LDcgQEAgZW51bSBkYk9iamVjdFR5cGVQcmlvcml0aWVzCiAJUFJJ T19DT05TVFJBSU5ULAogCVBSSU9fSU5ERVgsCiAJUFJJT19JTkRFWF9BVFRBQ0gsCisJUFJJ T19QRVJJT0QsCiAJUFJJT19TVEFUU0VYVCwKIAlQUklPX1JVTEUsCiAJUFJJT19UUklHR0VS LApAQCAtMTE5LDYgKzEyMCw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJp b3JpdHlbXSA9CiAJUFJJT19BVFRSREVGLAkJCQkvKiBET19BVFRSREVGICovCiAJUFJJT19J TkRFWCwJCQkJCS8qIERPX0lOREVYICovCiAJUFJJT19JTkRFWF9BVFRBQ0gsCQkJLyogRE9f SU5ERVhfQVRUQUNIICovCisJUFJJT19QRVJJT0QsCQkJCS8qIERPX1BFUklPRCAqLwogCVBS SU9fU1RBVFNFWFQsCQkJCS8qIERPX1NUQVRTRVhUICovCiAJUFJJT19SVUxFLAkJCQkJLyog RE9fUlVMRSAqLwogCVBSSU9fVFJJR0dFUiwJCQkJLyogRE9fVFJJR0dFUiAqLwpAQCAtMTM2 OCw2ICsxMzcwLDExIEBAIGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3Qg Km9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJGSyBDT05TVFJBSU5UICVz ICAoSUQgJWQgT0lEICV1KSIsCiAJCQkJCSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmot PmNhdElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9fUEVSSU9EOgorCQkJc25wcmlu dGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlBFUklPRCAlcyAgKElEICVkIE9JRCAldSkiLAor CQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOworCQkJcmV0 dXJuOwogCQljYXNlIERPX1BST0NMQU5HOgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAog CQkJCQkgIlBST0NFRFVSQUwgTEFOR1VBR0UgJXMgIChJRCAlZCBPSUQgJXUpIiwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggNjFkNjQ1MmI1My4uM2JhMTZkNjdmZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE5NDMs NiArMTk0Myw4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiXG5GUk9NIHBnX2NhdGFs b2cucGdfYXR0cmlidXRlIGEiKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiXG5XSEVS RSBhLmF0dHJlbGlkID0gJyVzJyBBTkQgYS5hdHRudW0gPiAwIEFORCBOT1QgYS5hdHRpc2Ry b3BwZWQiLCBvaWQpOworCWlmIChwc2V0LnN2ZXJzaW9uID49IDE3MDAwMCkKKwkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwgIlxuQU5EIE5PVCBFWElTVFMgKFNFTEVDVCAxIEZST00gcGdf Y2F0YWxvZy5wZ19wZXJpb2QgcCBXSEVSRSBwLnBlcnJlbGlkID0gYS5hdHRyZWxpZCBBTkQg cC5wZXJyYW5nZSA9IGEuYXR0bnVtKSIpOwogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs ICJcbk9SREVSIEJZIGEuYXR0bnVtOyIpOwogCiAJcmVzID0gUFNRTGV4ZWMoYnVmLmRhdGEp OwpAQCAtMjM2NSw2ICsyMzY3LDQwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0 IGNoYXIgKnNjaGVtYW5hbWUsCiAJCVBHcmVzdWx0ICAgKnJlc3VsdCA9IE5VTEw7CiAJCWlu dAkJCXR1cGxlcyA9IDA7CiAKKwkJLyogcHJpbnQgcGVyaW9kcyAqLworCQlpZiAocHNldC5z dmVyc2lvbiA+PSAxNzAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsCisJ CQkJCQkJICAiU0VMRUNUIHF1b3RlX2lkZW50KHAucGVybmFtZSksIHF1b3RlX2lkZW50KHMu YXR0bmFtZSkgQVMgc3RhcnRhdHQsIHF1b3RlX2lkZW50KGUuYXR0bmFtZSkgQVMgZW5kYXR0 XG4iCisJCQkJCQkJICAiRlJPTSBwZ19wZXJpb2QgQVMgcFxuIgorCQkJCQkJCSAgIkpPSU4g cGdfYXR0cmlidXRlIEFTIHMgT04gKHMuYXR0cmVsaWQsIHMuYXR0bnVtKSA9IChwLnBlcnJl bGlkLCBwLnBlcnN0YXJ0KVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIGUg T04gKGUuYXR0cmVsaWQsIGUuYXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcmVuZClcbiIK KwkJCQkJCQkgICJXSEVSRSBwLnBlcnJlbGlkID0gJyVzJ1xuIgorCQkJCQkJCSAgIk9SREVS IEJZIDE7IiwKKwkJCQkJCQkgIG9pZCk7CisJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYuZGF0 YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCWVsc2UK KwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKworCQkJaWYgKHR1cGxlcyA+IDAp CisJCQl7CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgXygiUGVyaW9kczoiKSk7 CisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQorCQkJCXsKKwkJCQkJLyogdW50 cmFuc2xhdGVkIGNvbnN0cmFpbnQgbmFtZSBhbmQgZGVmICovCisJCQkJCXByaW50ZlBRRXhw QnVmZmVyKCZidWYsICIgICAgJXMgKCVzLCAlcykiLAorCQkJCQkJCQkJICBQUWdldHZhbHVl KHJlc3VsdCwgaSwgMCksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxKSwK KwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIpKTsKKworCQkJCQlwcmludFRh YmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQkJfQorCQkJfQorCQkJUFFjbGVh cihyZXN1bHQpOworCQl9CisKIAkJLyogcHJpbnQgaW5kZXhlcyAqLwogCQlpZiAodGFibGVp bmZvLmhhc2luZGV4KQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2Rl cGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCmluZGV4IGFi YWMwZjZkYTUuLmRhZWNmNDQ2NzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cv ZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCkBA IC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RDbGFzcwogCU9DTEFTU19DQVNU LAkJCQkvKiBwZ19jYXN0ICovCiAJT0NMQVNTX0NPTExBVElPTiwJCQkvKiBwZ19jb2xsYXRp b24gKi8KIAlPQ0xBU1NfQ09OU1RSQUlOVCwJCQkvKiBwZ19jb25zdHJhaW50ICovCisJT0NM QVNTX1BFUklPRCwJCQkJLyogcGdfcGVyaW9kICovCiAJT0NMQVNTX0NPTlZFUlNJT04sCQkJ LyogcGdfY29udmVyc2lvbiAqLwogCU9DTEFTU19ERUZBVUxULAkJCQkvKiBwZ19hdHRyZGVm ICovCiAJT0NMQVNTX0xBTkdVQUdFLAkJCS8qIHBnX2xhbmd1YWdlICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVh cC5oCmluZGV4IDUxZjdiMTJhYTMuLjFmNjQ2ZjNkM2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCkBA IC0xMjEsNiArMTIxLDEwIEBAIGV4dGVybiBMaXN0ICpBZGRSZWxhdGlvbk5vdE51bGxDb25z dHJhaW50cyhSZWxhdGlvbiByZWwsCiBleHRlcm4gdm9pZCBSZWxhdGlvbkNsZWFyTWlzc2lu ZyhSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgU2V0QXR0ck1pc3NpbmcoT2lkIHJlbGlk LCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSk7CiAKK2V4dGVybiBPaWQgU3RvcmVQZXJp b2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2QsCisJCQkJCSAgIEF0dHJOdW1i ZXIgc3RhcnRudW0sIEF0dHJOdW1iZXIgZW5kbnVtLAorCQkJCQkgICBBdHRyTnVtYmVyIHJh bmdlbnVtLCBPaWQgY29ub2lkKTsKKwogZXh0ZXJuIE5vZGUgKmNvb2tEZWZhdWx0KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSBOb2RlICpyYXdfZGVmYXVsdCwKIAkJCQkJCSBPaWQg YXR0dHlwaWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxk IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRleCBkY2IzYzVmNzY2Li4x OTQzNzI5MWE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29uLmJ1aWxk CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQKQEAgLTYxLDYgKzYxLDcg QEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfY29sbGF0aW9uLmgnLAogICAncGdfcGFy YW1ldGVyX2FjbC5oJywKICAgJ3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgnLAorICAncGdfcGVy aW9kLmgnLAogICAncGdfcmFuZ2UuaCcsCiAgICdwZ190cmFuc2Zvcm0uaCcsCiAgICdwZ19z ZXF1ZW5jZS5oJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXgu aCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaAppbmRleCAzMjkzMDQxMWI2Li5h NGUwMmRkY2E3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmgK KysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5oCkBAIC00OCw3ICs0OCw2IEBA IENBVEFMT0cocGdfaW5kZXgsMjYxMCxJbmRleFJlbGF0aW9uSWQpIEJLSV9TQ0hFTUFfTUFD Uk8KIAkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUsIGJ1dCB3ZSBhbGxv dyBkaXJlY3QgYWNjZXNzIHRvIGluZGtleSAqLwogCWludDJ2ZWN0b3IJaW5ka2V5IEJLSV9G T1JDRV9OT1RfTlVMTDsJLyogY29sdW1uIG51bWJlcnMgb2YgaW5kZXhlZCBjb2xzLAogCQkJ CQkJCQkJCQkgKiBvciAwICovCi0KICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgogCW9pZHZlY3Rv cglpbmRjb2xsYXRpb24gQktJX0xPT0tVUF9PUFQocGdfY29sbGF0aW9uKSBCS0lfRk9SQ0Vf Tk9UX05VTEw7CS8qIGNvbGxhdGlvbiBpZGVudGlmaWVycyAqLwogCW9pZHZlY3RvcglpbmRj bGFzcyBCS0lfTE9PS1VQKHBnX29wY2xhc3MpIEJLSV9GT1JDRV9OT1RfTlVMTDsgLyogb3Bj bGFzcyBpZGVudGlmaWVycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wZXJpb2QuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDJjZmZhMDdiYwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKQEAgLTAsMCArMSw1NCBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcGVyaW9kLmgKKyAqCSAgZGVm aW5pdGlvbiBvZiB0aGUgInBlcmlvZCIgc3lzdGVtIGNhdGFsb2cgKHBnX3BlcmlvZCkKKyAq CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wZXJpb2QuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSBy ZWFkcyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgor ICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1BFUklPRF9ICisj ZGVmaW5lIFBHX1BFUklPRF9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kX2QuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLQor ICoJCXBnX3BlcmlvZCBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5 cGVkZWYgc3RydWN0IEZvcm1EYXRhX3BnX3BlcmlvZAorICogLS0tLS0tLS0tLS0tLS0tLQor ICovCitDQVRBTE9HKHBnX3BlcmlvZCw4MDAwLFBlcmlvZFJlbGF0aW9uSWQpCit7CisJT2lk CQkJb2lkOwkJCS8qIE9JRCBvZiB0aGUgcGVyaW9kICovCisJTmFtZURhdGEJcGVybmFtZTsJ CS8qIG5hbWUgb2YgcGVyaW9kICovCisJT2lkCQkJcGVycmVsaWQ7CQkvKiBPSUQgb2YgcmVs YXRpb24gY29udGFpbmluZyB0aGlzIHBlcmlvZCAqLworCWludDE2CQlwZXJzdGFydDsJCS8q IGNvbHVtbiBmb3Igc3RhcnQgdmFsdWUgKi8KKwlpbnQxNgkJcGVyZW5kOwkJCS8qIGNvbHVt biBmb3IgZW5kIHZhbHVlICovCisJaW50MTYJCXBlcnJhbmdlOwkJLyogY29sdW1uIGZvciBy YW5nZSB2YWx1ZSAqLworCU9pZAkJCXBlcmNvbnN0cmFpbnQ7CS8qIE9JRCBvZiAoc3RhcnQg PCBlbmQpIGNvbnN0cmFpbnQgKi8KK30gRm9ybURhdGFfcGdfcGVyaW9kOworCisvKiAtLS0t LS0tLS0tLS0tLS0tCisgKgkJRm9ybV9wZ19wZXJpb2QgY29ycmVzcG9uZHMgdG8gYSBwb2lu dGVyIHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfcGVyaW9kIHJlbGF0 aW9uLgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3Bl cmlvZCAqRm9ybV9wZ19wZXJpb2Q7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdf cGVyaW9kX29pZF9pbmRleCwgODAwMSwgUGVyaW9kT2JqZWN0SW5kZXhJZCwgcGdfcGVyaW9k LCBidHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcGVyaW9k X3BlcnJlbGlkX3Blcm5hbWVfaW5kZXgsIDgwMDIsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQs IHBnX3BlcmlvZCwgYnRyZWUocGVycmVsaWQgb2lkX29wcywgcGVybmFtZSBuYW1lX29wcykp OworCitleHRlcm4gdm9pZCBSZW1vdmVQZXJpb2RCeUlkKE9pZCBwZXJpb2RJZCk7CisKK2V4 dGVybiBPaWQgZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFy ICpwZXJuYW1lLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X3Bl cmlvZF9hdHRub3MoT2lkIHJlbGlkKTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BFUklPRF9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggYi9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKaW5kZXggMTI0N2ZhN2M3Ny4uN2VkMDE0Yjcx ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVm IEZvcm1EYXRhX3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwogCiBERUNMQVJFX1VOSVFVRV9J TkRFWF9QS0VZKHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAzNTQyLCBSYW5nZVR5cGlkSW5k ZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ3R5cGlkIG9pZF9vcHMpKTsKIERFQ0xBUkVfVU5J UVVFX0lOREVYKHBnX3JhbmdlX3JuZ211bHRpdHlwaWRfaW5kZXgsIDIyMjgsIFJhbmdlTXVs dGlyYW5nZVR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ211bHRpdHlwaWQgb2lk X29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nc3VidHlwZV9ybmd0 eXBpZF9pbmRleCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwgcGdfcmFuZ2Us IGJ0cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQgb2lkX29wcykpOwogCiAvKgog ICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3JhbmdlLmMKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdGFibGVjbWRzLmgKaW5kZXggODJhMTQ0NGQzNC4uODg1NGZkOTczYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdGFibGVjbWRzLmgKQEAgLTQwLDcgKzQwLDggQEAgZXh0ZXJuIExPQ0tNT0RF IEFsdGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcyk7CiAKIGV4dGVybiB2b2lkIEFU RXhlY0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJvb2wg cmVjdXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKLWV4dGVybiB2b2lkIEFsdGVyVGFi bGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSk7CitleHRl cm4gdm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29s IHJlY3Vyc2UsCisJCQkJCQkJICAgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAq Y29udGV4dCk7CiAKIGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1v dmVBbGxTdG10ICpzdG10KTsKIApAQCAtMTA4LDUgKzEwOSw2IEBAIGV4dGVybiBib29sIFBh cnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2FucmVsLAog ZXh0ZXJuIHZvaWQgRmluZEZLUGVyaW9kT3BlcnNBbmRQcm9jcyhPaWQgb3BjbGFzcywKIAkJ CQkJCQkJCSAgT2lkICpwZXJpb2RvcGVyb2lkLAogCQkJCQkJCQkJICBPaWQgKnBlcmlvZHBy b2NvaWQpOworZXh0ZXJuIE9pZCBjaG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QoUGVyaW9k RGVmICpwZXJpb2QpOwogCiAjZW5kaWYJCQkJCQkJLyogVEFCTEVDTURTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaAppbmRleCBkMTMwNDQ1ODAwLi41NmMxOWJlYWUxIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCkBAIC0yMTQxLDYgKzIxNDEsNyBAQCB0eXBlZGVmIGVudW0g T2JqZWN0VHlwZQogCU9CSkVDVF9PUEVSQVRPUiwKIAlPQkpFQ1RfT1BGQU1JTFksCiAJT0JK RUNUX1BBUkFNRVRFUl9BQ0wsCisJT0JKRUNUX1BFUklPRCwKIAlPQkpFQ1RfUE9MSUNZLAog CU9CSkVDVF9QUk9DRURVUkUsCiAJT0JKRUNUX1BVQkxJQ0FUSU9OLApAQCAtMjIyOCw2ICsy MjI5LDggQEAgdHlwZWRlZiBlbnVtIEFsdGVyVGFibGVUeXBlCiAJQVRfVmFsaWRhdGVDb25z dHJhaW50LAkJLyogdmFsaWRhdGUgY29uc3RyYWludCAqLwogCUFUX0FkZEluZGV4Q29uc3Ry YWludCwJCS8qIGFkZCBjb25zdHJhaW50IHVzaW5nIGV4aXN0aW5nIGluZGV4ICovCiAJQVRf RHJvcENvbnN0cmFpbnQsCQkJLyogZHJvcCBjb25zdHJhaW50ICovCisJQVRfQWRkUGVyaW9k LAkJCQkvKiBBREQgUEVSSU9EICovCisJQVRfRHJvcFBlcmlvZCwJCQkJLyogRFJPUCBQRVJJ T0QgKi8KIAlBVF9SZUFkZENvbW1lbnQsCQkJLyogaW50ZXJuYWwgdG8gY29tbWFuZHMvdGFi bGVjbWRzLmMgKi8KIAlBVF9BbHRlckNvbHVtblR5cGUsCQkJLyogYWx0ZXIgY29sdW1uIHR5 cGUgKi8KIAlBVF9BbHRlckNvbHVtbkdlbmVyaWNPcHRpb25zLAkvKiBhbHRlciBjb2x1bW4g T1BUSU9OUyAoLi4uKSAqLwpAQCAtMjQ5NCwxMSArMjQ5NywxMSBAQCB0eXBlZGVmIHN0cnVj dCBWYXJpYWJsZVNob3dTdG10CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJQ3Jl YXRlIFRhYmxlIFN0YXRlbWVudAogICoKLSAqIE5PVEU6IGluIHRoZSByYXcgZ3JhbS55IG91 dHB1dCwgQ29sdW1uRGVmIGFuZCBDb25zdHJhaW50IG5vZGVzIGFyZQotICogaW50ZXJtaXhl ZCBpbiB0YWJsZUVsdHMsIGFuZCBjb25zdHJhaW50cyBhbmQgbm5jb25zdHJhaW50cyBhcmUg TklMLiAgQWZ0ZXIKLSAqIHBhcnNlIGFuYWx5c2lzLCB0YWJsZUVsdHMgY29udGFpbnMganVz dCBDb2x1bW5EZWZzLCBubmNvbnN0cmFpbnRzIGNvbnRhaW5zCi0gKiBDb25zdHJhaW50IG5v ZGVzIG9mIENPTlNUUl9OT1ROVUxMIHR5cGUgZnJvbSB2YXJpb3VzIHNvdXJjZXMsIGFuZAot ICogY29uc3RyYWludHMgY29udGFpbnMganVzdCBDT05TVFJfQ0hFQ0sgQ29uc3RyYWludCBu b2Rlcy4KKyAqIE5PVEU6IGluIHRoZSByYXcgZ3JhbS55IG91dHB1dCwgQ29sdW1uRGVmLCBQ ZXJpb2REZWYsIGFuZCBDb25zdHJhaW50IG5vZGVzIGFyZQorICogaW50ZXJtaXhlZCBpbiB0 YWJsZUVsdHM7IHBlcmlvZHMsIGNvbnN0cmFpbnRzLCBhbmQgbm5jb25zdHJhaW50cyBhcmUg TklMLiAgQWZ0ZXIKKyAqIHBhcnNlIGFuYWx5c2lzLCB0YWJsZUVsdHMgY29udGFpbnMganVz dCBDb2x1bW5EZWZzLCBwZXJpb2RzIGNvbnRhaW5zIGp1c3QgUGVyaW9kRGVmcywKKyAqIG5u Y29uc3RyYWludHMgY29udGFpbnMgQ29uc3RyYWludCBub2RlcyBvZiBDT05TVFJfTk9UTlVM TCB0eXBlIGZyb20gdmFyaW91cyBzb3VyY2VzLAorICogYW5kIGNvbnN0cmFpbnRzIGNvbnRh aW5zIGp1c3QgQ09OU1RSX0NIRUNLIENvbnN0cmFpbnQgbm9kZXMuCiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiAgKi8KIApAQCAtMjUwNyw2ICsyNTEwLDcgQEAgdHlwZWRlZiBzdHJ1 Y3QgQ3JlYXRlU3RtdAogCU5vZGVUYWcJCXR5cGU7CiAJUmFuZ2VWYXIgICAqcmVsYXRpb247 CQkvKiByZWxhdGlvbiB0byBjcmVhdGUgKi8KIAlMaXN0CSAgICp0YWJsZUVsdHM7CQkvKiBj b2x1bW4gZGVmaW5pdGlvbnMgKGxpc3Qgb2YgQ29sdW1uRGVmKSAqLworCUxpc3QJICAgKnBl cmlvZHM7CQkvKiBwZXJpb2RzIChsaXN0IG9mIFBlcmlvZERlZiBub2RlcykgKi8KIAlMaXN0 CSAgICppbmhSZWxhdGlvbnM7CS8qIHJlbGF0aW9ucyB0byBpbmhlcml0IGZyb20gKGxpc3Qg b2YKIAkJCQkJCQkJICogUmFuZ2VWYXIpICovCiAJUGFydGl0aW9uQm91bmRTcGVjICpwYXJ0 Ym91bmQ7CS8qIEZPUiBWQUxVRVMgY2xhdXNlICovCkBAIC0yNTIxLDYgKzI1MjUsMzAgQEAg dHlwZWRlZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCWJvb2wJCWlmX25vdF9leGlzdHM7CS8qIGp1 c3QgZG8gbm90aGluZyBpZiBpdCBhbHJlYWR5IGV4aXN0cz8gKi8KIH0gQ3JlYXRlU3RtdDsK IAorCisvKiAtLS0tLS0tLS0tCisgKiBEZWZpbml0aW9ucyBmb3IgcGVyaW9kcyBpbiBDcmVh dGVTdG10CisgKiAtLS0tLS0tLS0tCisgKi8KKwordHlwZWRlZiBzdHJ1Y3QgUGVyaW9kRGVm Cit7CisJTm9kZVRhZwkJdHlwZTsKKwlPaWQJCQlvaWQ7CQkJLyogcGVyaW9kIG9pZCwgb25j ZSBpdCdzIHRyYW5zZm9ybWVkICovCisJY2hhcgkgICAqcGVyaW9kbmFtZTsJCS8qIHBlcmlv ZCBuYW1lICovCisJY2hhcgkgICAqc3RhcnRjb2xuYW1lOwkvKiBuYW1lIG9mIHN0YXJ0IGNv bHVtbiAqLworCWNoYXIJICAgKmVuZGNvbG5hbWU7CQkvKiBuYW1lIG9mIGVuZCBjb2x1bW4g Ki8KKwlBdHRyTnVtYmVyCXN0YXJ0YXR0bnVtOwkvKiBhdHRudW0gb2YgdGhlIHN0YXJ0IGNv bHVtbiAqLworCUF0dHJOdW1iZXIJZW5kYXR0bnVtOwkJLyogYXR0bnVtIG9mIHRoZSBlbmQg Y29sdW1uICovCisJQXR0ck51bWJlcglybmdhdHRudW07CQkvKiBhdHRudW0gb2YgdGhlIEdF TkVSQVRFRCByYW5nZSBjb2x1bW4gKi8KKwlMaXN0CSAgICpvcHRpb25zOwkJLyogb3B0aW9u cyBmcm9tIFdJVEggY2xhdXNlICovCisJY2hhcgkgICAqY29uc3RyYWludG5hbWU7CS8qIG5h bWUgb2YgdGhlIENIRUNLIGNvbnN0cmFpbnQgKi8KKwljaGFyCSAgICpyYW5nZXR5cGVuYW1l OwkvKiBuYW1lIG9mIHRoZSByYW5nZSB0eXBlICovCisJT2lkCQkJY29sdHlwaWQ7CQkvKiB0 aGUgc3RhcnQvZW5kIGNvbCB0eXBlICovCisJT2lkCQkJcm5ndHlwaWQ7CQkvKiB0aGUgcmFu Z2UgdHlwZSB0byB1c2UgKi8KKwlpbnQJCQlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9u LCBvciAtMSBpZiB1bmtub3duICovCit9IFBlcmlvZERlZjsKKwogLyogLS0tLS0tLS0tLQog ICogRGVmaW5pdGlvbnMgZm9yIGNvbnN0cmFpbnRzIGluIENyZWF0ZVN0bXQKICAqCkBAIC0z MjMyLDYgKzMyNjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleFN0bXQKIAlMaXN0CSAgICpp bmRleFBhcmFtczsJLyogY29sdW1ucyB0byBpbmRleDogYSBsaXN0IG9mIEluZGV4RWxlbSAq LwogCUxpc3QJICAgKmluZGV4SW5jbHVkaW5nUGFyYW1zOwkvKiBhZGRpdGlvbmFsIGNvbHVt bnMgdG8gaW5kZXg6IGEgbGlzdAogCQkJCQkJCQkJCSAqIG9mIEluZGV4RWxlbSAqLworCVBl cmlvZERlZiAgKnBlcmlvZDsJCQkvKiBUaGUgcGVyaW9kIGluY2x1ZGVkIGluIHRoZSBpbmRl eCAqLwogCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBXSVRIIGNsYXVzZSBvcHRpb25zOiBhIGxp c3Qgb2YgRGVmRWxlbSAqLwogCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0 aW9uIChwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSkgKi8KIAlMaXN0CSAgICpleGNsdWRlT3BO YW1lczsgLyogZXhjbHVzaW9uIG9wZXJhdG9yIG5hbWVzLCBvciBOSUwgaWYgbm9uZSAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaCBiL3NyYy9p bmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKaW5kZXggMmI0MGEwYjViMS4uZmViNmMy NjAwNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaAor KysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCkBAIC00MCw1ICs0MCw2 IEBAIGV4dGVybiBJbmRleFN0bXQgKmdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFy ICpoZWFwUmVsLAogCQkJCQkJCQkJCSAgUmVsYXRpb24gc291cmNlX2lkeCwKIAkJCQkJCQkJ CQkgIGNvbnN0IHN0cnVjdCBBdHRyTWFwICphdHRtYXAsCiAJCQkJCQkJCQkJICBPaWQgKmNv bnN0cmFpbnRPaWQpOworZXh0ZXJuIHZvaWQgdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhQZXJp b2REZWYgKnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBQQVJTRV9VVElMQ01EX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKaW5kZXggNGI1MmUyZGZkZS4uMjg2NDYxMDIyMSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvbHN5c2NhY2hlLmgKQEAgLTk2LDYgKzk2LDggQEAgZXh0ZXJuIE9pZAlnZXRf YXR0dHlwZShPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtKTsKIGV4dGVybiB2b2lkIGdl dF9hdHR0eXBldHlwbW9kY29sbChPaWQgcmVsaWQsIEF0dHJOdW1iZXIgYXR0bnVtLAogCQkJ CQkJCQkgIE9pZCAqdHlwaWQsIGludDMyICp0eXBtb2QsIE9pZCAqY29sbGlkKTsKIGV4dGVy biBEYXR1bSBnZXRfYXR0b3B0aW9ucyhPaWQgcmVsaWQsIGludDE2IGF0dG51bSk7CitleHRl cm4gY2hhciAqZ2V0X3BlcmlvZG5hbWUoT2lkIHBlcmlvZGlkLCBib29sIG1pc3Npbmdfb2sp OworZXh0ZXJuIE9pZAlnZXRfcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0IGNoYXIgKnBl cmlvZG5hbWUsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gT2lkCWdldF9jYXN0X29pZChP aWQgc291cmNldHlwZWlkLCBPaWQgdGFyZ2V0dHlwZWlkLCBib29sIG1pc3Npbmdfb2spOwog ZXh0ZXJuIGNoYXIgKmdldF9jb2xsYXRpb25fbmFtZShPaWQgY29sbG9pZCk7CiBleHRlcm4g Ym9vbCBnZXRfY29sbGF0aW9uX2lzZGV0ZXJtaW5pc3RpYyhPaWQgY29sbG9pZCk7CkBAIC0x OTgsNiArMjAwLDcgQEAgZXh0ZXJuIE9pZAlnZXRfcmFuZ2Vfc3VidHlwZShPaWQgcmFuZ2VP aWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2VfY29sbGF0aW9uKE9pZCByYW5nZU9pZCk7CiBl eHRlcm4gT2lkCWdldF9yYW5nZV9tdWx0aXJhbmdlKE9pZCByYW5nZU9pZCk7CiBleHRlcm4g T2lkCWdldF9tdWx0aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJhbmdlT2lkKTsKK2V4dGVybiBP aWQJZ2V0X3N1YnR5cGVfcmFuZ2UoT2lkIHN1YnR5cGVPaWQpOwogZXh0ZXJuIE9pZAlnZXRf aW5kZXhfY29sdW1uX29wY2xhc3MoT2lkIGluZGV4X29pZCwgaW50IGF0dG5vKTsKIGV4dGVy biBib29sIGdldF9pbmRleF9pc3JlcGxpZGVudChPaWQgaW5kZXhfb2lkKTsKIGV4dGVybiBi b29sIGdldF9pbmRleF9pc3ZhbGlkKE9pZCBpbmRleF9vaWQpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hl LmgKaW5kZXggNWQ0N2E2NTJjYy4uZGM4NjQ2ZjVmMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvdXRpbHMvc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5o CkBAIC03NSw2ICs3NSw4IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJUEFSQU1FVEVS QUNMTkFNRSwKIAlQQVJBTUVURVJBQ0xPSUQsCiAJUEFSVFJFTElELAorCVBFUklPRE5BTUUs CisJUEVSSU9ET0lELAogCVBST0NOQU1FQVJHU05TUCwKIAlQUk9DT0lELAogCVBVQkxJQ0FU SU9OTkFNRSwKQEAgLTg0LDYgKzg2LDcgQEAgZW51bSBTeXNDYWNoZUlkZW50aWZpZXIKIAlQ VUJMSUNBVElPTlJFTCwKIAlQVUJMSUNBVElPTlJFTE1BUCwKIAlSQU5HRU1VTFRJUkFOR0Us CisJUkFOR0VTVUJUWVBFLAogCVJBTkdFVFlQRSwKIAlSRUxOQU1FTlNQLAogCVJFTE9JRCwK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2Rk bF9kZXBhcnNlLmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9k ZGxfZGVwYXJzZS5jCmluZGV4IDAzMDJmNzliYjcuLjA1Zjk3ODBlY2YgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMK KysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFy c2UuYwpAQCAtMTgwLDYgKzE4MCwxMiBAQCBnZXRfYWx0ZXJ0YWJsZV9zdWJjbWRpbmZvKFBH X0ZVTkNUSU9OX0FSR1MpCiAJCQljYXNlIEFUX0Ryb3BDb25zdHJhaW50OgogCQkJCXN0cnR5 cGUgPSAiRFJPUCBDT05TVFJBSU5UIjsKIAkJCQlicmVhazsKKwkJCWNhc2UgQVRfQWRkUGVy aW9kOgorCQkJCXN0cnR5cGUgPSAiQUREIFBFUklPRCI7CisJCQkJYnJlYWs7CisJCQljYXNl IEFUX0Ryb3BQZXJpb2Q6CisJCQkJc3RydHlwZSA9ICJEUk9QIFBFUklPRCI7CisJCQkJYnJl YWs7CiAJCQljYXNlIEFUX1JlQWRkQ29tbWVudDoKIAkJCQlzdHJ0eXBlID0gIihyZSkgQURE IENPTU1FTlQiOwogCQkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wZXJpb2RzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9k cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNjQ4MWM5YjMw NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9k cy5vdXQKQEAgLTAsMCArMSwxNzcgQEAKKy8qIFN5c3RlbSBwZXJpb2RzIGFyZSBub3QgaW1w bGVtZW50ZWQgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRlKSk7CitFUlJPUjogIFBFUklP RCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRlZAorTElORSAyOiBjcmVhdGUgdGFi bGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Igc3kuLi4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCisvKiBQZXJpb2RzIG11c3Qgc3BlY2lmeSBhY3R1YWwgY29sdW1ucyAqLworY3JlYXRl IHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAg KGJvZ3VzLCBkZSkpOworRVJST1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlvbiAicHQi IGRvZXMgbm90IGV4aXN0CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7CitFUlJPUjogIGNvbHVtbiAi Ym9ndXMiIG9mIHJlbGF0aW9uICJwdCIgZG9lcyBub3QgZXhpc3QKKy8qIERhdGEgdHlwZXMg bXVzdCBtYXRjaCBleGFjdGx5ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIHRpbWVzdGFtcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAg c3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlwZQor Y3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0 ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAg c3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGhhdmUgc2FtZSBjb2xsYXRp b24KKy8qIFBlcmlvZHMgbXVzdCBoYXZlIGEgZGVmYXVsdCBCVHJlZSBvcGVyYXRvciBjbGFz cyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB4bWwsIGRlIHhtbCwgcGVy aW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgbm8gcmFuZ2UgdHlwZSBmb3IgeG1sIGZv dW5kIGZvciBwZXJpb2QgcAorSElOVDogIFlvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIHJhbmdl IHR5cGUgd2l0aCBDUkVBVEUgVFlQRQorLyogUGVyaW9kIGFuZCBjb2x1bW4gbmFtZXMgYXJl IGluIHRoZSBzYW1lIG5hbWVzcGFjZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2Vy LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGN0aWQgKGRzLCBkZSkpOworRVJST1I6 ICBwZXJpb2QgbmFtZSAiY3RpZCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5h bWUKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJpZCIgY29uZmxp Y3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogUGVyaW9kIG5hbWUgY2FuJ3QgYmUgZ2l2ZW4g bW9yZSB0aGFuIG9uY2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpLCBwZXJpb2QgZm9yIHAgKGRzLCBk ZSkpOworRVJST1I6ICBwZXJpb2QgbmFtZSAicCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNl CisvKiBOb3cgbWFrZSBvbmUgdGhhdCB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworLyog U0VMRUNUICogZXhjbHVkZXMgdGhlIFBFUklPRCAqLworaW5zZXJ0IGludG8gcHQgdmFsdWVz ICgxLCAnMjAwMC0wMS0wMScsICcyMDAxLTAxLTAxJyk7CitzZWxlY3QgKiBmcm9tIHB0Owor IGlkIHwgICAgIGRzICAgICB8ICAgICBkZSAgICAgCistLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0KKyAgMSB8IDAxLTAxLTIwMDAgfCAwMS0wMS0yMDAxCisoMSByb3cpCisKKy8q IFlvdSBjYW4gZ2V0IGl0IGlmIHlvdSB3YW50ICovCitzZWxlY3QgKiwgcCBmcm9tIHB0Owor IGlkIHwgICAgIGRzICAgICB8ICAgICBkZSAgICAgfCAgICAgICAgICAgIHAgICAgICAgICAg ICAKKy0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgIDEgfCAwMS0wMS0yMDAwIHwgMDEtMDEtMjAwMSB8IFswMS0wMS0yMDAwLDAx LTAxLTIwMDEpCisoMSByb3cpCisKKy8qIFR3byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxl IHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMs IGRlKSwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qCisg KiBBTFRFUiBUQUJMRSB0ZXN0cworICovCithbHRlciB0YWJsZSBwdCBkcm9wIHBlcmlvZCBm b3IgcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywg ZGUpOworRVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQK K2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7CisvKiBBZGRpbmcg YSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBh ZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuJ3Qg ZHJvcCBpdHMgY29sdW1ucyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBjb2x1bW4gZHM7CitF UlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBkcyBvZiB0YWJsZSBwdCBiZWNhdXNlIG90aGVy IG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBk ZXBlbmRzIG9uIGNvbHVtbiBkcyBvZiB0YWJsZSBwdAorSElOVDogIFVzZSBEUk9QIC4uLiBD QVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK2FsdGVyIHRhYmxl IHB0IGRyb3AgY29sdW1uIGRlOworRVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gZGUgb2Yg dGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAg cGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4gZGUgb2YgdGFibGUgcHQK K0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2Jq ZWN0cyB0b28uCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRh YmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK0VSUk9SOiAgY2Fubm90 IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBhIHBlcmlvZAorREVUQUlMOiAgcGVy aW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4gImRzIgorYWx0ZXIgdGFibGUg cHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBjYW5ub3QgYWx0 ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6ICBwZXJpb2Qg cCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCisvKiBjb2x1bW4vcGVyaW9k IG5hbWVzcGFjZSBjb25mbGljdHMgKi8KK2FsdGVyIHRhYmxlIHB0IGFkZCBjb2x1bW4gcCBp bnRlZ2VyOworRVJST1I6ICBjb2x1bW4gbmFtZSAicCIgY29uZmxpY3RzIHdpdGggYSBwZXJp b2QgbmFtZQorYWx0ZXIgdGFibGUgcHQgcmVuYW1lIGNvbHVtbiBpZCB0byBwOworRVJST1I6 ICBjb2x1bW4gbmFtZSAicCIgY29uZmxpY3RzIHdpdGggYSBwZXJpb2QgbmFtZQorYWx0ZXIg dGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgdGFibGVvaWQgKGRzLCBkZSk7CitFUlJPUjogIHBl cmlvZCBuYW1lICJ0YWJsZW9pZCIgY29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5h bWUKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJpb2QgZm9yICIuLi4uLi4uLnBnLmRyb3BwZWQu NC4uLi4uLi4uIiAoZHMsIGRlKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgIi4uLi4uLi4ucGcu ZHJvcHBlZC40Li4uLi4uLi4iIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUKKy8qIGFk ZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBjb2x1bW4g ZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUp OworZHJvcCB0YWJsZSBwdDI7CisvKiBBbWJpZ3VvdXMgcmFuZ2UgdHlwZXMgcmFpc2UgYW4g ZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFzIHJhbmdlKHN1YnR5cGU9ZGF0 ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIGFtYmlndW91cyByYW5nZSBmb3IgdHlwZSBk YXRlCisvKiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRl IHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRz LCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJhbmdlJykpOworZHJvcCB0eXBlIG15 ZGF0ZXJhbmdlOworRVJST1I6ICBjYW5ub3QgZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGJlY2F1 c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRh YmxlIHB0MiBkZXBlbmRzIG9uIHR5cGUgbXlkYXRlcmFuZ2UKK0hJTlQ6ICBVc2UgRFJPUCAu Li4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitkcm9wIHR5 cGUgbXlkYXRlcmFuZ2UgY2FzY2FkZTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gcGVy aW9kIHAgb24gdGFibGUgcHQyCitkcm9wIHRhYmxlIHB0MjsKK2NyZWF0ZSB0YWJsZSBwdDIg KGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KHJhbmdldHlwZSA9ICdkYXRlcmFuZ2UnKSk7CisvKiBSYW5nZSB0eXBlIGlzIG5vdCBmb3Vu ZCAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScpKTsKK0VS Uk9SOiAgUmFuZ2UgdHlwZSBub3RhcmFuZ2Ugbm90IGZvdW5kCisvKiBSYW5nZSB0eXBlIGlz IHRoZSB3cm9uZyB0eXBlICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUs IGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0 enJhbmdlJykpOworRVJST1I6ICBSYW5nZSB0eXBlIHRzdHpyYW5nZSBkb2VzIG5vdCBtYXRj aCBjb2x1bW4gdHlwZSBkYXRlCitkcm9wIHRhYmxlIHB0MjsKKy8qIENSRUFURSBUQUJMRSAo TElLRSAuLi4pICovCisvKiBQZXJpb2RzIGFyZSBub3QgY29waWVkIGJ5IExJS0UsIHNvIHRo ZWlyIGNvbHVtbnMgYXJlbid0IGVpdGhlciAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBw dCk7CitcZCBwdDIKKyAgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1 bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAg IHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAg ICAgICB8ICAgICAgICAgIHwgCisKK2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBhIHBl cmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBub3Rf cCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChs aWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAg fCAgICAgICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAg ICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVy aW9kczoKKyAgICBwIChkcywgZGUpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3Bf Y2hlY2siIENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQg YSBwZXJpb2Qgd2l0aCB0aGUgc2FtZSBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtl IHB0LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAg VGFibGUgInB1YmxpYy5wdDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51 bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAg ICAgICB8IAorIGRzICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor IGRlICAgICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoK KyAgICBwIChkcywgZGUpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3BfY2hlY2si IENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJp b2Qgd2l0aCBhIGRpZmZlcmVudCBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0 LCBwZXJpb2QgZm9yIHAyIChkcywgZGUpKTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRh YmxlICJwdWJsaWMucHQyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxs YWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKKyBkcyAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBk ZSAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1BlcmlvZHM6Cisg ICAgcDIgKGRzLCBkZSkKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJwdDJfcDJfY2hlY2si IENIRUNLIChkcyA8IGRlKQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbid0IGFkZCBhIHBl cmlvZCB3aG9zZSBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgTElLRSdkIGNvbHVtbiAqLworY3Jl YXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CitFUlJP UjogIHBlcmlvZCBuYW1lICJpZCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyog Q1JFQVRFIFRBTEJFIElOSEVSSVRTICovCisvKiBDYW4ndCBpbmhlcml0IGZyb20gYSB0YWJs ZSB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQyIChuYW1lIHRleHQpIGluaGVy aXRzIChwdCk7CitFUlJPUjogIEluaGVyaXRpbmcgZnJvbSBhIHRhYmxlIHdpdGggYSBQRVJJ T0QgaXMgbm90IHN1cHBvcnRlZAorLyogQ2FuJ3QgaW5oZXJpdCB3aXRoIGEgcGVyaW9kICov CitjcmVhdGUgdGFibGUgcHQyIChkMnMgZGF0ZSwgZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAo ZDJzLCBkMmUpKSBpbmhlcml0cyAobm90X3ApOworRVJST1I6ICBJbmhlcml0aW5nIGlzIG5v dCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBhIFBFUklPRAorZHJvcCB0YWJsZSBub3Rf cDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9z cmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IGNjMmY2YjQ2ZTAuLmQ2 YjhiOTZkODggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1 bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtNDMsNyAr NDMsNyBAQCB0ZXN0OiBjb3B5IGNvcHlzZWxlY3QgY29weWRtbCBpbnNlcnQgaW5zZXJ0X2Nv bmZsaWN0CiAjIE5vdGU6IG1hbnkgb2YgdGhlIHRlc3RzIGluIGxhdGVyIGdyb3VwcyBkZXBl bmQgb24gY3JlYXRlX2luZGV4CiAjIC0tLS0tLS0tLS0KIHRlc3Q6IGNyZWF0ZV9mdW5jdGlv bl9jIGNyZWF0ZV9taXNjIGNyZWF0ZV9vcGVyYXRvciBjcmVhdGVfcHJvY2VkdXJlIGNyZWF0 ZV90YWJsZSBjcmVhdGVfdHlwZSBjcmVhdGVfc2NoZW1hCi10ZXN0OiBjcmVhdGVfaW5kZXgg Y3JlYXRlX2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhf aW5jbHVkaW5nX2dpc3QKK3Rlc3Q6IGNyZWF0ZV9pbmRleCBjcmVhdGVfaW5kZXhfc3BnaXN0 IGNyZWF0ZV92aWV3IGluZGV4X2luY2x1ZGluZyBpbmRleF9pbmNsdWRpbmdfZ2lzdCBwZXJp b2RzCiAKICMgLS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3Rz CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbCBiL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmYwYmU4OTAyMTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApAQCAtMCwwICsxLDExOSBAQAorLyogU3lzdGVtIHBl cmlvZHMgYXJlIG5vdCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRl Z2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUp KTsKKworLyogUGVyaW9kcyBtdXN0IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0 ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBw IChib2d1cywgZGUpKTsKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwg ZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKKworLyogRGF0YSB0eXBlcyBt dXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNvbGxh dGUgIlBPU0lYIiwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0 IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9yIGNsYXNzICovCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1sLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkp OworCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1lcyBhcmUgaW4gdGhlIHNhbWUgbmFtZXNw YWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUs IHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVn ZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworCisvKiBQ ZXJpb2QgbmFtZSBjYW4ndCBiZSBnaXZlbiBtb3JlIHRoYW4gb25jZSAqLworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRz LCBkZSksIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIE5vdyBtYWtlIG9uZSB0aGF0 IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVzIHRo ZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEnLCAn MjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKworLyogWW91IGNhbiBnZXQgaXQg aWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20gcHQ7CisKKy8qIFR3byBhcmUgb2th eSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwMSAoZHMsIGRlKSwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7Citkcm9w IHRhYmxlIHB0MjsKKworLyoKKyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRh YmxlIHB0IGRyb3AgcGVyaW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBm b3Igc3lzdGVtX3RpbWUgKGRzLCBkZSk7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZv ciBwIChkcywgZGUpOworCisvKiBBZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFi bGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChk cywgZGUpKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsK K2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRl ciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkczsKK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1u IGRlOworCisvKiBDYW4ndCBjaGFuZ2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxl IHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRhYmxlIHB0IGFs dGVyIGNvbHVtbiBkcyB0eXBlIHRpbWVzdGFtcDsKKworLyogY29sdW1uL3BlcmlvZCBuYW1l c3BhY2UgY29uZmxpY3RzICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdl cjsKK2FsdGVyIHRhYmxlIHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK2FsdGVyIHRhYmxl IHB0IGFkZCBwZXJpb2QgZm9yIHRhYmxlb2lkIChkcywgZGUpOworYWx0ZXIgdGFibGUgcHQg YWRkIHBlcmlvZCBmb3IgIi4uLi4uLi4ucGcuZHJvcHBlZC40Li4uLi4uLi4iIChkcywgZGUp OworCisvKiBhZGRpbmcgY29sdW1ucyBhbmQgdGhlIHBlcmlvZCBhdCB0aGUgc2FtZSB0aW1l ICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIHRhYmxlIHB0MiBh ZGQgY29sdW1uIGRzIGRhdGUsIGFkZCBjb2x1bW4gZGUgZGF0ZSwgYWRkIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBBbWJpZ3VvdXMgcmFuZ2UgdHlw ZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBlIG15ZGF0ZXJhbmdlIGFzIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRhdGUsIGRl IGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFlvdSBjYW4gZ2l2ZSBhbiBl eHBsaWNpdCByYW5nZSB0eXBlICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAn bXlkYXRlcmFuZ2UnKSk7Citkcm9wIHR5cGUgbXlkYXRlcmFuZ2U7Citkcm9wIHR5cGUgbXlk YXRlcmFuZ2UgY2FzY2FkZTsKK2Ryb3AgdGFibGUgcHQyOworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAo cmFuZ2V0eXBlID0gJ2RhdGVyYW5nZScpKTsKKworLyogUmFuZ2UgdHlwZSBpcyBub3QgZm91 bmQgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFuZ2UnKSk7CisK Ky8qIFJhbmdlIHR5cGUgaXMgdGhlIHdyb25nIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDMg KGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGgg KHJhbmdldHlwZSA9ICd0c3R6cmFuZ2UnKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogQ1JF QVRFIFRBQkxFIChMSUtFIC4uLikgKi8KKworLyogUGVyaW9kcyBhcmUgbm90IGNvcGllZCBi eSBMSUtFLCBzbyB0aGVpciBjb2x1bW5zIGFyZW4ndCBlaXRoZXIgKi8KK2NyZWF0ZSB0YWJs ZSBwdDIgKGxpa2UgcHQpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuIGFk ZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElLRSdkIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJs ZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSk7CitjcmVhdGUgdGFibGUg cHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCitkcm9w IHRhYmxlIHB0MjsKKworLyogQ2FuIGFkZCBhIHBlcmlvZCB3aXRoIHRoZSBzYW1lIG5hbWUg Ki8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7 CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4gYWRkIGEgcGVyaW9kIHdpdGgg YSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9k IGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4n dCBhZGQgYSBwZXJpb2Qgd2hvc2UgbmFtZSBjb25mbGljdHMgd2l0aCBhIExJS0UnZCBjb2x1 bW4gKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgaWQgKGRzLCBk ZSkpOworCisvKiBDUkVBVEUgVEFMQkUgSU5IRVJJVFMgKi8KKworLyogQ2FuJ3QgaW5oZXJp dCBmcm9tIGEgdGFibGUgd2l0aCBhIHBlcmlvZCAqLworY3JlYXRlIHRhYmxlIHB0MiAobmFt ZSB0ZXh0KSBpbmhlcml0cyAocHQpOworCisvKiBDYW4ndCBpbmhlcml0IHdpdGggYSBwZXJp b2QgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGQycyBkYXRlLCBkMmUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkMnMsIGQyZSkpIGluaGVyaXRzIChub3RfcCk7CisKK2Ryb3AgdGFibGUgbm90X3A7 Ci0tIAoyLjQyLjAKCg== --------------q0P9SppGy0Gb0SiL8HntHna4--