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 1s6Jv5-00BSMW-Bm for pgsql-hackers@arkaria.postgresql.org; Mon, 13 May 2024 00:52:00 +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 1s6Jv1-00E80p-Ng for pgsql-hackers@arkaria.postgresql.org; Mon, 13 May 2024 00:51:56 +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 1s6Jv1-00E80Z-2A for pgsql-hackers@lists.postgresql.org; Mon, 13 May 2024 00:51:55 +0000 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1s6Jur-000job-8f for pgsql-hackers@lists.postgresql.org; Mon, 13 May 2024 00:51:54 +0000 Received: by mail-oi1-x22f.google.com with SMTP id 5614622812f47-3c74b27179dso2860475b6e.1 for ; Sun, 12 May 2024 17:51:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1715561503; x=1716166303; darn=lists.postgresql.org; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=xDo4TSwyUlZTwvj65qLLrwxMPhSCmSeraixCzlo9Ji0=; b=kGxpbKIeDw/ZAXrjZZMoNmsb2LsPz792E2uxgctpsiT3FwqQywr+SPvZZ6EUchwKlQ okwJNjsdjK8Ir50Xbu4s8QTMaLXpRj3dfobwfI0fyyllYWyS8DIqZYdvBX0v6DT5sS1s zUBGqR26QsSO1KUGx8xM8gSw5t4fPtLWL8iZW/5DorlPX7H9fUtHrOCyNNr2gewn6Fpj nU9Bu0sqdnpiOKtWe4nEow+TxDL1ALoiKxIH7YuHZ10R9pn+TbURpzttJIYc00H9URzZ d5oc0y7pGPuFZCtRGJ75NhvTDHBBNKF88KWwme1tIP+cMB9UvezvMlZpmmQWIPpEuAiF Cjxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715561503; x=1716166303; h=in-reply-to:from:content-language:references:cc:to:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xDo4TSwyUlZTwvj65qLLrwxMPhSCmSeraixCzlo9Ji0=; b=tjt2f0PZH7lE2cDZlHEIhMx0itjyYa6ppk+otMKm8pLmcWgwYwonJGc5Ca9HFPABXt cRZDn8kxbnOkkHe9VSbdbKT1uMTQjbVOxwUBuFQr++MqCpUB9ZVwJHq+Kpxrz8GKPCLO PEjGVEltv8UFlpiqRQUI/p5gq8V9/fam4kN1bkg+XDhgB+fpDXH30HvVHA8Br+lKxQpO MNZvImt8JAWZawdDiejAPvc6QUlSGsjBOfim2Huxg8svl7X6g9hnj9ywoI8DyNtYjZxK FR7rzmR2bRKLcYVhWxPDdd6qkrLtoMPffDR5MMaRoRB0THB8RPLDtG4+Vv7t4+nqM/kA XdGg== X-Forwarded-Encrypted: i=1; AJvYcCWMJ6IHjS9NDssKZofdYEBcTRRU57S916/laenc+B4QZTZromIQk5lwmoL7oIY4BERvPZnQp9x7heyqRaQ+DRdXJvWG+qS20O15wI2OthggB9vK X-Gm-Message-State: AOJu0YwNcCgn0biSP1fKl4tAUgbLgdkAPf7cDzzIGyWcY25CuMSfE6ky 4BiJa/oct+1oBVXMTQHRADfn1mW8mSV5wGUmEA4kzXhW2D01CbZifctBsf+QlZE= X-Google-Smtp-Source: AGHT+IEeCm960WTEOJ7YX4e6eKYPtJQLouVYeYL7zuehjEwmn3XdYXXmO1K0+ocJ2iXzyZW/oowvqQ== X-Received: by 2002:aca:2203:0:b0:3c9:65a1:8d70 with SMTP id 5614622812f47-3c9970d00b6mr8583565b6e.57.1715561503444; Sun, 12 May 2024 17:51:43 -0700 (PDT) Received: from [192.168.2.139] ([50.39.255.79]) by smtp.googlemail.com with ESMTPSA id 41be03b00d2f7-6340c99bce1sm5730299a12.49.2024.05.12.17.51.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 12 May 2024 17:51:42 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------Irz5Q423O7k1p7hAm303jl35" Message-ID: <2dacea9e-d1fe-4d4d-be5e-ac5c504f776f@illuminatedcomputing.com> Date: Sun, 12 May 2024 17:51:41 -0700 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: SQL:2011 application time To: jian he Cc: Robert Haas , Peter Eisentraut , PostgreSQL Hackers References: <85dd3ad0-fa79-46e8-a08b-c426c76825f3@eisentraut.org> <49c07eac-18ec-4aff-929c-e81b87df1092@eisentraut.org> <1edb3b79-a4bc-43b1-80aa-2e090472fe32@eisentraut.org> <47550967-260b-4180-9791-b224859fe63e@illuminatedcomputing.com> <1b2ab118-82c1-4e79-a094-04dab382e2c4@illuminatedcomputing.com> <3775839b-3f0f-4c8a-ac03-a253222e6a4b@illuminatedcomputing.com> Content-Language: en-US From: Paul Jungwirth In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------Irz5Q423O7k1p7hAm303jl35 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/5/24 20:01, jian he wrote: > hi. > I hope I understand the problem correctly. > my understanding is that we are trying to solve a corner case: > create table t(a int4range, b int4range, primary key(a, b WITHOUT OVERLAPS)); > insert into t values ('[1,2]','empty'), ('[1,2]','empty'); > > > I think the entry point is ATAddCheckNNConstraint and index_create. > in a chain of DDL commands, you cannot be sure which one > (primary key constraint or check constraint) is being created first, > you just want to make sure that after both constraints are created, > then add a dependency between primary key and check constraint. > > so you need to validate at different functions > (ATAddCheckNNConstraint, index_create) > that these two constraints are indeed created, > only after that we have a dependency linking these two constraints. > > > I've attached a patch trying to solve this problem. > the patch is not totally polished, but works as expected, and also has > lots of comments. Thanks for this! I've incorporated it into the CHECK constraint patch with some changes. In particular I thought index_create was a strange place to change the conperiod value of a pg_constraint record, and it is not actually needed if we are copying that value correctly. Some other comments on the patch file: > N.B. we also need to have special care for case > where check constraint was readded, e.g. ALTER TYPE. > if ALTER TYPE is altering the PERIOD column of the primary key, > alter column of primary key makes the index recreate, check constraint recreate, > however, former interally also including add a check constraint. > so we need to take care of merging two check constraint. This is a good point. I've included tests for this based on your patch. > N.B. the check constraint name is hard-wired, so if you create the constraint > with the same name, PERIOD primary key cannot be created. Yes, it may be worth doing something like other auto-named constraints and trying to avoid duplicates. I haven't taken that on yet; I'm curious what others have to say about it. > N.B. what about UNIQUE constraint? See my previous posts on this thread about allowing 'empty' in UNIQUE constraints. > N.B. seems ok to not care about FOREIGN KEY regarding this corner case? Agreed. v3 patches attached, rebased to 3ca43dbbb6. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------Irz5Q423O7k1p7hAm303jl35 Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Don-t-treat-WITHOUT-OVERLAPS-indexes-as-unique-in.patch" Content-Disposition: attachment; filename*0="v3-0001-Don-t-treat-WITHOUT-OVERLAPS-indexes-as-unique-in.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA0ZjQ0MjhmYjQxZWE3OTA1NmExM2U0MjU4MjZmZGFjOWM3YjVkMzQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFR1ZSwgMiBBcHIgMjAyNCAxNTozOTowNCAtMDcw MApTdWJqZWN0OiBbUEFUQ0ggdjMgMS8yXSBEb24ndCB0cmVhdCBXSVRIT1VUIE9WRVJMQVBT IGluZGV4ZXMgYXMgdW5pcXVlIGluCiBwbGFubmVyCgpCZWNhdXNlIHRoZSBzcGVjaWFsIHJh bmdldHlwZSAnZW1wdHknIG5ldmVyIG92ZXJsYXBzIGFub3RoZXIgdmFsdWUsIGl0CmlzIHBv c3NpYmxlIGZvciBXSVRIT1VUIE9WRVJMQVBTIHRhYmxlcyB0byBoYXZlIHR3byByb3dzIHdp dGggdGhlIHNhbWUKa2V5LCBkZXNwaXRlIGJlaW5nIGluZGlzdW5pcXVlLCBpZiB0aGUgYXBw bGljYXRpb24tdGltZSByYW5nZSBpcwonZW1wdHknLiBTbyB0byBiZSBzYWZlIHdlIHNob3Vs ZCBub3QgdHJlYXQgV0lUSE9VVCBPVkVSTEFQUyBpbmRleGVzIGFzCnVuaXF1ZSBpbiBhbnkg cHJvb2ZzLgoKVGhpcyBzdGlsbCBuZWVkcyBhIHRlc3QsIGJ1dCBJJ20gaGF2aW5nIHRyb3Vi bGUgZmluZGluZyBhIHF1ZXJ5IHRoYXQKZ2l2ZXMgd3JvbmcgcmVzdWx0cy4KLS0tCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jICAgICB8IDUgKysrLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jIHwgNiArKystLS0KIHNyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYyAgICAgIHwgMSArCiBzcmMvaW5jbHVk ZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAgICB8IDIgKysKIDQgZmlsZXMgY2hhbmdl ZCwgOSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9pbmR4cGF0aC5jCmluZGV4IGMwZmNjN2Q3OGRmLi43MjM0NmY3OGViZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBAIC0zNDk4LDEzICszNDk4 LDE0IEBAIHJlbGF0aW9uX2hhc191bmlxdWVfaW5kZXhfZm9yKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAKIAkJLyoKIAkJICogSWYgdGhlIGluZGV4IGlzIG5vdCB1 bmlxdWUsIG9yIG5vdCBpbW1lZGlhdGVseSBlbmZvcmNlZCwgb3IgaWYgaXQncwotCQkgKiBh IHBhcnRpYWwgaW5kZXgsIGl0J3MgdXNlbGVzcyBoZXJlLiAgV2UncmUgdW5hYmxlIHRvIG1h a2UgdXNlIG9mCisJCSAqIGEgcGFydGlhbCBpbmRleCwgb3IgaWYgaXQncyBhIFdJVEhPVVQg T1ZFUkxBUFMgaW5kZXggKHNvIG5vdAorCQkgKiBsaXRlcmFsbHkgdW5pcXVlKSwgaXQncyB1 c2VsZXNzIGhlcmUuICBXZSdyZSB1bmFibGUgdG8gbWFrZSB1c2Ugb2YKIAkJICogcHJlZE9L IHBhcnRpYWwgdW5pcXVlIGluZGV4ZXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQKIAkJICogY2hl Y2tfaW5kZXhfcHJlZGljYXRlcygpIGFsc28gbWFrZXMgdXNlIG9mIGpvaW4gcHJlZGljYXRl cyB0bwogCQkgKiBkZXRlcm1pbmUgaWYgdGhlIHBhcnRpYWwgaW5kZXggaXMgdXNhYmxlLiBI ZXJlIHdlIG5lZWQgcHJvb2ZzIHRoYXQKIAkJICogaG9sZCB0cnVlIGJlZm9yZSBhbnkgam9p bnMgYXJlIGV2YWx1YXRlZC4KIAkJICovCi0JCWlmICghaW5kLT51bmlxdWUgfHwgIWluZC0+ aW1tZWRpYXRlIHx8IGluZC0+aW5kcHJlZCAhPSBOSUwpCisJCWlmICghaW5kLT51bmlxdWUg fHwgIWluZC0+aW1tZWRpYXRlIHx8IGluZC0+aW5kcHJlZCAhPSBOSUwgfHwgaW5kLT5oYXNw ZXJpb2QpCiAJCQljb250aW51ZTsKIAogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9hbmFseXplam9pbnMuYwppbmRleCBjM2ZkNGE4MWY4YS4uZGM4MzI3ZDU3NjkgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCkBAIC04MTQs OCArODE0LDggQEAgcmVsX3N1cHBvcnRzX2Rpc3RpbmN0bmVzcyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsKQogCQkgKiBGb3IgYSBwbGFpbiByZWxhdGlvbiwgd2Ugb25s eSBrbm93IGhvdyB0byBwcm92ZSB1bmlxdWVuZXNzIGJ5CiAJCSAqIHJlZmVyZW5jZSB0byB1 bmlxdWUgaW5kZXhlcy4gIE1ha2Ugc3VyZSB0aGVyZSdzIGF0IGxlYXN0IG9uZQogCQkgKiBz dWl0YWJsZSB1bmlxdWUgaW5kZXguICBJdCBtdXN0IGJlIGltbWVkaWF0ZWx5IGVuZm9yY2Vk LCBhbmQgbm90IGEKLQkJICogcGFydGlhbCBpbmRleC4gKEtlZXAgdGhlc2UgY29uZGl0aW9u cyBpbiBzeW5jIHdpdGgKLQkJICogcmVsYXRpb25faGFzX3VuaXF1ZV9pbmRleF9mb3IhKQor CQkgKiBwYXJ0aWFsIGluZGV4LCBhbmQgbm90IFdJVEhPVVQgT1ZFUkxBUFMgKEtlZXAgdGhl c2UgY29uZGl0aW9ucworCQkgKiBpbiBzeW5jIHdpdGggcmVsYXRpb25faGFzX3VuaXF1ZV9p bmRleF9mb3IhKQogCQkgKi8KIAkJTGlzdENlbGwgICAqbGM7CiAKQEAgLTgyMyw3ICs4MjMs NyBAQCByZWxfc3VwcG9ydHNfZGlzdGluY3RuZXNzKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwpCiAJCXsKIAkJCUluZGV4T3B0SW5mbyAqaW5kID0gKEluZGV4T3B0SW5m byAqKSBsZmlyc3QobGMpOwogCi0JCQlpZiAoaW5kLT51bmlxdWUgJiYgaW5kLT5pbW1lZGlh dGUgJiYgaW5kLT5pbmRwcmVkID09IE5JTCkKKwkJCWlmIChpbmQtPnVuaXF1ZSAmJiBpbmQt PmltbWVkaWF0ZSAmJiBpbmQtPmluZHByZWQgPT0gTklMICYmICFpbmQtPmhhc3BlcmlvZCkK IAkJCQlyZXR1cm4gdHJ1ZTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BsYW5jYXQuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Bs YW5jYXQuYwppbmRleCA3NzVjM2UyNmNkOC4uMTQ2MDI5NTc3YmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wbGFuY2F0LmMKQEAgLTQ1Nyw2ICs0NTcsNyBAQCBnZXRfcmVsYXRp b25faW5mbyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIHJlbGF0aW9uT2JqZWN0SWQsIGJvb2wg aW5ocGFyZW50LAogCQkJaW5mby0+cHJlZE9LID0gZmFsc2U7CS8qIHNldCBsYXRlciwgaW4g aW5keHBhdGguYyAqLwogCQkJaW5mby0+dW5pcXVlID0gaW5kZXgtPmluZGlzdW5pcXVlOwog CQkJaW5mby0+aW1tZWRpYXRlID0gaW5kZXgtPmluZGltbWVkaWF0ZTsKKwkJCWluZm8tPmhh c3BlcmlvZCA9IGluZGV4LT5pbmRpc3VuaXF1ZSAmJiBpbmRleC0+aW5kaXNleGNsdXNpb247 CiAJCQlpbmZvLT5oeXBvdGhldGljYWwgPSBmYWxzZTsKIAogCQkJLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0 aG5vZGVzLmgKaW5kZXggMTRlZjI5NmFiNzIuLmUyNGE0NWYwY2Q1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaApAQCAtMTE3Niw2ICsxMTc2LDggQEAgc3RydWN0IEluZGV4T3B0SW5mbwog CWJvb2wJCXVuaXF1ZTsKIAkvKiBpcyB1bmlxdWVuZXNzIGVuZm9yY2VkIGltbWVkaWF0ZWx5 PyAqLwogCWJvb2wJCWltbWVkaWF0ZTsKKwkvKiB0cnVlIGlmIGluZGV4IGhhcyBXSVRIT1VU IE9WRVJMQVBTICovCisJYm9vbAkJaGFzcGVyaW9kOwogCS8qIHRydWUgaWYgaW5kZXggZG9l c24ndCByZWFsbHkgZXhpc3QgKi8KIAlib29sCQloeXBvdGhldGljYWw7CiAKLS0gCjIuNDIu MAoK --------------Irz5Q423O7k1p7hAm303jl35 Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-Add-CHECK-NOT-isempty-constraint-to-PRIMARY-KEYs-.patch" Content-Disposition: attachment; filename*0="v3-0002-Add-CHECK-NOT-isempty-constraint-to-PRIMARY-KEYs-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxMWVmNTM1YmM3OGVmOWI1MGQ4YWYwODllNmQ3MWYyMDUzMmE2OTNjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFR1ZSwgOSBBcHIgMjAyNCAyMDo1MjoyMyAtMDcw MApTdWJqZWN0OiBbUEFUQ0ggdjMgMi8yXSBBZGQgQ0hFQ0sgKE5PVCBpc2VtcHR5KSBjb25z dHJhaW50IHRvIFBSSU1BUlkgS0VZcwogV0lUSE9VVCBPVkVSTEFQUwoKVGhpcyBpcyBuZWNl c3NhcnkgYmVjYXVzZSAnZW1wdHknICYmICdlbXB0eScgaXMgZmFsc2UgKGxpa2V3aXNlIHdp dGgKbXVsdGlyYW5nZXMpLCB3aGljaCBtZWFucyB5b3UgY2FuIGdldCBtdWx0aXBsZSBpZGVu dGljYWwgcm93cyBsaWtlICg1LAonZW1wdHknKS4gVGhhdCB3aWxsIGdpdmUgd3JvbmcgcmVz dWx0cyB1c2luZyB0aGUgUEsgdG8gdHJlYXQgb3RoZXIKY29sdW1ucyBhcyBmdW5jdGlvbmFs IGRlcGVuZGVuY2llcyBpbiBhIEdST1VQIEJZLCBhbmQgbWF5YmUgZWxzZXdoZXJlLgoKV2Ug ZG9uJ3QgYWRkIHN1Y2ggYSBjb25zdHJhaW50IGZvciBVTklRVUUgY29uc3RyYWludHMsIGp1 c3QgYXMgd2UgZG9uJ3QKZm9yY2UgYWxsIHRoZWlyIGNvbHVtbnMgdG8gYmUgTk9UIE5VTEwu IChUaGUgc2l0dWF0aW9uIGlzIGFuYWxvZ291cy4pCgpUaGlzIHVwZGF0ZXMgdGhlIGRvY3Mg dG9vIHdoaWNoIHByZXZpb3VzbHkgc2FpZCB5b3UgY291bGQgdXNlIGFueSB0eXBlCmluIFdJ VEhPVVQgT1ZFUkxBUFMsIGlmIGl0cyBHaVNUIG9wY2xhc3MgaW1wbGVtZW50ZWQgc3RyYXRu dW0uIE5vdyBvbmx5CnJhbmdlIGFuZCBtdWx0aXJhbmdlIHR5cGVzIGFyZSBhbGxvd2VkLCBz aW5jZSBvbmx5IHRoZXkgaGF2ZSBpc2VtcHR5LgooV2Ugc3RpbGwgbmVlZCBzdHJhdG51bSBm b3IgdGhlIG5vbi1XSVRIT1VUIE9WRVJMQVBTIGNvbHVtbnMgdGhvdWdoLikKLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIGRv Yy9zcmMvc2dtbC9naXN0LnNnbWwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyAtCiBk b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAgIDUgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jICAgICAgICAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAgIHwgIDMw ICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAgICAgICAgICAgICAgfCAg MzAgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jICAgICAgICAgICB8 ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCAxNTQgKysrKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAg ICAgICAgfCAgOTEgKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmggICAgICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCAgICAgICAg ICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgg ICAgICAgICAgICAgIHwgICAyICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zl cmxhcHMub3V0ICAgICB8IDQ3OSArKysrKysrKysrKysrKysrLS0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8IDI0OCArKysrKysrKy0KIDE1IGZp bGVzIGNoYW5nZWQsIDk2NCBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCmluZGV4IGI1MzBjMDMwZjAxLi4zMWE1NWQ1Njg5MSAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKQEAgLTI3MzMsNyArMjczMyw5IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxl PiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZs CiAgICAgICA8cGFyYT4KICAgICAgICBUaGlzIGNvbnN0cmFpbnQgaXMgZGVmaW5lZCB3aXRo IDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+CiAgICAgICAgKGZvciBwcmlt YXJ5IGtleXMgYW5kIHVuaXF1ZSBjb25zdHJhaW50cykgb3IgPGxpdGVyYWw+UEVSSU9EPC9s aXRlcmFsPgotICAgICAgIChmb3IgZm9yZWlnbiBrZXlzKS4KKyAgICAgICAoZm9yIGZvcmVp Z24ga2V5cykuIFRoaXMgaXMgYWxzbyB0cnVlIGZvciB0aGUgaW50ZXJuYWwKKyAgICAgICA8 bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB1c2VkIGJ5IDxsaXRlcmFsPldJ VEhPVVQKKyAgICAgICBPVkVSTEFQUzwvbGl0ZXJhbD4gcHJpbWFyeSBrZXlzIHRvIHByZXZl bnQgZW1wdHkgcmFuZ2UvbXVsdGlyYW5nZSB2YWx1ZXMuCiAgICAgICA8L3BhcmE+PC9lbnRy eT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9naXN0LnNnbWwg Yi9kb2Mvc3JjL3NnbWwvZ2lzdC5zZ21sCmluZGV4IGRjZjk0MzNmYTc4Li42MzhkOTEyZGMy ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2dpc3Quc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvZ2lzdC5zZ21sCkBAIC0xMTg2LDkgKzExODYsNiBAQCBteV9zb3J0c3VwcG9ydChQR19G VU5DVElPTl9BUkdTKQogICAgICAgIHByb3ZpZGVzIHRoaXMgZnVuY3Rpb24gYW5kIGl0IHJl dHVybnMgcmVzdWx0cyBmb3IKICAgICAgICA8bGl0ZXJhbD5SVEVxdWFsU3RyYXRlZ3lOdW1i ZXI8L2xpdGVyYWw+LCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUKICAgICAgICBub24tPGxpdGVy YWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gcGFydChzKSBvZiBhbiBpbmRleCBjb25z dHJhaW50LgotICAgICAgIElmIGl0IHJldHVybnMgcmVzdWx0cyBmb3IgPGxpdGVyYWw+UlRP dmVybGFwU3RyYXRlZ3lOdW1iZXI8L2xpdGVyYWw+LAotICAgICAgIHRoZSBvcGVyYXRvciBj bGFzcyBjYW4gYmUgdXNlZCBpbiB0aGUgPGxpdGVyYWw+V0lUSE9VVAotICAgICAgIE9WRVJM QVBTPC9saXRlcmFsPiBwYXJ0IG9mIGFuIGluZGV4IGNvbnN0cmFpbnQuCiAgICAgICA8L3Bh cmE+CiAKICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5k ZXggNzVmMDZiYzQ5Y2MuLjEyMDlmZGEyNDUxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Rh YmxlLnNnbWwKQEAgLTk5MiwxMCArOTkyLDcgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBS RU0KICAgICAgIDxsaXRlcmFsPlVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpPC9saXRlcmFsPiBiZWhhdmVzIGxpa2UKICAgICAgIDxsaXRlcmFsPkVYQ0xVREUgVVNJ TkcgR0lTVCAoaWQgV0lUSCA9LCB2YWxpZF9hdCBXSVRICiAgICAgICAmYW1wOyZhbXA7KTwv bGl0ZXJhbD4uICBUaGUgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY29s dW1uCi0gICAgICBtdXN0IGhhdmUgYSByYW5nZSBvciBtdWx0aXJhbmdlIHR5cGUuICAoVGVj aG5pY2FsbHksIGFueSB0eXBlIGlzIGFsbG93ZWQKLSAgICAgIHdob3NlIGRlZmF1bHQgR2lT VCBvcGNsYXNzIGluY2x1ZGVzIGFuIG92ZXJsYXBzIG9wZXJhdG9yLiAgU2VlIHRoZQotICAg ICAgPGxpdGVyYWw+c3RyYXRudW08L2xpdGVyYWw+IHN1cHBvcnQgZnVuY3Rpb24gdW5kZXIg PHhyZWYKLSAgICAgIGxpbmtlbmQ9Imdpc3QtZXh0ZW5zaWJpbGl0eSIvPiBmb3IgZGV0YWls cy4pICBUaGUgbm9uLTxsaXRlcmFsPldJVEhPVVQKKyAgICAgIG11c3QgaGF2ZSBhIHJhbmdl IG9yIG11bHRpcmFuZ2UgdHlwZS4gIFRoZSBub24tPGxpdGVyYWw+V0lUSE9VVAogICAgICAg T1ZFUkxBUFM8L2xpdGVyYWw+IGNvbHVtbnMgb2YgdGhlIGNvbnN0cmFpbnQgY2FuIGJlIGFu eSB0eXBlIHRoYXQgY2FuIGJlCiAgICAgICBjb21wYXJlZCBmb3IgZXF1YWxpdHkgaW4gYSBH aVNUIGluZGV4LiAgQnkgZGVmYXVsdCwgb25seSByYW5nZSB0eXBlcyBhcmUKICAgICAgIHN1 cHBvcnRlZCwgYnV0IHlvdSBjYW4gdXNlIG90aGVyIHR5cGVzIGJ5IGFkZGluZyB0aGUgPHhy ZWYKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vdHVwZGVzYy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMKaW5kZXggNDczNzlmZWYyMjAu LjE5NDYzM2Q1YzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1 cGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3R1cGRlc2MuYwpAQCAt MjI2LDYgKzIyNiw3IEBAIENyZWF0ZVR1cGxlRGVzY0NvcHlDb25zdHIoVHVwbGVEZXNjIHR1 cGRlc2MpCiAJCQkJY3B5LT5jaGVja1tpXS5jY2JpbiA9IHBzdHJkdXAoY29uc3RyLT5jaGVj a1tpXS5jY2Jpbik7CiAJCQkJY3B5LT5jaGVja1tpXS5jY3ZhbGlkID0gY29uc3RyLT5jaGVj a1tpXS5jY3ZhbGlkOwogCQkJCWNweS0+Y2hlY2tbaV0uY2Nub2luaGVyaXQgPSBjb25zdHIt PmNoZWNrW2ldLmNjbm9pbmhlcml0OworCQkJCWNweS0+Y2hlY2tbaV0uY2NwZXJpb2QgPSBj b25zdHItPmNoZWNrW2ldLmNjcGVyaW9kOwogCQkJfQogCQl9CiAKQEAgLTU0OCw3ICs1NDks OCBAQCBlcXVhbFR1cGxlRGVzY3MoVHVwbGVEZXNjIHR1cGRlc2MxLCBUdXBsZURlc2MgdHVw ZGVzYzIpCiAJCQlpZiAoIShzdHJjbXAoY2hlY2sxLT5jY25hbWUsIGNoZWNrMi0+Y2NuYW1l KSA9PSAwICYmCiAJCQkJICBzdHJjbXAoY2hlY2sxLT5jY2JpbiwgY2hlY2syLT5jY2Jpbikg PT0gMCAmJgogCQkJCSAgY2hlY2sxLT5jY3ZhbGlkID09IGNoZWNrMi0+Y2N2YWxpZCAmJgot CQkJCSAgY2hlY2sxLT5jY25vaW5oZXJpdCA9PSBjaGVjazItPmNjbm9pbmhlcml0KSkKKwkJ CQkgIGNoZWNrMS0+Y2Nub2luaGVyaXQgPT0gY2hlY2syLT5jY25vaW5oZXJpdCAmJgorCQkJ CSAgY2hlY2sxLT5jY3BlcmlvZCA9PSBjaGVjazItPmNjcGVyaW9kKSkKIAkJCQlyZXR1cm4g ZmFsc2U7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAu YyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4IDkyMmJhNzlhYzI1Li44ODkw MGVmNzg2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTEwMywxMyArMTAzLDEzIEBAIHN0YXRp YyBPYmplY3RBZGRyZXNzIEFkZE5ld1JlbGF0aW9uVHlwZShjb25zdCBjaGFyICp0eXBlTmFt ZSwKIHN0YXRpYyB2b2lkIFJlbGF0aW9uUmVtb3ZlSW5oZXJpdGFuY2UoT2lkIHJlbGlkKTsK IHN0YXRpYyBPaWQJU3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNj bmFtZSwgTm9kZSAqZXhwciwKIAkJCQkJCSAgYm9vbCBpc192YWxpZGF0ZWQsIGJvb2wgaXNf bG9jYWwsIGludCBpbmhjb3VudCwKLQkJCQkJCSAgYm9vbCBpc19ub19pbmhlcml0LCBib29s IGlzX2ludGVybmFsKTsKKwkJCQkJCSAgYm9vbCBpc19ub19pbmhlcml0LCBib29sIGlzX2lu dGVybmFsLCBib29sIHdpdGhvdXRfb3ZlcmxhcHMpOwogc3RhdGljIHZvaWQgU3RvcmVDb25z dHJhaW50cyhSZWxhdGlvbiByZWwsIExpc3QgKmNvb2tlZF9jb25zdHJhaW50cywKIAkJCQkJ CQkgYm9vbCBpc19pbnRlcm5hbCk7CiBzdGF0aWMgYm9vbCBNZXJnZVdpdGhFeGlzdGluZ0Nv bnN0cmFpbnQoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIs CiAJCQkJCQkJCQkJYm9vbCBhbGxvd19tZXJnZSwgYm9vbCBpc19sb2NhbCwKIAkJCQkJCQkJ CQlib29sIGlzX2luaXRpYWxseV92YWxpZCwKLQkJCQkJCQkJCQlib29sIGlzX25vX2luaGVy aXQpOworCQkJCQkJCQkJCWJvb2wgaXNfbm9faW5oZXJpdCwgYm9vbCBjb25wZXJpb2QpOwog c3RhdGljIHZvaWQgU2V0UmVsYXRpb25OdW1DaGVja3MoUmVsYXRpb24gcmVsLCBpbnQgbnVt Y2hlY2tzKTsKIHN0YXRpYyBOb2RlICpjb29rQ29uc3RyYWludChQYXJzZVN0YXRlICpwc3Rh dGUsCiAJCQkJCQkJTm9kZSAqcmF3X2NvbnN0cmFpbnQsCkBAIC0yMDY1LDcgKzIwNjUsNyBA QCBTZXRBdHRyTWlzc2luZyhPaWQgcmVsaWQsIGNoYXIgKmF0dG5hbWUsIGNoYXIgKnZhbHVl KQogc3RhdGljIE9pZAogU3RvcmVSZWxDaGVjayhSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNjbmFtZSwgTm9kZSAqZXhwciwKIAkJCSAgYm9vbCBpc192YWxpZGF0ZWQsIGJvb2wgaXNf bG9jYWwsIGludCBpbmhjb3VudCwKLQkJCSAgYm9vbCBpc19ub19pbmhlcml0LCBib29sIGlz X2ludGVybmFsKQorCQkJICBib29sIGlzX25vX2luaGVyaXQsIGJvb2wgaXNfaW50ZXJuYWws IGJvb2wgd2l0aG91dF9vdmVybGFwcykKIHsKIAljaGFyCSAgICpjY2JpbjsKIAlMaXN0CSAg ICp2YXJMaXN0OwpAQCAtMjE1NSw3ICsyMTU1LDcgQEAgU3RvcmVSZWxDaGVjayhSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKmNjbmFtZSwgTm9kZSAqZXhwciwKIAkJCQkJCQkgIGlzX2xv Y2FsLCAvKiBjb25pc2xvY2FsICovCiAJCQkJCQkJICBpbmhjb3VudCwgLyogY29uaW5oY291 bnQgKi8KIAkJCQkJCQkgIGlzX25vX2luaGVyaXQsCS8qIGNvbm5vaW5oZXJpdCAqLwotCQkJ CQkJCSAgZmFsc2UsCS8qIGNvbnBlcmlvZCAqLworCQkJCQkJCSAgd2l0aG91dF9vdmVybGFw cywJLyogY29ucGVyaW9kICovCiAJCQkJCQkJICBpc19pbnRlcm5hbCk7IC8qIGludGVybmFs bHkgY29uc3RydWN0ZWQ/ICovCiAKIAlwZnJlZShjY2Jpbik7CkBAIC0yMjUyLDcgKzIyNTIs NyBAQCBTdG9yZUNvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwgTGlzdCAqY29va2VkX2NvbnN0 cmFpbnRzLCBib29sIGlzX2ludGVybmFsKQogCQkJCQlTdG9yZVJlbENoZWNrKHJlbCwgY29u LT5uYW1lLCBjb24tPmV4cHIsCiAJCQkJCQkJCSAgIWNvbi0+c2tpcF92YWxpZGF0aW9uLCBj b24tPmlzX2xvY2FsLAogCQkJCQkJCQkgIGNvbi0+aW5oY291bnQsIGNvbi0+aXNfbm9faW5o ZXJpdCwKLQkJCQkJCQkJICBpc19pbnRlcm5hbCk7CisJCQkJCQkJCSAgaXNfaW50ZXJuYWws IGNvbi0+Y29ucGVyaW9kKTsKIAkJCQludW1jaGVja3MrKzsKIAkJCQlicmVhazsKIApAQCAt MjM5OSw2ICsyMzk5LDcgQEAgQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhSZWxhdGlvbiBy ZWwsCiAJCWNvb2tlZC0+aXNfbG9jYWwgPSBpc19sb2NhbDsKIAkJY29va2VkLT5pbmhjb3Vu dCA9IGlzX2xvY2FsID8gMCA6IDE7CiAJCWNvb2tlZC0+aXNfbm9faW5oZXJpdCA9IGZhbHNl OworCQljb29rZWQtPmNvbnBlcmlvZCA9IGZhbHNlOwogCQljb29rZWRDb25zdHJhaW50cyA9 IGxhcHBlbmQoY29va2VkQ29uc3RyYWludHMsIGNvb2tlZCk7CiAJfQogCkBAIC0yNDcwLDcg KzI0NzEsNyBAQCBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAkJ CQlpZiAoTWVyZ2VXaXRoRXhpc3RpbmdDb25zdHJhaW50KHJlbCwgY2NuYW1lLCBleHByLAog CQkJCQkJCQkJCQkJYWxsb3dfbWVyZ2UsIGlzX2xvY2FsLAogCQkJCQkJCQkJCQkJY2RlZi0+ aW5pdGlhbGx5X3ZhbGlkLAotCQkJCQkJCQkJCQkJY2RlZi0+aXNfbm9faW5oZXJpdCkpCisJ CQkJCQkJCQkJCQljZGVmLT5pc19ub19pbmhlcml0LCBjZGVmLT53aXRob3V0X292ZXJsYXBz KSkKIAkJCQkJY29udGludWU7CiAJCQl9CiAJCQllbHNlCkBAIC0yNTE4LDcgKzI1MTksOCBA QCBBZGRSZWxhdGlvbk5ld0NvbnN0cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAkJCSAqLwogCQkJ Y29uc3RyT2lkID0KIAkJCQlTdG9yZVJlbENoZWNrKHJlbCwgY2NuYW1lLCBleHByLCBjZGVm LT5pbml0aWFsbHlfdmFsaWQsIGlzX2xvY2FsLAotCQkJCQkJCSAgaXNfbG9jYWwgPyAwIDog MSwgY2RlZi0+aXNfbm9faW5oZXJpdCwgaXNfaW50ZXJuYWwpOworCQkJCQkJCSAgaXNfbG9j YWwgPyAwIDogMSwgY2RlZi0+aXNfbm9faW5oZXJpdCwgaXNfaW50ZXJuYWwsCisJCQkJCQkJ ICBjZGVmLT53aXRob3V0X292ZXJsYXBzKTsKIAogCQkJbnVtY2hlY2tzKys7CiAKQEAgLTI1 MzIsNiArMjUzNCw3IEBAIEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMoUmVsYXRpb24gcmVs LAogCQkJY29va2VkLT5pc19sb2NhbCA9IGlzX2xvY2FsOwogCQkJY29va2VkLT5pbmhjb3Vu dCA9IGlzX2xvY2FsID8gMCA6IDE7CiAJCQljb29rZWQtPmlzX25vX2luaGVyaXQgPSBjZGVm LT5pc19ub19pbmhlcml0OworCQkJY29va2VkLT5jb25wZXJpb2QgPSBjZGVmLT53aXRob3V0 X292ZXJsYXBzOwogCQkJY29va2VkQ29uc3RyYWludHMgPSBsYXBwZW5kKGNvb2tlZENvbnN0 cmFpbnRzLCBjb29rZWQpOwogCQl9CiAJCWVsc2UgaWYgKGNkZWYtPmNvbnR5cGUgPT0gQ09O U1RSX05PVE5VTEwpCkBAIC0yNjMyLDYgKzI2MzUsNyBAQCBBZGRSZWxhdGlvbk5ld0NvbnN0 cmFpbnRzKFJlbGF0aW9uIHJlbCwKIAkJCW5uY29va2VkLT5pc19sb2NhbCA9IGlzX2xvY2Fs OwogCQkJbm5jb29rZWQtPmluaGNvdW50ID0gY2RlZi0+aW5oY291bnQ7CiAJCQlubmNvb2tl ZC0+aXNfbm9faW5oZXJpdCA9IGNkZWYtPmlzX25vX2luaGVyaXQ7CisJCQlubmNvb2tlZC0+ Y29ucGVyaW9kID0gZmFsc2U7CiAKIAkJCWNvb2tlZENvbnN0cmFpbnRzID0gbGFwcGVuZChj b29rZWRDb25zdHJhaW50cywgbm5jb29rZWQpOwogCQl9CkBAIC0yNjYzLDcgKzI2NjcsNyBA QCBzdGF0aWMgYm9vbAogTWVyZ2VXaXRoRXhpc3RpbmdDb25zdHJhaW50KFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqY2NuYW1lLCBOb2RlICpleHByLAogCQkJCQkJCWJvb2wgYWxsb3df bWVyZ2UsIGJvb2wgaXNfbG9jYWwsCiAJCQkJCQkJYm9vbCBpc19pbml0aWFsbHlfdmFsaWQs Ci0JCQkJCQkJYm9vbCBpc19ub19pbmhlcml0KQorCQkJCQkJCWJvb2wgaXNfbm9faW5oZXJp dCwgYm9vbCBjb25wZXJpb2QpCiB7CiAJYm9vbAkJZm91bmQ7CiAJUmVsYXRpb24JY29uRGVz YzsKQEAgLTI3NTgsNiArMjc2MiwxNiBAQCBNZXJnZVdpdGhFeGlzdGluZ0NvbnN0cmFpbnQo UmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCSBl cnJtc2coImNvbnN0cmFpbnQgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIE5PVCBWQUxJRCBjb25z dHJhaW50IG9uIHJlbGF0aW9uIFwiJXNcIiIsCiAJCQkJCQkJY2NuYW1lLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCisJCS8qCisJCSAqIElmIGVpdGhlciBpbmhlcml0 ZWQgb3IgaW5oZXJpdGluZyBpcyBhIGNvbnBlcmlvZCBDSEVDSyBjb25zdHJhaW50LAorCQkg KiB0aGUgb3RoZXIgc2hvdWxkIGJlIHRvby4KKwkJICovCisJCWlmIChjb25wZXJpb2QgIT0g Y29uLT5jb25wZXJpb2QpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfT0JKRUNUX0RFRklOSVRJT04pLAorCQkJCQkgZXJybXNnKCJjb25zdHJh aW50IFwiJXNcIiBjb25mbGljdHMgd2l0aCBpbmhlcml0ZWQgY29uc3RyYWludCBvbiByZWxh dGlvbiBcIiVzXCIiLAorCQkJCQkJCWNjbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUo cmVsKSkpKTsKKwogCQkvKiBPSyB0byB1cGRhdGUgdGhlIHR1cGxlICovCiAJCWVyZXBvcnQo Tk9USUNFLAogCQkJCShlcnJtc2coIm1lcmdpbmcgY29uc3RyYWludCBcIiVzXCIgd2l0aCBp bmhlcml0ZWQgZGVmaW5pdGlvbiIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKaW5kZXggNWE4NTY4YzU1 YzkuLmZjYmE5NTljNjQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5jCkBAIC0xMjI0LDYgKzEyMjQs MzYgQEAgaW5kZXhfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAkgKi8KIAlDb21t YW5kQ291bnRlckluY3JlbWVudCgpOwogCisJLyoKKwkgKiBJZiB0aGUgaW5kZXggaXMgYSBQ UklNQVJZIEtFWSB3aXRoIFdJVEhPVVQgT1ZFUkxBUFMsCisJICogd2UgbXVzdCBjcmVhdGUg YSBDSEVDSyBjb25zdHJhaW50IHRvIHByZXZlbnQgcmFuZ2UvbXVsdGlyYW5nZQorCSAqIHZh bHVlcyBvZiAnZW1wdHknLiBTaW5jZSBlbXB0eSBkb2Vzbid0IG92ZXJsYXAgaXRzZWxmLAor CSAqIGR1cGxpY2F0ZXMgd291bGQgYmUgYWxsb3dlZC4KKwkgKi8KKwlpZiAoaXNwcmltYXJ5 KQorCXsKKwkJT2JqZWN0QWRkcmVzcyBwa19hZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJl c3M7CisJCU9iamVjdEFkZHJlc3MgY2hlY2tfYWRkcmVzcyA9IEludmFsaWRPYmplY3RBZGRy ZXNzOworCQlPaWQgcGtfb2lkID0gSW52YWxpZE9pZDsKKwkJT2lkIGNoZWNrX29pZCA9IElu dmFsaWRPaWQ7CisKKwkJaWYgKGdldF9wa19wZXJpb2RfY2hlY2tfY29uc3RyYWludChoZWFw UmVsYXRpb24sICZjaGVja19vaWQsICZwa19vaWQpKQorCQl7CisJCQlBc3NlcnQoT2lkSXNW YWxpZChjaGVja19vaWQpKTsKKwkJCUFzc2VydChPaWRJc1ZhbGlkKHBrX29pZCkpOworCisJ CQlPYmplY3RBZGRyZXNzU2V0KGNoZWNrX2FkZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklk LCBjaGVja19vaWQpOworCQkJT2JqZWN0QWRkcmVzc1NldChwa19hZGRyZXNzLCBDb25zdHJh aW50UmVsYXRpb25JZCwgcGtfb2lkKTsKKworCQkJLyoKKwkJCSAqIFJlZ2lzdGVyIHRoZSBD SEVDSyBjb25zdHJhaW50IGFzIGFuIElOVEVSTkFMIGRlcGVuZGVuY3kgb2YgdGhlIFBLCisJ CQkgKiBzbyB0aGF0IGl0IGNhbid0IGJlIGRyb3BwZWQgYnkgaGFuZCBhbmQgaXMgZHJvcHBl ZCBhdXRvbWF0aWNhbGx5CisJCQkgKiB3aXRoIHRoZSBQSy4KKwkJCSAqLworCQkJcmVjb3Jk RGVwZW5kZW5jeU9uKCZjaGVja19hZGRyZXNzLCAmcGtfYWRkcmVzcywgREVQRU5ERU5DWV9J TlRFUk5BTCk7CisJCX0KKwl9CisKIAkvKgogCSAqIEluIGJvb3RzdHJhcCBtb2RlLCB3ZSBo YXZlIHRvIGZpbGwgaW4gdGhlIGluZGV4IHN0cmF0ZWd5IHN0cnVjdHVyZSB3aXRoCiAJICog aW5mb3JtYXRpb24gZnJvbSB0aGUgY2F0YWxvZ3MuICBJZiB3ZSBhcmVuJ3QgYm9vdHN0cmFw cGluZywgdGhlbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29u c3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5kZXgg MTJhNzNkNWEzMDkuLjkyNWRhY2NhMTBlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0 cmFpbnQuYwpAQCAtOTAzLDYgKzkwMyw3IEBAIFJlbGF0aW9uR2V0Tm90TnVsbENvbnN0cmFp bnRzKE9pZCByZWxpZCwgYm9vbCBjb29rZWQpCiAJCQljb29rZWQtPnNraXBfdmFsaWRhdGlv biA9IGZhbHNlOwogCQkJY29va2VkLT5pc19sb2NhbCA9IHRydWU7CiAJCQljb29rZWQtPmlu aGNvdW50ID0gMDsKKwkJCWNvb2tlZC0+Y29ucGVyaW9kID0gZmFsc2U7CiAJCQljb29rZWQt PmlzX25vX2luaGVyaXQgPSBjb25Gb3JtLT5jb25ub2luaGVyaXQ7CiAKIAkJCW5vdG51bGxz ID0gbGFwcGVuZChub3RudWxscywgY29va2VkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKaW5kZXggZGUwZDkxMWI0NjguLjM1NmMyNDQyNTdlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2Fs bGJhY2tGb3JUcnVuY2F0ZShjb25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBzdGF0aWMgTGlz dCAqTWVyZ2VBdHRyaWJ1dGVzKExpc3QgKmNvbHVtbnMsIGNvbnN0IExpc3QgKnN1cGVycywg Y2hhciByZWxwZXJzaXN0ZW5jZSwKIAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24sIExpc3Qg KipzdXBjb25zdHIsCiAJCQkJCQkJIExpc3QgKipzdXBub3RudWxscyk7Ci1zdGF0aWMgTGlz dCAqTWVyZ2VDaGVja0NvbnN0cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNvbnN0IGNoYXIg Km5hbWUsIE5vZGUgKmV4cHIpOworc3RhdGljIExpc3QgKk1lcmdlQ2hlY2tDb25zdHJhaW50 KExpc3QgKmNvbnN0cmFpbnRzLCBjb25zdCBjaGFyICpuYW1lLCBOb2RlICpleHByLCBib29s IGNvbnBlcmlvZCk7CiBzdGF0aWMgdm9pZCBNZXJnZUNoaWxkQXR0cmlidXRlKExpc3QgKmlu aF9jb2x1bW5zLCBpbnQgZXhpc3RfYXR0bm8sIGludCBuZXdjb2xfYXR0bm8sIGNvbnN0IENv bHVtbkRlZiAqbmV3ZGVmKTsKIHN0YXRpYyBDb2x1bW5EZWYgKk1lcmdlSW5oZXJpdGVkQXR0 cmlidXRlKExpc3QgKmluaF9jb2x1bW5zLCBpbnQgZXhpc3RfYXR0bm8sIGNvbnN0IENvbHVt bkRlZiAqbmV3ZGVmKTsKIHN0YXRpYyB2b2lkIE1lcmdlQXR0cmlidXRlc0ludG9FeGlzdGlu ZyhSZWxhdGlvbiBjaGlsZF9yZWwsIFJlbGF0aW9uIHBhcmVudF9yZWwsIGJvb2wgaXNwYXJ0 aXRpb24pOwpAQCAtNTg0LDcgKzU4NCw3IEBAIHN0YXRpYyB2b2lkIFJlbWVtYmVySW5kZXhG b3JSZWJ1aWxkaW5nKE9pZCBpbmRvaWQsIEFsdGVyZWRUYWJsZUluZm8gKnRhYik7CiBzdGF0 aWMgdm9pZCBSZW1lbWJlclN0YXRpc3RpY3NGb3JSZWJ1aWxkaW5nKE9pZCBzdHhvaWQsIEFs dGVyZWRUYWJsZUluZm8gKnRhYik7CiBzdGF0aWMgdm9pZCBBVFBvc3RBbHRlclR5cGVDbGVh bnVwKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJICAg TE9DS01PREUgbG9ja21vZGUpOwotc3RhdGljIHZvaWQgQVRQb3N0QWx0ZXJUeXBlUGFyc2Uo T2lkIG9sZElkLCBPaWQgb2xkUmVsSWQsIE9pZCByZWZSZWxJZCwKK3N0YXRpYyB2b2lkIEFU UG9zdEFsdGVyVHlwZVBhcnNlKE9pZCBvbGRJZCwgT2lkIG9sZFJlbElkLCBPaWQgcmVmUmVs SWQsIGJvb2wgY29ucGVyaW9kLAogCQkJCQkJCQkgY2hhciAqY21kLCBMaXN0ICoqd3F1ZXVl LCBMT0NLTU9ERSBsb2NrbW9kZSwKIAkJCQkJCQkJIGJvb2wgcmV3cml0ZSk7CiBzdGF0aWMg dm9pZCBSZWJ1aWxkQ29uc3RyYWludENvbW1lbnQoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBB bHRlclRhYmxlUGFzcyBwYXNzLApAQCAtOTYwLDYgKzk2MCw3IEBAIERlZmluZVJlbGF0aW9u KENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJCQljb29r ZWQtPmlzX2xvY2FsID0gdHJ1ZTsJLyogbm90IHVzZWQgZm9yIGRlZmF1bHRzICovCiAJCQlj b29rZWQtPmluaGNvdW50ID0gMDsJLyogZGl0dG8gKi8KIAkJCWNvb2tlZC0+aXNfbm9faW5o ZXJpdCA9IGZhbHNlOworCQkJY29va2VkLT5jb25wZXJpb2QgPSBmYWxzZTsKIAkJCWNvb2tl ZERlZmF1bHRzID0gbGFwcGVuZChjb29rZWREZWZhdWx0cywgY29va2VkKTsKIAkJCWF0dHIt PmF0dGhhc2RlZiA9IHRydWU7CiAJCX0KQEAgLTI4MTEsNiArMjgxMiw3IEBAIE1lcmdlQXR0 cmlidXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVy c2lzdGVuY2UsCiAJCQkJbm4tPmlzX2xvY2FsID0gZmFsc2U7CiAJCQkJbm4tPmluaGNvdW50 ID0gMTsKIAkJCQlubi0+aXNfbm9faW5oZXJpdCA9IGZhbHNlOworCQkJCW5uLT5jb25wZXJp b2QgPSBmYWxzZTsKIAogCQkJCW5uY29uc3RyYWludHMgPSBsYXBwZW5kKG5uY29uc3RyYWlu dHMsIG5uKTsKIAkJCX0KQEAgLTI5MjIsNyArMjkyNCw3IEBAIE1lcmdlQXR0cmlidXRlcyhM aXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVuY2Us CiAJCQkJCQkJCQkgICBuYW1lLAogCQkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5h bWUocmVsYXRpb24pKSkpOwogCi0JCQkJY29uc3RyYWludHMgPSBNZXJnZUNoZWNrQ29uc3Ry YWludChjb25zdHJhaW50cywgbmFtZSwgZXhwcik7CisJCQkJY29uc3RyYWludHMgPSBNZXJn ZUNoZWNrQ29uc3RyYWludChjb25zdHJhaW50cywgbmFtZSwgZXhwciwgY2hlY2tbaV0uY2Nw ZXJpb2QpOwogCQkJfQogCQl9CiAKQEAgLTMxNDAsNyArMzE0Miw3IEBAIE1lcmdlQXR0cmli dXRlcyhMaXN0ICpjb2x1bW5zLCBjb25zdCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lz dGVuY2UsCiAgKiB0aGUgbGlzdC4KICAqLwogc3RhdGljIExpc3QgKgotTWVyZ2VDaGVja0Nv bnN0cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNvbnN0IGNoYXIgKm5hbWUsIE5vZGUgKmV4 cHIpCitNZXJnZUNoZWNrQ29uc3RyYWludChMaXN0ICpjb25zdHJhaW50cywgY29uc3QgY2hh ciAqbmFtZSwgTm9kZSAqZXhwciwgYm9vbCBjb25wZXJpb2QpCiB7CiAJTGlzdENlbGwgICAq bGM7CiAJQ29va2VkQ29uc3RyYWludCAqbmV3Y29uOwpAQCAtMzE1NSw3ICszMTU3LDggQEAg TWVyZ2VDaGVja0NvbnN0cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNvbnN0IGNoYXIgKm5h bWUsIE5vZGUgKmV4cHIpCiAJCWlmIChzdHJjbXAoY2Nvbi0+bmFtZSwgbmFtZSkgIT0gMCkK IAkJCWNvbnRpbnVlOwogCi0JCWlmIChlcXVhbChleHByLCBjY29uLT5leHByKSkKKwkJLyog RXhwcmVzc2lvbnMgbWF0Y2gsIGFuZCBjb25wZXJpb2QgbWF0Y2hlcyAqLworCQlpZiAoZXF1 YWwoZXhwciwgY2Nvbi0+ZXhwcikgJiYgY2Nvbi0+Y29ucGVyaW9kID09IGNvbnBlcmlvZCkK IAkJewogCQkJLyogT0sgdG8gbWVyZ2UgY29uc3RyYWludCB3aXRoIGV4aXN0aW5nICovCiAJ CQljY29uLT5pbmhjb3VudCsrOwpAQCAtMzE4MSw2ICszMTg0LDcgQEAgTWVyZ2VDaGVja0Nv bnN0cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNvbnN0IGNoYXIgKm5hbWUsIE5vZGUgKmV4 cHIpCiAJbmV3Y29uLT5uYW1lID0gcHN0cmR1cChuYW1lKTsKIAluZXdjb24tPmV4cHIgPSBl eHByOwogCW5ld2Nvbi0+aW5oY291bnQgPSAxOworCW5ld2Nvbi0+Y29ucGVyaW9kID0gY29u cGVyaW9kOwogCXJldHVybiBsYXBwZW5kKGNvbnN0cmFpbnRzLCBuZXdjb24pOwogfQogCkBA IC05NzI3LDYgKzk3MzEsOTQgQEAgQ2hvb3NlRm9yZWlnbktleUNvbnN0cmFpbnROYW1lQWRk aXRpb24oTGlzdCAqY29sbmFtZXMpCiAJcmV0dXJuIHBzdHJkdXAoYnVmKTsKIH0KIAorLyoK KyAqIEdldHMgdGhlIHRlbXBvcmFsIFBSSU1BUlkgS0VZIGNvbnN0cmFpbnQgb2lkIGFuZCBp dHMgbm90LWVtcHR5IENIRUNLIGNvbnN0cmFpbnQuCisgKiBSZXR1cm5zIHRydWUgaWYgd2Ug Zm91bmQgYm90aCwgb3IgZWxzZSBmYWxzZSAoZS5nLiBpZiB0aGUgdGFibGUgaGFzIG5vIFBL CisgKiBvciBpdCBkb2Vzbid0IHVzZSBXSVRIT1VUIE9WRVJMQVBTKS4KKyAqCisgKiBXZSBt YXkgY3JlYXRlIHRoZSBQUklNQVJZIEtFWSBmaXJzdCBvciB0aGUgQ0hFQ0sgY29uc3RyYWlu dCBmaXJzdCwKKyAqIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0aW9uIChjcmVhdGUtdnMtYWx0 ZXIgdGFibGUsIHdpdGgtdnMtd2l0aG91dCBwYXJ0aXRpb25pbmcKKyAqIG9yIGluaGVyaXRh bmNlLCByZS1hZGRpbmcgYW4gaW5kZXggZnJvbSBBTFRFUiBUWVBFIGJ1dCBrZWVwaW5nIHRo ZSBDSEVDSyBjb25zdHJhaW50KSwKKyAqIHNvIHdlIGRvIG5vdGhpbmcgdW5sZXNzIGJvdGgg YXJlIGZvdW5kLgorICovCitib29sCitnZXRfcGtfcGVyaW9kX2NoZWNrX2NvbnN0cmFpbnQo UmVsYXRpb24gaGVhcFJlbCwgT2lkICpjaGVja19vaWQsIE9pZCAqcGtfb2lkKQoreworCVJl bGF0aW9uCXBnX2NvbnN0cmFpbnQ7CisJSGVhcFR1cGxlCWNvblR1cDsKKwlTeXNTY2FuRGVz YwlzY2FuOworCVNjYW5LZXlEYXRhCWtleTsKKwlBcnJheVR5cGUgICphcnI7CisJYm9vbAkJ aXNOdWxsOworCURhdHVtCQlhZGF0dW07CisJaW50CQkJbnVta2V5czsKKwlpbnQxNgkgICAq YXR0bnVtczsKKwlpbnQxNgkJcGtfcGVyaW9kX2F0dG51bSA9IC0xOworCWludDE2CQljaGVj a19wZXJpb2RfYXR0bnVtID0gLTE7CisKKwlwZ19jb25zdHJhaW50ID0gdGFibGVfb3BlbihD b25zdHJhaW50UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlTY2FuS2V5SW5pdCgm a2V5LAorCQkJQW51bV9wZ19jb25zdHJhaW50X2NvbnJlbGlkLAorCQkJQlRFcXVhbFN0cmF0 ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJUmVsYXRpb25HZXRSZWxpZChoZWFwUmVsKSk7CisK KwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX2NvbnN0cmFpbnQsIENvbnN0cmFpbnRS ZWxpZFR5cGlkTmFtZUluZGV4SWQsCisJCQl0cnVlLCBOVUxMLCAxLCAma2V5KTsKKworCXdo aWxlIChIZWFwVHVwbGVJc1ZhbGlkKGNvblR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbikp KQorCXsKKwkJRm9ybV9wZ19jb25zdHJhaW50IGNvbiA9IChGb3JtX3BnX2NvbnN0cmFpbnQp IEdFVFNUUlVDVChjb25UdXApOworCisJCS8qCisJCSAqIEZpbmQgYm90aCB0aGUgUFJJTUFS WSBLRVkgYW5kIHRoZSBDSEVDSyBjb25zdHJhaW50LgorCQkgKiBUaGV5IHNob3VsZCBiZSB2 YWxpZGF0ZWQgYW5kIHdpdGggdHJ1ZSBjb25wZXJpb2QuCisJCSAqLworCQlpZiAoY29uLT5j b250eXBlICE9IENPTlNUUkFJTlRfUFJJTUFSWSAmJiBjb24tPmNvbnR5cGUgIT0gQ09OU1RS QUlOVF9DSEVDSykKKwkJCWNvbnRpbnVlOworCQlpZiAoIWNvbi0+Y29udmFsaWRhdGVkKQor CQkJY29udGludWU7CisJCWlmICghY29uLT5jb25wZXJpb2QpCisJCQljb250aW51ZTsKKwor CQlhZGF0dW0gPSBoZWFwX2dldGF0dHIoY29uVHVwLCBBbnVtX3BnX2NvbnN0cmFpbnRfY29u a2V5LAorCQkJCVJlbGF0aW9uR2V0RGVzY3IocGdfY29uc3RyYWludCksICZpc051bGwpOwor CQlpZiAoaXNOdWxsKQorCQkJZWxvZyhFUlJPUiwgIm51bGwgY29ua2V5IGZvciBjb25zdHJh aW50ICV1IiwgY29uLT5vaWQpOworCisJCWFyciA9IERhdHVtR2V0QXJyYXlUeXBlUChhZGF0 dW0pOworCQludW1rZXlzID0gQVJSX0RJTVMoYXJyKVswXTsKKwkJaWYgKEFSUl9ORElNKGFy cikgIT0gMSB8fAorCQkJbnVta2V5cyA8IDAgfHwKKwkJCUFSUl9IQVNOVUxMKGFycikgfHwK KwkJCUFSUl9FTEVNVFlQRShhcnIpICE9IElOVDJPSUQpCisJCQllbG9nKEVSUk9SLCAiY29u a2V5IGlzIG5vdCBhIDEtRCBzbWFsbGludCBhcnJheSIpOworCisJCWF0dG51bXMgPSAoaW50 MTYgKikgQVJSX0RBVEFfUFRSKGFycik7CisJCWlmIChjb24tPmNvbnR5cGUgPT0gQ09OU1RS QUlOVF9QUklNQVJZKQorCQl7CisJCQlwa19wZXJpb2RfYXR0bnVtID0gYXR0bnVtc1tudW1r ZXlzIC0gMV07CisJCQkqcGtfb2lkID0gY29uLT5vaWQ7CisJCX0KKwkJZWxzZQorCQl7CisJ CQljaGVja19wZXJpb2RfYXR0bnVtID0gYXR0bnVtc1tudW1rZXlzIC0gMV07CisJCQkqY2hl Y2tfb2lkID0gY29uLT5vaWQ7CisJCX0KKwl9CisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsK Kwl0YWJsZV9jbG9zZShwZ19jb25zdHJhaW50LCBBY2Nlc3NTaGFyZUxvY2spOworCisJaWYg KHBrX3BlcmlvZF9hdHRudW0gIT0gLTEgJiYgY2hlY2tfcGVyaW9kX2F0dG51bSAhPSAtMSkK Kwl7CisJCWlmIChjaGVja19wZXJpb2RfYXR0bnVtICE9IHBrX3BlcmlvZF9hdHRudW0pCisJ CQllbG9nKEVSUk9SLCAiV0lUSE9VVCBPVkVSTEFQUyBDSEVDSyBjb25zdHJhaW50IHNob3Vs ZCBtYXRjaCB0aGUgUFJJTUFSWSBLRVkgYXR0cmlidXRlIik7CisKKwkJcmV0dXJuIHRydWU7 CisJfQorCWVsc2UKKwkJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogQWRkIGEgY2hlY2sg b3Igbm90LW51bGwgY29uc3RyYWludCB0byBhIHNpbmdsZSB0YWJsZSBhbmQgaXRzIGNoaWxk cmVuLgogICogUmV0dXJucyB0aGUgYWRkcmVzcyBvZiB0aGUgY29uc3RyYWludCBhZGRlZCB0 byB0aGUgcGFyZW50IHJlbGF0aW9uLApAQCAtOTgxOSw2ICs5OTExLDM0IEBAIEFUQWRkQ2hl Y2tOTkNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCiAJLyogQWR2YW5jZSBjb21tYW5kIGNvdW50ZXIgaW4gY2FzZSBzYW1l IHRhYmxlIGlzIHZpc2l0ZWQgbXVsdGlwbGUgdGltZXMgKi8KIAlDb21tYW5kQ291bnRlcklu Y3JlbWVudCgpOwogCisJLyoKKwkgKiBJZiB0aGlzIGlzIGEgbm90LWVtcHR5IENIRUNLIGNv bnN0cmFpbnQgZm9yIGEgV0lUSE9VVCBPVkVSTEFQUyBQSywKKwkgKiB3ZSBtdXN0IHJlY29y ZCBpdCBhcyBhbiBJTlRFUk5BTCBkZXBlbmRlbmN5LgorCSAqLworCWlmIChjb25zdHItPndp dGhvdXRfb3ZlcmxhcHMpCisJeworCQlPYmplY3RBZGRyZXNzIHBrX2FkZHJlc3MgPSBJbnZh bGlkT2JqZWN0QWRkcmVzczsKKwkJT2JqZWN0QWRkcmVzcyBjaGVja19hZGRyZXNzID0gSW52 YWxpZE9iamVjdEFkZHJlc3M7CisJCU9pZCBwa19vaWQgPSBJbnZhbGlkT2lkOworCQlPaWQg Y2hlY2tfb2lkID0gSW52YWxpZE9pZDsKKworCQlpZiAoZ2V0X3BrX3BlcmlvZF9jaGVja19j b25zdHJhaW50KHJlbCwgJmNoZWNrX29pZCwgJnBrX29pZCkpCisJCXsKKwkJCUFzc2VydChP aWRJc1ZhbGlkKGNoZWNrX29pZCkpOworCQkJQXNzZXJ0KE9pZElzVmFsaWQocGtfb2lkKSk7 CisKKwkJCU9iamVjdEFkZHJlc3NTZXQoY2hlY2tfYWRkcmVzcywgQ29uc3RyYWludFJlbGF0 aW9uSWQsIGNoZWNrX29pZCk7CisJCQlPYmplY3RBZGRyZXNzU2V0KHBrX2FkZHJlc3MsIENv bnN0cmFpbnRSZWxhdGlvbklkLCBwa19vaWQpOworCisJCQkvKgorCQkJICogUmVnaXN0ZXIg dGhlIENIRUNLIGNvbnN0cmFpbnQgYXMgYW4gSU5URVJOQUwgZGVwZW5kZW5jeSBvZiB0aGUg UEsKKwkJCSAqIHNvIHRoYXQgaXQgY2FuJ3QgYmUgZHJvcHBlZCBieSBoYW5kIGFuZCBpcyBk cm9wcGVkIGF1dG9tYXRpY2FsbHkKKwkJCSAqIHdpdGggdGhlIFBLLgorCQkJICovCisJCQly ZWNvcmREZXBlbmRlbmN5T24oJmNoZWNrX2FkZHJlc3MsICZwa19hZGRyZXNzLCBERVBFTkRF TkNZX0lOVEVSTkFMKTsKKwkJfQorCX0KKwogCS8qCiAJICogSWYgdGhlIGNvbnN0cmFpbnQg Z290IG1lcmdlZCB3aXRoIGFuIGV4aXN0aW5nIGNvbnN0cmFpbnQsIHdlJ3JlIGRvbmUuCiAJ ICogV2UgbXVzdG4ndCByZWN1cnNlIHRvIGNoaWxkIHRhYmxlcyBpbiB0aGlzIGNhc2UsIGJl Y2F1c2UgdGhleSd2ZQpAQCAtMTQ0NTUsNiArMTQ1NzUsNyBAQCBBVFBvc3RBbHRlclR5cGVD bGVhbnVwKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgTE9DS01PREUg bG9ja21vZGUpCiAJCU9pZAkJCWNvbmZyZWxpZDsKIAkJY2hhcgkJY29udHlwZTsKIAkJYm9v bAkJY29uaXNsb2NhbDsKKwkJYm9vbAkJY29ucGVyaW9kOwogCiAJCXR1cCA9IFNlYXJjaFN5 c0NhY2hlMShDT05TVFJPSUQsIE9iamVjdElkR2V0RGF0dW0ob2xkSWQpKTsKIAkJaWYgKCFI ZWFwVHVwbGVJc1ZhbGlkKHR1cCkpIC8qIHNob3VsZCBub3QgaGFwcGVuICovCkBAIC0xNDQ3 Miw2ICsxNDU5Myw3IEBAIEFUUG9zdEFsdGVyVHlwZUNsZWFudXAoTGlzdCAqKndxdWV1ZSwg QWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJY29uZnJlbGlk ID0gY29uLT5jb25mcmVsaWQ7CiAJCWNvbnR5cGUgPSBjb24tPmNvbnR5cGU7CiAJCWNvbmlz bG9jYWwgPSBjb24tPmNvbmlzbG9jYWw7CisJCWNvbnBlcmlvZCA9IGNvbi0+Y29ucGVyaW9k OwogCQlSZWxlYXNlU3lzQ2FjaGUodHVwKTsKIAogCQlPYmplY3RBZGRyZXNzU2V0KG9iaiwg Q29uc3RyYWludFJlbGF0aW9uSWQsIG9sZElkKTsKQEAgLTE0NDk2LDcgKzE0NjE4LDcgQEAg QVRQb3N0QWx0ZXJUeXBlQ2xlYW51cChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZv ICp0YWIsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQlpZiAocmVsaWQgIT0gdGFiLT5yZWxpZCAm JiBjb250eXBlID09IENPTlNUUkFJTlRfRk9SRUlHTikKIAkJCUxvY2tSZWxhdGlvbk9pZChy ZWxpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKLQkJQVRQb3N0QWx0ZXJUeXBlUGFyc2Uo b2xkSWQsIHJlbGlkLCBjb25mcmVsaWQsCisJCUFUUG9zdEFsdGVyVHlwZVBhcnNlKG9sZElk LCByZWxpZCwgY29uZnJlbGlkLCBjb25wZXJpb2QsCiAJCQkJCQkJIChjaGFyICopIGxmaXJz dChkZWZfaXRlbSksCiAJCQkJCQkJIHdxdWV1ZSwgbG9ja21vZGUsIHRhYi0+cmV3cml0ZSk7 CiAJfQpAQCAtMTQ1MDcsNyArMTQ2MjksNyBAQCBBVFBvc3RBbHRlclR5cGVDbGVhbnVwKExp c3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgTE9DS01PREUgbG9ja21vZGUp CiAJCU9pZAkJCXJlbGlkOwogCiAJCXJlbGlkID0gSW5kZXhHZXRSZWxhdGlvbihvbGRJZCwg ZmFsc2UpOwotCQlBVFBvc3RBbHRlclR5cGVQYXJzZShvbGRJZCwgcmVsaWQsIEludmFsaWRP aWQsCisJCUFUUG9zdEFsdGVyVHlwZVBhcnNlKG9sZElkLCByZWxpZCwgSW52YWxpZE9pZCwg ZmFsc2UsCiAJCQkJCQkJIChjaGFyICopIGxmaXJzdChkZWZfaXRlbSksCiAJCQkJCQkJIHdx dWV1ZSwgbG9ja21vZGUsIHRhYi0+cmV3cml0ZSk7CiAKQEAgLTE0NTIzLDcgKzE0NjQ1LDcg QEAgQVRQb3N0QWx0ZXJUeXBlQ2xlYW51cChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQlPaWQJCQlyZWxpZDsKIAogCQlyZWxp ZCA9IFN0YXRpc3RpY3NHZXRSZWxhdGlvbihvbGRJZCwgZmFsc2UpOwotCQlBVFBvc3RBbHRl clR5cGVQYXJzZShvbGRJZCwgcmVsaWQsIEludmFsaWRPaWQsCisJCUFUUG9zdEFsdGVyVHlw ZVBhcnNlKG9sZElkLCByZWxpZCwgSW52YWxpZE9pZCwgZmFsc2UsCiAJCQkJCQkJIChjaGFy ICopIGxmaXJzdChkZWZfaXRlbSksCiAJCQkJCQkJIHdxdWV1ZSwgbG9ja21vZGUsIHRhYi0+ cmV3cml0ZSk7CiAKQEAgLTE0NTg3LDggKzE0NzA5LDggQEAgQVRQb3N0QWx0ZXJUeXBlQ2xl YW51cChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIExPQ0tNT0RFIGxv Y2ttb2RlKQogICogb3BlcmF0b3IgdGhhdCdzIG5vdCBhdmFpbGFibGUgZm9yIHRoZSBuZXcg Y29sdW1uIHR5cGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1BVFBvc3RBbHRlclR5cGVQYXJzZShP aWQgb2xkSWQsIE9pZCBvbGRSZWxJZCwgT2lkIHJlZlJlbElkLCBjaGFyICpjbWQsCi0JCQkJ CSBMaXN0ICoqd3F1ZXVlLCBMT0NLTU9ERSBsb2NrbW9kZSwgYm9vbCByZXdyaXRlKQorQVRQ b3N0QWx0ZXJUeXBlUGFyc2UoT2lkIG9sZElkLCBPaWQgb2xkUmVsSWQsIE9pZCByZWZSZWxJ ZCwgYm9vbCBjb25wZXJpb2QsCisJCQkJCSBjaGFyICpjbWQsIExpc3QgKip3cXVldWUsIExP Q0tNT0RFIGxvY2ttb2RlLCBib29sIHJld3JpdGUpCiB7CiAJTGlzdAkgICAqcmF3X3BhcnNl dHJlZV9saXN0OwogCUxpc3QJICAgKnF1ZXJ5dHJlZV9saXN0OwpAQCAtMTQ3MTcsNiArMTQ4 MzksOCBAQCBBVFBvc3RBbHRlclR5cGVQYXJzZShPaWQgb2xkSWQsIE9pZCBvbGRSZWxJZCwg T2lkIHJlZlJlbElkLCBjaGFyICpjbWQsCiAJCQkJCQkhcmV3cml0ZSAmJiB0YWItPnJld3Jp dGUgPT0gMCkKIAkJCQkJCVRyeVJldXNlRm9yZWlnbktleShvbGRJZCwgY29uKTsKIAkJCQkJ Y29uLT5yZXNldF9kZWZhdWx0X3RibHNwYyA9IHRydWU7CisJCQkJCS8qIHByZXNlcnZlIGNv bnBlcmlvZCAqLworCQkJCQljb24tPndpdGhvdXRfb3ZlcmxhcHMgPSBjb25wZXJpb2Q7CiAJ CQkJCWNtZC0+c3VidHlwZSA9IEFUX1JlQWRkQ29uc3RyYWludDsKIAkJCQkJdGFiLT5zdWJj bWRzW0FUX1BBU1NfT0xEX0NPTlNUUl0gPQogCQkJCQkJbGFwcGVuZCh0YWItPnN1YmNtZHNb QVRfUEFTU19PTERfQ09OU1RSXSwgY21kKTsKQEAgLTE2Njk5LDYgKzE2ODIzLDE2IEBAIE1l cmdlQ29uc3RyYWludHNJbnRvRXhpc3RpbmcoUmVsYXRpb24gY2hpbGRfcmVsLCBSZWxhdGlv biBwYXJlbnRfcmVsKQogCQkJCQkJIGVycm1zZygiY29uc3RyYWludCBcIiVzXCIgY29uZmxp Y3RzIHdpdGggTk9UIFZBTElEIGNvbnN0cmFpbnQgb24gY2hpbGQgdGFibGUgXCIlc1wiIiwK IAkJCQkJCQkJTmFtZVN0cihjaGlsZF9jb24tPmNvbm5hbWUpLCBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShjaGlsZF9yZWwpKSkpOwogCisJCQkvKgorCQkJICogSWYgdGhlIHBhcmVudCBh bmQgY2hpbGQgQ0hFQ0sgY29uc3RyYWludHMgaGF2ZSBkaWZmZXJlbnQgY29ucGVyaW9kIHZh bHVlcywKKwkJCSAqIGRvbid0IG1lcmdlIHRoZW0uCisJCQkgKi8KKwkJCWlmIChwYXJlbnRf Y29uLT5jb250eXBlID09IENPTlNUUkFJTlRfQ0hFQ0sgJiYKKwkJCQlwYXJlbnRfY29uLT5j b25wZXJpb2QgIT0gY2hpbGRfY29uLT5jb25wZXJpb2QpCisJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJ CQkJCQkgZXJybXNnKCJjb25zdHJhaW50IFwiJXNcIiBjb25mbGljdHMgd2l0aCBpbmhlcml0 ZWQgY29uc3RyYWludCBvbiBjaGlsZCB0YWJsZSBcIiVzXCIiLAorCQkJCQkJCQlOYW1lU3Ry KGNoaWxkX2Nvbi0+Y29ubmFtZSksIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKGNoaWxkX3Jl bCkpKSk7CiAJCQkvKgogCQkJICogT0ssIGJ1bXAgdGhlIGNoaWxkIGNvbnN0cmFpbnQncyBp bmhlcml0YW5jZSBjb3VudC4gIChJZiB3ZSBmYWlsCiAJCQkgKiBsYXRlciBvbiwgdGhpcyBj aGFuZ2Ugd2lsbCBqdXN0IHJvbGwgYmFjay4pCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxj bWQuYwppbmRleCAwNTk4ZTg5N2Q5MC4uZGI3YmQ1M2Q2YjUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYwpAQCAtMjMwMSw2ICsyMzAxLDggQEAgdHJhbnNmb3JtSW5kZXhD b25zdHJhaW50cyhDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogICoKICAqIEZvciBhIFBSSU1B UlkgS0VZIGNvbnN0cmFpbnQsIHdlIGFkZGl0aW9uYWxseSBmb3JjZSB0aGUgY29sdW1ucyB0 byBiZQogICogbWFya2VkIGFzIG5vdC1udWxsLCB3aXRob3V0IHByb2R1Y2luZyBhIG5vdC1u dWxsIGNvbnN0cmFpbnQuCisgKiBJZiB0aGUgUFJJTUFSWSBLRVkgaGFzIFdJVEhPVVQgT1ZF UkxBUFMgd2UgYWxzbyBhZGQgYW4gaW50ZXJuYWwKKyAqIENIRUNLIGNvbnN0cmFpbnQgdG8g cHJldmVudCBlbXB0eSByYW5nZXMvbXVsdGlyYW5nZXMuCiAgKi8KIHN0YXRpYyBJbmRleFN0 bXQgKgogdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQs IENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCkBAIC0yNTY0LDcgKzI1NjYsOCBAQCB0cmFuc2Zv cm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENv bnRleHQgKmN4dCkKIAkgKiBGb3IgVU5JUVVFIGFuZCBQUklNQVJZIEtFWSwgd2UganVzdCBo YXZlIGEgbGlzdCBvZiBjb2x1bW4gbmFtZXMuCiAJICoKIAkgKiBNYWtlIHN1cmUgcmVmZXJl bmNlZCBrZXlzIGV4aXN0LiAgSWYgd2UgYXJlIG1ha2luZyBhIFBSSU1BUlkgS0VZIGluZGV4 LAotCSAqIGFsc28gbWFrZSBzdXJlIHRoZXkgYXJlIG5vdC1udWxsLgorCSAqIGFsc28gbWFr ZSBzdXJlIHRoZXkgYXJlIG5vdC1udWxsLiAgRm9yIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3Ry YWludHMsCisJICogd2UgbWFrZSBzdXJlIHRoZSBsYXN0IHBhcnQgaXMgYSByYW5nZSBvciBt dWx0aXJhbmdlLgogCSAqLwogCWVsc2UKIAl7CkBAIC0yNTc1LDYgKzI1NzgsNyBAQCB0cmFu c2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3Rt dENvbnRleHQgKmN4dCkKIAkJCUNvbHVtbkRlZiAgKmNvbHVtbiA9IE5VTEw7CiAJCQlMaXN0 Q2VsbCAgICpjb2x1bW5zOwogCQkJSW5kZXhFbGVtICAqaXBhcmFtOworCQkJT2lkCQkJdHlw aWQgPSBJbnZhbGlkT2lkOwogCiAJCQkvKiBNYWtlIHN1cmUgcmVmZXJlbmNlZCBjb2x1bW4g ZXhpc3RzLiAqLwogCQkJZm9yZWFjaChjb2x1bW5zLCBjeHQtPmNvbHVtbnMpCkBAIC0yNjQy LDYgKzI2NDYsNyBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29u c3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAkJCQkJCWlmIChzdHJjbXAoa2V5 LCBpbmhuYW1lKSA9PSAwKQogCQkJCQkJewogCQkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJ CQl0eXBpZCA9IGluaGF0dHItPmF0dHR5cGlkOwogCQkJCQkJCWJyZWFrOwogCQkJCQkJfQog CQkJCQl9CkBAIC0yNjgzLDYgKzI2ODgsNDkgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50 KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJ fQogCQkJfQogCisJCQkvKgorCQkJICogVGhlIFdJVEhPVVQgT1ZFUkxBUFMgcGFydCAoaWYg YW55KSBtdXN0IGJlCisJCQkgKiBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgdHlwZS4KKwkJCSAq LworCQkJaWYgKGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMgJiYgbGMgPT0gbGlzdF9s YXN0X2NlbGwoY29uc3RyYWludC0+a2V5cykpCisJCQl7CisJCQkJaWYgKCFmb3VuZCAmJiBj eHQtPmlzYWx0ZXIpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBMb29rIHVwIHRoZSBjb2x1 bW4gdHlwZSBvbiBleGlzdGluZyB0YWJsZS4KKwkJCQkJICogSWYgd2UgY2FuJ3QgZmluZCBp dCwgbGV0IHRoaW5ncyBmYWlsIGluIERlZmluZUluZGV4LgorCQkJCQkgKi8KKwkJCQkJUmVs YXRpb24gcmVsID0gY3h0LT5yZWw7CisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgcmVsLT5y ZF9hdHQtPm5hdHRzOyBpKyspCisJCQkJCXsKKwkJCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0 dHIgPSBUdXBsZURlc2NBdHRyKHJlbC0+cmRfYXR0LCBpKTsKKwkJCQkJCWNvbnN0IGNoYXIg KmF0dG5hbWU7CisKKwkJCQkJCWlmIChhdHRyLT5hdHRpc2Ryb3BwZWQpCisJCQkJCQkJYnJl YWs7CisKKwkJCQkJCWF0dG5hbWUgPSBOYW1lU3RyKGF0dHItPmF0dG5hbWUpOworCQkJCQkJ aWYgKHN0cmNtcChhdHRuYW1lLCBrZXkpID09IDApCisJCQkJCQl7CisJCQkJCQkJdHlwaWQg PSBhdHRyLT5hdHR0eXBpZDsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJ CX0KKwkJCQlpZiAoZm91bmQpCisJCQkJeworCQkJCQlpZiAoIU9pZElzVmFsaWQodHlwaWQp KQorCQkJCQkJdHlwaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1l KTsKKworCQkJCQlpZiAoIU9pZElzVmFsaWQodHlwaWQpIHx8ICEodHlwZV9pc19yYW5nZSh0 eXBpZCkgfHwgdHlwZV9pc19tdWx0aXJhbmdlKHR5cGlkKSkpCisJCQkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJ CQkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5v dCBhIHJhbmdlIG9yIG11bHRpcmFuZ2UgdHlwZSIsIGtleSksCisJCQkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24oY3h0LT5wc3RhdGUsIGNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOworCQkJ CX0KKwkJCX0KKworCiAJCQkvKiBPSywgYWRkIGl0IHRvIHRoZSBpbmRleCBkZWZpbml0aW9u ICovCiAJCQlpcGFyYW0gPSBtYWtlTm9kZShJbmRleEVsZW0pOwogCQkJaXBhcmFtLT5uYW1l ID0gcHN0cmR1cChrZXkpOwpAQCAtMjcxOSw4ICsyNzY3LDQ3IEBAIHRyYW5zZm9ybUluZGV4 Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAq Y3h0KQogCiAJCQkvKiBXSVRIT1VUIE9WRVJMQVBTIHJlcXVpcmVzIGEgR2lTVCBpbmRleCAq LwogCQkJaW5kZXgtPmFjY2Vzc01ldGhvZCA9ICJnaXN0IjsKLQkJfQogCisJCQlpZiAoY29u c3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJfUFJJTUFSWSkKKwkJCXsKKwkJCQkvKgorCQkJ CSAqIElmIHRoZSBQUklNQVJZIEtFWSBoYXMgV0lUSE9VVCBPVkVSTEFQUywgd2UgbXVzdAor CQkJCSAqIHByZXZlbnQgZW1wdGllcyBhcyB3ZWxsIGFzIE5VTExzLiBTaW5jZQorCQkJCSAq ICdlbXB0eScgJiYgJ2VtcHR5JyBpcyBmYWxzZSwgeW91IGNvdWxkIGluc2VydCBhIHZhbHVl CisJCQkJICogbGlrZSAoNSwgJ2VtcHR5JykgbW9yZSB0aGFuIG9uY2UuIEZvciBjb252ZW5p ZW5jZQorCQkJCSAqIHdlIGFkZCB0aGlzIHRvIG5vdG51bGxjbWRzIChieSBhbmFsb2d5KS4K KwkJCQkgKi8KKwkJCQljaGFyCQkJICAgKmtleSA9IHN0clZhbChsbGFzdChjb25zdHJhaW50 LT5rZXlzKSk7CisJCQkJQWx0ZXJUYWJsZUNtZAkgICAqbm90ZW1wdHljbWQgPSBtYWtlTm9k ZShBbHRlclRhYmxlQ21kKTsKKwkJCQlDb25zdHJhaW50CQkgICAqY2hlY2tjb24gPSBtYWtl Tm9kZShDb25zdHJhaW50KTsKKwkJCQlDb2x1bW5SZWYJCSAgICpjb2w7CisJCQkJRnVuY0Nh bGwJCSAgICpmdW5jOworCQkJCU5vZGUJCQkgICAqZXhwcjsKKworCQkJCWNvbCA9IG1ha2VO b2RlKENvbHVtblJlZik7CisJCQkJY29sLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJp bmcoa2V5KSk7CisJCQkJZnVuYyA9IG1ha2VGdW5jQ2FsbChTeXN0ZW1GdW5jTmFtZSgiaXNl bXB0eSIpLCBsaXN0X21ha2UxKGNvbCksCisJCQkJCQkJCQlDT0VSQ0VfRVhQTElDSVRfQ0FM TCwgLTEpOworCQkJCWV4cHIgPSAoTm9kZSAqKSBtYWtlQm9vbEV4cHIoTk9UX0VYUFIsIGxp c3RfbWFrZTEoZnVuYyksIC0xKTsKKworCQkJCWNoZWNrY29uLT5jb25uYW1lID0gcHNwcmlu dGYoIiVzX25vdF9lbXB0eSIsIGtleSk7CisJCQkJY2hlY2tjb24tPmNvbnR5cGUgPSBDT05T VFJfQ0hFQ0s7CisJCQkJY2hlY2tjb24tPndpdGhvdXRfb3ZlcmxhcHMgPSB0cnVlOworCQkJ CWNoZWNrY29uLT5yYXdfZXhwciA9IGV4cHI7CisJCQkJY2hlY2tjb24tPmNvb2tlZF9leHBy ID0gTlVMTDsKKwkJCQljaGVja2Nvbi0+aXNfbm9faW5oZXJpdCA9IGZhbHNlOworCQkJCWNo ZWNrY29uLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJY2hlY2tjb24tPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWNoZWNrY29uLT5za2lwX3ZhbGlkYXRpb24gPSBmYWxzZTsKKwkJ CQljaGVja2Nvbi0+aW5pdGlhbGx5X3ZhbGlkID0gdHJ1ZTsKKwkJCQljaGVja2Nvbi0+bG9j YXRpb24gPSAtMTsKKworCQkJCW5vdGVtcHR5Y21kLT5zdWJ0eXBlID0gQVRfQWRkQ29uc3Ry YWludDsKKwkJCQlub3RlbXB0eWNtZC0+ZGVmID0gKE5vZGUgKikgY2hlY2tjb247CisKKwkJ CQlub3RudWxsY21kcyA9IGxhcHBlbmQobm90bnVsbGNtZHMsIG5vdGVtcHR5Y21kKTsKKwkJ CX0KKwkJfQogCX0KIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNo ZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRl eCAyNjJjOTg3OGRkMy4uMWI0NTkwZTEyMTIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3JlbGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVs Y2FjaGUuYwpAQCAtNDU4MSw2ICs0NTgxLDcgQEAgQ2hlY2tDb25zdHJhaW50RmV0Y2goUmVs YXRpb24gcmVsYXRpb24pCiAKIAkJY2hlY2tbZm91bmRdLmNjdmFsaWQgPSBjb25mb3JtLT5j b252YWxpZGF0ZWQ7CiAJCWNoZWNrW2ZvdW5kXS5jY25vaW5oZXJpdCA9IGNvbmZvcm0tPmNv bm5vaW5oZXJpdDsKKwkJY2hlY2tbZm91bmRdLmNjcGVyaW9kID0gY29uZm9ybS0+Y29ucGVy aW9kOwogCQljaGVja1tmb3VuZF0uY2NuYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChDYWNo ZU1lbW9yeUNvbnRleHQsCiAJCQkJCQkJCQkJCQkgIE5hbWVTdHIoY29uZm9ybS0+Y29ubmFt ZSkpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwZGVzYy5oIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAppbmRleCA4OTMwYTI4ZDY2MC4uZjJhZGZmZTRi ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90dXBkZXNjLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaApAQCAtMzEsNiArMzEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBDb25zdHJDaGVjawogCWNoYXIJICAgKmNjYmluOwkJCS8qIG5vZGVUb1N0cmluZyBy ZXByZXNlbnRhdGlvbiBvZiBleHByICovCiAJYm9vbAkJY2N2YWxpZDsKIAlib29sCQljY25v aW5oZXJpdDsJLyogdGhpcyBpcyBhIG5vbi1pbmhlcml0YWJsZSBjb25zdHJhaW50ICovCisJ Ym9vbAkJY2NwZXJpb2Q7CQkvKiB1c2VkIGJ5IFdJVEhPVVQgT1ZFUkxBUFMgUFJJTUFSWSBL RVkgKi8KIH0gQ29uc3RyQ2hlY2s7CiAKIC8qIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGNv bnN0cmFpbnRzIG9mIGEgdHVwbGUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvaGVhcC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmgKaW5kZXggZTQ0NmQ0OWIz ZWEuLjU0ZjViNzkyZTdiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtNDUsNiArNDUsNyBAQCB0 eXBlZGVmIHN0cnVjdCBDb29rZWRDb25zdHJhaW50CiAJaW50CQkJaW5oY291bnQ7CQkvKiBu dW1iZXIgb2YgdGltZXMgY29uc3RyYWludCBpcyBpbmhlcml0ZWQgKi8KIAlib29sCQlpc19u b19pbmhlcml0OwkvKiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWYgYW5kIGNhbm5vdCBiZQog CQkJCQkJCQkgKiBpbmhlcml0ZWQgKi8KKwlib29sCQljb25wZXJpb2Q7CQkvKiBjb25zdHJh aW50IGlzIGZvciBXSVRIT1VUIE9WRVJMQVBTICovCiB9IENvb2tlZENvbnN0cmFpbnQ7CiAK IGV4dGVybiBSZWxhdGlvbiBoZWFwX2NyZWF0ZShjb25zdCBjaGFyICpyZWxuYW1lLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggYi9zcmMvaW5jbHVk ZS9jb21tYW5kcy90YWJsZWNtZHMuaAppbmRleCA4NWNiYWQzZDBjMi4uNmE5MmU1NTk4OGIg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC0yNyw2ICsyNyw4IEBAIHN0cnVj dCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQ7CS8qIGF2b2lkIGluY2x1ZGluZyB0Y29wL3V0 aWxpdHkuaCBoZXJlICovCiBleHRlcm4gT2JqZWN0QWRkcmVzcyBEZWZpbmVSZWxhdGlvbihD cmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9pZCBvd25lcklkLAogCQkJCQkJCQkJ T2JqZWN0QWRkcmVzcyAqdHlwYWRkcmVzcywgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpOwog CitleHRlcm4gYm9vbCBnZXRfcGtfcGVyaW9kX2NoZWNrX2NvbnN0cmFpbnQoUmVsYXRpb24g aGVhcFJlbCwgT2lkICpjaGVja19vaWQsIE9pZCAqcGtfb2lkKTsKKwogZXh0ZXJuIFR1cGxl RGVzYyBCdWlsZERlc2NGb3JSZWxhdGlvbihjb25zdCBMaXN0ICpjb2x1bW5zKTsKIAogZXh0 ZXJuIHZvaWQgUmVtb3ZlUmVsYXRpb25zKERyb3BTdG10ICpkcm9wKTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IGUyZjJh MWNiZTIwLi44ZjE2YWYyZjdiMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0yNyw4ICsyNyw5IEBAIENSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmcgKAogCXZhbGlkX2F0IFRFWFQsCiAJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQog KTsKLUVSUk9SOiAgZGF0YSB0eXBlIHRleHQgaGFzIG5vIGRlZmF1bHQgb3BlcmF0b3IgY2xh c3MgZm9yIGFjY2VzcyBtZXRob2QgImdpc3QiCi1ISU5UOiAgWW91IG11c3Qgc3BlY2lmeSBh biBvcGVyYXRvciBjbGFzcyBmb3IgdGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQgb3Bl cmF0b3IgY2xhc3MgZm9yIHRoZSBkYXRhIHR5cGUuCitFUlJPUjogIGNvbHVtbiAidmFsaWRf YXQiIGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSB0 eXBlCitMSU5FIDQ6ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAo aWQsIHZhbGlkX2F0IFdJVEhPVS4uLgorICAgICAgICAgXgogLS0gUEsgd2l0aCBvbmUgY29s dW1uIHBsdXMgYSByYW5nZToKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAogCS0tIFNp bmNlIHdlIGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLApAQCAtNDYs NiArNDcsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKICB2YWxpZF9hdCB8IGRh dGVyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCiBJbmRleGVzOgogICAgICJ0ZW1w b3JhbF9ybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKK0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ2YWxpZF9hdF9ub3RfZW1wdHkiIENIRUNL IChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpCiAKIFNFTEVDVCBwZ19nZXRfY29uc3RyYWludGRl ZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3Ju Z19wayc7CiAgICAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAK QEAgLTU5LDYgKzYyLDEwOCBAQCBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAw LCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZQogIENSRUFU RSBVTklRVUUgSU5ERVggdGVtcG9yYWxfcm5nX3BrIE9OIHRlbXBvcmFsX3JuZyBVU0lORyBn aXN0IChpZCwgdmFsaWRfYXQpCiAoMSByb3cpCiAKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNL IGNvbnN0cmFpbnQ6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05TVFJBSU5U IHZhbGlkX2F0X25vdF9lbXB0eTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29uc3RyYWludCB2 YWxpZF9hdF9ub3RfZW1wdHkgb24gdGFibGUgdGVtcG9yYWxfcm5nIGJlY2F1c2UgY29uc3Ry YWludCB0ZW1wb3JhbF9ybmdfcGsgb24gdGFibGUgdGVtcG9yYWxfcm5nIHJlcXVpcmVzIGl0 CitISU5UOiAgWW91IGNhbiBkcm9wIGNvbnN0cmFpbnQgdGVtcG9yYWxfcm5nX3BrIG9uIHRh YmxlIHRlbXBvcmFsX3JuZyBpbnN0ZWFkLgorLS0gZHJvcHBpbmcgdGhlIFBLIGRyb3BzIHRo ZSBDSEVDSyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIERST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGs7CitcZCB0ZW1wb3JhbF9ybmcKKyAgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmciCisgIENvbHVtbiAgfCAgIFR5cGUgICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0 cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgZGF0ZXJhbmdl IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworLS0gZmFpbCBpZiBhIGNvbnN0cmFpbnQg d2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHM6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9y bmcgQUREIENPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5IENIRUNLIChOT1QgaXNlbXB0 eSh2YWxpZF9hdCkpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIEFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpOworRVJST1I6ICBjb25zdHJhaW50ICJ2YWxpZF9hdF9ub3RfZW1wdHkiIGZvciBy ZWxhdGlvbiAidGVtcG9yYWxfcm5nIiBhbHJlYWR5IGV4aXN0cworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmc7CistLSBQSyBmcm9tIExJS0U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoTElLRSB0ZW1wb3JhbF9y bmcgSU5DTFVESU5HIEFMTCk7CitcZCB0ZW1wb3JhbF9ybmcyCisgICAgICAgICAgICAgVGFi bGUgInB1YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdl IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IGRhdGVyYW5nZSB8ICAg ICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmcyX3Br ZXkiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKK0NoZWNr IGNvbnN0cmFpbnRzOgorICAgICJ2YWxpZF9hdF9ub3RfZW1wdHkiIENIRUNLIChOT1QgaXNl bXB0eSh2YWxpZF9hdCkpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9ybmcyIChMSUtFIHRlbXBvcmFsX3JuZyBJTkNMVURJTkcgQUxMLCBD T05TVFJBSU5UIHZhbGlkX2F0X25vdF9lbXB0eSBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRf YXQpKSk7CitFUlJPUjogIGNvbnN0cmFpbnQgInZhbGlkX2F0X25vdF9lbXB0eSIgZm9yIHJl bGF0aW9uICJ0ZW1wb3JhbF9ybmcyIiBhbHJlYWR5IGV4aXN0cworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmc7CistLSBQSyBmcm9tIElOSEVSSVRTOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKCkgSU5IRVJJVFMg KHRlbXBvcmFsX3JuZyk7CitcZCB0ZW1wb3JhbF9ybmcyCisgICAgICAgICAgICAgVGFibGUg InB1YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlIHwg ICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IGRhdGVyYW5nZSB8ICAgICAg ICAgICB8IG5vdCBudWxsIHwgCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFsaWRfYXRf bm90X2VtcHR5IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQorSW5oZXJpdHM6IHRl bXBvcmFsX3JuZworCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcm5nMiAoQ09OU1RSQUlOVCB2YWxpZF9hdF9ub3RfZW1wdHkgQ0hFQ0sgKE5P VCBpc2VtcHR5KHZhbGlkX2F0KSkpIElOSEVSSVRTICh0ZW1wb3JhbF9ybmcpOworRVJST1I6 ICBjb25zdHJhaW50ICJ2YWxpZF9hdF9ub3RfZW1wdHkiIGNvbmZsaWN0cyB3aXRoIGluaGVy aXRlZCBjb25zdHJhaW50IG9uIHJlbGF0aW9uICJ0ZW1wb3JhbF9ybmcyIgorRFJPUCBUQUJM RSB0ZW1wb3JhbF9ybmc7CistLSBQSyBpbiBpbmhlcml0aW5nIHRhYmxlOgorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5n ZQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyIChDT05TVFJBSU5UIHRlbXBvcmFs X3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpKSBJ TkhFUklUUyAodGVtcG9yYWxfcm5nKTsKK1xkIHRlbXBvcmFsX3JuZzIKKyAgICAgICAgICAg ICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZzIiCisgIENvbHVtbiAgfCAgIFR5cGUgICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0 cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgZGF0ZXJhbmdl IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3Ju Z19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hl Y2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBp c2VtcHR5KHZhbGlkX2F0KSkKK0luaGVyaXRzOiB0ZW1wb3JhbF9ybmcKKworRFJPUCBUQUJM RSB0ZW1wb3JhbF9ybmcgQ0FTQ0FERTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gdGFi bGUgdGVtcG9yYWxfcm5nMgorLS0gUEsgaW4gaW5oZXJpdGluZyB0YWJsZSB3aXRoIGNvbmZs aWN0aW5nIENIRUNLIGNvbnN0cmFpbnQgaW4gcGFyZW50OgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlDT05T VFJBSU5UIHZhbGlkX2F0X25vdF9lbXB0eSBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQp KQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyIChDT05TVFJBSU5UIHRlbXBvcmFs X3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpKSBJ TkhFUklUUyAodGVtcG9yYWxfcm5nKTsKK0VSUk9SOiAgY29uc3RyYWludCAidmFsaWRfYXRf bm90X2VtcHR5IiBjb25mbGljdHMgd2l0aCBpbmhlcml0ZWQgY29uc3RyYWludCBvbiByZWxh dGlvbiAidGVtcG9yYWxfcm5nMiIKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworLS0gYWRk IFBLIHRvIGFscmVhZHkgaW5oZXJpdGluZyB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJQ09OU1RS QUlOVCB2YWxpZF9hdF9ub3RfZW1wdHkgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkK Kyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoKSBJTkhFUklUUyAodGVtcG9yYWxf cm5nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZzIKKyAgQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpOworRVJST1I6ICBjb25zdHJhaW50ICJ2YWxpZF9hdF9ub3RfZW1wdHkiIGNvbmZsaWN0 cyB3aXRoIGluaGVyaXRlZCBjb25zdHJhaW50IG9uIHJlbGF0aW9uICJ0ZW1wb3JhbF9ybmcy IgorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmcyOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7 CiAtLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKIC0tIFdlIGRvbid0IGRy b3AgdGhpcyB0YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93IGFsc28gbmVlZCBtdWx0aXBsZSBz Y2FsYXIgY29sdW1ucy4KIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKQEAgLTc2LDYg KzE4MSw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKICB2YWxpZF9hdCB8IGRh dGVyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCiBJbmRleGVzOgogICAgICJ0ZW1w b3JhbF9ybmcyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFsaWRfYXRfbm90X2VtcHR5 IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQogCiBTRUxFQ1QgcGdfZ2V0X2NvbnN0 cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1w b3JhbF9ybmcyX3BrJzsKICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAg ICAgICAgICAgICAgIApAQCAtMTEzLDcgKzIyMCwzMyBAQCBDUkVBVEUgVEFCTEUgdGVtcG9y YWxfbWx0cm5nICgKICB2YWxpZF9hdCB8IGRhdGVtdWx0aXJhbmdlIHwgICAgICAgICAgIHwg bm90IG51bGwgfCAKIEluZGV4ZXM6CiAgICAgInRlbXBvcmFsX21sdHJuZ19wayIgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWlu dHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlk X2F0KSkKIAorLS0gY2FuJ3QgZHJvcCB0aGUgQ0hFQ0sgY29uc3RyYWludDoKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX21sdHJuZyBEUk9QIENPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5 OworRVJST1I6ICBjYW5ub3QgZHJvcCBjb25zdHJhaW50IHZhbGlkX2F0X25vdF9lbXB0eSBv biB0YWJsZSB0ZW1wb3JhbF9tbHRybmcgYmVjYXVzZSBjb25zdHJhaW50IHRlbXBvcmFsX21s dHJuZ19wayBvbiB0YWJsZSB0ZW1wb3JhbF9tbHRybmcgcmVxdWlyZXMgaXQKK0hJTlQ6ICBZ b3UgY2FuIGRyb3AgY29uc3RyYWludCB0ZW1wb3JhbF9tbHRybmdfcGsgb24gdGFibGUgdGVt cG9yYWxfbWx0cm5nIGluc3RlYWQuCistLSBkcm9wcGluZyB0aGUgUEsgZHJvcHMgdGhlIENI RUNLIGNvbnN0cmFpbnQ6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9tbHRybmcgRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19wazsKK0VSUk9SOiAgY29uc3RyYWludCAidGVtcG9yYWxf cm5nX3BrIiBvZiByZWxhdGlvbiAidGVtcG9yYWxfbWx0cm5nIiBkb2VzIG5vdCBleGlzdAor XGQgdGVtcG9yYWxfbWx0cm5nCisgICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBv cmFsX21sdHJuZyIKKyAgQ29sdW1uICB8ICAgICAgVHlwZSAgICAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgICAg ICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCBkYXRlbXVsdGlyYW5n ZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9t bHRybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK K0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ2YWxpZF9hdF9ub3RfZW1wdHkiIENIRUNLIChO T1QgaXNlbXB0eSh2YWxpZF9hdCkpCisKKy0tIGZhaWwgaWYgYSBjb25zdHJhaW50IHdpdGgg dGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfbWx0cm5n IEFERCBDT05TVFJBSU5UIHZhbGlkX2F0X25vdF9lbXB0eSBDSEVDSyAoTk9UIGlzZW1wdHko dmFsaWRfYXQpKTsKK0VSUk9SOiAgY29uc3RyYWludCAidmFsaWRfYXRfbm90X2VtcHR5IiBm b3IgcmVsYXRpb24gInRlbXBvcmFsX21sdHJuZyIgYWxyZWFkeSBleGlzdHMKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX21sdHJuZyBBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9tbHRybmdfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0VSUk9SOiAg bXVsdGlwbGUgcHJpbWFyeSBrZXlzIGZvciB0YWJsZSAidGVtcG9yYWxfbWx0cm5nIiBhcmUg bm90IGFsbG93ZWQKK0RST1AgVEFCTEUgdGVtcG9yYWxfbWx0cm5nOwogLS0gUEsgd2l0aCB0 d28gY29sdW1ucyBwbHVzIGEgbXVsdGlyYW5nZToKIC0tIFdlIGRvbid0IGRyb3AgdGhpcyB0 YWJsZSBiZWNhdXNlIHRlc3RzIGJlbG93IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29s dW1ucy4KIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmcyICgKQEAgLTEzMSw2ICsyNjQs OCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nMiAoCiAgdmFsaWRfYXQgfCBkYXRl bXVsdGlyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCiBJbmRleGVzOgogICAgICJ0 ZW1wb3JhbF9tbHRybmcyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFsaWRfYXRfbm90 X2VtcHR5IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQogCiBTRUxFQ1QgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9tbHRybmcyX3BrJzsKICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJh aW50ZGVmICAgICAgICAgICAgICAgIApAQCAtMTQ0LDYgKzI3OSw3MiBAQCBTRUxFQ1QgcGdf Z2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICd0ZQogIENSRUFURSBVTklRVUUgSU5ERVggdGVtcG9yYWxfbWx0cm5n Ml9wayBPTiB0ZW1wb3JhbF9tbHRybmcyIFVTSU5HIGdpc3QgKGlkMSwgaWQyLCB2YWxpZF9h dCkKICgxIHJvdykKIAorLS0gdGVzdCB3aGVuIHRoZSBXSVRIT1VUIE9WRVJMQVBTIGNvbHVt biB0eXBlIGNoYW5nZXM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcKKyAgQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUg ZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlk X2F0KSk7CitOT1RJQ0U6ICBtZXJnaW5nIGNvbnN0cmFpbnQgInZhbGlkX2F0X25vdF9lbXB0 eSIgd2l0aCBpbmhlcml0ZWQgZGVmaW5pdGlvbgorXGQgdGVtcG9yYWxfcm5nCisgICAgICAg ICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nIgorICBDb2x1bW4gIHwgICBUeXBl ICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwg aW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IGRhdGVy YW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3Jh bF9ybmdfcGsiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK K0NoZWNrIGNvbnN0cmFpbnRzOgorICAgICJ2YWxpZF9hdF9ub3RfZW1wdHkiIENIRUNLIChO T1QgaXNlbXB0eSh2YWxpZF9hdCkpCisKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNLIGNvbnN0 cmFpbnQ6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05TVFJBSU5UIHZhbGlk X2F0X25vdF9lbXB0eTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29uc3RyYWludCB2YWxpZF9h dF9ub3RfZW1wdHkgb24gdGFibGUgdGVtcG9yYWxfcm5nIGJlY2F1c2UgY29uc3RyYWludCB0 ZW1wb3JhbF9ybmdfcGsgb24gdGFibGUgdGVtcG9yYWxfcm5nIHJlcXVpcmVzIGl0CitISU5U OiAgWW91IGNhbiBkcm9wIGNvbnN0cmFpbnQgdGVtcG9yYWxfcm5nX3BrIG9uIHRhYmxlIHRl bXBvcmFsX3JuZyBpbnN0ZWFkLgorLS0gZHJvcHBpbmcgdGhlIFBLIGRyb3BzIHRoZSBDSEVD SyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIERST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmdfcGs7CitcZCB0ZW1wb3JhbF9ybmcKKyAgICAgICAgICAgICAgVGFi bGUgInB1YmxpYy50ZW1wb3JhbF9ybmciCisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0cmFuZ2Ug fCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgZGF0ZXJhbmdlIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CistLSB0 ZXN0IHdoZW4gdGhlIFdJVEhPVVQgT1ZFUkxBUFMgY29sdW1uIG5hbWUgY2hhbmdlczoKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBk YXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X3JuZyBSRU5BTUUgdmFsaWRfYXQgVE8gdmFsaWRfYXQxOworXGQgdGVtcG9yYWxfcm5nCisg ICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nIgorICBDb2x1bW4gICB8 ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQg ICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9h dDEgfCBkYXRlcmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAg ICAidGVtcG9yYWxfcm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0MSBXSVRIT1VU IE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0 eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0MSkpCisKKy0tIGNhbid0IGRyb3AgdGhl IENIRUNLIGNvbnN0cmFpbnQ6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05T VFJBSU5UIHZhbGlkX2F0X25vdF9lbXB0eTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29uc3Ry YWludCB2YWxpZF9hdF9ub3RfZW1wdHkgb24gdGFibGUgdGVtcG9yYWxfcm5nIGJlY2F1c2Ug Y29uc3RyYWludCB0ZW1wb3JhbF9ybmdfcGsgb24gdGFibGUgdGVtcG9yYWxfcm5nIHJlcXVp cmVzIGl0CitISU5UOiAgWW91IGNhbiBkcm9wIGNvbnN0cmFpbnQgdGVtcG9yYWxfcm5nX3Br IG9uIHRhYmxlIHRlbXBvcmFsX3JuZyBpbnN0ZWFkLgorLS0gZHJvcHBpbmcgdGhlIFBLIGRy b3BzIHRoZSBDSEVDSyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIERS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGs7CitcZCB0ZW1wb3JhbF9ybmcKKyAgICAg ICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmciCisgIENvbHVtbiAgIHwgICBU eXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAg ICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0MSB8 IGRhdGVyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisKK0RST1AgVEFCTEUgdGVt cG9yYWxfcm5nOwogLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZF UkxBUFM6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAJdmFsaWRfYXQgZGF0ZXJh bmdlLApAQCAtMTY0LDggKzM2NSw5IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgK IAl2YWxpZF9hdCBURVhULAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQogKTsKLUVSUk9SOiAgZGF0YSB0eXBl IHRleHQgaGFzIG5vIGRlZmF1bHQgb3BlcmF0b3IgY2xhc3MgZm9yIGFjY2VzcyBtZXRob2Qg Imdpc3QiCi1ISU5UOiAgWW91IG11c3Qgc3BlY2lmeSBhbiBvcGVyYXRvciBjbGFzcyBmb3Ig dGhlIGluZGV4IG9yIGRlZmluZSBhIGRlZmF1bHQgb3BlcmF0b3IgY2xhc3MgZm9yIHRoZSBk YXRhIHR5cGUuCitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxB UFMgaXMgbm90IGEgcmFuZ2Ugb3IgbXVsdGlyYW5nZSB0eXBlCitMSU5FIDQ6ICBDT05TVFJB SU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVi4u LgorICAgICAgICAgXgogLS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFuZ2U6 CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAJaWQgaW50NHJhbmdlLApAQCAtMjM3 LDcgKzQzOSw2IEBAIERST1AgVFlQRSB0ZXh0cmFuZ2UyOwogLS0KIC0tIHRlc3QgQUxURVIg VEFCTEUgQUREIENPTlNUUkFJTlQKIC0tCi1EUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzsKIENS RUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAogCWlkIGludDRyYW5nZSwKIAl2YWxpZF9hdCBk YXRlcmFuZ2UKQEAgLTI0NSw2ICs0NDYsNDkgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZyAoCiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmdfcGsKIAlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp OworLS0gY2FuJ3QgZHJvcCB0aGUgQ0hFQ0sgY29uc3RyYWludDoKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3JuZyBEUk9QIENPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5OworRVJST1I6 ICBjYW5ub3QgZHJvcCBjb25zdHJhaW50IHZhbGlkX2F0X25vdF9lbXB0eSBvbiB0YWJsZSB0 ZW1wb3JhbF9ybmcgYmVjYXVzZSBjb25zdHJhaW50IHRlbXBvcmFsX3JuZ19wayBvbiB0YWJs ZSB0ZW1wb3JhbF9ybmcgcmVxdWlyZXMgaXQKK0hJTlQ6ICBZb3UgY2FuIGRyb3AgY29uc3Ry YWludCB0ZW1wb3JhbF9ybmdfcGsgb24gdGFibGUgdGVtcG9yYWxfcm5nIGluc3RlYWQuCist LSBkcm9wcGluZyB0aGUgUEsgZHJvcHMgdGhlIENIRUNLIGNvbnN0cmFpbnQ6CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wazsKK1xk IHRlbXBvcmFsX3JuZworICAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3Ju ZyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSst LS0tLS0tLS0KKyBpZCAgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAg IHwgCisgdmFsaWRfYXQgfCBkYXRlcmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAor CistLSBmYWlsIGlmIGEgY29uc3RyYWludCB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0 czoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZyBBREQgQ09OU1RSQUlOVCB2YWxpZF9hdF9u b3RfZW1wdHkgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ybmcgQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitFUlJPUjogIGNvbnN0cmFpbnQg InZhbGlkX2F0X25vdF9lbXB0eSIgZm9yIHJlbGF0aW9uICJ0ZW1wb3JhbF9ybmciIGFscmVh ZHkgZXhpc3RzCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzsKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9tbHRybmcgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVtdWx0aXJh bmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfbWx0cm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfbWx0cm5nX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKTsKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNLIGNvbnN0cmFpbnQ6CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9tbHRybmcgRFJPUCBDT05TVFJBSU5UIHZhbGlkX2F0X25vdF9l bXB0eTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29uc3RyYWludCB2YWxpZF9hdF9ub3RfZW1w dHkgb24gdGFibGUgdGVtcG9yYWxfbWx0cm5nIGJlY2F1c2UgY29uc3RyYWludCB0ZW1wb3Jh bF9tbHRybmdfcGsgb24gdGFibGUgdGVtcG9yYWxfbWx0cm5nIHJlcXVpcmVzIGl0CitISU5U OiAgWW91IGNhbiBkcm9wIGNvbnN0cmFpbnQgdGVtcG9yYWxfbWx0cm5nX3BrIG9uIHRhYmxl IHRlbXBvcmFsX21sdHJuZyBpbnN0ZWFkLgorLS0gZHJvcHBpbmcgdGhlIFBLIGRyb3BzIHRo ZSBDSEVDSyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfbWx0cm5nIERST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9tbHRybmdfcGs7CitcZCB0ZW1wb3JhbF9tbHRybmcKKyAg ICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfbWx0cm5nIgorICBDb2x1bW4g IHwgICAgICBUeXBlICAgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0KKyBpZCAgICAgICB8IGludDRyYW5nZSAgICAgIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKKyB2YWxpZF9hdCB8IGRhdGVtdWx0aXJhbmdlIHwgICAgICAgICAgIHwgICAgICAg ICAgfCAKKworLS0gZmFpbCBpZiBhIGNvbnN0cmFpbnQgd2l0aCB0aGF0IG5hbWUgYWxyZWFk eSBleGlzdHM6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9tbHRybmcgQUREIENPTlNUUkFJTlQg dmFsaWRfYXRfbm90X2VtcHR5IENIRUNLIChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfbWx0cm5nIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJu Z19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRVJS T1I6ICBjb25zdHJhaW50ICJ2YWxpZF9hdF9ub3RfZW1wdHkiIGZvciByZWxhdGlvbiAidGVt cG9yYWxfbWx0cm5nIiBhbHJlYWR5IGV4aXN0cworRFJPUCBUQUJMRSB0ZW1wb3JhbF9tbHRy bmc7CiAtLSBQSyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgogQ1JFQVRFIFRB QkxFIHRlbXBvcmFsMyAoCiAJaWQgaW50NHJhbmdlLApAQCAtMjkyLDYgKzUzNiwyMyBAQCBB TFRFUiBUQUJMRSB0ZW1wb3JhbDMKIAlBREQgQ09MVU1OIHZhbGlkX2F0IGRhdGVyYW5nZSwK IAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKIAlQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworLS0gY2FuJ3QgZHJvcCB0aGUgQ0hFQ0sgY29uc3Ry YWludDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTlNUUkFJTlQgdmFsaWRfYXRf bm90X2VtcHR5OworRVJST1I6ICBjYW5ub3QgZHJvcCBjb25zdHJhaW50IHZhbGlkX2F0X25v dF9lbXB0eSBvbiB0YWJsZSB0ZW1wb3JhbDMgYmVjYXVzZSBjb25zdHJhaW50IHRlbXBvcmFs M19wayBvbiB0YWJsZSB0ZW1wb3JhbDMgcmVxdWlyZXMgaXQKK0hJTlQ6ICBZb3UgY2FuIGRy b3AgY29uc3RyYWludCB0ZW1wb3JhbDNfcGsgb24gdGFibGUgdGVtcG9yYWwzIGluc3RlYWQu CistLSBkcm9wcGluZyB0aGUgUEsgZHJvcHMgdGhlIENIRUNLIGNvbnN0cmFpbnQ6CitBTFRF UiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsM19wazsKK1xkIHRl bXBvcmFsMworICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbDMiCisgIENv bHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t CisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZh bGlkX2F0IHwgZGF0ZXJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKworLS0gZmFp bCBpZiBhIGNvbnN0cmFpbnQgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHM6CitBTFRF UiBUQUJMRSB0ZW1wb3JhbDMgQUREIENPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5IENI RUNLIChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIEFE RCBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpOworRVJST1I6ICBjb25zdHJhaW50ICJ2YWxpZF9hdF9ub3RfZW1w dHkiIGZvciByZWxhdGlvbiAidGVtcG9yYWwzIiBhbHJlYWR5IGV4aXN0cwogRFJPUCBUQUJM RSB0ZW1wb3JhbDM7CiAtLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWlu dCBhdCB0aGUgc2FtZSB0aW1lCiBDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKQEAgLTMwNSw2 ICs1NjYsMTEgQEAgRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CiAtLQogLS0gdGVzdCBQSyBpbnNl cnRzCiAtLQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwogLS0gb2theToK IElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwy KScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOwogSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJh bmdlKCcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnKSk7CkBAIC0zMjAsNiArNTg2LDE0IEBA IERFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChudWxsLCBbMjAxOC0wMS0wMSwyMDE4 LTAxLTA1KSkuCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFM VUVTICgnWzMsNCknLCBOVUxMKTsKIEVSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZh bGlkX2F0IiBvZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBj b25zdHJhaW50CiBERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwp LgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sz LDQpJywgJ2VtcHR5Jyk7CitFUlJPUjogIG5ldyByb3cgZm9yIHJlbGF0aW9uICJ0ZW1wb3Jh bF9ybmciIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQgInZhbGlkX2F0X25vdF9lbXB0eSIK K0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChbMyw0KSwgZW1wdHkpLgorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX21sdHJuZyAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQg ZGF0ZW11bHRpcmFuZ2UsCisgIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CiAtLSBva2F5Ogog SU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sx LDIpJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDIt MDMnKSkpOwogSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIChpZCwgdmFsaWRfYXQpIFZB TFVFUyAoJ1sxLDIpJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAzLTAzJywg JzIwMTgtMDQtMDQnKSkpOwpAQCAtMzM1LDYgKzYwOSw5IEBAIERFVEFJTDogIEZhaWxpbmcg cm93IGNvbnRhaW5zIChudWxsLCB7WzIwMTgtMDEtMDEsMjAxOC0wMS0wNSl9KS4KIElOU0VS VCBJTlRPIHRlbXBvcmFsX21sdHJuZyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMyw0KScs IE5VTEwpOwogRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAidmFsaWRfYXQiIG9mIHJl bGF0aW9uICJ0ZW1wb3JhbF9tbHRybmciIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQK IERFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChbMyw0KSwgbnVsbCkuCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9tbHRybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzMsNCknLCAn e30nKTsKK0VSUk9SOiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gInRlbXBvcmFsX21sdHJuZyIg dmlvbGF0ZXMgY2hlY2sgY29uc3RyYWludCAidmFsaWRfYXRfbm90X2VtcHR5IgorREVUQUlM OiAgRmFpbGluZyByb3cgY29udGFpbnMgKFszLDQpLCB7fSkuCiBTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX21sdHJuZyBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAgIGlkICAgfCAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgIAogLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTM0NCw2ICs2MjEsNTcgQEAgU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9tbHRybmcg T1JERVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwge1syMDE4LTAxLTAxLCl9CiAoNCBy b3dzKQogCistLQorLS0gdGVzdCBVTklRVUUgaW5zZXJ0cworLS0KK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ybmczICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKKy0tIG9rYXk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcz IChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAy JywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmczIChpZCwgdmFs aWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDE4LTAzLTAzJywgJzIwMTgt MDQtMDQnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmczIChpZCwgdmFsaWRfYXQpIFZB TFVFUyAoJ1syLDMpJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmczIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sz LDQpJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgTlVMTCkpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKE5VTEwsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMyAo aWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMyw0KScsIE5VTEwpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMyw0KScsICdlbXB0eScpOwor LS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmczIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEt MDUnKSk7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNp b24gY29uc3RyYWludCAidGVtcG9yYWxfcm5nM191cSIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzEsMiksIFsyMDE4LTAxLTAxLDIwMTgtMDEtMDUpKSBjb25mbGljdHMgd2l0 aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMjAxOC0wMS0wMiwyMDE4 LTAyLTAzKSkuCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfbWx0cm5nMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVtdWx0aXJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nM191cSBVTklRVUUgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKy0tIG9rYXk6CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9tbHRybmczIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSkpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfbWx0cm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScs IGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0Jykp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzMgKGlkLCB2YWxpZF9hdCkgVkFMVUVT ICgnWzIsMyknLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMS0wNScpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmczIChpZCwgdmFsaWRf YXQpIFZBTFVFUyAoJ1szLDQpJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgTlVMTCkpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzMgKGlkLCB2YWxp ZF9hdCkgVkFMVUVTIChOVUxMLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMS0wNScpKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmczIChp ZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1szLDQpJywgTlVMTCk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9tbHRybmczIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1szLDQpJywgJ3t9Jyk7Cist LSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzMgKGlkLCB2YWxp ZF9hdCkgVkFMVUVTICgnWzEsMiknLCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMS0wNScpKSk7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1 ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWxfbWx0cm5nM191cSIK K0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIHtbMjAxOC0wMS0wMSwyMDE4 LTAxLTA1KX0pIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0o WzEsMiksIHtbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKX0pLgorU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9tbHRybmczIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAg dmFsaWRfYXQgICAgICAgICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFsxLDIpIHwge1syMDE4LTAxLTAyLDIwMTgtMDItMDMpfQorIFsxLDIpIHwge1syMDE4 LTAzLTAzLDIwMTgtMDQtMDQpfQorIFsyLDMpIHwge1syMDE4LTAxLTAxLDIwMTgtMDEtMDUp fQorIFszLDQpIHwge30KKyBbMyw0KSB8IHtbMjAxOC0wMS0wMSwpfQorIFszLDQpIHwgCisg ICAgICAgfCB7WzIwMTgtMDEtMDEsMjAxOC0wMS0wNSl9CisoNyByb3dzKQorCitEUk9QIFRB QkxFIHRlbXBvcmFsX21sdHJuZzM7CiAtLQogLS0gdGVzdCBhIHJhbmdlIHdpdGggYm90aCBh IFBLIGFuZCBhIFVOSVFVRSBjb25zdHJhaW50CiAtLQpAQCAtMzcyLDYgKzcwMCw3IEBAIENS RUFURSBUQUJMRSB0ZW1wb3JhbDMgKAogQUxURVIgVEFCTEUgdGVtcG9yYWwzIEFMVEVSIENP TFVNTiB2YWxpZF9hdCBEUk9QIE5PVCBOVUxMOwogRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0 IiBpcyBpbiBhIHByaW1hcnkga2V5CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09M VU1OIHZhbGlkX2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShsb3dlcih2YWxp ZF9hdCksIHVwcGVyKHZhbGlkX2F0KSk7CitOT1RJQ0U6ICBtZXJnaW5nIGNvbnN0cmFpbnQg InZhbGlkX2F0X25vdF9lbXB0eSIgd2l0aCBpbmhlcml0ZWQgZGVmaW5pdGlvbgogQUxURVIg VEFCTEUgdGVtcG9yYWwzIFJFTkFNRSBDT0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhydTsK IEFMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF90aHJ1OwogRFJPUCBU QUJMRSB0ZW1wb3JhbDM7CkBAIC0zODMsMTAgKzcxMiwxMDYgQEAgQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkICgKIAlpZCBpbnQ0cmFuZ2UsCiAJdmFsaWRfYXQgZGF0ZXJh bmdlLAogICBuYW1lIHRleHQsCi0JQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKwlDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKIENSRUFURSBU QUJMRSB0cDEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMg SU4gKCdbMSwyKScsICdbMiwzKScpOwogQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7 CistLSB0aGUgQ0hFQ0sgY29uc3RyYWludCBpcyBjb3BpZWQ6CitcZCB0cDEKKyAgICAgICAg ICAgICAgICAgIFRhYmxlICJwdWJsaWMudHAxIgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwg Q29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJh bmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8IGRhdGVyYW5nZSB8 ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgbmFtZSAgICAgfCB0ZXh0ICAgICAgfCAgICAg ICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBGT1IgVkFMVUVTIElOICgnWzEsMiknLCAnWzIsMyknKQorSW5kZXhlczoKKyAgICAidHAx X3BrZXkiIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKK0No ZWNrIGNvbnN0cmFpbnRzOgorICAgICJ2YWxpZF9hdF9ub3RfZW1wdHkiIENIRUNLIChOT1Qg aXNlbXB0eSh2YWxpZF9hdCkpCisKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNLIGNvbnN0cmFp bnQ6CitBTFRFUiBUQUJMRSB0cDEgRFJPUCBDT05TVFJBSU5UIHZhbGlkX2F0X25vdF9lbXB0 eTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgaW5oZXJpdGVkIGNvbnN0cmFpbnQgInZhbGlkX2F0 X25vdF9lbXB0eSIgb2YgcmVsYXRpb24gInRwMSIKKy0tIGRyb3BwaW5nIHRoZSBQSyBkcm9w cyBhbGwgdGhlIENIRUNLIGNvbnN0cmFpbnRzOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWQgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3BrOworXGQg dGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgICBQYXJ0aXRpb25lZCB0YWJsZSAicHVibGljLnRl bXBvcmFsX3BhcnRpdGlvbmVkIgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKKyB2YWxpZF9hdCB8IGRhdGVyYW5nZSB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisgbmFtZSAgICAgfCB0ZXh0ICAgICAgfCAgICAgICAgICAgfCAg ICAgICAgICB8IAorUGFydGl0aW9uIGtleTogTElTVCAoaWQpCitOdW1iZXIgb2YgcGFydGl0 aW9uczogMiAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQorCitcZCB0cDEKKyAgICAgICAgICAg ICAgICAgIFRhYmxlICJwdWJsaWMudHAxIgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29s bGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdl IHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB2YWxpZF9hdCB8IGRhdGVyYW5nZSB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgbmFtZSAgICAgfCB0ZXh0ICAgICAgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIG9mOiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBG T1IgVkFMVUVTIElOICgnWzEsMiknLCAnWzIsMyknKQorCistLSBOb3cgY3JlYXRlIHRoZSB0 ZW1wb3JhbCBQSyB3aXRoIEFMVEVSOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWQKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworLS0gdGhlIENIRUNLIGNvbnN0 cmFpbnQgaXMgY29waWVkOgorXGQgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgICBQYXJ0aXRp b25lZCB0YWJsZSAicHVibGljLnRlbXBvcmFsX3BhcnRpdGlvbmVkIgorICBDb2x1bW4gIHwg ICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAg ICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxpZF9hdCB8 IGRhdGVyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgbmFtZSAgICAgfCB0ZXh0 ICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGFydGl0aW9uIGtleTogTElTVCAo aWQpCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9wayIgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6 CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0 KSkKK051bWJlciBvZiBwYXJ0aXRpb25zOiAyIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisK K1xkIHRwMQorICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50cDEiCisgIENvbHVt biAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisg aWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlk X2F0IHwgZGF0ZXJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBuYW1lICAgICB8 IHRleHQgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRl bXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpCitJ bmRleGVzOgorICAgICJ0cDFfcGtleSIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9l bXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkKKworLS0gY2FuJ3QgZHJvcCB0 aGUgQ0hFQ0sgY29uc3RyYWludDoKK0FMVEVSIFRBQkxFIHRwMSBEUk9QIENPTlNUUkFJTlQg dmFsaWRfYXRfbm90X2VtcHR5OworRVJST1I6ICBjYW5ub3QgZHJvcCBpbmhlcml0ZWQgY29u c3RyYWludCAidmFsaWRfYXRfbm90X2VtcHR5IiBvZiByZWxhdGlvbiAidHAxIgorLS0gZHJv cHBpbmcgdGhlIFBLIGRyb3BzIGFsbCB0aGUgQ0hFQ0sgY29uc3RyYWludHM6CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcGs7CitcZCB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICAgIFBhcnRpdGlvbmVk IHRhYmxlICJwdWJsaWMudGVtcG9yYWxfcGFydGl0aW9uZWQiCisgIENvbHVtbiAgfCAgIFR5 cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAg fCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgZGF0 ZXJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBuYW1lICAgICB8IHRleHQgICAg ICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24ga2V5OiBMSVNUIChpZCkK K051bWJlciBvZiBwYXJ0aXRpb25zOiAyIChVc2UgXGQrIHRvIGxpc3QgdGhlbS4pCisKK1xk IHRwMQorICAgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50cDEiCisgIENvbHVtbiAg fCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQg ICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0 IHwgZGF0ZXJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBuYW1lICAgICB8IHRl eHQgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQYXJ0aXRpb24gb2Y6IHRlbXBv cmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpCisKKy0t IFJlc3RvcmUgdGhlIFBLIGFuZCB0ZXN0IHNvbWUgSU5TRVJUczoKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKIElO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIChpZCwgdmFsaWRfYXQsIG5hbWUpIFZB TFVFUwogICAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEn KSwgJ29uZScpLAogICAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAt MDMtMDEnKSwgJ29uZScpLApAQCAtNDE4LDcgKzg0Myw3IEBAIENSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCAoCiAJaWQgaW50NHJhbmdlLAogCXZhbGlkX2F0IGRhdGVyYW5n ZSwKICAgbmFtZSB0ZXh0LAotCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBV TklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCUNPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKIENSRUFURSBUQUJMRSB0cDEgUEFS VElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwyKScs ICdbMiwzKScpOwogQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CkBAIC04MDYsNiAr MTIzMSw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAoCiAgcGFyZW50 X2lkMiB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCiBJbmRleGVzOgog ICAgICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInZhbGlkX2F0 X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSkKIEZvcmVpZ24ta2V5 IGNvbnN0cmFpbnRzOgogICAgICJ0ZW1wb3JhbF9mazJfcm5nMnJuZ19mayIgRk9SRUlHTiBL RVkgKHBhcmVudF9pZDEsIHBhcmVudF9pZDIsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcyKGlkMSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCiAKQEAgLTg0NSw2 ICsxMjcyLDggQEAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcKICBwYXJlbnRf aWQyIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKIEluZGV4ZXM6CiAg ICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFsaWRfYXRf bm90X2VtcHR5IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQogRm9yZWlnbi1rZXkg Y29uc3RyYWludHM6CiAgICAgInRlbXBvcmFsX2ZrMl9ybmcycm5nX2ZrIiBGT1JFSUdOIEtF WSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZzIoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKIApAQCAtODUyLDYg KzEyODEsNyBAQCBGb3JlaWduLWtleSBjb25zdHJhaW50czoKIEFMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aywKIAlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2Uo bG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworTk9USUNFOiAgbWVyZ2luZyBj b25zdHJhaW50ICJ2YWxpZF9hdF9ub3RfZW1wdHkiIHdpdGggaW5oZXJpdGVkIGRlZmluaXRp b24KIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCiAJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQpAQCAtODYwLDYgKzEyOTAsNyBAQCBFUlJPUjogIGZvcmVpZ24ga2V5IGNv bnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIGNhbm5vdCBiZSBpbXBsZW1lbnRl ZAogREVUQUlMOiAgS2V5IGNvbHVtbnMgInZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUg b2YgaW5jb21wYXRpYmxlIHR5cGVzOiB0c3JhbmdlIGFuZCBkYXRlcmFuZ2UuCiBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUg ZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVy KHZhbGlkX2F0KTo6ZGF0ZSk7CitOT1RJQ0U6ICBtZXJnaW5nIGNvbnN0cmFpbnQgInZhbGlk X2F0X25vdF9lbXB0eSIgd2l0aCBpbmhlcml0ZWQgZGVmaW5pdGlvbgogLS0gd2l0aCBpbmZl cnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCkBA IC0xMjc2LDYgKzE3MDcsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX21sdHJuZzJt bHRybmcgKAogIHBhcmVudF9pZDIgfCBpbnQ0cmFuZ2UgICAgICB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCiBJbmRleGVzOgogICAgICJ0ZW1wb3JhbF9mazJfbWx0cm5nMm1sdHJuZ19w ayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorQ2hlY2sg Y29uc3RyYWludHM6CisgICAgInZhbGlkX2F0X25vdF9lbXB0eSIgQ0hFQ0sgKE5PVCBpc2Vt cHR5KHZhbGlkX2F0KSkKIEZvcmVpZ24ta2V5IGNvbnN0cmFpbnRzOgogICAgICJ0ZW1wb3Jh bF9mazJfbWx0cm5nMm1sdHJuZ19mayIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZDEsIHBhcmVu dF9pZDIsIFBFUklPRCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9tbHRybmcyKGlk MSwgaWQyLCBQRVJJT0QgdmFsaWRfYXQpCiAKQEAgLTEzMTUsNiArMTc0OCw4IEBAIEFMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nCiAgcGFyZW50X2lkMiB8IGludDRy YW5nZSAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKIEluZGV4ZXM6CiAgICAgInRl bXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAidmFsaWRfYXRf bm90X2VtcHR5IiBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKQogRm9yZWlnbi1rZXkg Y29uc3RyYWludHM6CiAgICAgInRlbXBvcmFsX2ZrMl9tbHRybmcybWx0cm5nX2ZrIiBGT1JF SUdOIEtFWSAocGFyZW50X2lkMSwgcGFyZW50X2lkMiwgUEVSSU9EIHZhbGlkX2F0KSBSRUZF UkVOQ0VTIHRlbXBvcmFsX21sdHJuZzIoaWQxLCBpZDIsIFBFUklPRCB2YWxpZF9hdCkKIApA QCAtMTUzNiw0MSArMTk3MSwxMyBAQCBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFi bGUgInRlbXBvcmFsX21sdHJuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYQogREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwge1syMDE4LTAxLTAxLDIwMTgtMDIt MDEpfSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19tbHRy bmcybWx0cm5nIi4KIFJPTExCQUNLOwogLS0KLS0tIHRlc3QgRk9SRUlHTiBLRVksIGJveCBy ZWZlcmVuY2VzIGJveAotLS0gKG5vdCBhbGxvd2VkOiBQRVJJT0QgcGFydCBtdXN0IGJlIGEg cmFuZ2Ugb3IgbXVsdGlyYW5nZSkKLS0tCi1DUkVBVEUgVEFCTEUgdGVtcG9yYWxfYm94ICgK LSAgaWQgaW50NHJhbmdlLAotICB2YWxpZF9hdCBib3gsCi0gIENPTlNUUkFJTlQgdGVtcG9y YWxfYm94X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK LSk7Ci1cZCB0ZW1wb3JhbF9ib3gKLSAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1w b3JhbF9ib3giCi0gIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJs ZSB8IERlZmF1bHQgCi0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0rLS0tLS0tLS0tCi0gaWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBu b3QgbnVsbCB8IAotIHZhbGlkX2F0IHwgYm94ICAgICAgIHwgICAgICAgICAgIHwgbm90IG51 bGwgfCAKLUluZGV4ZXM6Ci0gICAgInRlbXBvcmFsX2JveF9wayIgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQotCi1DUkVBVEUgVEFCTEUgdGVtcG9yYWxf ZmtfYm94MmJveCAoCi0gIGlkIGludDRyYW5nZSwKLSAgdmFsaWRfYXQgYm94LAotICBwYXJl bnRfaWQgaW50NHJhbmdlLAotICBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX2JveDJib3hfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKLSAgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ib3gyYm94X2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKLSAgICBSRUZFUkVOQ0VTIHRlbXBvcmFsX2JveCAoaWQsIFBFUklP RCB2YWxpZF9hdCkKLSk7Ci1FUlJPUjogIGludmFsaWQgdHlwZSBmb3IgUEVSSU9EIHBhcnQg b2YgZm9yZWlnbiBrZXkKLURFVEFJTDogIE9ubHkgcmFuZ2UgYW5kIG11bHRpcmFuZ2UgYXJl IHN1cHBvcnRlZC4KLS0tCiAtLSBGSyBiZXR3ZWVuIHBhcnRpdGlvbmVkIHRhYmxlcwogLS0K IENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAogCWlkIGludDRyYW5n ZSwKIAl2YWxpZF9hdCBkYXRlcmFuZ2UsCiAgIG5hbWUgdGV4dCwKLQlDT05TVFJBSU5UIHRl bXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJ VElPTiBCWSBMSVNUIChpZCk7CiBDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDIpJywgJ1szLDQpJywg J1s1LDYpJywgJ1s3LDgpJywgJ1s5LDEwKScsICdbMTEsMTIpJyk7CiBDUkVBVEUgVEFCTEUg dHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJ TiAoJ1syLDMpJywgJ1s0LDUpJywgJ1s2LDcpJywgJ1s4LDkpJywgJ1sxMCwxMSknLCAnWzEy LDEzKScpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApp bmRleCA1ZDQxYTZiZDYyOC4uN2QzMmQ0MTBmMGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC00NSw2ICs0NSw2OCBAQCBDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcm5nICgKIFxkIHRlbXBvcmFsX3JuZwogU0VMRUNUIHBnX2dldF9jb25z dHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVt cG9yYWxfcm5nX3BrJzsKIFNFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRy dWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19w ayc7CistLSBjYW4ndCBkcm9wIHRoZSBDSEVDSyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUg dGVtcG9yYWxfcm5nIERST1AgQ09OU1RSQUlOVCB2YWxpZF9hdF9ub3RfZW1wdHk7CistLSBk cm9wcGluZyB0aGUgUEsgZHJvcHMgdGhlIENIRUNLIGNvbnN0cmFpbnQ6CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wazsKK1xkIHRl bXBvcmFsX3JuZworLS0gZmFpbCBpZiBhIGNvbnN0cmFpbnQgd2l0aCB0aGF0IG5hbWUgYWxy ZWFkeSBleGlzdHM6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcgQUREIENPTlNUUkFJTlQg dmFsaWRfYXRfbm90X2VtcHR5IENIRUNLIChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcm5nIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJM RSB0ZW1wb3JhbF9ybmc7CisKKy0tIFBLIGZyb20gTElLRToKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyIChMSUtFIHRl bXBvcmFsX3JuZyBJTkNMVURJTkcgQUxMKTsKK1xkIHRlbXBvcmFsX3JuZzIKK0RST1AgVEFC TEUgdGVtcG9yYWxfcm5nMjsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyIChMSUtFIHRl bXBvcmFsX3JuZyBJTkNMVURJTkcgQUxMLCBDT05TVFJBSU5UIHZhbGlkX2F0X25vdF9lbXB0 eSBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKSk7CitEUk9QIFRBQkxFIHRlbXBvcmFs X3JuZzsKKworLS0gUEsgZnJvbSBJTkhFUklUUzoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9y bmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgpIElOSEVSSVRTICh0 ZW1wb3JhbF9ybmcpOworXGQgdGVtcG9yYWxfcm5nMgorRFJPUCBUQUJMRSB0ZW1wb3JhbF9y bmcyOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKENPTlNUUkFJTlQgdmFsaWRfYXRf bm90X2VtcHR5IENIRUNLIChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpKSBJTkhFUklUUyAodGVt cG9yYWxfcm5nKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOworCistLSBQSyBpbiBpbmhl cml0aW5nIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9y bmcyIChDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpKSBJTkhFUklUUyAodGVtcG9yYWxfcm5nKTsKK1xkIHRl bXBvcmFsX3JuZzIKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nIENBU0NBREU7CistLSBQSyBp biBpbmhlcml0aW5nIHRhYmxlIHdpdGggY29uZmxpY3RpbmcgQ0hFQ0sgY29uc3RyYWludCBp biBwYXJlbnQ6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5 IENIRUNLIChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpCispOworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzIgKENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykpIElOSEVSSVRTICh0ZW1wb3JhbF9ybmcpOwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CisKKy0tIGFkZCBQSyB0byBhbHJlYWR5IGluaGVy aXRpbmcgdGFibGU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2Vt cHR5IENIRUNLIChOT1QgaXNlbXB0eSh2YWxpZF9hdCkpCispOworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZzIgKCkgSU5IRVJJVFMgKHRlbXBvcmFsX3JuZyk7CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ybmcyCisgIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVt cG9yYWxfcm5nMjsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nOwogCiAtLSBQSyB3aXRoIHR3 byBjb2x1bW5zIHBsdXMgYSByYW5nZToKIC0tIFdlIGRvbid0IGRyb3AgdGhpcyB0YWJsZSBi ZWNhdXNlIHRlc3RzIGJlbG93IGFsc28gbmVlZCBtdWx0aXBsZSBzY2FsYXIgY29sdW1ucy4K QEAgLTc2LDYgKzEzOCwxNSBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfbWx0cm5nICgKICAg Q09OU1RSQUlOVCB0ZW1wb3JhbF9tbHRybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQogKTsKIFxkIHRlbXBvcmFsX21sdHJuZworLS0gY2FuJ3Qg ZHJvcCB0aGUgQ0hFQ0sgY29uc3RyYWludDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX21sdHJu ZyBEUk9QIENPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5OworLS0gZHJvcHBpbmcgdGhl IFBLIGRyb3BzIHRoZSBDSEVDSyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWxf bWx0cm5nIERST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGs7CitcZCB0ZW1wb3JhbF9t bHRybmcKKy0tIGZhaWwgaWYgYSBjb25zdHJhaW50IHdpdGggdGhhdCBuYW1lIGFscmVhZHkg ZXhpc3RzOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfbWx0cm5nIEFERCBDT05TVFJBSU5UIHZh bGlkX2F0X25vdF9lbXB0eSBDSEVDSyAoTk9UIGlzZW1wdHkodmFsaWRfYXQpKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX21sdHJuZyBBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9tbHRybmdf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1Ag VEFCTEUgdGVtcG9yYWxfbWx0cm5nOwogCiAtLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMg YSBtdWx0aXJhbmdlOgogLS0gV2UgZG9uJ3QgZHJvcCB0aGlzIHRhYmxlIGJlY2F1c2UgdGVz dHMgYmVsb3cgYWxzbyBuZWVkIG11bHRpcGxlIHNjYWxhciBjb2x1bW5zLgpAQCAtODksNiAr MTYwLDM3IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9tbHRybmcyICgKIFNFTEVDVCBwZ19n ZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1l ID0gJ3RlbXBvcmFsX21sdHJuZzJfcGsnOwogU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25p bmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVt cG9yYWxfbWx0cm5nMl9wayc7CiAKKy0tIHRlc3Qgd2hlbiB0aGUgV0lUSE9VVCBPVkVSTEFQ UyBjb2x1bW4gdHlwZSBjaGFuZ2VzOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nCisgIEFMVEVSIENPTFVNTiB2YWxpZF9h dCBUWVBFIGRhdGVyYW5nZSBVU0lORyBkYXRlcmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBl cih2YWxpZF9hdCkpOworXGQgdGVtcG9yYWxfcm5nCistLSBjYW4ndCBkcm9wIHRoZSBDSEVD SyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIERST1AgQ09OU1RSQUlO VCB2YWxpZF9hdF9ub3RfZW1wdHk7CistLSBkcm9wcGluZyB0aGUgUEsgZHJvcHMgdGhlIENI RUNLIGNvbnN0cmFpbnQ6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3JuZ19wazsKK1xkIHRlbXBvcmFsX3JuZworRFJPUCBUQUJMRSB0ZW1w b3JhbF9ybmc7CisKKy0tIHRlc3Qgd2hlbiB0aGUgV0lUSE9VVCBPVkVSTEFQUyBjb2x1bW4g bmFtZSBjaGFuZ2VzOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfcm5nIFJFTkFNRSB2YWxpZF9hdCBUTyB2YWxpZF9hdDE7Citc ZCB0ZW1wb3JhbF9ybmcKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNLIGNvbnN0cmFpbnQ6CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05TVFJBSU5UIHZhbGlkX2F0X25vdF9l bXB0eTsKKy0tIGRyb3BwaW5nIHRoZSBQSyBkcm9wcyB0aGUgQ0hFQ0sgY29uc3RyYWludDoK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZyBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5n X3BrOworXGQgdGVtcG9yYWxfcm5nCitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzsKKwogLS0g VU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CiAKIENSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKQEAgLTE1MCw3ICsyNTIsNiBAQCBEUk9QIFRZUEUg dGV4dHJhbmdlMjsKIC0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKIC0tCiAK LURST1AgVEFCTEUgdGVtcG9yYWxfcm5nOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAo CiAJaWQgaW50NHJhbmdlLAogCXZhbGlkX2F0IGRhdGVyYW5nZQpAQCAtMTU4LDggKzI1OSwz NSBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X3JuZwogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wawogCVBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBjYW4ndCBkcm9wIHRoZSBDSEVD SyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIERST1AgQ09OU1RSQUlO VCB2YWxpZF9hdF9ub3RfZW1wdHk7CistLSBkcm9wcGluZyB0aGUgUEsgZHJvcHMgdGhlIENI RUNLIGNvbnN0cmFpbnQ6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcgRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3JuZ19wazsKK1xkIHRlbXBvcmFsX3JuZworLS0gZmFpbCBpZiBhIGNv bnN0cmFpbnQgd2l0aCB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHM6CitBTFRFUiBUQUJMRSB0 ZW1wb3JhbF9ybmcgQUREIENPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5IENIRUNLIChO T1QgaXNlbXB0eSh2YWxpZF9hdCkpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nIEFERCBD T05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CisKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9tbHRybmcgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRh dGVtdWx0aXJhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfbWx0cm5nCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKTsKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNLIGNvbnN0cmFp bnQ6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9tbHRybmcgRFJPUCBDT05TVFJBSU5UIHZhbGlk X2F0X25vdF9lbXB0eTsKKy0tIGRyb3BwaW5nIHRoZSBQSyBkcm9wcyB0aGUgQ0hFQ0sgY29u c3RyYWludDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX21sdHJuZyBEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfbWx0cm5nX3BrOworXGQgdGVtcG9yYWxfbWx0cm5nCistLSBmYWlsIGlmIGEg Y29uc3RyYWludCB3aXRoIHRoYXQgbmFtZSBhbHJlYWR5IGV4aXN0czoKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX21sdHJuZyBBREQgQ09OU1RSQUlOVCB2YWxpZF9hdF9ub3RfZW1wdHkgQ0hF Q0sgKE5PVCBpc2VtcHR5KHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9tbHRy bmcgQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfbWx0cm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX21sdHJu ZzsKIAogLS0gUEsgd2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKKwogQ1JFQVRF IFRBQkxFIHRlbXBvcmFsMyAoCiAJaWQgaW50NHJhbmdlLAogCXZhbGlkX2F0IGRhdGVyYW5n ZQpAQCAtMjAwLDYgKzMyOCwxNCBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKIAlBREQgQ09M VU1OIHZhbGlkX2F0IGRhdGVyYW5nZSwKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsK IAlQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworLS0gY2Fu J3QgZHJvcCB0aGUgQ0hFQ0sgY29uc3RyYWludDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBE Uk9QIENPTlNUUkFJTlQgdmFsaWRfYXRfbm90X2VtcHR5OworLS0gZHJvcHBpbmcgdGhlIFBL IGRyb3BzIHRoZSBDSEVDSyBjb25zdHJhaW50OgorQUxURVIgVEFCTEUgdGVtcG9yYWwzIERS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGs7CitcZCB0ZW1wb3JhbDMKKy0tIGZhaWwgaWYg YSBjb25zdHJhaW50IHdpdGggdGhhdCBuYW1lIGFscmVhZHkgZXhpc3RzOgorQUxURVIgVEFC TEUgdGVtcG9yYWwzIEFERCBDT05TVFJBSU5UIHZhbGlkX2F0X25vdF9lbXB0eSBDSEVDSyAo Tk9UIGlzZW1wdHkodmFsaWRfYXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKTsKIERST1AgVEFCTEUgdGVtcG9yYWwzOwogCiAtLSBBZGQgcmFuZ2UgY29s dW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1lCkBAIC0yMTYsNiAr MzUyLDEyIEBAIERST1AgVEFCTEUgdGVtcG9yYWwzOwogLS0gdGVzdCBQSyBpbnNlcnRzCiAt LQogCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKIC0tIG9rYXk6CiBJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzEsMikn LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKIElOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVyYW5n ZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpOwpAQCAtMjI2LDYgKzM2OCwxMyBAQCBJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzMsNCkn LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLAogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChp ZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDEtMDUnKSk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgKGlkLCB2YWxpZF9h dCkgVkFMVUVTIChOVUxMLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScp KTsKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdb Myw0KScsIE5VTEwpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIChpZCwgdmFsaWRfYXQp IFZBTFVFUyAoJ1szLDQpJywgJ2VtcHR5Jyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9t bHRybmcgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVtdWx0aXJhbmdlLAor ICBDT05TVFJBSU5UIHRlbXBvcmFsX21sdHJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwogCiAtLSBva2F5OgogSU5TRVJUIElOVE8gdGVt cG9yYWxfbWx0cm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZW11bHRp cmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSkpOwpAQCAtMjM3 LDkgKzM4Niw1NiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgnWzMsNCknLCBkYXRlbXVsdGlyYW5nZShkYXRlcgogSU5TRVJUIElOVE8g dGVtcG9yYWxfbWx0cm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZW11 bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSkpOwogSU5T RVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoTlVMTCwg ZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSkp OwogSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAo J1szLDQpJywgTlVMTCk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmcgKGlkLCB2YWxp ZF9hdCkgVkFMVUVTICgnWzMsNCknLCAne30nKTsKIAogU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9tbHRybmcgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogCistLQorLS0gdGVzdCBVTklRVUUg aW5zZXJ0cworLS0KKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzMgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcz X3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBv a2F5OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMg KCdbMSwyKScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScs IGRhdGVyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMiwzKScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMyw0KScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsIE5VTEwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzMgKGlkLCB2YWxpZF9h dCkgVkFMVUVTIChOVUxMLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzMgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgn WzMsNCknLCBOVUxMKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzMgKGlkLCB2YWxpZF9h dCkgVkFMVUVTICgnWzMsNCknLCAnZW1wdHknKTsKKworLS0gc2hvdWxkIGZhaWw6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmczIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CisKK0RST1AgVEFCTEUg dGVtcG9yYWxfcm5nMzsKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX21sdHJuZzMgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlbXVsdGlyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX21sdHJuZzNfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CisKKy0tIG9rYXk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmczIChpZCwg dmFsaWRfYXQpIFZBTFVFUyAoJ1sxLDIpJywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0 cm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdbMSwyKScsIGRhdGVtdWx0aXJhbmdlKGRh dGVyYW5nZSgnMjAxOC0wMy0wMycsICcyMDE4LTA0LTA0JykpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX21sdHJuZzMgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgnWzIsMyknLCBkYXRlbXVs dGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9tbHRybmczIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoJ1szLDQp JywgZGF0ZW11bHRpcmFuZ2UoZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgTlVMTCkpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX21sdHJuZzMgKGlkLCB2YWxpZF9hdCkgVkFMVUVTIChOVUxM LCBkYXRlbXVsdGlyYW5nZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScp KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmczIChpZCwgdmFsaWRfYXQpIFZBTFVF UyAoJ1szLDQpJywgTlVMTCk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9tbHRybmczIChpZCwg dmFsaWRfYXQpIFZBTFVFUyAoJ1szLDQpJywgJ3t9Jyk7CisKKy0tIHNob3VsZCBmYWlsOgor SU5TRVJUIElOVE8gdGVtcG9yYWxfbWx0cm5nMyAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKCdb MSwyKScsIGRhdGVtdWx0aXJhbmdlKGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAx LTA1JykpKTsKKworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9tbHRybmczIE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9tbHRybmczOworCiAtLQogLS0g dGVzdCBhIHJhbmdlIHdpdGggYm90aCBhIFBLIGFuZCBhIFVOSVFVRSBjb25zdHJhaW50CiAt LQpAQCAtMjg0LDEwICs0ODAsMzMgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkICgKIAlpZCBpbnQ0cmFuZ2UsCiAJdmFsaWRfYXQgZGF0ZXJhbmdlLAogICBuYW1lIHRl eHQsCi0JQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKICkgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKIENSRUFURSBUQUJMRSB0cDEgUEFSVElU SU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwyKScsICdb MiwzKScpOwogQ1JFQVRFIFRBQkxFIHRwMiBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0 aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CistLSB0aGUgQ0hFQ0sg Y29uc3RyYWludCBpcyBjb3BpZWQ6CitcZCB0cDEKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNL IGNvbnN0cmFpbnQ6CitBTFRFUiBUQUJMRSB0cDEgRFJPUCBDT05TVFJBSU5UIHZhbGlkX2F0 X25vdF9lbXB0eTsKKy0tIGRyb3BwaW5nIHRoZSBQSyBkcm9wcyBhbGwgdGhlIENIRUNLIGNv bnN0cmFpbnRzOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3BrOworXGQgdGVtcG9yYWxfcGFydGl0aW9u ZWQKK1xkIHRwMQorLS0gTm93IGNyZWF0ZSB0aGUgdGVtcG9yYWwgUEsgd2l0aCBBTFRFUjoK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKTsKKy0tIHRoZSBDSEVDSyBjb25zdHJhaW50IGlzIGNvcGllZDoKK1xkIHRl bXBvcmFsX3BhcnRpdGlvbmVkCitcZCB0cDEKKy0tIGNhbid0IGRyb3AgdGhlIENIRUNLIGNv bnN0cmFpbnQ6CitBTFRFUiBUQUJMRSB0cDEgRFJPUCBDT05TVFJBSU5UIHZhbGlkX2F0X25v dF9lbXB0eTsKKy0tIGRyb3BwaW5nIHRoZSBQSyBkcm9wcyBhbGwgdGhlIENIRUNLIGNvbnN0 cmFpbnRzOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3BrOworXGQgdGVtcG9yYWxfcGFydGl0aW9uZWQK K1xkIHRwMQorLS0gUmVzdG9yZSB0aGUgUEsgYW5kIHRlc3Qgc29tZSBJTlNFUlRzOgorQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpOwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQgKGlkLCB2YWxpZF9h dCwgbmFtZSkgVkFMVUVTCiAgICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAn MjAwMC0wMi0wMScpLCAnb25lJyksCiAgICgnWzEsMiknLCBkYXRlcmFuZ2UoJzIwMDAtMDIt MDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCkBAIC0zMDIsNyArNTIxLDcgQEAgQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKIAlpZCBpbnQ0cmFuZ2UsCiAJdmFsaWRf YXQgZGF0ZXJhbmdlLAogICBuYW1lIHRleHQsCi0JQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJp dGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwogQ1JFQVRFIFRB QkxFIHRwMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJ TiAoJ1sxLDIpJywgJ1syLDMpJyk7CiBDUkVBVEUgVEFCTEUgdHAyIFBBUlRJVElPTiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsNCknLCAnWzQsNSknKTsK QEAgLTEyNzMsMjcgKzE0OTIsNiBAQCBCRUdJTjsKICAgREVMRVRFIEZST00gdGVtcG9yYWxf bWx0cm5nIFdIRVJFIGlkID0gJ1s1LDYpJyBBTkQgdmFsaWRfYXQgPSBkYXRlbXVsdGlyYW5n ZShkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKIFJPTExCQUNLOwog Ci0tLQotLS0gdGVzdCBGT1JFSUdOIEtFWSwgYm94IHJlZmVyZW5jZXMgYm94Ci0tLSAobm90 IGFsbG93ZWQ6IFBFUklPRCBwYXJ0IG11c3QgYmUgYSByYW5nZSBvciBtdWx0aXJhbmdlKQot LS0KLQotQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2JveCAoCi0gIGlkIGludDRyYW5nZSwKLSAg dmFsaWRfYXQgYm94LAotICBDT05TVFJBSU5UIHRlbXBvcmFsX2JveF9wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCi0pOwotXGQgdGVtcG9yYWxfYm94 Ci0KLUNSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ib3gyYm94ICgKLSAgaWQgaW50NHJhbmdl LAotICB2YWxpZF9hdCBib3gsCi0gIHBhcmVudF9pZCBpbnQ0cmFuZ2UsCi0gIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfYm94MmJveF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpLAotICBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX2JveDJib3hfZmsg Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQotICAgIFJFRkVSRU5D RVMgdGVtcG9yYWxfYm94IChpZCwgUEVSSU9EIHZhbGlkX2F0KQotKTsKLQogLS0KIC0tIEZL IGJldHdlZW4gcGFydGl0aW9uZWQgdGFibGVzCiAtLQpAQCAtMTMwMiw3ICsxNTAwLDcgQEAg Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAJaWQgaW50NHJhbmdl LAogCXZhbGlkX2F0IGRhdGVyYW5nZSwKICAgbmFtZSB0ZXh0LAotCUNPTlNUUkFJTlQgdGVt cG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKICkgUEFSVElU SU9OIEJZIExJU1QgKGlkKTsKIENSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMiknLCAnWzMsNCknLCAn WzUsNiknLCAnWzcsOCknLCAnWzksMTApJywgJ1sxMSwxMiknKTsKIENSRUFURSBUQUJMRSB0 cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElO ICgnWzIsMyknLCAnWzQsNSknLCAnWzYsNyknLCAnWzgsOSknLCAnWzEwLDExKScsICdbMTIs MTMpJyk7Ci0tIAoyLjQyLjAKCg== --------------Irz5Q423O7k1p7hAm303jl35--