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 1qinIQ-007rJt-GL for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Sep 2023 02:50:35 +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 1qinIO-00DlIT-Be for pgsql-hackers@arkaria.postgresql.org; Wed, 20 Sep 2023 02:50:32 +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 1qinIN-00DlHg-9Y for pgsql-hackers@lists.postgresql.org; Wed, 20 Sep 2023 02:50:31 +0000 Received: from mail-ot1-x32a.google.com ([2607:f8b0:4864:20::32a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qinIC-006EKA-PE for pgsql-hackers@lists.postgresql.org; Wed, 20 Sep 2023 02:50:30 +0000 Received: by mail-ot1-x32a.google.com with SMTP id 46e09a7af769-6c46b7c04c0so407526a34.1 for ; Tue, 19 Sep 2023 19:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1695178218; x=1695783018; darn=lists.postgresql.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=RihvP/dHvNiLOSYYyKHel9JuAiGCEDojT2KGFm5v6B0=; b=m3ErSUKyOC6MM7utGeX0SHqZKrigJQPVFVooLIYEld5cIyqoYbGqA1wDkRmBMeqVwD nooQXYid394L6oWwjSqmyfdCw9sEe5WbJn1DGGU39i5Ntsv9ua4qv6HKoni/CAS/OxWo Z/xPfEmjZ7NAEEEEOuMaLp823cHfn+0gXi0nPwD5Zaq75oWOJ7gKAMXn24ncy2U6LKQL +mNdALXUI4NFPsRCv1hJxNRrmkNEi0z/I03vnfE2wgUdZSLp1Uyx0X/R5FIHUhXfrYnj gRx0HNWBBLvtwfqf5WA7FjDREZhKW+CrKjauJ4okdGjv89WO49Cs7AaJQWfFSVD7QY8Q DE5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695178218; x=1695783018; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RihvP/dHvNiLOSYYyKHel9JuAiGCEDojT2KGFm5v6B0=; b=a5o1GpuX0vGtAdY7uuxj4GZ9qs9bTz5o5Ph9XDgTIYEOj5FUb8uCjL9/iE+UxqMv4W ZWY8tXnTCpHXHuGU0IRF2DHThQ400x8jAC0PVTcJL1zQGBN8lqgXcsBxHczSiFi/JCFO moxY/IRaKjIsc2vqI7bF8FVqsDT3UtwVJks90P6hhFZuLly93bE/wVfLanQ5JmxNmElL GMLlEFnLwtQ9k4SmenR6V7w9pit10BMI788PjpXphYm4VNM2qxDRJf3ssoWv78MBFGcs Vb3lzSGpRiOYmJ5JrebmcTC7QiprcxxT3Rv2n2FPM8VEwsZ0kNZ0op1u90Nl4la8F5yf +8bw== X-Gm-Message-State: AOJu0Ywq+OaocnmPYAnd9dD9vcZBn2DPQMYDvqO7fmserAijJmwCVn1I RA3WnnCNiBuwGL3VpVvVclo+Tw== X-Google-Smtp-Source: AGHT+IHWW6pXDjIGO44F8u5bvDNs8imPVwYS1w8PlMEfRsZaeZ/g4h82VtiMGRfN7DU5FUJnSrEMzQ== X-Received: by 2002:a9d:63d9:0:b0:6bd:11b:39bf with SMTP id e25-20020a9d63d9000000b006bd011b39bfmr1353219otl.4.1695178217479; Tue, 19 Sep 2023 19:50:17 -0700 (PDT) Received: from [192.168.0.104] (204-195-15-211.wavecable.com. [204.195.15.211]) by smtp.googlemail.com with ESMTPSA id d26-20020a63735a000000b005782ad723casm6874613pgn.27.2023.09.19.19.50.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 19 Sep 2023 19:50:15 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------WEIT9zjCxFDg0fV7Xy9sQj0U" Message-ID: <5a16a59a-d497-7d72-07aa-0afc09d5193a@illuminatedcomputing.com> Date: Tue, 19 Sep 2023 19:50:10 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: SQL:2011 application time Content-Language: en-US To: jian he Cc: PostgreSQL Hackers References: <1c674adf-4114-e8d8-cec7-ac10e2f424c7@enterprisedb.com> <831f17ba-ff36-1380-a475-a7cd2c65a89c@enterprisedb.com> <6f010a6e-8e20-658b-dc05-dc9033a694da@eisentraut.org> <7d44dade-ff31-5eef-80ac-78ed838066f6@postgresfriends.org> <88dadcc1-6652-ff7d-264d-73906a53dee9@illuminatedcomputing.com> <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> From: Paul Jungwirth In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------WEIT9zjCxFDg0fV7Xy9sQj0U Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 9/17/23 20:11, jian he wrote: > small issues so far I found, v14. Thank you again for the review! v15 is attached. > IndexInfo struct definition comment still has Temporal related > comment, should be removed. Fixed. > catalog-pg-index.html, no indperiod doc entry, also in table pg_index, > column indperiod is junk value now. You're right, it is just unneeded now that PERIODs are implemented by GENERATED columns. I've removed it. > I think in UpdateIndexRelation, you need an add indperiod to build a > pg_index tuple, similar to what you did in CreateConstraintEntry. It's gone now. > seems to make the following query works, we need to bring btree_gist > related code to core? > CREATE TABLE temporal_fk_rng2rng22 (id int8, valid_at int4range, > unique (id, valid_at WITHOUT OVERLAPS)); It doesn't need to be brought into core, but you would need to say `CREATE EXTENSION btree_gist` first. Since the regression tests don't assume we've built contrib, we have to use a workaround there. > /* ---------------- > * pg_period definition. cpp turns this into > * typedef struct FormData_pg_period > * ---------------- > */ > CATALOG(pg_period,8000,PeriodRelationId) > { > Oid oid; /* OID of the period */ > NameData pername; /* name of period */ > Oid perrelid; /* OID of relation containing this period */ > int16 perstart; /* column for start value */ > int16 perend; /* column for end value */ > int16 perrange; /* column for range value */ > Oid perconstraint; /* OID of (start < end) constraint */ > } FormData_pg_period; > > no idea what the above comment "cpp'' refers to. I believe cpp = C Pre-Processor. This comment is at the top of all the catalog/pg_*.h files. The next line is part of the same sentence (which took me a while to notice :-). > The sixth field in > FormData_pg_period: perrange, the comment conflict with catalogs.sgml >>> perrngtype oid (references pg_type.oid) >>> The OID of the range type associated with this period You're right, fixed! More cruft from the old PERIOD implementation. > create table pt (id integer, ds date, de date, period for p (ds, de)); > SELECT table_name, column_name, column_default, is_nullable, > is_generated, generation_expression > FROM information_schema.columns > WHERE table_name = 'pt' ORDER BY 1, 2; > > the hidden generated column (p) is_nullable return NO. but ds, de > is_nullable both return YES. so column p is_nullable should return > YES? The is_nullable behavior is correct I believe. In a range if the lower/upper value is NULL, it signifies the range has no lower/upper bound. So it's fine for ds or de to be NULL, but not the range itself (p). Technically the SQL spec says that the PERIOD start & end columns should be NOT NULL, but that forces people to use ugly sentinel values like '3999-01-01'. It's a shame to make people do that when NULL works so well instead. Our time-related types do have Infinity and -Infinity which is not as ugly, but many other types do not. Plus those values interact badly with ranges. For example `select '(,)'::daterange - '(,Infinity)'::daterange` gives the infinitesimal result `[infinity,)`. I've heard at least one report of that make a mess in a user's database. If a user wants to make the start/end columns NOT NULL they can, so I prefer not to force them. Continuing to your other email: On 9/18/23 05:49, jian he wrote: > BEGIN; > ... > ALTER TABLE temporal_fk_rng2rng ALTER CONSTRAINT > temporal_fk_rng2rng_fk DEFERRABLE INITIALLY DEFERRED; > > delete from temporal_rng; ---should not fail. > commit; ---fail in here. Great catch! This is fixed also. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------WEIT9zjCxFDg0fV7Xy9sQj0U Content-Type: text/x-patch; charset=UTF-8; name="v15-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v15-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSBhMjY0NWE4MTJmMzkwOGZmMzM4OGQ3NzhlN2ZjNzZlMGNiOTQ5YWNkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNSAxLzVdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICB8ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sICAgICAgICAgICAgfCAgMzggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYyAgICAgICAgICAgICAgfCAxNTUgKysrKysrKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3R5cGVjbWRzLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8IDEyNCArKysrKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyOSArLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDEwICst CiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgMzUg Ky0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAg NDYgKysrCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAg fCAgMTIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAg ICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAgICAgICAg ICAgICAgIHwgICA0ICsKIC4uLi9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0ICAgICB8IDM1OSArKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFy YWxsZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgMjYyICsrKysrKysrKysrKysKIDI0IGZp bGVzIGNoYW5nZWQsIDExMDAgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhv dXRfb3ZlcmxhcHMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBkMTdmZjUxZTI4Li4xOWMy ZTFjODI3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjcwOSw2ICsyNzA5LDE4IEBAIFNDUkFN LVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNl YWJsZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZp ZWxkPmNvbnRlbXBvcmFsPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAg IDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgY29uc3RyYWludCBpcyBhIGFw cGxpY2F0aW9uLXRpbWUgdGVtcG9yYWwgY29uc3RyYWludCwKKyAgICAgICBkZWZpbmVkIHdp dGggPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gKGZvciBwcmltYXJ5Cisg ICAgICAga2V5IGFuZCB1bmlxdWUgY29uc3RyYWludHMpIG9yIDxsaXRlcmFsPlBFUklPRDwv bGl0ZXJhbD4gKGZvcgorICAgICAgIGZvcmVpZ24ga2V5cykuCisgICAgICA8L3BhcmE+PC9l bnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAg ICAgICAgPHN0cnVjdGZpZWxkPmNvbmtleTwvc3RydWN0ZmllbGQ+IDx0eXBlPmludDJbXTwv dHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4IGUwNGEwNjkyYzQu Ljg3ZjBhYWIxM2IgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxl LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApAQCAtNzgs OCArNzgsOCBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogWyBDT05TVFJBSU5UIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2Vh YmxlPiBdCiB7IENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJl c3Npb248L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwKICAgTk9UIE5VTEwgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4g WyBOTyBJTkhFUklUIF0gfAotICBVTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9w YXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAotICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBd ICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3Jl cGxhY2VhYmxlPiB8CisgIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0gRElTVElOQ1QgXSAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9p bnRlcnZhbDwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAor ICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxB UFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJz PC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IF0gKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9lbGVtZW50PC9yZXBsYWNlYWJsZT4gV0lU SCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0b3I8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJh bWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxlPiApIF0gfAogICBGT1JFSUdOIEtFWSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogICAgIFsgTUFU Q0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXSBbIE9OIERFTEVURSA8 cmVwbGFjZWFibGUKQEAgLTEwNyw2ICsxMDcsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+ LCBSRU0KIAogeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiB8ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJl c3Npb248L3JlcGxhY2VhYmxlPiApIH0gWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+b3BjbGFzczwvcmVwbGFjZWFibGU+IF0gWyBBU0MgfCBERVNDIF0gWyBOVUxMUyB7IEZJ UlNUIHwgTEFTVCB9IF0KIAorPHBocmFzZT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBpbiBhIDxsaXRlcmFsPlBSSU1B UlkgS0VZPC9saXRlcmFsPiwgPGxpdGVyYWw+VU5JUVVFPC9saXRlcmFsPiwgb3IgPGxpdGVy YWw+Rk9SRUlHTiBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXM6PC9waHJhc2U+CisKKzxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+CisKIDxwaHJhc2U+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVy ZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IGluIGEgPGxpdGVyYWw+Rk9SRUlHTiBLRVk8 L2xpdGVyYWw+LzxsaXRlcmFsPlJFRkVSRU5DRVM8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXM6 PC9waHJhc2U+CiAKIHsgTk8gQUNUSU9OIHwgUkVTVFJJQ1QgfCBDQVNDQURFIHwgU0VUIE5V TEwgWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVw bGFjZWFibGU+IFssIC4uLiBdICkgXSB8IFNFVCBERUZBVUxUIFsgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSAp IF0gfQpAQCAtMTAwMSw3ICsxMDA1LDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVN CiAKICAgICAgPHBhcmE+CiAgICAgICBBZGRpbmcgYSB1bmlxdWUgY29uc3RyYWludCB3aWxs IGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgdW5pcXVlIGJ0cmVlCi0gICAgICBpbmRleCBvbiB0 aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4K KyAgICAgIGluZGV4IG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YgY29sdW1ucyB1c2VkIGlu IHRoZSBjb25zdHJhaW50LiBCdXQgaWYKKyAgICAgIHRoZSBjb25zdHJhaW50IGluY2x1ZGVz IGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gY2xhdXNlLAorICAgICAg aXQgd2lsbCB1c2UgYSBHaVNUIGluZGV4IGFuZCBiZWhhdmUgbGlrZSBhIHRlbXBvcmFsIDxs aXRlcmFsPlBSSU1BUlkKKyAgICAgIEtFWTwvbGl0ZXJhbD46IHByZXZlbnRpbmcgZHVwbGlj YXRlcyBvbmx5IGluIG92ZXJsYXBwaW5nIHRpbWUgcGVyaW9kcy4KICAgICAgPC9wYXJhPgog CiAgICAgIDxwYXJhPgpAQCAtMTAxOSw3ICsxMDI2LDggQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1z LXByaW1hcnkta2V5Ij4KICAgICA8dGVybT48bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJh bD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KLSAgICA8dGVybT48bGl0ZXJhbD5QUklN QVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+CisgICAgPHRlcm0+PGxpdGVyYWw+ UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQorICAgIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZF UkxBUFMgXSApPC9saXRlcmFsPgogICAgIDxvcHRpb25hbD4gPGxpdGVyYWw+SU5DTFVERSAo IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFi bGU+IFssIC4uLl0pPC9saXRlcmFsPiA8L29wdGlvbmFsPiAodGFibGUgY29uc3RyYWludCk8 L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KQEAgLTEwNTMsOCArMTA2MSw4 IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1l cmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAKICAgICAgPHBhcmE+CiAgICAgICBB ZGRpbmcgYSA8bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxs IGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0ZSBhIHVuaXF1ZSBidHJlZSBpbmRleCBvbiB0 aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0aGUKLSAgICAgIGNvbnN0 cmFpbnQuCisgICAgICBjcmVhdGUgYSB1bmlxdWUgYnRyZWUgaW5kZXggKG9yIEdpU1QgaWYg dGVtcG9yYWwpIG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YKKyAgICAgIGNvbHVtbnMgdXNl ZCBpbiB0aGUgY29uc3RyYWludC4KICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpAQCAt MTA2Nyw2ICsxMDc1LDI0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAo ZS5nLiwgPGxpdGVyYWw+RFJPUCBDT0xVTU48L2xpdGVyYWw+KSBjYW4gY2F1c2UgY2FzY2Fk ZWQgY29uc3RyYWludCBhbmQKICAgICAgIGluZGV4IGRlbGV0aW9uLgogICAgICA8L3BhcmE+ CisKKyAgICAgPHBhcmE+CisgICAgICBBIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFs PiB3aXRoIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4gb3B0aW9uCisg ICAgICBpcyBhIDxlbXBoYXNpcz50ZW1wb3JhbDwvZW1waGFzaXM+IHByaW1hcnkga2V5Lgor ICAgICAgVGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IHZhbHVlCisg ICAgICBtdXN0IGJlIGEgcmFuZ2UgdHlwZSBhbmQgaXMgdXNlZCB0byBjb25zdHJhaW4gdGhl IHJlY29yZCdzIGFwcGxpY2FiaWxpdHkKKyAgICAgIHRvIGp1c3QgdGhhdCBpbnRlcnZhbCAo dXN1YWxseSBhIHJhbmdlIG9mIGRhdGVzIG9yIHRpbWVzdGFtcHMpLgorICAgICAgVGhlIG1h aW4gcGFydCBvZiB0aGUgcHJpbWFyeSBrZXkgbWF5IGJlIHJlcGVhdGVkIGluIG90aGVyIHJv d3Mgb2YgdGhlIHRhYmxlLAorICAgICAgYXMgbG9uZyBhcyByZWNvcmRzIHdpdGggdGhlIHNh bWUga2V5IGRvbid0IG92ZXJsYXAgaW4gdGhlCisgICAgICA8bGl0ZXJhbD5XSVRIT1VUIE9W RVJMQVBTPC9saXRlcmFsPiBjb2x1bW4uCisgICAgIDwvcGFyYT4KKworICAgICA8cGFyYT4K KyAgICAgIEEgdGVtcG9yYWwgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IGlzIGVu Zm9yY2VkIHdpdGggYW4KKyAgICAgIDxsaXRlcmFsPkVYQ0xVREU8L2xpdGVyYWw+IGNvbnN0 cmFpbnQgcmF0aGVyIHRoYW4gYSA8bGl0ZXJhbD5VTklRVUU8L2xpdGVyYWw+CisgICAgICBj b25zdHJhaW50LCBiYWNrZWQgYnkgYSBHaVNUIGluZGV4LiBZb3UgbWF5IG5lZWQgdG8gaW5z dGFsbCB0aGUKKyAgICAgIDx4cmVmIGxpbmtlbmQ9ImJ0cmVlLWdpc3QiLz4gZXh0ZW5zaW9u IHRvIGNyZWF0ZSB0ZW1wb3JhbCBwcmltYXJ5IGtleXMuCisgICAgIDwvcGFyYT4KICAgICA8 L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKaW5kZXgg YjQyNzExZjU3NC4uNzE0OGRkMTc4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKQEAgLTIxNDAsNiAr MjE0MCw3IEBAIFN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjY25h bWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJICBpc19sb2NhbCwgLyogY29uaXNsb2NhbCAqLwog CQkJCQkJCSAgaW5oY291bnQsIC8qIGNvbmluaGNvdW50ICovCiAJCQkJCQkJICBpc19ub19p bmhlcml0LAkvKiBjb25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZhbHNlLAkvKiBjb250ZW1w b3JhbCAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRlcm5hbGx5IGNvbnN0cnVj dGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpAQCAtMjE5MCw2ICsyMTkxLDcgQEAgU3RvcmVS ZWxOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqbm5uYW1lLCBBdHRyTnVtYmVy IGF0dG51bSwKIAkJCQkJCQkgIGlzX2xvY2FsLAogCQkJCQkJCSAgaW5oY291bnQsCiAJCQkJ CQkJICBpc19ub19pbmhlcml0LAorCQkJCQkJCSAgZmFsc2UsCS8qIGNvbnRlbXBvcmFsICov CiAJCQkJCQkJICBmYWxzZSk7CiAJcmV0dXJuIGNvbnN0ck9pZDsKIH0KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5k ZXguYwppbmRleCA3MmY0NzZiNTFkLi4xYTYxN2IwNDJkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmRleC5j CkBAIC0yNTUsOCArMjU1LDggQEAgaW5kZXhfY2hlY2tfcHJpbWFyeV9rZXkoUmVsYXRpb24g aGVhcFJlbCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAogCQkJCQkgZXJybXNnKCJwcmltYXJ5IGtleXMgY2Fubm90IGJlIGV4cHJlc3Npb25zIikp KTsKIAotCQkvKiBTeXN0ZW0gYXR0cmlidXRlcyBhcmUgbmV2ZXIgbnVsbCwgc28gbm8gbmVl ZCB0byBjaGVjayAqLwotCQlpZiAoYXR0bnVtIDwgMCkKKwkJLyogU3lzdGVtIGF0dHJpYnV0 ZXMgYXJlIG5ldmVyIG51bGwsIHNvIG5vIG5lZWQgdG8gY2hlY2suICovCisJCWlmIChhdHRu dW0gPD0gMCkKIAkJCWNvbnRpbnVlOwogCiAJCWF0dHR1cGxlID0gU2VhcmNoU3lzQ2FjaGUy KEFUVE5VTSwKQEAgLTE4OTcsNiArMTg5Nyw3IEBAIGluZGV4X2NvbmN1cnJlbnRseV9zZXRf ZGVhZChPaWQgaGVhcElkLCBPaWQgaW5kZXhJZCkKICAqCQlJTkRFWF9DT05TVFJfQ1JFQVRF X1VQREFURV9JTkRFWDogdXBkYXRlIHRoZSBwZ19pbmRleCByb3cKICAqCQlJTkRFWF9DT05T VFJfQ1JFQVRFX1JFTU9WRV9PTERfREVQUzogcmVtb3ZlIGV4aXN0aW5nIGRlcGVuZGVuY2ll cwogICoJCQlvZiBpbmRleCBvbiB0YWJsZSdzIGNvbHVtbnMKKyAqCQlJTkRFWF9DT05TVFJf Q1JFQVRFX1RFTVBPUkFMOiBjb25zdHJhaW50IGlzIGZvciBhIHRlbXBvcmFsIHByaW1hcnkg a2V5CiAgKiBhbGxvd19zeXN0ZW1fdGFibGVfbW9kczogYWxsb3cgdGFibGUgdG8gYmUgYSBz eXN0ZW0gY2F0YWxvZwogICogaXNfaW50ZXJuYWw6IGluZGV4IGlzIGNvbnN0cnVjdGVkIGR1 ZSB0byBpbnRlcm5hbCBwcm9jZXNzCiAgKi8KQEAgLTE5MjAsMTEgKzE5MjEsMTMgQEAgaW5k ZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCWJvb2wJCW1h cmtfYXNfcHJpbWFyeTsKIAlib29sCQlpc2xvY2FsOwogCWJvb2wJCW5vaW5oZXJpdDsKKwli b29sCQlpc190ZW1wb3JhbDsKIAlpbnQJCQlpbmhjb3VudDsKIAogCWRlZmVycmFibGUgPSAo Y29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9ERUZFUlJBQkxFKSAhPSAwOwog CWluaXRkZWZlcnJlZCA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX0lO SVRfREVGRVJSRUQpICE9IDA7CiAJbWFya19hc19wcmltYXJ5ID0gKGNvbnN0cl9mbGFncyAm IElOREVYX0NPTlNUUl9DUkVBVEVfTUFSS19BU19QUklNQVJZKSAhPSAwOworCWlzX3RlbXBv cmFsID0gKGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfVEVNUE9SQUwpICE9 IDA7CiAKIAkvKiBjb25zdHJhaW50IGNyZWF0aW9uIHN1cHBvcnQgZG9lc24ndCB3b3JrIHdo aWxlIGJvb3RzdHJhcHBpbmcgKi8KIAlBc3NlcnQoIUlzQm9vdHN0cmFwUHJvY2Vzc2luZ01v ZGUoKSk7CkBAIC0yMDAxLDYgKzIwMDQsNyBAQCBpbmRleF9jb25zdHJhaW50X2NyZWF0ZShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCSAgIGlzbG9jYWwsCiAJCQkJCQkJCSAg IGluaGNvdW50LAogCQkJCQkJCQkgICBub2luaGVyaXQsCisJCQkJCQkJCSAgIGlzX3RlbXBv cmFsLAkvKiBjb250ZW1wb3JhbCAqLwogCQkJCQkJCQkgICBpc19pbnRlcm5hbCk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwppbmRleCBlOWQ0ZDYwMDZlLi5k NTMyOWNhOGM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuYwpAQCAtNzgs NiArNzgsNyBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29uc3RyYWlu dE5hbWUsCiAJCQkJCSAgYm9vbCBjb25Jc0xvY2FsLAogCQkJCQkgIGludCBjb25JbmhDb3Vu dCwKIAkJCQkJICBib29sIGNvbk5vSW5oZXJpdCwKKwkJCQkJICBib29sIGNvblRlbXBvcmFs LAogCQkJCQkgIGJvb2wgaXNfaW50ZXJuYWwpCiB7CiAJUmVsYXRpb24JY29uRGVzYzsKQEAg LTE5Myw2ICsxOTQsNyBAQCBDcmVhdGVDb25zdHJhaW50RW50cnkoY29uc3QgY2hhciAqY29u c3RyYWludE5hbWUsCiAJdmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25pc2xvY2FsIC0g MV0gPSBCb29sR2V0RGF0dW0oY29uSXNMb2NhbCk7CiAJdmFsdWVzW0FudW1fcGdfY29uc3Ry YWludF9jb25pbmhjb3VudCAtIDFdID0gSW50MTZHZXREYXR1bShjb25JbmhDb3VudCk7CiAJ dmFsdWVzW0FudW1fcGdfY29uc3RyYWludF9jb25ub2luaGVyaXQgLSAxXSA9IEJvb2xHZXRE YXR1bShjb25Ob0luaGVyaXQpOworCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29udGVt cG9yYWwgLSAxXSA9IEJvb2xHZXREYXR1bShjb25UZW1wb3JhbCk7CiAKIAlpZiAoY29ua2V5 QXJyYXkpCiAJCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5IC0gMV0gPSBQb2lu dGVyR2V0RGF0dW0oY29ua2V5QXJyYXkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNtZHMuYwpp bmRleCBhYjhiODFiMzAyLi43OTRiZGUxOTBlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9pbmRleGNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9pbmRleGNt ZHMuYwpAQCAtNzMsNiArNzMsMTEgQEAKIC8qIG5vbi1leHBvcnQgZnVuY3Rpb24gcHJvdG90 eXBlcyAqLwogc3RhdGljIGJvb2wgQ29tcGFyZU9wY2xhc3NPcHRpb25zKGNvbnN0IERhdHVt ICpvcHRzMSwgY29uc3QgRGF0dW0gKm9wdHMyLCBpbnQgbmF0dHMpOwogc3RhdGljIHZvaWQg Q2hlY2tQcmVkaWNhdGUoRXhwciAqcHJlZGljYXRlKTsKK3N0YXRpYyB2b2lkIGdldF9pbmRl eF9hdHRyX3RlbXBvcmFsX29wZXJhdG9yKE9pZCBvcGNsYXNzLAorCQkJCQkJCQkJCQkgT2lk IGF0dHR5cGUsCisJCQkJCQkJCQkJCSBib29sIGlzb3ZlcmxhcHMsCisJCQkJCQkJCQkJCSBP aWQgKm9waWQsCisJCQkJCQkJCQkJCSBpbnQgKnN0cmF0KTsKIHN0YXRpYyB2b2lkIENvbXB1 dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAogCQkJCQkJCSAgT2lkICp0eXBl T2lkcywKIAkJCQkJCQkgIE9pZCAqY29sbGF0aW9uT2lkcywKQEAgLTg1LDYgKzkwLDcgQEAg c3RhdGljIHZvaWQgQ29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJ CQkJCQkJICBPaWQgYWNjZXNzTWV0aG9kSWQsCiAJCQkJCQkJICBib29sIGFtY2Fub3JkZXIs CiAJCQkJCQkJICBib29sIGlzY29uc3RyYWludCwKKwkJCQkJCQkgIGJvb2wgaXN0ZW1wb3Jh bCwKIAkJCQkJCQkgIE9pZCBkZGxfdXNlcmlkLAogCQkJCQkJCSAgaW50IGRkbF9zZWNfY29u dGV4dCwKIAkJCQkJCQkgIGludCAqZGRsX3NhdmVfbmVzdGxldmVsKTsKQEAgLTE0Miw2ICsx NDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBSZWluZGV4RXJyb3JJbmZvCiAgKgkJdG8gaW5kZXgg b24uCiAgKiAnZXhjbHVzaW9uT3BOYW1lcyc6IGxpc3Qgb2YgbmFtZXMgb2YgZXhjbHVzaW9u LWNvbnN0cmFpbnQgb3BlcmF0b3JzLAogICoJCW9yIE5JTCBpZiBub3QgYW4gZXhjbHVzaW9u IGNvbnN0cmFpbnQuCisgKiAnaXN0ZW1wb3JhbCc6IHRydWUgaWZmIHRoaXMgaW5kZXggaGFz IGEgV0lUSE9VVCBPVkVSTEFQUyBjbGF1c2UuCiAgKgogICogVGhpcyBpcyB0YWlsb3JlZCB0 byB0aGUgbmVlZHMgb2YgQUxURVIgVEFCTEUgQUxURVIgVFlQRSwgd2hpY2ggcmVjcmVhdGVz CiAgKiBhbnkgaW5kZXhlcyB0aGF0IGRlcGVuZGVkIG9uIGEgY2hhbmdpbmcgY29sdW1uIGZy b20gdGhlaXIgcGdfZ2V0X2luZGV4ZGVmCkBAIC0xNzEsNyArMTc4LDggQEAgYm9vbAogQ2hl Y2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkgY29uc3QgY2hhciAqYWNjZXNz TWV0aG9kTmFtZSwKIAkJCQkJIGNvbnN0IExpc3QgKmF0dHJpYnV0ZUxpc3QsCi0JCQkJCSBj b25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVzKQorCQkJCQkgY29uc3QgTGlzdCAqZXhjbHVz aW9uT3BOYW1lcywKKwkJCQkJIGJvb2wgaXN0ZW1wb3JhbCkKIHsKIAlib29sCQlpc2NvbnN0 cmFpbnQ7CiAJT2lkCQkgICAqdHlwZUlkczsKQEAgLTI0NCw4ICsyNTIsOCBAQCBDaGVja0lu ZGV4Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCSAgY29sb3B0aW9ucywgYXR0cmlidXRl TGlzdCwKIAkJCQkJICBleGNsdXNpb25PcE5hbWVzLCByZWxhdGlvbklkLAogCQkJCQkgIGFj Y2Vzc01ldGhvZE5hbWUsIGFjY2Vzc01ldGhvZElkLAotCQkJCQkgIGFtY2Fub3JkZXIsIGlz Y29uc3RyYWludCwgSW52YWxpZE9pZCwgMCwgTlVMTCk7Ci0KKwkJCQkJICBhbWNhbm9yZGVy LCBpc2NvbnN0cmFpbnQsIGlzdGVtcG9yYWwsIEludmFsaWRPaWQsCisJCQkJCSAgMCwgTlVM TCk7CiAKIAkvKiBHZXQgdGhlIHNvb24tb2Jzb2xldGUgcGdfaW5kZXggdHVwbGUuICovCiAJ dHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShv bGRJZCkpOwpAQCAtNTUzLDYgKzU2MSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAog CWJvb2wJCWFtY2Fub3JkZXI7CiAJYm9vbAkJYW1pc3N1bW1hcml6aW5nOwogCWFtb3B0aW9u c19mdW5jdGlvbiBhbW9wdGlvbnM7CisJYm9vbAkJZXhjbHVzaW9uOwogCWJvb2wJCXBhcnRp dGlvbmVkOwogCWJvb2wJCXNhZmVfaW5kZXg7CiAJRGF0dW0JCXJlbG9wdGlvbnM7CkBAIC02 NzEsNiArNjgwLDEyIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCiAJbmFtZXNwYWNl SWQgPSBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpOwogCisJLyoKKwkgKiBJdCBoYXMgZXhj bHVzaW9uIGNvbnN0cmFpbnQgYmVoYXZpb3IgaWYgaXQncyBhbiBFWENMVURFIGNvbnN0cmFp bnQKKwkgKiBvciBhIHRlbXBvcmFsIFBSSU1BUlkgS0VZL1VOSVFVRSBjb25zdHJhaW50CisJ ICovCisJZXhjbHVzaW9uID0gc3RtdC0+ZXhjbHVkZU9wTmFtZXMgfHwgc3RtdC0+aXN0ZW1w b3JhbDsKKwogCS8qIEVuc3VyZSB0aGF0IGl0IG1ha2VzIHNlbnNlIHRvIGluZGV4IHRoaXMg a2luZCBvZiByZWxhdGlvbiAqLwogCXN3aXRjaCAocmVsLT5yZF9yZWwtPnJlbGtpbmQpCiAJ ewpAQCAtODM5LDcgKzg1NCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCXBnc3Rh dF9wcm9ncmVzc191cGRhdGVfcGFyYW0oUFJPR1JFU1NfQ1JFQVRFSURYX0FDQ0VTU19NRVRI T0RfT0lELAogCQkJCQkJCQkgYWNjZXNzTWV0aG9kSWQpOwogCi0JaWYgKHN0bXQtPnVuaXF1 ZSAmJiAhYW1Sb3V0aW5lLT5hbWNhbnVuaXF1ZSkKKwlpZiAoc3RtdC0+dW5pcXVlICYmICFz dG10LT5pc3RlbXBvcmFsICYmICFhbVJvdXRpbmUtPmFtY2FudW5pcXVlKQogCQllcmVwb3J0 KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK IAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0aG9kIFwiJXNcIiBkb2VzIG5vdCBzdXBwb3J0IHVu aXF1ZSBpbmRleGVzIiwKQEAgLTg1NCw3ICs4NjksNyBAQCBEZWZpbmVJbmRleChPaWQgdGFi bGVJZCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJ CQkJIGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBtdWx0 aWNvbHVtbiBpbmRleGVzIiwKIAkJCQkJCWFjY2Vzc01ldGhvZE5hbWUpKSk7Ci0JaWYgKHN0 bXQtPmV4Y2x1ZGVPcE5hbWVzICYmIGFtUm91dGluZS0+YW1nZXR0dXBsZSA9PSBOVUxMKQor CWlmIChleGNsdXNpb24gJiYgYW1Sb3V0aW5lLT5hbWdldHR1cGxlID09IE5VTEwpCiAJCWVy ZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAogCQkJCSBlcnJtc2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBv cnQgZXhjbHVzaW9uIGNvbnN0cmFpbnRzIiwKQEAgLTkwNiw4ICs5MjEsOSBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAkJCQkJICBjb2xvcHRpb25zLCBhbGxJbmRleFBhcmFtcywK IAkJCQkJICBzdG10LT5leGNsdWRlT3BOYW1lcywgdGFibGVJZCwKIAkJCQkJICBhY2Nlc3NN ZXRob2ROYW1lLCBhY2Nlc3NNZXRob2RJZCwKLQkJCQkJICBhbWNhbm9yZGVyLCBzdG10LT5p c2NvbnN0cmFpbnQsIHJvb3Rfc2F2ZV91c2VyaWQsCi0JCQkJCSAgcm9vdF9zYXZlX3NlY19j b250ZXh0LCAmcm9vdF9zYXZlX25lc3RsZXZlbCk7CisJCQkJCSAgYW1jYW5vcmRlciwgc3Rt dC0+aXNjb25zdHJhaW50LCBzdG10LT5pc3RlbXBvcmFsLAorCQkJCQkgIHJvb3Rfc2F2ZV91 c2VyaWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCwKKwkJCQkJICAmcm9vdF9zYXZlX25lc3Rs ZXZlbCk7CiAKIAkvKgogCSAqIEV4dHJhIGNoZWNrcyB3aGVuIGNyZWF0aW5nIGEgUFJJTUFS WSBLRVkgaW5kZXguCkBAIC05MjUsNyArOTQxLDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJICogV2UgY291bGQgbGlmdCB0aGlzIGxpbWl0YXRpb24gaWYgd2UgaGFkIGdsb2Jh bCBpbmRleGVzLCBidXQgdGhvc2UgaGF2ZQogCSAqIHRoZWlyIG93biBwcm9ibGVtcywgc28g dGhpcyBpcyBhIHVzZWZ1bCBmZWF0dXJlIGNvbWJpbmF0aW9uLgogCSAqLwotCWlmIChwYXJ0 aXRpb25lZCAmJiAoc3RtdC0+dW5pcXVlIHx8IHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKSkKKwlp ZiAocGFydGl0aW9uZWQgJiYgKHN0bXQtPnVuaXF1ZSB8fCBleGNsdXNpb24pKQogCXsKIAkJ UGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHJlbCk7CiAJCWNv bnN0IGNoYXIgKmNvbnN0cmFpbnRfdHlwZTsKQEAgLTkzMyw2ICs5NDksOCBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAogCQlpZiAoc3RtdC0+cHJpbWFyeSkKIAkJCWNvbnN0cmFp bnRfdHlwZSA9ICJQUklNQVJZIEtFWSI7CisJCWVsc2UgaWYgKHN0bXQtPnVuaXF1ZSAmJiBz dG10LT5pc3RlbXBvcmFsKQorCQkJY29uc3RyYWludF90eXBlID0gInRlbXBvcmFsIFVOSVFV RSI7CiAJCWVsc2UgaWYgKHN0bXQtPnVuaXF1ZSkKIAkJCWNvbnN0cmFpbnRfdHlwZSA9ICJV TklRVUUiOwogCQllbHNlIGlmIChzdG10LT5leGNsdWRlT3BOYW1lcykKQEAgLTk3OSwxMCAr OTk3LDEwIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJICogYXNzb2NpYXRlZCB3 aXRoIGluZGV4IGNvbHVtbnMsIHRvby4gIFdlIGtub3cgd2hhdCB0byBkbyB3aXRoCiAJCQkg KiBidHJlZSBvcGNsYXNzZXM7IGlmIHRoZXJlIGFyZSBldmVyIGFueSBvdGhlciBpbmRleCB0 eXBlcyB0aGF0CiAJCQkgKiBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLCB0aGlzIGxvZ2ljIHdp bGwgbmVlZCBleHRlbnNpb24uIEJ1dCBpZgotCQkJICogd2UgaGF2ZSBhbiBleGNsdXNpb24g Y29uc3RyYWludCwgaXQgYWxyZWFkeSBrbm93cyB0aGUKLQkJCSAqIG9wZXJhdG9ycywgc28g d2UgZG9uJ3QgaGF2ZSB0byBpbmZlciB0aGVtLgorCQkJICogd2UgaGF2ZSBhbiBleGNsdXNp b24gY29uc3RyYWludCAob3IgYSB0ZW1wb3JhbCBQSyksIGl0IGFscmVhZHkKKwkJCSAqIGtu b3dzIHRoZSBvcGVyYXRvcnMsIHNvIHdlIGRvbid0IGhhdmUgdG8gaW5mZXIgdGhlbS4KIAkJ CSAqLwotCQkJaWYgKHN0bXQtPnVuaXF1ZSAmJiBhY2Nlc3NNZXRob2RJZCAhPSBCVFJFRV9B TV9PSUQpCisJCQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10LT5pc3RlbXBvcmFsICYmIGFj Y2Vzc01ldGhvZElkICE9IEJUUkVFX0FNX09JRCkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkJIGVy cm1zZygiY2Fubm90IG1hdGNoIHBhcnRpdGlvbiBrZXkgdG8gYW4gaW5kZXggdXNpbmcgYWNj ZXNzIG1ldGhvZCBcIiVzXCIiLApAQCAtMTAxNSwxMiArMTAzMywxMiBAQCBEZWZpbmVJbmRl eChPaWQgdGFibGVJZCwKIAkJCQkJewogCQkJCQkJT2lkCQkJaWR4X2Vxb3AgPSBJbnZhbGlk T2lkOwogCi0JCQkJCQlpZiAoc3RtdC0+dW5pcXVlKQorCQkJCQkJaWYgKHN0bXQtPnVuaXF1 ZSAmJiAhc3RtdC0+aXN0ZW1wb3JhbCkKIAkJCQkJCQlpZHhfZXFvcCA9IGdldF9vcGZhbWls eV9tZW1iZXIoaWR4X29wZmFtaWx5LAogCQkJCQkJCQkJCQkJCQkgICBpZHhfb3BjaW50eXBl LAogCQkJCQkJCQkJCQkJCQkgICBpZHhfb3BjaW50eXBlLAogCQkJCQkJCQkJCQkJCQkgICBC VEVxdWFsU3RyYXRlZ3lOdW1iZXIpOwotCQkJCQkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9w TmFtZXMpCisJCQkJCQllbHNlIGlmIChleGNsdXNpb24pCiAJCQkJCQkJaWR4X2Vxb3AgPSBp bmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wc1tqXTsKIAkJCQkJCUFzc2VydChpZHhfZXFvcCk7 CiAKQEAgLTEwMjksNyArMTA0Nyw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJ CQkJCWZvdW5kID0gdHJ1ZTsKIAkJCQkJCQlicmVhazsKIAkJCQkJCX0KLQkJCQkJCWVsc2Ug aWYgKHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKQorCQkJCQkJZWxzZSBpZiAoZXhjbHVzaW9uKQog CQkJCQkJewogCQkJCQkJCS8qCiAJCQkJCQkJICogV2UgZm91bmQgYSBtYXRjaCwgYnV0IGl0 J3Mgbm90IGFuIGVxdWFsaXR5CkBAIC0xMTczLDYgKzExOTEsOCBAQCBEZWZpbmVJbmRleChP aWQgdGFibGVJZCwKIAkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfREVG RVJSQUJMRTsKIAlpZiAoc3RtdC0+aW5pdGRlZmVycmVkKQogCQljb25zdHJfZmxhZ3MgfD0g SU5ERVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVEOworCWlmIChzdG10LT5pc3RlbXBv cmFsKQorCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9URU1QT1JBTDsK IAogCWluZGV4UmVsYXRpb25JZCA9CiAJCWluZGV4X2NyZWF0ZShyZWwsIGluZGV4UmVsYXRp b25OYW1lLCBpbmRleFJlbGF0aW9uSWQsIHBhcmVudEluZGV4SWQsCkBAIC0xODQxLDYgKzE4 NjEsOTEgQEAgQ2hlY2tQcmVkaWNhdGUoRXhwciAqcHJlZGljYXRlKQogCQkJCSBlcnJtc2co ImZ1bmN0aW9ucyBpbiBpbmRleCBwcmVkaWNhdGUgbXVzdCBiZSBtYXJrZWQgSU1NVVRBQkxF IikpKTsKIH0KIAorLyoKKyAqIGdldF9pbmRleF9hdHRyX3RlbXBvcmFsX29wZXJhdG9yCisg KgorICogRmluZHMgYW4gb3BlcmF0b3IgZm9yIGEgdGVtcG9yYWwgaW5kZXggYXR0cmlidXRl LgorICogV2UgbmVlZCBhbiBlcXVhbGl0eSBvcGVyYXRvciBmb3Igbm9ybWFsIGtleXMKKyAq IGFuZCBhbiBvdmVybGFwcyBvcGVyYXRvciBmb3IgdGhlIHJhbmdlLgorICogUmV0dXJucyB0 aGUgb3BlcmF0b3Igb2lkIGFuZCBzdHJhdGVneSBpbiBvcGlkIGFuZCBzdHJhdCwKKyAqIHJl c3BlY3RpdmVseS4KKyAqLworc3RhdGljIHZvaWQKK2dldF9pbmRleF9hdHRyX3RlbXBvcmFs X29wZXJhdG9yKE9pZCBvcGNsYXNzLAorCQkJCQkJCQkgT2lkIGF0dHR5cGUsCisJCQkJCQkJ CSBib29sIGlzb3ZlcmxhcHMsCisJCQkJCQkJCSBPaWQgKm9waWQsCisJCQkJCQkJCSBpbnQg KnN0cmF0KQoreworCU9pZCBvcGZhbWlseTsKKwljb25zdCBjaGFyICpvcG5hbWU7CisKKwlv cGZhbWlseSA9IGdldF9vcGNsYXNzX2ZhbWlseShvcGNsYXNzKTsKKwkvKgorCSAqIElmIHdl IGhhdmUgYSByYW5nZSB0eXBlLCBmYWxsIGJhY2sgb24gYW55cmFuZ2UuCisJICogVGhpcyBz ZWVtcyBsaWtlIGEgaGFjaworCSAqIGJ1dCBJIGNhbid0IGZpbmQgYW55IGV4aXN0aW5nIGxv b2t1cCBmdW5jdGlvbgorCSAqIHRoYXQga25vd3MgYWJvdXQgcHNldWRvdHlwZXMuCisJICog Y29tcGF0aWJsZV9vcGVyIGlzIGNsb3NlIGJ1dCB3YW50cyBhICpuYW1lKiwKKwkgKiBhbmQg dGhlIHBvaW50IGhlcmUgaXMgdG8gYXZvaWQgaGFyZGNvZGluZyBhIG5hbWUKKwkgKiAoYWx0 aG91Z2ggaXQgc2hvdWxkIGFsd2F5cyBiZSA9IGFuZCAmJikuCisJICoKKwkgKiBJbiBhZGRp dGlvbiBmb3IgdGhlIG5vcm1hbCBrZXkgZWxlbWVudHMKKwkgKiB0cnkgYm90aCBSVEVxdWFs U3RyYXRlZ3lOdW1iZXIgYW5kIEJURXF1YWxTdHJhdGVneU51bWJlci4KKwkgKiBJZiB5b3Un cmUgdXNpbmcgYnRyZWVfZ2lzdCB0aGVuIHlvdSdsbCBuZWVkIHRoZSBsYXR0ZXIuCisJICov CisJaWYgKGlzb3ZlcmxhcHMpCisJeworCQkqc3RyYXQgPSBSVE92ZXJsYXBTdHJhdGVneU51 bWJlcjsKKwkJb3BuYW1lID0gIm92ZXJsYXBzIjsKKwkJKm9waWQgPSBnZXRfb3BmYW1pbHlf bWVtYmVyKG9wZmFtaWx5LCBhdHR0eXBlLCBhdHR0eXBlLCAqc3RyYXQpOworCQlpZiAoIU9p ZElzVmFsaWQoKm9waWQpICYmIHR5cGVfaXNfcmFuZ2UoYXR0dHlwZSkpCisJCQkqb3BpZCA9 IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIEFOWVJBTkdFT0lELCBBTllSQU5HRU9J RCwgKnN0cmF0KTsKKwl9CisJZWxzZQorCXsKKwkJKnN0cmF0ID0gUlRFcXVhbFN0cmF0ZWd5 TnVtYmVyOworCQlvcG5hbWUgPSAiZXF1YWxpdHkiOworCQkqb3BpZCA9IGdldF9vcGZhbWls eV9tZW1iZXIob3BmYW1pbHksIGF0dHR5cGUsIGF0dHR5cGUsICpzdHJhdCk7CisJCWlmICgh T2lkSXNWYWxpZCgqb3BpZCkgJiYgdHlwZV9pc19yYW5nZShhdHR0eXBlKSkKKwkJCSpvcGlk ID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQsIEFOWVJBTkdF T0lELCAqc3RyYXQpOworCisJCWlmICghT2lkSXNWYWxpZCgqb3BpZCkpCisJCXsKKwkJCSpz dHJhdCA9IEJURXF1YWxTdHJhdGVneU51bWJlcjsKKwkJCSpvcGlkID0gZ2V0X29wZmFtaWx5 X21lbWJlcihvcGZhbWlseSwgYXR0dHlwZSwgYXR0dHlwZSwgKnN0cmF0KTsKKwkJCWlmICgh T2lkSXNWYWxpZCgqb3BpZCkgJiYgdHlwZV9pc19yYW5nZShhdHR0eXBlKSkKKwkJCQkqb3Bp ZCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIEFOWVJBTkdFT0lELCBBTllSQU5H RU9JRCwgKnN0cmF0KTsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCgqb3BpZCkpCisJ eworCQlIZWFwVHVwbGUJb3BmdHVwbGU7CisJCUZvcm1fcGdfb3BmYW1pbHkgb3BmZm9ybTsK KworCQkvKgorCQkgKiBhdHRyaWJ1dGUtPm9wY2xhc3MgbWlnaHQgbm90IGV4cGxpY2l0bHkg bmFtZSB0aGUgb3BmYW1pbHksCisJCSAqIHNvIGZldGNoIHRoZSBuYW1lIG9mIHRoZSBzZWxl Y3RlZCBvcGZhbWlseSBmb3IgdXNlIGluIHRoZQorCQkgKiBlcnJvciBtZXNzYWdlLgorCQkg Ki8KKwkJb3BmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoT1BGQU1JTFlPSUQsCisJCQkJCQkJ CSAgIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHkpKTsKKwkJaWYgKCFIZWFwVHVwbGVJc1Zh bGlkKG9wZnR1cGxlKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZv ciBvcGZhbWlseSAldSIsCisJCQkJIG9wZmFtaWx5KTsKKwkJb3BmZm9ybSA9IChGb3JtX3Bn X29wZmFtaWx5KSBHRVRTVFJVQ1Qob3BmdHVwbGUpOworCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJybXNnKCJu byAlcyBvcGVyYXRvciBmb3VuZCBmb3IgV0lUSE9VVCBPVkVSTEFQUyBjb25zdHJhaW50Iiwg b3BuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGVyZSBtdXN0IGJlIGFuICVzIG9wZXJhdG9y IHdpdGhpbiBvcGZhbWlseSBcIiVzXCIgZm9yIHR5cGUgXCIlc1wiLiIsCisJCQkJCQkgICBv cG5hbWUsCisJCQkJCQkgICBOYW1lU3RyKG9wZmZvcm0tPm9wZm5hbWUpLAorCQkJCQkJICAg Zm9ybWF0X3R5cGVfYmUoYXR0dHlwZSkpKSk7CisJfQorfQorCiAvKgogICogQ29tcHV0ZSBw ZXItaW5kZXgtY29sdW1uIGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgaW5kZXhlZCBjb2x1bW4g bnVtYmVycwogICogb3IgaW5kZXggZXhwcmVzc2lvbnMsIG9wY2xhc3NlcyBhbmQgdGhlaXIg b3B0aW9ucy4gTm90ZSwgYWxsIG91dHB1dCB2ZWN0b3JzCkBAIC0xODYzLDYgKzE5NjgsNyBA QCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkgIE9pZCBh Y2Nlc3NNZXRob2RJZCwKIAkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkgIGJvb2wgaXNj b25zdHJhaW50LAorCQkJCSAgYm9vbCBpc3RlbXBvcmFsLAogCQkJCSAgT2lkIGRkbF91c2Vy aWQsCiAJCQkJICBpbnQgZGRsX3NlY19jb250ZXh0LAogCQkJCSAgaW50ICpkZGxfc2F2ZV9u ZXN0bGV2ZWwpCkBAIC0xODg2LDYgKzE5OTIsMTQgQEAgQ29tcHV0ZUluZGV4QXR0cnMoSW5k ZXhJbmZvICppbmRleEluZm8sCiAJZWxzZQogCQluZXh0RXhjbE9wID0gTlVMTDsKIAorCS8q IGV4Y2x1c2lvbk9wTmFtZXMgY2FuIGJlIG5vbi1OSUwgaWYgd2UgYXJlIGNyZWF0aW5nIGEg cGFydGl0aW9uICovCisJaWYgKGlzdGVtcG9yYWwgJiYgZXhjbHVzaW9uT3BOYW1lcyA9PSBO SUwpCisJeworCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyA9IHBhbGxvY19hcnJheShP aWQsIG5rZXljb2xzKTsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25Qcm9jcyA9IHBhbGxv Y19hcnJheShPaWQsIG5rZXljb2xzKTsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJh dHMgPSBwYWxsb2NfYXJyYXkodWludDE2LCBua2V5Y29scyk7CisJfQorCiAJaWYgKE9pZElz VmFsaWQoZGRsX3VzZXJpZCkpCiAJCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNhdmVfdXNl cmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTIxNjEsNiArMjI3NSwxOSBAQCBDb21w dXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCWluZGV4SW5mby0+aWlf RXhjbHVzaW9uU3RyYXRzW2F0dG5dID0gc3RyYXQ7CiAJCQluZXh0RXhjbE9wID0gbG5leHQo ZXhjbHVzaW9uT3BOYW1lcywgbmV4dEV4Y2xPcCk7CiAJCX0KKwkJZWxzZSBpZiAoaXN0ZW1w b3JhbCkKKwkJeworCQkJaW50IHN0cmF0OworCQkJT2lkIG9waWQ7CisJCQlnZXRfaW5kZXhf YXR0cl90ZW1wb3JhbF9vcGVyYXRvcihvcGNsYXNzT2lkc1thdHRuXSwKKwkJCQkJCQkJCQkJ IGF0dHR5cGUsCisJCQkJCQkJCQkJCSBhdHRuID09IG5rZXljb2xzIC0gMSwJLyogVE9ETzog RG9uJ3QgYXNzdW1lIGl0J3MgbGFzdD8gKi8KKwkJCQkJCQkJCQkJICZvcGlkLAorCQkJCQkJ CQkJCQkgJnN0cmF0KTsKKwkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzW2F0dG5dID0g b3BpZDsKKwkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uUHJvY3NbYXR0bl0gPSBnZXRfb3Bj b2RlKG9waWQpOworCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHNbYXR0bl0gPSBz dHJhdDsKKwkJfQogCiAJCS8qCiAJCSAqIFNldCB1cCB0aGUgcGVyLWNvbHVtbiBvcHRpb25z IChpbmRvcHRpb24gZmllbGQpLiAgRm9yIG5vdywgdGhpcyBpcwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYwppbmRleCA4YTJjNjcxYjY2Li5iYTJhODkxNGU0IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwpAQCAtMjA4LDYgKzIwOCw3IEBAIHR5cGVkZWYgc3RydWN0IE5l d0NvbnN0cmFpbnQKIAlPaWQJCQlyZWZyZWxpZDsJCS8qIFBLIHJlbCwgaWYgRk9SRUlHTiAq LwogCU9pZAkJCXJlZmluZGlkOwkJLyogT0lEIG9mIFBLJ3MgaW5kZXgsIGlmIEZPUkVJR04g Ki8KIAlPaWQJCQljb25pZDsJCQkvKiBPSUQgb2YgcGdfY29uc3RyYWludCBlbnRyeSwgaWYg Rk9SRUlHTiAqLworCWJvb2wJCWNvbnRlbXBvcmFsOwkvKiBXaGV0aGVyIHRoZSBuZXcgY29u c3RyYWludCBpcyB0ZW1wb3JhbCAqLwogCU5vZGUJICAgKnF1YWw7CQkJLyogQ2hlY2sgZXhw ciBvciBDT05TVFJfRk9SRUlHTiBDb25zdHJhaW50ICovCiAJRXhwclN0YXRlICAqcXVhbHN0 YXRlOwkJLyogRXhlY3V0aW9uIHN0YXRlIGZvciBDSEVDSyBleHByICovCiB9IE5ld0NvbnN0 cmFpbnQ7CkBAIC0xMDAwMyw2ICsxMDAwNCw3IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQo TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWws CiAJCQkJCQkJCQkgIGNvbmlzbG9jYWwsCS8qIGlzbG9jYWwgKi8KIAkJCQkJCQkJCSAgY29u aW5oY291bnQsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJCQkgIGNvbm5vaW5oZXJpdCwgLyog Y29uTm9Jbmhlcml0ICovCisJCQkJCQkJCQkgIGZhbHNlLAkvKiBjb25UZW1wb3JhbCAqLwog CQkJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAKIAlPYmplY3RBZGRyZXNz U2V0KGFkZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25zdHJPaWQpOwpAQCAtMTAz MDEsNiArMTAzMDMsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVl LCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAg ZmFsc2UsCiAJCQkJCQkJCQkgIDEsCiAJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICBm YWxzZSwJLyogY29uVGVtcG9yYWwgKi8KIAkJCQkJCQkJCSAgZmFsc2UpOwogCiAJCQkvKgpA QCAtMTA4MDYsNiArMTA4MDksNyBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1 ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQkgIGZh bHNlLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCSAgMSwJLyogaW5oY291bnQgKi8KIAkJCQkJ CQkJICBmYWxzZSwJLyogY29uTm9Jbmhlcml0ICovCisJCQkJCQkJCSAgZmFsc2UsCS8qIGNv blRlbXBvcmFsICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRpdGlv biBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTE0ODAsNiAr MTE0ODQsNyBAQCBBVEV4ZWNWYWxpZGF0ZUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gcmVsLCBjaGFyICpjb25zdHJOYW1lLAogCQkJbmV3Y29uLT5yZWZyZWxpZCA9IGNv bi0+Y29uZnJlbGlkOwogCQkJbmV3Y29uLT5yZWZpbmRpZCA9IGNvbi0+Y29uaW5kaWQ7CiAJ CQluZXdjb24tPmNvbmlkID0gY29uLT5vaWQ7CisJCQluZXdjb24tPmNvbnRlbXBvcmFsID0g Y29uLT5jb250ZW1wb3JhbDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChOb2RlICopIGZrY29uc3Ry YWludDsKIAogCQkJLyogRmluZCBvciBjcmVhdGUgd29yayBxdWV1ZSBlbnRyeSBmb3IgdGhp cyB0YWJsZSAqLwpAQCAtMTE2NDYsMTAgKzExNjUxLDEyIEBAIHRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKICAqCiAgKglMb29rIHVwIHRoZSBu YW1lcywgYXR0bnVtcywgYW5kIHR5cGVzIG9mIHRoZSBwcmltYXJ5IGtleSBhdHRyaWJ1dGVz CiAgKglmb3IgdGhlIHBrcmVsLiAgQWxzbyByZXR1cm4gdGhlIGluZGV4IE9JRCBhbmQgaW5k ZXggb3BjbGFzc2VzIG9mIHRoZQotICoJaW5kZXggc3VwcG9ydGluZyB0aGUgcHJpbWFyeSBr ZXkuCisgKglpbmRleCBzdXBwb3J0aW5nIHRoZSBwcmltYXJ5IGtleS4gIElmIHRoaXMgaXMg YSB0ZW1wb3JhbCBwcmltYXJ5IGtleSwKKyAqCWFsc28gc2V0IHRoZSBXSVRIT1VUIE9WRVJM QVBTIGF0dHJpYnV0ZSBuYW1lLCBhdHRudW0sIGFuZCBhdHR0eXBpZC4KICAqCiAgKglBbGwg cGFyYW1ldGVycyBleGNlcHQgcGtyZWwgYXJlIG91dHB1dCBwYXJhbWV0ZXJzLiAgQWxzbywg dGhlIGZ1bmN0aW9uCi0gKglyZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiBhdHRyaWJ1 dGVzIGluIHRoZSBwcmltYXJ5IGtleS4KKyAqCXJldHVybiB2YWx1ZSBpcyB0aGUgbnVtYmVy IG9mIGF0dHJpYnV0ZXMgaW4gdGhlIHByaW1hcnkga2V5LAorICoJbm90IGluY2x1ZGluZyB0 aGUgV0lUSE9VVCBPVkVSTEFQUyBpZiBhbnkuCiAgKgogICoJVXNlZCB3aGVuIHRoZSBjb2x1 bW4gbGlzdCBpbiB0aGUgUkVGRVJFTkNFUyBzcGVjaWZpY2F0aW9uIGlzIG9taXR0ZWQuCiAg Ki8KQEAgLTE0MTkxLDcgKzE0MTk4LDggQEAgVHJ5UmV1c2VJbmRleChPaWQgb2xkSWQsIElu ZGV4U3RtdCAqc3RtdCkKIAlpZiAoQ2hlY2tJbmRleENvbXBhdGlibGUob2xkSWQsCiAJCQkJ CQkJIHN0bXQtPmFjY2Vzc01ldGhvZCwKIAkJCQkJCQkgc3RtdC0+aW5kZXhQYXJhbXMsCi0J CQkJCQkJIHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKSkKKwkJCQkJCQkgc3RtdC0+ZXhjbHVkZU9w TmFtZXMsCisJCQkJCQkJIHN0bXQtPmlzdGVtcG9yYWwpKQogCXsKIAkJUmVsYXRpb24JaXJl bCA9IGluZGV4X29wZW4ob2xkSWQsIE5vTG9jayk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIu YwppbmRleCA1MjE3Nzc1OWFiLi4wNTc3YjYwNDE1IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dl ci5jCkBAIC04NDEsNiArODQxLDcgQEAgQ3JlYXRlVHJpZ2dlckZpcmluZ09uKENyZWF0ZVRy aWdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJCQkJCQkJCQkJICB0 cnVlLCAvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkJCSAgMCwJLyogaW5oY291bnQgKi8KIAkJ CQkJCQkJCQkJICB0cnVlLCAvKiBub2luaGVyaXQgKi8KKwkJCQkJCQkJCQkJICBmYWxzZSwg LyogY29udGVtcG9yYWwgKi8KIAkJCQkJCQkJCQkJICBpc0ludGVybmFsKTsJLyogaXNfaW50 ZXJuYWwgKi8KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVj bWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBlY21kcy5jCmluZGV4IDVlOTc2MDY3 OTMuLjZkMGU5NDY2ODQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwpAQCAtMzU0NCw2 ICszNTQ0LDcgQEAgZG9tYWluQWRkQ29uc3RyYWludChPaWQgZG9tYWluT2lkLCBPaWQgZG9t YWluTmFtZXNwYWNlLCBPaWQgYmFzZVR5cGVPaWQsCiAJCQkJCQkJICB0cnVlLCAvKiBpcyBs b2NhbCAqLwogCQkJCQkJCSAgMCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkgIGZhbHNlLAkv KiBjb25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZhbHNlLAkvKiBjb250ZW1wb3JhbCAqLwog CQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCWlmIChjb25zdHJBZGRyKQog CQlPYmplY3RBZGRyZXNzU2V0KCpjb25zdHJBZGRyLCBDb25zdHJhaW50UmVsYXRpb25JZCwg Y2NvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggN2QyMDMyODg1ZS4uM2VhNGFjYjc0ZCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvZ3JhbS55CkBAIC01MjMsNyArNTIzLDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1 ZXJ5KTsKICV0eXBlIDxub2RlPglUYWJsZUVsZW1lbnQgVHlwZWRUYWJsZUVsZW1lbnQgQ29u c3RyYWludEVsZW0gVGFibGVGdW5jRWxlbWVudAogJXR5cGUgPG5vZGU+CWNvbHVtbkRlZiBj b2x1bW5PcHRpb25zCiAldHlwZSA8ZGVmZWx0PglkZWZfZWxlbSByZWxvcHRpb25fZWxlbSBv bGRfYWdncl9lbGVtIG9wZXJhdG9yX2RlZl9lbGVtCi0ldHlwZSA8bm9kZT4JZGVmX2FyZyBj b2x1bW5FbGVtIHdoZXJlX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQorJXR5cGUg PG5vZGU+CWRlZl9hcmcgY29sdW1uRWxlbSB3aXRob3V0X292ZXJsYXBzX2NsYXVzZQorCQkJ CXdoZXJlX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQogCQkJCWFfZXhwciBiX2V4 cHIgY19leHByIEFleHByQ29uc3QgaW5kaXJlY3Rpb25fZWwgb3B0X3NsaWNlX2JvdW5kCiAJ CQkJY29sdW1ucmVmIGluX2V4cHIgaGF2aW5nX2NsYXVzZSBmdW5jX3RhYmxlIHhtbHRhYmxl IGFycmF5X2V4cHIKIAkJCQlPcHRXaGVyZUNsYXVzZSBvcGVyYXRvcl9kZWZfYXJnCkBAIC00 MDk2LDcgKzQwOTcsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+aW5pdGlhbGx5X3Zh bGlkID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQkJCXwgVU5JUVVF IG9wdF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygnIGNvbHVtbkxpc3QgJyknIG9wdF9jX2lu Y2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKKwkJCXwgVU5JUVVFIG9w dF91bmlxdWVfbnVsbF90cmVhdG1lbnQgJygnIGNvbHVtbkxpc3Qgd2l0aG91dF9vdmVybGFw c19jbGF1c2UgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmluaXRpb24gT3B0Q29uc1RhYmxl U3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsKIAkJCQkJQ29uc3Ry YWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpAQCAtNDEwNSwxMSArNDEwNiwxMiBA QCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJbi0+bnVs bHNfbm90X2Rpc3RpbmN0ID0gISQyOwogCQkJCQluLT5rZXlzID0gJDQ7Ci0JCQkJCW4tPmlu Y2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25zID0gJDc7CisJCQkJCW4tPndpdGhvdXRf b3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVkaW5nID0gJDc7CisJCQkJCW4tPm9wdGlv bnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsKLQkJCQkJbi0+aW5kZXhzcGFj ZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygkOSwgQDksICJVTklRVUUiLAorCQkJCQlu LT5pbmRleHNwYWNlID0gJDk7CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQxMCwgQDEwLCAiVU5J UVVFIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5V TEwsCiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikg bjsKQEAgLTQxMzAsNyArNDEzMiw3IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQkJCQkgICBO VUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQotCQkJfCBQ UklNQVJZIEtFWSAnKCcgY29sdW1uTGlzdCAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5p dGlvbiBPcHRDb25zVGFibGVTcGFjZQorCQkJfCBQUklNQVJZIEtFWSAnKCcgY29sdW1uTGlz dCB3aXRob3V0X292ZXJsYXBzX2NsYXVzZSAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5p dGlvbiBPcHRDb25zVGFibGVTcGFjZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJ CQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC00 MTM4LDExICs0MTQwLDEyIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5jb250eXBlID0g Q09OU1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCW4tPmtleXMg PSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkNzsK KwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9ICQ1OworCQkJCQluLT5pbmNsdWRpbmcgPSAk NzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQluLT5pbmRleG5hbWUgPSBOVUxMOwot CQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQ5LCBAOSwg IlBSSU1BUlkgS0VZIiwKKwkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ5OworCQkJCQlwcm9jZXNz Q0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwKIAkJCQkJCQkJICAgJm4tPmRlZmVy cmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5VTEwsIHl5c2Nh bm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQyMjAsNiArNDIyMywxMSBAQCBj b2x1bW5MaXN0OgogCQkJfCBjb2x1bW5MaXN0ICcsJyBjb2x1bW5FbGVtCQkJCXsgJCQgPSBs YXBwZW5kKCQxLCAkMyk7IH0KIAkJOwogCit3aXRob3V0X292ZXJsYXBzX2NsYXVzZToKKwkJ CScsJyBjb2x1bW5FbGVtIFdJVEhPVVQgT1ZFUkxBUFMgeyAkJCA9ICQyOyB9CisJCQl8IC8q RU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxMOyB9CisJOworCiBjb2x1bW5FbGVt OiBDb2xJZAogCQkJCXsKIAkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlU3RyaW5nKCQxKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgYi9zcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDU1YzMxNWYwZTIuLmUxOTU0MTBj MjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpAQCAtMTI0LDYgKzEyNCw4 IEBAIHN0YXRpYyBMaXN0ICpnZXRfb3BjbGFzcyhPaWQgb3BjbGFzcywgT2lkIGFjdHVhbF9k YXRhdHlwZSk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzKENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQpOwogc3RhdGljIEluZGV4U3RtdCAqdHJhbnNmb3JtSW5kZXhD b25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsCiAJCQkJCQkJCQkJICAgQ3JlYXRl U3RtdENvbnRleHQgKmN4dCk7CitzdGF0aWMgYm9vbCBmaW5kTmV3T3JPbGRDb2x1bW4oQ3Jl YXRlU3RtdENvbnRleHQgKmN4dCwgY2hhciAqY29sbmFtZSwgY2hhciAqKnR5cG5hbWUsCisJ CQkJCQkJICAgT2lkICp0eXBpZCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1FeHRlbmRlZFN0 YXRpc3RpY3MoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zv cm1GS0NvbnN0cmFpbnRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCSAgIGJv b2wgc2tpcFZhbGlkYXRpb24sCkBAIC0xNzI1LDYgKzE3MjcsNyBAQCBnZW5lcmF0ZUNsb25l ZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24gc291cmNlX2lkeCwKIAlp bmRleC0+dW5pcXVlID0gaWR4cmVjLT5pbmRpc3VuaXF1ZTsKIAlpbmRleC0+bnVsbHNfbm90 X2Rpc3RpbmN0ID0gaWR4cmVjLT5pbmRudWxsc25vdGRpc3RpbmN0OwogCWluZGV4LT5wcmlt YXJ5ID0gaWR4cmVjLT5pbmRpc3ByaW1hcnk7CisJaW5kZXgtPmlzdGVtcG9yYWwgPSAoaWR4 cmVjLT5pbmRpc3ByaW1hcnkgfHwgaWR4cmVjLT5pbmRpc3VuaXF1ZSkgJiYgaWR4cmVjLT5p bmRpc2V4Y2x1c2lvbjsKIAlpbmRleC0+dHJhbnNmb3JtZWQgPSB0cnVlOwkvKiBkb24ndCBu ZWVkIHRyYW5zZm9ybUluZGV4U3RtdCAqLwogCWluZGV4LT5jb25jdXJyZW50ID0gZmFsc2U7 CiAJaW5kZXgtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKQEAgLTE3NzQsNyArMTc3Nyw5IEBA IGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFwUmVsLCBSZWxhdGlvbiBz b3VyY2VfaWR4LAogCQkJCWludAkJCW5FbGVtczsKIAkJCQlpbnQJCQlpOwogCi0JCQkJQXNz ZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTik7CisJCQkJQXNz ZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xVU0lPTiB8fAorCQkJCQkJ KGluZGV4LT5pc3RlbXBvcmFsICYmCisJCQkJCQkgKGNvbnJlYy0+Y29udHlwZSA9PSBDT05T VFJBSU5UX1BSSU1BUlkgfHwgY29ucmVjLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVF KSkpOwogCQkJCS8qIEV4dHJhY3Qgb3BlcmF0b3IgT0lEcyBmcm9tIHRoZSBwZ19jb25zdHJh aW50IHR1cGxlICovCiAJCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNU Uk9JRCwgaHRfY29uc3RyLAogCQkJCQkJCQkJCQkgICBBbnVtX3BnX2NvbnN0cmFpbnRfY29u ZXhjbG9wKTsKQEAgLTIzMTQsNiArMjMxOSw3IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWlu dChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCX0K IAlpbmRleC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gY29uc3RyYWludC0+bnVsbHNfbm90X2Rp c3RpbmN0OwogCWluZGV4LT5pc2NvbnN0cmFpbnQgPSB0cnVlOworCWluZGV4LT5pc3RlbXBv cmFsID0gY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyAhPSBOVUxMOwogCWluZGV4LT5k ZWZlcnJhYmxlID0gY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKIAlpbmRleC0+aW5pdGRlZmVy cmVkID0gY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwogCkBAIC0yNDA2LDYgKzI0MTIsMTEg QEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsIENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJCSBlcnJtc2coImluZGV4IFwiJXNcIiBpcyBu b3QgdmFsaWQiLCBpbmRleF9uYW1lKSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQt PnBzdGF0ZSwgY29uc3RyYWludC0+bG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogVG9kYXkg d2UgZm9yYmlkIG5vbi11bmlxdWUgaW5kZXhlcywgYnV0IHdlIGNvdWxkIHBlcm1pdCBHaVNU CisJCSAqIGluZGV4ZXMgd2hvc2UgbGFzdCBlbnRyeSBpcyBhIHJhbmdlIHR5cGUgYW5kIHVz ZSB0aGF0IHRvIGNyZWF0ZSBhCisJCSAqIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCAo aS5lLiBhIHRlbXBvcmFsIGNvbnN0cmFpbnQpLgorCQkgKi8KIAkJaWYgKCFpbmRleF9mb3Jt LT5pbmRpc3VuaXF1ZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNP REVfV1JPTkdfT0JKRUNUX1RZUEUpLApAQCAtMjY4Miw2ICsyNjkzLDY1IEBAIHRyYW5zZm9y bUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29u dGV4dCAqY3h0KQogCQkJCW5vdG51bGxjbWRzID0gbGFwcGVuZChub3RudWxsY21kcywgbm90 bnVsbGNtZCk7CiAJCQl9CiAJCX0KKworCQkvKgorCQkgKiBBbnl0aGluZyBpbiB3aXRob3V0 X292ZXJsYXBzIHNob3VsZCBiZSBpbmNsdWRlZCwKKwkJICogYnV0IHdpdGggdGhlIG92ZXJs YXBzIG9wZXJhdG9yICgmJikgaW5zdGVhZCBvZiBlcXVhbGl0eS4KKwkJICovCisJCWlmIChj b25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzICE9IE5VTEwpIHsKKwkJCWNoYXIgKndpdGhv dXRfb3ZlcmxhcHNfc3RyID0gc3RyVmFsKGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMp OworCQkJSW5kZXhFbGVtICppcGFyYW0gPSBtYWtlTm9kZShJbmRleEVsZW0pOworCQkJY2hh ciAgICp0eXBuYW1lOworCQkJT2lkCQl0eXBpZDsKKworCQkJLyoKKwkJCSAqIEl0ZXJhdGUg dGhyb3VnaCB0aGUgdGFibGUncyBjb2x1bW5zCisJCQkgKiAobGlrZSBqdXN0IGEgbGl0dGxl IGJpdCBhYm92ZSkuCisJCQkgKiBJZiB3ZSBmaW5kIG9uZSB3aG9zZSBuYW1lIGlzIHRoZSBz YW1lIGFzIHdpdGhvdXRfb3ZlcmxhcHMsCisJCQkgKiB2YWxpZGF0ZSB0aGF0IGl0J3MgYSBy YW5nZSB0eXBlLgorCQkJICoKKwkJCSAqIE90aGVyd2lzZSByZXBvcnQgYW4gZXJyb3IuCisJ CQkgKi8KKworCQkJaWYgKGZpbmROZXdPck9sZENvbHVtbihjeHQsIHdpdGhvdXRfb3Zlcmxh cHNfc3RyLCAmdHlwbmFtZSwgJnR5cGlkKSkKKwkJCXsKKwkJCQlpZiAoIXR5cGVfaXNfcmFu Z2UodHlwaWQpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIg aW4gV0lUSE9VVCBPVkVSTEFQUyBpcyBub3QgYSByYW5nZSB0eXBlIiwKKwkJCQkJCQkJCXdp dGhvdXRfb3ZlcmxhcHNfc3RyKSkpOworCQkJfQorCQkJZWxzZQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkJ IGVycm1zZygicmFuZ2Ugb3IgUEVSSU9EIFwiJXNcIiBpbiBXSVRIT1VUIE9WRVJMQVBTIGRv ZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJd2l0aG91dF9vdmVybGFwc19zdHIpKSk7CisKKwkJ CWlwYXJhbS0+bmFtZSA9IHBzdHJkdXAod2l0aG91dF9vdmVybGFwc19zdHIpOworCQkJaXBh cmFtLT5leHByID0gTlVMTDsKKwkJCWlwYXJhbS0+aW5kZXhjb2xuYW1lID0gTlVMTDsKKwkJ CWlwYXJhbS0+Y29sbGF0aW9uID0gTklMOworCQkJaXBhcmFtLT5vcGNsYXNzID0gTklMOwor CQkJaXBhcmFtLT5vcGNsYXNzb3B0cyA9IE5JTDsKKwkJCWlwYXJhbS0+b3JkZXJpbmcgPSBT T1JUQllfREVGQVVMVDsKKwkJCWlwYXJhbS0+bnVsbHNfb3JkZXJpbmcgPSBTT1JUQllfTlVM TFNfREVGQVVMVDsKKwkJCWluZGV4LT5pbmRleFBhcmFtcyA9IGxhcHBlbmQoaW5kZXgtPmlu ZGV4UGFyYW1zLCBpcGFyYW0pOworCisJCQlpbmRleC0+YWNjZXNzTWV0aG9kID0gImdpc3Qi OworCQkJY29uc3RyYWludC0+YWNjZXNzX21ldGhvZCA9ICJnaXN0IjsKKworCQkJaWYgKGNv bnN0cmFpbnQtPmNvbnR5cGUgPT0gQ09OU1RSX1BSSU1BUlkpCisJCQl7CisJCQkJLyoKKwkJ CQkgKiBGb3JjZSB0aGUgY29sdW1uIHRvIE5PVCBOVUxMIHNpbmNlIGl0IGlzIHBhcnQgb2Yg dGhlIHByaW1hcnkga2V5LgorCQkJCSAqLworCQkJCUFsdGVyVGFibGVDbWQgKm5vdG51bGxj bWQgPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKworCQkJCW5vdG51bGxjbWQtPnN1YnR5 cGUgPSBBVF9TZXRBdHROb3ROdWxsOworCQkJCW5vdG51bGxjbWQtPm5hbWUgPSBwc3RyZHVw KHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKKwkJCQlub3RudWxsY21kcyA9IGxhcHBlbmQobm90 bnVsbGNtZHMsIG5vdG51bGxjbWQpOworCQkJfQorCQl9CiAJfQogCiAJLyoKQEAgLTI4MDEs NiArMjg3MSw1OCBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29u c3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAlyZXR1cm4gaW5kZXg7CiB9CiAK Ky8qCisgKiBUcmllcyB0byBmaW5kIGEgY29sdW1uIGJ5IG5hbWUgYW1vbmcgdGhlIGV4aXN0 aW5nIG9uZXMgKGlmIGl0J3MgYW4gQUxURVIgVEFCTEUpCisgKiBhbmQgdGhlIG5ldyBvbmVz LiBTZXRzIHR5cG5hbWUgYW5kIHR5cGlkIGlmIG9uZSBpcyBmb3VuZC4gUmV0dXJucyBmYWxz ZSBpZiB3ZQorICogY291bGRuJ3QgZmluZCBhIG1hdGNoLgorICovCitzdGF0aWMgYm9vbAor ZmluZE5ld09yT2xkQ29sdW1uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5h bWUsIGNoYXIgKip0eXBuYW1lLCBPaWQgKnR5cGlkKQoreworCS8qIENoZWNrIHRoZSBuZXcg Y29sdW1ucyBmaXJzdCBpbiBjYXNlIHRoZWlyIHR5cGUgaXMgY2hhbmdpbmcuICovCisKKwlD b2x1bW5EZWYgICpjb2x1bW4gPSBOVUxMOworCUxpc3RDZWxsICAgKmNvbHVtbnM7CisKKwlm b3JlYWNoKGNvbHVtbnMsIGN4dC0+Y29sdW1ucykKKwl7CisJCWNvbHVtbiA9IGxmaXJzdF9u b2RlKENvbHVtbkRlZiwgY29sdW1ucyk7CisJCWlmIChzdHJjbXAoY29sdW1uLT5jb2xuYW1l LCBjb2xuYW1lKSA9PSAwKQorCQl7CisJCQkqdHlwaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxM LCBjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCSp0eXBuYW1lID0gVHlwZU5hbWVUb1N0cmluZyhj b2x1bW4tPnR5cGVOYW1lKTsKKwkJCXJldHVybiB0cnVlOworCQl9CisJfQorCisJLyogTG9v ayB1cCBjb2x1bW5zIG9uIGV4aXN0aW5nIHRhYmxlLiAqLworCisJaWYgKGN4dC0+aXNhbHRl cikKKwl7CisJCVJlbGF0aW9uIHJlbCA9IGN4dC0+cmVsOworCQlmb3IgKGludCBpID0gMDsg aSA8IHJlbC0+cmRfYXR0LT5uYXR0czsgaSsrKQorCQl7CisJCQlGb3JtX3BnX2F0dHJpYnV0 ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihyZWwtPnJkX2F0dCwgaSk7CisJCQljb25zdCBjaGFy ICphdHRuYW1lOworCisJCQlpZiAoYXR0ci0+YXR0aXNkcm9wcGVkKQorCQkJCWNvbnRpbnVl OworCisJCQlhdHRuYW1lID0gTmFtZVN0cihhdHRyLT5hdHRuYW1lKTsKKwkJCWlmIChzdHJj bXAoYXR0bmFtZSwgY29sbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlUeXBlIHR5cGUgPSB0eXBl aWRUeXBlKGF0dHItPmF0dHR5cGlkKTsKKwkJCQkqdHlwaWQgPSBhdHRyLT5hdHR0eXBpZDsK KwkJCQkqdHlwbmFtZSA9IHBzdHJkdXAodHlwZVR5cGVOYW1lKHR5cGUpKTsKKwkJCQlSZWxl YXNlU3lzQ2FjaGUodHlwZSk7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisK KwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiB0cmFuc2Zvcm1FeHRlbmRlZFN0YXRpc3Rp Y3MKICAqICAgICBIYW5kbGUgZXh0ZW5kZWQgc3RhdGlzdGljIG9iamVjdHMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA2OGYzMDE0ODRlLi43YWE1YjYyYWI4IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC0zMzgsOCArMzM4LDggQEAgc3RhdGlj IGNoYXIgKmRlcGFyc2VfZXhwcmVzc2lvbl9wcmV0dHkoTm9kZSAqZXhwciwgTGlzdCAqZHBj b250ZXh0LAogc3RhdGljIGNoYXIgKnBnX2dldF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29p ZCwKIAkJCQkJCQkJICAgaW50IHByZXR0eUZsYWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0 aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJl dHR5KTsKLXN0YXRpYyBpbnQJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBj b2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKLQkJCQkJCQkJCQkgU3RyaW5nSW5mbyBi dWYpOworc3RhdGljIGludAlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNv bHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLCBPaWQgaW5kZXhJZCwKKwkJCQkJCQkJCQkg Ym9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8gYnVmKTsKIHN0YXRpYyBjaGFyICpw Z19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1bGVvaWQsIGludCBwcmV0dHlGbGFncyk7CiBz dGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVmX3dvcmtlcihPaWQgaW5kZXhyZWxpZCwgaW50 IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lkICpleGNsdWRlT3BzLApAQCAtMjI0Nyw3ICsy MjQ3LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQs IGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChD T05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25rZXkp OwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNv bnJlbGlkLCAmYnVmKTsKKwkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwg Y29uRm9ybS0+Y29ucmVsaWQsIGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CiAK IAkJCQkvKiBhZGQgZm9yZWlnbiByZWxhdGlvbiBuYW1lICovCiAJCQkJYXBwZW5kU3RyaW5n SW5mbygmYnVmLCAiKSBSRUZFUkVOQ0VTICVzKCIsCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCBw Z19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxs Q29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwg dHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmZrZXkpOwogCi0JCQkJ ZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwg JmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0t PmNvbmZyZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQsIGZhbHNlLCAmYnVmKTsKIAogCQkJCWFw cGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTIzNDQsNyArMjM0NCw3IEBA IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1 bGxDb21tYW5kLAogCQkJCWlmICghaXNudWxsKQogCQkJCXsKIAkJCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQkJZGVjb21waWxlX2Nv bHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBJbnZhbGlkT2lkLCBm YWxzZSwgJmJ1Zik7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAJ CQkJfQogCkBAIC0yMzU3LDYgKzIzNTcsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3Jr ZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlPaWQJCQlpbmRl eElkOwogCQkJCWludAkJCWtleWF0dHM7CiAJCQkJSGVhcFR1cGxlCWluZHR1cDsKKwkJCQli b29sCQlpc251bGw7CiAKIAkJCQkvKiBTdGFydCBvZmYgdGhlIGNvbnN0cmFpbnQgZGVmaW5p dGlvbiAqLwogCQkJCWlmIChjb25Gb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfUFJJTUFS WSkKQEAgLTIzNzksNyArMjM4MCwxNCBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIo T2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNo ZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19j b25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQkvKgorCQkJ CSAqIElmIGl0IGhhcyBleGNsdXNpb24tc3R5bGUgb3BlcmF0b3IgT0lEcworCQkJCSAqIHRo ZW4gaXQgdXNlcyBXSVRIT1VUIE9WRVJMQVBTLgorCQkJCSAqLworCQkJCWluZGV4SWQgPSBj b25Gb3JtLT5jb25pbmRpZDsKKwkJCQlTeXNDYWNoZUdldEF0dHIoQ09OU1RST0lELCB0dXAs CisJCQkJCQkgIEFudW1fcGdfY29uc3RyYWludF9jb25leGNsb3AsICZpc251bGwpOworCQkJ CWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+ Y29ucmVsaWQsIGluZGV4SWQsICFpc251bGwsICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5n SW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAtMjU3NCw4ICsyNTgyLDggQEAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQs CiAgKiBvZiBrZXlzLgogICovCiBzdGF0aWMgaW50Ci1kZWNvbXBpbGVfY29sdW1uX2luZGV4 X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAotCQkJCQkJCSBT dHJpbmdJbmZvIGJ1ZikKK2RlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29s dW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAorCQkJCQkJCSBib29s IHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpCiB7CiAJRGF0dW0JICAgKmtleXM7 CiAJaW50CQkJbktleXM7CkBAIC0yNTg4LDExICsyNTk2LDE0IEBAIGRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCiAJ Zm9yIChqID0gMDsgaiA8IG5LZXlzOyBqKyspCiAJewogCQljaGFyCSAgICpjb2xOYW1lOwor CQlpbnQJCQljb2xpZCA9IERhdHVtR2V0SW50MTYoa2V5c1tqXSk7CiAKLQkJY29sTmFtZSA9 IGdldF9hdHRuYW1lKHJlbElkLCBEYXR1bUdldEludDE2KGtleXNbal0pLCBmYWxzZSk7CisJ CWNvbE5hbWUgPSBnZXRfYXR0bmFtZShyZWxJZCwgY29saWQsIGZhbHNlKTsKIAogCQlpZiAo aiA9PSAwKQogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZp ZXIoY29sTmFtZSkpOworCQllbHNlIGlmICh3aXRob3V0T3ZlcmxhcHMgJiYgaiA9PSBuS2V5 cyAtIDEpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQ UyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlCiAJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCA3MjM0Y2IzZGE2Li43N2E1YjI1 ODg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKQEAgLTU1MzYsOCArNTUz Niw5IEBAIFJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24p CiAgKiBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8gLS0gZ2V0IGluZm8gYWJvdXQgaW5kZXgn cyBleGNsdXNpb24gY29uc3RyYWludAogICoKICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBv bmx5IGZvciBhbiBpbmRleCB0aGF0IGlzIGtub3duIHRvIGhhdmUgYW4KLSAqIGFzc29jaWF0 ZWQgZXhjbHVzaW9uIGNvbnN0cmFpbnQuICBJdCByZXR1cm5zIGFycmF5cyAocGFsbG9jJ2Qg aW4gY2FsbGVyJ3MKLSAqIGNvbnRleHQpIG9mIHRoZSBleGNsdXNpb24gb3BlcmF0b3IgT0lE cywgdGhlaXIgdW5kZXJseWluZyBmdW5jdGlvbnMnCisgKiBhc3NvY2lhdGVkIGV4Y2x1c2lv biBjb25zdHJhaW50IG9yIHRlbXBvcmFsIHByaW1hcnkga2V5L3VuaXF1ZQorICogY29uc3Ry YWludC4gSXQgcmV0dXJucyBhcnJheXMgKHBhbGxvYydkIGluIGNhbGxlcidzIGNvbnRleHQp CisgKiBvZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9yIE9JRHMsIHRoZWlyIHVuZGVybHlpbmcg ZnVuY3Rpb25zJwogICogT0lEcywgYW5kIHRoZWlyIHN0cmF0ZWd5IG51bWJlcnMgaW4gdGhl IGluZGV4J3Mgb3BjbGFzc2VzLiAgV2UgY2FjaGUKICAqIGFsbCB0aGlzIGluZm9ybWF0aW9u IHNpbmNlIGl0IHJlcXVpcmVzIGEgZmFpciBhbW91bnQgb2Ygd29yayB0byBnZXQuCiAgKi8K QEAgLTU2MDMsNyArNTYwNCwxMCBAQCBSZWxhdGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRp b24gaW5kZXhSZWxhdGlvbiwKIAkJaW50CQkJbmVsZW07CiAKIAkJLyogV2Ugd2FudCB0aGUg ZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3duaW5nIHRoZSBpbmRleCAqLwotCQlpZiAoY29uZm9y bS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VYQ0xVU0lPTiB8fAorCQlpZiAoKGNvbmZvcm0t PmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gJiYKKwkJCQkJIShjb25mb3JtLT5j b250ZW1wb3JhbCAmJiAoCisJCQkJCQkJY29uZm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5U X1BSSU1BUlkKKwkJCQkJCQl8fCBjb25mb3JtLT5jb250eXBlID09IENPTlNUUkFJTlRfVU5J UVVFKSkpIHx8CiAJCQljb25mb3JtLT5jb25pbmRpZCAhPSBSZWxhdGlvbkdldFJlbGlkKGlu ZGV4UmVsYXRpb24pKQogCQkJY29udGludWU7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGY3YjYx NzY2OTIuLmVmZThkNzJiMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1w LmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNjk3Miw3ICs2OTcyLDgg QEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQg bnVtVGFibGVzKQogCQkJCWlfdGFibGVzcGFjZSwKIAkJCQlpX2luZHJlbG9wdGlvbnMsCiAJ CQkJaV9pbmRzdGF0Y29scywKLQkJCQlpX2luZHN0YXR2YWxzOworCQkJCWlfaW5kc3RhdHZh bHMsCisJCQkJaV93aXRob3V0b3ZlcmxhcHM7CiAKIAkvKgogCSAqIFdlIHdhbnQgdG8gcGVy Zm9ybSBqdXN0IG9uZSBxdWVyeSBhZ2FpbnN0IHBnX2luZGV4LiAgSG93ZXZlciwgd2UKQEAg LTcwNDcsMTAgKzcwNDgsMTcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNp b24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkg ImkuaW5kbnVsbHNub3RkaXN0aW5jdCAiKTsKKwkJCQkJCQkgImkuaW5kbnVsbHNub3RkaXN0 aW5jdCwgIik7CiAJZWxzZQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJ CQkgImZhbHNlIEFTIGluZG51bGxzbm90ZGlzdGluY3QgIik7CisJCQkJCQkJICJmYWxzZSBB UyBpbmRudWxsc25vdGRpc3RpbmN0LCAiKTsKKworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9u ID49IDE3MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJj LmNvbmV4Y2xvcCBJUyBOT1QgTlVMTCBBUyB3aXRob3V0b3ZlcmxhcHMgIik7CisJZWxzZQor CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIm51bGwgQVMgd2l0aG91 dG92ZXJsYXBzICIpOwogCiAJLyoKIAkgKiBUaGUgcG9pbnQgb2YgdGhlIG1lc3N5LWxvb2tp bmcgb3V0ZXIgam9pbiBpcyB0byBmaW5kIGEgY29uc3RyYWludCB0aGF0CkBAIC03MTI1LDYg KzcxMzMsNyBAQCBnZXRJbmRleGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZv W10sIGludCBudW1UYWJsZXMpCiAJaV9pbmRyZWxvcHRpb25zID0gUFFmbnVtYmVyKHJlcywg ImluZHJlbG9wdGlvbnMiKTsKIAlpX2luZHN0YXRjb2xzID0gUFFmbnVtYmVyKHJlcywgImlu ZHN0YXRjb2xzIik7CiAJaV9pbmRzdGF0dmFscyA9IFBRZm51bWJlcihyZXMsICJpbmRzdGF0 dmFscyIpOworCWlfd2l0aG91dG92ZXJsYXBzID0gUFFmbnVtYmVyKHJlcywgIndpdGhvdXRv dmVybGFwcyIpOwogCiAJaW5keGluZm8gPSAoSW5keEluZm8gKikgcGdfbWFsbG9jKG50dXBz ICogc2l6ZW9mKEluZHhJbmZvKSk7CiAKQEAgLTcyMjcsNiArNzIzNiw3IEBAIGdldEluZGV4 ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykK IAkJCQljb25zdHJpbmZvLT5jb25kZWZlcnJlZCA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlf Y29uZGVmZXJyZWQpKSA9PSAndCc7CiAJCQkJY29uc3RyaW5mby0+Y29uaXNsb2NhbCA9IHRy dWU7CiAJCQkJY29uc3RyaW5mby0+c2VwYXJhdGUgPSB0cnVlOworCQkJCWNvbnN0cmluZm8t PndpdGhvdXRvdmVybGFwcyA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfd2l0aG91dG92ZXJs YXBzKSkgPT0gJ3QnOwogCiAJCQkJaW5keGluZm9bal0uaW5kZXhjb25zdHJhaW50ID0gY29u c3RyaW5mby0+ZG9iai5kdW1wSWQ7CiAJCQl9CkBAIC0xNjkyMiw5ICsxNjkzMiwyMiBAQCBk dW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0LCBjb25zdCBDb25zdHJhaW50SW5mbyAqY29u aW5mbykKIAkJCQkJYnJlYWs7CiAJCQkJYXR0bmFtZSA9IGdldEF0dHJOYW1lKGluZGtleSwg dGJpbmZvKTsKIAotCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcyVzIiwKLQkJCQkJCQkJ ICAoayA9PSAwKSA/ICIiIDogIiwgIiwKLQkJCQkJCQkJICBmbXRJZChhdHRuYW1lKSk7CisJ CQkJaWYgKGsgPT0gMCkKKwkJCQl7CisJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcyIs CisJCQkJCQkJCQkJZm10SWQoYXR0bmFtZSkpOworCQkJCX0KKwkJCQllbHNlIGlmIChrID09 IGluZHhpbmZvLT5pbmRua2V5YXR0cnMgLSAxICYmCisJCQkJCQljb25pbmZvLT53aXRob3V0 b3ZlcmxhcHMpCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiLCAlcyBXSVRI T1VUIE9WRVJMQVBTIiwKKwkJCQkJCQkJCSAgZm10SWQoYXR0bmFtZSkpOworCQkJCX0KKwkJ CQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiLCAlcyIsCisJCQkJ CQkJCQkJZm10SWQoYXR0bmFtZSkpOworCQkJCX0KIAkJCX0KIAogCQkJaWYgKGluZHhpbmZv LT5pbmRua2V5YXR0cnMgPCBpbmR4aW5mby0+aW5kbmF0dHJzKQpkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5k ZXggOTAzNmIxM2Y2YS4uNzczYTJkZTE4YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCkBAIC00ODksNiAr NDg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2NvbnN0cmFpbnRJbmZvCiAJYm9vbAkJY29uZGVm ZXJyZWQ7CS8qIHRydWUgaWYgY29uc3RyYWludCBpcyBJTklUSUFMTFkgREVGRVJSRUQgKi8K IAlib29sCQljb25pc2xvY2FsOwkJLyogdHJ1ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBk ZWZpbml0aW9uICovCiAJYm9vbAkJc2VwYXJhdGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBh cyBzZXBhcmF0ZSBpdGVtICovCisJYm9vbAkJd2l0aG91dG92ZXJsYXBzOwkvKiB0cnVlIGlm IHRoZSBsYXN0IGVsZW0gaXMgV0lUSE9VVCBPVkVSTEFQUyAqLwogfSBDb25zdHJhaW50SW5m bzsKIAogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NMYW5nSW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdf ZHVtcC5wbAppbmRleCAwNzU4ZmU1ZWEwLi4yMmFhODdkM2RjIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8w MDJfcGdfZHVtcC5wbApAQCAtMTAxNSw2ICsxMDE1LDUyIEBAIG15ICV0ZXN0cyA9ICgKIAkJ fSwKIAl9LAogCisJJ0FMVEVSIFRBQkxFIE9OTFkgdGVzdF90YWJsZV90cGsgQUREIENPTlNU UkFJTlQgLi4uIFBSSU1BUlkgS0VZICguLi4sIC4uLiBXSVRIT1VUIE9WRVJMQVBTKScgPT4g eworCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxl X3RwayAoCisJCQkJCQkJY29sMSBpbnQ0cmFuZ2UsCisJCQkJCQkJY29sMiB0c3R6cmFuZ2Us CisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3Rwa19wa2V5IFBSSU1BUlkgS0VZCisJ CQkJCQkJCShjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAorCQlyZWdleHAgPT4g cXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3Rwa1xF IFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3Rwa19wa2V5IFBSSU1B UlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpO1xFCisJCQkveG0sCisJCWxp a2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJCSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJ CQlzZWN0aW9uX3Bvc3RfZGF0YSAgPT4gMSwKKwkJCWV4Y2x1ZGVfdGVzdF90YWJsZSA9PiAx LAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJb25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+ IDEsCisJCQlleGNsdWRlX2R1bXBfdGVzdF9zY2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9t ZWFzdXJlbWVudCAgICA9PiAxLAorCQl9LAorCX0sCisKKwknQUxURVIgVEFCTEUgT05MWSB0 ZXN0X3RhYmxlX3R1cSBBREQgQ09OU1RSQUlOVCAuLi4gVU5JUVVFICguLi4sIC4uLiBXSVRI T1VUIE9WRVJMQVBTKScgPT4geworCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRFIFRBQkxFIGR1 bXBfdGVzdC50ZXN0X3RhYmxlX3R1cSAoCisJCQkJCQkJY29sMSBpbnQ0cmFuZ2UsCisJCQkJ CQkJY29sMiB0c3R6cmFuZ2UsCisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1cV91 cSBVTklRVUUKKwkJCQkJCQkJKGNvbDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUykpOycsCisJ CXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVSIFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3Rf dGFibGVfdHVxXEUgXG5eXHMrCisJCQlcUUFERCBDT05TVFJBSU5UIHRlc3RfdGFibGVfdHVx X3VxIFVOSVFVRSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKTtcRQorCQkJL3htLAor CQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVtYV9ydW5z LAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUg PT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAg ICA9PiAxLAorCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1 bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJfSwKKwl9LAorCiAJJ0FMVEVSIFRBQkxFIChw YXJ0aXRpb25lZCkgQUREIENPTlNUUkFJTlQgLi4uIEZPUkVJR04gS0VZJyA9PiB7CiAJCWNy ZWF0ZV9vcmRlciA9PiA0LAogCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90 ZXN0LnRlc3RfdGFibGVfZmsgKApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwppbmRleCBiYWM5NGEzMzhjLi40ZmJmYzA3 NDYwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmlu L3BzcWwvZGVzY3JpYmUuYwpAQCAtMjM4NCw2ICsyMzg0LDEwIEBAIGRlc2NyaWJlT25lVGFi bGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQllbHNlCiAJCQkJYXBwZW5k UFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKKwkJ CWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cigmYnVmLCAiLCBjb24uY29udGVtcG9yYWwiKTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cigmYnVmLCAiLCBmYWxzZSBBUyBjb250ZW1wb3JhbCIpOwogCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkgICJcbkZST00gcGdfY2F0YWxvZy5wZ19jbGFz cyBjLCBwZ19jYXRhbG9nLnBnX2NsYXNzIGMyLCBwZ19jYXRhbG9nLnBnX2luZGV4IGlcbiIK IAkJCQkJCQkgICIgIExFRlQgSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnQgY29uIE9O IChjb25yZWxpZCA9IGkuaW5kcmVsaWQgQU5EIGNvbmluZGlkID0gaS5pbmRleHJlbGlkIEFO RCBjb250eXBlIElOICgncCcsJ3UnLCd4JykpXG4iCkBAIC0yNDA1LDggKzI0MDksMTIgQEAg ZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJ cHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAgICBcIiVzXCIiLAogCQkJCQkJCQkJICBQUWdl dHZhbHVlKHJlc3VsdCwgaSwgMCkpOwogCi0JCQkJCS8qIElmIGV4Y2x1c2lvbiBjb25zdHJh aW50LCBwcmludCB0aGUgY29uc3RyYWludGRlZiAqLwotCQkJCQlpZiAoc3RyY21wKFBRZ2V0 dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9PSAwKQorCQkJCQkvKgorCQkJCQkgKiBJZiBl eGNsdXNpb24gY29uc3RyYWludCBvciB0ZW1wb3JhbCBQSy9VTklRVUUgY29uc3RyYWludCwK KwkJCQkJICogcHJpbnQgdGhlIGNvbnN0cmFpbnRkZWYKKwkJCQkJICovCisJCQkJCWlmIChz dHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDcpLCAieCIpID09IDAgfHwKKwkJCQkJCQlz dHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGksIDEyKSwgInQiKSA9PSAwKQogCQkJCQl7CiAJ CQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiICVzIiwKIAkJCQkJCQkJCQkgIFBRZ2V0 dmFsdWUocmVzdWx0LCBpLCA2KSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKaW5kZXggNGQ4YmE4MWY5 MC4uYTYwNDU0NmY0OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaApAQCAtOTEsNiArOTEsNyBAQCBl eHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAjZGVmaW5l CUlOREVYX0NPTlNUUl9DUkVBVEVfSU5JVF9ERUZFUlJFRAkoMSA8PCAyKQogI2RlZmluZQlJ TkRFWF9DT05TVFJfQ1JFQVRFX1VQREFURV9JTkRFWAkoMSA8PCAzKQogI2RlZmluZQlJTkRF WF9DT05TVFJfQ1JFQVRFX1JFTU9WRV9PTERfREVQUwkoMSA8PCA0KQorI2RlZmluZQlJTkRF WF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMCQkoMSA8PCA1KQogCiBleHRlcm4gT2lkCWluZGV4 X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShSZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJ CQkJCQkJICAgT2lkIG9sZEluZGV4SWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWlu dC5oCmluZGV4IDliOWQ4ZmFmMzUuLjc4NmE5Y2E5MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfY29uc3RyYWludC5oCkBAIC0xMDcsNiArMTA3LDEyIEBAIENBVEFMT0cocGdfY29uc3Ry YWludCwyNjA2LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCS8qIEhhcyBhIGxvY2FsIGRlZmlu aXRpb24gYW5kIGNhbm5vdCBiZSBpbmhlcml0ZWQgKi8KIAlib29sCQljb25ub2luaGVyaXQ7 CiAKKwkvKgorCSAqIEZvciBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMsIHNpZ25pZmllcyB0 aGUgbGFzdCBjb2x1bW4gaXMgYSByYW5nZQorCSAqIGFuZCBzaG91bGQgdXNlIG92ZXJsYXBz IGluc3RlYWQgb2YgZXF1YWxzLgorCSAqLworCWJvb2wJCWNvbnRlbXBvcmFsOworCiAjaWZk ZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhl cmUgKi8KIAogCS8qCkBAIC0xNDYsNyArMTUyLDcgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50 LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQpCiAKIAkvKgogCSAqIElmIGFuIGV4Y2x1c2lv biBjb25zdHJhaW50LCB0aGUgT0lEcyBvZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9ycyBmb3IK LQkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludAorCSAqIGVhY2ggY29sdW1uIG9m IHRoZSBjb25zdHJhaW50LiBBbHNvIHNldCBmb3IgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLgog CSAqLwogCU9pZAkJCWNvbmV4Y2xvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKIApA QCAtMjM2LDYgKzI0Miw3IEBAIGV4dGVybiBPaWQJQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNv bnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwK IAkJCQkJCQkJICBpbnQgY29uSW5oQ291bnQsCiAJCQkJCQkJCSAgYm9vbCBjb25Ob0luaGVy aXQsCisJCQkJCQkJCSAgYm9vbCBjb25UZW1wb3JhbCwKIAkJCQkJCQkJICBib29sIGlzX2lu dGVybmFsKTsKIAogZXh0ZXJuIGJvb2wgQ29uc3RyYWludE5hbWVJc1VzZWQoQ29uc3RyYWlu dENhdGVnb3J5IGNvbkNhdCwgT2lkIG9iaklkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZGVmcmVtLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRl eCAxNzllYjk5MDFmLi5mMTA4ODZmNmNhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21t YW5kcy9kZWZyZW0uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAt NDQsNyArNDQsOCBAQCBleHRlcm4gY2hhciAqQ2hvb3NlUmVsYXRpb25OYW1lKGNvbnN0IGNo YXIgKm5hbWUxLCBjb25zdCBjaGFyICpuYW1lMiwKIGV4dGVybiBib29sIENoZWNrSW5kZXhD b21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJCQkJIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhv ZE5hbWUsCiAJCQkJCQkJCSBjb25zdCBMaXN0ICphdHRyaWJ1dGVMaXN0LAotCQkJCQkJCQkg Y29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcyk7CisJCQkJCQkJCSBjb25zdCBMaXN0ICpl eGNsdXNpb25PcE5hbWVzLAorCQkJCQkJCQkgYm9vbCBpc3RlbXBvcmFsKTsKIGV4dGVybiBP aWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5cGVfaWQsIE9pZCBhbV9pZCk7CiBleHRlcm4g T2lkCVJlc29sdmVPcENsYXNzKGNvbnN0IExpc3QgKm9wY2xhc3MsIE9pZCBhdHRyVHlwZSwK IAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsIE9pZCBhY2Nlc3NNZXRo b2RJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZmVmNGM3MTRiOC4uMDc0N2I1 NGIyNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMjY0MSw2ICsyNjQxLDkgQEAg dHlwZWRlZiBzdHJ1Y3QgQ29uc3RyYWludAogCU9pZAkJCW9sZF9wa3RhYmxlX29pZDsJLyog cGdfY29uc3RyYWludC5jb25mcmVsaWQgb2YgbXkgZm9ybWVyCiAJCQkJCQkJCQkgKiBzZWxm ICovCiAKKwkvKiBGaWVsZHMgdXNlZCBmb3IgdGVtcG9yYWwgUFJJTUFSWSBLRVkgYW5kIEZP UkVJR04gS0VZIGNvbnN0cmFpbnRzOiAqLworCU5vZGUJICAgKndpdGhvdXRfb3ZlcmxhcHM7 IC8qIFN0cmluZyBub2RlIG5hbWluZyByYW5nZSBjb2x1bW4gKi8KKwogCS8qIEZpZWxkcyB1 c2VkIGZvciBjb25zdHJhaW50cyB0aGF0IGFsbG93IGEgTk9UIFZBTElEIHNwZWNpZmljYXRp b24gKi8KIAlib29sCQlza2lwX3ZhbGlkYXRpb247CS8qIHNraXAgdmFsaWRhdGlvbiBvZiBl eGlzdGluZyByb3dzPyAqLwogCWJvb2wJCWluaXRpYWxseV92YWxpZDsJLyogbWFyayB0aGUg bmV3IGNvbnN0cmFpbnQgYXMgdmFsaWQ/ICovCkBAIC0zMjQyLDYgKzMyNDUsNyBAQCB0eXBl ZGVmIHN0cnVjdCBJbmRleFN0bXQKIAlib29sCQludWxsc19ub3RfZGlzdGluY3Q7IC8qIG51 bGwgdHJlYXRtZW50IGZvciBVTklRVUUgY29uc3RyYWludHMgKi8KIAlib29sCQlwcmltYXJ5 OwkJLyogaXMgaW5kZXggYSBwcmltYXJ5IGtleT8gKi8KIAlib29sCQlpc2NvbnN0cmFpbnQ7 CS8qIGlzIGl0IGZvciBhIHBrZXkvdW5pcXVlIGNvbnN0cmFpbnQ/ICovCisJYm9vbAkJaXN0 ZW1wb3JhbDsJCS8qIGlzIGl0IGZvciBhIHRlbXBvcmFsIHBrZXk/ICovCiAJYm9vbAkJZGVm ZXJyYWJsZTsJCS8qIGlzIHRoZSBjb25zdHJhaW50IERFRkVSUkFCTEU/ICovCiAJYm9vbAkJ aW5pdGRlZmVycmVkOwkvKiBpcyB0aGUgY29uc3RyYWludCBJTklUSUFMTFkgREVGRVJSRUQ/ ICovCiAJYm9vbAkJdHJhbnNmb3JtZWQ7CS8qIHRydWUgd2hlbiB0cmFuc2Zvcm1JbmRleFN0 bXQgaXMgZmluaXNoZWQgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAuLjVlMTI2ZGYwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0wLDAgKzEsMzU5IEBACistLSBUZXN0 cyBmb3IgV0lUSE9VVCBPVkVSTEFQUy4KKy0tCistLSBXZSBsZWF2ZSBiZWhpbmQgc2V2ZXJh bCB0YWJsZXMgdG8gdGVzdCBwZ19kdW1wIGV0YzoKKy0tIHRlbXBvcmFsX3JuZywgdGVtcG9y YWxfcm5nMiwKKy0tIHRlbXBvcmFsX2ZrX3JuZzJybmcuCistLQorLS0gdGVzdCBpbnB1dCBw YXJzZXIKKy0tCistLSBQSyB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBT OgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJXSVRI T1VUIgorTElORSAzOiAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkg KHZhbGlkX2F0IFdJVEhPVVQgT1YuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBQSyB3aXRoIGEgcmFuZ2UgY29s dW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Ju ZyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICByYW5n ZSBvciBQRVJJT0QgInZhbGlkX2F0IiBpbiBXSVRIT1VUIE9WRVJMQVBTIGRvZXMgbm90IGV4 aXN0CistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBpbiBXSVRIT1VUIE9WRVJM QVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUKKy0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEg cmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwktLSBTaW5jZSB3ZSBjYW4n dCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJh bmdlIGluc3RlYWQgb2YgYW4gaW50LgorCS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9u IHRlc3QgdXNlcyB0aGUgc2FtZSB0cmljay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworICAg ICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZyIKKyAgQ29sdW1uICB8ICAg VHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAg ICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0 c3JhbmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVt cG9yYWxfcm5nX3BrIiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3Ry YWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisgICAgICAgICAgICBw Z19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9pbmRleGRlZihj b25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAn dGVtcG9yYWxfcm5nX3BrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZ19w ayBPTiB0ZW1wb3JhbF9ybmcgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEgcm93KQor CistLSBQSyB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ybmcyICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBL RVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBv cmFsX3JuZzIKKyAgICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZzIiCisg IENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQg CistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tCisgaWQxICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAor IGlkMiAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyB2YWxp ZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCitJbmRleGVzOgor ICAgICJ0ZW1wb3JhbF9ybmcyX3BrIiBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsn OworICAgICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiso MSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZzJfcGsg T04gdGVtcG9yYWxfcm5nMiBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFsaWRfYXQpCisoMSBy b3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKKy0tIFBLIHdpdGggYSBjdXN0b20g cmFuZ2UgdHlwZToKK0NSRUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9 dGV4dCwgY29sbGF0aW9uPSJDIik7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmcyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcyIERST1AgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmcyX3BrOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmcyOworRFJPUCBUWVBFIHRl eHRyYW5nZTI7CistLSBVTklRVUUgd2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVS TEFQUzoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiV0lU SE9VVCIKK0xJTkUgMzogIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBVTklRVUUgd2l0aCBhIHJhbmdlIGNv bHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9y bmcyICgKKwlpZCBJTlRFR0VSLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgcmFuZ2Ug b3IgUEVSSU9EICJ2YWxpZF9hdCIgaW4gV0lUSE9VVCBPVkVSTEFQUyBkb2VzIG5vdCBleGlz dAorLS0gVU5JUVVFIHdpdGggYSBub24tcmFuZ2UgY29sdW1uOgorQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZzIgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUykKKyk7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGluIFdJVEhPVVQgT1ZFUkxB UFMgaXMgbm90IGEgcmFuZ2UgdHlwZQorLS0gVU5JUVVFIHdpdGggb25lIGNvbHVtbiBwbHVz IGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJLS0gU2luY2Ugd2Ug Y2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGlu dDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVz c2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzIKKyAg ICAgICAgICAgICBUYWJsZSAicHVibGljLnRlbXBvcmFsX3JuZzIiCisgIENvbHVtbiAgfCAg IFR5cGUgICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAg ICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwg dHNyYW5nZSAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRl bXBvcmFsX3JuZzJfdXEiIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWlu dCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfdXEnOworICAgICAgICAgIHBnX2dl dF9jb25zdHJhaW50ZGVmICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfdXEn OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZzJfdXEgT04gdGVtcG9y YWxfcm5nMiBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpCisoMSByb3cpCisKKy0tIFVOSVFV RSB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ybmczICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg dHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZDEsIGlk MiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmczCisg ICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmczIgorICBDb2x1bW4gIHwg ICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkMSAg ICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBpZDIgICAgICB8 IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgdmFsaWRfYXQgfCB0c3Jh bmdlICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorSW5kZXhlczoKKyAgICAidGVtcG9y YWxfcm5nM191cSIgVU5JUVVFIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nM191cSc7CisgICAgICAgICAgICAg cGdfZ2V0X2NvbnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgVU5JUVVFIChpZDEsIGlkMiwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKygxIHJvdykKKworU0VMRUNUIHBnX2dldF9pbmRleGRl Zihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfcm5nM191cSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfaW5kZXhkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIENSRUFURSBVTklRVUUg SU5ERVggdGVtcG9yYWxfcm5nM191cSBPTiB0ZW1wb3JhbF9ybmczIFVTSU5HIGdpc3QgKGlk MSwgaWQyLCB2YWxpZF9hdCkKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmcz OworLS0KKy0tIHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCitEUk9QIFRB QkxFIHRlbXBvcmFsX3JuZzsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxf cm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrCisJUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKKy0tIFBLIHdpdGggVVNJTkcgSU5ERVgg KG5vdCBwb3NzaWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFu Z2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwz X3VxIE9OIHRlbXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFC TEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBL RVkgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0VSUk9SOiAgImlkeF90ZW1wb3Jh bDNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQUREIENPTlNUUkFJTlQg dGVtcG9yYWwzX3BrCisgICAgICAgICAgICAgXgorREVUQUlMOiAgQ2Fubm90IGNyZWF0ZSBh IHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJhaW50IHVzaW5nIHN1Y2ggYW4gaW5kZXgu CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIFVOSVFVRSB3aXRoIFVTSU5HIElOREVYIChu b3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdl LAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191 cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSBVU0lO RyBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRVJST1I6ICAiaWR4X3RlbXBvcmFsM191cSIg aXMgbm90IGEgdW5pcXVlIGluZGV4CitMSU5FIDI6ICBBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bDNfdXEKKyAgICAgICAgICAgICBeCitERVRBSUw6ICBDYW5ub3QgY3JlYXRlIGEgcHJpbWFy eSBrZXkgb3IgdW5pcXVlIGNvbnN0cmFpbnQgdXNpbmcgc3VjaCBhbiBpbmRleC4KK0RST1Ag VEFCTEUgdGVtcG9yYWwzOworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgdGhlIFBLIGF0IHRo ZSBzYW1lIHRpbWUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZQor KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT0xVTU4gdmFsaWRfYXQgdHNyYW5n ZSwKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBB ZGQgcmFuZ2UgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBhdCB0aGUgc2FtZSB0aW1l CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IFBLIGluc2Vy dHMKKy0tCistLSBva2F5OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sx LDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAzJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMy0wMycs ICcyMDE4LTA0LTA0JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sy LDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs IE5VTEwpKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOwor RVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFsdWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0 cmFpbnQgInRlbXBvcmFsX3JuZ19wayIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0o WzEsMiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDow MCAyMDE4IikpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0o WzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDow MCAyMDE4IikpLgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoTlVMTCwgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworRVJST1I6ICBudWxsIHZhbHVl IGluIGNvbHVtbiAiaWQiIG9mIHJlbGF0aW9uICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIG5v dC1udWxsIGNvbnN0cmFpbnQKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChudWxs LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAx OCIpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIE5VTEwp OworRVJST1I6ICBudWxsIHZhbHVlIGluIGNvbHVtbiAidmFsaWRfYXQiIG9mIHJlbGF0aW9u ICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIG5vdC1udWxsIGNvbnN0cmFpbnQKK0RFVEFJTDog IEZhaWxpbmcgcm93IGNvbnRhaW5zIChbMyw0KSwgbnVsbCkuCistLQorLS0gdGVzdCBhIHJh bmdlIHdpdGggYm90aCBhIFBLIGFuZCBhIFVOSVFVRSBjb25zdHJhaW50CistLQorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsMyAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgZGF0ZXJh bmdlLAorICBpZDIgaW50OHJhbmdlLAorICBuYW1lIFRFWFQsCisgIENPTlNUUkFJTlQgdGVt cG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyks CisgIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VuaXEgVU5JUVVFIChpZDIsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCisgICgnWzIsMl0nLCBk YXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykK KzsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgY2hhbmdpbmcgdGhlIFBL J3MgZGVwZW5kZW5jaWVzCistLQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgRFJPUCBOT1QgTlVMTDsK K0VSUk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgaXMgaW4gYSBwcmltYXJ5IGtleQorQUxURVIg VEFCTEUgdGVtcG9yYWwzIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzdHpyYW5nZSBV U0lORyB0c3R6cmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworQUxU RVIgVEFCTEUgdGVtcG9yYWwzIFJFTkFNRSBDT0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhy dTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF90aHJ1OworRFJP UCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBQQVJUSVRJT04gQlkgZm9yIHJhbmdl cworLS0KKy0tIHRlbXBvcmFsIFBSSU1BUlkgS0VZOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAor ICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZ IExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRB QkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJ TiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAy LTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcy MDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFs aWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisg WzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFszLDQpIHwgWzAxLTAx LTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorKDMgcm93cykKKworU0VMRUNUICogRlJPTSB0 cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFsw Mi0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9N IHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0KKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygxIHJv dykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKy0tIHRlbXBvcmFsIFVO SVFVRToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDFd JywgJ1syLDJdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzMsM10nLCAnWzQsNF0nKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLAorICAoJ1szLDNd JywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3RocmVlJyk7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9h dDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIw MDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAzLTAxLTIwMDAp IHwgb25lCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IHRocmVlCisoMyBy b3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMi0wMS0y MDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKygy IHJvd3MpCisKK1NFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAg aWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEt MDEtMjAxMCkgfCB0aHJlZQorKDEgcm93KQorCitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVs ZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggNGRmOWQ4NTAz Yi4uNjZiNzVmYTEyZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9z Y2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCkBAIC0y OCw3ICsyOCw3IEBAIHRlc3Q6IHN0cmluZ3MgbWQ1IG51bWVyb2xvZ3kgcG9pbnQgbHNlZyBs aW5lIGJveCBwYXRoIHBvbHlnb24gY2lyY2xlIGRhdGUgdGltZSB0CiAjIGdlb21ldHJ5IGRl cGVuZHMgb24gcG9pbnQsIGxzZWcsIGxpbmUsIGJveCwgcGF0aCwgcG9seWdvbiwgY2lyY2xl CiAjIGhvcm9sb2d5IGRlcGVuZHMgb24gZGF0ZSwgdGltZSwgdGltZXR6LCB0aW1lc3RhbXAs IHRpbWVzdGFtcHR6LCBpbnRlcnZhbAogIyAtLS0tLS0tLS0tCi10ZXN0OiBnZW9tZXRyeSBo b3JvbG9neSB0c3R5cGVzIHJlZ2V4IHR5cGVfc2FuaXR5IG9wcl9zYW5pdHkgbWlzY19zYW5p dHkgY29tbWVudHMgZXhwcmVzc2lvbnMgdW5pY29kZSB4aWQgbXZjYwordGVzdDogZ2VvbWV0 cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBlX3Nhbml0eSBvcHJfc2FuaXR5IG1pc2Nf c2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNvZGUgeGlkIG12Y2Mgd2l0aG91dF9v dmVybGFwcwogCiAjIC0tLS0tLS0tLS0KICMgTG9hZCBodWdlIGFtb3VudHMgb2YgZGF0YQpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwg Yi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zYzMyMzY2MThjCi0tLSAvZGV2L251bGwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTAs MCArMSwyNjIgQEAKKy0tIFRlc3RzIGZvciBXSVRIT1VUIE9WRVJMQVBTLgorLS0KKy0tIFdl IGxlYXZlIGJlaGluZCBzZXZlcmFsIHRhYmxlcyB0byB0ZXN0IHBnX2R1bXAgZXRjOgorLS0g dGVtcG9yYWxfcm5nLCB0ZW1wb3JhbF9ybmcyLAorLS0gdGVtcG9yYWxfZmtfcm5nMnJuZy4K KworLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorCistLSBQSyB3aXRoIG5vIGNvbHVt bnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5n ICgKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBS SU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0 aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24ndCB0aGVyZToKKworQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworCistLSBQSyB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRBQkxFIHRl bXBvcmFsX3JuZyAoCisJaWQgSU5URUdFUiwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CisKKy0tIFBLIHdpdGggb25lIGNvbHVtbiBwbHVzIGEgcmFuZ2U6CisK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCS0tIFNpbmNlIHdlIGNhbid0IGRlcGVu ZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBhbiBpbnQ0cmFuZ2UgaW5z dGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJlZ3Jlc3Npb24gdGVzdCB1 c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nCitTRUxFQ1QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFt ZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRp ZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9y YWxfcm5nX3BrJzsKKworLS0gUEsgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6CitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50 NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcy X3BrIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykK Kyk7CitcZCB0ZW1wb3JhbF9ybmcyCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3Br JzsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfcGsnOworRFJPUCBU QUJMRSB0ZW1wb3JhbF9ybmcyOworCisKKy0tIFBLIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlw ZToKK0NSRUFURSBUWVBFIHRleHRyYW5nZTIgQVMgcmFuZ2UgKHN1YnR5cGU9dGV4dCwgY29s bGF0aW9uPSJDIik7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IHRleHRyYW5nZTIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcy X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ybmcyIERST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcy X3BrOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmcyOworRFJPUCBUWVBFIHRleHRyYW5nZTI7 CisKKy0tIFVOSVFVRSB3aXRoIG5vIGNvbHVtbnMganVzdCBXSVRIT1VUIE9WRVJMQVBTOgor CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKKworLS0gVU5JUVVFIHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRo YXQgaXNuJ3QgdGhlcmU6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZCBJ TlRFR0VSLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKGlkLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gVU5JUVVFIHdpdGggYSBub24tcmFu Z2UgY29sdW1uOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQgSU5URUdF UiwKKwl2YWxpZF9hdCBURVhULAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gVU5JUVVFIHdp dGggb25lIGNvbHVtbiBwbHVzIGEgcmFuZ2U6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9y bmcyICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dpc3Qg aGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdlIGluc3RlYWQgb2YgYW4gaW50LgorCS0tIChU aGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRlc3QgdXNlcyB0aGUgc2FtZSB0cmljay4pCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor XGQgdGVtcG9yYWxfcm5nMgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJP TSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CitT RUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3VxJzsKKworLS0gVU5JUVVF IHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzMgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nM191cSBVTklRVUUgKGlkMSwgaWQy LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzMKK1NF TEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRl Zihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfcm5nM191cSc7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzM7CisKKy0t CistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorCitEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKKworLS0gUEsgd2l0aCBVU0lORyBJTkRFWCAo bm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5n ZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVYIGlkeF90ZW1wb3JhbDNf dXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsKKwlQUklNQVJZIEtF WSBVU0lORyBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7 CisKKy0tIFVOSVFVRSB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JFQVRF IFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UK Kyk7CitDUkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcg Z2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSBVU0lORyBJTkRFWCBpZHhfdGVtcG9yYWwz X3VxOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5k IHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlp ZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZh bGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVt cG9yYWwzOworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCBVTklRVUUgY29uc3RyYWludCBh dCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFu Z2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRz cmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisJVU5JUVVFIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0K Ky0tIHRlc3QgUEsgaW5zZXJ0cworLS0KKworLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0w Mi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRz cmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w MS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CisKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo TlVMTCwgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAxLTA1JykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1szLDNdJywgTlVMTCk7CisKKy0tCistLSB0ZXN0 IGEgcmFuZ2Ugd2l0aCBib3RoIGEgUEsgYW5kIGEgVU5JUVVFIGNvbnN0cmFpbnQKKy0tCisK K0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0 IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFtZSBURVhULAorICBDT05TVFJB SU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVOSVFVRSAoaWQyLCB2YWxp ZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQs IHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDddJywgJ2ZvbycpLAorICAoJ1sy LDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywg J2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3QgY2hhbmdp bmcgdGhlIFBLJ3MgZGVwZW5kZW5jaWVzCistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwz ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworCitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERS T1AgTk9UIE5VTEw7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlk X2F0IFRZUEUgdHN0enJhbmdlIFVTSU5HIHRzdHpyYW5nZShsb3dlcih2YWxpZF9hdCksIHVw cGVyKHZhbGlkX2F0KSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgUkVOQU1FIENPTFVNTiB2 YWxpZF9hdCBUTyB2YWxpZF90aHJ1OworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09M VU1OIHZhbGlkX3RocnU7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0tIHRlc3Qg UEFSVElUSU9OIEJZIGZvciByYW5nZXMKKy0tCisKKy0tIHRlbXBvcmFsIFBSSU1BUlkgS0VZ OgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJpdGlvbmVkX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEg cGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywz XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1Qg KiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkOworCistLSB0ZW1wb3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFu Z2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZ IExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3Bh cnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRB QkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJ TiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAy LTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcy MDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0w MScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMSBP UkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwotLSAKMi4yNS4x Cgo= --------------WEIT9zjCxFDg0fV7Xy9sQj0U Content-Type: text/x-patch; charset=UTF-8; name="v15-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v15-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSA2MTMzMGUyNWE2MDdlNGU1YTkyZWVlZTU2NjIzMzBkZjgwNjc4NDJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNSAyLzVdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwg IDQyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCA3NjQgKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jICAgICAgICAgICB8IDM0MSArKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAyNCArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9yZWdyZXNz L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8IDQ2MSArKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgNDYyICsr KysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAxODE3IGluc2VydGlvbnMoKyksIDM0NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCA4N2Yw YWFiMTNiLi5mZWE4ZmMzYzdhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK QEAgLTgxLDcgKzgxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9S QVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVF IFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4g V0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmlu ZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVy dmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVY Q0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0 aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBb IFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVw bGFjZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVO Q0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywg UEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZh bDwvcmVwbGFjZWFibGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9E IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVw bGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1B VENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xhc3M9InBhcmFtZXRl ciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNl YWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZ IERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTQ5LDggKzExNDksOCBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3Fs LWNyZWF0ZXRhYmxlLXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPlJF RkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBs YWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48 L3JlcGxhY2VhYmxlPiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBb IE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxf YWN0aW9uPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwv dGVybT4KIAotICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSAp Ci0gICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFi bGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRlcm0+PGxpdGVyYWw+ Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApCisgICAg UkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3Jl cGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVt bjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkgXQogICAg IFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVw bGFjZWFibGU+IF0KICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBE QVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248 L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPgpAQCAtMTE2MSwxMSArMTE2MSwyOSBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEg Zm9yZWlnbiBrZXkgY29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBn cm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5 CiAgICAgICBjb250YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJl bmNlZAotICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRh YmxlLiAgSWYgdGhlIDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93 IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLgorICAgICAgSWYgdGhlIDxyZXBsYWNlYWJsZQog ICAgICAgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gbGlzdCBp cyBvbWl0dGVkLCB0aGUKICAgICAgIHByaW1hcnkga2V5IG9mIHRoZSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPgogICAgICAgaXMgdXNl ZC4gIFRoZSByZWZlcmVuY2VkIGNvbHVtbnMgbXVzdCBiZSB0aGUgY29sdW1ucyBvZiBhIG5v bi1kZWZlcnJhYmxlCi0gICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29uc3RyYWludCBp biB0aGUgcmVmZXJlbmNlZCB0YWJsZS4gIFRoZSB1c2VyCisgICAgICB1bmlxdWUgb3IgcHJp bWFyeSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgPC9w YXJhPgorCisgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtl ZCB3aXRoIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICBpdCBtdXN0IGJlIGEg cGVyaW9kIG9yIHJhbmdlIGNvbHVtbiwgYW5kIHRoZSByZWZlcmVuY2VkIHRhYmxlCisgICAg ICBtdXN0IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgIFRoZSBub24tPGxp dGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5vcm1hbGx5Cisg ICAgICAoYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0pLAorICAgICAg YnV0IHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVtbiBpcyBub3QgY29tcGFy ZWQgZm9yIGVxdWFsaXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29uc3RyYWludCBpcyBjb25z aWRlcmVkIHNhdGlzZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5jZWQgdGFibGUgaGFzIG1h dGNoaW5nIHJlY29yZHMgd2hvc2UgY29tYmluZWQgcmFuZ2VzIGNvbXBsZXRlbHkgY292ZXIK KyAgICAgIHRoZSByZWZlcmVuY2luZyByZWNvcmQuCisgICAgICBJbiBvdGhlciB3b3Jkcywg dGhlIHJlZmVyZW5jZSBtdXN0IGhhdmUgYSByZWZlcmVudCBmb3IgaXRzIGVudGlyZSBkdXJh dGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIHVzZXIKICAg ICAgIG11c3QgaGF2ZSA8bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBwZXJtaXNzaW9u IG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlCiAgICAgICAoZWl0aGVyIHRoZSB3aG9sZSB0YWJs ZSwgb3IgdGhlIHNwZWNpZmljIHJlZmVyZW5jZWQgY29sdW1ucykuICBUaGUKICAgICAgIGFk ZGl0aW9uIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCByZXF1aXJlcyBhCkBAIC0xMjM3 LDcgKzEyNTUsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDxw YXJhPgogICAgICAgICAgIERlbGV0ZSBhbnkgcm93cyByZWZlcmVuY2luZyB0aGUgZGVsZXRl ZCByb3csIG9yIHVwZGF0ZSB0aGUKICAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlZmVyZW5j aW5nIGNvbHVtbihzKSB0byB0aGUgbmV3IHZhbHVlcyBvZiB0aGUKLSAgICAgICAgICByZWZl cmVuY2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICByZWZlcmVuY2VkIGNv bHVtbnMsIHJlc3BlY3RpdmVseS4gSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwKKyAgICAg ICAgICB0aGUgZGVsZXRlIHdpbGwgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRl cmFsPiBzZW1hbnRpY3MKKyAgICAgICAgICB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0 aGUgYm91bmRzIG9mIHRoZSByZWZlcmVuY2VkIHJvdworICAgICAgICAgIGJlaW5nIGRlbGV0 ZWQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92 YXJsaXN0ZW50cnk+CkBAIC0xMjUwLDYgKzEyNzEsMTIgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICAgICAgICByZWZlcmVuY2luZyBjb2x1bW5zLCB0byBudWxsLiBBIHN1 YnNldCBvZiBjb2x1bW5zIGNhbiBvbmx5IGJlCiAgICAgICAgICAgc3BlY2lmaWVkIGZvciA8 bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICA8L3BhcmE+ CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBr ZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9SCisgICAgICAgICAgUE9SVElP TiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUgZWZmZWN0IHRvIHRo ZSBib3VuZHMKKyAgICAgICAgICBvZiB0aGUgcmVmZXJlbmNlZCByb3cuCisgICAgICAgICA8 L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAK QEAgLTEyNjIsNiArMTI4OSw5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg ICAgICAgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xp dGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICAgKFRoZXJlIG11c3QgYmUgYSByb3cgaW4gdGhl IHJlZmVyZW5jZWQgdGFibGUgbWF0Y2hpbmcgdGhlIGRlZmF1bHQKICAgICAgICAgICB2YWx1 ZXMsIGlmIHRoZXkgYXJlIG5vdCBudWxsLCBvciB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbC4p CisgICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxs IHVzZSA8bGl0ZXJhbD5GT1IgUE9SVElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1h bnRpY3MgdG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBvZiB0aGUKKyAg ICAgICAgICByZWZlcmVuY2VkIHJvdy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggYmEyYTg5MTRlNC4uZTAxZjY0YWUzNCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKQEAgLTM4MCwxNyArMzgwLDIwIEBAIHN0YXRpYyBpbnQJdHJhbnNmb3Jt Q29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogCQkJCQkJCQkJaW50 MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzKTsKIHN0YXRpYyBpbnQJdHJhbnNmb3JtRmtl eUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkJ CQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCisJCQkJCQkJCQkgICBOb2RlICoqcGtfcGVyaW9k LAogCQkJCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJ CQkJICAgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVyaW9kYXR0dHlwaWRzLAogCQkJ CQkJCQkJICAgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIE9pZAl0cmFuc2Zvcm1Ga2V5Q2hl Y2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkJCWludCBudW1hdHRycywgaW50MTYg KmF0dG51bXMsCisJCQkJCQkJCQlib29sIGlzX3RlbXBvcmFsLCBpbnQxNiBwZXJpb2RhdHRu dW0sCiAJCQkJCQkJCQlPaWQgKm9wY2xhc3Nlcyk7CiBzdGF0aWMgdm9pZCBjaGVja0ZrZXlQ ZXJtaXNzaW9ucyhSZWxhdGlvbiByZWwsIGludDE2ICphdHRudW1zLCBpbnQgbmF0dHMpOwog c3RhdGljIENvZXJjaW9uUGF0aFR5cGUgZmluZEZrZXlDYXN0KE9pZCB0YXJnZXRUeXBlSWQs IE9pZCBzb3VyY2VUeXBlSWQsCiAJCQkJCQkJCQkgT2lkICpmdW5jaWQpOwogc3RhdGljIHZv aWQgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQkJCQkJ CQkJCSBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBrcmVsLAotCQkJCQkJCQkJCSBPaWQgcGtp bmRPaWQsIE9pZCBjb25zdHJhaW50T2lkKTsKKwkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBP aWQgY29uc3RyYWludE9pZCwgYm9vbCB0ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCBBVENvbnRy b2xsZXIoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwKIAkJCQkJCSBSZWxhdGlvbiByZWws IExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKQEAgLTUwMCw3ICs1MDMsOCBA QCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3 cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYQogCQkJCQkJCQkJCQlPaWQgKnBmZXFvcGVy YXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJ CQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJ CQkJCQlib29sIG9sZF9jaGVja19vaywKLQkJCQkJCQkJCQkJT2lkIHBhcmVudERlbFRyaWdn ZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCQkJT2lkIHBhcmVudERlbFRy aWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJCQkJCQlib29sIGlzX3RlbXBv cmFsKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51 bWZrcywgY29uc3QgaW50MTYgKmZrYXR0bnVtcywKIAkJCQkJCQkJCQkgaW50IG51bWZrc2V0 Y29scywgY29uc3QgaW50MTYgKmZrc2V0Y29sc2F0dG51bXMsCiAJCQkJCQkJCQkJIExpc3Qg KmZrc2V0Y29scyk7CkBAIC01MTAsNyArNTE0LDkgQEAgc3RhdGljIHZvaWQgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LAogCQkJCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9p ZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2 ICpma2RlbHNldGNvbHMsCiAJCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywgTE9DS01PREUg bG9ja21vZGUsCi0JCQkJCQkJCQlPaWQgcGFyZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVw ZFRyaWdnZXIpOworCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRV cGRUcmlnZ2VyLAorCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCk7CisKIHN0YXRpYyB2b2lk IENsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBh cmVudFJlbCwKIAkJCQkJCQkJCSAgIFJlbGF0aW9uIHBhcnRpdGlvblJlbCk7CiBzdGF0aWMg dm9pZCBDbG9uZUZrUmVmZXJlbmNlZChSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBh cnRpdGlvblJlbCk7CkBAIC01NDIsNiArNTQ4LDEyIEBAIHN0YXRpYyB2b2lkIEdldEZvcmVp Z25LZXlDaGVja1RyaWdnZXJzKFJlbGF0aW9uIHRyaWdyZWwsCiAJCQkJCQkJCQkgICBPaWQg Y29ub2lkLCBPaWQgY29uZnJlbGlkLCBPaWQgY29ucmVsaWQsCiAJCQkJCQkJCQkgICBPaWQg Kmluc2VydFRyaWdnZXJPaWQsCiAJCQkJCQkJCQkgICBPaWQgKnVwZGF0ZVRyaWdnZXJPaWQp Oworc3RhdGljIHZvaWQgRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsCisJCQkJCUFsdGVyZWRUYWJsZUluZm8gKnRhYiwgaW50IGksIGludDE2 ICpma2F0dG51bSwKKwkJCQkJYm9vbCAqb2xkX2NoZWNrX29rLCBMaXN0Q2VsbCAqKm9sZF9w ZmVxb3BfaXRlbSwKKwkJCQkJT2lkIHBrdHlwZSwgT2lkIGZrdHlwZSwgT2lkIG9wY2xhc3Ms CisJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGJvb2wgZm9yX292ZXJsYXBzLAorCQkJCQlPaWQg KnBmZXFvcE91dCwgT2lkICpwcGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0KTsKIHN0YXRpYyB2 b2lkIEFURXhlY0Ryb3BDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29u c3RyTmFtZSwKIAkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgYm9vbCByZWN1cnNl LAogCQkJCQkJCQkgYm9vbCBtaXNzaW5nX29rLCBMT0NLTU9ERSBsb2NrbW9kZSk7CkBAIC01 ODIyLDcgKzU4MzQsOCBAQCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNl dHJlZSwgTGlzdCAqKndxdWV1ZSwgTE9DS01PREUgbG9ja21vZGUsCiAKIAkJCQl2YWxpZGF0 ZUZvcmVpZ25LZXlDb25zdHJhaW50KGZrY29uc3RyYWludC0+Y29ubmFtZSwgcmVsLCByZWZy ZWwsCiAJCQkJCQkJCQkJCSBjb24tPnJlZmluZGlkLAotCQkJCQkJCQkJCQkgY29uLT5jb25p ZCk7CisJCQkJCQkJCQkJCSBjb24tPmNvbmlkLAorCQkJCQkJCQkJCQkgY29uLT5jb250ZW1w b3JhbCk7CiAKIAkJCQkvKgogCQkJCSAqIE5vIG5lZWQgdG8gbWFyayB0aGUgY29uc3RyYWlu dCByb3cgYXMgdmFsaWRhdGVkLCB3ZSBkaWQKQEAgLTk0MzgsNiArOTQ1MSwxMSBAQCBBVEFk ZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCU9pZAkJCXBwZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tF WVNdID0gezB9OwogCU9pZAkJCWZmZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0gezB9 OwogCWludDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNdID0gezB9OworCWJvb2wJ CWlzX3RlbXBvcmFsID0gKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpOworCWlu dDE2CQlwa3BlcmlvZGF0dG51bXNbMV0gPSB7MH07CisJaW50MTYJCWZrcGVyaW9kYXR0bnVt c1sxXSA9IHswfTsKKwlPaWQJCQlwa3BlcmlvZHR5cG9pZHNbMV0gPSB7MH07CisJT2lkCQkJ ZmtwZXJpb2R0eXBvaWRzWzFdID0gezB9OwogCWludAkJCWk7CiAJaW50CQkJbnVtZmtzLAog CQkJCW51bXBrcywKQEAgLTk1MzIsNiArOTU1MCwxMCBAQCBBVEFkZEZvcmVpZ25LZXlDb25z dHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCW51bWZrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVs aWQocmVsKSwKIAkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPmZrX2F0dHJzLAogCQkJCQkJCQkJ IGZrYXR0bnVtLCBma3R5cG9pZCk7CisJaWYgKGlzX3RlbXBvcmFsKQorCQl0cmFuc2Zvcm1D b2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJCQkJCQkJICBsaXN0X21h a2UxKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKSwKKwkJCQkJCQkgIGZrcGVyaW9kYXR0bnVt cywgZmtwZXJpb2R0eXBvaWRzKTsKIAogCW51bWZrZGVsc2V0Y29scyA9IHRyYW5zZm9ybUNv bHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCQkJICBma2Nv bnN0cmFpbnQtPmZrX2RlbF9zZXRfY29scywKQEAgLTk1NTAsNyArOTU3Miw5IEBAIEFUQWRk Rm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsCiAJewogCQludW1wa3MgPSB0cmFuc2Zvcm1Ga2V5R2V0UHJp bWFyeUtleShwa3JlbCwgJmluZGV4T2lkLAogCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5w a19hdHRycywKKwkJCQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfcGVyaW9kLAogCQkJCQkJ CQkJCQlwa2F0dG51bSwgcGt0eXBvaWQsCisJCQkJCQkJCQkJCXBrcGVyaW9kYXR0bnVtcywg cGtwZXJpb2R0eXBvaWRzLAogCQkJCQkJCQkJCQlvcGNsYXNzZXMpOwogCX0KIAllbHNlCkBA IC05NTU4LDggKzk1ODIsMTQgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbnVtcGtz ID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChwa3JlbCksCiAJ CQkJCQkJCQkJIGZrY29uc3RyYWludC0+cGtfYXR0cnMsCiAJCQkJCQkJCQkJIHBrYXR0bnVt LCBwa3R5cG9pZCk7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCXRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAorCQkJCQkJCQkJbGlzdF9tYWtlMShm a2NvbnN0cmFpbnQtPnBrX3BlcmlvZCksCisJCQkJCQkJCQlwa3BlcmlvZGF0dG51bXMsIHBr cGVyaW9kdHlwb2lkcyk7CisKIAkJLyogTG9vayBmb3IgYW4gaW5kZXggbWF0Y2hpbmcgdGhl IGNvbHVtbiBsaXN0ICovCiAJCWluZGV4T2lkID0gdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMo cGtyZWwsIG51bXBrcywgcGthdHRudW0sCisJCQkJCQkJCQkJICAgaXNfdGVtcG9yYWwsIHBr cGVyaW9kYXR0bnVtc1swXSwKIAkJCQkJCQkJCQkgICBvcGNsYXNzZXMpOwogCX0KIApAQCAt OTYxOCwxODcgKzk2NDgsMjcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAogCWZvciAo aSA9IDA7IGkgPCBudW1wa3M7IGkrKykKIAl7Ci0JCU9pZAkJCXBrdHlwZSA9IHBrdHlwb2lk W2ldOwotCQlPaWQJCQlma3R5cGUgPSBma3R5cG9pZFtpXTsKLQkJT2lkCQkJZmt0eXBlZDsK LQkJSGVhcFR1cGxlCWNsYV9odDsKLQkJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7Ci0JCU9p ZAkJCWFtaWQ7Ci0JCU9pZAkJCW9wZmFtaWx5OwotCQlPaWQJCQlvcGNpbnR5cGU7Ci0JCU9p ZAkJCXBmZXFvcDsKLQkJT2lkCQkJcHBlcW9wOwotCQlPaWQJCQlmZmVxb3A7Ci0JCWludDE2 CQllcXN0cmF0ZWd5OwotCQlPaWQJCQlwZmVxb3BfcmlnaHQ7Ci0KLQkJLyogV2UgbmVlZCBz ZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KLQkJY2xhX2h0 ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNzZXNb aV0pKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYV9odCkpCi0JCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3Nlc1tpXSk7 Ci0JCWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsKLQkJ YW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsKLQkJb3BmYW1pbHkgPSBjbGFfdHVwLT5vcGNm YW1pbHk7Ci0JCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKLQkJUmVsZWFzZVN5 c0NhY2hlKGNsYV9odCk7Ci0KLQkJLyoKLQkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJy ZW50bHkgdGhpcyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgotCQkgKiBpbmRleCBB TXMgc3VwcG9ydCB1bmlxdWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIg dHlwZXMKLQkJICogb2YgdW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRl cm1pbmUgd2hpY2ggb3BlcmF0b3IKLQkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5 LiAgKElzIGl0IHJlYXNvbmFibGUgdG8gaW5zaXN0IHRoYXQKLQkJICogZXZlcnkgc3VjaCBp bmRleCBBTSB1c2UgYnRyZWUncyBudW1iZXIgZm9yIGVxdWFsaXR5PykKLQkJICovCi0JCWlm IChhbWlkICE9IEJUUkVFX0FNX09JRCkKLQkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBp bmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24ga2V5cyIpOwotCQllcXN0cmF0ZWd5 ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwotCi0JCS8qCi0JCSAqIFRoZXJlIGhhZCBiZXR0 ZXIgYmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCi0JCSAq IFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29ucy4KLQkJICovCi0JCXBwZXFv cCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBl LAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCi0JCWlmICghT2lkSXNWYWxpZChwcGVxb3Ap KQotCQkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFt aWx5ICV1IiwKLQkJCQkgZXFzdHJhdGVneSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFt aWx5KTsKLQotCQkvKgotCQkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQg dGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKLQkJICogd2Ugc2hvdWxkIGxvb2sg dGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCi0JCSAqLwotCQlma3R5cGVkID0gZ2V0QmFzZVR5 cGUoZmt0eXBlKTsKLQotCQlwZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5 LCBvcGNpbnR5cGUsIGZrdHlwZWQsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCWlmIChP aWRJc1ZhbGlkKHBmZXFvcCkpCi0JCXsKLQkJCXBmZXFvcF9yaWdodCA9IGZrdHlwZWQ7Ci0J CQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5 cGVkLAotCQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQkJCXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7 Ci0JCQlmZmVxb3AgPSBJbnZhbGlkT2lkOwotCQl9Ci0KLQkJaWYgKCEoT2lkSXNWYWxpZChw ZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCi0JCXsKLQkJCS8qCi0JCQkgKiBPdGhl cndpc2UsIGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJvbSB0aGUgRksgdHlwZSB0byB0 aGUKLQkJCSAqIG9wY2ludHlwZSwgYW5kIGlmIGZvdW5kLCB1c2UgdGhlIHByaW1hcnkgZXF1 YWxpdHkgb3BlcmF0b3IuCi0JCQkgKiBUaGlzIGlzIGEgYml0IHRyaWNreSBiZWNhdXNlIG9w Y2ludHlwZSBtaWdodCBiZSBhIHBvbHltb3JwaGljCi0JCQkgKiB0eXBlIHN1Y2ggYXMgQU5Z QVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRlc3QgaXMKLQkJCSAqIHdo ZXRoZXIgdGhlIHR3byBhY3R1YWwgY29sdW1uIHR5cGVzIGNhbiBiZSBjb25jdXJyZW50bHkg Y2FzdCB0bwotCQkJICogdGhhdCB0eXBlLiAgKE90aGVyd2lzZSwgd2UnZCBmYWlsIHRvIHJl amVjdCBjb21iaW5hdGlvbnMgc3VjaAotCQkJICogYXMgaW50W10gYW5kIHBvaW50W10uKQot CQkJICovCi0JCQlPaWQJCQlpbnB1dF90eXBlaWRzWzJdOwotCQkJT2lkCQkJdGFyZ2V0X3R5 cGVpZHNbMl07Ci0KLQkJCWlucHV0X3R5cGVpZHNbMF0gPSBwa3R5cGU7Ci0JCQlpbnB1dF90 eXBlaWRzWzFdID0gZmt0eXBlOwotCQkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNpbnR5cGU7 Ci0JCQl0YXJnZXRfdHlwZWlkc1sxXSA9IG9wY2ludHlwZTsKLQkJCWlmIChjYW5fY29lcmNl X3R5cGUoMiwgaW5wdXRfdHlwZWlkcywgdGFyZ2V0X3R5cGVpZHMsCi0JCQkJCQkJCUNPRVJD SU9OX0lNUExJQ0lUKSkKLQkJCXsKLQkJCQlwZmVxb3AgPSBmZmVxb3AgPSBwcGVxb3A7Ci0J CQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOwotCQkJfQotCQl9Ci0KLQkJaWYgKCEoT2lk SXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCi0JCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJ IGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIgY2Fubm90IGJlIGltcGxl bWVudGVkIiwKLQkJCQkJCQlma2NvbnN0cmFpbnQtPmNvbm5hbWUpLAotCQkJCQkgZXJyZGV0 YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCi0JCQkJCQkJICAgImFyZSBv ZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4iLAotCQkJCQkJCSAgIHN0clZhbChs aXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgc3RyVmFs KGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtfYXR0cnMsIGkpKSwKLQkJCQkJCQkgICBmb3Jt YXRfdHlwZV9iZShma3R5cGUpLAotCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkp KSk7Ci0KLQkJaWYgKG9sZF9jaGVja19vaykKLQkJewotCQkJLyoKLQkJCSAqIFdoZW4gYSBw ZmVxb3AgY2hhbmdlcywgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIFdlIGNvdWxkCi0J CQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0 bGUgY29tcGxleGl0eQotCQkJICogd2l0aG91dCBhbnkgY29uY3JldGUgYmVuZWZpdCBmb3Ig Y29yZSB0eXBlcy4gIFdlIG5lZWQgbm90Ci0JCQkgKiBhc3Nlc3MgcHBlcW9wIG9yIGZmZXFv cCwgd2hpY2ggUklfSW5pdGlhbF9DaGVjaygpIGRvZXMgbm90IHVzZS4KLQkJCSAqLwotCQkJ b2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKG9sZF9wZmVxb3BfaXRlbSkp OwotCQkJb2xkX3BmZXFvcF9pdGVtID0gbG5leHQoZmtjb25zdHJhaW50LT5vbGRfY29ucGZl cW9wLAotCQkJCQkJCQkJb2xkX3BmZXFvcF9pdGVtKTsKLQkJfQotCQlpZiAob2xkX2NoZWNr X29rKQotCQl7Ci0JCQlPaWQJCQlvbGRfZmt0eXBlOwotCQkJT2lkCQkJbmV3X2ZrdHlwZTsK LQkJCUNvZXJjaW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOwotCQkJQ29lcmNpb25QYXRoVHlw ZSBuZXdfcGF0aHR5cGU7Ci0JCQlPaWQJCQlvbGRfY2FzdGZ1bmM7Ci0JCQlPaWQJCQluZXdf Y2FzdGZ1bmM7Ci0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0 YWItPm9sZERlc2MsCi0JCQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOwotCi0JCQkv KgotCQkJICogSWRlbnRpZnkgY29lcmNpb24gcGF0aHdheXMgZnJvbSBlYWNoIG9mIHRoZSBv bGQgYW5kIG5ldyBGSy1zaWRlCi0JCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChm b3JlaWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFvcC4KLQkJCSAqIFdlIG1heSBhc3N1 bWUgdGhhdCBwZ19jb25zdHJhaW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCi0JCQkgKi8K LQkJCW9sZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKLQkJCW5ld19ma3R5cGUgPSBma3R5 cGU7Ci0JCQlvbGRfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBvbGRf Zmt0eXBlLAotCQkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOwotCQkJbmV3X3BhdGh0eXBlID0g ZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgbmV3X2ZrdHlwZSwKLQkJCQkJCQkJCQkmbmV3 X2Nhc3RmdW5jKTsKLQotCQkJLyoKLQkJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3Qg ZnJvbSB0aGUgRksgY29sdW1uIHRvIGl0cyBwZmVxb3AKLQkJCSAqIG9wZXJhbmQsIHJldmFs aWRhdGUgdGhlIGNvbnN0cmFpbnQuICBGb3IgdGhpcyBldmFsdWF0aW9uLCBhCi0JCQkgKiBi aW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAg V2hpbGUKLQkJCSAqIHR5cGUgaW1wbGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQg Y2FzdHMgd2l0aCBhbiBleWUKLQkJCSAqIHRvd2FyZCBjb25zaXN0ZW5jeSBvZiBvcGVyYXRp b25zIGxpa2UgZXF1YWxpdHksIHdlIGNhbm5vdAotCQkJICogYXNzdW1lIGhlcmUgdGhhdCB0 aGV5IGhhdmUgZG9uZSBzby4KLQkJCSAqCi0JCQkgKiBBIGZ1bmN0aW9uIHdpdGggYSBwb2x5 bW9ycGhpYyBhcmd1bWVudCBjb3VsZCBjaGFuZ2UgYmVoYXZpb3IKLQkJCSAqIGFyYml0cmFy aWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwK LQkJCSAqIHdoZW4gdGhlIGNhc3QgZGVzdGluYXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9u bHkgYXZvaWQKLQkJCSAqIHJldmFsaWRhdGlvbiBpZiB0aGUgaW5wdXQgdHlwZSBoYXMgbm90 IGNoYW5nZWQgYXQgYWxsLiAgR2l2ZW4KLQkJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBl cyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAotCQkJICogcHJldmVu dHMgbm8gd291bGQtYmUgb3B0aW1pemF0aW9ucy4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgY2Fz dCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4K LQkJCSAqIHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRoZSB1 bmlxdWUgaW5kZXguCi0JCQkgKiBOZWNlc3NhcmlseSwgdGhlIHByaW1hcnkga2V5IGNvbHVt biBtdXN0IHRoZW4gYmUgb2YgdGhlIGRvbWFpbgotCQkJICogdHlwZS4gIFNpbmNlIHRoZSBj b25zdHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCi0JCQkgKiB0 aGUgZm9yZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUg YW5kIGluCi0JCQkgKiB0dXJuIGNvbmZvcm0gdG8gdGhlIGRvbWFpbi4gIENvbnNlcXVlbnRs eSwgd2UgbmVlZCBub3QgdHJlYXQKLQkJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCi0J CQkgKgotCQkJICogU2luY2Ugd2UgcmVxdWlyZSB0aGF0IGFsbCBjb2xsYXRpb25zIHNoYXJl IHRoZSBzYW1lIG5vdGlvbiBvZgotCQkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJl Y2F1c2UgdGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQotCQkJICogZXF1YWxpdHkpLCB3ZSBk b24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJlLgotCQkJICoKLQkJCSAqIFdlIG5lZWQgbm90 IGRpcmVjdGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQotCQkJ ICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5k ZXggY29sdW1uLAotCQkJICogYW5kIHJpX3RyaWdnZXJzLmMgd2lsbCBvbmx5IGRlYWwgd2l0 aCBQSyBkYXR1bXMgaW4gdGVybXMgb2YKLQkJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdp bmcgdGhlIG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgotCQkJICovCi0JCQlvbGRf Y2hlY2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgotCQkJCQkJCW5l d19jYXN0ZnVuYyA9PSBvbGRfY2FzdGZ1bmMgJiYKLQkJCQkJCQkoIUlzUG9seW1vcnBoaWNU eXBlKHBmZXFvcF9yaWdodCkgfHwKLQkJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0eXBl KSk7Ci0JCX0KKwkJRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlma2NvbnN0cmFp bnQsIHRhYiwgaSwgZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3Bf aXRlbSwKKwkJCQlwa3R5cG9pZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwKKwkJ CQlpc190ZW1wb3JhbCwgZmFsc2UsCisJCQkJJnBmZXFvcGVyYXRvcnNbaV0sICZwcGVxb3Bl cmF0b3JzW2ldLCAmZmZlcW9wZXJhdG9yc1tpXSk7CisJfQorCWlmIChpc190ZW1wb3JhbCkg eworCQlwa2F0dG51bVtudW1wa3NdID0gcGtwZXJpb2RhdHRudW1zWzBdOworCQlwa3R5cG9p ZFtudW1wa3NdID0gcGtwZXJpb2R0eXBvaWRzWzBdOworCQlma2F0dG51bVtudW1wa3NdID0g ZmtwZXJpb2RhdHRudW1zWzBdOworCQlma3R5cG9pZFtudW1wa3NdID0gZmtwZXJpb2R0eXBv aWRzWzBdOwogCi0JCXBmZXFvcGVyYXRvcnNbaV0gPSBwZmVxb3A7Ci0JCXBwZXFvcGVyYXRv cnNbaV0gPSBwcGVxb3A7Ci0JCWZmZXFvcGVyYXRvcnNbaV0gPSBmZmVxb3A7CisJCUZpbmRG S0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIsIG51bXBrcywg ZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQlw a3BlcmlvZHR5cG9pZHNbMF0sIGZrcGVyaW9kdHlwb2lkc1swXSwgb3BjbGFzc2VzW251bXBr c10sCisJCQkJaXNfdGVtcG9yYWwsIHRydWUsCisJCQkJJnBmZXFvcGVyYXRvcnNbbnVtcGtz XSwgJnBwZXFvcGVyYXRvcnNbbnVtcGtzXSwgJmZmZXFvcGVyYXRvcnNbbnVtcGtzXSk7CisJ CW51bWZrcyArPSAxOworCQludW1wa3MgKz0gMTsKIAl9CiAKIAkvKgpAQCAtOTgxNyw3ICs5 Njg3LDggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSBudW1ma2RlbHNl dGNvbHMsCiAJCQkJCQkJCQkgZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJIG9sZF9jaGVja19v aywKLQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCSBJbnZh bGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJIGlzX3RlbXBvcmFsKTsKIAogCS8qIE5v dyBoYW5kbGUgdGhlIHJlZmVyZW5jaW5nIHNpZGUuICovCiAJYWRkRmtSZWN1cnNlUmVmZXJl bmNpbmcod3F1ZXVlLCBma2NvbnN0cmFpbnQsIHJlbCwgcGtyZWwsCkBAIC05ODMzLDcgKzk3 MDQsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCWZrZGVsc2V0Y29scywK IAkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJCQkJCQkJbG9ja21vZGUsCi0JCQkJCQkJSW52YWxp ZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJ CQkJCQlpc190ZW1wb3JhbCk7CiAKIAkvKgogCSAqIERvbmUuICBDbG9zZSBwayB0YWJsZSwg YnV0IGtlZXAgbG9jayB1bnRpbCB3ZSd2ZSBjb21taXR0ZWQuCkBAIC05OTE4LDcgKzk3OTAs OCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQg KmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkgICBPaWQgKnBwZXFvcGVyYXRv cnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJICAgaW50IG51bWZrZGVsc2V0Y29scywg aW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJICAgYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJ CSAgIE9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJ ICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkg ICBib29sIGlzX3RlbXBvcmFsKQogewogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAlPaWQJ CQljb25zdHJPaWQ7CkBAIC0xMDAwNCw3ICs5ODc3LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJl bmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9u IHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJ ICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9pbmhlcml0 LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFs ICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJ CQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAKIAlPYmplY3RBZGRyZXNzU2V0KGFk ZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25zdHJPaWQpOwpAQCAtMTAwODAsNyAr OTk1Myw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgIHBmZXFvcGVy YXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCSAgIG51bWZr ZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkgICBvbGRfY2hlY2tfb2ssCi0J CQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJ CQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBp c190ZW1wb3JhbCk7CiAKIAkJCS8qIERvbmUgLS0gY2xlYW4gdXAgKGJ1dCBrZWVwIHRoZSBs b2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKQEAgLTEwMTM4LDcg KzEwMDEyLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQlPaWQgKnBmZXFv cGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJ CQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCWJv b2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCU9pZCBwYXJlbnRJ bnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJCU9pZCBwYXJlbnRJbnNU cmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwp CiB7CiAJT2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQl1cGRhdGVUcmlnZ2VyT2lkOwpA QCAtMTAxODYsNiArMTAwNjEsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoq d3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCW5l d2Nvbi0+cmVmcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHBrcmVsKTsKIAkJCW5ld2Nvbi0+ cmVmaW5kaWQgPSBpbmRleE9pZDsKIAkJCW5ld2Nvbi0+Y29uaWQgPSBwYXJlbnRDb25zdHI7 CisJCQluZXdjb24tPmNvbnRlbXBvcmFsID0gZmtjb25zdHJhaW50LT5ma19wZXJpb2QgIT0g TlVMTDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChOb2RlICopIGZrY29uc3RyYWludDsKIAogCQkJ dGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsK QEAgLTEwMzAzLDcgKzEwMTc5LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJ CQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKLQkJCQkJ CQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFs LAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0x MDMzNCw3ICsxMDIxMCw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVl dWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJ b2xkX2NoZWNrX29rLAogCQkJCQkJCQkJbG9ja21vZGUsCiAJCQkJCQkJCQlpbnNlcnRUcmln Z2VyT2lkLAotCQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJCQl1cGRhdGVU cmlnZ2VyT2lkLAorCQkJCQkJCQkJaXNfdGVtcG9yYWwpOwogCiAJCQl0YWJsZV9jbG9zZShw YXJ0aXRpb24sIE5vTG9jayk7CiAJCX0KQEAgLTEwNTcwLDcgKzEwNDQ3LDggQEAgQ2xvbmVG a1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwp CiAJCQkJCQkJICAgY29uZmRlbHNldGNvbHMsCiAJCQkJCQkJICAgdHJ1ZSwKIAkJCQkJCQkg ICBkZWxldGVUcmlnZ2VyT2lkLAotCQkJCQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJ CQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJCQkJICAgY29uc3RyRm9ybS0+Y29udGVt cG9yYWwpOwogCiAJCXRhYmxlX2Nsb3NlKGZrUmVsLCBOb0xvY2spOwogCQlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOwpAQCAtMTA4MDksNyArMTA2ODcsNyBAQCBDbG9uZUZrUmVmZXJlbmNp bmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVs KQogCQkJCQkJCQkgIGZhbHNlLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCSAgMSwJLyogaW5o Y291bnQgKi8KIAkJCQkJCQkJICBmYWxzZSwJLyogY29uTm9Jbmhlcml0ICovCi0JCQkJCQkJ CSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCSAgY29uc3RyRm9ybS0+Y29u dGVtcG9yYWwsCS8qIGNvblRlbXBvcmFsICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyog U2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAq LwpAQCAtMTA4NDMsMTMgKzEwNzIxLDIzMiBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJ CQlmYWxzZSwJLyogbm8gb2xkIGNoZWNrIGV4aXN0cyAqLwogCQkJCQkJCQlBY2Nlc3NFeGNs dXNpdmVMb2NrLAogCQkJCQkJCQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQl1cGRhdGVU cmlnZ2VyT2lkKTsKKwkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJY29uc3Ry Rm9ybS0+Y29udGVtcG9yYWwpOwogCQl0YWJsZV9jbG9zZShwa3JlbCwgTm9Mb2NrKTsKIAl9 CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3Rh dGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25z dHJhaW50LAorCQlBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCWludCBpLAorCQlpbnQxNiAq ZmthdHRudW0sCisJCWJvb2wgKm9sZF9jaGVja19vaywKKwkJTGlzdENlbGwgKipvbGRfcGZl cW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQli b29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVybGFwcywKKwkJT2lkICpwZmVxb3BPdXQs IE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCkKK3sKKwlPaWQJCQlma3R5cGVkOwor CUhlYXBUdXBsZQljbGFfaHQ7CisJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7CisJT2lkCQkJ YW1pZDsKKwlPaWQJCQlvcGZhbWlseTsKKwlPaWQJCQlvcGNpbnR5cGU7CisJT2lkCQkJcGZl cW9wOworCU9pZAkJCXBwZXFvcDsKKwlPaWQJCQlmZmVxb3A7CisJaW50MTYJCWVxc3RyYXRl Z3k7CisJT2lkCQkJcGZlcW9wX3JpZ2h0OworCisJLyogV2UgbmVlZCBzZXZlcmFsIGZpZWxk cyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KKwljbGFfaHQgPSBTZWFyY2hTeXND YWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9wY2xhc3MpKTsKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzKTsKKwljbGFfdHVwID0gKEZvcm1fcGdfb3Bj bGFzcykgR0VUU1RSVUNUKGNsYV9odCk7CisJYW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsK KwlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKKwlvcGNpbnR5cGUgPSBjbGFfdHVw LT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5c0NhY2hlKGNsYV9odCk7CisKKwlpZiAoaXNfdGVt cG9yYWwpCisJeworCQlpZiAoYW1pZCAhPSBHSVNUX0FNX09JRCkKKwkJCWVsb2coRVJST1Is ICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWdu IGtleXMiKTsKKwkJZXFzdHJhdGVneSA9IGZvcl9vdmVybGFwcyA/IFJUT3ZlcmxhcFN0cmF0 ZWd5TnVtYmVyIDogUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCX0KKwllbHNlCisJeworCQkv KgorCQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBm YWlsIHNpbmNlIG5vIG90aGVyCisJCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRl eGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcworCQkgKiBvZiB1bmlxdWUg aW5kZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgor CQkgKiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0 byBpbnNpc3QgdGhhdAorCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51 bWJlciBmb3IgZXF1YWxpdHk/KQorCQkgKi8KKwkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lE KQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBm b3IgZm9yZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1i ZXI7CisJfQorCisJLyoKKwkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEgcHJpbWFyeSBlcXVh bGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgorCSAqIFdlJ2xsIHVzZSBpdCBmb3IgUEsg PSBQSyBjb21wYXJpc29ucy4KKwkgKi8KKwlwcGVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVy KG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kp OworCisJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkpCisJCWVsb2coRVJST1IsICJtaXNzaW5n IG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAldSIsCisJCQkgZXFzdHJhdGVneSwg b3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFtaWx5KTsKKworCS8qCisJICogQXJlIHRoZXJl IGVxdWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRha2UgZXhhY3RseSB0aGUgRksgdHlwZT8gQXNz dW1lCisJICogd2Ugc2hvdWxkIGxvb2sgdGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCisJICov CisJZmt0eXBlZCA9IGdldEJhc2VUeXBlKGZrdHlwZSk7CisKKwlwZmVxb3AgPSBnZXRfb3Bm YW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIGZrdHlwZWQsCisJCQkJCQkJCSBl cXN0cmF0ZWd5KTsKKwlpZiAoT2lkSXNWYWxpZChwZmVxb3ApKQorCXsKKwkJcGZlcW9wX3Jp Z2h0ID0gZmt0eXBlZDsKKwkJZmZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWls eSwgZmt0eXBlZCwgZmt0eXBlZCwKKwkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKKwl9CisJZWxz ZQorCXsKKwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQlwZmVxb3BfcmlnaHQgPSBJ bnZhbGlkT2lkOworCQlmZmVxb3AgPSBJbnZhbGlkT2lkOworCX0KKworCWlmICghKE9pZElz VmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQorCXsKKwkJLyoKKwkJICog T3RoZXJ3aXNlLCBsb29rIGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUg dG8gdGhlCisJCSAqIG9wY2ludHlwZSwgYW5kIGlmIGZvdW5kLCB1c2UgdGhlIHByaW1hcnkg ZXF1YWxpdHkgb3BlcmF0b3IuCisJCSAqIFRoaXMgaXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ug b3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMKKwkJICogdHlwZSBzdWNoIGFzIEFO WUFSUkFZIG9yIEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCisJCSAqIHdo ZXRoZXIgdGhlIHR3byBhY3R1YWwgY29sdW1uIHR5cGVzIGNhbiBiZSBjb25jdXJyZW50bHkg Y2FzdCB0bworCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3aXNlLCB3ZSdkIGZhaWwgdG8gcmVq ZWN0IGNvbWJpbmF0aW9ucyBzdWNoCisJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKKwkJ ICovCisJCU9pZAkJCWlucHV0X3R5cGVpZHNbMl07CisJCU9pZAkJCXRhcmdldF90eXBlaWRz WzJdOworCisJCWlucHV0X3R5cGVpZHNbMF0gPSBwa3R5cGU7CisJCWlucHV0X3R5cGVpZHNb MV0gPSBma3R5cGU7CisJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOworCQl0YXJn ZXRfdHlwZWlkc1sxXSA9IG9wY2ludHlwZTsKKwkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBp bnB1dF90eXBlaWRzLCB0YXJnZXRfdHlwZWlkcywKKwkJCQkJCQlDT0VSQ0lPTl9JTVBMSUNJ VCkpCisJCXsKKwkJCXBmZXFvcCA9IGZmZXFvcCA9IHBwZXFvcDsKKwkJCXBmZXFvcF9yaWdo dCA9IG9wY2ludHlwZTsKKwkJfQorCX0KKworCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAm JiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQorCXsKKwkJY2hhciAqZmthdHRyX25hbWU7CisJCWNo YXIgKnBrYXR0cl9uYW1lOworCisJCWlmIChmb3Jfb3ZlcmxhcHMpCisJCXsKKwkJCWZrYXR0 cl9uYW1lID0gc3RyVmFsKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKTsKKwkJCXBrYXR0cl9u YW1lID0gc3RyVmFsKGZrY29uc3RyYWludC0+cGtfcGVyaW9kKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCWZrYXR0cl9uYW1lID0gc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+Zmtf YXR0cnMsIGkpKTsKKwkJCXBrYXR0cl9uYW1lID0gc3RyVmFsKGxpc3RfbnRoKGZrY29uc3Ry YWludC0+cGtfYXR0cnMsIGkpKTsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiZm9yZWln biBrZXkgY29uc3RyYWludCBcIiVzXCIgY2Fubm90IGJlIGltcGxlbWVudGVkIiwKKwkJCQkJ CWZrY29uc3RyYWludC0+Y29ubmFtZSksCisJCQkJIGVycmRldGFpbCgiS2V5IGNvbHVtbnMg XCIlc1wiIGFuZCBcIiVzXCIgIgorCQkJCQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlw ZXM6ICVzIGFuZCAlcy4iLAorCQkJCQkJICAgZmthdHRyX25hbWUsCisJCQkJCQkgICBwa2F0 dHJfbmFtZSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGZrdHlwZSksCisJCQkJCQkgICBm b3JtYXRfdHlwZV9iZShwa3R5cGUpKSkpOworCX0KKworCWlmICgqb2xkX2NoZWNrX29rKQor CXsKKwkJLyoKKwkJICogV2hlbiBhIHBmZXFvcCBjaGFuZ2VzLCByZXZhbGlkYXRlIHRoZSBj b25zdHJhaW50LiAgV2UgY291bGQKKwkJICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5n ZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxlIGNvbXBsZXhpdHkKKwkJICogd2l0aG91dCBhbnkg Y29uY3JldGUgYmVuZWZpdCBmb3IgY29yZSB0eXBlcy4gIFdlIG5lZWQgbm90CisJCSAqIGFz c2VzcyBwcGVxb3Agb3IgZmZlcW9wLCB3aGljaCBSSV9Jbml0aWFsX0NoZWNrKCkgZG9lcyBu b3QgdXNlLgorCQkgKi8KKwkJKm9sZF9jaGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29p ZCgqb2xkX3BmZXFvcF9pdGVtKSk7CisJCSpvbGRfcGZlcW9wX2l0ZW0gPSBsbmV4dChma2Nv bnN0cmFpbnQtPm9sZF9jb25wZmVxb3AsCisJCQkJCQkJCSpvbGRfcGZlcW9wX2l0ZW0pOwor CX0KKwlpZiAoKm9sZF9jaGVja19vaykKKwl7CisJCU9pZAkJCW9sZF9ma3R5cGU7CisJCU9p ZAkJCW5ld19ma3R5cGU7CisJCUNvZXJjaW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOworCQlD b2VyY2lvblBhdGhUeXBlIG5ld19wYXRodHlwZTsKKwkJT2lkCQkJb2xkX2Nhc3RmdW5jOwor CQlPaWQJCQluZXdfY2FzdGZ1bmM7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBs ZURlc2NBdHRyKHRhYi0+b2xkRGVzYywKKwkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAx KTsKKworCQkvKgorCQkgKiBJZGVudGlmeSBjb2VyY2lvbiBwYXRod2F5cyBmcm9tIGVhY2gg b2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNpZGUKKwkJICogY29sdW1uIHR5cGVzIHRvIHRoZSBy aWdodCAoZm9yZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCisJCSAqIFdlIG1h eSBhc3N1bWUgdGhhdCBwZ19jb25zdHJhaW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCisJ CSAqLworCQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJCW5ld19ma3R5cGUgPSBm a3R5cGU7CisJCW9sZF9wYXRodHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG9s ZF9ma3R5cGUsCisJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKKwkJbmV3X3BhdGh0eXBlID0g ZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgbmV3X2ZrdHlwZSwKKwkJCQkJCQkJCSZuZXdf Y2FzdGZ1bmMpOworCisJCS8qCisJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3QgZnJv bSB0aGUgRksgY29sdW1uIHRvIGl0cyBwZmVxb3AKKwkJICogb3BlcmFuZCwgcmV2YWxpZGF0 ZSB0aGUgY29uc3RyYWludC4gIEZvciB0aGlzIGV2YWx1YXRpb24sIGEKKwkJICogYmluYXJ5 IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxl CisJCSAqIHR5cGUgaW1wbGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQgY2FzdHMg d2l0aCBhbiBleWUKKwkJICogdG93YXJkIGNvbnNpc3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlr ZSBlcXVhbGl0eSwgd2UgY2Fubm90CisJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZl IGRvbmUgc28uCisJCSAqCisJCSAqIEEgZnVuY3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFy Z3VtZW50IGNvdWxkIGNoYW5nZSBiZWhhdmlvcgorCQkgKiBhcmJpdHJhcmlseSBpbiByZXNw b25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCisJCSAqIHdoZW4g dGhlIGNhc3QgZGVzdGluYXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9ubHkgYXZvaWQKKwkJ ICogcmV2YWxpZGF0aW9uIGlmIHRoZSBpbnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBh bGwuICBHaXZlbgorCQkgKiBqdXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9y IGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKKwkJICogcHJldmVudHMgbm8gd291bGQtYmUg b3B0aW1pemF0aW9ucy4KKwkJICoKKwkJICogSWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBh IGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9uLCB0aGVuCisJCSAqIHRoYXQgZG9tYWlu IHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXguCisJCSAq IE5lY2Vzc2FyaWx5LCB0aGUgcHJpbWFyeSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBvZiB0 aGUgZG9tYWluCisJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29uc3RyYWludCB3YXMgcHJldmlv dXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgorCQkgKiB0aGUgZm9yZWlnbiBzaWRlIG5lY2Vz c2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUgYW5kIGluCisJCSAqIHR1cm4gY29u Zm9ybSB0byB0aGUgZG9tYWluLiAgQ29uc2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0cmVhdAor CQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgorCQkgKgorCQkgKiBTaW5jZSB3ZSByZXF1 aXJlIHRoYXQgYWxsIGNvbGxhdGlvbnMgc2hhcmUgdGhlIHNhbWUgbm90aW9uIG9mCisJCSAq IGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNlIHRleHRlcSByZWR1Y2VzIHRvIGJp dHdpc2UKKwkJICogZXF1YWxpdHkpLCB3ZSBkb24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJl LgorCQkgKgorCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlw ZS4gIEl0J3MgbmVjZXNzYXJpbHkKKwkJICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3Bj aW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXggY29sdW1uLAorCQkgKiBhbmQgcmlfdHJpZ2dl cnMuYyB3aWxsIG9ubHkgZGVhbCB3aXRoIFBLIGRhdHVtcyBpbiB0ZXJtcyBvZgorCQkgKiB0 aGF0IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBm ZXFvcC4KKwkJICovCisJCSpvbGRfY2hlY2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9w YXRodHlwZSAmJgorCQkJCQkJbmV3X2Nhc3RmdW5jID09IG9sZF9jYXN0ZnVuYyAmJgorCQkJ CQkJKCFJc1BvbHltb3JwaGljVHlwZShwZmVxb3BfcmlnaHQpIHx8CisJCQkJCQkgbmV3X2Zr dHlwZSA9PSBvbGRfZmt0eXBlKSk7CisKKwl9CisKKwkqcGZlcW9wT3V0ID0gcGZlcW9wOwor CSpwcGVxb3BPdXQgPSBwcGVxb3A7CisJKmZmZXFvcE91dCA9IGZmZXFvcDsKK30KKwogLyoK ICAqIFdoZW4gdGhlIHBhcmVudCBvZiBhIHBhcnRpdGlvbiByZWNlaXZlcyBbdGhlIHJlZmVy ZW5jaW5nIHNpZGUgb2ZdIGEgZm9yZWlnbgogICoga2V5LCB3ZSBtdXN0IHByb3BhZ2F0ZSB0 aGF0IGZvcmVpZ24ga2V5IHRvIHRoZSBwYXJ0aXRpb24uICBIb3dldmVyLCB0aGUKQEAgLTEx MzQ3LDcgKzExNDQ0LDExIEBAIEFURXhlY0FsdGVyQ29uc3RyUmVjdXJzZShDb25zdHJhaW50 ICpjbWRjb24sIFJlbGF0aW9uIGNvbnJlbCwgUmVsYXRpb24gdGdyZWwsCiAJCQlpZiAodGdm b3JtLT50Z2ZvaWQgIT0gRl9SSV9GS0VZX05PQUNUSU9OX0RFTCAmJgogCQkJCXRnZm9ybS0+ dGdmb2lkICE9IEZfUklfRktFWV9OT0FDVElPTl9VUEQgJiYKIAkJCQl0Z2Zvcm0tPnRnZm9p ZCAhPSBGX1JJX0ZLRVlfQ0hFQ0tfSU5TICYmCi0JCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9S SV9GS0VZX0NIRUNLX1VQRCkKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1JJX0ZLRVlfQ0hF Q0tfVVBEICYmCisJCQkJdGdmb3JtLT50Z2ZvaWQgIT0gRl9UUklfRktFWV9OT0FDVElPTl9E RUwgJiYKKwkJCQl0Z2Zvcm0tPnRnZm9pZCAhPSBGX1RSSV9GS0VZX05PQUNUSU9OX1VQRCAm JgorCQkJCXRnZm9ybS0+dGdmb2lkICE9IEZfVFJJX0ZLRVlfQ0hFQ0tfSU5TICYmCisJCQkJ dGdmb3JtLT50Z2ZvaWQgIT0gRl9UUklfRktFWV9DSEVDS19VUEQpCiAJCQkJY29udGludWU7 CiAKIAkJCXRnQ29weVR1cGxlID0gaGVhcF9jb3B5dHVwbGUodGd0dXBsZSk7CkBAIC0xMTU5 NSw3ICsxMTY5Niw2IEBAIEFURXhlY1ZhbGlkYXRlQ29uc3RyYWludChMaXN0ICoqd3F1ZXVl LCBSZWxhdGlvbiByZWwsIGNoYXIgKmNvbnN0ck5hbWUsCiAJcmV0dXJuIGFkZHJlc3M7CiB9 CiAKLQogLyoKICAqIHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0IC0gdHJhbnNmb3JtIGxpc3Qg b2YgY29sdW1uIG5hbWVzCiAgKgpAQCAtMTE2NjMsNyArMTE3NjMsOSBAQCB0cmFuc2Zvcm1D b2x1bW5OYW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNvbExpc3QsCiBzdGF0aWMgaW50CiB0 cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwgT2lkICppbmRleE9p ZCwKIAkJCQkJCSAgIExpc3QgKiphdHRuYW1lbGlzdCwKKwkJCQkJCSAgIE5vZGUgKipwa19w ZXJpb2QsCiAJCQkJCQkgICBpbnQxNiAqYXR0bnVtcywgT2lkICphdHR0eXBpZHMsCisJCQkJ CQkgICBpbnQxNiAqcGVyaW9kYXR0bnVtcywgT2lkICpwZXJpb2RhdHR0eXBpZHMsCiAJCQkJ CQkgICBPaWQgKm9wY2xhc3NlcykKIHsKIAlMaXN0CSAgICppbmRleG9pZGxpc3Q7CkBAIC0x MTcyOCwzNiArMTE4MzAsNTUgQEAgdHJhbnNmb3JtRmtleUdldFByaW1hcnlLZXkoUmVsYXRp b24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAKIAkvKgogCSAqIE5vdyBidWlsZCB0aGUgbGlz dCBvZiBQSyBhdHRyaWJ1dGVzIGZyb20gdGhlIGluZGtleSBkZWZpbml0aW9uICh3ZQotCSAq IGFzc3VtZSBhIHByaW1hcnkga2V5IGNhbm5vdCBoYXZlIGV4cHJlc3Npb25hbCBlbGVtZW50 cykKKwkgKiBhc3N1bWUgYSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2ZSBleHByZXNzaW9uYWwg ZWxlbWVudHMsIHVubGVzcyBpdAorCSAqIGhhcyBhIFBFUklPRCkKIAkgKi8KIAkqYXR0bmFt ZWxpc3QgPSBOSUw7CiAJZm9yIChpID0gMDsgaSA8IGluZGV4U3RydWN0LT5pbmRua2V5YXR0 czsgaSsrKQogCXsKIAkJaW50CQkJcGthdHRubyA9IGluZGV4U3RydWN0LT5pbmRrZXkudmFs dWVzW2ldOwogCi0JCWF0dG51bXNbaV0gPSBwa2F0dG5vOwotCQlhdHR0eXBpZHNbaV0gPSBh dHRudW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOwotCQlvcGNsYXNzZXNbaV0gPSBpbmRjbGFz cy0+dmFsdWVzW2ldOwotCQkqYXR0bmFtZWxpc3QgPSBsYXBwZW5kKCphdHRuYW1lbGlzdCwK LQkJCQkJCQkgICBtYWtlU3RyaW5nKHBzdHJkdXAoTmFtZVN0cigqYXR0bnVtQXR0TmFtZShw a3JlbCwgcGthdHRubykpKSkpOworCQlpZiAoaSA9PSBpbmRleFN0cnVjdC0+aW5kbmtleWF0 dHMgLSAxICYmIGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikKKwkJeworCQkJLyogd2Ug aGF2ZSBhIHJhbmdlICovCisJCQkvKiBUaGUgY2FsbGVyIHdpbGwgc2V0IGF0dG51bXNbaV0g Ki8KKwkJCXBlcmlvZGF0dG51bXNbMF0gPSBwa2F0dG5vOworCQkJcGVyaW9kYXR0dHlwaWRz WzBdID0gYXR0bnVtVHlwZUlkKHBrcmVsLCBwa2F0dG5vKTsKKwkJCW9wY2xhc3Nlc1tpXSA9 IGluZGNsYXNzLT52YWx1ZXNbaV07CisKKwkJCUFzc2VydCgqcGtfcGVyaW9kID09IE5VTEwp OworCQkJKnBrX3BlcmlvZCA9IChOb2RlICopIG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3Ry KCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKTsKKwkJfQorCQllbHNlCisJCXsK KwkJCWF0dG51bXNbaV0gPSBwa2F0dG5vOworCQkJYXR0dHlwaWRzW2ldID0gYXR0bnVtVHlw ZUlkKHBrcmVsLCBwa2F0dG5vKTsKKwkJCW9wY2xhc3Nlc1tpXSA9IGluZGNsYXNzLT52YWx1 ZXNbaV07CisJCQkqYXR0bmFtZWxpc3QgPSBsYXBwZW5kKCphdHRuYW1lbGlzdCwKKwkJCQkJ CQkJICBtYWtlU3RyaW5nKHBzdHJkdXAoTmFtZVN0cigqYXR0bnVtQXR0TmFtZShwa3JlbCwg cGthdHRubykpKSkpOworCQl9CiAJfQogCiAJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUp OwogCi0JcmV0dXJuIGk7CisJaWYgKGluZGV4U3RydWN0LT5pbmRpc2V4Y2x1c2lvbikgcmV0 dXJuIGkgLSAxOworCWVsc2UgcmV0dXJuIGk7CiB9CiAKIC8qCiAgKiB0cmFuc2Zvcm1Ga2V5 Q2hlY2tBdHRycyAtCiAgKgogICoJTWFrZSBzdXJlIHRoYXQgdGhlIGF0dHJpYnV0ZXMgb2Yg YSByZWZlcmVuY2VkIHRhYmxlIGJlbG9uZyB0byBhIHVuaXF1ZQotICoJKG9yIHByaW1hcnkg a2V5KSBjb25zdHJhaW50LiAgUmV0dXJuIHRoZSBPSUQgb2YgdGhlIGluZGV4IHN1cHBvcnRp bmcKLSAqCXRoZSBjb25zdHJhaW50LCBhcyB3ZWxsIGFzIHRoZSBvcGNsYXNzZXMgYXNzb2Np YXRlZCB3aXRoIHRoZSBpbmRleAorICoJKG9yIHByaW1hcnkga2V5KSBjb25zdHJhaW50LiAg T3IgaWYgdGhpcyBpcyBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5CisgKgl0aGUgcHJpbWFyeSBr ZXkgc2hvdWxkIGJlIGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50IGluc3RlYWQuCisgKglSZXR1 cm4gdGhlIE9JRCBvZiB0aGUgaW5kZXggc3VwcG9ydGluZyB0aGUgY29uc3RyYWludCwKKyAq CWFzIHdlbGwgYXMgdGhlIG9wY2xhc3NlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGluZGV4CiAg Kgljb2x1bW5zLgogICovCiBzdGF0aWMgT2lkCiB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhS ZWxhdGlvbiBwa3JlbCwKIAkJCQkJCWludCBudW1hdHRycywgaW50MTYgKmF0dG51bXMsCisJ CQkJCQlib29sIGlzX3RlbXBvcmFsLCBpbnQxNiBwZXJpb2RhdHRudW0sCiAJCQkJCQlPaWQg Km9wY2xhc3NlcykgLyogb3V0cHV0IHBhcmFtZXRlciAqLwogewogCU9pZAkJCWluZGV4b2lk ID0gSW52YWxpZE9pZDsKQEAgLTExNzg0LDYgKzExOTA1LDEwIEBAIHRyYW5zZm9ybUZrZXlD aGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZB TElEX0ZPUkVJR05fS0VZKSwKIAkJCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IHJlZmVyZW5j ZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRlcyIpKSk7CiAJCX0K KwkJaWYgKGlzX3RlbXBvcmFsICYmIGF0dG51bXNbaV0gPT0gcGVyaW9kYXR0bnVtKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0ZPUkVJR05f S0VZKSwKKwkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxp c3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzIikpKTsKIAl9CiAKIAkvKgpAQCAtMTE4 MDUsMTIgKzExOTMwLDE2IEBAIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBr cmVsLAogCQlpbmRleFN0cnVjdCA9IChGb3JtX3BnX2luZGV4KSBHRVRTVFJVQ1QoaW5kZXhU dXBsZSk7CiAKIAkJLyoKLQkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2YgY29s dW1uczsgbXVzdCBiZSB1bmlxdWUgYW5kIG5vdCBhCi0JCSAqIHBhcnRpYWwgaW5kZXg7IGZv cmdldCBpdCBpZiB0aGVyZSBhcmUgYW55IGV4cHJlc3Npb25zLCB0b28uIEludmFsaWQKLQkJ ICogaW5kZXhlcyBhcmUgb3V0IGFzIHdlbGwuCisJCSAqIE11c3QgaGF2ZSB0aGUgcmlnaHQg bnVtYmVyIG9mIGNvbHVtbnM7IG11c3QgYmUgdW5pcXVlCisJCSAqIChvciBpZiB0ZW1wb3Jh bCB0aGVuIGV4Y2x1c2lvbiBpbnN0ZWFkKSBhbmQgbm90IGEKKwkJICogcGFydGlhbCBpbmRl eDsgZm9yZ2V0IGl0IGlmIHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4KKwkJICog SW52YWxpZCBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4KIAkJICovCi0JCWlmIChpbmRleFN0 cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgJiYKLQkJCWluZGV4U3RydWN0LT5pbmRp c3VuaXF1ZSAmJgorCQlpZiAoKGlzX3RlbXBvcmFsCisJCQkgID8gKGluZGV4U3RydWN0LT5p bmRua2V5YXR0cyA9PSBudW1hdHRycyArIDEgJiYKKwkJCQkgaW5kZXhTdHJ1Y3QtPmluZGlz ZXhjbHVzaW9uKQorCQkJICA6IChpbmRleFN0cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0 cnMgJiYKKwkJCQkgaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlKSkgJiYKIAkJCWluZGV4U3Ry dWN0LT5pbmRpc3ZhbGlkICYmCiAJCQloZWFwX2F0dGlzbnVsbChpbmRleFR1cGxlLCBBbnVt X3BnX2luZGV4X2luZHByZWQsIE5VTEwpICYmCiAJCQloZWFwX2F0dGlzbnVsbChpbmRleFR1 cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLCBOVUxMKSkKQEAgLTExODQ4LDYgKzExOTc3 LDE5IEBAIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQkJCWlm ICghZm91bmQpCiAJCQkJCWJyZWFrOwogCQkJfQorCQkJaWYgKGZvdW5kICYmIGlzX3RlbXBv cmFsKQorCQkJeworCQkJCWZvdW5kID0gZmFsc2U7CisJCQkJZm9yIChqID0gMDsgaiA8IG51 bWF0dHJzICsgMTsgaisrKQorCQkJCXsKKwkJCQkJaWYgKHBlcmlvZGF0dG51bSA9PSBpbmRl eFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tqXSkKKwkJCQkJeworCQkJCQkJb3BjbGFzc2VzW251 bWF0dHJzXSA9IGluZGNsYXNzLT52YWx1ZXNbal07CisJCQkJCQlmb3VuZCA9IHRydWU7CisJ CQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCX0KIAogCQkJLyoKIAkJCSAqIFJlZnVz ZSB0byB1c2UgYSBkZWZlcnJhYmxlIHVuaXF1ZS9wcmltYXJ5IGtleS4gIFRoaXMgaXMgcGVy IFNRTApAQCAtMTE5NTcsNyArMTIwOTksOCBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJh aW50KGNoYXIgKmNvbm5hbWUsCiAJCQkJCQkJIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkgUmVs YXRpb24gcGtyZWwsCiAJCQkJCQkJIE9pZCBwa2luZE9pZCwKLQkJCQkJCQkgT2lkIGNvbnN0 cmFpbnRPaWQpCisJCQkJCQkJIE9pZCBjb25zdHJhaW50T2lkLAorCQkJCQkJCSBib29sIHRl bXBvcmFsKQogewogCVR1cGxlVGFibGVTbG90ICpzbG90OwogCVRhYmxlU2NhbkRlc2Mgc2Nh bjsKQEAgLTExOTg2LDggKzEyMTI5LDEwIEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFp bnQoY2hhciAqY29ubmFtZSwKIAkvKgogCSAqIFNlZSBpZiB3ZSBjYW4gZG8gaXQgd2l0aCBh IHNpbmdsZSBMRUZUIEpPSU4gcXVlcnkuICBBIGZhbHNlIHJlc3VsdAogCSAqIGluZGljYXRl cyB3ZSBtdXN0IHByb2NlZWQgd2l0aCB0aGUgZmlyZS10aGUtdHJpZ2dlciBtZXRob2QuCisJ ICogV2UgY2FuJ3QgZG8gYSBMRUZUIEpPSU4gZm9yIHRlbXBvcmFsIEZLcyB5ZXQsCisJICog YnV0IHdlIGNhbiBvbmNlIHdlIHN1cHBvcnQgdGVtcG9yYWwgbGVmdCBqb2lucy4KIAkgKi8K LQlpZiAoUklfSW5pdGlhbF9DaGVjaygmdHJpZywgcmVsLCBwa3JlbCkpCisJaWYgKCF0ZW1w b3JhbCAmJiBSSV9Jbml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKIAkJcmV0dXJu OwogCiAJLyoKQEAgLTEyMDU2LDYgKzEyMjAxLDcgQEAgQ3JlYXRlRktDaGVja1RyaWdnZXIo T2lkIG15UmVsT2lkLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQs CiB7CiAJT2JqZWN0QWRkcmVzcyB0cmlnQWRkcmVzczsKIAlDcmVhdGVUcmlnU3RtdCAqZmtf dHJpZ2dlcjsKKwlib29sIGlzX3RlbXBvcmFsID0gZmtjb25zdHJhaW50LT5ma19wZXJpb2Q7 CiAKIAkvKgogCSAqIE5vdGU6IGZvciBhIHNlbGYtcmVmZXJlbnRpYWwgRksgKHJlZmVyZW5j aW5nIGFuZCByZWZlcmVuY2VkIHRhYmxlcyBhcmUKQEAgLTEyMDc1LDEyICsxMjIyMSwxOCBA QCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENv bnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAkvKiBFaXRoZXIgT04gSU5TRVJUIG9yIE9OIFVQ REFURSAqLwogCWlmIChvbl9pbnNlcnQpCiAJewotCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX2lucyIpOworCQlpZiAoaXNfdGVtcG9y YWwpCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9jaGVja19pbnMiKTsKKwkJZWxzZQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja19pbnMiKTsKIAkJZmtfdHJpZ2dlci0+ZXZlbnRz ID0gVFJJR0dFUl9UWVBFX0lOU0VSVDsKIAl9CiAJZWxzZQogCXsKLQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja191cGQiKTsKKwkJaWYg KGlzX3RlbXBvcmFsKQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiVFJJX0ZLZXlfY2hlY2tfdXBkIik7CisJCWVsc2UKKwkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfdXBkIik7CiAJCWZrX3RyaWdn ZXItPmV2ZW50cyA9IFRSSUdHRVJfVFlQRV9VUERBVEU7CiAJfQogCkBAIC0xMjEzOCwzNyAr MTIyOTAsNjggQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJl bCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHIKIAlma190cmlnZ2VyLT53 aGVuQ2xhdXNlID0gTlVMTDsKIAlma190cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9IE5JTDsK IAlma190cmlnZ2VyLT5jb25zdHJyZWwgPSBOVUxMOwotCXN3aXRjaCAoZmtjb25zdHJhaW50 LT5ma19kZWxfYWN0aW9uKQorCWlmIChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxM KQogCXsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046Ci0JCQlma190cmlnZ2Vy LT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOwotCQkJZmtfdHJpZ2dl ci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7Ci0JCQlma190 cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX2Rl bCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgotCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJSSV9GS2V5X3Jlc3RyaWN0X2RlbCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05T VFJfQUNUSU9OX0NBU0NBREU6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXIt PmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKLQkJ CWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgotCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X3NldG51bGxfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUREVGQVVMVDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25h bWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0X2RlbCIpOwotCQkJYnJl YWs7Ci0JCWRlZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlv biB0eXBlOiAlZCIsCi0JCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7 Ci0JCQlicmVhazsKKwkJLyogVGVtcG9yYWwgZm9yZWlnbiBrZXlzICovCisJCXN3aXRjaCAo Zmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FD VElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJh aW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29u c3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lz dGVtRnVuY05hbWUoIlRSSV9GS2V5X25vYWN0aW9uX2RlbCIpOworCQkJCWJyZWFrOworCQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jl c3RyaWN0X2RlbCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FT Q0FERToKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJy Y29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJh Y3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJ CQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBG SyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxf YWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZr Y29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWlu dC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0 cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX2RlbCIpOworCQkJCWJyZWFrOworCQkJY2Fz ZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJp Y3RfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURF OgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51 bGxfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZB VUxUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CisJCQkJYnJlYWs7 CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9u IHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfZGVsX2FjdGlvbik7 CisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAl0cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdnZXIo ZmtfdHJpZ2dlciwgTlVMTCwgcmVmUmVsT2lkLApAQCAtMTIxOTgsMzcgKzEyMzgxLDY4IEBA IGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25UcmlnZ2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZS ZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyCiAJZmtfdHJpZ2dlci0+d2hlbkNsYXVzZSA9 IE5VTEw7CiAJZmtfdHJpZ2dlci0+dHJhbnNpdGlvblJlbHMgPSBOSUw7CiAJZmtfdHJpZ2dl ci0+Y29uc3RycmVsID0gTlVMTDsKLQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2Fj dGlvbikKKwlpZiAoZmtjb25zdHJhaW50LT5ma19wZXJpb2QgIT0gTlVMTCkKIAl7Ci0JCWNh c2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJs ZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZl cnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwotCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9ub2FjdGlvbl91cGQiKTsKLQkJCWJy ZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKLQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktl eV9yZXN0cmljdF91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9D QVNDQURFOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJp Z2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9 IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2NhZGVfdXBkIik7Ci0JCQlicmVhazsKLQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJ ZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxs X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6 Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5p bml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVt RnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQiKTsKLQkJCWJyZWFrOwotCQlkZWZh dWx0OgotCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQi LAotCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pOwotCQkJYnJlYWs7 CisJCS8qIFRlbXBvcmFsIGZvcmVpZ24ga2V5cyAqLworCQlzd2l0Y2ggKGZrY29uc3RyYWlu dC0+ZmtfdXBkX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJ T046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJy YWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmlu aXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJUUklfRktleV9ub2FjdGlvbl91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05T VFJfQUNUSU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmljdF91cGQi KTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05f U0VUREVGQVVMVDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygiYWN0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJYnJlYWs7CisJ CQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5 cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7CisJ CQkJYnJlYWs7CisJCX0KKwl9CisJZWxzZQorCXsKKwkJc3dpdGNoIChma2NvbnN0cmFpbnQt PmZrX3VwZF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9O OgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFi bGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0 ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgi UklfRktleV9ub2FjdGlvbl91cGQiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX1JFU1RSSUNUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOwor CQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCQlma190 cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVy cmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFt ZSgiUklfRktleV9jYXNjYWRlX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9zZXRudWxsX3VwZCIpOwor CQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKKwkJCQlm a190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5j TmFtZSgiUklfRktleV9zZXRkZWZhdWx0X3VwZCIpOworCQkJCWJyZWFrOworCQkJZGVmYXVs dDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIs CisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX3VwZF9hY3Rpb24pOworCQkJCWJyZWFr OworCQl9CiAJfQogCiAJdHJpZ0FkZHJlc3MgPSBDcmVhdGVUcmlnZ2VyKGZrX3RyaWdnZXIs IE5VTEwsIHJlZlJlbE9pZCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFt LnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDNlYTRhY2I3NGQuLjdkMjIz MTlkNDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTIzLDExICs1MjMsMTIgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxub2RlPglUYWJsZUVsZW1lbnQgVHlwZWRUYWJs ZUVsZW1lbnQgQ29uc3RyYWludEVsZW0gVGFibGVGdW5jRWxlbWVudAogJXR5cGUgPG5vZGU+ CWNvbHVtbkRlZiBjb2x1bW5PcHRpb25zCiAldHlwZSA8ZGVmZWx0PglkZWZfZWxlbSByZWxv cHRpb25fZWxlbSBvbGRfYWdncl9lbGVtIG9wZXJhdG9yX2RlZl9lbGVtCi0ldHlwZSA8bm9k ZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRfb3ZlcmxhcHNfY2xhdXNlCisldHlwZSA8 bm9kZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRfb3ZlcmxhcHNfY2xhdXNlIG9wdGlv bmFsUGVyaW9kTmFtZQogCQkJCXdoZXJlX2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVz ZQogCQkJCWFfZXhwciBiX2V4cHIgY19leHByIEFleHByQ29uc3QgaW5kaXJlY3Rpb25fZWwg b3B0X3NsaWNlX2JvdW5kCiAJCQkJY29sdW1ucmVmIGluX2V4cHIgaGF2aW5nX2NsYXVzZSBm dW5jX3RhYmxlIHhtbHRhYmxlIGFycmF5X2V4cHIKIAkJCQlPcHRXaGVyZUNsYXVzZSBvcGVy YXRvcl9kZWZfYXJnCisldHlwZSA8bGlzdD4Jb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xpc3QK ICV0eXBlIDxsaXN0Pglyb3dzZnJvbV9pdGVtIHJvd3Nmcm9tX2xpc3Qgb3B0X2NvbF9kZWZf bGlzdAogJXR5cGUgPGJvb2xlYW4+IG9wdF9vcmRpbmFsaXR5CiAldHlwZSA8bGlzdD4JRXhj bHVzaW9uQ29uc3RyYWludExpc3QgRXhjbHVzaW9uQ29uc3RyYWludEVsZW0KQEAgLTc0NSw3 ICs3NDYsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAq cmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU9WRVIgT1ZFUkxBUFMg T1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9XTkVSCiAKIAlQQVJBTExFTCBQQVJBTUVURVIg UEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQKLQlQTEFDSU5HIFBM QU5TIFBPTElDWQorCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQogCVBPU0lUSU9OIFBS RUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJ UFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURVUkVTIFBST0dS QU0gUFVCTElDQVRJT04KIApAQCAtNDE4NiwyMSArNDE4NywyMyBAQCBDb25zdHJhaW50RWxl bToKIAkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBu OwogCQkJCX0KLQkJCXwgRk9SRUlHTiBLRVkgJygnIGNvbHVtbkxpc3QgJyknIFJFRkVSRU5D RVMgcXVhbGlmaWVkX25hbWUKLQkJCQlvcHRfY29sdW1uX2xpc3Qga2V5X21hdGNoIGtleV9h Y3Rpb25zIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCisJCQl8IEZPUkVJR04gS0VZICcoJyBj b2x1bW5MaXN0IG9wdGlvbmFsUGVyaW9kTmFtZSAnKScgUkVGRVJFTkNFUyBxdWFsaWZpZWRf bmFtZQorCQkJCW9wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0IGtleV9tYXRjaCBrZXlfYWN0 aW9ucyBDb25zdHJhaW50QXR0cmlidXRlU3BlYwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAq biA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwogCiAJCQkJCW4tPmNvbnR5cGUgPSBDT05TVFJf Rk9SRUlHTjsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKLQkJCQkJbi0+cGt0YWJsZSA9ICQ3 OworCQkJCQluLT5wa3RhYmxlID0gJDg7CiAJCQkJCW4tPmZrX2F0dHJzID0gJDQ7Ci0JCQkJ CW4tPnBrX2F0dHJzID0gJDg7Ci0JCQkJCW4tPmZrX21hdGNodHlwZSA9ICQ5OwotCQkJCQlu LT5ma191cGRfYWN0aW9uID0gKCQxMCktPnVwZGF0ZUFjdGlvbi0+YWN0aW9uOwotCQkJCQlu LT5ma19kZWxfYWN0aW9uID0gKCQxMCktPmRlbGV0ZUFjdGlvbi0+YWN0aW9uOwotCQkJCQlu LT5ma19kZWxfc2V0X2NvbHMgPSAoJDEwKS0+ZGVsZXRlQWN0aW9uLT5jb2xzOwotCQkJCQlw cm9jZXNzQ0FTYml0cygkMTEsIEAxMSwgIkZPUkVJR04gS0VZIiwKKwkJCQkJbi0+ZmtfcGVy aW9kID0gJDU7CisJCQkJCW4tPnBrX2F0dHJzID0gbGluaXRpYWwoJDkpOworCQkJCQluLT5w a19wZXJpb2QgPSBsc2Vjb25kKCQ5KTsKKwkJCQkJbi0+ZmtfbWF0Y2h0eXBlID0gJDEwOwor CQkJCQluLT5ma191cGRfYWN0aW9uID0gKCQxMSktPnVwZGF0ZUFjdGlvbi0+YWN0aW9uOwor CQkJCQluLT5ma19kZWxfYWN0aW9uID0gKCQxMSktPmRlbGV0ZUFjdGlvbi0+YWN0aW9uOwor CQkJCQluLT5ma19kZWxfc2V0X2NvbHMgPSAoJDExKS0+ZGVsZXRlQWN0aW9uLT5jb2xzOwor CQkJCQlwcm9jZXNzQ0FTYml0cygkMTIsIEAxMiwgIkZPUkVJR04gS0VZIiwKIAkJCQkJCQkJ ICAgJm4tPmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsCiAJCQkJCQkJCSAgICZuLT5z a2lwX3ZhbGlkYXRpb24sIE5VTEwsCiAJCQkJCQkJCSAgIHl5c2Nhbm5lcik7CkBAIC00MjI4 LDYgKzQyMzEsMTYgQEAgd2l0aG91dF9vdmVybGFwc19jbGF1c2U6CiAJCQl8IC8qRU1QVFkq LyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxMOyB9CiAJOwogCitvcHRpb25hbFBlcmlvZE5h bWU6CisJCQknLCcgUEVSSU9EIGNvbHVtbkVsZW0geyAkJCA9ICQzOyB9CisJCQl8IC8qRU1Q VFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxMOyB9CisJOworCitvcHRfY29sdW1uX2Fu ZF9wZXJpb2RfbGlzdDoKKwkJCScoJyBjb2x1bW5MaXN0IG9wdGlvbmFsUGVyaW9kTmFtZSAn KScJCQl7ICQkID0gbGlzdF9tYWtlMigkMiwgJDMpOyB9CisJCQl8IC8qRU1QVFkqLwkJCQkJ CQkJeyAkJCA9IGxpc3RfbWFrZTIoTklMLCBOVUxMKTsgfQorCQk7CisKIGNvbHVtbkVsZW06 IENvbElkCiAJCQkJewogCQkJCQkkJCA9IChOb2RlICopIG1ha2VTdHJpbmcoJDEpOwpAQCAt MTc1MTUsNiArMTc1MjgsNyBAQCByZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBPTkxZCiAJCQl8 IE9SCiAJCQl8IE9SREVSCisJCQl8IFBFUklPRAogCQkJfCBQTEFDSU5HCiAJCQl8IFBSSU1B UlkKIAkJCXwgUkVGRVJFTkNFUwpAQCAtMTc4MjQsNiArMTc4MzgsNyBAQCBiYXJlX2xhYmVs X2tleXdvcmQ6CiAJCQl8IFBBUlRJVElPTgogCQkJfCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JE CisJCQl8IFBFUklPRAogCQkJfCBQTEFDSU5HCiAJCQl8IFBMQU5TCiAJCQl8IFBPTElDWQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMv YmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCA2OTQ1ZDk5YjNkLi4zNjVi ODQ0YmYzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtMzEsNiAr MzEsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29sbGF0aW9uLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19jb25zdHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGVyYXRv ci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcmFuZ2UuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAi ZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJ1dGls cy9pbnZhbC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0 aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3Jscy5oIgogI2luY2x1ZGUgInV0 aWxzL3J1bGV1dGlscy5oIgpAQCAtMTE4LDYgKzEyMCw3IEBAIHR5cGVkZWYgc3RydWN0IFJJ X0NvbnN0cmFpbnRJbmZvCiAJaW50MTYJCWNvbmZkZWxzZXRjb2xzW1JJX01BWF9OVU1LRVlT XTsgLyogYXR0bnVtcyBvZiBjb2xzIHRvIHNldCBvbgogCQkJCQkJCQkJCQkJICogZGVsZXRl ICovCiAJY2hhcgkJY29uZm1hdGNodHlwZTsJLyogZm9yZWlnbiBrZXkncyBtYXRjaCB0eXBl ICovCisJYm9vbAkJdGVtcG9yYWw7CQkvKiBpZiB0aGUgZm9yZWlnbiBrZXkgaXMgdGVtcG9y YWwgKi8KIAlpbnQJCQlua2V5czsJCQkvKiBudW1iZXIgb2Yga2V5IGNvbHVtbnMgKi8KIAlp bnQxNgkJcGtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0dG51bXMgb2YgcmVmZXJl bmNlZCBjb2xzICovCiAJaW50MTYJCWZrX2F0dG51bXNbUklfTUFYX05VTUtFWVNdOyAvKiBh dHRudW1zIG9mIHJlZmVyZW5jaW5nIGNvbHMgKi8KQEAgLTIwMCw4ICsyMDMsOSBAQCBzdGF0 aWMgaW50CXJpX051bGxDaGVjayhUdXBsZURlc2MgdHVwRGVzYywgVHVwbGVUYWJsZVNsb3Qg KnNsb3QsCiBzdGF0aWMgdm9pZCByaV9CdWlsZFF1ZXJ5S2V5KFJJX1F1ZXJ5S2V5ICprZXks CiAJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJIGlu dDMyIGNvbnN0cl9xdWVyeW5vKTsKLXN0YXRpYyBib29sIHJpX0tleXNFcXVhbChSZWxhdGlv biByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xv dCwKK3N0YXRpYyBib29sIHJpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxl U2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkJCQkgY29uc3Qg UklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspOworc3RhdGljIGJv b2wgcmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBv bGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwogc3RhdGljIGJvb2wgcmlfQXR0cmlidXRlc0Vx dWFsKE9pZCBlcV9vcHIsIE9pZCB0eXBlaWQsCiAJCQkJCQkJICAgRGF0dW0gb2xkdmFsdWUs IERhdHVtIG5ld3ZhbHVlKTsKIApAQCAtMzYxLDI2ICszNjUsNTcgQEAgUklfRktleV9jaGVj ayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAKIAkJLyogLS0tLS0tLS0tLQogCQkgKiBUaGUg cXVlcnkgc3RyaW5nIGJ1aWx0IGlzCi0JCSAqCVNFTEVDVCAxIEZST00gW09OTFldIDxwa3Rh YmxlPiB4IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQotCQkgKgkJICAgRk9SIEtFWSBT SEFSRSBPRiB4CisJCSAqCVNFTEVDVCAxCisJCSAqCUZST00gW09OTFldIDxwa3RhYmxlPiB4 IFdIRVJFIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKglGT1IgS0VZIFNIQVJFIE9GIHgK IAkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2Yg dGhlCiAJCSAqIGNvcnJlc3BvbmRpbmcgRksgYXR0cmlidXRlcy4KKwkJICoKKwkJICogQnV0 IGZvciB0ZW1wb3JhbCBGS3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUKKwkJICogdGhlIEZLJ3Mg cmFuZ2UgaXMgY29tcGxldGVseSBjb3ZlcmVkLgorCQkgKiBTbyB3ZSB1c2UgdGhpcyBxdWVy eSBpbnN0ZWFkOgorCQkgKiAgU0VMRUNUIDEKKwkJICoJRlJPTQkoCisJCSAqCQlTRUxFQ1Qg cGtwZXJpb2RhdHQgQVMgcgorCQkgKgkJRlJPTSAgIFtPTkxZXSBwa3RhYmxlIHgKKwkJICoJ CVdIRVJFICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJCUFORCAgICBwa3BlcmlvZGF0 dCAmJiAkbgorCQkgKgkJRk9SIEtFWSBTSEFSRSBPRiB4CisJCSAqCSkgeDEKKwkJICogIEhB VklORyAkbiA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90ZSBpZiBGT1IgS0VZIFNIQVJF IGV2ZXIgYWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJICogd2UgY2FuIG1ha2UgdGhp cyBhIGJpdCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJCSAqLwogCQlpbml0U3RyaW5n SW5mbygmcXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVsLT5yZF9yZWwtPnJlbGtpbmQg PT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQkiIiA6ICJPTkxZICI7CiAJCXF1 b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsKLQkJYXBwZW5kU3RyaW5nSW5m bygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIsCi0JCQkJCQkgcGtfb25seSwg cGtyZWxuYW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCXsKKwkJCXF1b3RlT25l TmFtZShhdHRuYW1lLAorCQkJCQlSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5 YnVmLAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIgRlJPTSAlcyVzIHgi LAorCQkJCQlhdHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9CisJCWVsc2Ugewor CQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIs CisJCQkJCQkJIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KIAkJcXVlcnlzZXAgPSAiV0hF UkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykKIAkJewot CQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tpXSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZvLT5m a19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa190eXBlOworCQkJT2lkCWZrX3R5cGU7CiAKKwkJ CXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOwog CQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKHBrX3JlbCwgcmlp bmZvLT5wa19hdHRudW1zW2ldKSk7CisKKwkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQl ZCIsIGkgKyAxKTsKIAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAog CQkJCQkJCWF0dG5hbWUsIHBrX3R5cGUsCkBAIC0zOTAsNiArNDI1LDggQEAgUklfRktleV9j aGVjayhUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEpCiAJCQlxdWVyeW9pZHNbaV0gPSBma190eXBl OwogCQl9CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiIEZPUiBLRVkg U0hBUkUgT0YgeCIpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJCWFwcGVuZFN0cmlu Z0luZm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkIDxAIHBnX2NhdGFsb2cucmFuZ2Vf YWdnKHgxLnIpIiwgcmlpbmZvLT5ua2V5cyk7CiAKIAkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0 aGUgcGxhbiAqLwogCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWlu Zm8tPm5rZXlzLCBxdWVyeW9pZHMsCkBAIC00OTcsMjEgKzUzNCw0OSBAQCByaV9DaGVja19Q a19NYXRjaChSZWxhdGlvbiBwa19yZWwsIFJlbGF0aW9uIGZrX3JlbCwKIAkJICoJCSAgIEZP UiBLRVkgU0hBUkUgT0YgeAogCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0 ZXJzIGFyZSB0aG9zZSBvZiB0aGUKIAkJICogUEsgYXR0cmlidXRlcyB0aGVtc2VsdmVzLgor CQkgKiBCdXQgZm9yIHRlbXBvcmFsIEZLcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorCQkgKiB0 aGUgRksncyByYW5nZSBpcyBjb21wbGV0ZWx5IGNvdmVyZWQuCisJCSAqIFNvIHdlIHVzZSB0 aGlzIHF1ZXJ5IGluc3RlYWQ6CisJCSAqICBTRUxFQ1QgMQorCQkgKiAgRlJPTSAgICAoCisJ CSAqCSAgU0VMRUNUIHBrcGVyaW9kYXR0IEFTIHIKKwkJICoJICBGUk9NICAgW09OTFldIHBr dGFibGUgeAorCQkgKgkgIFdIRVJFICBwa2F0dDEgPSAkMSBbQU5EIC4uLl0KKwkJICoJICBB TkQgICAgcGtwZXJpb2RhdHQgJiYgJG4KKwkJICoJICBGT1IgS0VZIFNIQVJFIE9GIHgKKwkJ ICogICkgeDEKKwkJICogIEhBVklORyAkbiA8QCByYW5nZV9hZ2coeDEucikKKwkJICogTm90 ZSBpZiBGT1IgS0VZIFNIQVJFIGV2ZXIgYWxsb3dzIEdST1VQIEJZIGFuZCBIQVZJTkcKKwkJ ICogd2UgY2FuIG1ha2UgdGhpcyBhIGJpdCBzaW1wbGVyLgogCQkgKiAtLS0tLS0tLS0tCiAJ CSAqLwogCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOwogCQlwa19vbmx5ID0gcGtfcmVs LT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSA/CiAJCQki IiA6ICJPTkxZICI7CiAJCXF1b3RlUmVsYXRpb25OYW1lKHBrcmVsbmFtZSwgcGtfcmVsKTsK LQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1QgMSBGUk9NICVzJXMgeCIs Ci0JCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwp CisJCXsKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJCWFwcGVuZFN0cmlu Z0luZm8oJnF1ZXJ5YnVmLAorCQkJCQkiU0VMRUNUIDEgRlJPTSAoU0VMRUNUICVzIEFTIHIg RlJPTSAlcyVzIHgiLAorCQkJCQlhdHRuYW1lLCBwa19vbmx5LCBwa3JlbG5hbWUpOworCQl9 CisJCWVsc2UKKwkJeworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJTRUxFQ1Qg MSBGUk9NICVzJXMgeCIsCisJCQkJCXBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwogCQlx dWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5 czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlp bmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAkJcGtfdHlwZTsKIAorCQkJcGtfdHlwZSA9 IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQlxdW90ZU9u ZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pKTsKKwogCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CiAJ CQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKIAkJCQkJCQlhdHRuYW1l LCBwa190eXBlLApAQCAtNTIxLDYgKzU4Niw4IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0 aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlw ZTsKIAkJfQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZxdWVyeWJ1ZiwgIiBGT1IgS0VZ IFNIQVJFIE9GIHgiKTsKKwkJaWYgKHJpaW5mby0+dGVtcG9yYWwpCisJCQlhcHBlbmRTdHJp bmdJbmZvKCZxdWVyeWJ1ZiwgIikgeDEgSEFWSU5HICQlZCA8QCBwZ19jYXRhbG9nLnJhbmdl X2FnZyh4MS5yKSIsIHJpaW5mby0+bmtleXMpOwogCiAJCS8qIFByZXBhcmUgYW5kIHNhdmUg dGhlIHBsYW4gKi8KIAkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlp bmZvLT5ua2V5cywgcXVlcnlvaWRzLApAQCAtNjk1LDEwICs3NjIsMTYgQEAgcmlfcmVzdHJp Y3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlvbikKIAkJcXVlcnlz ZXAgPSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkr KykKIAkJewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+ cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwg cmlpbmZvLT5ma19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma19jb2xs ID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJ T2lkCQlwa190eXBlOworCQkJT2lkCQlma190eXBlOworCQkJT2lkCQlwa19jb2xsOworCQkJ T2lkCQlma19jb2xsOworCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKKwkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19yZWws IHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisKKwkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJZmtfY29sbCA9IFJJQXR0Q29sbGF0 aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQkJcXVvdGVPbmVOYW1l KGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKSk7CkBAIC0xMjEzLDYgKzEyODYsMTI2IEBAIHJpX3NldChUcmlnZ2VyRGF0YSAqdHJp Z2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJfQogfQogCisvKiAtLS0t LS0tLS0tCisgKiBUUklfRktleV9jaGVja19pbnMgLQorICoKKyAqCUNoZWNrIHRlbXBvcmFs IGZvcmVpZ24ga2V5IGV4aXN0ZW5jZSBhdCBpbnNlcnQgZXZlbnQgb24gRksgdGFibGUuCisg KiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktleV9jaGVja19pbnMoUEdfRlVOQ1RJ T05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdn ZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tU cmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlfY2hlY2tfaW5zIiwgUklfVFJJR1RZUEVfSU5TRVJU KTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNlLgorCSAqLworCXJl dHVybiBSSV9GS2V5X2NoZWNrKChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQpOwor fQorCisKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX3VwZCAtCisgKgorICoJ Q2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IHVwZGF0ZSBldmVudCBv biBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2NoZWNr X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlz IGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkg Ki8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVja191cGQiLCBSSV9U UklHVFlQRV9VUERBVEUpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggSU5TRVJUIGNh c2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZjaW5m by0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlfbm9hY3Rp b25fZGVsIC0KKyAqCisgKglHaXZlIGFuIGVycm9yIGFuZCByb2xsIGJhY2sgdGhlIGN1cnJl bnQgdHJhbnNhY3Rpb24gaWYgdGhlCisgKglkZWxldGUgaGFzIHJlc3VsdGVkIGluIGEgdmlv bGF0aW9uIG9mIHRoZSBnaXZlbiB0ZW1wb3JhbAorICoJcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IGNvbnN0cmFpbnQuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktleV9ub2Fj dGlvbl9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhp cyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQu CisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX2Rl bCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBS RVNUUklDVC9VUERBVEUgY2FzZXMuCisJICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmln Z2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgorICogVFJJX0ZL ZXlfcmVzdHJpY3RfZGVsIC0KKyAqCisgKiBSZXN0cmljdCBkZWxldGUgZnJvbSBQSyB0YWJs ZSB0byByb3dzIHVucmVmZXJlbmNlZCBieSBmb3JlaWduIGtleS4KKyAqCisgKiBUaGUgU1FM IHN0YW5kYXJkIGludGVuZHMgdGhhdCB0aGlzIHJlZmVyZW50aWFsIGFjdGlvbiBvY2N1ciBl eGFjdGx5IHdoZW4KKyAqIHRoZSBkZWxldGUgaXMgcGVyZm9ybWVkLCByYXRoZXIgdGhhbiBh ZnRlci4gIFRoaXMgYXBwZWFycyB0byBiZQorICogdGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3 ZWVuICJOTyBBQ1RJT04iIGFuZCAiUkVTVFJJQ1QiLiAgSW4gUG9zdGdyZXMKKyAqIHdlIHN0 aWxsIGltcGxlbWVudCB0aGlzIGFzIGFuIEFGVEVSIHRyaWdnZXIsIGJ1dCBpdCdzIG5vbi1k ZWZlcnJhYmxlLgorICovCitEYXR1bQorVFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZVTkNU SU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBj YWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIo ZmNpbmZvLCAiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsK KworCS8qIFNoYXJlIGNvZGUgd2l0aCBOTyBBQ1RJT04vVVBEQVRFIGNhc2VzLiAqLworCXJl dHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxz ZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9ub2FjdGlvbl91cGQgLQorICoKKyAqIEdpdmUg YW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpZiB0aGUK KyAqIHVwZGF0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9sYXRpb24gb2YgdGhlIGdpdmVuIHJl ZmVyZW50aWFsCisgKiBpbnRlZ3JpdHkgY29uc3RyYWludC4KKyAqLworRGF0dW0KK1RSSV9G S2V5X25vYWN0aW9uX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQg dGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X25vYWN0aW9uX3Vw ZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGggUkVTVFJJ Q1QvREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X3Jlc3Ry aWN0X3VwZCAtCisgKgorICogUmVzdHJpY3QgdXBkYXRlIG9mIFBLIHRvIHJvd3MgdW5yZWZl cmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBTUUwgc3RhbmRhcmQgaW50ZW5k cyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0bHkgd2hlbgorICog dGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFuIGFmdGVyLiAgVGhpcyBhcHBl YXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4gIk5PIEFDVElPTiIg YW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ugc3RpbGwgaW1wbGVtZW50IHRo aXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVycmFibGUuCisgKi8K K0RhdHVtCitUUklfRktleV9yZXN0cmljdF91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkv KiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0 IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktl eV9yZXN0cmljdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29k ZSB3aXRoIE5PIEFDVElPTi9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0 KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKK30KIAogLyoKICAq IFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KQEAgLTEyNDEsNyArMTQzNCw3IEBA IFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIHBrX3JlbCwKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogSWYgYWxsIG9sZCBhbmQgbmV3 IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBpcyBuZWVkZWQgKi8KLQlpZiAobmV3 c2xvdCAmJiByaV9LZXlzRXF1YWwocGtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8s IHRydWUpKQorCWlmIChuZXdzbG90ICYmIHJpX0tleXNTdGFibGUocGtfcmVsLCBvbGRzbG90 LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNl IHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KQEAgLTEzNDAsNyArMTUzMyw3IEBA IFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0 aW9uIGZrX3JlbCwKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBJZiBhbGwgb2xkIGFuZCBuZXcg a2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5lZWRlZCAqLwotCWlmIChyaV9L ZXlzRXF1YWwoZmtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8sIGZhbHNlKSkKKwlp ZiAocmlfS2V5c1N0YWJsZShma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgZmFs c2UpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUg dHJpZ2dlci4gKi8KQEAgLTE0ODgsMTUgKzE2ODEsMTcgQEAgUklfSW5pdGlhbF9DaGVjayhU cmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCkKIAlz ZXAgPSAiKCI7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCiAJ ewotCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKLQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCWZrX2NvbGwgPSBSSUF0dENv bGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCU9pZAlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJT2lkCWZr X3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQlP aWQJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1z W2ldKTsKKwkJT2lkCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ ZmtfYXR0bnVtc1tpXSk7CiAKIAkJcXVvdGVPbmVOYW1lKHBrYXR0bmFtZSArIDMsCiAJCQkJ CSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKwogCQlxdW90 ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKIAkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5m by0+ZmtfYXR0bnVtc1tpXSkpOworCiAJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHNl cCwKIAkJCQkJCXBrYXR0bmFtZSwgcGtfdHlwZSwKIAkJCQkJCXJpaW5mby0+cGZfZXFfb3By c1tpXSwKQEAgLTIxMzcsNiArMjMzMiw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQg Y29uc3RyYWludE9pZCkKIAlyaWluZm8gPSAoUklfQ29uc3RyYWludEluZm8gKikgaGFzaF9z ZWFyY2gocmlfY29uc3RyYWludF9jYWNoZSwKIAkJCQkJCQkJCQkJICAgJmNvbnN0cmFpbnRP aWQsCiAJCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisKIAlpZiAoIWZvdW5k KQogCQlyaWluZm8tPnZhbGlkID0gZmFsc2U7CiAJZWxzZSBpZiAocmlpbmZvLT52YWxpZCkK QEAgLTIxNzEsNiArMjM2Nyw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5mbyhPaWQgY29uc3Ry YWludE9pZCkKIAlyaWluZm8tPmNvbmZ1cGR0eXBlID0gY29uRm9ybS0+Y29uZnVwZHR5cGU7 CiAJcmlpbmZvLT5jb25mZGVsdHlwZSA9IGNvbkZvcm0tPmNvbmZkZWx0eXBlOwogCXJpaW5m by0+Y29uZm1hdGNodHlwZSA9IGNvbkZvcm0tPmNvbmZtYXRjaHR5cGU7CisJcmlpbmZvLT50 ZW1wb3JhbCA9IGNvbkZvcm0tPmNvbnRlbXBvcmFsOwogCiAJRGVjb25zdHJ1Y3RGa0NvbnN0 cmFpbnRSb3codHVwLAogCQkJCQkJCSAgICZyaWluZm8tPm5rZXlzLApAQCAtMjc5MSw5ICsy OTg4LDEyIEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSwgU1BJUGxh blB0ciBwbGFuKQogCiAKIC8qCi0gKiByaV9LZXlzRXF1YWwgLQorICogcmlfS2V5c1N0YWJs ZSAtCiAgKgotICogQ2hlY2sgaWYgYWxsIGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBORVcgYXJl IGVxdWFsLgorICogQ2hlY2sgaWYgYWxsIGtleSB2YWx1ZXMgaW4gT0xEIGFuZCBORVcgYXJl ICJlcXVpdmFsZW50IjoKKyAqIEZvciBub3JtYWwgRktzIHdlIGNoZWNrIGZvciBlcXVhbGl0 eS4KKyAqIEZvciB0ZW1wb3JhbCBGS3Mgd2UgY2hlY2sgdGhhdCB0aGUgUEsgc2lkZSBpcyBh IHN1cGVyc2V0IG9mIGl0cyBvbGQgdmFsdWUsCisgKiBvciB0aGUgRksgc2lkZSBpcyBhIHN1 YnNldC4KICAqCiAgKiBOb3RlOiBhdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdpc2ggdG8gcmVk ZWZpbmUgdGhpcyBhcyBjaGVja2luZyBmb3IKICAqICJJUyBOT1QgRElTVElOQ1QiIHJhdGhl ciB0aGFuICI9IiwgdGhhdCBpcywgYWxsb3cgdHdvIG51bGxzIHRvIGJlCkBAIC0yODAxLDcg KzMwMDEsNyBAQCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5ICprZXksIFNQSVBs YW5QdHIgcGxhbikKICAqIHByZXZpb3VzbHkgZm91bmQgYXQgbGVhc3Qgb25lIG9mIHRoZSBy b3dzIHRvIGNvbnRhaW4gbm8gbnVsbHMuCiAgKi8KIHN0YXRpYyBib29sCi1yaV9LZXlzRXF1 YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNs b3QgKm5ld3Nsb3QsCityaV9LZXlzU3RhYmxlKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNs b3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCQkJIGNvbnN0IFJJX0Nv bnN0cmFpbnRJbmZvICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrKQogewogCWNvbnN0IGludDE2 ICphdHRudW1zOwpAQCAtMjgzNCwzNSArMzAzNCw4NiBAQCByaV9LZXlzRXF1YWwoUmVsYXRp b24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Ns b3QsCiAKIAkJaWYgKHJlbF9pc19waykKIAkJewotCQkJLyoKLQkJCSAqIElmIHdlIGFyZSBs b29raW5nIGF0IHRoZSBQSyB0YWJsZSwgdGhlbiBkbyBhIGJ5dGV3aXNlCi0JCQkgKiBjb21w YXJpc29uLiAgV2UgbXVzdCBwcm9wYWdhdGUgUEsgY2hhbmdlcyBpZiB0aGUgdmFsdWUgaXMK LQkJCSAqIGNoYW5nZWQgdG8gb25lIHRoYXQgImxvb2tzIiBkaWZmZXJlbnQgYnV0IHdvdWxk IGNvbXBhcmUgYXMKLQkJCSAqIGVxdWFsIHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVyYXRvci4g IFRoaXMgb25seSBtYWtlcyBhCi0JCQkgKiBkaWZmZXJlbmNlIGZvciBPTiBVUERBVEUgQ0FT Q0FERSwgYnV0IGZvciBjb25zaXN0ZW5jeSB3ZSB0cmVhdAotCQkJICogYWxsIGNoYW5nZXMg dG8gdGhlIFBLIHRoZSBzYW1lLgotCQkJICovCi0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQg PSBUdXBsZURlc2NBdHRyKG9sZHNsb3QtPnR0c190dXBsZURlc2NyaXB0b3IsIGF0dG51bXNb aV0gLSAxKTsKKwkJCWlmIChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5 cyAtIDEpCisJCQl7CisJCQkJaWYgKHJpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayh0cnVl LCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQll bHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiB3ZSBhcmUgbG9va2luZyBhdCB0aGUgUEsg dGFibGUsIHRoZW4gZG8gYSBieXRld2lzZQorCQkJCSAqIGNvbXBhcmlzb24uICBXZSBtdXN0 IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcworCQkJCSAqIGNoYW5nZWQg dG8gb25lIHRoYXQgImxvb2tzIiBkaWZmZXJlbnQgYnV0IHdvdWxkIGNvbXBhcmUgYXMKKwkJ CQkgKiBlcXVhbCB1c2luZyB0aGUgZXF1YWxpdHkgb3BlcmF0b3IuICBUaGlzIG9ubHkgbWFr ZXMgYQorCQkJCSAqIGRpZmZlcmVuY2UgZm9yIE9OIFVQREFURSBDQVNDQURFLCBidXQgZm9y IGNvbnNpc3RlbmN5IHdlIHRyZWF0CisJCQkJICogYWxsIGNoYW5nZXMgdG8gdGhlIFBLIHRo ZSBzYW1lLgorCQkJCSAqLworCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVz Y0F0dHIob2xkc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgYXR0bnVtc1tpXSAtIDEpOwog Ci0JCQlpZiAoIWRhdHVtX2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2YWx1ZSwgYXR0LT5hdHRi eXZhbCwgYXR0LT5hdHRsZW4pKQotCQkJCXJldHVybiBmYWxzZTsKKwkJCQlpZiAoIWRhdHVt X2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2YWx1ZSwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRs ZW4pKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQkv KgotCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRoZSBhcHByb3ByaWF0 ZSBlcXVhbGl0eQotCQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBlcXVh bCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCi0JCQkgKiBjb25zdHJhaW50IGFmdGVyIHRoZSB1 cGRhdGUuCi0JCQkgKi8KLQkJCWlmICghcmlfQXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZf ZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVtc1tpXSksCi0JCQkJCQkJCQlvbGR2 YWx1ZSwgbmV3dmFsdWUpKQotCQkJCXJldHVybiBmYWxzZTsKKwkJCWlmIChyaWluZm8tPnRl bXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5cyAtIDEpCisJCQl7CisJCQkJaWYgKHJpX1Jh bmdlQXR0cmlidXRlTmVlZHNDaGVjayhmYWxzZSwgb2xkdmFsdWUsIG5ld3ZhbHVlKSkKKwkJ CQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCS8qCisJCQkJICog Rm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBlcXVhbGl0 eQorCQkJCSAqIG9wZXJhdG9yLiAgQ2hhbmdlcyB0aGF0IGNvbXBhcmUgZXF1YWwgd2lsbCBz dGlsbCBzYXRpc2Z5IHRoZQorCQkJCSAqIGNvbnN0cmFpbnQgYWZ0ZXIgdGhlIHVwZGF0ZS4K KwkJCQkgKi8KKwkJCQlpZiAoIXJpX0F0dHJpYnV0ZXNFcXVhbChyaWluZm8tPmZmX2VxX29w cnNbaV0sIFJJQXR0VHlwZShyZWwsIGF0dG51bXNbaV0pLAorCQkJCQkJCQkJCW9sZHZhbHVl LCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KIAkJfQogCX0KIAogCXJl dHVybiB0cnVlOwogfQogCisvKgorICogcmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrIC0K KyAqCisgKiBDb21wYXJlIG9sZCBhbmQgbmV3IHZhbHVlcywgYW5kIHJldHVybiB0cnVlIGlm IHdlIG5lZWQgdG8gY2hlY2sgdGhlIEZLLgorICoKKyAqIE5COiB3ZSBoYXZlIGFscmVhZHkg Y2hlY2tlZCB0aGF0IG5laXRoZXIgdmFsdWUgaXMgbnVsbC4KKyAqLworc3RhdGljIGJvb2wK K3JpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayhib29sIHJlbF9pc19waywgRGF0dW0gb2xk dmFsdWUsIERhdHVtIG5ld3ZhbHVlKQoreworCVJhbmdlVHlwZSAqb2xkcmFuZ2UsICpuZXdy YW5nZTsKKwlPaWQgb2xkcm5ndHlwZSwgbmV3cm5ndHlwZTsKKwlUeXBlQ2FjaGVFbnRyeSAq dHlwY2FjaGU7CisKKwlvbGRyYW5nZSA9IERhdHVtR2V0UmFuZ2VUeXBlUChvbGR2YWx1ZSk7 CisJbmV3cmFuZ2UgPSBEYXR1bUdldFJhbmdlVHlwZVAobmV3dmFsdWUpOworCW9sZHJuZ3R5 cGUgPSBSYW5nZVR5cGVHZXRPaWQob2xkcmFuZ2UpOworCW5ld3JuZ3R5cGUgPSBSYW5nZVR5 cGVHZXRPaWQobmV3cmFuZ2UpOworCisJaWYgKG9sZHJuZ3R5cGUgIT0gbmV3cm5ndHlwZSkK KwkJZWxvZyhFUlJPUiwgInJhbmdlIHR5cGVzIGFyZSBpbmNvbnNpc3RlbnQiKTsKKworCXR5 cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUob2xkcm5ndHlwZSwgVFlQRUNBQ0hFX1JBTkdF X0lORk8pOworCWlmICh0eXBjYWNoZS0+cm5nZWxlbXR5cGUgPT0gTlVMTCkKKwkJZWxvZyhF UlJPUiwgInR5cGUgJXUgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIG9sZHJuZ3R5cGUpOworCisJ aWYgKHJlbF9pc19waykKKwkJLyogSWYgdGhlIFBLJ3MgcmFuZ2Ugc2hydW5rLCBhIGNvbmZs aWN0IGlzIHBvc3NpYmxlLiAqLworCQlyZXR1cm4gIXJhbmdlX2VxX2ludGVybmFsKHR5cGNh Y2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2UpICYmCisJCQkhcmFuZ2VfY29udGFpbnNfaW50ZXJu YWwodHlwY2FjaGUsIG5ld3JhbmdlLCBvbGRyYW5nZSk7CisJZWxzZQorCQkvKiBJZiB0aGUg RksncyByYW5nZSBncmV3LCBhIGNvbmZsaWN0IGlzIHBvc3NpYmxlLiAqLworCQlyZXR1cm4g IXJhbmdlX2VxX2ludGVybmFsKHR5cGNhY2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2UpICYmCisJ CQlyYW5nZV9jb250YWluc19pbnRlcm5hbCh0eXBjYWNoZSwgbmV3cmFuZ2UsIG9sZHJhbmdl KTsKK30KIAogLyoKICAqIHJpX0F0dHJpYnV0ZXNFcXVhbCAtCkBAIC0zMDIxLDEwICszMjcy LDE2IEBAIFJJX0ZLZXlfdHJpZ2dlcl90eXBlKE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9G S0VZX1NFVERFRkFVTFRfVVBEOgogCQljYXNlIEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJ CWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX1JFU1RS SUNUX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX1VQRDoKKwkJY2FzZSBGX1RS SV9GS0VZX05PQUNUSU9OX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX1VQRDoK IAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwogCiAJCWNhc2UgRl9SSV9GS0VZX0NIRUNLX0lO UzoKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0hF Q0tfSU5TOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0hFQ0tfVVBEOgogCQkJcmV0dXJuIFJJX1RS SUdHRVJfRks7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVs ZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggN2Fh NWI2MmFiOC4uOTliYmU2ZDk3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpA QCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIo T2lkIHZpZXdvaWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1 bW4pOwogc3RhdGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lk LCBib29sIHByZXR0eSk7CiBzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9pZCBpbmRleElkLAot CQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5mbyBidWYpOworCQkJ CQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRoUGVyaW9kLCBTdHJpbmdJ bmZvIGJ1Zik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3J1bGVkZWZfd29ya2VyKE9pZCBydWxl b2lkLCBpbnQgcHJldHR5RmxhZ3MpOwogc3RhdGljIGNoYXIgKnBnX2dldF9pbmRleGRlZl93 b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAkJCQkJCQkJCWNvbnN0IE9pZCAq ZXhjbHVkZU9wcywKQEAgLTIyNDcsNyArMjI0NywxMCBAQCBwZ19nZXRfY29uc3RyYWludGRl Zl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwg PSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkg QW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2lu ZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGNvbkZvcm0tPmNvbmluZGlkLCBm YWxzZSwgJmJ1Zik7CisJCQkJLyogSWYgaXQgaXMgYSB0ZW1wb3JhbCBmb3JlaWduIGtleSB0 aGVuIGl0IHVzZXMgUEVSSU9ELiAqLworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJy YXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbmlu ZGlkLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbnRlbXBvcmFsLCAmYnVmKTsK IAogCQkJCS8qIGFkZCBmb3JlaWduIHJlbGF0aW9uIG5hbWUgKi8KIAkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWYsICIpIFJFRkVSRU5DRVMgJXMoIiwKQEAgLTIyNTgsNyArMjI2MSw5IEBA IHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1 bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lE LCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZmtleSk7CiAKLQkJ CQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29uZnJlbGlk LCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsICZidWYpOworCQkJCWRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsCisJCQkJCQkJCQkJCSBj b25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsCisJCQkJCQkJCQkJCSBjb25Gb3JtLT5jb250ZW1w b3JhbCwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwog CkBAIC0yMzQ0LDcgKzIzNDksNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lk IGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlpZiAoIWlzbnVsbCkKIAkJ CQl7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiAoIik7Ci0JCQkJCWRl Y29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgSW52 YWxpZE9pZCwgZmFsc2UsICZidWYpOworCQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2Fy cmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIEludmFsaWRPaWQsIGZhbHNlLCBmYWxzZSwg JmJ1Zik7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAJCQkJfQog CkBAIC0yMzg3LDcgKzIzOTIsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lk IGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlpbmRleElkID0gY29uRm9y bS0+Y29uaW5kaWQ7CiAJCQkJU3lzQ2FjaGVHZXRBdHRyKENPTlNUUk9JRCwgdHVwLAogCQkJ CQkJICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wLCAmaXNudWxsKTsKLQkJCQlrZXlh dHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJl bGlkLCBpbmRleElkLCAhaXNudWxsLCAmYnVmKTsKKwkJCQlrZXlhdHRzID0gZGVjb21waWxl X2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBpbmRleElkLCAh aXNudWxsLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVm LCAnKScpOwogCkBAIC0yNTgzLDcgKzI1ODgsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93 b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKICAqLwogc3RhdGlj IGludAogZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhf YXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQsCi0JCQkJCQkJIGJvb2wgd2l0aG91dE92 ZXJsYXBzLCBTdHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMs IGJvb2wgd2l0aFBlcmlvZCwgU3RyaW5nSW5mbyBidWYpCiB7CiAJRGF0dW0JICAgKmtleXM7 CiAJaW50CQkJbktleXM7CkBAIC0yNjA0LDYgKzI2MDksOCBAQCBkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLCBPaWQg aW5kZXhJZCwKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlm aWVyKGNvbE5hbWUpKTsKIAkJZWxzZSBpZiAod2l0aG91dE92ZXJsYXBzICYmIGogPT0gbktl eXMgLSAxKQogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIFdJVEhPVVQgT1ZFUkxB UFMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKKwkJZWxzZSBpZiAod2l0aFBlcmlv ZCAmJiBqID09IG5LZXlzIC0gMSkKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCBQRVJJ T0QgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAkJZWxzZQogCQkJYXBwZW5k U3RyaW5nSW5mbyhidWYsICIsICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJ fQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAppbmRleCA3ODZhOWNhOTA0Li43 Y2EwNTM0YjQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaApAQCAtMTI3 LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJl bGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07CiAKIAkvKgotCSAqIElmIGEgZm9yZWln biBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3Ig ZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGNv bXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9mIHRoZSBjb25zdHJh aW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3Ip OwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQ SyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0 aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAog CSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSBy ZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29ucHBlcW9wWzFdIEJLSV9MT09L VVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lE cyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBh IGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBjb21wYXJpc29uIG9wZXJh dG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5lLiwgZXF1 YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQogCSAqLwogCU9pZAkJCWNvbmZm ZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKQEAgLTE4MCw3ICsxODAsNyBAQCBE RUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29ucGFyZW50aWRfaW5kZXgsIDI1NzksIENv bnN0cmFpbnRQYXJlbnRJbmRleElkLCBwZwogCiAvKiBjb25rZXkgY2FuIGNvbnRhaW4gemVy byAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hvbGUtcm93IFZhciBpcyB1c2VkICovCiBE RUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29ucmVsaWQsIGNvbmtleSksIHBnX2F0 dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKLURFQ0xBUkVfQVJSQVlfRk9SRUlHTl9L RVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRu dW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlfT1BUKChjb25mcmVsaWQsIGNvbmZr ZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVtKSk7CiAKICNpZmRlZiBFWFBP U0VfVE9fQ0xJRU5UX0NPREUKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggOTgw NWJjNjExOC4uMzEzMjQ2OGE5YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC0z OTQyLDYgKzM5NDIsMzAgQEAKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5 cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ1JJX0ZLZXlfbm9hY3Rpb25fdXBkJyB9LAogCisj IFRlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBjb25zdHJhaW50IHRyaWdnZXJzCit7 IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3Jp dHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMnLAorICBwcm9uYW1lID0+ICdUUklfRktl eV9jaGVja19pbnMnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdn ZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jaGVja19p bnMnIH0sCit7IG9pZCA9PiAnNjEyMycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlh bCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMnLAorICBwcm9uYW1lID0+ ICdUUklfRktleV9jaGVja191cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUg PT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktl eV9jaGVja191cGQnIH0sCit7IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ICd0ZW1wb3JhbCBy ZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFJFU1RSSUNUJywKKyAgcHJvbmFtZSA9 PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9y ZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAn VFJJX0ZLZXlfcmVzdHJpY3RfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjcnLCBkZXNjciA9PiAn dGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBSRVNUUklDVCcsCisg IHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2 JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBw cm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTMyJywg ZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgTk8g QUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJywgcHJvdm9s YXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMg PT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVsJyB9LAoreyBvaWQg PT4gJzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9O IFVQREFURSBOTyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl91 cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBw cm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl91cGQn IH0sCisKIHsgb2lkID0+ICcxNjY2JywKICAgcHJvbmFtZSA9PiAndmFyYml0ZXEnLCBwcm9s ZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAgcHJvYXJndHlwZXMg PT4gJ3ZhcmJpdCB2YXJiaXQnLCBwcm9zcmMgPT4gJ2JpdGVxJyB9LApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCmluZGV4IDA3NDdiNTRiMjYuLjQ3OWI1ZmZhMzUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKQEAgLTI2MzIsNyArMjYzMiw5IEBAIHR5cGVkZWYgc3RydWN0IENvbnN0 cmFpbnQKIAkvKiBGaWVsZHMgdXNlZCBmb3IgRk9SRUlHTiBLRVkgY29uc3RyYWludHM6ICov CiAJUmFuZ2VWYXIgICAqcGt0YWJsZTsJCS8qIFByaW1hcnkga2V5IHRhYmxlICovCiAJTGlz dAkgICAqZmtfYXR0cnM7CQkvKiBBdHRyaWJ1dGVzIG9mIGZvcmVpZ24ga2V5ICovCisJTm9k ZQkgICAqZmtfcGVyaW9kOwkJLyogU3RyaW5nIG5vZGUgbmFtaW5nIFBlcmlvZCBvciByYW5n ZSBjb2x1bW4gKi8KIAlMaXN0CSAgICpwa19hdHRyczsJCS8qIENvcnJlc3BvbmRpbmcgYXR0 cnMgaW4gUEsgdGFibGUgKi8KKwlOb2RlCSAgICpwa19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9k ZSBuYW1pbmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwogCWNoYXIJCWZrX21hdGNodHlw ZTsJLyogRlVMTCwgUEFSVElBTCwgU0lNUExFICovCiAJY2hhcgkJZmtfdXBkX2FjdGlvbjsJ LyogT04gVVBEQVRFIGFjdGlvbiAqLwogCWNoYXIJCWZrX2RlbF9hY3Rpb247CS8qIE9OIERF TEVURSBhY3Rpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3Qu aCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA1OTg0ZGNmYTRiLi5jY2Y1 YmY4YWE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMjYsNiArMzI2LDcgQEAgUEdfS0VZ V09SRCgicGFydGlhbCIsIFBBUlRJQUwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBBUlRJVElPTiwgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc2luZyIsIFBBU1NJTkcsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhc3N3b3JkIiwgUEFT U1dPUkQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BHX0tFWVdPUkQoInBl cmlvZCIsIFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dp dGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0 X292ZXJsYXBzLm91dAppbmRleCA1ZTEyNmRmMDcxLi4xNzQ5OTQ1ZTcxIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTM1 NywzICszNTcsNDY0IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9h dDsKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKy0tCist LSB0ZXN0IEZLIGRlcGVuZGVuY2llcworLS0KKy0tIGNhbid0IGRyb3AgYSByYW5nZSByZWZl cmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVBVEUgVEFCTEUgdGVt cG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJB SU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOworQUxURVIgVEFC TEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworRVJST1I6ICBjYW5ub3QgZHJv cCBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzIGJlY2F1c2Ugb3RoZXIgb2Jq ZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIGNvbnN0cmFpbnQgdGVtcG9yYWxfZmtfcm5n MnJuZ19mayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5nIGRlcGVuZHMgb24gY29sdW1u IHZhbGlkX2F0IG9mIHRhYmxlIHRlbXBvcmFsMworSElOVDogIFVzZSBEUk9QIC4uLiBDQVND QURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK0FMVEVSIFRBQkxFIHRl bXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBj YXNjYWRlcyB0byBjb25zdHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgb24gdGFibGUg dGVtcG9yYWxfZmtfcm5nMnJuZworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOwor RFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBGT1JFSUdOIEtFWSwgcmFuZ2Ug cmVmZXJlbmNlcyByYW5nZQorLS0KKy0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGggYSBtaXNt YXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdlLAorCXBhcmVudF9pZCBpbnQ0 cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrMiBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkK Kyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsyIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQKK0RFVEFJTDogIEtleSBjb2x1bW5zICJ2 YWxpZF9hdCIgYW5kICJ2YWxpZF9hdCIgYXJlIG9mIGluY29tcGF0aWJsZSB0eXBlczogaW50 NHJhbmdlIGFuZCB0c3JhbmdlLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0 cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisp OworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworLS0gd2l0aCBpbmZlcnJlZCBQ SyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRf aWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklN QVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOworRFJPUCBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNh dGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJl bnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKQorKTsK K0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3Qg Y29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RS QUlOVAorLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZSwgYW5kIHdyb25nIGNvbHVtbiB0eXBlOgorQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrLAorCUFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIGRhdGVyYW5nZSBVU0lO RyBkYXRlcmFuZ2UobG93ZXIodmFsaWRfYXQpOjpkYXRlLCB1cHBlcih2YWxpZF9hdCk6OmRh dGUpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJ T0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIGNhbm5vdCBiZSBp bXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVtbnMgInZhbGlkX2F0IiBhbmQgInZhbGlk X2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBkYXRlcmFuZ2UgYW5kIHRzcmFuZ2Uu CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUxURVIgQ09MVU1OIHZhbGlk X2F0IFRZUEUgdHNyYW5nZSBVU0lORyB0c3JhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIo dmFsaWRfYXQpKTsKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFi bGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tIHNob3VsZCBmYWls IGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpOworRVJST1I6ICBmb3Jl aWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxp Y2F0ZXMKKy0tCistLSB0ZXN0IHdpdGggcm93cyBhbHJlYWR5CistLQorREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcK KwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAx LTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nOworRVJST1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxl ICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZh bGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAw MSAwMDowMDowMCAyMDE4IikpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9y bmciLgorLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmc7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKy0tCistLSB0ZXN0IHBnX2dl dF9jb25zdHJhaW50ZGVmCistLQorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkg RlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5nMnJu Z19mayc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfY29uc3Ry YWludGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkgUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcoaWQsIFBFUklPRCB2YWxpZF9h dCkKKygxIHJvdykKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgaW5zZXJ0cworLS0KK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRB SUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNl bnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLSBub3cgaXQgc2hvdWxkIHdvcms6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4 LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAx JyksICdbMSwxXScpOworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KK1VQREFU RSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEt MDInLCAnMjAxOC0wMy0wMScpIFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIHNob3VsZCBmYWls OgorVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTA1LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJST1I6 ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2aW9s YXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIgor REVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzEsMiksIFsiVHVlIEphbiAw MiAwMDowMDowMCAyMDE4IiwiVHVlIE1heSAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5vdCBw cmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorVVBEQVRFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgU0VUIHBhcmVudF9pZCA9ICdbOCw4XScgV0hFUkUgaWQgPSAnWzEsMV0nOworRVJS T1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlkX2F0KT0oWzgsOSksIFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikpIGlzIG5v dCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9ybmciLgorLS0gQUxURVIgRksgREVGRVJS QUJMRQorQkVHSU47CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMKKyAgICAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpLAorICAgICgn WzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CisgIElOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTCisgICAgKCdbMywzXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKKyAgQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICAgIEFMVEVSIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19maworICAgIERFRkVSUkFCTEUgSU5JVElBTExZIERFRkVSUkVEOworICBE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOyAtLXNob3VsZCBu b3QgZmFpbCB5ZXQuCitDT01NSVQ7IC0tIHNob3VsZCBmYWlsIGhlcmUuCitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciLgorLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9OCistLQorLS0g YSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0 IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMg ZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSBy YW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg dHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIw MTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWls cyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBv cmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBw YXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVS RSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBv cmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtf cm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20g dGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVj dGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3Qg RksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsK Ky0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJpYyBpZCBp c24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2Nl ZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0 aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQ REFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMi0wMScs ICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRlIHRoYXQg ZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBvcmFsX3Ju ZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQor V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlM OiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBm cm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIGNoYW5naW5nIHRoZSBzY2Fs YXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJwor V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFs X2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIgorREVUQUlM OiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBm cm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4KKy0tIHRoZW4gZGVsZXRlIHRoZSBv YmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyB1cGRhdGUgc3VjY2VlZHM6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK1VQ REFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScs ICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tCistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIE5PIEFDVElPTgorLS0KK0FMVEVSIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m azsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gYSBQSyBkZWxldGUg dGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBzdWNjZWVkcyBldmVu IHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdl IGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywz XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIGRlbGV0 ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxl dGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3Ju ZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4g MDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGls bCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gdGhl biBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIGRlbGV0 ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxF VEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyBkZWxldGUgdGhhdCBz dWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1 c2UgdGhlIHJhbmdlIGlzbid0OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0w MScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScg QU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7Cist LSBhIFBLIGRlbGV0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBz YW1lIFBLIGRlbGV0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzMsM10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKTsKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0K Ky0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzYsNl0nKTsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENB U0NBREU7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3Jl aWduIGtleXMKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s5 LDldJyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBP TiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0 ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERF RkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNy YW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMiwxMl0nKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVM VCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmss CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitF UlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMK Ky0tIEZLIGJldHdlZW4gcGFydGl0aW9uZWQgdGFibGVzCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJh bmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3Ju Z19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBB UlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNd JywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJM RSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVT IElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdb MTIsMTJdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVT CisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAn b25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0w MScpLCAnb25lJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAndHdvJyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayBG T1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKSBQQVJU SVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScs ICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVB VEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhd JywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgaW5z ZXJ0cworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1Jyks ICdbMSwxXScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAxLTAxLTAxJywgJzIwMDIt MDEtMDEnKSwgJ1syLDJdJyksCisgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEn LCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMKKyAgKCdbMywzXScs IGRhdGVyYW5nZSgnMjAxMC0wMS0wMScsICcyMDEwLTAyLTE1JyksICdbMSwxXScpOworRVJS T1I6ICBpbnNlcnQgb3IgdXBkYXRlIG9uIHRhYmxlICJ0ZmtwMSIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayIK K0RFVEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbMDEtMDEtMjAx MCwwMi0xNS0yMDEwKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyIuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAt MDItMTUnKSwgJ1szLDNdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUg InRma3AxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZhbGlk X2F0KT0oWzMsNCksIFswMS0wMS0yMDAwLDAyLTE1LTIwMDApKSBpcyBub3QgcHJlc2VudCBp biB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIi4KKy0tIHBhcnRpdGlvbmVkIEZL IGNoaWxkIHVwZGF0ZXMKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTEzJykg V0hFUkUgaWQgPSAnWzIsMl0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBmaXJzdCBwYXJ0 aXRpb24gdG8gdGhlIHNlY29uZAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgU0VUIGlkID0gJ1s0LDRdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CistLSBtb3ZlIGEg cm93IGZyb20gdGhlIHNlY29uZCBwYXJ0aXRpb24gdG8gdGhlIGZpcnN0CitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzEsMV0nIFdIRVJFIGlk ID0gJ1s0LDRdJzsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywg JzIwMDAtMDQtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGNvbmZsaWN0aW5n IGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGZrcDFfcGtleSIK K0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDAwLDA0LTAx LTIwMDApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsx LDIpLCBbMDEtMDEtMjAwMCwwNC0wMS0yMDAwKSkuCistLSBwYXJ0aXRpb25lZCBGSyBwYXJl bnQgdXBkYXRlcyBOTyBBQ1RJT04KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAy LTAxJykpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1 LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdb NSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQg dmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0g c2hvdWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIg dmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBb MDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxl ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRf aWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIE5P IEFDVElPTgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBm YWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAx LTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCistLSBjbGVhbiB1cDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0g J1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklD VAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrOworQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VU IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUs NV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp CisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQp PShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQg ZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCistLSBjbGVh biB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hF UkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQg ZGVsZXRlcyBSRVNUUklDVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUs NV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0t IHNob3VsZCBmYWlsOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpOworRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0 cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCistLSBwYXJ0aXRpb25l ZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERF TEVURSBDQVNDQURFIE9OIFVQREFURSBDQVNDQURFOworRVJST1I6ICBhY3Rpb24gbm90IHN1 cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCistLSBwYXJ0aXRpb25lZCBGSyBw YXJlbnQgZGVsZXRlcyBDQVNDQURFCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRl cyBTRVQgTlVMTAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr LAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCQlPTiBERUxFVEUgU0VUIE5VTEwgT04g VVBEQVRFIFNFVCBOVUxMOworRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVt cG9yYWwgZm9yZWlnbiBrZXlzCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBT RVQgTlVMTAorLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKyAgQUxURVIg Q09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAo cGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERF RkFVTFQ7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3Jl aWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxU CitEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmc7CitEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZzsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv d2l0aG91dF9vdmVybGFwcy5zcWwKaW5kZXggM2MzMjM2NjE4Yy4uMTNjZTczMTNjNSAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKQEAgLTI2MCwz ICsyNjAsNDY1IEBAIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIg QlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlk X2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKworLS0KKy0tIHRlc3QgRksgZGVwZW5kZW5j aWVzCistLQorCistLSBjYW4ndCBkcm9wIGEgcmFuZ2UgcmVmZXJlbmNlZCBieSBhbiBGSywg dW5sZXNzIHdpdGggQ0FTQ0FERQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsg UFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWwz IChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9Q IENPTFVNTiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2 YWxpZF9hdCBDQVNDQURFOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworRFJP UCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCByYW5nZSBy ZWZlcmVuY2VzIHJhbmdlCistLQorCistLSBDYW4ndCBjcmVhdGUgYSBGSyB3aXRoIGEgbWlz bWF0Y2hlZCByYW5nZSB0eXBlCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGludDRyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wazIgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmsyIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitEUk9QIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmc7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJl ZmVyZW5jZWQgdGFibGU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZzsKKworLS0gc2hvdWxkIGZhaWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJl bmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIGlkKQorKTsKKworLS0KKy0t IHRlc3QgQUxURVIgVEFCTEUgQUREIENPTlNUUkFJTlQKKy0tCisKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRf YXQpOworCistLSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlLCBh bmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmssCisJQUxURVIgQ09M VU1OIHZhbGlkX2F0IFRZUEUgZGF0ZXJhbmdlIFVTSU5HIGRhdGVyYW5nZShsb3dlcih2YWxp ZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlkX2F0KTo6ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlB TFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIo dmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworCistLSB3aXRoIGluZmVycmVkIFBLIG9u IHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2YgZHVwbGljYXRlIHJlZmVyZW5jZWQg Y29sdW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMgorCUZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJ T0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3MgYWxyZWFkeQorLS0KKworREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAy JywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQor CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gb2theSBhZ2FpbjoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmc7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZzsKKworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYKKy0tCisKK1NFTEVDVCBw Z19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJybmdfZmsnOworCistLQorLS0gdGVzdCBGSyBjaGls ZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAyLTAxJyksICdbMSwx XScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTA0LTAxJyks ICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3b3JrOgorSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMi0wMycsICcyMDE4LTAz LTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwy XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKwor LS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0KKworVVBEQVRFIHRlbXBvcmFsX2Zr X3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMicsICcyMDE4LTAz LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitVUERBVEUgdGVt cG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAyJywg JzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgdGVtcG9yYWxfZmtf cm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CisK Ky0tIEFMVEVSIEZLIERFRkVSUkFCTEUKKworQkVHSU47CisgIElOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMKKyAgICAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpLAorICAgICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKSk7CisgIElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT CisgICAgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAn WzUsNV0nKTsKKyAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICAgIEFMVEVS IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworICAgIERFRkVSUkFCTEUgSU5J VElBTExZIERFRkVSUkVEOworCisgIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7IC0tc2hvdWxkIG5vdCBmYWlsIHlldC4KK0NPTU1JVDsgLS0gc2hvdWxk IGZhaWwgaGVyZS4KKworLS0KKy0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgTk8gQUNUSU9O CistLQorCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVy aWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQ REFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScs ICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhh dCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJl Y2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1 XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVd Jyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYt MDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0 ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAy LTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBm YWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRo ZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5n IFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBS RVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK KwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CistLSBhIFBLIHVwZGF0ZSB0 aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZh bGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQg PSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0 aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0Ogor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4 LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90 aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUg dGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVk czoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10n OworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAx LTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0K Ky0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBhIFBLIGRl bGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJl bmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUg cmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsg ZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRo ZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tCistLSB0 ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf Zms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNU UklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRz IGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUg cmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScp OworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsg ZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRo ZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tCistLSB0 ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0KKworLS0gdGVzdCBGSyBwYXJlbnQg dXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYs Nl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAor CUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKworLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsK KworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZwor ICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9Q IENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNF VCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKworLS0gRksgYmV0d2VlbiBwYXJ0 aXRpb25lZCB0YWJsZXMKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0 LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAo aWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3 XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0 LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAorICAoJ1sxLDFd JywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLAorICAo J1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3R3bycp OworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyAoCisJ aWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJh bmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKSBQQVJUSVRJT04gQlkgTElTVCAo aWQpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1 XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIg cGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVF UyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAn WzEyLDEyXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCisKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzEs MV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKSwK KyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMS0wMS0wMScsICcyMDAyLTAxLTAxJyksICdb MiwyXScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDIt MTUnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2Uo JzIwMTAtMDEtMDEnLCAnMjAxMC0wMi0xNScpLCAnWzEsMV0nKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKKworLS0gcGFy dGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAn MjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0 aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0XScgV0hFUkUgaWQgPSAnWzEsMV0n OworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQgcGFydGl0aW9uIHRvIHRoZSBmaXJz dAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1sx LDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgn MjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcy MDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEt MTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQg PSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgTk8g QUNUSU9OCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0 ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQg ZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFy dGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKworQUxURVIgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwlPTiBERUxF VEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsK K1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBk YXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAy LTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0 ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBm YWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBwYXJ0aXRp b25lZCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tIHBhcnRpdGlvbmVkIEZL IHBhcmVudCB1cGRhdGVzIENBU0NBREUKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCQlPTiBERUxF VEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKworLS0gcGFydGl0aW9uZWQgRksgcGFy ZW50IGRlbGV0ZXMgQ0FTQ0FERQorCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRl cyBTRVQgTlVMTAorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdf ZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m aworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBP TiBVUERBVEUgU0VUIE5VTEw7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVz IFNFVCBOVUxMCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZB VUxUCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKyAg QUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBD T05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUg U0VUIERFRkFVTFQ7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBE RUZBVUxUCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZzsK K0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwotLSAKMi4yNS4xCgo= --------------WEIT9zjCxFDg0fV7Xy9sQj0U Content-Type: text/x-patch; charset=UTF-8; name="v15-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v15-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSA1MDE0Y2ExODNiM2ExZGQyYTk0ZjUwOTRlYjI5YjZjMTM4YTRhNDI0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNSAzLzVdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwg ICAgICAgICAgICAgICAgICB8ICA0NiArKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21s ICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDQ5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMjIyICsrKysrKysrLQogc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCArLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgMjE0ICsrKysr KysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwg IDQ3ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAgICAgICAg fCAgMTAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMgICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgICAg ICAgICAgfCAgNDAgKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyAgICAg ICAgICAgICAgICB8ICA1NiArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVz LmMgICAgICAgICAgICB8ICA0MiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdn ZXJzLmMgICAgICAgICAgIHwgIDc0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMgICAgICAgICAgIHwgIDUyICsrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDQ0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNSArCiBzcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3Bh cnNlci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1 ZGUvdXRpbHMvcGVyaW9kLmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9pbmNs dWRlL3V0aWxzL3JhbmdldHlwZXMuaCAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA0MzEgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAg ICAgfCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mu b3V0IHwgIDMyICsrCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dCAgICAgfCAxMjkgKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9u X29mLnNxbCAgICAgICB8IDM0MCArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgNzcgKysrLQogNDcgZmlsZXMgY2hh bmdlZCwgMjE1NyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvZGVsZXRlLnNnbWwKaW5kZXggMWI4MWI0ZTdkNy4uYzA5MDNlYzM2MSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2RlbGV0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlv bgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KIERFTEVU RSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0Yg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRf dGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmRfdGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KICAgICBb IFdIRVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxh Y2VhYmxlPiB8IFdIRVJFIENVUlJFTlQgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmN1cnNvcl9uYW1lPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgUkVUVVJOSU5HICogfCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X2V4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0 X25hbWU8L3JlcGxhY2VhYmxlPiBdIFssIC4uLl0gXQpAQCAtNTQsNiArNTUsMTUgQEAgREVM RVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgIGNpcmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4K IAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBoYXMgYSA8bGluayBsaW5rZW5kPSJkZGwt cGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5yYW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRl cmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5b3UgbWF5IHN1cHBseSBhCisgICA8bGl0 ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciBkZWxldGUg d2lsbCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVy dmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFuIGV4dGVuZHMgb3V0c2lkZQorICAg dGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMsIHRoZW4gbmV3 IHJvd3Mgc3Bhbm5pbmcgdGhlICJjdXQKKyAgIG9mZiIgZHVyYXRpb24gd2lsbCBiZSBpbnNl cnRlZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlcy4KKyAgPC9wYXJhPgorCiAgIDxwYXJh PgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xhdXNl IGNhdXNlcyA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CiAgICB0byBjb21wdXRlIGFuZCBy ZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgZGVsZXRlZC4KQEAg LTExNiw2ICsxMjYsNDIgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9u YW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1p bmcgYSB0ZW1wb3JhbCBkZWxldGUuIFRoaXMKKyAgICAgIG11c3QgbWF0Y2ggdGhlIHJhbmdl IG9yIHBlcmlvZCB1c2VkIGluIHRoZSB0YWJsZSdzIHRlbXBvcmFsIHByaW1hcnkga2V5Lgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVzdCB0aW1lIChpbmNsdXNpdmUpIHRvIGNo YW5nZSBpbiBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVl IG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25h bWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZh bHVlIDxsaXRlcmFsPk1JTlZBTFVFPC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3 aG9zZQorICAgICAgYmVnaW5uaW5nIGlzIHVuYm91bmRlZC4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIGRl bGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5 cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQg bWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1BWFZBTFVF PC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3aG9zZQorICAgICAgZW5kIGlzIHVu Ym91bmRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxp c3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwKaW5kZXggMmFiMjRiMDUyMy4uMDY5Y2IzY2E1 YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwg ZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAu Li5dIF0KIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JU SU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2Rf bmFtZTwvcmVwbGFjZWFibGU+IEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgU0VUIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBE RUZBVUxUIH0gfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gWyBST1cgXSAoIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8 IERFRkFVTFQgfSBbLCAuLi5dICkgfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3ViLVNFTEVDVDwvcmVwbGFjZWFibGU+ ICkKQEAgLTUxLDYgKzUyLDE2IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgIGNp cmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBo YXMgYSA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5y YW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5 b3UgbWF5IHN1cHBseSBhCisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4g Y2xhdXNlLCBhbmQgeW91ciB1cGRhdGUgd2lsbCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0 IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBz cGFuIGV4dGVuZHMgb3V0c2lkZQorICAgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiBib3VuZHMsIHRoZW4gaXQgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gZml0CisgICB3 aXRoaW4gdGhlIGJvdW5kcywgYW5kIG5ldyByb3dzIHNwYW5uaW5nIHRoZSAiY3V0IG9mZiIg ZHVyYXRpb24gd2lsbCBiZQorICAgaW5zZXJ0ZWQgdG8gcHJlc2VydmUgdGhlIG9sZCB2YWx1 ZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5S RVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21t YW5kPgogICAgdG8gY29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2gg cm93IGFjdHVhbGx5IHVwZGF0ZWQuCkBAIC0xMTQsNiArMTI1LDQyIEBAIFVQREFURSBbIE9O TFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKiBdIFsKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVy aW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1wb3JhbCB1cGRhdGUuIFRoaXMKKyAg ICAgIG11c3QgbWF0Y2ggdGhlIHJhbmdlIG9yIHBlcmlvZCB1c2VkIGluIHRoZSB0YWJsZSdz IHRlbXBvcmFsIHByaW1hcnkga2V5LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVz dCB0aW1lIChpbmNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAg ICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhl IHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28K KyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1JTlZBTFVFPC9saXRlcmFs PiB0byBpbmRpY2F0ZSBhbiB1cGRhdGUgd2hvc2UKKyAgICAgIGJlZ2lubmluZyBpcyB1bmJv dW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0 byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2 YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJv bQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3Blcmlv ZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0IG1heSBhbHNvCisgICAgICBiZSB0aGUgc3BlY2lh bCB2YWx1ZSA8bGl0ZXJhbD5NQVhWQUxVRTwvbGl0ZXJhbD4gdG8gaW5kaWNhdGUgYW4gdXBk YXRlIHdob3NlCisgICAgICBlbmQgaXMgdW5ib3VuZGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5Pgog ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmluZGV4 IDZlMWYzNzBiMjEuLmI1OGU2MzQ4YWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90cmln Z2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNTM3LDE3ICs1 MzcsMTggQEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1saXN0aW5nPgog dHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAgICAgICAgIHR5 cGU7Ci0gICAgVHJpZ2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxhdGlvbiAgICAg ICAgIHRnX3JlbGF0aW9uOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJpZ3R1cGxlOwot ICAgIEhlYXBUdXBsZSAgICAgICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dlciAgICAgICAg ICp0Z190cmlnZ2VyOwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Nsb3Q7Ci0gICAg VHVwbGVUYWJsZVNsb3QgICp0Z19uZXdzbG90OwotICAgIFR1cGxlc3RvcmVzdGF0ZSAqdGdf b2xkdGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKLSAgICBjb25z dCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworICAgIE5vZGVUYWcgICAgICAgICAgICB0 eXBlOworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19ldmVudDsKKyAgICBSZWxhdGlvbiAg ICAgICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxlICAgICAgICAgIHRnX3RyaWd0 dXBsZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVwbGU7CisgICAgVHJpZ2dl ciAgICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX3Ry aWdzbG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90OworICAgIFR1cGxl c3RvcmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3RhdGUgICAqdGdf bmV3dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRjb2xzOworICAg IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiA8L3By b2dyYW1saXN0aW5nPgogCkBAIC04MTUsNiArODE2LDQzIEBAIHR5cGVkZWYgc3RydWN0IFRy aWdnZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHN0cnVjdGZp ZWxkPnRnX3RlbXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBEQVRFPC9saXRl cmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisgICAgICAgIHRo YXQgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3RoZXJ3aXNlIDxz eW1ib2w+TlVMTDwvc3ltYm9sPi4KKyAgICAgICAgQ29udGFpbnMgYSBwb2ludGVyIHRvIGEg c3RydWN0dXJlIG9mIHR5cGUKKyAgICAgICAgPHN0cnVjdG5hbWU+Rm9yUG9ydGlvbk9mU3Rh dGU8L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGluCisgICAgICAgIDxmaWxlbmFtZT5ub2Rlcy9l eGVjbm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0 cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5vZGVUYWcgdHlwZTsKKworICAgIGNo YXIgICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBp biBGT1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFuZ2VUeXBlOyAgICAgICAv KiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworICAgIGJv b2wgICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVSSU9E IG5vdCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7IC8qIHRo ZSBQRVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZEVuZE5h bWU7ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1bSAgIGZwX3Rh cmdldFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8KK30g Rm9yUG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICAgd2hlcmUg PHN0cnVjdGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBwZXJpb2Qg b3IgcmFuZ2UKKyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFsPkZPUiBQT1JU SU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3Jhbmdl VHlwZTwvc3RydWN0ZmllbGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAgIDxzdHJ1Y3Rm aWVsZD5mcF9oYXNQZXJpb2Q8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hldGhlciBhIHBl cmlvZCB3YXMgdXNlZAorICAgICAgIG9yIGEgcmFuZ2UgY29sdW1uLCA8c3RydWN0ZmllbGQ+ ZnBfcGVyaW9kU3RhcnROYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZp ZWxkPmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVjdGZpZWxkPiBhcmUgdGhlIG5hbWVzIG9mIHRo ZSBwZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAob3IgPHN5bWJvbD5O VUxMPC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdhcyB1c2VkKSwKKyAgICAgICBhbmQg PHN0cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3RmaWVsZD4gaXMgYSByYW5nZXR5 cGUgdmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcgdGhlIDxsaXRlcmFsPkZP UiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+ CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggZTAxZjY0 YWUzNC4uZjVhNzM2ZmE5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTEy MTcyLDYgKzEyMTcyLDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpj b25uYW1lLAogCQl0cmlnZGF0YS50Z190cmlndHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1 cGxlKHNsb3QsIGZhbHNlLCBOVUxMKTsKIAkJdHJpZ2RhdGEudGdfdHJpZ3Nsb3QgPSBzbG90 OwogCQl0cmlnZGF0YS50Z190cmlnZ2VyID0gJnRyaWc7CisJCXRyaWdkYXRhLnRnX3RlbXBv cmFsID0gTlVMTDsKIAogCQlmY2luZm8tPmNvbnRleHQgPSAoTm9kZSAqKSAmdHJpZ2RhdGE7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCAwNTc3YjYwNDE1Li4yZjA1NTU3YjM0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNs dWRlICJ1dGlscy9pbnZhbC5oIgpAQCAtMjYzOCw2ICsyNjM5LDcgQEAgRXhlY0JTRGVsZXRl VHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJTG9j VHJpZ2dlckRhdGEudGdfZXZlbnQgPSBUUklHR0VSX0VWRU5UX0RFTEVURSB8CiAJCVRSSUdH RVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5m by0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVs aW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVt dHJpZ2dlcnM7IGkrKykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2Mt PnRyaWdnZXJzW2ldOwpAQCAtMjczNyw2ICsyNzM5LDcgQEAgRXhlY0JSRGVsZXRlVHJpZ2dl cnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVO VF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19y ZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50 Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBp IDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJbmV3dHVw bGU7CkBAIC0yODI4LDYgKzI4MzEsNyBAQCBFeGVjSVJEZWxldGVUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cg fAogCQlUUklHR0VSX0VWRU5UX0lOU1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRp b24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhl YXBUdXBsZSh0cmlndHVwbGUsIHNsb3QsIGZhbHNlKTsKIApAQCAtMjg5MSw2ICsyODk1LDcg QEAgRXhlY0JTVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlbGluZm8pCiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRn X3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUxvY1RyaWdnZXJEYXRh LnRnX3VwZGF0ZWRjb2xzID0gdXBkYXRlZENvbHM7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRy aWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dlciA9 ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0zMDA4LDYgKzMwMTMsNyBAQCBFeGVjQlJV cGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQlU UklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdn ZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1Ry aWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCXVw ZGF0ZWRDb2xzID0gRXhlY0dldEFsbFVwZGF0ZWRDb2xzKHJlbGluZm8sIGVzdGF0ZSk7CiAJ TG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKIAlmb3IgKGkg PSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCkBAIC0zMTU3LDYgKzMxNjMs NyBAQCBFeGVjSVJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0lO U1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxh dGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9m b3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZSh0cmlndHVwbGUsIG9s ZHNsb3QsIGZhbHNlKTsKIApAQCAtMzYyMyw2ICszNjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg QWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YQogCU9pZAkJCWF0c190Z29pZDsJCS8qIHRoZSB0cmln Z2VyJ3MgSUQgKi8KIAlPaWQJCQlhdHNfcmVsaWQ7CQkvKiB0aGUgcmVsYXRpb24gaXQncyBv biAqLwogCUNvbW1hbmRJZAlhdHNfZmlyaW5nX2lkOwkvKiBJRCBmb3IgZmlyaW5nIGN5Y2xl ICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKmZvcl9wb3J0aW9uX29mOwkvKiB0aGUgRk9SIFBP UlRJT04gT0YgY2xhdXNlICovCiAJc3RydWN0IEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEgKmF0 c190YWJsZTsJLyogdHJhbnNpdGlvbiB0YWJsZSBhY2Nlc3MgKi8KIAlCaXRtYXBzZXQgICph dHNfbW9kaWZpZWRjb2xzOwkvKiBtb2RpZmllZCBjb2x1bW5zICovCiB9IEFmdGVyVHJpZ2dl clNoYXJlZERhdGE7CkBAIC0zODk2LDYgKzM5MDQsNyBAQCBzdGF0aWMgU2V0Q29uc3RyYWlu dFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNyZWF0ZShpbnQgbnVtYWxsb2MpOwogc3RhdGlj IFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDb3B5KFNldENvbnN0cmFp bnRTdGF0ZSBvcmlnc3RhdGUpOwogc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25z dHJhaW50U3RhdGVBZGRJdGVtKFNldENvbnN0cmFpbnRTdGF0ZSBzdGF0ZSwKIAkJCQkJCQkJ CQkJCQlPaWQgdGdvaWQsIGJvb2wgdGdpc2RlZmVycmVkKTsKK3N0YXRpYyBGb3JQb3J0aW9u T2ZTdGF0ZSAqQ29weUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMp Owogc3RhdGljIHZvaWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJlbGlkLCBD bWRUeXBlIGNtZFR5cGUsIGludCB0Z2V2ZW50KTsKIAogCkBAIC00MTA1LDYgKzQxMTQsNyBA QCBhZnRlclRyaWdnZXJBZGRFdmVudChBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywK IAkJCW5ld3NoYXJlZC0+YXRzX3JlbGlkID09IGV2dHNoYXJlZC0+YXRzX3JlbGlkICYmCiAJ CQluZXdzaGFyZWQtPmF0c19ldmVudCA9PSBldnRzaGFyZWQtPmF0c19ldmVudCAmJgogCQkJ bmV3c2hhcmVkLT5hdHNfdGFibGUgPT0gZXZ0c2hhcmVkLT5hdHNfdGFibGUgJiYKKwkJCW5l d3NoYXJlZC0+Zm9yX3BvcnRpb25fb2YgPT0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiAm JgogCQkJbmV3c2hhcmVkLT5hdHNfZmlyaW5nX2lkID09IDApCiAJCQlicmVhazsKIAl9CkBA IC00NDY5LDYgKzQ0NzksNyBAQCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRl LAogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsOwogCWlmIChUUklHR0VSX0ZP Ul9VUERBVEUoTG9jVHJpZ2dlckRhdGEudGdfdHJpZ2dlci0+dGd0eXBlKSkKIAkJTG9jVHJp Z2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSBldnRzaGFyZWQtPmF0c19tb2RpZmllZGNvbHM7 CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSBldnRzaGFyZWQtPmZvcl9wb3J0aW9u X29mOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBlcl90dXBsZV9jb250ZXh0KTsKIApAQCAt NjAwNSw2ICs2MDE2LDQzIEBAIEFmdGVyVHJpZ2dlclBlbmRpbmdPblJlbChPaWQgcmVsaWQp CiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZT dGF0ZSgpCisgKgorICogQ29waWVzIGEgRm9yUG9ydGlvbk9mU3RhdGUgaW50byB0aGUgY3Vy cmVudCBtZW1vcnkgY29udGV4dC4KKyAqLworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICoK K0NvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKQoreworCUZv clBvcnRpb25PZlN0YXRlICpkc3QgPSBOVUxMOworCWlmIChzcmMpIHsKKwkJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CisJCVJhbmdlVHlwZSAqcjsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNh Y2hlOworCisJCS8qCisJCSAqIE5lZWQgdG8gbGlmdCB0aGUgRk9SIFBPUlRJT04gT0YgZGV0 YWlscyBpbnRvIGEgaGlnaGVyIG1lbW9yeSBjb250ZXh0CisJCSAqIGJlY2F1c2UgY2FzY2Fk aW5nIGZvcmVpZ24ga2V5IHVwZGF0ZS9kZWxldGVzIGNhbiBjYXVzZSB0cmlnZ2VycyB0byBm aXJlCisJCSAqIHRyaWdnZXJzLCBhbmQgdGhlIEFmdGVyVHJpZ2dlckV2ZW50cyB3aWxsIG91 dGxpdmUgdGhlIEZQTworCQkgKiBkZXRhaWxzIG9mIHRoZSBvcmlnaW5hbCBxdWVyeS4KKwkJ ICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNv bnRleHQpOworCQlkc3QgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCWRzdC0+ ZnBfcmFuZ2VOYW1lID0gcHN0cmR1cChzcmMtPmZwX3JhbmdlTmFtZSk7CisJCWRzdC0+ZnBf cmFuZ2VUeXBlID0gc3JjLT5mcF9yYW5nZVR5cGU7CisJCWRzdC0+ZnBfaGFzUGVyaW9kID0g c3JjLT5mcF9oYXNQZXJpb2Q7CisJCWRzdC0+ZnBfcmFuZ2VBdHRubyA9IHNyYy0+ZnBfcmFu Z2VBdHRubzsKKwkJZHN0LT5mcF9wZXJpb2RTdGFydEF0dG5vID0gc3JjLT5mcF9wZXJpb2RT dGFydEF0dG5vOworCQlkc3QtPmZwX3BlcmlvZEVuZEF0dG5vID0gc3JjLT5mcF9wZXJpb2RF bmRBdHRubzsKKworCQlyID0gRGF0dW1HZXRSYW5nZVR5cGVQKHNyYy0+ZnBfdGFyZ2V0UmFu Z2UpOworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChy KSwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlkc3QtPmZwX3RhcmdldFJhbmdlID0gZGF0 dW1Db3B5KHNyYy0+ZnBfdGFyZ2V0UmFuZ2UsIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2Fj aGUtPnR5cGxlbik7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKwly ZXR1cm4gZHN0OworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBBZnRlclRyaWdnZXJTYXZlRXZl bnQoKQogICoKQEAgLTY0MjAsNiArNjQ2OCw3IEBAIEFmdGVyVHJpZ2dlclNhdmVFdmVudChF U3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJZWxzZQogCQkJbmV3 X3NoYXJlZC5hdHNfdGFibGUgPSBOVUxMOwogCQluZXdfc2hhcmVkLmF0c19tb2RpZmllZGNv bHMgPSBhZnRlclRyaWdnZXJDb3B5Qml0bWFwKG1vZGlmaWVkQ29scyk7CisJCW5ld19zaGFy ZWQuZm9yX3BvcnRpb25fb2YgPSBDb3B5Rm9yUG9ydGlvbk9mU3RhdGUocmVsaW5mby0+cmlf Zm9yUG9ydGlvbk9mKTsKIAogCQlhZnRlclRyaWdnZXJBZGRFdmVudCgmYWZ0ZXJUcmlnZ2Vy cy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoXS5ldmVudHMsCiAJCQkJ CQkJICZuZXdfZXZlbnQsICZuZXdfc2hhcmVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j CmluZGV4IDRjNWE3YmJmNjIuLjY5MDk2Y2JlZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYwpAQCAtMTI3NCw2ICsxMjc0LDcgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJu aW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4 ZXMgPSBOSUw7CiAJcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJcmVz dWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5y aV9SZXR1cm5pbmdTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xv dCA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA1MDA1ZDhjMGQxLi45 MmQ2NjExZjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtNjEsNiArNjEsOSBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1 ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAog CkBAIC0xNDEsNiArMTQ0LDEwIEBAIHN0YXRpYyBib29sIEV4ZWNPbkNvbmZsaWN0VXBkYXRl KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJIFR1cGxlVGFibGVTbG90 ICpleGNsdWRlZFNsb3QsCiAJCQkJCQkJCSBib29sIGNhblNldFRhZywKIAkJCQkJCQkJIFR1 cGxlVGFibGVTbG90ICoqcmV0dXJuaW5nKTsKK3N0YXRpYyB2b2lkIEV4ZWNGb3JQb3J0aW9u T2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJCQkJICBF U3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKKwkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCk7CiBzdGF0aWMgVHVwbGVUYWJs ZVNsb3QgKkV4ZWNQcmVwYXJlVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUsCiAJCQkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkgICBQYXJ0 aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZSwKQEAgLTEyMDUsNiArMTIxMiwxMzggQEAgRXhl Y0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCXNldF9sZWZ0b3Zlcl90dXBsZV9ib3VuZHMKKyAq CisgKgkJU2F2ZXMgdGhlIG5ldyBib3VuZHMgaW50byB0aGUgcmFuZ2UgYXR0cmlidXRlCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkIHNldF9sZWZ0b3Zlcl90dXBsZV9ib3Vu ZHMoVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUsCisJCQkJCQkJCQkgIEZvclBvcnRp b25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCSAgVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlLAorCQkJCQkJCQkJICBSYW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlKQorewor CS8qIFN0b3JlIHRoZSByYW5nZSBkaXJlY3RseSAqLworCisJbGVmdG92ZXJUdXBsZS0+dHRz X3ZhbHVlc1tmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gUmFuZ2VU eXBlUEdldERhdHVtKGxlZnRvdmVyUmFuZ2VUeXBlKTsKKwlsZWZ0b3ZlclR1cGxlLT50dHNf aXNudWxsW2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBmYWxzZTsK K30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMKKyAq CisgKgkJSW5zZXJ0IHR1cGxlcyBmb3IgdGhlIHVudG91Y2hlZCB0aW1lc3RhbXAgb2YgYSBy b3cgaW4gYSBGT1IKKyAqCQlQT1JUSU9OIE9GIFVQREFURS9ERUxFVEUKKyAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJ CSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgSXRlbVBvaW50ZXIg dHVwbGVpZCkKK3sKKwlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29udGV4dC0+bXRz dGF0ZTsKKwlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRlLT5w cy5wbGFuOworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQb3J0aW9u T2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsKKwlEYXR1bSBvbGRSYW5nZTsKKwlSYW5n ZVR5cGUgKm9sZFJhbmdlVHlwZTsKKwlSYW5nZVR5cGUgKnRhcmdldFJhbmdlVHlwZTsKKwlS YW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlMTsKKwlSYW5nZVR5cGUgKmxlZnRvdmVyUmFu Z2VUeXBlMjsKKwlPaWQgcmFuZ2VUeXBlT2lkID0gZm9yUG9ydGlvbk9mLT5yYW5nZVR5cGU7 CisJYm9vbCBpc051bGwgPSBmYWxzZTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisJ Rm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRlID0gcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9y dGlvbk9mOworCVR1cGxlVGFibGVTbG90ICpvbGR0dXBsZVNsb3QgPSBmcG9TdGF0ZS0+ZnBf RXhpc3Rpbmc7CisJVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUxID0gZnBvU3RhdGUt PmZwX0xlZnRvdmVyMTsKKwlUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZTIgPSBmcG9T dGF0ZS0+ZnBfTGVmdG92ZXIyOworCisJLyoKKwkgKiBHZXQgdGhlIHJhbmdlIG9mIHRoZSBv bGQgcHJlLVVQREFURS9ERUxFVEUgdHVwbGUsCisJICogc28gd2UgY2FuIGludGVyc2VjdCBp dCB3aXRoIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQKKwkgKiBhbmQgc2VlIGlmIHRoZXJl IGFyZSBhbnkgImxlZnRvdmVycyIgdG8gaW5zZXJ0LgorCSAqCisJICogV2UgaGF2ZSBhbHJl YWR5IGxvY2tlZCB0aGUgdHVwbGUgaW4gRXhlY1VwZGF0ZS9FeGVjRGVsZXRlCisJICogKFRP RE86IGlmIGl0IHdhcyAqbm90KiBjb25jdXJyZW50bHkgdXBkYXRlZCwgZG9lcyB0YWJsZV90 dXBsZV91cGRhdGUgbG9jayB0aGUgdHVwbGUgaXRzZWxmPworCSAqIEkgZG9uJ3QgZm91bmQg dGhlIGNvZGUgZm9yIHRoYXQgeWV0LCBhbmQgbWF5YmUgaXQgZGVwZW5kcyBvbiB0aGUgQU0/ KQorCSAqIGFuZCBpdCBoYXMgcGFzc2VkIEV2YWxQbGFuUXVhbC4KKwkgKiBNYWtlIHN1cmUg d2UncmUgbG9va2luZyBhdCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi4KKwkgKiBPdGhlcndp c2UgY29uY3VycmVudCB1cGRhdGVzIG9mIHRoZSBzYW1lIHR1cGxlIGluIFJFQUQgQ09NTUlU VEVECisJICogY291bGQgaW5zZXJ0IGNvbmZsaWN0aW5nICJsZWZ0b3ZlcnMiLgorCSAqLwor CWlmICghdGFibGVfdHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKKwkJ ZWxvZyhFUlJPUiwgImZhaWxlZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0Yi KTsKKworCW9sZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHR1cGxlU2xvdCwgZm9yUG9ydGlv bk9mLT5yYW5nZVZhci0+dmFyYXR0bm8sICZpc051bGwpOworCisJaWYgKGlzTnVsbCkKKwkJ ZWxvZyhFUlJPUiwgImZvdW5kIGEgTlVMTCByYW5nZSBpbiBhIHRlbXBvcmFsIHRhYmxlIik7 CisJb2xkUmFuZ2VUeXBlID0gRGF0dW1HZXRSYW5nZVR5cGVQKG9sZFJhbmdlKTsKKworCS8q IEdldCB0aGUgdGFyZ2V0IHJhbmdlLiAqLworCisJdGFyZ2V0UmFuZ2VUeXBlID0gRGF0dW1H ZXRSYW5nZVR5cGVQKGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZSk7CisKKwkvKgorCSAqIEdl dCB0aGUgcmFuZ2UncyB0eXBlIGNhY2hlIGVudHJ5LiBUaGlzIGlzIHdvcnRoIGNhY2hpbmcg Zm9yIHRoZSB3aG9sZSBVUERBVEUKKwkgKiBsaWtlIHJhbmdlIGZ1bmN0aW9ucyBkby4KKwkg Ki8KKworCXR5cGNhY2hlID0gZnBvU3RhdGUtPmZwX3JhbmdldHlwY2FjaGU7CisJaWYgKHR5 cGNhY2hlID09IE5VTEwpCisJeworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJh bmdlVHlwZU9pZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlpZiAodHlwY2FjaGUtPnJu Z2VsZW10eXBlID09IE5VTEwpCisJCQllbG9nKEVSUk9SLCAidHlwZSAldSBpcyBub3QgYSBy YW5nZSB0eXBlIiwgcmFuZ2VUeXBlT2lkKTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdldHlwY2Fj aGUgPSB0eXBjYWNoZTsKKwl9CisKKwkvKiBHZXQgdGhlIHJhbmdlcyB0byB0aGUgbGVmdC9y aWdodCBvZiB0aGUgdGFyZ2V0ZWQgcmFuZ2UuICovCisKKwlyYW5nZV9sZWZ0b3Zlcl9pbnRl cm5hbCh0eXBjYWNoZSwgb2xkUmFuZ2VUeXBlLCB0YXJnZXRSYW5nZVR5cGUsICZsZWZ0b3Zl clJhbmdlVHlwZTEsCisJCQkmbGVmdG92ZXJSYW5nZVR5cGUyKTsKKworCS8qCisJICogSW5z ZXJ0IGEgY29weSBvZiB0aGUgdHVwbGUgd2l0aCB0aGUgbG93ZXIgbGVmdG92ZXIgcmFuZ2Uu CisJICogRXZlbiBpZiB0aGUgdGFibGUgaXMgcGFydGl0aW9uZWQsCisJICogb3VyIGluc2Vy dCB3b24ndCBleHRlbmQgcGFzdCB0aGUgY3VycmVudCByb3csIHNvIHdlIGRvbid0IG5lZWQg dG8gcmUtcm91dGUuCisJICogVE9ETzogUmVhbGx5PyBXaGF0IGlmIHlvdSB1cGRhdGUgdGhl IHBhcnRpdGlvbiBrZXk/CisJICovCisKKwlpZiAoIVJhbmdlSXNFbXB0eShsZWZ0b3ZlclJh bmdlVHlwZTEpKQorCXsKKwkJLy8gVE9ETzogYW55dGhpbmcgd2UgbmVlZCB0byBjbGVhciBo ZXJlPworCQkvLyBBcmUgd2UgaW4gdGhlIHJvdyBjb250ZXh0PworCQlIZWFwVHVwbGUgb2xk dHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1cGxlU2xvdCwgZmFsc2UsIE5V TEwpOworCQlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZShvbGR0dXBsZSwgbGVmdG92ZXJUdXBs ZTEsIGZhbHNlKTsKKworCQlzZXRfbGVmdG92ZXJfdHVwbGVfYm91bmRzKGxlZnRvdmVyVHVw bGUxLCBmb3JQb3J0aW9uT2YsIHR5cGNhY2hlLCBsZWZ0b3ZlclJhbmdlVHlwZTEpOworCQlF eGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyVHVwbGUxKTsKKworCQkvLyBUT0RPOiBOZWVk IHRvIHNhdmUgY29udGV4dC0+bXRzdGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlPyAoU2Vl IGNvbW1lbnQgb24gRXhlY0luc2VydCkKKwkJRXhlY0luc2VydChjb250ZXh0LCByZXN1bHRS ZWxJbmZvLCBsZWZ0b3ZlclR1cGxlMSwgbm9kZS0+Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsK Kwl9CisKKwkvKgorCSAqIEluc2VydCBhIGNvcHkgb2YgdGhlIHR1cGxlIHdpdGggdGhlIHVw cGVyIGxlZnRvdmVyIHJhbmdlCisJICogRXZlbiBpZiB0aGUgdGFibGUgaXMgcGFydGl0aW9u ZWQsCisJICogb3VyIGluc2VydCB3b24ndCBleHRlbmQgcGFzdCB0aGUgY3VycmVudCByb3cs IHNvIHdlIGRvbid0IG5lZWQgdG8gcmUtcm91dGUuCisJICogVE9ETzogUmVhbGx5PyBXaGF0 IGlmIHlvdSB1cGRhdGUgdGhlIHBhcnRpdGlvbiBrZXk/CisJICovCisKKwlpZiAoIVJhbmdl SXNFbXB0eShsZWZ0b3ZlclJhbmdlVHlwZTIpKQorCXsKKwkJSGVhcFR1cGxlIG9sZHR1cGxl ID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShvbGR0dXBsZVNsb3QsIGZhbHNlLCBOVUxMKTsK KwkJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyVHVwbGUyLCBm YWxzZSk7CisKKwkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlMiwg Zm9yUG9ydGlvbk9mLCB0eXBjYWNoZSwgbGVmdG92ZXJSYW5nZVR5cGUyKTsKKwkJRXhlY01h dGVyaWFsaXplU2xvdChsZWZ0b3ZlclR1cGxlMik7CisKKwkJLy8gVE9ETzogTmVlZCB0byBz YXZlIGNvbnRleHQtPm10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21t ZW50IG9uIEV4ZWNJbnNlcnQpCisJCUV4ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5m bywgbGVmdG92ZXJUdXBsZTIsIG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJfQor fQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0JhdGNoSW5zZXJ0CiAgKgpAQCAtMTM1Nyw3 ICsxNDk2LDggQEAgRXhlY0RlbGV0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQs IFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAgKgogICogQ2xvc2luZyBzdGVwcyBv ZiB0dXBsZSBkZWxldGlvbjsgdGhpcyBpbnZva2VzIEFGVEVSIEZPUiBFQUNIIFJPVyB0cmln Z2VycywKICAqIGluY2x1ZGluZyB0aGUgVVBEQVRFIHRyaWdnZXJzIGlmIHRoZSBkZWxldGlv biBpcyBiZWluZyBkb25lIGFzIHBhcnQgb2YgYQotICogY3Jvc3MtcGFydGl0aW9uIHR1cGxl IG1vdmUuCisgKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4gSXQgYWxzbyBpbnNlcnRz IGxlZnRvdmVycyBmcm9tIGEgRk9SIFBPUlRJT04gT0YKKyAqIGRlbGV0ZS4KICAqLwogc3Rh dGljIHZvaWQKIEV4ZWNEZWxldGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRl eHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCkBAIC0xMzkwLDYgKzE1MzAsMTEg QEAgRXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJYXJfZGVsZXRlX3RyaWdfdGNzID0gTlVM TDsKIAl9CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElPTiBPRiAqLwor CS8vIFRPRE86IFNraXAgdGhpcyBmb3IgRkRXIGRlbGV0ZXM/CisJaWYgKCgoTW9kaWZ5VGFi bGUgKikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikKKwkJRXhl Y0ZvclBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBlc3RhdGUsIHJlc3VsdFJlbEluZm8s IHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIERFTEVURSBUcmlnZ2VycyAqLwogCUV4ZWNB UkRlbGV0ZVRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVw bGUsCiAJCQkJCQkgYXJfZGVsZXRlX3RyaWdfdGNzLCBjaGFuZ2luZ1BhcnQpOwpAQCAtMjEz Myw2ICsyMjc4LDExIEBAIEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQg KmNvbnRleHQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAkJCQkJCQkJCQkJICAgTlVM TCwgTklMLAogCQkJCQkJCQkJCQkgICAodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRV X1N1bW1hcml6aW5nKSk7CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElP TiBPRiAqLworCS8vIFRPRE86IFNraXAgdGhpcyBmb3IgRkRXIHVwZGF0ZXM/CisJaWYgKCgo TW9kaWZ5VGFibGUgKikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25P ZikKKwkJRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBjb250ZXh0LT5lc3Rh dGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIFVQREFURSBU cmlnZ2VycyAqLwogCUV4ZWNBUlVwZGF0ZVRyaWdnZXJzKGNvbnRleHQtPmVzdGF0ZSwgcmVz dWx0UmVsSW5mbywKIAkJCQkJCSBOVUxMLCBOVUxMLApAQCAtMzYxMCw2ICszNzYwLDcgQEAg RXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKiBSZXNldCBwZXItdHVw bGUgbWVtb3J5IGNvbnRleHQgdXNlZCBmb3IgcHJvY2Vzc2luZyBvbiBjb25mbGljdCBhbmQK IAkJICogcmV0dXJuaW5nIGNsYXVzZXMsIHRvIGZyZWUgYW55IGV4cHJlc3Npb24gZXZhbHVh dGlvbiBzdG9yYWdlCiAJCSAqIGFsbG9jYXRlZCBpbiB0aGUgcHJldmlvdXMgY3ljbGUuCisJ CSAqIFRPRE86IEl0IHNvdW5kcyBsaWtlIEZPUiBQT1JUSU9OIE9GIG1pZ2h0IG5lZWQgdG8g ZG8gc29tZXRoaW5nIGhlcmUgdG9vPwogCQkgKi8KIAkJaWYgKHBzdGF0ZS0+cHNfRXhwckNv bnRleHQpCiAJCQlSZXNldEV4cHJDb250ZXh0KHBzdGF0ZS0+cHNfRXhwckNvbnRleHQpOwpA QCAtNDI4Miw2ICs0NDMzLDc1IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQl9CiAJfQogCisJLyoKKwkg KiBJZiBuZWVkZWQsIGluaXRpYWxpemUgdGhlIHRhcmdldCByYW5nZSBmb3IgRk9SIFBPUlRJ T04gT0YuCisJICovCisJaWYgKG5vZGUtPmZvclBvcnRpb25PZikKKwl7CisJCVR1cGxlRGVz YyB0dXBEZXNjOworCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CisJCURhdHVt CXRhcmdldFJhbmdlOworCQlib29sCWlzTnVsbDsKKwkJRXhwckNvbnRleHQgKmVjb250ZXh0 OworCQlFeHByU3RhdGUgKmV4cHJTdGF0ZTsKKwkJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0 YXRlOworCisJCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOworCQl0 dXBEZXNjID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9hdHQ7CisJCWZv clBvcnRpb25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsK KworCQkvKiBFdmFsIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQgKi8KKwkJaWYgKG10c3Rh dGUtPnBzLnBzX0V4cHJDb250ZXh0ID09IE5VTEwpCisJCQlFeGVjQXNzaWduRXhwckNvbnRl eHQoZXN0YXRlLCAmbXRzdGF0ZS0+cHMpOworCQllY29udGV4dCA9IG10c3RhdGUtPnBzLnBz X0V4cHJDb250ZXh0OworCisJCWV4cHJTdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAq KSBmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlLCBlc3RhdGUpOworCQl0YXJnZXRSYW5nZSA9 IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsIGVjb250ZXh0LCAmaXNOdWxsKTsKKwkJaWYgKGlz TnVsbCkKKwkJCWVsb2coRVJST1IsICJHb3QgYSBOVUxMIEZPUiBQT1JUSU9OIE9GIHRhcmdl dCByYW5nZSIpOworCisJCS8qIENyZWF0ZSBzdGF0ZSBmb3IgRk9SIFBPUlRJT04gT0Ygb3Bl cmF0aW9uICovCisKKwkJZnBvU3RhdGUgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7 CisJCWZwb1N0YXRlLT5mcF9yYW5nZU5hbWUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWU7 CisJCWZwb1N0YXRlLT5mcF9yYW5nZVR5cGUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlVHlwZTsK KwkJZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52 YXJhdHRubzsKKwkJZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlID0gdGFyZ2V0UmFuZ2U7CisK KwkJLyogSW5pdGlhbGl6ZSBzbG90IGZvciB0aGUgZXhpc3RpbmcgdHVwbGUgKi8KKworCQlm cG9TdGF0ZS0+ZnBfRXhpc3RpbmcgPQorCQkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0UmVs SW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCSAgJm10c3RhdGUtPnBzLnN0YXRlLT5l c190dXBsZVRhYmxlKTsKKworCQkvKiBDcmVhdGUgdGhlIHR1cGxlIHNsb3RzIGZvciBJTlNF UlRpbmcgdGhlIGxlZnRvdmVycyAqLworCisJCWZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjEgPQor CQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVzYywg JlRUU09wc1ZpcnR1YWwpOworCQlmcG9TdGF0ZS0+ZnBfTGVmdG92ZXIyID0KKwkJCUV4ZWNJ bml0RXh0cmFUdXBsZVNsb3QobXRzdGF0ZS0+cHMuc3RhdGUsIHR1cERlc2MsICZUVFNPcHNW aXJ0dWFsKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGF0dGFjaCB0aGUgRm9yUG9ydGlvbk9m U3RhdGUgdG8gYWxsIHJlc3VsdCByZWxzLAorCQkgKiBpbiBjYXNlIG9mIGEgY3Jvc3MtcGFy dGl0aW9uIHVwZGF0ZSBvciB0cmlnZ2VycyBmaXJpbmcKKwkJICogb24gcGFydGl0aW9ucy4K KwkJICoKKwkJICogVGhleSBzaG91bGQgYWxsIGhhdmUgdGhlIHNhbWUgdHVwbGVkZXNjLCBz byBpdCdzIG9rYXkKKwkJICogdGhhdCBhbnkgb25lIG9mIHRoZW0gY2FuIHVzZSB0aGUgdHVw bGUgdGFibGUgc2xvdHMgdGhlcmUuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7 IGkrKykKKwkJeworCQkJcmVzdWx0UmVsSW5mbyA9ICZtdHN0YXRlLT5yZXN1bHRSZWxJbmZv W2ldOworCQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gZnBvU3RhdGU7CisJ CX0KKworCQkvKiBNYWtlIHN1cmUgdGhlIHJvb3QgcmVsYXRpb24gaGFzIHRoZSBGT1IgUE9S VElPTiBPRiBjbGF1c2UgdG9vLiAqLworCQlpZiAobm9kZS0+cm9vdFJlbGF0aW9uID4gMCkK KwkJCW10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBmcG9T dGF0ZTsKKworCQkvKiBEb24ndCBmcmVlIHRoZSBFeHByQ29udGV4dCBoZXJlIGJlY2F1c2Ug dGhlIHJlc3VsdCBtdXN0IGxhc3QgZm9yIHRoZSB3aG9sZSBxdWVyeSAqLworCX0KKwogCS8q CiAJICogSWYgd2UgaGF2ZSBhbnkgc2Vjb25kYXJ5IHJlbGF0aW9ucyBpbiBhbiBVUERBVEUg b3IgREVMRVRFLCB0aGV5IG5lZWQgdG8KIAkgKiBiZSB0cmVhdGVkIGxpa2Ugbm9uLWxvY2tl ZCByZWxhdGlvbnMgaW4gU0VMRUNUIEZPUiBVUERBVEUsIGllLCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKaW5kZXggYzAzZjRmMjNlMi4uNjJjY2JmOWQzYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKQEAgLTI0NDIsNiArMjQ0MiwxNCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy X2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsK KwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZTsKKworCQkJCWlm IChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0UmFuZ2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7 CiAJCQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0 ZXBPcCAqKSBub2RlOwpAQCAtMjU4Miw2ICsyNTkwLDggQEAgcXVlcnlfdHJlZV93YWxrZXJf aW1wbChRdWVyeSAqcXVlcnksCiAJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5t ZXJnZUFjdGlvbkxpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKKwlpZiAoV0FMSyhxdWVyeS0+Zm9y UG9ydGlvbk9mKSkKKwkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPnJldHVybmlu Z0xpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+am9pbnRyZWUpKQpA QCAtMzQyNSw2ICszNDM1LDE5IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9k ZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFr OworCQljYXNlIFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZF eHByICpmcG8gPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCQkJCUZvclBvcnRpb25P ZkV4cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBmcG8sIEZvclBvcnRp b25PZkV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVZhciwgZnBvLT5yYW5nZVZh ciwgVmFyICopOworCQkJCU1VVEFURShuZXdub2RlLT50YXJnZXRSYW5nZSwgZnBvLT50YXJn ZXRSYW5nZSwgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cmFuZ2VTZXQsIGZwby0+ cmFuZ2VTZXQsIExpc3QgKik7CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJ CX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJ CQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBP cCAqKSBub2RlOwpAQCAtMzYwMyw2ICszNjI2LDcgQEAgcXVlcnlfdHJlZV9tdXRhdG9yX2lt cGwoUXVlcnkgKnF1ZXJ5LAogCU1VVEFURShxdWVyeS0+d2l0aENoZWNrT3B0aW9ucywgcXVl cnktPndpdGhDaGVja09wdGlvbnMsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5vbkNvbmZs aWN0LCBxdWVyeS0+b25Db25mbGljdCwgT25Db25mbGljdEV4cHIgKik7CiAJTVVUQVRFKHF1 ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIExpc3QgKik7 CisJTVVUQVRFKHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIEZv clBvcnRpb25PZkV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBxdWVy eS0+cmV0dXJuaW5nTGlzdCwgTGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50cmVlLCBx dWVyeS0+am9pbnRyZWUsIEZyb21FeHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3BlcmF0 aW9ucywgcXVlcnktPnNldE9wZXJhdGlvbnMsIE5vZGUgKik7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMzRjYTZkNGFjMi4uOTU0ZWI0ZGE4MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzExLDcg KzMxMSw4IEBAIHN0YXRpYyBNb2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFubmVy SW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVDb2xu b3NMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAq cmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RF eHByICpvbmNvbmZsaWN0LAotCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGlu dCBlcHFQYXJhbSk7CisJCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7CiBz dGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApA QCAtMjgzNSw2ICsyODM2LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIE1vZGlmeVRhYmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3RfcGF0 aC0+cm93TWFya3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAogCQkJCQkJCWJl c3RfcGF0aC0+bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPmZvclBvcnRp b25PZiwKIAkJCQkJCQliZXN0X3BhdGgtPmVwcVBhcmFtKTsKIAogCWNvcHlfZ2VuZXJpY19w YXRoX2luZm8oJnBsYW4tPnBsYW4sICZiZXN0X3BhdGgtPnBhdGgpOwpAQCAtNzAwNSw3ICs3 MDA3LDggQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3Vi cGxhbiwKIAkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhD aGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAqcm93 TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJnZUFj dGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMs IEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkgaW50IGVwcVBhcmFtKQog ewogCU1vZGlmeVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGUpOwogCUxpc3QJ ICAgKmZkd19wcml2YXRlX2xpc3Q7CkBAIC03MDcxLDYgKzcwNzQsNyBAQCBtYWtlX21vZGlm eXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlub2RlLT5leGNs UmVsVGxpc3QgPSBvbmNvbmZsaWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUtPnVwZGF0 ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlvbk9m ID0gKE5vZGUgKikgZm9yUG9ydGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3Rz ID0gd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1 cm5pbmdMaXN0czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDQ0ZWZiMWY0ZWIuLmIyZDhhNjdmNGMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTE5NjksNiArMTk2OSw3 IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9m cmFjdGlvbikKIAkJCQkJCQkJCQlyb3dNYXJrcywKIAkJCQkJCQkJCQlwYXJzZS0+b25Db25m bGljdCwKIAkJCQkJCQkJCQltZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCQkJCXBhcnNlLT5m b3JQb3J0aW9uT2YsCiAJCQkJCQkJCQkJYXNzaWduX3NwZWNpYWxfZXhlY19wYXJhbShyb290 KSk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0 aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXgg MjExYmE2NTM4OS4uODIzZDFmYmFiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w YXRobm9kZS5jCkBAIC0zNjcwLDcgKzM2NzAsOCBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0 aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJTGlzdCAqdXBk YXRlQ29sbm9zTGlzdHMsCiAJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlz dCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4 cHIgKm9uY29uZmxpY3QsCi0JCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBx UGFyYW0pCisJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHBy ICpmb3JQb3J0aW9uT2YsCisJCQkJCQlpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGVQ YXRoICpwYXRobm9kZSA9IG1ha2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM3MzYs NiArMzczNyw3IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJcGF0aG5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJu aW5nTGlzdHM7CiAJcGF0aG5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CiAJcGF0aG5vZGUt Pm9uY29uZmxpY3QgPSBvbmNvbmZsaWN0OworCXBhdGhub2RlLT5mb3JQb3J0aW9uT2YgPSBm b3JQb3J0aW9uT2Y7CiAJcGF0aG5vZGUtPmVwcVBhcmFtID0gZXBxUGFyYW07CiAJcGF0aG5v ZGUtPm1lcmdlQWN0aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYwppbmRleCA3YTFkZmI2MzY0Li5jNGI2ZDQ0M2NmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFs eXplLmMKQEAgLTQ3LDExICs0NywxMyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxh dGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKICNpbmNs dWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFu aXAuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKIApAQCAtNjAsMTAgKzYyLDE3IEBACiBwb3N0X3BhcnNlX2FuYWx5 emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rID0gTlVMTDsKIAogc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1PcHRpb25hbFNlbGVjdEludG8oUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpwYXJzZVRyZWUpOworc3RhdGljIE5vZGUgKmFkZEZvclBvcnRpb25PZldoZXJl Q29uZGl0aW9ucyhRdWVyeSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25P ZiwKKwkJCQkJCQkJCQkJTm9kZSAqd2hlcmVDbGF1c2UpOwogc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCk7 CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBJbnNlcnRTdG10ICpzdG10KTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNmb3Jt T25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgT25D b25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CitzdGF0aWMgTm9kZSAqdHJhbnNm b3JtRm9yUG9ydGlvbk9mQm91bmQoTm9kZSAqbiwgYm9vbCBpc0xvd2VyQm91bmQpOworc3Rh dGljIEZvclBvcnRpb25PZkV4cHIgKnRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJCQkJIGludCBydGluZGV4LAorCQkJCQkJCQkJ CQkJCSBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZkNsYXVzZSwKKwkJCQkJCQkJ CQkJCQkgYm9vbCBpc1VwZGF0ZSk7CiBzdGF0aWMgaW50CWNvdW50X3Jvd2V4cHJfY29sdW1u cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpOwogc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCk7 CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3Rh dGUsIFNlbGVjdFN0bXQgKnN0bXQpOwpAQCAtNDc5LDYgKzQ4OCwyMCBAQCBzdG10X3JlcXVp cmVzX3BhcnNlX2FuYWx5c2lzKFJhd1N0bXQgKnBhcnNlVHJlZSkKIAlyZXR1cm4gcmVzdWx0 OwogfQogCitzdGF0aWMgTm9kZSAqCithZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMo UXVlcnkgKnFyeSwgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsIE5vZGUgKndo ZXJlQ2xhdXNlKQoreworCWlmIChmb3JQb3J0aW9uT2YpCisJeworCQlpZiAod2hlcmVDbGF1 c2UpCisJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKEFORF9FWFBSLCBsaXN0X21h a2UyKHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4cHIsIHdoZXJlQ2xhdXNlKSwgLTEp OworCQllbHNlCisJCQlyZXR1cm4gcXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwcjsK Kwl9CisJZWxzZQorCQlyZXR1cm4gd2hlcmVDbGF1c2U7Cit9CisKIC8qCiAgKiBhbmFseXpl X3JlcXVpcmVzX3NuYXBzaG90CiAgKgkJUmV0dXJucyB0cnVlIGlmIGEgc25hcHNob3QgbXVz dCBiZSBzZXQgYmVmb3JlIGRvaW5nIHBhcnNlIGFuYWx5c2lzCkBAIC01MTIsNiArNTM1LDcg QEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQg KnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5h bWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAg ICpxdWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9ERUxFVEU7CkBAIC01NTAsNyAr NTc0LDExIEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxl dGVTdG10ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0 ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9m KQorCQlxcnktPmZvclBvcnRpb25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShw c3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgZmFsc2Up OworCisJd2hlcmVDbGF1c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5 LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJh bnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9L SU5EX1dIRVJFLCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9y bVJldHVybmluZ0xpc3QocHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTExNzMs NyArMTIwMSw3IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkgKiBOb3cgdHJhbnNmb3JtIHRoZSBVUERBVEUgc3ViZXhwcmVzc2lvbnMuCiAJ CSAqLwogCQlvbkNvbmZsaWN0U2V0ID0KLQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3Qo cHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0KTsKKwkJCXRyYW5zZm9ybVVw ZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0LCBO VUxMKTsKIAogCQlvbkNvbmZsaWN0V2hlcmUgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3Rh dGUsCiAJCQkJCQkJCQkJCSAgIG9uQ29uZmxpY3RDbGF1c2UtPndoZXJlQ2xhdXNlLApAQCAt MTIwMyw2ICsxMjMxLDE2MSBAQCB0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogdHJhbnNmb3JtRm9y UG9ydGlvbk9mQm91bmQKKyAqICAgIHRyYW5zZm9ybXMgVU5CT1VOREVEIHBzZXVkby1jb2x1 bW4gcmVmZXJlbmNlcyB0byBOVUxMCisgKiAgICAod2hpY2ggcmVwcmVzZW50ICJ1bmJvdW5k ZWQiIGluIGEgcmFuZ2UgdHlwZSwgb3RoZXJ3aXNlIHJldHVybnMKKyAqICAgIGl0cyBpbnB1 dCB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUZvclBvcnRpb25P ZkJvdW5kKE5vZGUgKm4sIGJvb2wgaXNMb3dlckJvdW5kKQoreworCWlmIChub2RlVGFnKG4p ID09IFRfQ29sdW1uUmVmKQorCXsKKwkJQ29sdW1uUmVmICAqY3JlZiA9IChDb2x1bW5SZWYg KikgbjsKKwkJY2hhcgkgICAqY25hbWUgPSAiIjsKKwkJQV9Db25zdAkgICAqbjI7CisKKwkJ aWYgKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykgPT0gMSAmJgorCQkJSXNBKGxpbml0aWFs KGNyZWYtPmZpZWxkcyksIFN0cmluZykpCisJCQljbmFtZSA9IHN0clZhbChsaW5pdGlhbChj cmVmLT5maWVsZHMpKTsKKworCQlpZiAoc3RyY21wKCJ1bmJvdW5kZWQiLCBjbmFtZSkgIT0g MCkKKwkJCXJldHVybiBuOworCisJCW4yID0gbWFrZU5vZGUoQV9Db25zdCk7CisJCW4yLT5p c251bGwgPSB0cnVlOworCQluMi0+bG9jYXRpb24gPSAoKENvbHVtblJlZiAqKW4pLT5sb2Nh dGlvbjsKKworCQlyZXR1cm4gKE5vZGUgKiluMjsKKwl9CisJZWxzZQorCQlyZXR1cm4gbjsK K30KKworLyoKKyAqIHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZQorICoKKyAqCSAgVHJh bnNmb3JtcyBhIEZvclBvcnRpb25PZkNsYXVzZSBpbiBhbiBVUERBVEUvREVMRVRFIHN0YXRl bWVudC4KKyAqCisgKgkgIC0gTG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9kIHJlcXVlc3RlZC4K KyAqCSAgLSBCdWlsZCBhIGNvbXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJvbSB0aGUgRlJPTSBh bmQgVE8gZXhwcmVzc2lvbnMuCisgKgkgIC0gQnVpbGQgYW4gIm92ZXJsYXBzIiBleHByZXNz aW9uIGZvciBmaWx0ZXJpbmcuCisgKgkgIC0gRm9yIFVQREFURXMsIGJ1aWxkIGFuICJpbnRl cnNlY3RzIiBleHByZXNzaW9uIHRoZSByZXdyaXRlciBjYW4gYWRkCisgKgkgIC0gdG8gdGhl IHRhcmdldExpc3QgdG8gY2hhbmdlIHRoZSB0ZW1wb3JhbCBib3VuZHMuCisgKi8KK3N0YXRp YyBGb3JQb3J0aW9uT2ZFeHByICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9ydGlv bk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0ZSkKK3sKKwlS ZWxhdGlvbiB0YXJnZXRyZWwgPSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCVJURVBl cm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRl bS0+cF9wZXJtaW5mbzsKKwljaGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5n ZV9uYW1lOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZXNwYWNlID0gTlVMTDsKKwljaGFyICpy YW5nZV90eXBlX25hbWUgPSBOVUxMOworCWludCByYW5nZV9hdHRubyA9IEludmFsaWRBdHRy TnVtYmVyOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJRm9yUG9ydGlvbk9mRXhwciAq cmVzdWx0OworCUxpc3QgKnRhcmdldExpc3Q7CisJTm9kZSAqdGFyZ2V0X3N0YXJ0LCAqdGFy Z2V0X2VuZDsKKwlWYXIgKnJhbmdlVmFyOworCUZ1bmNDYWxsICpmYzsKKworCXJlc3VsdCA9 IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIpOworCisJLyogTG9vayB1cCB0aGUgRk9SIFBP UlRJT04gT0YgbmFtZSByZXF1ZXN0ZWQuICovCisJcmFuZ2VfYXR0bm8gPSBhdHRuYW1lQXR0 TnVtKHRhcmdldHJlbCwgcmFuZ2VfbmFtZSwgZmFsc2UpOworCWlmIChyYW5nZV9hdHRubyA9 PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBvciBwZXJp b2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQly YW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbikpKTsKKwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJk X2F0dCwgcmFuZ2VfYXR0bm8gLSAxKTsKKwkvLyBUT0RPOiBjaGVjayBhdHRyLT5hdHRpc2Ry b3BwZWQgKD8pLAorCS8vIGFuZCBmaWd1cmUgb3V0IGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRo IHRoYXQgaW4gZ2VuZXJhbC4KKwkvLyBJdCBzaG91bGQgd29yayB0aGUgc2FtZSBhcyB1cGRh dGluZyBhbnkgb3RoZXIgY29sdW1uLgorCisJLyogTWFrZSBzdXJlIGl0J3MgYSByYW5nZSBj b2x1bW4gKi8KKwlpZiAoIXR5cGVfaXNfcmFuZ2UoYXR0ci0+YXR0dHlwaWQpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJF TkNFKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBp cyBub3QgYSByYW5nZSB0eXBlIiwKKwkJCQkJCXJhbmdlX25hbWUsCisJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKSkpOworCisJcmFu Z2VWYXIgPSBtYWtlVmFyKAorCQkJcnRpbmRleCwKKwkJCXJhbmdlX2F0dG5vLAorCQkJYXR0 ci0+YXR0dHlwaWQsCisJCQlhdHRyLT5hdHR0eXBtb2QsCisJCQlhdHRyLT5hdHRjb2xsYXRp b24sCisJCQkwKTsKKwlyYW5nZVZhci0+bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPnJhbmdl X25hbWVfbG9jYXRpb247CisJcmVzdWx0LT5yYW5nZVZhciA9IHJhbmdlVmFyOworCXJlc3Vs dC0+cmFuZ2VUeXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJaWYgKCFnZXRfdHlwbmFtZV9hbmRf bmFtZXNwYWNlKGF0dHItPmF0dHR5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFuZ2VfdHlw ZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBlICVkIiwg YXR0ci0+YXR0dHlwaWQpOworCisKKwkvKgorCSAqIEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUg RlJPTSAuLi4gVE8gLi4uLiBib3VuZHMuCisJICogVGhpcyBzaG91bGQgZ2l2ZSBhIGNvbnN0 YW50IHJlc3VsdCwgc28gd2UgYWNjZXB0IGZ1bmN0aW9ucyBsaWtlIE5PVygpCisJICogYnV0 IG5vdCBjb2x1bW4gcmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLgorCSAqCisJICogSXQg YWxzbyBwZXJtaXRzIFVOQk9VTkRFRCBpbiBlaXRoZXIgcGxhY2UuCisJICovCisJdGFyZ2V0 X3N0YXJ0ID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQoZm9yUG9ydGlvbk9mLT50YXJn ZXRfc3RhcnQsIHRydWUpOworCXRhcmdldF9lbmQgICA9IHRyYW5zZm9ybUZvclBvcnRpb25P ZkJvdW5kKGZvclBvcnRpb25PZi0+dGFyZ2V0X2VuZCwgZmFsc2UpOworCWZjID0gbWFrZUZ1 bmNDYWxsKAorCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZXNwYWNl KSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCWxpc3RfbWFrZTIodGFyZ2V0 X3N0YXJ0LCB0YXJnZXRfZW5kKSwKKwkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAorCQkJZm9y UG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwlyZXN1bHQtPnRhcmdldFJhbmdl ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIGZjLCBFWFBSX0tJTkRfVVBEQVRF X1BPUlRJT04pOworCisJLyogb3ZlcmxhcHNFeHByIGlzIHNvbWV0aGluZyB3ZSBjYW4gYWRk IHRvIHRoZSB3aGVyZUNsYXVzZSAqLworCXJlc3VsdC0+b3ZlcmxhcHNFeHByID0gKE5vZGUg KikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIiYmIiwKKwkJCShOb2RlICopIGNvcHlP YmplY3QocmFuZ2VWYXIpLCAoTm9kZSAqKSBmYywKKwkJCWZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbik7CisKKwlpZiAoaXNVcGRhdGUpCisJeworCQkvKgorCQkgKiBOb3cg bWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgc3RhcnQvZW5kIHRpbWUgb2YgdGhlIHJlY29yZC4K KwkJICogRm9yIGEgcmFuZ2UgY29sIChyKSB0aGlzIGlzIGByID0gciAqIHRhcmdldFJhbmdl YC4KKwkJICovCisJCUV4cHIgKnJhbmdlU2V0RXhwciA9IChFeHByICopIG1ha2VTaW1wbGVB X0V4cHIoQUVYUFJfT1AsICIqIiwKKwkJCQkoTm9kZSAqKSBjb3B5T2JqZWN0KHJhbmdlVmFy KSwgKE5vZGUgKikgZmMsCisJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9u KTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0YXJnZXRMaXN0ID0gTklMOworCQlyYW5n ZVNldEV4cHIgPSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgcmFu Z2VTZXRFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCQl0bGUgPSBtYWtlVGFy Z2V0RW50cnkocmFuZ2VTZXRFeHByLAorCQkJCQkJCSAgcmFuZ2VfYXR0bm8sCisJCQkJCQkJ ICByYW5nZV9uYW1lLAorCQkJCQkJCSAgZmFsc2UpOworCisJCXRhcmdldExpc3QgPSBsYXBw ZW5kKHRhcmdldExpc3QsIHRsZSk7CisKKwkJLyogTWFyayB0aGUgcmFuZ2UgY29sdW1uIGFz IHJlcXVpcmluZyB1cGRhdGUgcGVybWlzc2lvbnMgKi8KKwkJdGFyZ2V0X3Blcm1pbmZvLT51 cGRhdGVkQ29scyA9IGJtc19hZGRfbWVtYmVyKHRhcmdldF9wZXJtaW5mby0+dXBkYXRlZENv bHMsCisJCQkJCQkJCQkJCQkJICByYW5nZV9hdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIpOworCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSB0YXJnZXRMaXN0Owor CX0KKwllbHNlCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSBOSUw7CisKKwlyZXN1bHQtPnJhbmdl X25hbWUgPSByYW5nZV9uYW1lOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1 aWxkT25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdApAQCAtMjQwOSw2ICsyNTkyLDcgQEAg dHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0 bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVz cGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpx dWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9VUERBVEU7CkBAIC0yNDI2LDYgKzI2 MTAsMTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0 ZVN0bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0aW9uLT5pbmgsCiAJCQkJCQkJ CQkJIHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOworCisJaWYgKHN0bXQtPmZvclBv cnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZD bGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2Ys IHRydWUpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBz dWJxdWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICov CkBAIC0yNDQyLDcgKzI2MzAsOCBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0g ZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5z Zm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJd2hlcmVDbGF1 c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0 aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hF UkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3Qo cHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTI0NTEsNyArMjY0MCw3IEBAIHRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KQogCSAqIE5vdyB3ZSBhcmUgZG9uZSB3aXRoIFNFTEVDVC1saWtlIHByb2Nlc3NpbmcsIGFu ZCBjYW4gZ2V0IG9uIHdpdGgKIAkgKiB0cmFuc2Zvcm1pbmcgdGhlIHRhcmdldCBsaXN0IHRv IG1hdGNoIHRoZSBVUERBVEUgdGFyZ2V0IGNvbHVtbnMuCiAJICovCi0JcXJ5LT50YXJnZXRM aXN0ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExp c3QpOworCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0 YXRlLCBzdG10LT50YXJnZXRMaXN0LCBxcnktPmZvclBvcnRpb25PZik7CiAKIAlxcnktPnJ0 YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUt PnBfcnRlcGVybWluZm9zOwpAQCAtMjQ3MCw3ICsyNjU5LDcgQEAgdHJhbnNmb3JtVXBkYXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAgKgloYW5kbGUg U0VUIGNsYXVzZSBpbiBVUERBVEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERB VEUKICAqLwogTGlzdCAqCi10cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCwgRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0gTklMOwogCVJURVBlcm1pc3Np b25JbmZvICp0YXJnZXRfcGVybWluZm87CkBAIC0yNTIwLDYgKzI3MDksMjEgQEAgdHJhbnNm b3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlz dCkKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwc3RhdGUtPnBfdGFyZ2V0X3Jl bGF0aW9uKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0 LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgRk9SIFBPUlRJT04g T0YgdXBkYXRlLAorCQkgKiBmb3JiaWQgZGlyZWN0bHkgc2V0dGluZyB0aGUgcmFuZ2UgY29s dW1uLAorCQkgKiBzaW5jZSB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIGltcGxpY2l0 IHVwZGF0ZXMuCisJCSAqLworCQlpZiAoZm9yUG9ydGlvbk9mICE9IE5VTEwpCisJCXsKKwkJ CWlmIChhdHRybm8gPT0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8pCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCSBlcnJtc2coImNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byBcIiVzXCIgaW4gYSBG T1IgUE9SVElPTiBPRiB1cGRhdGUiLAorCQkJCQkJCQlvcmlnVGFyZ2V0LT5uYW1lKSwKKwkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikp KTsKKwkJfQorCiAJCXVwZGF0ZVRhcmdldExpc3RFbnRyeShwc3RhdGUsIHRsZSwgb3JpZ1Rh cmdldC0+bmFtZSwKIAkJCQkJCQkgIGF0dHJubywKIAkJCQkJCQkgIG9yaWdUYXJnZXQtPmlu ZGlyZWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggN2QyMjMxOWQ0MC4uNWE0OWJhNmZhMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTgsNiArMjU4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAlSYW5nZVZhciAgICpyYW5nZTsKIAlJbnRvQ2xhdXNlICppbnRvOwogCVdp dGhDbGF1c2UgKndpdGg7CisJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3Jwb3J0aW9ub2Y7CiAJ SW5mZXJDbGF1c2UJKmluZmVyOwogCU9uQ29uZmxpY3RDbGF1c2UgKm9uY29uZmxpY3Q7CiAJ QV9JbmRpY2VzICAqYWluZDsKQEAgLTU1MSw2ICs1NTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByCiAldHlwZSA8cmFuZ2U+ CWV4dGVuZGVkX3JlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4JcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKyV0eXBlIDxmb3Jwb3J0aW9ub2Y+IGZvcl9wb3J0aW9uX29mX2NsYXVzZQog JXR5cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVzZSBvcHRfcmVwZWF0YWJsZV9jbGF1c2UK ICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFyZ2V0IGluc2VydF9jb2x1bW5faXRl bQogCkBAIC03NDcsNyArNzQ5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAog CVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQ QVNTV09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQotCVBPU0lUSU9OIFBSRUNF RElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCisJUE9S VElPTiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJF UEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUg UFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKIAlRVU9URQpAQCAtODI4LDYgKzgz MCwxNiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJW5vbmFzc29jCUtFWVMgT0JK RUNUX1AgU0NBTEFSIFZBTFVFX1AKICVub25hc3NvYwlXSVRIIFdJVEhPVVQKIAorLyoKKyAq IFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVkdWNlIGNvbmZsaWN0OgorICogRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZBTCBZRUFSIFRPIE1PTlRIIFRPIGZv by4KKyAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFzc2ljICJkYW5nbGluZyBlbHNlIiBw cm9ibGVtLCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFyIHJlc29sdXRpb246IHRyZWF0IHRo ZSBUTyBhcyBwYXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90IGFzIHBhcnQgb2YKKyAqIHRoZSBG Uk9NIC4uLiBUTyAuLi4uIFVzZXJzIGNhbiBhZGQgcGFyZW50aGVzZXMgaWYgdGhhdCdzIGEg cHJvYmxlbS4KKyAqIFRPIGp1c3QgbmVlZHMgdG8gYmUgaGlnaGVyIHByZWNlZGVuY2UgdGhh biBZRUFSX1AgZXRjLgorICovCislbm9uYXNzb2MgWUVBUl9QIE1PTlRIX1AgREFZX1AgSE9V Ul9QIE1JTlVURV9QCislbm9uYXNzb2MgVE8KIC8qCiAgKiBUbyBzdXBwb3J0IHRhcmdldF9l bCB3aXRob3V0IEFTLCBpdCB1c2VkIHRvIGJlIG5lY2Vzc2FyeSB0byBhc3NpZ24gSURFTlQg YW4KICAqIGV4cGxpY2l0IHByZWNlZGVuY2UganVzdCBsZXNzIHRoYW4gT3AuICBXaGlsZSB0 aGF0J3Mgbm90IHJlYWxseSBuZWNlc3NhcnkKQEAgLTEyMTY2LDE0ICsxMjE3OCwxNiBAQCBy ZXR1cm5pbmdfY2xhdXNlOgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBEZWxldGVT dG10OiBvcHRfd2l0aF9jbGF1c2UgREVMRVRFX1AgRlJPTSByZWxhdGlvbl9leHByX29wdF9h bGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQl1c2luZ19jbGF1c2Ugd2hlcmVf b3JfY3VycmVudF9jbGF1c2UgcmV0dXJuaW5nX2NsYXVzZQogCQkJCXsKIAkJCQkJRGVsZXRl U3RtdCAqbiA9IG1ha2VOb2RlKERlbGV0ZVN0bXQpOwogCiAJCQkJCW4tPnJlbGF0aW9uID0g JDQ7Ci0JCQkJCW4tPnVzaW5nQ2xhdXNlID0gJDU7Ci0JCQkJCW4tPndoZXJlQ2xhdXNlID0g JDY7Ci0JCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkNzsKKwkJCQkJbi0+Zm9yUG9ydGlvbk9m ID0gJDU7CisJCQkJCW4tPnVzaW5nQ2xhdXNlID0gJDY7CisJCQkJCW4tPndoZXJlQ2xhdXNl ID0gJDc7CisJCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkODsKIAkJCQkJbi0+d2l0aENsYXVz ZSA9ICQxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTIyMzYsNiArMTIy NTAsNyBAQCBvcHRfbm93YWl0X29yX3NraXA6CiAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBVUERBVEUgcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKwkJCWZvcl9wb3J0aW9uX29mX2NsYXVzZQogCQkJU0VUIHNldF9jbGF1c2Vf bGlzdAogCQkJZnJvbV9jbGF1c2UKIAkJCXdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCkBAIC0x MjI0NCwxMCArMTIyNTksMTEgQEAgVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFU RSByZWxhdGlvbl9leHByX29wdF9hbGlhcwogCQkJCQlVcGRhdGVTdG10ICpuID0gbWFrZU5v ZGUoVXBkYXRlU3RtdCk7CiAKIAkJCQkJbi0+cmVsYXRpb24gPSAkMzsKLQkJCQkJbi0+dGFy Z2V0TGlzdCA9ICQ1OwotCQkJCQluLT5mcm9tQ2xhdXNlID0gJDY7Ci0JCQkJCW4tPndoZXJl Q2xhdXNlID0gJDc7Ci0JCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkODsKKwkJCQkJbi0+Zm9y UG9ydGlvbk9mID0gJDQ7CisJCQkJCW4tPnRhcmdldExpc3QgPSAkNjsKKwkJCQkJbi0+ZnJv bUNsYXVzZSA9ICQ3OworCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ4OworCQkJCQluLT5yZXR1 cm5pbmdMaXN0ID0gJDk7CiAJCQkJCW4tPndpdGhDbGF1c2UgPSAkMTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KQEAgLTEzNjgzLDYgKzEzNjk5LDE5IEBAIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzOiByZWxhdGlvbl9leHByCQkJCQklcHJlYyBVTUlOVVMKIAkJCQl9CiAJ CTsKIAorZm9yX3BvcnRpb25fb2ZfY2xhdXNlOgorCQkJRk9SIFBPUlRJT04gT0YgQ29sSWQg RlJPTSBhX2V4cHIgVE8gYV9leHByCisJCQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2Ug Km4gPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1l ID0gJDQ7CisJCQkJCW4tPnJhbmdlX25hbWVfbG9jYXRpb24gPSBANDsKKwkJCQkJbi0+dGFy Z2V0X3N0YXJ0ID0gJDY7CisJCQkJCW4tPnRhcmdldF9lbmQgPSAkODsKKwkJCQkJJCQgPSBu OworCQkJCX0KKwkJCXwgLypFTVBUWSovCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKIC8q CiAgKiBUQUJMRVNBTVBMRSBkZWNvcmF0aW9uIGluIGEgRlJPTSBpdGVtCiAgKi8KQEAgLTE3 MjM4LDYgKzE3MjY3LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVNTV09SRAog CQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKKwkJCXwgUE9SVElPTgogCQkJfCBQUkVDRURJTkcK IAkJCXwgUFJFUEFSRQogCQkJfCBQUkVQQVJFRApAQCAtMTc4NDIsNiArMTc4NzIsNyBAQCBi YXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9M SUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUE9TSVRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8 IFBSRVBBUkUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwppbmRleCA4NWNkNDdiN2FlLi5jZThl MGJlMDQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01NjMsNiArNTYzLDEzIEBA IGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9 IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJ CQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWVsc2UKKwkJ CQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAq IFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpAQCAtOTUzLDYgKzk2MCw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNl U3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NZ Q0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJf S0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJl IG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQlicmVh azsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDog Y2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2NvbGxhdGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMK aW5kZXggOWY2YWZjMzUxYy4uZDA5YjJkMmIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2NvbGxhdGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y29sbGF0ZS5jCkBAIC00ODQsNiArNDg0LDcgQEAgYXNzaWduX2NvbGxhdGlvbnNfd2Fsa2Vy KE5vZGUgKm5vZGUsIGFzc2lnbl9jb2xsYXRpb25zX2NvbnRleHQgKmNvbnRleHQpCiAJCWNh c2UgVF9Kb2luRXhwcjoKIAkJY2FzZSBUX0Zyb21FeHByOgogCQljYXNlIFRfT25Db25mbGlj dEV4cHI6CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgogCQljYXNlIFRfU29ydEdyb3Vw Q2xhdXNlOgogCQljYXNlIFRfTWVyZ2VBY3Rpb246CiAJCQkodm9pZCkgZXhwcmVzc2lvbl90 cmVlX3dhbGtlcihub2RlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggNjRjNTgy YzM0NC4uZmVlNmJkOTAyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC01NjYs NiArNTY2LDkgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29s dW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9QQVJUSVRJT05fQk9VTkQ6CiAJCQll cnIgPSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gcGFydGl0aW9uIGJvdW5k IGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9S VElPTjoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRo ZQpAQCAtMTgxMyw2ICsxODE2LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpw c3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9D T0xVTU46CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5l cmF0aW9uIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERB VEVfUE9SVElPTjoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBP UlRJT04gT0YgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVy ZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUK QEAgLTMxMDQsNiArMzExMCw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQg ZXhwcktpbmQpCiAJCQlyZXR1cm4gIlVQREFURSI7CiAJCWNhc2UgRVhQUl9LSU5EX01FUkdF X1dIRU46CiAJCQlyZXR1cm4gIk1FUkdFIFdIRU4iOworCQljYXNlIEVYUFJfS0lORF9VUERB VEVfUE9SVElPTjoKKwkJCXJldHVybiAiRk9SIFBPUlRJT04gT0YiOwogCQljYXNlIEVYUFJf S0lORF9HUk9VUF9CWToKIAkJCXJldHVybiAiR1JPVVAgQlkiOwogCQljYXNlIEVYUFJfS0lO RF9PUkRFUl9CWToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IGIzZjBiNmExMzcu LjMxZWQwMWE4NGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY1Niw2ICsy NjU2LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVf TUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX21lcmdlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYwpp bmRleCA5MWIxMTU2ZDk5Li5jMDA4MDJhZTIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfbWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVy Z2UuYwpAQCAtMzcyLDcgKzM3Miw3IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIE1lcmdlU3RtdCAqc3RtdCkKIAkJCQkJcHN0YXRlLT5wX2lzX2luc2VydCA9 IGZhbHNlOwogCQkJCQlhY3Rpb24tPnRhcmdldExpc3QgPQogCQkJCQkJdHJhbnNmb3JtVXBk YXRlVGFyZ2V0TGlzdChwc3RhdGUsCi0JCQkJCQkJCQkJCQkgIG1lcmdlV2hlbkNsYXVzZS0+ dGFyZ2V0TGlzdCk7CisJCQkJCQkJCQkJCQkgIG1lcmdlV2hlbkNsYXVzZS0+dGFyZ2V0TGlz dCwgTlVMTCk7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSBDTURfREVMRVRFOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IGI0ODZhYjU1OWEuLjU3NmE5 OGUwZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTM0NzMs NiArMzQ3MywzMCBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBSZWxh dGlvbiB2aWV3KQogCQkJCQkJCQkJICAmcGFyc2V0cmVlLT5oYXNTdWJMaW5rcyk7CiAJfQog CisJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmIHBhcnNldHJlZS0+Y29tbWFuZFR5 cGUgPT0gQ01EX1VQREFURSkKKwl7CisJCS8qCisJCSAqIExpa2UgdGhlIElOU0VSVC9VUERB VEUgY29kZSBhYm92ZSwgdXBkYXRlIHRoZSByZXNub3MgaW4gdGhlCisJCSAqIGF1eGlsaWFy eSBVUERBVEUgdGFyZ2V0bGlzdCB0byByZWZlciB0byBjb2x1bW5zIG9mIHRoZSBiYXNlCisJ CSAqIHJlbGF0aW9uLgorCQkgKi8KKwkJZm9yZWFjaChsYywgcGFyc2V0cmVlLT5mb3JQb3J0 aW9uT2YtPnJhbmdlU2V0KQorCQl7CisJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVu dHJ5ICopIGxmaXJzdChsYyk7CisJCQlUYXJnZXRFbnRyeSAqdmlld190bGU7CisKKwkJCWlm ICh0bGUtPnJlc2p1bmspCisJCQkJY29udGludWU7CisKKwkJCXZpZXdfdGxlID0gZ2V0X3Rs ZV9ieV9yZXNubyh2aWV3X3RhcmdldGxpc3QsIHRsZS0+cmVzbm8pOworCQkJaWYgKHZpZXdf dGxlICE9IE5VTEwgJiYgIXZpZXdfdGxlLT5yZXNqdW5rICYmIElzQSh2aWV3X3RsZS0+ZXhw ciwgVmFyKSkKKwkJCQl0bGUtPnJlc25vID0gKChWYXIgKikgdmlld190bGUtPmV4cHIpLT52 YXJhdHRubzsKKwkJCWVsc2UKKwkJCQllbG9nKEVSUk9SLCAiYXR0cmlidXRlIG51bWJlciAl ZCBub3QgZm91bmQgaW4gdmlldyB0YXJnZXRsaXN0IiwKKwkJCQkJIHRsZS0+cmVzbm8pOwor CQl9CisJfQorCiAJLyoKIAkgKiBGb3IgVVBEQVRFL0RFTEVURSwgcHVsbCB1cCBhbnkgV0hF UkUgcXVhbHMgZnJvbSB0aGUgdmlldy4gIFdlIGtub3cgdGhhdAogCSAqIGFueSBWYXJzIGlu IHRoZSBxdWFscyBtdXN0IHJlZmVyZW5jZSB0aGUgb25lIGJhc2UgcmVsYXRpb24sIHNvIHdl IG5lZWQKQEAgLTM4MTEsNiArMzgzNSwyMiBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNl dHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCkKIAkJZWxz ZSBpZiAoZXZlbnQgPT0gQ01EX1VQREFURSkKIAkJewogCQkJQXNzZXJ0KHBhcnNldHJlZS0+ b3ZlcnJpZGUgPT0gT1ZFUlJJRElOR19OT1RfU0VUKTsKKwkJCS8qCisJCQkgKiBVcGRhdGUg Rk9SIFBPUlRJT04gT0YgY29sdW1uKHMpIGF1dG9tYXRpY2FsbHkuIERvbid0CisJCQkgKiBk byB0aGlzIHVudGlsIHdlJ3JlIGRvbmUgcmV3cml0aW5nIGEgdmlldyB1cGRhdGUsIHNvCisJ CQkgKiB0aGF0IHdlIGRvbid0IGFkZCB0aGUgc2FtZSB1cGRhdGUgb24gdGhlIHJlY3Vyc2lv bi4KKwkJCSAqLworCQkJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmCisJCQkJcnRf ZW50cnlfcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcpCisJCQl7 CisJCQkJTGlzdENlbGwgKnRsOworCQkJCWZvcmVhY2godGwsIHBhcnNldHJlZS0+Zm9yUG9y dGlvbk9mLT5yYW5nZVNldCkKKwkJCQl7CisJCQkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFy Z2V0RW50cnkgKikgbGZpcnN0KHRsKTsKKwkJCQkJcGFyc2V0cmVlLT50YXJnZXRMaXN0ID0g bGFwcGVuZChwYXJzZXRyZWUtPnRhcmdldExpc3QsIHRsZSk7CisJCQkJfQorCQkJfQorCiAJ CQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPQogCQkJCXJld3JpdGVUYXJnZXRMaXN0SVUocGFy c2V0cmVlLT50YXJnZXRMaXN0LAogCQkJCQkJCQkJcGFyc2V0cmVlLT5jb21tYW5kVHlwZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQv dGNvcC91dGlsaXR5LmMKaW5kZXggZTNjY2Y2YzdmNy4uNjc4MWU1NTAyMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKQEAgLTE1NjAsNyArMTU2MCw3IEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQl0cnVlLAkvKiBjaGVja19yaWdodHMgKi8KIAkJ CQkJCQkJCXRydWUsCS8qIGNoZWNrX25vdF9pbl91c2UgKi8KIAkJCQkJCQkJCWZhbHNlLAkv KiBza2lwX2J1aWxkICovCi0JCQkJCQkJCQlmYWxzZSk7IC8qIHF1aWV0ICovCisJCQkJCQkJ CQlmYWxzZSk7CS8qIHF1aWV0ICovCiAKIAkJCQkJLyoKIAkJCQkJICogQWRkIHRoZSBDUkVB VEUgSU5ERVggbm9kZSBpdHNlbGYgdG8gc3Rhc2ggcmlnaHQgYXdheTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9NYWtlZmlsZQppbmRleCAwZGUwYmJiMWI4Li5hNGYyMjZlYzhkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L01ha2VmaWxlCkBAIC03OCw2ICs3OCw3IEBAIE9CSlMgPSBcCiAJb3JhY2xlX2NvbXBh dC5vIFwKIAlvcmRlcmVkc2V0YWdncy5vIFwKIAlwYXJ0aXRpb25mdW5jcy5vIFwKKwlwZXJp b2QubyBcCiAJcGdfbG9jYWxlLm8gXAogCXBnX2xzbi5vIFwKIAlwZ191cGdyYWRlX3N1cHBv cnQubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uMGVkNDMwNGUxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpAQCAtMCwwICsxLDU2IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBwZXJpb2QuYworICoJICBGdW5jdGlvbnMgdG8gc3VwcG9ydCBw ZXJpb2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZXJpb2QuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVk ZSAiZm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgorI2luY2x1ZGUgInV0 aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9wZXJpb2QuaCIKKyNpbmNsdWRl ICJ1dGlscy9yYW5nZXR5cGVzLmgiCisKK0RhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRh YmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdl dHlwZSkKK3sKKwlEYXR1bSBzdGFydHZhbHVlOworCURhdHVtIGVuZHZhbHVlOworCURhdHVt IHJlc3VsdDsKKwlib29sCXN0YXJ0aXNudWxsOworCWJvb2wJZW5kaXNudWxsOworCUxPQ0FM X0ZDSU5GTyhmY2luZm8sIDIpOworCUZtZ3JJbmZvCWZsaW5mbzsKKwlGdW5jRXhwciAgICpm OworCisJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2luZm8sICZmbGluZm8sIDIsIElu dmFsaWRPaWQsIE5VTEwsIE5VTEwpOworCWYgPSBtYWtlTm9kZShGdW5jRXhwcik7CisJZi0+ ZnVuY3Jlc3VsdHR5cGUgPSByYW5nZXR5cGU7CisJZmxpbmZvLmZuX2V4cHIgPSAoTm9kZSAq KSBmOworCWZsaW5mby5mbl9leHRyYSA9IE5VTEw7CisKKwkvKiBjb21wdXRlIG9sZHZhbHVl ICovCisJc3RhcnR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBzdGFydGF0dG5vLCAmc3Rh cnRpc251bGwpOworCWVuZHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIGVuZGF0dG5vLCAm ZW5kaXNudWxsKTsKKworCWZjaW5mby0+YXJnc1swXS52YWx1ZSA9IHN0YXJ0dmFsdWU7CisJ ZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCA9IHN0YXJ0aXNudWxsOworCWZjaW5mby0+YXJnc1sx XS52YWx1ZSA9IGVuZHZhbHVlOworCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBlbmRpc251 bGw7CisKKwlyZXN1bHQgPSByYW5nZV9jb25zdHJ1Y3RvcjIoZmNpbmZvKTsKKwlpZiAoZmNp bmZvLT5pc251bGwpCisJCWVsb2coRVJST1IsICJmdW5jdGlvbiAldSByZXR1cm5lZCBOVUxM IiwgZmxpbmZvLmZuX29pZCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggZDY1ZTU2MjVjNy4uZDRlMTczMjM3NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0xMjA2LDYgKzEyMDYsNDggQEAgcmFu Z2Vfc3BsaXRfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBjb25zdCBSYW5n ZVR5cGUgKnIxLCBjb25zdCBSYW5nZVQKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBy YW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbCAtIFNldHMgb3V0cHV0MSBhbmQgb3V0cHV0MiB0byB0 aGUgcmVtYWluaW5nIHBhcnRzIG9mIHIxCisgKiBhZnRlciBzdWJ0cmFjdGluZyByMiwgb3Ig aWYgbm90aGluZyBpcyBsZWZ0IHRoZW4gdG8gdGhlIGVtcHR5IHJhbmdlLgorICogb3V0cHV0 MSB3aWxsIGFsd2F5cyBiZSAiYmVmb3JlIiByMiBhbmQgb3V0cHV0MiAiYWZ0ZXIiLgorICov Cit2b2lkCityYW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2Fj aGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCisJCQkJCQljb25zdCBSYW5nZVR5cGUgKnIyLCBS YW5nZVR5cGUgKipvdXRwdXQxLCBSYW5nZVR5cGUgKipvdXRwdXQyKQoreworCVJhbmdlQm91 bmQJbG93ZXIxLAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1cHBl cjI7CisJYm9vbAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKworCXJhbmdlX2Rlc2VyaWFsaXpl KHR5cGNhY2hlLCByMSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5MSk7CisJcmFuZ2VfZGVz ZXJpYWxpemUodHlwY2FjaGUsIHIyLCAmbG93ZXIyLCAmdXBwZXIyLCAmZW1wdHkyKTsKKwor CWlmIChyYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyKSA8IDAp CisJeworCQlsb3dlcjIuaW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2Vy Mi5sb3dlciA9IGZhbHNlOworCQkqb3V0cHV0MSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZs b3dlcjEsICZsb3dlcjIsIGZhbHNlLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJKm91dHB1 dDEgPSBtYWtlX2VtcHR5X3JhbmdlKHR5cGNhY2hlKTsKKwl9CisKKwlpZiAocmFuZ2VfY21w X2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMikgPiAwKQorCXsKKwkJdXBwZXIy LmluY2x1c2l2ZSA9ICF1cHBlcjIuaW5jbHVzaXZlOworCQl1cHBlcjIubG93ZXIgPSB0cnVl OworCQkqb3V0cHV0MiA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZ1cHBlcjIsICZ1cHBlcjEs IGZhbHNlLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJKm91dHB1dDIgPSBtYWtlX2VtcHR5 X3JhbmdlKHR5cGNhY2hlKTsKKwl9Cit9CisKIC8qIHJhbmdlIC0+IHJhbmdlIGFnZ3JlZ2F0 ZSBmdW5jdGlvbnMgKi8KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKaW5kZXggMzY1Yjg0NGJmMy4uNDQ2ZTg5OGViNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMKQEAgLTIyNyw2ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCByaV9QZXJm b3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQlSSV9R dWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwKIAkJCQkJCQlSZWxhdGlvbiBma19y ZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwg VHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJCQkJaW50IGZvclBvcnRpb25PZlBhcmFt LCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJCQkJYm9vbCBkZXRlY3ROZXdSb3dzLCBpbnQg ZXhwZWN0X09LKTsKIHN0YXRpYyB2b2lkIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVs LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGssCkBAIC0yMzUsNiArMjM2LDExIEBAIHN0YXRp YyB2b2lkIHJpX1JlcG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlp bmZvLAogCQkJCQkJCSAgIFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJ CQkJCSAgIFR1cGxlVGFibGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNj LAogCQkJCQkJCSAgIGludCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVf bm9yZXR1cm4oKTsKK3N0YXRpYyBib29sIGZwb190YXJnZXRzX3BrX3JhbmdlKGNvbnN0IEZv clBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwKKwkJCQkJCQkJIGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8pOworc3RhdGljIERhdHVtIHJlc3RyaWN0X2Nhc2NhZGluZ19y YW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJCQkJCQkJCQkg IGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCisJCQkJCQkJCQkgIFR1cGxlVGFi bGVTbG90ICpvbGRzbG90KTsKIAogCiAvKgpAQCAtNDQzLDYgKzQ0OSw3IEBAIFJJX0ZLZXlf Y2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8s ICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCU5VTEwsIG5ld3Ns b3QsCisJCQkJCS0xLCAwLAogCQkJCQlwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFLAogCQkJCQlTUElfT0tfU0VMRUNUKTsKIApAQCAtNjAw LDYgKzYwNyw3IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRp b24gZmtfcmVsLAogCXJlc3VsdCA9IHJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBx cGxhbiwKIAkJCQkJCQkgZmtfcmVsLCBwa19yZWwsCiAJCQkJCQkJIG9sZHNsb3QsIE5VTEws CisJCQkJCQkJIC0xLCAwLAogCQkJCQkJCSB0cnVlLAkvKiB0cmVhdCBsaWtlIHVwZGF0ZSAq LwogCQkJCQkJCSBTUElfT0tfU0VMRUNUKTsKIApAQCAtNjk5LDYgKzcwNyw4IEBAIHJpX3Jl c3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJVHVw bGVUYWJsZVNsb3QgKm9sZHNsb3Q7CiAJUklfUXVlcnlLZXkgcWtleTsKIAlTUElQbGFuUHRy CXFwbGFuOworCWludAkJCXRhcmdldFJhbmdlUGFyYW0gPSAtMTsKKwlEYXR1bQkJdGFyZ2V0 UmFuZ2UgPSAwOwogCiAJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0 YS0+dGdfdHJpZ2dlciwKIAkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7 CkBAIC03OTUsOSArODA1LDE2IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJLyoKIAkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1 biBpdCB0byBjaGVjayBmb3IgZXhpc3RpbmcgcmVmZXJlbmNlcy4KIAkgKi8KKwlpZiAodHJp Z2RhdGEtPnRnX3RlbXBvcmFsKQorCXsKKwkJdGFyZ2V0UmFuZ2VQYXJhbSA9IHJpaW5mby0+ bmtleXMgLSAxOworCQl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0 cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisJfQorCiAJcmlfUGVy Zm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwK IAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJdGFyZ2V0UmFuZ2VQYXJhbSwgdGFyZ2V0UmFu Z2UsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElf T0tfU0VMRUNUKTsKIApAQCAtOTA0LDYgKzkyMSw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwo UEdfRlVOQ1RJT05fQVJHUykKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBs YW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQkt MSwgMCwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQ SV9PS19ERUxFVEUpOwogCkBAIC0xMDI1LDYgKzEwNDMsNyBAQCBSSV9GS2V5X2Nhc2NhZGVf dXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgbmV3c2xvdCwK KwkJCQkJLTEsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwog CQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMTI1Nyw2ICsxMjc2LDcgQEAgcmlfc2V0KFRy aWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkKIAly aV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtf cmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQktMSwgMCwKIAkJCQkJdHJ1ZSwJCS8q IG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19VUERBVEUpOwogCkBAIC0y NTE5LDYgKzI1MzksNyBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywKIAkJCQlSSV9RdWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwK IAkJCQlSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQlUdXBsZVRhYmxl U2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJaW50IGZvclBv cnRpb25PZlBhcmFtLCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJYm9vbCBkZXRlY3ROZXdS b3dzLCBpbnQgZXhwZWN0X09LKQogewogCVJlbGF0aW9uCXF1ZXJ5X3JlbCwKQEAgLTI1NzQs NiArMjU5NSwxMiBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8g KnJpaW5mbywKIAkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBvbGRzbG90LCByaWlu Zm8sIHNvdXJjZV9pc19waywKIAkJCQkJCSB2YWxzLCBudWxscyk7CiAJfQorCS8qIEFkZCBv bmUgbW9yZSBxdWVyeSBwYXJhbSBpZiB3ZSBhcmUgdXNpbmcgRk9SIFBPUlRJT04gT0YgKi8K KwlpZiAoZm9yUG9ydGlvbk9mKQorCXsKKwkJdmFsc1tmb3JQb3J0aW9uT2ZQYXJhbV0gPSBm b3JQb3J0aW9uT2Y7CisJCW51bGxzW2ZvclBvcnRpb25PZlBhcmFtXSA9ICcgJzsKKwl9CiAK IAkvKgogCSAqIEluIFJFQUQgQ09NTUlUVEVEIG1vZGUsIHdlIGp1c3QgbmVlZCB0byB1c2Ug YW4gdXAtdG8tZGF0ZSByZWd1bGFyCkBAIC0zMjg3LDMgKzMzMTQsNTAgQEAgUklfRktleV90 cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAogCXJldHVybiBSSV9UUklHR0VSX05PTkU7CiB9 CisKKy8qCisgKiBmcG9fdGFyZ2V0c19wa19yYW5nZQorICoKKyAqIFJldHVybnMgdHJ1ZSBp ZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZvIGluY2x1ZGVzIHRoZSBy YW5nZQorICogY29sdW1uIHRhcmdldGVkIGJ5IHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2Ug KGFjY29yZGluZyB0byB0Z190ZW1wb3JhbCkuCisgKi8KK3N0YXRpYyBib29sCitmcG9fdGFy Z2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNv bnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pCit7CisJaWYgKHRnX3RlbXBvcmFsID09 IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiByaWluZm8tPnBrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdID09IHRnX3RlbXBvcmFsLT5mcF9yYW5nZUF0dG5vOworfQor CisvKgorICogcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlIC0KKyAqCisgKiBSZXR1cm5zIGEg RGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRoZSBhcHByb3ByaWF0ZSB0aW1lc3Bhbgor ICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3ZSBDQVNDQURFL1NFVCBOVUxML1NF VCBERUZBVUxULgorICoKKyAqIEluIGEgbm9ybWFsIFVQREFURS9ERUxFVEUgdGhpcyBzaG91 bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAorICogYnV0IGlmIHRoZXJlIHdh cyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91bGQgdXNlIHRoYXQgdG8K KyAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVyLgorICovCitzdGF0aWMg RGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0 ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFR1cGxl VGFibGVTbG90ICpvbGRzbG90KQoreworCURhdHVtCXBrUmVjb3JkUmFuZ2U7CisJYm9vbAlp c251bGw7CisKKwlwa1JlY29yZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHNsb3QsIHJpaW5m by0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0sICZpc251bGwpOworCWlmIChpc251 bGwpCisJCWVsb2coRVJST1IsICJhcHBsaWNhdGlvbiB0aW1lIHNob3VsZCBub3QgYmUgbnVs bCIpOworCisJaWYgKGZwb190YXJnZXRzX3BrX3JhbmdlKHRnX3RlbXBvcmFsLCByaWluZm8p KQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9IERhdHVtR2V0UmFuZ2VUeXBlUChwa1JlY29yZFJh bmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9IERhdHVtR2V0UmFuZ2VUeXBlUCh0Z190ZW1wb3Jh bC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlPaWQgcm5ndHlwaWQgPSBSYW5nZVR5cGVHZXRPaWQo cjEpOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShy bmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlyZXR1cm4gUmFuZ2VUeXBlUEdl dERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyKSk7CisJ fQorCWVsc2UKKwkJcmV0dXJuIHBrUmVjb3JkUmFuZ2U7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCmluZGV4IGZjNmQyNjdlNDQuLjM5MTc2MmYzMDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMTcwLDYgKzIxNzAsNTggQEAgZ2V0 X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpCiAJCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAq IGdldF90eXBuYW1lCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1lIG9mIGEgZ2l2ZW4gdHlw ZQorICoKKyAqIFJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBzdHJpbmcsIG9yIE5V TEwgaWYgbm8gc3VjaCB0eXBlLgorICovCitjaGFyICoKK2dldF90eXBuYW1lKE9pZCB0eXBp ZCkKK3sKKwlIZWFwVHVwbGUgICB0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVP SUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0 cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RS VUNUKHRwKTsKKwkJY2hhcgkgICAqcmVzdWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFt ZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0 dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIGdl dF90eXBuYW1lX2FuZF9uYW1lc3BhY2UKKyAqCisgKgkgIFJldHVybnMgdGhlIG5hbWUgYW5k IG5hbWVzcGFjZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgb25l IGZvdW5kLCBvciBmYWxzZSBpZiBub3QuCisgKi8KK2Jvb2wKK2dldF90eXBuYW1lX2FuZF9u YW1lc3BhY2UoT2lkIHR5cGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cG5hbWVzcGFj ZSkKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lE LCBPYmplY3RJZEdldERhdHVtKHR5cGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHAp KQorCXsKKwkJRm9ybV9wZ190eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VCh0cCk7CisKKwkJKnR5cG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHlwdHVwLT50eXBuYW1l KSk7CisJCSp0eXBuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUodHlwdHVwLT50eXBu YW1lc3BhY2UpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gKnR5cG5hbWVz cGFjZTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBnZXRfdHlw bGVuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDQzMGUzY2E3ZGQuLmIzZDkw ZGVhYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX29sZHRhYmxl OwogCVR1cGxlc3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7CiAJY29uc3QgQml0bWFwc2V0ICp0 Z191cGRhdGVkY29sczsKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWw7CiB9IFRy aWdnZXJEYXRhOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjYjcxNGY0YTE5 Li5mZWQzMzg2NDI5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNDEsMTIgKzQxLDE0 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRl ICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5o IgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0 cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2hhcmVkdHVwbGVzdG9yZS5oIgogI2luY2x1 ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIK ICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0 b3JlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAogc3RydWN0IFBsYW5TdGF0 ZTsJCQkJLyogZm9yd2FyZCByZWZlcmVuY2VzIGluIHRoaXMgZmlsZSAqLwogc3RydWN0IFBh cmFsbGVsSGFzaEpvaW5TdGF0ZTsKQEAgLTQyMiw2ICs0MjQsMjggQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBY3Rpb25TdGF0ZQogCUV4cHJTdGF0ZSAgKm1hc193aGVucXVhbDsJLyogV0hF TiBbTk9UXSBNQVRDSEVEIEFORCBjb25kaXRpb25zICovCiB9IE1lcmdlQWN0aW9uU3RhdGU7 CiAKKy8qCisgKiBGb3JQb3J0aW9uT2ZTdGF0ZQorICoKKyAqIEV4ZWN1dG9yIHN0YXRlIG9m IGEgRk9SIFBPUlRJT04gT0Ygb3BlcmF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQ b3J0aW9uT2ZTdGF0ZQoreworCU5vZGVUYWcJCXR5cGU7CisKKwljaGFyICAgKmZwX3Jhbmdl TmFtZTsJCS8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQT1JUSU9OIE9GICov CisJT2lkCQlmcF9yYW5nZVR5cGU7CQkvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04g T0YgZXhwcmVzc2lvbiAqLworCWJvb2wJZnBfaGFzUGVyaW9kOwkJLyogdHJ1ZSBpZmYgdGhp cyBpcyBhIFBFUklPRCBub3QgYSByYW5nZSAqLworCWludAkJZnBfcmFuZ2VBdHRubzsJCS8q IHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uIChvciAwIGZvciBhIFBFUklPRCkgKi8K KwlpbnQJCWZwX3BlcmlvZFN0YXJ0QXR0bm87CS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9E IHN0YXJ0IGNvbHVtbiAob3IgMCBmb3IgYSByYW5nZSkgKi8KKwlpbnQJCWZwX3BlcmlvZEVu ZEF0dG5vOwkJLyogdGhlIGF0dG5vIG9mIHRoZSBQRVJJT0QgZW5kIGNvbHVtbiAob3IgMCBm b3IgYSByYW5nZSkgKi8KKwlEYXR1bQlmcF90YXJnZXRSYW5nZTsJCS8qIHRoZSByYW5nZSBm cm9tIEZPUiBQT1JUSU9OIE9GICovCisJVHlwZUNhY2hlRW50cnkgKmZwX3JhbmdldHlwY2Fj aGU7CS8qIHR5cGUgY2FjaGUgZW50cnkgb2YgdGhlIHJhbmdlICovCisJVHVwbGVUYWJsZVNs b3QgKmZwX0V4aXN0aW5nOwkJLyogc2xvdCB0byBzdG9yZSBleGlzdGluZyB0YXJnZXQgdHVw bGUgaW4gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZnBfTGVmdG92ZXIxOwkJLyogc2xvdCB0byBz dG9yZSBsZWZ0b3ZlciBiZWxvdyB0aGUgdGFyZ2V0IHJhbmdlICovCisJVHVwbGVUYWJsZVNs b3QgKmZwX0xlZnRvdmVyMjsJCS8qIHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgYWJvdmUgdGhl IHRhcmdldCByYW5nZSAqLworfSBGb3JQb3J0aW9uT2ZTdGF0ZTsKKwogLyoKICAqIFJlc3Vs dFJlbEluZm8KICAqCkBAIC01NDIsNiArNTY2LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0 UmVsSW5mbwogCUxpc3QJICAgKnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKIAlMaXN0CSAgICpy aV9ub3RNYXRjaGVkTWVyZ2VBY3Rpb247CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBldmFsdWF0 aW9uIHN0YXRlICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKnJpX2ZvclBvcnRpb25PZjsKKwog CS8qIHBhcnRpdGlvbiBjaGVjayBleHByZXNzaW9uIHN0YXRlIChOVUxMIGlmIG5vdCBzZXQg dXAgeWV0KSAqLwogCUV4cHJTdGF0ZSAgKnJpX1BhcnRpdGlvbkNoZWNrRXhwcjsKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDQ3OWI1ZmZhMzUuLjE3N2RmOTZjODYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCB0eXBlZGVmIHN0cnVj dCBRdWVyeQogCSAqLwogCWludAkJCXJlc3VsdFJlbGF0aW9uIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsKIAorCS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBE QVRFL0RFTEVURSAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwogCS8q IGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNB Z2dzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93 IGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwpAQCAtMTUzNyw2ICsxNTQwLDE5IEBAIHR5cGVkZWYg c3RydWN0IFJvd01hcmtDbGF1c2UKIAlib29sCQlwdXNoZWREb3duOwkJLyogcHVzaGVkIGRv d24gZnJvbSBoaWdoZXIgcXVlcnkgbGV2ZWw/ICovCiB9IFJvd01hcmtDbGF1c2U7CiAKKy8q CisgKiBGb3JQb3J0aW9uT2ZDbGF1c2UKKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBGT1IgUE9S VElPTiBPRiA8cGVyaW9kLW5hbWU+IEZST00gPHQxPiBUTyA8dDI+CisgKi8KK3R5cGVkZWYg c3RydWN0IEZvclBvcnRpb25PZkNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkg ICAqcmFuZ2VfbmFtZTsKKwlpbnQJCQlyYW5nZV9uYW1lX2xvY2F0aW9uOworCU5vZGUJICAg KnRhcmdldF9zdGFydDsKKwlOb2RlCSAgICp0YXJnZXRfZW5kOworfSBGb3JQb3J0aW9uT2ZD bGF1c2U7CisKIC8qCiAgKiBXaXRoQ2xhdXNlIC0KICAqCSAgIHJlcHJlc2VudGF0aW9uIG9m IFdJVEggY2xhdXNlCkBAIC0xOTE3LDEyICsxOTMzLDEzIEBAIHR5cGVkZWYgc3RydWN0IElu c2VydFN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgRGVsZXRlU3RtdAogewotCU5vZGVUYWcJ CXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBkZWxldGUg ZnJvbSAqLwotCUxpc3QJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1c2luZyBjbGF1 c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxp ZmljYXRpb25zICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHBy ZXNzaW9ucyB0byByZXR1cm4gKi8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lU SCBjbGF1c2UgKi8KKwlOb2RlVGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlv bjsJCS8qIHJlbGF0aW9uIHRvIGRlbGV0ZSBmcm9tICovCisJRm9yUG9ydGlvbk9mQ2xhdXNl ICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLworCUxpc3QJCQkg ICAqdXNpbmdDbGF1c2U7CS8qIG9wdGlvbmFsIHVzaW5nIGNsYXVzZSBmb3IgbW9yZSB0YWJs ZXMgKi8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwor CUxpc3QJCQkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byBy ZXR1cm4gKi8KKwlXaXRoQ2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNl ICovCiB9IERlbGV0ZVN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5 MzEsMTMgKzE5NDgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgRGVsZXRlU3RtdAogICovCiB0eXBl ZGVmIHN0cnVjdCBVcGRhdGVTdG10CiB7Ci0JTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAg ICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIHVwZGF0ZSAqLwotCUxpc3QJICAgKnRhcmdl dExpc3Q7CQkvKiB0aGUgdGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8KLQlOb2RlCSAg ICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KLQlMaXN0CSAgICpmcm9tQ2xh dXNlOwkJLyogb3B0aW9uYWwgZnJvbSBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTGlz dAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4g Ki8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KKwlOb2Rl VGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRv IHVwZGF0ZSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1Ig UE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnRhcmdldExpc3Q7CQkvKiB0aGUg dGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNl OwkvKiBxdWFsaWZpY2F0aW9ucyAqLworCUxpc3QJCQkgICAqZnJvbUNsYXVzZTsJCS8qIG9w dGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLworCUxpc3QJCQkgICAqcmV0 dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KKwlXaXRo Q2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0 bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK aW5kZXggNTcwMmZiYmE2MC4uZDJiZTdmMjZkMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK QEAgLTIzNTIsNiArMjM1Miw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlUGF0aAog CUxpc3QJICAgKnJldHVybmluZ0xpc3RzOyAvKiBwZXItdGFyZ2V0LXRhYmxlIFJFVFVSTklO RyB0bGlzdHMgKi8KIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9u LWxvY2tpbmcgb25seSkgKi8KIAlPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdDsgLyogT04g Q09ORkxJQ1QgY2xhdXNlLCBvciBOVUxMICovCisJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9y dGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8K IAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFsUGxhblF1YWwgcmUt ZXZhbCAqLwogCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdHM7CS8qIHBlci10YXJnZXQtdGFi bGUgbGlzdHMgb2YgYWN0aW9ucyBmb3IKIAkJCQkJCQkJCSAqIE1FUkdFICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCmluZGV4IDFiNzg3ZmUwMzEuLjJiY2E3MDg2ZTIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCkBAIC0yNDMsNiArMjQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5 VGFibGUKIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tp bmcgb25seSkgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFs UGxhblF1YWwgcmUtZXZhbCAqLwogCU9uQ29uZmxpY3RBY3Rpb24gb25Db25mbGljdEFjdGlv bjsJLyogT04gQ09ORkxJQ1QgYWN0aW9uICovCisJTm9kZQkgICAqZm9yUG9ydGlvbk9mOwkv KiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAg ICphcmJpdGVySW5kZXhlczsgLyogTGlzdCBvZiBPTiBDT05GTElDVCBhcmJpdGVyIGluZGV4 IE9JRHMgICovCiAJTGlzdAkgICAqb25Db25mbGljdFNldDsJLyogSU5TRVJUIE9OIENPTkZM SUNUIERPIFVQREFURSB0YXJnZXRsaXN0ICovCiAJTGlzdAkgICAqb25Db25mbGljdENvbHM7 IC8qIHRhcmdldCBjb2x1bW4gbnVtYmVycyBmb3Igb25Db25mbGljdFNldCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaAppbmRleCA2MGQ3MmE4NzZiLi5iM2M2ZjZjZWNmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaApAQCAtMjA0MSw0ICsyMDQxLDI5IEBAIHR5cGVkZWYgc3RydWN0IE9u Q29uZmxpY3RFeHByCiAJTGlzdAkgICAqZXhjbFJlbFRsaXN0OwkvKiB0bGlzdCBvZiB0aGUg RVhDTFVERUQgcHNldWRvIHJlbGF0aW9uICovCiB9IE9uQ29uZmxpY3RFeHByOwogCisvKi0t LS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZkV4cHIgLSByZXByZXNlbnRzIGEgRk9SIFBPUlRJ T04gT0YgLi4uIGV4cHJlc3Npb24KKyAqCisgKiBXZSBzZXQgdXAgYW4gZXhwcmVzc2lvbiB0 byBtYWtlIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTS9UTyBib3VuZHMsCisgKiBzbyB0aGF0IHdl IGNhbiB1c2UgcmFuZ2Ugb3BlcmF0b3JzIHdpdGggaXQuCisgKgorICogVGhlbiB3ZSBzZXQg dXAgYW4gb3ZlcmxhcHMgZXhwcmVzc2lvbiBiZXR3ZWVuIHRoYXQgYW5kIHRoZSByYW5nZSBj b2x1bW4sCisgKiBzbyB0aGF0IHdlIGNhbiBmaW5kIHRoZSByb3dzIHdlIG5lZWQgdG8gdXBk YXRlL2RlbGV0ZS4KKyAqCisgKiBJbiB0aGUgZXhlY3V0b3Igd2UnbGwgYWxzbyBidWlsZCBh biBpbnRlcnNlY3QgZXhwcmVzc2lvbiBiZXR3ZWVuIHRoZQorICogdGFyZ2V0ZWQgcmFuZ2Ug YW5kIHRoZSByYW5nZSBjb2x1bW4sIHNvIHRoYXQgd2UgY2FuIHVwZGF0ZSB0aGUgc3RhcnQv ZW5kCisgKiBib3VuZHMgb2YgdGhlIFVQREFURSdkIHJlY29yZC4KKyAqLS0tLS0tLS0tLQor ICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZFeHByCit7CisJTm9kZVRhZwkJdHlw ZTsKKwlWYXIJCSAgICpyYW5nZVZhcjsJCQkvKiBSYW5nZSBjb2x1bW4gKi8KKwljaGFyCSAg ICpyYW5nZV9uYW1lOwkJCS8qIFJhbmdlIG5hbWUgKi8KKwlOb2RlCSAgICp0YXJnZXRSYW5n ZTsJCS8qIEZPUiBQT1JUSU9OIE9GIGJvdW5kcyBhcyBhIHJhbmdlICovCisJT2lkCQkJcmFu Z2VUeXBlOwkJCS8qIHR5cGUgb2YgdGFyZ2V0UmFuZ2UgKi8KKwlOb2RlCSAgICpvdmVybGFw c0V4cHI7CQkvKiByYW5nZSAmJiB0YXJnZXRSYW5nZSAqLworCUxpc3QJICAgKnJhbmdlU2V0 OwkJCS8qIExpc3Qgb2YgVGFyZ2V0RW50cnlzIHRvIHNldCB0aGUgdGltZSBjb2x1bW4ocykg Ki8KK30gRm9yUG9ydGlvbk9mRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IDZlNTU3YmViYzQuLmM5MzJk MTIwNGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0yODMsNyArMjgzLDgg QEAgZXh0ZXJuIE1vZGlmeVRhYmxlUGF0aCAqY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywK IAkJCQkJCQkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5p bmdMaXN0cywKIAkJCQkJCQkJCQkJCUxpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAq b25jb25mbGljdCwKLQkJCQkJCQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBl cHFQYXJhbSk7CisJCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJ CQkJCQkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pOwog ZXh0ZXJuIExpbWl0UGF0aCAqY3JlYXRlX2xpbWl0X3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCVBhdGggKnN1YnBhdGgsCiAJCQkJCQkJCQlO b2RlICpsaW1pdE9mZnNldCwgTm9kZSAqbGltaXRDb3VudCwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9hbmFseXplLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5o CmluZGV4IGM5NjQ4M2FlNzguLmI2ZDUwNjVlMTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApA QCAtNDMsNyArNDMsOCBAQCBleHRlcm4gTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAJCQkJCQkJCUxpc3QgKnN0bXRjb2xz LCBMaXN0ICppY29sdW1ucywgTGlzdCAqYXR0cm5vcywKIAkJCQkJCQkJYm9vbCBzdHJpcF9p bmRpcmVjdGlvbik7CiBleHRlcm4gTGlzdCAqdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJCQkgICBMaXN0ICpvcmlnVGxpc3QpOworCQkJ CQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0LAorCQkJCQkJCQkJICAgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mKTsKIGV4dGVybiBRdWVyeSAqdHJhbnNmb3JtVG9wTGV2ZWxTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmF3U3RtdCAqcGFyc2VUcmVlKTsKIGV4dGVybiBRdWVy eSAqdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBjY2Y1YmY4YWE2Li5jODljZWVhOWY2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCkBAIC0zMzAsNiArMzMwLDcgQEAgUEdfS0VZV09SRCgicGVyaW9k IiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoInBvcnRpb24iLCBQT1JUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2VkaW5nIiwg UFJFQ0VESU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwcmVjaXNpb24iLCBQUkVDSVNJT04sIENPTF9OQU1FX0tFWVdPUkQsIEFTX0xBQkVMKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggZjU4OTExMmQ1ZS4uMGQ2MDFmMzRhNSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYg ZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UsCS8qIFVQREFU RSBhc3NpZ25tZW50IHNvdXJjZSBpdGVtICovCiAJRVhQUl9LSU5EX1VQREFURV9UQVJHRVQs CS8qIFVQREFURSBhc3NpZ25tZW50IHRhcmdldCBpdGVtICovCiAJRVhQUl9LSU5EX01FUkdF X1dIRU4sCQkvKiBNRVJHRSBXSEVOIFtOT1RdIE1BVENIRUQgY29uZGl0aW9uICovCisJRVhQ Ul9LSU5EX1VQREFURV9QT1JUSU9OLAkvKiBVUERBVEUgRk9SIFBPUlRJT04gT0YgaXRlbSAq LwogCUVYUFJfS0lORF9HUk9VUF9CWSwJCQkvKiBHUk9VUCBCWSAqLwogCUVYUFJfS0lORF9P UkRFUl9CWSwJCQkvKiBPUkRFUiBCWSAqLwogCUVYUFJfS0lORF9ESVNUSU5DVF9PTiwJCS8q IERJU1RJTkNUIE9OICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IGY1ZmRiZmUxMTYu LmExMTc1MjdkOGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xNDMsNiArMTQzLDgg QEAgZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0 ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fdG9zcWwoT2lkIHR5cGlk LCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gYm9vbCBnZXRfdHlwaXNk ZWZpbmVkKE9pZCB0eXBpZCk7CitleHRlcm4gY2hhciAqZ2V0X3R5cG5hbWUoT2lkIHR5cGlk KTsKK2V4dGVybiBib29sIGdldF90eXBuYW1lX2FuZF9uYW1lc3BhY2UoT2lkIHR5cGlkLCBj aGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cG5hbWVzcGFjZSk7CiBleHRlcm4gaW50MTYgZ2V0 X3R5cGxlbihPaWQgdHlwaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGJ5dmFsKE9pZCB0eXBp ZCk7CiBleHRlcm4gdm9pZCBnZXRfdHlwbGVuYnl2YWwoT2lkIHR5cGlkLCBpbnQxNiAqdHlw bGVuLCBib29sICp0eXBieXZhbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9w ZXJpb2QuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBhOGFmM2VkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaApAQCAtMCwwICsxLDE5IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBwZXJpb2QuaAorICoJICBzdXBwb3J0IGZvciBQb3N0Z3Jl cyBwZXJpb2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy MiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y bmlhCisgKgorICogc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQRVJJT0RfSAorI2RlZmluZSBQRVJJT0RfSAor CitleHRlcm4gRGF0dW0gcGVyaW9kX3RvX3JhbmdlKFR1cGxlVGFibGVTbG90ICpzbG90LCBp bnQgc3RhcnRhdHRubywgaW50IGVuZGF0dG5vLCBPaWQgcmFuZ2V0eXBlKTsKKworI2VuZGlm CQkJCQkJCS8qIFBFUklPRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9y YW5nZXR5cGVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggNmI0 MjBhODYxOC4uNDhlZTJkZWJlZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFu Z2V0eXBlcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaApAQCAtMTY0 LDUgKzE2NCw4IEBAIGV4dGVybiBSYW5nZVR5cGUgKm1ha2VfZW1wdHlfcmFuZ2UoVHlwZUNh Y2hlRW50cnkgKnR5cGNhY2hlKTsKIGV4dGVybiBib29sIHJhbmdlX3NwbGl0X2ludGVybmFs KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwKIAkJCQkJ CQkJIGNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCiAJCQkJCQkJ CSBSYW5nZVR5cGUgKipvdXRwdXQyKTsKK2V4dGVybiB2b2lkIHJhbmdlX2xlZnRvdmVyX2lu dGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwK KwkJCQkJCQkJCWNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCisJ CQkJCQkJCQlSYW5nZVR5cGUgKipvdXRwdXQyKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJBTkdF VFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jf cG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9u X29mLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMDkxOWI1 NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jf cG9ydGlvbl9vZi5vdXQKQEAgLTAsMCArMSw0MzEgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUv REVMRVRFIEZPUiBQT1JUSU9OIE9GCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JF QVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZh bGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRP IGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDIpJywgJ1syMDE4LTAxLTAyLDIw MjAtMDEtMDEpJywgJ29uZScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJwor U0VUIG5hbWUgPSAnZm9vJzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9VTkRFRDsK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgZm9vCisgWzEsMikgfCBbIlR1 ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg b25lCisgWzEsMikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIlR1ZSBKYW4gMTUg MDA6MDA6MDAgMjAxOSIpIHwgb25lCisoMyByb3dzKQorCistLSBXb3JrcyBvbiBtb3JlIHRo YW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUg VEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWQx X2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5V TEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwy KScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0wMSwyMDI1LTAxLTAx KScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9 ICdmb28nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsi VGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikg fCBmb28KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgb25lCisoMiByb3dzKQorCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEt MTUnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0 IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZv bworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6 MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisoNCByb3dz KQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgi LCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVl IEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBb IlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIp IHwgb25lCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4g MjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyg0 IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBVTkJPVU5ERUQ7CitTRUxFQ1Qg KiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAg MjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAw OjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwg WyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgi KSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9u IEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIs IlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJh cgorKDQgcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEws CisgIHZhbGlkX2F0IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwK KwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90 ZXN0CitWQUxVRVMKKygnWzEsMiknLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25l JyksCisoJ1sxLDIpJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdb MSwyKScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMyknLCAn WzIwMTgtMDEtMDEsMjAxOC0wMS0wNSknLCAndHdvJyksCisoJ1szLDQpJywgJ1syMDE4LTAx LTAxLCknLCAndGhyZWUnKSwKKygnWzQsNSknLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyks CisoJ1s1LDYpJywgJygsKScsICdmaXZlJykKKzsKKy0tCistLSBVUERBVEUgdGVzdHMKKy0t CistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0w Ni0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw2 KSc7CitFUlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9u ICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9S VElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAx LDE5OTktMDEtMDEpJworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBjYW4ndCBkaXJl Y3RseSBhc3NpZ24gdG8gInZhbGlkX2F0IiBpbiBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZQor TElORSAzOiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCisgICAg ICAgICAgICBeCistLSBUaGUgd3JvbmcgdHlwZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMSBUTyA0CitTRVQgbmFt ZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICBmdW5jdGlvbiBwZ19j YXRhbG9nLnRzcmFuZ2UoaW50ZWdlciwgaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUg MjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKKyAgICAgICAgICAgICAg ICAgICAgICAgXgorSElOVDogIE5vIGZ1bmN0aW9uIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWUg YW5kIGFyZ3VtZW50IHR5cGVzLiBZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlw ZSBjYXN0cy4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJwor V0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJl IGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBlciBib3VuZAorLS0gU2V0dGluZyB3 aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAx OC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CitFUlJP UjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgor TElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEt MDEnKSBUTyAnMjAxOC0uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0 KSBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7 CitFUlJPUjogIGNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1IgUE9SVElPTiBP RiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93 ZXIodmFsaWRfYXQpIFRPIFVOQk9VTkRFRAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRv ZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUg PSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRl L29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMs NCknOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Blbi9m aW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9 ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9m aW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVE IFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQs NSknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRl L29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9 ICdmb3VyXjInCitXSEVSRSBpZCA9ICdbNCw1KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9m aW5pdGUgcG9ydGlvbiB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcy MDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNSknOwor LS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRF RAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdbMiwzKSc7CistLSBVcGRhdGlu ZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0aCBz ZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEt MDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw2KSc7CistLSBVcGRh dGluZyBtdWx0aXBsZSBlbmNsb3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFt ZSA9ICdvbmVeMicKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIFVwZGF0aW5nIHdpdGggYSBz aGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5h bWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwyKSc7CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScg QVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAxJworU0VU IG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CitFUlJPUjogIHN5bnRheCBl cnJvciBhdCBvciBuZWFyICInMjAxOS0wMS0wMSciCitMSU5FIDQ6ICAgVE8gJzIwMTktMDEt MDEnCisgICAgICAgICAgICAgXgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25l XjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBh cnQgb2YgdGhlIFBLOgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw3 KScKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVz ZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CitT RUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsx LDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAw IDIwMTgiKSB8IG9uZV4yCisgWzEsMikgfCBbIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDow MCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFszLDQpIHwg WyJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAi KSB8IHRocmVlXjEKKyBbMyw0KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwgKCwiU3VuIEph biAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJe MQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAw OjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwg KCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBmaXZlXjMKKyBb NSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBmaXZlCisgWzUsNikgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2 ZSoKKyBbNiw3KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAw ODowMTowMCAyMDE4IikgfCBvbmVeMgorIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDA4OjAxOjAw IDIwMTgiLCJUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTgiKSB8IG9uZV4zCisgWzYsNykgfCBb IlRodSBNYXIgMDEgMTA6MDA6MDAgMjAxOCIsIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIp IHwgb25lXjQKKyBbNiw3KSB8IFsiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IiwiV2VkIEFw ciAwNCAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorKDIwIHJvd3MpCisKKy0tCistLSBERUxF VEUgdGVzdHMKKy0tCistLSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzUsNiknOwor RVJST1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9y X3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04g T0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWls cworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitXSEVSRSBpZCA9ICdb Myw0KSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUgbGVzcyB0aGFuIG9y IGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFt cHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0w NC0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQv Y2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYtMDEnCitX SEVSRSBpZCA9ICdbNSw2KSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMyw0KSc7 CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxM IFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMiknOworLS0gRGVsZXRpbmcgd2l0 aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorV0hFUkUgaWQg PSAnWzYsNyknOworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDow MCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0LDUpIHwg KCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUg RmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgor IFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCBm aXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93cykKKworLS0gVVBEQVRFIC4uLiBS RVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNl cnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NF VCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMyw0KScKK1JFVFVSTklORyAqOwor ICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMyw0KSB8 IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4 IikgfCB0aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMg b24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VSVGVkIHJvd3MKK0NSRUFU RSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgor QVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9mICUnLCBUR19XSEVOLCBU R19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7CisgIElGIFRHX09QID0gJ0RFTEVU RScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBF TkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIHRy Z19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJFRk9SRSBJTlNFUlQgT04gZm9y X3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBm b3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRp b25fb2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVf dXBkYXRlCisgIEJFRk9SRSBVUERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1Ig RUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7 CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfdXBkYXRlCisgIEFG VEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBF WEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklH R0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVsZXRlCisgIEJFRk9SRSBERUxFVEUg T04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5D VElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9y X3BvcnRpb25fb2ZfYWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVURSBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0 aW9uX29mX3RyaWdnZXIoKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NF VCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDYpJzsKK05PVElDRTogIEJFRk9S RSBVUERBVEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAw OjAwIDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEp1biAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+CitO T1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNF UlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6 MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9U SUNFOiAgQUZURVIgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEph biAwMSAwMDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIw MjQtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRF IDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJ Q0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQg WyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMi KSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNF OiAgQUZURVIgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgi KSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMK KyBbMyw0KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDow MDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAg MjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgs IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAw MDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBb NSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIs Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2 ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgZml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAorIFs1LDYpIHwg WyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMi KSB8IGZpdmUKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTYgcm93cykKKworLS0gVGVzdCB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAor ICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBO VUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9v Zl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwx XScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIw MTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAz LDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1 LTAxKScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOwor OworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29uZV4x JworV0hFUkUgaWQgPSAnWzEsMV0nOworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4 LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFs aWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMi0yMDE4LDAxLTEwLTIwMTgpIHwgb25lCisg WzEsMikgfCBbMDEtMTAtMjAxOCwwMi0wMy0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDIt MDMtMjAxOCwwMi0xMC0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMTAtMjAxOCwwMy0w My0yMDE4KSB8IG9uZQorIFsxLDIpIHwgWzAzLTAzLTIwMTgsMDQtMDQtMjAxOCkgfCBvbmUK KyBbMiwzKSB8IFswMS0wMS0yMDE4LDAxLTE1LTIwMTgpIHwgdHdvCisgWzIsMykgfCBbMDIt MTUtMjAxOCwwNS0wMS0yMDE4KSB8IHR3bworIFszLDQpIHwgWzAxLTAxLTIwMTgsKSAgICAg ICAgICAgfCB0aHJlZQorKDggcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90 ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IGMxZTYxMGU2MmYuLmNmMmM3ZGY5MDAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAtOTg1LDYgKzk4 NSwyNCBAQCBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBvZiByZWxhdGlvbiAi ZXJydHN0X3BhcnRfMiIgdmlvbGF0ZXMgbm90LW51bGwgYwogREVUQUlMOiAgRmFpbGluZyBy b3cgY29udGFpbnMgKGEsIGIsIGMpID0gKGFhYWEsIG51bGwsIGNjYykuCiBTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFCTEUgZXJydHN0 OworLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9E IHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAor ICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRP IHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3By aXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNl cjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2 X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7 CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScg VE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitFUlJPUjogIHBlcm1pc3Npb24g ZGVuaWVkIGZvciB0YWJsZSB0MQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0RST1AgVEFCTEUgdDE7 CiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52b2x2ZWQgd2l0aCBE RUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwog QUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdlcjsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCAxOTUw ZTZmMjgxLi5mNGI4OGJjYzM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zMDIzLDYgKzMwMjMsMzggQEAgc2VsZWN0ICog ZnJvbSB1dl9pb2N1X3RhYjsKIAogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsKIGRyb3AgdGFi bGUgdXZfaW9jdV90YWI7CistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04gT0Ygd29ya3Mg Y29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJhbmdlLCB2YWxp ZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZfZnBvX3RhYiBw cmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsKK2luc2VydCBp bnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEsIDIwMzAtMDEt MDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNlbGVjdCBiLCBi KzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJvbSB1dl9mcG9f dGFiOworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikgdmFsdWVz ICgnWzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxlY3QgKiBm cm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwgMi4wCisgMSB8IDIgfCBb IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzEsMikgfCAyLjAKKygyIHJvd3MpCisKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3IgcG9y dGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScgc2V0 IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7 CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t CisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAwMDow MDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbMSwyKSB8IDIuMAor IDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUgSmFuIDAxIDAwOjAw OjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisoMyByb3dzKQorCitkZWxldGUgZnJvbSB1dl9m cG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAxLTAxJyB0byAn MjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9f dmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0KKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8IDIuMAorIDAgfCAxIHwgWyJTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwg Mi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIlN1biBKYW4gMDEg MDA6MDA6MDAgMjAxNyIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKIC0tIFRlc3Qgd2hv bGUtcm93IHJlZmVyZW5jZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1dl9pb2N1X3Rh YiAoYSBpbnQgdW5pcXVlLCBiIHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9jdV92aWV3IGFz CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zlcmxh cHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dAppbmRleCAxNzQ5OTQ1ZTcxLi40YjhhYmIwODFjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTI2OSw2ICsyNjksMzYg QEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3 XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAg U0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBu YW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCAgaWQyICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCww NS0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbworIFsxLDIpIHwgWzA1LTAxLTIwMDAsMDctMDEt MjAwMCkgfCBbNyw4KSAgfCBmb28xCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEw KSB8IFs3LDgpICB8IGZvbworIFsyLDMpIHwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBb OSwxMCkgfCBiYXIKKyBbMiwzKSB8IFswNC0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzksMTAp IHwgYmFyMgorIFsyLDMpIHwgWzA1LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBbOSwxMCkgfCBi YXIxMgorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIx CisgWzIsMykgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs5LDEwKSB8IGJhcgorKDgg cm93cykKKworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFs MyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsK K0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25z dHJhaW50ICJ0ZW1wb3JhbDNfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsx LDIpLCBbMDEtMDEtMjAwNSwwMS0wMS0yMDA2KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcg a2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkpLgor LS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2 YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgn MjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXIzJyk7CitFUlJPUjog IGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAi dGVtcG9yYWwzX3VuaXEiCitERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCks IFswMS0wMS0yMDA1LDAxLTAxLTIwMTApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkg KGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4KIERS T1AgVEFCTEUgdGVtcG9yYWwzOwogLS0KIC0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVw ZW5kZW5jaWVzCkBAIC0zMjEsNiArMzUxLDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwg dGhyZWUKICgxIHJvdykKIAorVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScK KyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0 ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVS RSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJwor ICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEt MjAwMCwwMS0xNS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEtMjAw MCkgfCBvbmUyCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIKKyBb MSwyKSB8IFswMi0xNS0yMDAwLDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMjUt MjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEtMjAw MykgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJlZQor IFszLDQpIHwgWzAyLTE1LTIwMDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwgWzAx LTAxLTIwMDMsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAsMDIt MjUtMjAwMCkgfCBvbmUKKygxMCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkOwogLS0gdGVtcG9yYWwgVU5JUVVFOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkICgKQEAgLTM1Niw2ICs0MTYsMzYgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkg fCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1 JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUg IHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdI RVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEn CisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0w MS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEtMTUtMjAwMCwwMi0wMS0y MDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1LTIwMDApIHwgb25lMgor IFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0y NS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAwMiwwMS0wMS0y MDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IHRocmVl CisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRocmVlCisgWzMsNCkgfCBb MDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkgfCBbMDItMjAtMjAwMCww Mi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWQ7CiAtLQogLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKQEAgLTU1Niw2ICs2NDYs MTMgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3Ju ZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6 CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCkBAIC01OTMsMTMgKzY5MCwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0 aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBj aGFuZ2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFs X3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIw MTgtMDEtMDMnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBj aGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwor U0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUg b3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJX ZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkg aXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4K IC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyB1cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK IC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1 LDVdJywgJ1s3LDddJyk7CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJ T04KIC0tCkBAIC02MjEsNiArNzMwLDEyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScs CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1 cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIi4KKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBU TyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAt LSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsg ZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOwpAQCAtNjQ1LDkgKzc2MCwxOSBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLAog REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVt cG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiks IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJu ZyIuCistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0 aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcK K1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0 aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRz OgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKIC0tCiAtLSB0ZXN0IE9OIFVQ REFURS9ERUxFVEUgb3B0aW9ucwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDY2Yjc1ZmExMmYuLjk5Y2Y2ZjE4ZDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQpAQCAtNDgsNyArNDgsNyBAQCB0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRl X2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVk aQogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMg LS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3Fs IGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVk X3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJp YnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZQordGVz dDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0ZV9jYXN0IGNv bnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1bSBk cm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2Ft IGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZSBmb3JfcG9ydGlvbl9vZgogCiAj IC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0sIGFmZmVjdGluZyB0 aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3Bv cnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJm MmFiMDkzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwKQEAgLTAsMCArMSwzNDAgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUv REVMRVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitD UkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAg dmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElO VE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMiknLCAnWzIwMTgtMDEtMDIs MjAyMC0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0w MScKK1NFVCBuYW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9V TkRFRDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCistLSBXb3Jr cyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1l IHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZB TFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0w MSwyMDI1LTAxLTAxKScsICdvbmUnKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5E RUQKK1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZDJfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdiYXIn OworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAx OC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICog RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25f b2ZfdGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50 NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1l IHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDIpJywgJ1syMDE4LTAxLTAyLDIw MTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwyKScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAz KScsICdvbmUnKSwKKygnWzEsMiknLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25l JyksCisoJ1syLDMpJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdb Myw0KScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDUpJywgJygsMjAxOC0w NC0wMSknLCAnZm91cicpLAorKCdbNSw2KScsICcoLCknLCAnZml2ZScpCis7CisKKy0tCist LSBVUERBVEUgdGVzdHMKKy0tCisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1u IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2Zv bycKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gU2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0w MS0wMSwxOTk5LTAxLTAxKScKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gVGhlIHdyb25n IHR5cGUgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0g J1szLDQpJzsKKworLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIHN1YnF1ZXJ5IGZh aWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYtMDEnCitTRVQgbmFt ZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5nIHdpdGggYSBj b2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBVTkJPVU5ERUQKK1NFVCBuYW1l ID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1l c3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0 LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0g VXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3RocmVlXjEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9y dGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4 LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDQpJzsKKwor LS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRl IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91 cl4xJworV0hFUkUgaWQgPSAnWzQsNSknOworCistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0 ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBU TyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDUpJzsK KworLS0gVXBkYXRpbmcgYSBmaW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBm aXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJe MycKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3Bh bgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVS RSBpZCA9ICdbMiwzKSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0aW9uIHdp dGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5LTAx LTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBV cGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBzcGFu cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4z JworV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3Nl ZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlk ID0gJ1sxLDIpJzsKKworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGlj dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9VUiBU TyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dIRVJF IGlkID0gJ1sxLDIpJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRF UlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40Jwor V0hFUkUgaWQgPSAnWzEsMiknOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9O RSBJTlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdv bmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5n ZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAn WzYsNyknCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJF IGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAn Kic7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCisKKy0tIERlbGV0aW5nIHdp dGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBO VUxMCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1w cyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyBl cXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAx JworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Ns b3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hF UkUgaWQgPSAnWzUsNiknOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMyw0KSc7 CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIERlbGV0aW5n IHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJF IGlkID0gJ1s2LDcpJzsKKworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBVUERBVEUgLi4uIFJFVFVS TklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVk IHNpZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5h bWUgPSAndGhyZWVeMycKK1dIRVJFIGlkID0gJ1szLDQpJworUkVUVVJOSU5HICo7CisKKy0t IHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBh bmQgdGhlIElOU0VSVGVkIHJvd3MKKworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5P VElDRSAnJSAlICUgb2YgJScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfYXQsIE9MRC52 YWxpZF9hdDsKKyAgSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsK KyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5HVUFH RSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3Jl X2luc2VydAorICBCRUZPUkUgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigp OworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2luc2VydAorICBB RlRFUiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJ R0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX3VwZGF0ZQorICBCRUZPUkUgVVBEQVRF IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVO Q1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2FmdGVyX3VwZGF0ZQorICBBRlRFUiBVUERBVEUgT04gZm9yX3BvcnRp b25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9y dGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2Zf YmVmb3JlX2RlbGV0ZQorICBCRUZPUkUgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QK KyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJp Z2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2RlbGV0 ZQorICBBRlRFUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CisKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEt MDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKKy0tIFRlc3Qgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlCisKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5 cGU9ZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MiAoCisgIGlk IGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgbXlkYXRlcmFuZ2UgTk9UIE5VTEws CisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3Rl c3QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0MgorVkFMVUVTCisoJ1sxLDFdJywg J1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0w Mi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAx OC0wNC0wNCknLCAnb25lJyksCisoJ1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDUtMDEp JywgJ3R3bycpLAorKCdbMywzXScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyk7Cis7CisK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wMS0xMCcgVE8gJzIwMTgtMDItMTAnCitTRVQgbmFtZSA9ICdvbmVeMScK K1dIRVJFIGlkID0gJ1sxLDFdJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4 LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSBmb3Jf cG9ydGlvbl9vZl90ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHJpdmlsZWdlcy5zcWwKaW5kZXggYmYwMDM1ZDk2ZC4uMzY2YmU5OWEyNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAgLTcxMyw2ICs3MTMsMjQgQEAg VVBEQVRFIGVycnRzdCBTRVQgYSA9ICdhYWFhJywgYiA9IE5VTEwgV0hFUkUgYSA9ICdhYWEn OwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBEUk9Q IFRBQkxFIGVycnRzdDsKIAorLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0 aGUgcmFuZ2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAg YzEgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQ UklNQVJZIEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQg U0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0 MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyBy ZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEg VE8gcmVncmVzc19wcml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0w MScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKKwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwg cHJpdmlsZWdlcyB3aGVuIGludm9sdmVkIHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQg Q09MVU1OIHRocmVlIGludGVnZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxl X3ZpZXdzLnNxbAppbmRleCBlYWVlMGI3ZTFkLi5mODE0NzAxYTQzIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKQEAgLTE1NDEsNiArMTU0MSwyMCBA QCBzZWxlY3QgKiBmcm9tIHV2X2lvY3VfdGFiOwogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsK IGRyb3AgdGFibGUgdXZfaW9jdV90YWI7CiAKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElP TiBPRiB3b3JrcyBjb3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0 cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191 dl9mcG9fdGFiIHByaW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykp OworaW5zZXJ0IGludG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0w MSwgMjAzMC0wMS0wMSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAg c2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBm cm9tIHV2X2Zwb190YWI7CisKK2luc2VydCBpbnRvIHV2X2Zwb192aWV3IChpZCwgdmFsaWRf YXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDEwLTAxLTAxLCAyMDIwLTAxLTAxKScsIDEp Oworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3Ig cG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScg c2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3Zp ZXc7CitkZWxldGUgZnJvbSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBm cm9tICcyMDE3LTAxLTAxJyB0byAnMjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOwor c2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJl bmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRhYmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlx dWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKaW5kZXggMTNjZTczMTNjNS4uOTYw YTYzMjM4MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKQEAgLTIwMyw2ICsyMDMsMjAgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFs aWRfYXQsIGlkMiwgbmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBE QVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAx JyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8g JzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAn WzIsMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQs IHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKKy0tIGNv bmZsaWN0aW5nIGlkMiBvbmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDUt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyMycpOwogRFJPUCBUQUJMRSB0 ZW1wb3JhbDM7CiAKIC0tCkBAIC0yNDEsNiArMjU1LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9 ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRP ICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25l JzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdb MiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1 JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCiAtLSB0ZW1wb3JhbCBVTklRVUU6CkBAIC0y NTksNiArMjg5LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVF UwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxF Q1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFs X3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEt MTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9 ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQg aWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxf cGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0w MScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9 ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAg V0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOwogCiAtLQpAQCAtNDU1LDYgKzUwMSwxMSBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBj aGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGp1c3QgYSBw YXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10n CitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCkBAIC00OTAsMTMgKzU0MSwyMyBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjaGFuZ2lu ZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNl ZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdb Nyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZh aWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVS RSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNTE2LDYgKzU3NywxMCBAQCBJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKIC0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZl cmVuY2VkOgogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0t IGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0w MS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rp bmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CkBAIC01NDAsOSArNjA1LDE3IEBA IElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3Jh bmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJv dGggYXJlIHJlZmVyZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBk ZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZwor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEt MTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5n IEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7Ci1ERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKIAogLS0KIC0tIHRlc3QgT04gVVBEQVRFL0RFTEVU RSBvcHRpb25zCi0tIAoyLjI1LjEKCg== --------------WEIT9zjCxFDg0fV7Xy9sQj0U Content-Type: text/x-patch; charset=UTF-8; name="v15-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v15-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3ZmExOWNmZjE5NDYxOTYxZWU0MzZmMWFiOGNmYTE1ZTk4NjE0YmE3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjE1IDQvNV0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDI4ICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKysrKysr KystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg MjAgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwg NDEzICsrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsICAgICB8IDE3MyArKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTE1NSBpbnNlcnRp b25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IGY1YTczNmZhOTYuLjI2NGFlMjE1OTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCkBAIC0xMjMwNywxMSArMTIzMDcsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRy aWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25z dHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9O X0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJYnJl YWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklf RktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0Ogog CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKQEAg LTEyMzk4LDExICsxMjQwNiwxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMo UmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3Ry aWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FE RToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVhazsKIAkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Nl dG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRE RUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1cHBv cnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZL ZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCA0NDZlODk4ZWI2Li5lZGY3OTlmYjFkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtODMsNiArODMsMTIgQEAK ICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBEQVRFCQk3CiAjZGVmaW5lIFJJX1BMQU5f U0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmluZSBSSV9QTEFOX1NFVERFRkFVTFRfT05V UERBVEUJCTkKKyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURQkJMTAKKyNkZWZp bmUgVFJJX1BMQU5fQ0FTQ0FERV9PTlVQREFURQkJMTEKKyNkZWZpbmUgVFJJX1BMQU5fU0VU TlVMTF9PTlVQREFURQkJMTIKKyNkZWZpbmUgVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQkJ MTMKKyNkZWZpbmUgVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2RlZmluZSBU UklfUExBTl9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FVT1RFRF9O QU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9SRUxfTkFN RV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xOTAsNiArMTk2LDcgQEAgc3Rh dGljIGJvb2wgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBm a19yZWwsCiAJCQkJCQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKTsKIHN0 YXRpYyBEYXR1bSByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNf bm9fYWN0aW9uKTsKIHN0YXRpYyBEYXR1bSByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRh LCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKK3N0YXRpYyBEYXR1bSB0cmlfc2V0 KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7 CiBzdGF0aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBjaGFyICpu YW1lKTsKIHN0YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwgUmVs YXRpb24gcmVsKTsKIHN0YXRpYyB2b2lkIHJpX0dlbmVyYXRlUXVhbChTdHJpbmdJbmZvIGJ1 ZiwKQEAgLTEzOTAsNiArMTM5NywxMjcgQEAgVFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZV TkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2lu Zm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5X2Nhc2NhZGVfZGVs IC0KKyAqCisgKiBDYXNjYWRlZCBkZWxldGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCBk ZWxldGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklfRktl eV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRhICp0cmln ZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtf cmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJ U1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0 aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5k IGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9jYXNjYWRl X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0 cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRn X3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlw dG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4KKwkgKgor CSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRo YXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIERFTEVURSB3aWxsIGdldCBvbiBpdC4KKwkg Ki8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRzbG90ID0g dHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBt b3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5h bCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSBy ZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8s IG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJ CWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHBy ZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICovCisJcmlfQnVp bGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX09OREVMRVRFKTsK KworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwp CisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hhcgkJZmtyZWxuYW1lW01B WF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05B TUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlz ZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOworCQljb25zdCBj aGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmlu ZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxma3RhYmxlPgorCQkgKiAg Rk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBlcigke24r MX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICogVGhlIHR5cGUg aWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJCSAqIGNvcnJl c3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8KKwkJaW5p dFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAi OworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25l TmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJE RUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVkKSBUTyB1 cHBlcigkJWQpIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5m by0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisJCXF1ZXJ5c2VwID0gIldIRVJF IjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJ CU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRu YW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CisJCQlyaV9HZW5lcmF0 ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUs CisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5 cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2Rl dGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZx dWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRz W2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNldCBhIHBhcmFtIGZvciBGT1IgUE9SVElP TiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlw ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pOworCisJ CS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hl Y2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJ CQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBw bGFuIG5vdy4gQnVpbGQgdXAgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBrZXkgdmFsdWVzIGlu IHRoZQorCSAqIGRlbGV0ZWQgUEsgdHVwbGUgYW5kIGRlbGV0ZSB0aGUgcmVmZXJlbmNpbmcg cm93cworCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKKwkJ CQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJpaW5mby0+ bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkgICAvKiBtdXN0IGRldGVjdCBuZXcg cm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKworCWlmIChTUElfZmluaXNoKCkgIT0g U1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVkIik7CisK Kwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJuIFBv aW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCiAvKgogICogVFJJX0ZLZXlfbm9hY3Rpb25f dXBkIC0KICAqCkBAIC0xNDI3LDYgKzE1NTUsNDE1IEBAIFRSSV9GS2V5X3Jlc3RyaWN0X3Vw ZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8qCisgKiBUUklfRktleV9jYXNj YWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZvcmVpZ24ga2V5IHJlZmVyZW5j ZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitEYXR1bQor VFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCWNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOworCVJlbGF0 aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlUdXBsZVRhYmxlU2xv dCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIgIHFwbGFuOwor CURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQg dHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVj a1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV91cGQiLCBSSV9UUklHVFlQRV9V UERBVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0YS0+ dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7CisK KwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2YgdGhlIEZLIGFuZCBQ SyB0YWJsZXMgYW5kIHRoZSBuZXcgYW5kCisJICogb2xkIHR1cGxlLgorCSAqCisJICogZmtf cmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhhdCdzIHdo YXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAqLworCWZr X3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7 CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW5ld3Nsb3QgPSB0cmlnZGF0 YS0+dGdfbmV3c2xvdDsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJ LyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24s CisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3Nh cnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJp Z2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25u ZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBm YWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUg Y2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBU UklfUExBTl9DQVNDQURFX09OVVBEQVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFBy ZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVy eWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hhcgkJZmtyZWxuYW1lW01B WF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05B TUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlz ZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJIHF1ZXJ5b2lkc1syICogUklf TUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3QgY2hhciAqZmtfb25seTsKKworCQkvKiAtLS0t LS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICogIFVQREFURSBb T05MWV0gPGZrdGFibGU+CisJCSAqCQkgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxv d2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4rMX0pCisJCSAqCQkgIFNFVCBma2F0dDEgPSAk MSwgWywgLi4uXQorCQkgKgkJICBXSEVSRSAkbiA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICog VGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJ CSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4gIE5vdGUgdGhhdCB3ZSBhcmUgYXNz dW1pbmcKKwkJICogdGhlcmUgaXMgYW4gYXNzaWdubWVudCBjYXN0IGZyb20gdGhlIFBLIHRv IHRoZSBGSyB0eXBlOworCQkgKiBlbHNlIHRoZSBwYXJzZXIgd2lsbCBmYWlsLgorCQkgKiAt LS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0 U3RyaW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVs a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsK KwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5h bWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5m by0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBE QVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQl ZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIDIgKiByaWlu Zm8tPm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVyeXNlcCA9 ICIiOworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDAsIGogPSByaWlu Zm8tPm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBqKyspCisJCXsKKwkJCU9pZCBw a190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJ CU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAor CQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJ LyoKKwkJCSAqIERvbid0IHNldCB0aGUgdGVtcG9yYWwgY29sdW1uKHMpLgorCQkJICogRk9S IFBPUlRJT04gT0Ygd2lsbCB0YWtlIGNhcmUgb2YgdGhhdC4KKwkJCSAqLworCQkJaWYgKGkg PCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwK KwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBxdWVyeXNlcCwgYXR0bmFtZSwg aSArIDEpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGogKyAxKTsKKwkJCXJp X0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBr X3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUs IGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJCXF1YWxz ZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJCQlxdWVyeW9pZHNb al0gPSBwa190eXBlOworCQl9CisJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJnF1ZXJ5YnVm LCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKKworCQkvKiBTZXQgYSBwYXJhbSBmb3Ig Rk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNbMiAqIHJpaW5mby0+bmtl eXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxh biA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCAyICogcmlpbmZvLT5ua2V5cyArIDEs IHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkv KgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUgZXhpc3Rp bmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwg cXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBuZXdzbG90LAor CQkJCQlyaWluZm8tPm5rZXlzICogMiwgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUsCQkvKiBt dXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfVVBEQVRFKTsKKworCWlmIChT UElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5p c2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAqIFRSSV9G S2V5X3NldG51bGxfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0 byBOVUxMIHZhbHVlcyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRudWxsX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51 bGxfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBV UERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMg dG8gTlVMTCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklf RktleV9zZXRudWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQg dGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51bGxfdXBk IiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBERUxFVEUg Y2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRl eHQsIHRydWUsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiBUUklfRktleV9z ZXRkZWZhdWx0X2RlbCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgdG8g ZGVmYXVsdHMgYXQgZGVsZXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1bQorVFJJ X0ZLZXlfc2V0ZGVmYXVsdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0 aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5k IGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9zZXRkZWZh dWx0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGgg VVBEQVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikgZmNpbmZv LT5jb250ZXh0LCBmYWxzZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAqIFRS SV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0Rh dHVtCitUUklfRktleV9zZXRkZWZhdWx0X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X3NldGRlZmF1bHRfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNv ZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9VUERBVEUpOworfQorCisv KgorICogdHJpX3NldCAtCisgKgorICogQ29tbW9uIGNvZGUgZm9yIHRlbXBvcmFsIE9OIERF TEVURSBTRVQgTlVMTCwgT04gREVMRVRFIFNFVCBERUZBVUxULCBPTgorICogVVBEQVRFIFNF VCBOVUxMLCBhbmQgT04gVVBEQVRFIFNFVCBERUZBVUxULgorICovCitzdGF0aWMgRGF0dW0K K3RyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQg dGdraW5kKQoreworCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRp b24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xv dDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIJcXBsYW47CisJRGF0dW0JCXRh cmdldFJhbmdlOworCWludDMyCQlxdWVyeW5vOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25z dHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50 Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3Jp cHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoK KwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0 aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJ ICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9 IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgU0VUIE5VTEwvREVG QVVMVCB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5 IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJn ZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdfdGVtcG9y YWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tf Q09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOworCisJLyoK KwkgKiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIHRyaWdnZXIuCisJ ICovCisJc3dpdGNoICh0Z2tpbmQpCisJeworCQljYXNlIFJJX1RSSUdUWVBFX1VQREFURToK KwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTlVQ REFURQorCQkJCTogVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURTsKKwkJCWJyZWFrOwor CQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAor CQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQorCQkJCTogVFJJX1BMQU5fU0VUREVG QVVMVF9PTkRFTEVURTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg ImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwl9CisKKwlyaV9CdWlsZFF1 ZXJ5S2V5KCZxa2V5LCByaWluZm8sIHF1ZXJ5bm8pOworCisJaWYgKChxcGxhbiA9IHJpX0Zl dGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9U RURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpx dWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkJcXVlcnlvaWRzW1JJ X01BWF9OVU1LRVlTICsgMV07IC8qICsxIGZvciBGT1IgUE9SVElPTiBPRiAqLworCQljb25z dCBjaGFyICpma19vbmx5OworCQlpbnQJCQludW1fY29sc190b19zZXQ7CisJCWNvbnN0IGlu dDE2ICpzZXRfY29sczsKKworCQlzd2l0Y2ggKHRna2luZCkKKwkJeworCQkJY2FzZSBSSV9U UklHVFlQRV9VUERBVEU6CisJCQkJLyogLTEgc28gd2UgbGV0IEZPUiBQT1JUSU9OIE9GIHNl dCB0aGUgcmFuZ2UuICovCisJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5ua2V5cyAt IDE7CisJCQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7CisJCQkJYnJlYWs7CisJ CQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCQkvKgorCQkJCSAqIElmIGNvbmZkZWxz ZXRjb2xzIGFyZSBwcmVzZW50LCB0aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQorCQkJCSAqIGNv bHVtbnMgc3BlY2lmaWVkIGluIHRoYXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRhdGUgYWxs CisJCQkJICogdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMuCisJCQkJICovCisJCQkJaWYgKHJp aW5mby0+bmRlbHNldGNvbHMgIT0gMCkKKwkJCQl7CisJCQkJCW51bV9jb2xzX3RvX3NldCA9 IHJpaW5mby0+bmRlbHNldGNvbHM7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5jb25mZGVs c2V0Y29sczsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogLTEgc28gd2UgbGV0 IEZPUiBQT1JUSU9OIE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJCW51bV9jb2xzX3RvX3Nl dCA9IHJpaW5mby0+bmtleXMgLSAxOworCQkJCQlzZXRfY29scyA9IHJpaW5mby0+ZmtfYXR0 bnVtczsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJCX0KKworCQkvKiAtLS0t LS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICoJVVBEQVRFIFtP TkxZXSA8Zmt0YWJsZT4KKwkJICoJCQlGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dl cigke24rMX0pIFRPIHVwcGVyKCR7bisxfSkKKwkJICoJCQlTRVQgZmthdHQxID0ge05VTEx8 REVGQVVMVH0gWywgLi4uXQorCQkgKgkJCVdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4uXQor CQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0 aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0t CisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0U3RyaW5nSW5m bygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsKKwkJcXVvdGVS ZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMg LSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBEQVRFICVzJXMg Rk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCkgU0VUIiwK KwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtleXMgKyAx LCByaWluZm8tPm5rZXlzICsgMSk7CisKKwkJLyoKKwkJICogQWRkIGFzc2lnbm1lbnQgY2xh dXNlcworCQkgKi8KKwkJcXVlcnlzZXAgPSAiIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fY29sc190b19zZXQ7IGkrKykKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJ QXR0TmFtZShma19yZWwsIHNldF9jb2xzW2ldKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwKKwkJCQkJCQkgIiVzICVzID0gJXMiLAorCQkJCQkJCSBxdWVyeXNlcCwgYXR0 bmFtZSwKKwkJCQkJCQkgaXNfc2V0X251bGwgPyAiTlVMTCIgOiAiREVGQVVMVCIpOworCQkJ cXVlcnlzZXAgPSAiLCI7CisJCX0KKworCQkvKgorCQkgKiBBZGQgV0hFUkUgY2xhdXNlCisJ CSAqLworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWlu Zm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZAlwa190eXBlID0gUklBdHRUeXBlKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAlma190eXBlID0gUklBdHRUeXBl KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa19jb2xsID0gUklB dHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCWZr X2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7 CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQl ZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxzZXAsCisJ CQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tp XSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19jb2xsICE9IGZrX2Nv bGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQorCQkJCXJp X0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOworCQkJcXVhbHNl cCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNl dCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1ty aWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1ty aWluZm8tPm5rZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4g Ki8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5 cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9 CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUg ZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBOVUxM LAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJCS8qIG11 c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJaWYgKFNQ SV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2Zpbmlz aCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7 CisKKwlpZiAoaXNfc2V0X251bGwpCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgd2UganVzdCBkZWxldGVkIG9yIHVwZGF0ZWQg dGhlIFBLIHJvdyB3aG9zZSBrZXkgd2FzIGVxdWFsIHRvIHRoZQorCQkgKiBGSyBjb2x1bW5z JyBkZWZhdWx0IHZhbHVlcywgYW5kIGEgcmVmZXJlbmNpbmcgcm93IGV4aXN0cyBpbiB0aGUg RksKKwkJICogdGFibGUsIHdlIHdvdWxkIGhhdmUgdXBkYXRlZCB0aGF0IHJvdyB0byB0aGUg c2FtZSB2YWx1ZXMgaXQgYWxyZWFkeQorCQkgKiBoYWQgLS0tIGFuZCBSSV9GS2V5X2ZrX3Vw ZF9jaGVja19yZXF1aXJlZCB3b3VsZCBoZW5jZSBiZWxpZXZlIG5vCisJCSAqIGNoZWNrIGlz IG5lY2Vzc2FyeS4gIFNvIHdlIG5lZWQgdG8gZG8gYW5vdGhlciBsb29rdXAgbm93IGFuZCBp bgorCQkgKiBjYXNlIGEgcmVmZXJlbmNlIHN0aWxsIGV4aXN0cywgYWJvcnQgdGhlIG9wZXJh dGlvbi4gIFRoYXQgaXMKKwkJICogYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiB0aGUgTk8gQUNU SU9OIHRyaWdnZXIsIHNvIGp1c3QgcnVuIGl0LiAoVGhpcworCQkgKiByZWNoZWNrIGlzIG9u bHkgbmVlZGVkIGluIHRoZSBTRVQgREVGQVVMVCBjYXNlLCBzaW5jZSBDQVNDQURFIHdvdWxk CisJCSAqIHJlbW92ZSBzdWNoIHJvd3MgaW4gY2FzZSBvZiBhIERFTEVURSBvcGVyYXRpb24g b3Igd291bGQgY2hhbmdlIHRoZQorCQkgKiBGSyBrZXkgdmFsdWVzIGluIGNhc2Ugb2YgYW4g VVBEQVRFLCB3aGlsZSBTRVQgTlVMTCBpcyBjZXJ0YWluIHRvCisJCSAqIHJlc3VsdCBpbiBy b3dzIHRoYXQgc2F0aXNmeSB0aGUgRksgY29uc3RyYWludC4pCisJCSAqLworCQlyZXR1cm4g cmlfcmVzdHJpY3QodHJpZ2RhdGEsIHRydWUpOworCX0KK30KKwogLyoKICAqIFJJX0ZLZXlf cGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KICAqCkBAIC0yNTUxLDggKzMwODgsOCBAQCByaV9Q ZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlpbnQJCQlz cGlfcmVzdWx0OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRl eHQ7Ci0JRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAyXTsKLQljaGFyCQludWxsc1tS SV9NQVhfTlVNS0VZUyAqIDJdOworCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlTICogMiAr IDFdOworCWNoYXIJCW51bGxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOwogCiAJLyoKIAkg KiBVc2UgdGhlIHF1ZXJ5IHR5cGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcXVl cnkgaXMgcnVuIGFnYWluc3QKQEAgLTI1ODcsOCArMzEyNCwxMCBAQCByaV9QZXJmb3JtQ2hl Y2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJcmlfRXh0cmFjdFZhbHVl cyhzb3VyY2VfcmVsLCBuZXdzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJCQkJCSB2 YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQorCQl7CiAJCQlyaV9FeHRyYWN0VmFsdWVz KHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJCSB2 YWxzICsgcmlpbmZvLT5ua2V5cywgbnVsbHMgKyByaWluZm8tPm5rZXlzKTsKKwkJfQogCX0K IAllbHNlCiAJewpAQCAtMzI5OSw4ICszODM4LDE0IEBAIFJJX0ZLZXlfdHJpZ2dlcl90eXBl KE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgogCQljYXNl IEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX1VQ RDoKKwkJY2FzZSBGX1RSSV9GS0VZX0NBU0NBREVfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlf Q0FTQ0FERV9VUEQ6CiAJCWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9ERUw6CiAJCWNhc2Ug Rl9UUklfRktFWV9SRVNUUklDVF9VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9TRVROVUxMX0RF TDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlf U0VUREVGQVVMVF9ERUw6CisJCWNhc2UgRl9UUklfRktFWV9TRVRERUZBVUxUX1VQRDoKIAkJ Y2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1RSSV9GS0VZX05PQUNU SU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMzEzMjQ2OGE5Yy4uNzI1ZWNhMTI2ZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC0zOTQ5LDYgKzM5NDksMTIgQEAKIHsgb2lkID0+ICc2MTIzJywgZGVz Y3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4g UkVGRVJFTkNFUycsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCiAgIHByb2FyZ3R5cGVz ID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2 MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxF VEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVsJywgcHJv dm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlw ZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnIH0sCit7IG9pZCA9 PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04g VVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRlX3VwZCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9LAogeyBv aWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IE9OIERFTEVURSBSRVNUUklDVCcsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0 X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcics IHByb2FyZ3R5cGVzID0+ICcnLApAQCAtMzk1Nyw2ICszOTYzLDIwIEBACiAgIHByb25hbWUg PT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJv cmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4g J1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTI4JywgZGVzY3IgPT4g J3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgU0VUIE5VTEwnLAor ICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2 JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9z cmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjknLCBkZXNj ciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBTRVQgTlVM TCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJywgcHJvdm9sYXRpbGUg PT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycs IHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0sCit7IG9pZCA9PiAnNjEzMCcs IGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFNF VCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwnLCBw cm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0 eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2RlbCcgfSwK K3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVn cml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9z ZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAn dHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Nl dGRlZmF1bHRfdXBkJyB9LAogeyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAogICBwcm9uYW1l ID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHBy b3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IDRiOGFi YjA4MWMuLmY4YTBjMWQyYzEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtMTQ4LDYgKzE0OCw3IEBAIFNFTEVDVCBwZ19n ZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlCiAgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3Vx IE9OIHRlbXBvcmFsX3JuZzIgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQogKDEgcm93KQog CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CiAtLSBVTklRVUUgd2l0aCB0d28gY29sdW1u cyBwbHVzIGEgcmFuZ2U6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAJaWQxIGlu dDRyYW5nZSwKQEAgLTc4NSw3ICs3ODYsNjIgQEAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFU RSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KQorIFs0LDUpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2 LDcpCisgWzQsNSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcs OCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbNyw4KQorIFs0LDUpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs3LDgpCisoMyByb3dzKQor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAsMTBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUs MTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBp ZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEw LDExKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbMTYsMTcpCisgWzEwLDExKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTUsMTYpCisoMiByb3dzKQor CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlk ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2KSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IikgfCBbOCw5KQorIFs1LDYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2F0IHwg cGFyZW50X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTEsMTFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0 IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworICAgaWQgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMSwxMikgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzE3LDE4 KQorKDEgcm93KQorCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiBJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbOSw5XScpOwpAQCAtNzk1LDcgKzg1MSw2NyBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQ REFURSBTRVQgTlVMTDsKLUVSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sx MCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBb OSwxMCkKKyBbNiw3KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbOSwxMCkKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCAKKyBbNiw3KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTgsMThdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sxOCwxOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKyAgIGlkICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTIsMTMpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IAorIFsxMiwxMykgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzE4LDE5KQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxMSwxMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3 LDgpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiKSB8IFsxMSwxMikKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTEsMTIpCisoMyByb3dzKQorCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgCisgWzcsOCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgCisgWzcsOCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgCisoMyByb3dzKQorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMjAsMjBdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTMsMTNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMywxNCkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEzLDE0KSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbMjAsMjEpCisoMiByb3dzKQorCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNF VCBERUZBVUxUCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScs IHRzcmFuZ2UobnVsbCwgbnVsbCkpOwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CkBA IC04MDcsNyArOTIzLDk1IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBE RUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9y ZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScg V0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwg WzEyLDEzKQorIFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAg aWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSww KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hF UkUgaWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFsxNCwxNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzE0LDE1KSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMjIsMjMp CisoMiByb3dzKQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzksMTApIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsx NCwxNSkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSww KQorIFs5LDEwKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApCisoMyByb3dz KQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUs MTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOworICAgaWQgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwxNikgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzE1LDE2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEph biAwMSAwMDowMDowMCAyMDIxIikgfCBbMjQsMjUpCisoMiByb3dzKQorCistLSBGSyB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cm5nMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgbXlkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQsIFBFUklPRCB2YWxpZF9hdCkgT04gREVMRVRFIENB U0NBREUKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg bXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkp IHwgWzgsOSkKKyBbNSw2KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzgsOSkKKygy IHJvd3MpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CitEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CiAtLSBGSyBiZXR3ZWVu IHBhcnRpdGlvbmVkIHRhYmxlcwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyAoCiAJaWQgaW50NHJhbmdlLApAQCAtODE1LDggKzEwMTksOCBAQCBDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRF IFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBW QUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScs ICdbMTEsMTFdJyk7Ci1DUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywg J1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScs ICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRd JywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywg J1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScp OwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sx LDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAog ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29u ZScpLApAQCAtODI5LDggKzEwMzMsOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdGZrcDEg cGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVF UyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sx MSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9S IFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDld JywgJ1sxMSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5 XScsICdbMjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgn WzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScs ICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0n LCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNl cnRzCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UwogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwg J1sxLDFdJyksCkBAIC04NjUsNyArMTA2OSw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYt MDMtCiAtLSBzaG91bGQgZmFpbDoKIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQog ICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNs ZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpAQCAtODc3LDcgKzEwODEsNyBAQCBJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtl eSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRf ZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAx OCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKQEAgLTg5 OSw3ICsxMTAzLDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0tIHNob3VsZCBm YWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0w MS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4gdXA6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9 ICdbNSw1XSc7CkBAIC05MTEsMzUgKzExMTUsMjE0IEBAIElOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ii4KIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwog CQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbNCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkKKyBbNCw1 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzYsNykKKyBbNCw1KSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb NCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkKKyBbNCw1KSB8IFswMS0w MS0yMDE4LDAxLTAxLTIwMTkpIHwgWzcsOCkKKyBbNCw1KSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMTAsMTBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkg fCBbMTYsMTcpCisgWzEwLDExKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE1LDE2 KQorKDIgcm93cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FE RQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s4LDhd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5KQorIFs1LDYpIHwgWzAx LTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbOCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZCAKKy0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb MTEsMTIpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTcsMTgpCisoMSByb3cpCisK IC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJ T04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKLUVSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0g J1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFs2LDcpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAKKyBbNiw3KSB8 IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzksMTApCisgWzYsNykgfCBbMDEtMDEtMjAy MCwwMS0wMS0yMDIxKSB8IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwg CisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwx OF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTgsMThdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTksMTldJyBXSEVS RSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzEyLDEzKSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEyLDEzKSB8 IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE4LDE5KQorKDIgcm93cykKKwogLS0gcGFy dGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTEsMTFdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOwor ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFswMS0w MS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzcsOCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5 KSB8IFsxMSwxMikKKyBbNyw4KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzExLDEy KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICB2YWxp ZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8 IAorIFs3LDgpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCAKKyBbNyw4KSB8IFswMS0w MS0yMDIwLDAxLTAxLTIwMjEpIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFsxMywxNCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IAorIFsx MywxNCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsyMCwyMSkKKygyIHJvd3MpCisK IC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzAsMF0nLCBkYXRlcmFu Z2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzEyLDEyXScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZwotICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAg QUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWzAsMF0nLAogCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNF VCBERUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBp ZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFswMS0wMS0y MDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIw MTkpIHwgWzEyLDEzKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTIs MTMpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBp ZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWzAxLTAxLTIw MTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAx OSkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMCwxKQor KDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJd JywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUg aWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxNCwxNSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzE0LDE1 KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIyLDIzKQorKDIgcm93cykKKwogLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTQsMTRdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzks OV0nOworICAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEw KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEt MjAxOCwwMS0wMS0yMDE5KSB8IFsxNCwxNSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCwwMS0w MS0yMDIxKSB8IFsxNCwxNSkKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBp ZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwgWzAxLTAx LTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDE4LDAxLTAx LTIwMTkpIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsw LDEpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sy NCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE1LDE1 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzI0 LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTUsMTVd JzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwx NikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzE1LDE2KSB8IFswMS0w MS0yMDIwLDAxLTAxLTIwMjEpIHwgWzI0LDI1KQorKDIgcm93cykKKwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCmluZGV4IDk2MGE2MzIzODEuLjdlYTZhZjUxODQgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0xMDMsNiArMTAzLDcgQEAgQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAogXGQgdGVtcG9yYWxfcm5nMgogU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmlu ZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1w b3JhbF9ybmcyX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKIAogLS0gVU5JUVVF IHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzMgKApAQCAtNjMwLDYgKzYzMSwyOCBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRF IENBU0NBREU7CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNCw0XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sx NiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAsMTBdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURF CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBp ZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4 LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTdd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOwogCiAtLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CkBA IC02NDAsNiArNjYzLDI4IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxM OworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlk ID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBX SEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIHRzcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzE5LDE5 XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjAsMjBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sy MCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMjAsMjBd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CiAKIC0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CkBAIC02NTIs NiArNjk3LDU0IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxU OworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1s4LDhdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxMywxM10n IFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMjIsMjJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sy MywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVG QVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOwor CistLSBGSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZUEUgbXlkYXRl cmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkLCBQRVJJT0QgdmFsaWRf YXQpIE9OIERFTEVURSBDQVNDQURFCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScs IG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nMjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIAogLS0gRksgYmV0d2VlbiBwYXJ0aXRp b25lZCB0YWJsZXMKIApAQCAtNjYxLDggKzc1NCw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdHAx IHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAo J1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0n KTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0n LCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1sz LDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nLCAnWzEzLDEzXScs ICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEsMjFdJywgJ1syMywyM10n KTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0n LCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScs ICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiBJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAgICgnWzEsMV0nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCiAgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCkBAIC02 NzYsOCArNzY5LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQogKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7Ci1D UkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4 LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRp dGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4g KCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFd JywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIx XScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1sy LDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScs ICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0n LCAnWzI0LDI0XScpOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCiAKQEAg LTc2MSwzNyArODU0LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZQogCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKIAogLS0gcGFydGl0 aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTcsMTddJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNywxN10nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CisKIC0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiAKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5 LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNF VCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywgZGF0ZXJhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKIAog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKIAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb Nyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBE RUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFV TFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdb MCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVG QVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKIAogLS0gcGFy dGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKIAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0 LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwotLSAKMi4yNS4xCgo= --------------WEIT9zjCxFDg0fV7Xy9sQj0U Content-Type: text/x-patch; charset=UTF-8; name="v15-0005-Add-PERIODs.patch" Content-Disposition: attachment; filename="v15-0005-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSAwZDIxYjQ1NzkwYzVhYTNiMzljZmY1YjJhMDNiNTM4ZjljNjJkN2NkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjE1IDUvNV0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu ZyBmb3IgU1FMOjIwMTEgc3ludGF4IHRvIGRlZmluZSBhbiBhcHBsaWNhdGlvbi10aW1lIFBF UklPRCBvbiBhCiAgdGFibGUgKGluIGJvdGggQ1JFQVRFIFRBQkxFIGFuZCBBTFRFUiBUQUJM RSkuIE1ha2Ugc3VyZSB3ZSBjcmVhdGUgdGhlIFBFUklPRAogIGFmdGVyIGNvbHVtbnMgYXJl IGtub3duIChzaW5jZSBQRVJJT0RzIGNhbiByZWZlciB0byB0aGVtKSBidXQgYmVmb3JlCiAg Y29uc3RyYWludHMgYXJlIGhhbmRsZWQgKHNpbmNlIFBFUklPRHMgY2FuIGFwcGVhciBpbiB0 aGVtKS4KLSBBZGRlZCBBTFRFUiBUQUJMRSBEUk9QIHN1cHBvcnQgZm9yIFBFUklPRHMuCi0g Q3JlYXRlZCBwb3N0Z3Jlcy5wZ19wZXJpb2QgdGFibGUuCi0gQ3JlYXRlZCBpbmZvcm1hdGlv bl9zY2hlbWEucGVyaW9kcyB2aWV3LgotIEFkZGVkIHBnX2R1bXAgc3VwcG9ydC4KLSBBZGRl ZCB0ZXN0cyBhbmQgZG9jdW1lbnRhdGlvbi4KLSBBdXRvbWF0aWNhbGx5IGRlZmluZSBhIGNv bnN0cmFpbnQgZm9yIGVhY2ggUEVSSU9EIHJlcXVpcmluZyB0aGUgc3RhcnQgY29sdW1uCiAg dG8gYmUgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uLgotIFdoZW4gY3JlYXRpbmcgYSBQRVJJ T0QsIGNob29zZSBhbiBhcHByb3ByaWF0ZSByYW5nZSB0eXBlIHdlIGNhbiB1c2UgdG8KICBp bXBsZW1lbnQgUEVSSU9ELXJlbGF0ZWQgb3BlcmF0aW9ucy4gWW91IGNhbiBjaG9vc2Ugb25l IGV4cGxpY2l0bHkgaWYgdGhlcmUKICBpcyBhbWJpZ3VpdHkgKGR1ZSB0byBtdWx0aXBsZSBy YW5nZSB0eXBlcyBjcmVhdGVkIG92ZXIgdGhlIHNhbWUgYmFzZSB0eXBlKS4KLS0tCiBkb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAgICAgfCAxMTIgKysrCiBk b2Mvc3JjL3NnbWwvZGRsLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNTggKysK IGRvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbCAgICAgICAgICB8ICA2MyAr KwogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sICAgICAgICAgICAgIHwgIDI1 ICsKIGRvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sICAgICAgICAgICAgICAgICB8ICAg MiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sICAgICAgICAgICAgfCAg NDAgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwg ICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgICAgICAgICAgICAgICAgICB8 ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYyAgICAgICAgICAgICAg fCAgIDkgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgICAgICAgICAgICAgICAgICAg IHwgIDc2ICsrCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwg ICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYyAgICAg ICAgICAgfCAgNzMgKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMgICAgICAg ICAgICAgICB8IDEzMiArKysKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4 dCAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYyAgICAg ICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyAg ICAgICAgICAgICAgICB8ICAxMCArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5j ICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jICAgICAgICAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVs LmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNt ZHMuYyAgICAgICAgICAgICAgfCA3NjUgKysrKysrKysrKysrKysrKystCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNr ZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5jICAgICAgICAgICB8ICAxMCArCiBzcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNDUgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3ICsr CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAgMjEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE3 MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAgICAg ICAgICAgfCAgIDEgLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaCAgICAgICAg ICAgICAgIHwgIDU0ICsrCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggICAgICAg ICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmggICAg ICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAg ICAgICAgICAgICAgfCAgMzkgKy0KIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21k LmggICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaCAg ICAgICAgICAgICAgICAgIHwgICAzICsKIC4uLi90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRs X2RlcGFyc2UuYyAgICAgICB8ICAgNiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Bl cmlvZHMub3V0ICAgICAgICAgfCAxNzMgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZSAgICAgICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9w ZXJpb2RzLnNxbCAgICAgICAgICAgICAgfCAxMTcgKysrCiA0OCBmaWxlcyBjaGFuZ2VkLCAy MzExIGluc2VydGlvbnMoKyksIDQ0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wZXJpb2RzLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BlcmlvZHMuc3FsCgpkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRl eCAxOWMyZTFjODI3Li43OGQzNzg3N2ExIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtMjMwLDYg KzIzMCwxMSBAQAogICAgICAgPGVudHJ5PmluZm9ybWF0aW9uIGFib3V0IHBhcnRpdGlvbiBr ZXkgb2YgdGFibGVzPC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBlcmlvZCI+PHN0cnVjdG5hbWU+ cGdfcGVyaW9kPC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgorICAgICAgPGVudHJ5PnBl cmlvZHM8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAgICAgPGVudHJ5 PjxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctcG9saWN5Ij48c3RydWN0bmFtZT5wZ19wb2xp Y3k8L3N0cnVjdG5hbWU+PC9saW5rPjwvZW50cnk+CiAgICAgICA8ZW50cnk+cm93LXNlY3Vy aXR5IHBvbGljaWVzPC9lbnRyeT4KQEAgLTU3MTIsNiArNTcxNywxMTMgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxl Pjo8cmVwbGFjZWFibGU+JmwKICAgICAgICBhcmUgc2ltcGxlIHJlZmVyZW5jZXMuCiAgICAg ICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CisKKyAgICA8L3Rib2R5PgorICAgPC90 Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4KKworCisgPHNlY3QxIGlkPSJjYXRhbG9n LXBnLXBlcmlvZCI+CisgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJtIHpvbmU9ImNhdGFsb2ctcGctcGVyaW9kIj4K KyAgIDxwcmltYXJ5PnBnX3BlcmlvZDwvcHJpbWFyeT4KKyAgPC9pbmRleHRlcm0+CisKKyAg PHBhcmE+CisgICBUaGUgY2F0YWxvZyA8c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVjdG5h bWU+IHN0b3JlcworICAgaW5mb3JtYXRpb24gYWJvdXQgc3lzdGVtIGFuZCBhcHBsaWNhdGlv biB0aW1lIHBlcmlvZHMuCisgIDwvcGFyYT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJl IGRlc2NyaWJlZCBpbiA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPi4KKyAgPC9wYXJh PgorCisgIDx0YWJsZT4KKyAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19wZXJpb2Q8L3N0cnVj dG5hbWU+IENvbHVtbnM8L3RpdGxlPgorCisgICA8dGdyb3VwIGNvbHM9IjEiPgorICAgIDx0 aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2Vu dHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgQ29sdW1uIFR5 cGUKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIERlc2NyaXB0aW9uCisg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVhZD4KKworICAg IDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgIDwvcGFy YT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJvdyBpZGVudGlmaWVyCisgICAgICA8L3BhcmE+ PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcm5hbWU8L3N0cnVjdGZpZWxkPiA8dHlwZT50ZXh0 PC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUGVyaW9kIG5h bWUKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVycmVsaWQ8L3N0cnVj dGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlu a2VuZD0iY2F0YWxvZy1wZy1jbGFzcyI+PHN0cnVjdG5hbWU+cGdfY2xhc3M8L3N0cnVjdG5h bWU+PC9saW5rPi48c3RydWN0ZmllbGQ+b2lkPC9zdHJ1Y3RmaWVsZD4pCisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgdGFibGUgdGhpcyBwZXJpb2QgYmVsb25n cyB0bworICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+ CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJzdGFydDwvc3Ry dWN0ZmllbGQ+IDx0eXBlPmludDI8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsg bGlua2VuZD0iY2F0YWxvZy1wZy1hdHRyaWJ1dGUiPjxzdHJ1Y3RuYW1lPnBnX2F0dHJpYnV0 ZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5hdHRudW08L3N0cnVjdGZpZWxk PikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBudW1iZXIgb2Yg dGhlIHN0YXJ0IGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5w ZXJlbmQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVu Y2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5w Z19hdHRyaWJ1dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9z dHJ1Y3RmaWVsZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg bnVtYmVyIG9mIHRoZSBlbmQgY29sdW1uCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAg PC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVj dGZpZWxkPnBlcnJhbmdlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAg ICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0 cnVjdG5hbWU+cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxk PmF0dG51bTwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+Cisg ICAgICAgVGhlIG51bWJlciBvZiB0aGUgPGxpdGVyYWw+R0VORVJBVEVEPC9saXRlcmFsPiBj b2x1bW4gdGhhdCBpbXBsZW1lbnRzIHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+Lgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1u X2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJjb25zdHJhaW50PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY29uc3RyYWludCI+PHN0cnVjdG5hbWU+cGdfY29uc3RyYWlu dDwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikK KyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBPSUQgb2YgdGhlIHBl cmlvZCdzIDxsaXRlcmFsPkNIRUNLPC9saXRlcmFsPiBjb25zdHJhaW50CisgICAgICA8L3Bh cmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICA8L3Rib2R5PgogICAgPC90Z3JvdXA+ CiAgIDwvdGFibGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwgYi9kb2Mv c3JjL3NnbWwvZGRsLnNnbWwKaW5kZXggMDc1ZmYzMjk5MS4uOTRhODkyY2EyOSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9kZGwuc2dt bApAQCAtMTI2Myw2ICsxMjYzLDY0IEBAIENSRUFURSBUQUJMRSBjaXJjbGVzICgKICAgPC9z ZWN0Mj4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJkZGwtcGVyaW9kcyI+CisgIDx0aXRs ZT5QZXJpb2RzPC90aXRsZT4KKworICA8cGFyYT4KKyAgIFBlcmlvZHMgYXJlIGRlZmluaXRp b25zIG9uIGEgdGFibGUgdGhhdCBhc3NvY2lhdGUgYSBwZXJpb2QgbmFtZSB3aXRoIGEgc3Rh cnQKKyAgIGNvbHVtbiBhbmQgYW4gZW5kIGNvbHVtbi4gIEJvdGggY29sdW1ucyBtdXN0IGJl IG9mIGV4YWN0bHkgdGhlIHNhbWUgdHlwZQorICAgKGluY2x1ZGluZyBjb2xsYXRpb24pLCBo YXZlIGEgYnRyZWUgb3BlcmF0b3IgY2xhc3MsIGFuZCB0aGUgc3RhcnQgY29sdW1uCisgICB2 YWx1ZSBtdXN0IGJlIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIGNvbHVtbiB2YWx1ZS4K KyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgVGhlcmUgYXJlIHR3byB0eXBlcyBvZiBwZXJp b2RzOiBhcHBsaWNhdGlvbiBhbmQgc3lzdGVtLiAgU3lzdGVtIHBlcmlvZHMgYXJlCisgICBk aXN0aW5ndWlzaGVkIGJ5IHRoZWlyIG5hbWUgd2hpY2ggbXVzdCBiZSA8bGl0ZXJhbD5TWVNU RU1fVElNRTwvbGl0ZXJhbD4uICBBbnkKKyAgIG90aGVyIG5hbWUgaXMgYW4gYXBwbGljYXRp b24gcGVyaW9kLgorICA8L3BhcmE+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1hcHBs aWNhdGlvbi1wZXJpb2RzIj4KKyAgPHRpdGxlPkFwcGxpY2F0aW9uIFBlcmlvZHM8L3RpdGxl PgorCisgICA8aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAg ICA8c2Vjb25kYXJ5PmFwcGxpY2F0aW9uPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4K KworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBhcmUgZGVmaW5lZCBvbiBh IHRhYmxlIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorICAgPC9wYXJhPgorCis8cHJv Z3JhbWxpc3Rpbmc+CitDUkVBVEUgVEFCTEUgYmlsbGluZ19hZGRyZXNzZXMgKAorICBjdXN0 b21lcl9pZCBpbnRlZ2VyLAorICBhZGRyZXNzX2lkIGludGVnZXIsCisgIHZhbGlkX2Zyb20g ZGF0ZSwKKyAgdmFsaWRfdG8gZGF0ZSwKKyAgPGVtcGhhc2lzPlBFUklPRCBGT1IgdmFsaWRp dHkgKHZhbGlkX2Zyb20sIHZhbGlkX3RvKTwvZW1waGFzaXM+CispOworPC9wcm9ncmFtbGlz dGluZz4KKworICAgPHBhcmE+CisgICAgQXBwbGljYXRpb24gcGVyaW9kcyBjYW4gYmUgdXNl ZCB0byBkZWZpbmUgdGVtcG9yYWwgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLgorICAgIEFu eSB0YWJsZSB3aXRoIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXkgaXMgYSB0ZW1wb3JhbCB0YWJs ZSBhbmQgc3VwcG9ydHMgdGVtcG9yYWwgdXBkYXRlIGFuZCBkZWxldGUgY29tbWFuZHMuCisg ICA8L3BhcmE+CisgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJkZGwtcGVyaW9kcy1zeXN0 ZW0tcGVyaW9kcyI+CisgICA8dGl0bGU+U3lzdGVtIFBlcmlvZHM8L3RpdGxlPgorCisgICA8 aW5kZXh0ZXJtPgorICAgIDxwcmltYXJ5PnBlcmlvZDwvcHJpbWFyeT4KKyAgICA8c2Vjb25k YXJ5PnN5c3RlbTwvc2Vjb25kYXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgor ICAgIFBlcmlvZHMgZm9yIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBhcmUgY3Vy cmVudGx5IG5vdCBpbXBsZW1lbnRlZC4KKyAgIDwvcGFyYT4KKyAgPC9zZWN0Mj4KKyA8L3Nl Y3QxPgorCiAgPHNlY3QxIGlkPSJkZGwtc3lzdGVtLWNvbHVtbnMiPgogICA8dGl0bGU+U3lz dGVtIENvbHVtbnM8L3RpdGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaW5mb3Jt YXRpb25fc2NoZW1hLnNnbWwgYi9kb2Mvc3JjL3NnbWwvaW5mb3JtYXRpb25fc2NoZW1hLnNn bWwKaW5kZXggZDU3YTEzMjM0MC4uOGNjOTUyYTA4NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2luZm9ybWF0aW9uX3NjaGVtYS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9pbmZvcm1h dGlvbl9zY2hlbWEuc2dtbApAQCAtNDE2Miw2ICs0MTYyLDY5IEBAIE9SREVSIEJZIGMub3Jk aW5hbF9wb3NpdGlvbjsKICAgPC90YWJsZT4KICA8L3NlY3QxPgogCisgPHNlY3QxIGlkPSJp bmZvc2NoZW1hLXBlcmlvZHMiPgorICA8dGl0bGU+PGxpdGVyYWw+cGVyaW9kczwvbGl0ZXJh bD48L3RpdGxlPgorCisgIDxwYXJhPgorICAgVGhlIHZpZXcgPGxpdGVyYWw+cGFyYW1ldGVy czwvbGl0ZXJhbD4gY29udGFpbnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlCisgICBwZXJpb2Rz IG9mIGFsbCB0YWJsZXMgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UuICBUaGUgc3RhcnQgYW5k IGVuZCBjb2x1bW4KKyAgIG5hbWVzIGFyZSBvbmx5IHNob3duIGlmIHRoZSBjdXJyZW50IHVz ZXIgaGFzIGFjY2VzcyB0byB0aGVtIChieSB3YXkgb2YgYmVpbmcKKyAgIHRoZSBvd25lciBv ciBoYXZpbmcgc29tZSBwcml2aWxlZ2UpLgorICA8L3BhcmE+CisKKyAgPHRhYmxlPgorICAg PHRpdGxlPjxsaXRlcmFsPnBlcmlvZHM8L2xpdGVyYWw+IENvbHVtbnM8L3RpdGxlPgorCisg ICA8dGdyb3VwIGNvbHM9IjMiPgorICAgIDx0aGVhZD4KKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeT5OYW1lPC9lbnRyeT4KKyAgICAgIDxlbnRyeT5EYXRhIFR5cGU8L2VudHJ5PgorICAg ICAgPGVudHJ5PkRlc2NyaXB0aW9uPC9lbnRyeT4KKyAgICAgPC9yb3c+CisgICAgPC90aGVh ZD4KKworICAgIDx0Ym9keT4KKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50 YWJsZV9jYXRhbG9nPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3Fs X2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBk YXRhYmFzZSBjb250YWluaW5nIHRoZSBwZXJpb2QgKGFsd2F5cyB0aGUgY3VycmVudCBkYXRh YmFzZSk8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 PjxsaXRlcmFsPnRhYmxlX3NjaGVtYTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5 Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFt ZSBvZiB0aGUgc2NoZW1hIGNvbnRhaW5pbmcgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxpdGVyYWw+dGFibGVfbmFtZTwv bGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90 eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgdGFibGUgY29udGFpbmlu ZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAg IDxlbnRyeT48bGl0ZXJhbD5wZXJpb2RfbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAg PGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50 cnk+TmFtZSBvZiB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5zdGFydF9jb2x1bW5fbmFtZTwvbGl0ZXJhbD48 L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50 cnk+CisgICAgICA8ZW50cnk+TmFtZSBvZiB0aGUgc3RhcnQgY29sdW1uIGZvciB0aGUgcGVy aW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48 bGl0ZXJhbD5lbmRfY29sdW1uX25hbWU8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRy eT48dHlwZT5zcWxfaWRlbnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5h bWUgb2YgdGhlIGVuZCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jv dz4KKyAgICA8L3Rib2R5PgorICAgPC90Z3JvdXA+CisgIDwvdGFibGU+CisgPC9zZWN0MT4K KwogIDxzZWN0MSBpZD0iaW5mb3NjaGVtYS1yZWZlcmVudGlhbC1jb25zdHJhaW50cyI+CiAg IDx0aXRsZT48bGl0ZXJhbD5yZWZlcmVudGlhbF9jb25zdHJhaW50czwvbGl0ZXJhbD48L3Rp dGxlPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggMmM0MTM4ZTRlOS4u YWVlOTg2ZWZkNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNjAsNiAr NjAsOCBAQCBBTFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4KICAgICBBTFRFUiBDT05TVFJBSU5UIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2Vh YmxlPiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERFRkVS UkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCiAgICAgVkFMSURBVEUgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4KICAgICBEUk9QIENPTlNUUkFJTlQgWyBJRiBFWElTVFMgXSAgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IFsgUkVT VFJJQ1QgfCBDQVNDQURFIF0KKyAgICBBREQgUEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF9jb2x1bW48L3JlcGxhY2VhYmxlPiwgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF9jb2x1bW48L3JlcGxhY2VhYmxlPiApIFsg V0lUSCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9y ZXBsYWNlYWJsZT4gPSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KKyAgICBEUk9QIFBFUklPRCBGT1IgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNU UklDVCB8IENBU0NBREUgXQogICAgIERJU0FCTEUgVFJJR0dFUiBbIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj50cmlnZ2VyX25hbWU8L3JlcGxhY2VhYmxlPiB8IEFMTCB8IFVT RVIgXQogICAgIEVOQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBdCiAgICAgRU5B QkxFIFJFUExJQ0EgVFJJR0dFUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHJp Z2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4KQEAgLTU3MSw2ICs1NzMsMjkgQEAgV0lUSCAoIE1P RFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwv cmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtYWRkLXBlcmlv ZCI+CisgICAgPHRlcm0+PGxpdGVyYWw+QUREIFBFUklPRCBGT1I8L2xpdGVyYWw+PC90ZXJt PgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGZvcm0gYWRkcyBh IG5ldyBwZXJpb2QgdG8gYSB0YWJsZSB1c2luZyB0aGUgc2FtZSBzeW50YXggYXMKKyAgICAg IDx4cmVmIGxpbmtlbmQ9InNxbC1jcmVhdGV0YWJsZSIvPi4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeSBp ZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kcm9wLXBlcmlvZCI+CisgICAgPHRlcm0+PGxpdGVy YWw+RFJPUCBQRVJJT0QgRk9SPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHRoZSBzcGVjaWZpZWQgcGVyaW9k IG9uIGEgdGFibGUuICBUaGUgc3RhcnQgYW5kIGVuZAorICAgICAgY29sdW1ucyB3aWxsIG5v dCBiZSBkcm9wcGVkIGJ5IHRoaXMgY29tbWFuZCBidXQgdGhlCisgICAgICA8bGl0ZXJhbD5D SEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCB3aWxsIGJlLiAgWW91IHdpbGwgbmVlZCB0byBz YXkKKyAgICAgIDxsaXRlcmFsPkNBU0NBREU8L2xpdGVyYWw+IGlmIGFueXRoaW5nIG91dHNp ZGUgdGhlIHRhYmxlIGRlcGVuZHMgb24gdGhlCisgICAgICBjb2x1bW4uCisgICAgIDwvcGFy YT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnkgaWQ9InNxbC1hbHRlcnRhYmxlLWRlc2MtZGlzYWJsZS1lbmFibGUtdHJpZ2dlciI+ CiAgICAgPHRlcm0+PGxpdGVyYWw+RElTQUJMRTwvbGl0ZXJhbD4vPGxpdGVyYWw+RU5BQkxF IFsgUkVQTElDQSB8IEFMV0FZUyBdIFRSSUdHRVI8L2xpdGVyYWw+PC90ZXJtPgogICAgIDxs aXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY29tbWVudC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKaW5kZXggNWI0M2M1NmIxMy4uNDljMmRm OTk0NCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwKQEAgLTQ0LDYgKzQ0LDcgQEAgQ09NTUVO VCBPTgogICBPUEVSQVRPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3JfbmFtZTwvcmVwbGFjZWFibGU+ICg8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bGVmdF90eXBlPC9yZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5yaWdodF90eXBlPC9yZXBsYWNlYWJsZT4pIHwKICAgT1BFUkFUT1IgQ0xBU1MgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJ TkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFj ZWFibGU+IHwKICAgT1BFUkFUT1IgRkFNSUxZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+IFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiB8CisgIFBFUklPRCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVsYXRpb25fbmFtZTwvcmVwbGFjZWFi bGU+LjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFj ZWFibGU+IHwKICAgUE9MSUNZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wb2xp Y3lfbmFtZTwvcmVwbGFjZWFibGU+IE9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gfAogICBbIFBST0NFRFVSQUwgXSBMQU5HVUFH RSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2Vh YmxlPiB8CiAgIFBST0NFRFVSRSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHJv Y2VkdXJlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggWyBbIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hcmdtb2RlPC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5hcmduYW1lPC9yZXBsYWNlYWJsZT4gXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+YXJndHlwZTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXSApIF0gfApA QCAtMzQxLDYgKzM0Miw3IEBAIENPTU1FTlQgT04gT1BFUkFUT1IgXiAodGV4dCwgdGV4dCkg SVMgJ1BlcmZvcm1zIGludGVyc2VjdGlvbiBvZiB0d28gdGV4dHMnOwogQ09NTUVOVCBPTiBP UEVSQVRPUiAtIChOT05FLCBpbnRlZ2VyKSBJUyAnVW5hcnkgbWludXMnOwogQ09NTUVOVCBP TiBPUEVSQVRPUiBDTEFTUyBpbnQ0b3BzIFVTSU5HIGJ0cmVlIElTICc0IGJ5dGUgaW50ZWdl ciBvcGVyYXRvcnMgZm9yIGJ0cmVlcyc7CiBDT01NRU5UIE9OIE9QRVJBVE9SIEZBTUlMWSBp bnRlZ2VyX29wcyBVU0lORyBidHJlZSBJUyAnYWxsIGludGVnZXIgb3BlcmF0b3JzIGZvciBi dHJlZXMnOworQ09NTUVOVCBPTiBQRVJJT0QgbXlfdGFibGUubXlfY29sdW1uIElTICdTYWxl cyBwcm9tb3Rpb24gdmFsaWRpdHknOwogQ09NTUVOVCBPTiBQT0xJQ1kgbXlfcG9saWN5IE9O IG15dGFibGUgSVMgJ0ZpbHRlciByb3dzIGJ5IHVzZXJzJzsKIENPTU1FTlQgT04gUFJPQ0VE VVJFIG15X3Byb2MgKGludGVnZXIsIGludGVnZXIpIElTICdSdW5zIGEgcmVwb3J0JzsKIENP TU1FTlQgT04gUFVCTElDQVRJT04gYWxsdGFibGVzIElTICdQdWJsaXNoZXMgYWxsIG9wZXJh dGlvbnMgb24gYWxsIHRhYmxlcyc7CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCBmZWE4ZmMzYzdhLi5jNGEwOGIyY2E2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3Rh YmxlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8 c3lub3BzaXM+CiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBU RU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gKCBbCiAgIHsg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJs ZT4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFi bGU+IFsgU1RPUkFHRSB7IFBMQUlOIHwgRVhURVJOQUwgfCBFWFRFTkRFRCB8IE1BSU4gfCBE RUZBVUxUIH0gXSBbIENPTVBSRVNTSU9OIDxyZXBsYWNlYWJsZT5jb21wcmVzc2lvbl9tZXRo b2Q8L3JlcGxhY2VhYmxlPiBdIFsgQ09MTEFURSA8cmVwbGFjZWFibGU+Y29sbGF0aW9uPC9y ZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f Y29uc3RyYWludDwvcmVwbGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxl PnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50 YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4KICAgICB8IExJS0UgPHJlcGxhY2VhYmxl PnNvdXJjZV90YWJsZTwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmxpa2Vfb3B0aW9u PC9yZXBsYWNlYWJsZT4gLi4uIF0gfQogICAgIFssIC4uLiBdCkBAIC0zNyw2ICszOCw3IEBA IENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVO TE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJCiBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FM IF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVY SVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBs YWNlYWJsZT4KICAgICBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dHlwZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBbIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVwbGFjZWFi bGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0aW9uPC9y ZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50PC9yZXBs YWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0KQEAgLTQ5LDYgKzUxLDcgQEAgQ1JFQVRF IFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQg XSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRF TVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxl PgogICAgIFBBUlRJVElPTiBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGFy ZW50X3RhYmxlPC9yZXBsYWNlYWJsZT4gWyAoCiAgIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBXSVRIIE9QVElPTlMgXSBb IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fY29uc3RyYWludDwvcmVw bGFjZWFibGU+IFsgLi4uIF0gXQorICAgIHwgPHJlcGxhY2VhYmxlPnBlcmlvZF9kZWZpbml0 aW9uPC9yZXBsYWNlYWJsZT4KICAgICB8IDxyZXBsYWNlYWJsZT50YWJsZV9jb25zdHJhaW50 PC9yZXBsYWNlYWJsZT4gfQogICAgIFssIC4uLiBdCiApIF0geyBGT1IgVkFMVUVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJ0aXRpb25fYm91bmRfc3BlYzwvcmVwbGFj ZWFibGU+IHwgREVGQVVMVCB9CkBAIC03Myw2ICs3NiwxMSBAQCBDUkVBVEUgWyBbIEdMT0JB TCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsg SUYgTk9UIEVYSQogICAgIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3JlcGxh Y2VhYmxlPiBdIH0KIFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFM TFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0KIAorPHBocmFzZT5hbmQgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9kZWZpbml0aW9uPC9yZXBsYWNl YWJsZT4gaXM6PC9waHJhc2U+CisKK1BFUklPRCBGT1IgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiB8IFNZU1RFTV9USU1FIH0g KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBs YWNlYWJsZT4gKQorWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBl cmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorCiA8cGhyYXNlPmFuZCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfY29uc3RyYWludDwvcmVwbGFj ZWFibGU+IGlzOjwvcGhyYXNlPgogCiBbIENPTlNUUkFJTlQgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+IF0KQEAgLTE0NCw2 ICsxNTIsMTQgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgIG5hbWUgYXMgYW55 IGV4aXN0aW5nIGRhdGEgdHlwZSBpbiB0aGUgc2FtZSBzY2hlbWEuCiAgIDwvcGFyYT4KIAor ICA8cGFyYT4KKyAgIFBlcmlvZHMgbXkgYmUgZGVmaW5lZCBvbiB0YWJsZXMsIHNwZWNpZnlp bmcgdGhhdCB0d28gZXhpc3RpbmcgY29sdW1ucworICAgcmVwcmVzZW50IHN0YXJ0IGFuZCBl bmQgdmFsdWVzIGZvciB0aGUgcGVyaW9kLiAgUGVyaW9kcyBtYXkgaGF2ZSBhbnkgbmFtZQor ICAgdGhhdCBkb2Vzbid0IGNvbmZsaWN0IHdpdGggYSBjb2x1bW4gbmFtZSwgYnV0IHRoZSBu YW1lCisgICA8bGl0ZXJhbD5TWVNURU1fVElNRTwvbGl0ZXJhbD4gaXMgc3BlY2lhbCwgdXNl ZCBmb3IgdmVyc2lvbmluZyB0YWJsZXMuCisgICBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IHll dCBpbXBsZW1lbnRlZC4gIFNlZSA8eHJlZiBsaW5rZW5kPSJkZGwtcGVyaW9kcyIvPiBmb3Ig bW9yZSBkZXRhaWxzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBUaGUgb3B0aW9uYWwg Y29uc3RyYWludCBjbGF1c2VzIHNwZWNpZnkgY29uc3RyYWludHMgKHRlc3RzKSB0aGF0CiAg ICBuZXcgb3IgdXBkYXRlZCByb3dzIG11c3Qgc2F0aXNmeSBmb3IgYW4gaW5zZXJ0IG9yIHVw ZGF0ZSBvcGVyYXRpb24KQEAgLTgwNCw2ICs4MjAsMzAgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2 YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1wZXJpb2QiPgorICAgIDx0 ZXJtPjxsaXRlcmFsPlBFUklPRCBGT1IgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gKSBbIFdJVEggKCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+ID0g PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gKSBdPC9saXRlcmFsPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJh PgorICAgICAgQSBwZXJpb2QgZGVmaW5pdGlvbiBnaXZlcyBzZW1hbnRpYyBtZWFuaW5nIHRv IHR3byBleGlzdGluZyBjb2x1bW5zIG9mCisgICAgICB0aGUgdGFibGUuICBJdCBkZWZpbmVz IGEgInN0YXJ0IGNvbHVtbiIgYW5kIGFuICJlbmQgY29sdW1uIiB3aGVyZSB0aGUKKyAgICAg IHN0YXJ0IHZhbHVlIGlzIHN0cmljdGx5IGxlc3MgdGhhbiB0aGUgZW5kIHZhbHVlLiAgQQor ICAgICAgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXMgYXV0b21hdGlj YWxseSBjcmVhdGVkIHRvIGVuZm9yY2UKKyAgICAgIHRoaXMuIFlvdSBjYW4gc3BlY2lmeSB0 aGUgbmFtZSBvZiB0aGF0IGNvbnN0cmFpbnQgd2l0aCB0aGUKKyAgICAgIDxsaXRlcmFsPmNo ZWNrX2NvbnN0cmFpbnRfbmFtZTwvbGl0ZXJhbD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxhY2VhYmxlPi4KKyAgICAgPC9wYXJhPgorCisg ICAgIDxwYXJhPgorICAgICAgQm90aCBjb2x1bW5zIG11c3QgaGF2ZSBleGFjdGx5IHRoZSBz YW1lIHR5cGUgYW5kIG11c3QgaGF2ZSBhIHJhbmdlIHR5cGUKKyAgICAgIGRlZmluZWQgZnJv bSB0aGVpciBiYXNlIHR5cGUuICBJZiB0aGVyZSBhcmUgc2V2ZXJhbCByYW5nZSB0eXBlcyBm b3IgdGhhdAorICAgICAgYmFzZSB0eXBlLCB5b3UgbXVzdCBzcGVjaWZ5IHdoaWNoIG9uZSB5 b3Ugd2FudCBieSB1c2luZyB0aGUKKyAgICAgIDxsaXRlcmFsPnJhbmdldHlwZTwvbGl0ZXJh bD4gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxh Y2VhYmxlPi4KKyAgICAgIEFueSBiYXNlIHR5cGUgaXMgYWxsb3dlZCwgYXMgbG9uZyBhcyBp dCBoYXMgYSByYW5nZSB0eXBlLCBhbHRob3VnaCBpdCBpcworICAgICAgZXhwZWN0ZWQgdGhh dCBtb3N0IHBlcmlvZHMgd2lsbCB1c2UgdGVtcG9yYWwgdHlwZXMgbGlrZSA8bGl0ZXJhbD50 aW1lc3RhbXB0ejwvbGl0ZXJhbD4KKyAgICAgIG9yIDxsaXRlcmFsPmRhdGU8L2xpdGVyYWw+ LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRldGFibGUtcGFybXMtY29uc3RyYWlu dCI+CiAgICAgPHRlcm0+PGxpdGVyYWw+Q09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv TWFrZWZpbGUgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCmluZGV4IDNlOTk5NDc5 M2QuLjUwMGI4MGZkMTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZp bGUKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQpAQCAtMzksNiArMzksNyBA QCBPQkpTID0gXAogCXBnX25hbWVzcGFjZS5vIFwKIAlwZ19vcGVyYXRvci5vIFwKIAlwZ19w YXJhbWV0ZXJfYWNsLm8gXAorCXBnX3BlcmlvZC5vIFwKIAlwZ19wcm9jLm8gXAogCXBnX3B1 YmxpY2F0aW9uLm8gXAogCXBnX3JhbmdlLm8gXApAQCAtMTExLDYgKzExMiw3IEBAIENBVEFM T0dfSEVBREVSUyA6PSBcCiAJcGdfY29sbGF0aW9uLmggXAogCXBnX3BhcmFtZXRlcl9hY2wu aCBcCiAJcGdfcGFydGl0aW9uZWRfdGFibGUuaCBcCisJcGdfcGVyaW9kLmggXAogCXBnX3Jh bmdlLmggXAogCXBnX3RyYW5zZm9ybS5oIFwKIAlwZ19zZXF1ZW5jZS5oIFwKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2FjbGNoay5jCmluZGV4IGQxZjVkY2Q4YmUuLmJkMTNmMTZiODYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvYWNsY2hrLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9h Y2xjaGsuYwpAQCAtMjc5MSw2ICsyNzkxLDcgQEAgYWNsY2hlY2tfZXJyb3IoQWNsUmVzdWx0 IGFjbGVyciwgT2JqZWN0VHlwZSBvYmp0eXBlLAogCQkJCQljYXNlIE9CSkVDVF9ERUZBVUxU OgogCQkJCQljYXNlIE9CSkVDVF9ERUZBQ0w6CiAJCQkJCWNhc2UgT0JKRUNUX0RPTUNPTlNU UkFJTlQ6CisJCQkJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJCQkJY2FzZSBPQkpFQ1RfUFVC TElDQVRJT05fTkFNRVNQQUNFOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6 CiAJCQkJCWNhc2UgT0JKRUNUX1JPTEU6CkBAIC0yOTMyLDYgKzI5MzMsNyBAQCBhY2xjaGVj a19lcnJvcihBY2xSZXN1bHQgYWNsZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNh c2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ CQkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9E OgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2Ug T0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJCQkJY2FzZSBPQkpFQ1RfUk9MRToKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvZGVwZW5kZW5jeS5jIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9kZXBlbmRlbmN5LmMKaW5kZXggZjhhMTM2YmEwYS4uMjMyZjc3Yzk2ZSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGZhbWls eS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcGFyYW1ldGVyX2FjbC5oIgorI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wb2xpY3kuaCIK ICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1 YmxpY2F0aW9uLmgiCkBAIC0xNTQsNiArMTU1LDcgQEAgc3RhdGljIGNvbnN0IE9pZCBvYmpl Y3RfY2xhc3Nlc1tdID0gewogCUNhc3RSZWxhdGlvbklkLAkJCQkvKiBPQ0xBU1NfQ0FTVCAq LwogCUNvbGxhdGlvblJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09MTEFUSU9OICovCiAJQ29u c3RyYWludFJlbGF0aW9uSWQsCQkvKiBPQ0xBU1NfQ09OU1RSQUlOVCAqLworCVBlcmlvZFJl bGF0aW9uSWQsCQkJLyogT0NMQVNTX1BFUklPRCAqLwogCUNvbnZlcnNpb25SZWxhdGlvbklk LAkJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAlBdHRyRGVmYXVsdFJlbGF0aW9uSWQsCQkv KiBPQ0xBU1NfREVGQVVMVCAqLwogCUxhbmd1YWdlUmVsYXRpb25JZCwJCQkvKiBPQ0xBU1Nf TEFOR1VBR0UgKi8KQEAgLTE0NDMsNiArMTQ0NSwxMCBAQCBkb0RlbGV0aW9uKGNvbnN0IE9i amVjdEFkZHJlc3MgKm9iamVjdCwgaW50IGZsYWdzKQogCQkJUmVtb3ZlQ29uc3RyYWludEJ5 SWQob2JqZWN0LT5vYmplY3RJZCk7CiAJCQlicmVhazsKIAorCQljYXNlIE9DTEFTU19QRVJJ T0Q6CisJCQlSZW1vdmVQZXJpb2RCeUlkKG9iamVjdC0+b2JqZWN0SWQpOworCQkJYnJlYWs7 CisKIAkJY2FzZSBPQ0xBU1NfREVGQVVMVDoKIAkJCVJlbW92ZUF0dHJEZWZhdWx0QnlJZChv YmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwpAQCAtMjg2Miw2ICsyODY4LDkgQEAgZ2V0 T2JqZWN0Q2xhc3MoY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0KQogCQljYXNlIENvbnN0 cmFpbnRSZWxhdGlvbklkOgogCQkJcmV0dXJuIE9DTEFTU19DT05TVFJBSU5UOwogCisJCWNh c2UgUGVyaW9kUmVsYXRpb25JZDoKKwkJCXJldHVybiBPQ0xBU1NfUEVSSU9EOworCiAJCWNh c2UgQ29udmVyc2lvblJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlZFUlNJT047 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tl bmQvY2F0YWxvZy9oZWFwLmMKaW5kZXggNzE0OGRkMTc4Ny4uYWU3ZGEwZTgyMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0 YWxvZy9oZWFwLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25h bWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcGFydGl0aW9uZWRfdGFibGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3Bn X3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3RhdGlzdGljLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z190YWJsZXNwYWNlLmgiCkBAIC0yMDM5LDYgKzIwNDAsODEgQEAgU2V0QXR0ck1pc3Npbmco T2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSkKIAl0YWJsZV9jbG9zZSh0 YWJsZXJlbCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiB9CiAKKy8qCisgKiBTdG9yZSBhIHBl cmlvZCBvZiByZWxhdGlvbiByZWwuCisgKgorICogUmV0dXJucyB0aGUgT0lEIG9mIHRoZSBu ZXcgcGdfcGVyaW9kIHR1cGxlLgorICovCitPaWQKK1N0b3JlUGVyaW9kKFJlbGF0aW9uIHJl bCwgY29uc3QgY2hhciAqcGVyaW9kbmFtZSwgQXR0ck51bWJlciBzdGFydG51bSwKKwkJCUF0 dHJOdW1iZXIgZW5kbnVtLCBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKQorewor CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcGVyaW9kXTsKKwlib29sCQludWxsc1tOYXR0c19w Z19wZXJpb2RdOworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJ T2lkCQkJb2lkOworCU5hbWVEYXRhCXBlcm5hbWU7CisJT2JqZWN0QWRkcmVzcwlteXNlbGYs IHJlZmVyZW5jZWQ7CisKKwlBc3NlcnQocmFuZ2VudW0gIT0gSW52YWxpZEF0dHJOdW1iZXIp OworCisJbmFtZXN0cmNweSgmcGVybmFtZSwgcGVyaW9kbmFtZSk7CisKKwlNZW1TZXQodmFs dWVzLCAwLCBzaXplb2YodmFsdWVzKSk7CisJTWVtU2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9m KG51bGxzKSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOworCisJb2lkID0gR2V0TmV3T2lkV2l0aEluZGV4KHBnX3Bl cmlvZCwgQXR0ckRlZmF1bHRPaWRJbmRleElkLCBBbnVtX3BnX3BlcmlvZF9vaWQpOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9vaWQgLSAxXSA9IE9iamVjdElkR2V0RGF0dW0ob2lkKTsK Kwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVybmFtZSAtIDFdID0gTmFtZUdldERhdHVtKCZw ZXJuYW1lKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmVsaWQgLSAxXSA9IFJlbGF0 aW9uR2V0UmVsaWQocmVsKTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVyc3RhcnQgLSAx XSA9IHN0YXJ0bnVtOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJlbmQgLSAxXSA9IGVu ZG51bTsKKwl2YWx1ZXNbQW51bV9wZ19wZXJpb2RfcGVycmFuZ2UgLSAxXSA9IHJhbmdlbnVt OworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJjb25zdHJhaW50IC0gMV0gPSBjb25vaWQ7 CisKKwl0dXBsZSA9IGhlYXBfZm9ybV90dXBsZShSZWxhdGlvbkdldERlc2NyKHBnX3Blcmlv ZCksIHZhbHVlcywgbnVsbHMpOworCUNhdGFsb2dUdXBsZUluc2VydChwZ19wZXJpb2QsIHR1 cGxlKTsKKworCU9iamVjdEFkZHJlc3NTZXQobXlzZWxmLCBQZXJpb2RSZWxhdGlvbklkLCBv aWQpOworCisJLyogRHJvcCB0aGUgcGVyaW9kIHdoZW4gdGhlIHRhYmxlIGlzIGRyb3BwZWQu ICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQs IFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYs ICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX0FVVE8pOworCisJLyogRm9yYmlkIGRyb3BwaW5n IHRoZSBjb2x1bW5zIG9mIHRoZSBwZXJpb2QuICovCisJT2JqZWN0QWRkcmVzc1N1YlNldChy ZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwg c3RhcnRudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxmLCAmcmVmZXJlbmNlZCwg REVQRU5ERU5DWV9OT1JNQUwpOworCU9iamVjdEFkZHJlc3NTdWJTZXQocmVmZXJlbmNlZCwg UmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIGVuZG51bSk7CisJ cmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBFTkRFTkNZX05P Uk1BTCk7CisKKwkvKgorCSAqIFRoZSByYW5nZSBjb2x1bW4gaXMgYW4gaW1wbGVtZW50YXRp b24gZGV0YWlsLAorCSAqIGJ1dCB3ZSBjYW4ndCB1c2UgREVQRU5ERU5DWV9JTlRFUk5BTAor CSAqIGJlY2F1c2UgZHJvcHBpbmcgdGhlIHRhYmxlIHdpbGwgY2hlY2sgZm9yIGRlcGVuZGVu Y2llcyBvbiBhbGwgc3Vib2JqZWN0cyB0b28KKwkgKiAoaW4gZmluZERlcGVuZGVudE9iamVj dHMpLgorCSAqIEJ1dCBpZiB3ZSBtYWtlIGFuIEFVVE8gZGVwZW5kZW5jeSBvbmUgd2F5IHdl IHdpbGwgYXV0by1kcm9wIHRoZSBjb2x1bW4KKwkgKiB3aGVuIHdlIGRyb3AgdGhlIFBFUklP RCwKKwkgKiBhbmQgYSBOT1JNQUwgZGVwZW5kZW5jeSB0aGUgb3RoZXIgd2F5IHdlIHdpbGwg Zm9yYmlkIGRyb3BwaW5nIHRoZSBjb2x1bW4gZGlyZWN0bHkuCisJICovCisJT2JqZWN0QWRk cmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxhdGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0 UmVsaWQocmVsKSwgcmFuZ2VudW0pOworCXJlY29yZERlcGVuZGVuY3lPbigmcmVmZXJlbmNl ZCwgJm15c2VsZiwgREVQRU5ERU5DWV9BVVRPKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15 c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFMKTsKKworCS8qCisJICogVGhl IGNvbnN0cmFpbnQgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLCBzbyB3ZSBtYXJrIGl0 IGFzIHN1Y2guCisJICogKE5vdGUgdGhhdCBteXNlbGYgYW5kIHJlZmVyZW5jZWQgYXJlIHJl dmVyc2VkIGZvciB0aGlzIG9uZS4pCisJICovCisJT2JqZWN0QWRkcmVzc1NldChyZWZlcmVu Y2VkLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29ub2lkKTsKKwlyZWNvcmREZXBlbmRlbmN5 T24oJnJlZmVyZW5jZWQsICZteXNlbGYsIERFUEVOREVOQ1lfSU5URVJOQUwpOworCisJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBvaWQ7 Cit9CisKIC8qCiAgKiBTdG9yZSBhIGNoZWNrLWNvbnN0cmFpbnQgZXhwcmVzc2lvbiBmb3Ig dGhlIGdpdmVuIHJlbGF0aW9uLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3Jt YXRpb25fc2NoZW1hLnNxbAppbmRleCA3ZjdkZTkxY2MyLi4xYzYwNzAxZTM2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlvbl9zY2hlbWEuc3FsCkBAIC0xMjExLDcg KzEyMTEsMjggQEAgR1JBTlQgU0VMRUNUIE9OIHBhcmFtZXRlcnMgVE8gUFVCTElDOwogICog UEVSSU9EUyB2aWV3CiAgKi8KIAotLS0gZmVhdHVyZSBub3Qgc3VwcG9ydGVkCitDUkVBVEUg VklFVyBwZXJpb2RzIEFTCisgICAgU0VMRUNUIGN1cnJlbnRfZGF0YWJhc2UoKTo6aW5mb3Jt YXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX2NhdGFsb2csCisgICAgICAg ICAgIG5jLm5zcG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRlbnRpZmllciBBUyB0 YWJsZV9zY2hlbWEsCisgICAgICAgICAgIGMucmVsbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1h LnNxbF9pZGVudGlmaWVyIEFTIHRhYmxlX25hbWUsCisgICAgICAgICAgIHAucGVybmFtZTo6 aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHBlcmlvZF9uYW1lLAorICAg ICAgICAgICBDQVNFIFdIRU4gcGdfaGFzX3JvbGUoYy5yZWxvd25lciwgJ1VTQUdFJykKKyAg ICAgICAgICAgICAgICAgIE9SIGhhc19jb2x1bW5fcHJpdmlsZWdlKHNhLmF0dHJlbGlkLCBz YS5hdHRudW0sICdTRUxFQ1QsIElOU0VSVCwgVVBEQVRFLCBSRUZFUkVOQ0VTJykKKyAgICAg ICAgICAgICAgICBUSEVOIHNhLmF0dG5hbWU6OmluZm9ybWF0aW9uX3NjaGVtYS5zcWxfaWRl bnRpZmllcgorICAgICAgICAgICBFTkQgQVMgc3RhcnRfY29sdW1uX25hbWUsCisgICAgICAg ICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2UoZWEuYXR0cmVsaWQsIGVhLmF0 dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAg ICAgICAgIFRIRU4gZWEuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyCisgICAgICAgICAgIEVORCBBUyBlbmRfY29sdW1uX25hbWUKKyAgICBGUk9NIHBnX3Bl cmlvZCBBUyBwCisgICAgSk9JTiBwZ19jbGFzcyBBUyBjIE9OIGMub2lkID0gcC5wZXJyZWxp ZAorICAgIEpPSU4gcGdfbmFtZXNwYWNlIEFTIG5jIE9OIG5jLm9pZCA9IGMucmVsbmFtZXNw YWNlCisgICAgSk9JTiBwZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5h dHRudW0pID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpCisgICAgSk9JTiBwZ19hdHRyaWJ1 dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAucGVycmVsaWQsIHAu cGVyZW5kKQorICAgIFdIRVJFIE5PVCBwZ19pc19vdGhlcl90ZW1wX3NjaGVtYShuYy5vaWQp CisgICAgICBBTkQgYy5yZWxraW5kIElOICgncicsICd2Jyk7CisKK0dSQU5UIFNFTEVDVCBP TiBwZXJpb2RzIFRPIFBVQkxJQzsKIAogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQK aW5kZXggZmE2NjA5ZTU3Ny4uYzQ5OWNkMmY1ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL21lc29uLmJ1 aWxkCkBAIC0yNiw2ICsyNiw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ3Bn X25hbWVzcGFjZS5jJywKICAgJ3BnX29wZXJhdG9yLmMnLAogICAncGdfcGFyYW1ldGVyX2Fj bC5jJywKKyAgJ3BnX3BlcmlvZC5jJywKICAgJ3BnX3Byb2MuYycsCiAgICdwZ19wdWJsaWNh dGlvbi5jJywKICAgJ3BnX3JhbmdlLmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0 YWxvZy9vYmplY3RhZGRyZXNzLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL29iamVjdGFkZHJl c3MuYwppbmRleCA3MTUyMDFmNWEyLi5mNWY4OGQ1ZmRkIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL29iamVjdGFkZHJlc3MuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYwpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cv cGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGljYXRpb24u aCIKQEAgLTczNiw2ICs3MzcsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmplY3RfdHlw ZV9tYXAKIAl7CiAJCSJkb21haW4gY29uc3RyYWludCIsIE9CSkVDVF9ET01DT05TVFJBSU5U CiAJfSwKKwkvKiBPQ0xBU1NfUEVSSU9EICovCisJeworCQkicGVyaW9kIiwgT0JKRUNUX1BF UklPRAorCX0sCiAJLyogT0NMQVNTX0NPTlZFUlNJT04gKi8KIAl7CiAJCSJjb252ZXJzaW9u IiwgT0JKRUNUX0NPTlZFUlNJT04KQEAgLTEwMTQsNiArMTAxOSw3IEBAIGdldF9vYmplY3Rf YWRkcmVzcyhPYmplY3RUeXBlIG9ianR5cGUsIE5vZGUgKm9iamVjdCwKIAkJCWNhc2UgT0JK RUNUX1RSSUdHRVI6CiAJCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgogCQkJY2FzZSBP QkpFQ1RfUE9MSUNZOgorCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCWFkZHJlc3MgPSBn ZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2JqZWN0KG9ianR5cGUsIGNhc3ROb2RlKExpc3QsIG9i amVjdCksCiAJCQkJCQkJCQkJCQkJICAgJnJlbGF0aW9uLCBtaXNzaW5nX29rKTsKIAkJCQli cmVhazsKQEAgLTE1MTIsNiArMTUxOCwxMyBAQCBnZXRfb2JqZWN0X2FkZHJlc3NfcmVsb2Jq ZWN0KE9iamVjdFR5cGUgb2JqdHlwZSwgTGlzdCAqb2JqZWN0LAogCQkJCUludmFsaWRPaWQ7 CiAJCQlhZGRyZXNzLm9iamVjdFN1YklkID0gMDsKIAkJCWJyZWFrOworCQljYXNlIE9CSkVD VF9QRVJJT0Q6CisJCQlhZGRyZXNzLmNsYXNzSWQgPSBQZXJpb2RSZWxhdGlvbklkOworCQkJ YWRkcmVzcy5vYmplY3RJZCA9IHJlbGF0aW9uID8KKwkJCQlnZXRfcmVsYXRpb25fcGVyaW9k X29pZChyZWxvaWQsIGRlcG5hbWUsIG1pc3Npbmdfb2spIDoKKwkJCQlJbnZhbGlkT2lkOwor CQkJYWRkcmVzcy5vYmplY3RTdWJJZCA9IDA7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgb2JqZWN0IHR5cGU6ICVkIiwgKGludCkgb2Jq dHlwZSk7CiAJfQpAQCAtMjMyOSw2ICsyMzQyLDcgQEAgcGdfZ2V0X29iamVjdF9hZGRyZXNz KFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWNhc2UgT0JKRUNUX1JVTEU6CiAJCWNhc2UgT0JKRUNU X1RSSUdHRVI6CiAJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CisJCWNhc2UgT0JKRUNU X1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1J TFk6CiAJCQlvYmpub2RlID0gKE5vZGUgKikgbmFtZTsKQEAgLTI0MzksNiArMjQ1Myw3IEBA IGNoZWNrX29iamVjdF9vd25lcnNoaXAoT2lkIHJvbGVpZCwgT2JqZWN0VHlwZSBvYmp0eXBl LCBPYmplY3RBZGRyZXNzIGFkZHJlc3MsCiAJCWNhc2UgT0JKRUNUX1RSSUdHRVI6CiAJCWNh c2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2Fz ZSBPQkpFQ1RfUEVSSU9EOgogCQkJaWYgKCFvYmplY3Rfb3duZXJjaGVjayhSZWxhdGlvblJl bGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pLCByb2xlaWQpKQogCQkJCWFj bGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgb2JqdHlwZSwKIAkJCQkJCQkgICBS ZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbikpOwpAQCAtMzA4Nyw2ICszMTAyLDM4 IEBAIGdldE9iamVjdERlc2NyaXB0aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwg Ym9vbCBtaXNzaW5nX29rKQogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BF UklPRDoKKwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9k IHBlcjsKKworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJ CQkJCQkJIE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICgh SGVhcFR1cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsK KwkJCQlwZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJ aWYgKE9pZElzVmFsaWQocGVyLT5wZXJyZWxpZCkpCisJCQkJeworCQkJCQlTdHJpbmdJbmZv RGF0YSByZWw7CisKKwkJCQkJaW5pdFN0cmluZ0luZm8oJnJlbCk7CisJCQkJCWdldFJlbGF0 aW9uRGVzY3JpcHRpb24oJnJlbCwgcGVyLT5wZXJyZWxpZCwgZmFsc2UpOworCQkJCQlhcHBl bmRTdHJpbmdJbmZvKCZidWZmZXIsIF8oInBlcmlvZCAlcyBvbiAlcyIpLAorCQkJCQkJCQkJ IE5hbWVTdHIocGVyLT5wZXJuYW1lKSwgcmVsLmRhdGEpOworCQkJCQlwZnJlZShyZWwuZGF0 YSk7CisJCQkJfQorCQkJCWVsc2UKKwkJCQl7CisJCQkJCWFwcGVuZFN0cmluZ0luZm8oJmJ1 ZmZlciwgXygicGVyaW9kICVzIiksCisJCQkJCQkJCQkgTmFtZVN0cihwZXItPnBlcm5hbWUp KTsKKwkJCQl9CisKKwkJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwKTsKKwkJCQlicmVhazsK KwkJCX0KKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJewogCQkJCUhlYXBUdXBs ZQljb25UdXA7CkBAIC00NDUxLDYgKzQ0OTgsMTAgQEAgZ2V0T2JqZWN0VHlwZURlc2NyaXB0 aW9uKGNvbnN0IE9iamVjdEFkZHJlc3MgKm9iamVjdCwgYm9vbCBtaXNzaW5nX29rKQogCQkJ CQkJCQkJCSBtaXNzaW5nX29rKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklP RDoKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZmZlciwgInBlcmlvZCIpOworCQkJ YnJlYWs7CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCWFwcGVuZFN0cmluZ0lu Zm9TdHJpbmcoJmJ1ZmZlciwgImNvbnZlcnNpb24iKTsKIAkJCWJyZWFrOwpAQCAtNDk1OCw2 ICs1MDA5LDI4IEBAIGdldE9iamVjdElkZW50aXR5UGFydHMoY29uc3QgT2JqZWN0QWRkcmVz cyAqb2JqZWN0LAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCXsKKwkJCQlIZWFwVHVwbGUJcGVyVHVwOworCQkJCUZvcm1fcGdfcGVyaW9kIHBlcjsK KworCQkJCXBlclR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsCisJCQkJCQkJCQkJ IE9iamVjdElkR2V0RGF0dW0ob2JqZWN0LT5vYmplY3RJZCkpOworCQkJCWlmICghSGVhcFR1 cGxlSXNWYWxpZChwZXJUdXApKQorCQkJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZh aWxlZCBmb3IgcGVyaW9kICV1IiwKKwkJCQkJCSBvYmplY3QtPm9iamVjdElkKTsKKwkJCQlw ZXIgPSAoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVChwZXJUdXApOworCisJCQkJYXBwZW5k U3RyaW5nSW5mbygmYnVmZmVyLCAiJXMgb24gIiwKKwkJCQkJCQkJIHF1b3RlX2lkZW50aWZp ZXIoTmFtZVN0cihwZXItPnBlcm5hbWUpKSk7CisJCQkJZ2V0UmVsYXRpb25JZGVudGl0eSgm YnVmZmVyLCBwZXItPnBlcnJlbGlkLCBvYmpuYW1lLCBmYWxzZSk7CisJCQkJaWYgKG9iam5h bWUpCisJCQkJCSpvYmpuYW1lID0gbGFwcGVuZCgqb2JqbmFtZSwgcHN0cmR1cChOYW1lU3Ry KHBlci0+cGVybmFtZSkpKTsKKworCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXApOworCQkJ CWJyZWFrOworCQkJfQorCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQl7CiAJCQkJ SGVhcFR1cGxlCWNvblR1cDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdf cGVyaW9kLmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjQ2NWI1YjY3NWUKLS0tIC9kZXYvbnVsbAor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCkBAIC0wLDAgKzEsMTMyIEBA CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ19wZXJpb2QuYworICoJICByb3V0 aW5lcyB0byBzdXBwb3J0IG1hbmlwdWxhdGlvbiBvZiB0aGUgcGdfcGVyaW9kIHJlbGF0aW9u CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkgIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKKyAqCisgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nl c3MvZ2VuYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3MvaGVhcGFtLmgiCisjaW5jbHVkZSAiYWNj ZXNzL2h0dXBfZGV0YWlscy5oIgorI2luY2x1ZGUgImNhdGFsb2cvaW5kZXhpbmcuaCIKKyNp bmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRz LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvcmVs LmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKworCisvKgorICogRGVsZXRlIGEg c2luZ2xlIHBlcmlvZCByZWNvcmQuCisgKi8KK3ZvaWQKK1JlbW92ZVBlcmlvZEJ5SWQoT2lk IHBlcmlvZElkKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlIZWFwVHVwbGUJdHVwOwor CisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RSZWxhdGlvbklkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKworCXR1cCA9IFNlYXJjaFN5c0NhY2hlMShQRVJJT0RPSUQsIE9iamVjdElk R2V0RGF0dW0ocGVyaW9kSWQpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQodHVwKSkgLyog c2hvdWxkIG5vdCBoYXBwZW4gKi8KKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIHBlcmlvZCAldSIsIHBlcmlvZElkKTsKKworCS8qIEZyeSB0aGUgcGVyaW9kIGl0 c2VsZiAqLworCUNhdGFsb2dUdXBsZURlbGV0ZShwZ19wZXJpb2QsICZ0dXAtPnRfc2VsZik7 CisKKwkvKiBDbGVhbiB1cCAqLworCVJlbGVhc2VTeXNDYWNoZSh0dXApOworCXRhYmxlX2Ns b3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9CisKKy8qCisgKiBnZXRfcmVs YXRpb25fcGVyaW9kX29pZAorICoJCUZpbmQgYSBwZXJpb2Qgb24gdGhlIHNwZWNpZmllZCBy ZWxhdGlvbiB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4KKyAqCQlSZXR1cm5zIHBlcmlvZCdz IE9JRC4KKyAqLworT2lkCitnZXRfcmVsYXRpb25fcGVyaW9kX29pZChPaWQgcmVsaWQsIGNv bnN0IGNoYXIgKnBlcm5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19w ZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2Nhbktl eURhdGEgc2tleVsyXTsKKwlPaWQJCQlwZXJPaWQgPSBJbnZhbGlkT2lkOworCisJLyogRmV0 Y2ggdGhlIHBlcmlvZCB0dXBsZSBmcm9tIHBnX3BlcmlvZC4gKi8KKwlwZ19wZXJpb2QgPSB0 YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlTY2Fu S2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlC VEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShy ZWxpZCkpOworCVNjYW5LZXlJbml0KCZza2V5WzFdLAorCQkJCUFudW1fcGdfcGVyaW9kX3Bl cm5hbWUsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX05BTUVFUSwKKwkJCQlDU3Ry aW5nR2V0RGF0dW0ocGVybmFtZSkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2Nhbihw Z19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxM LCAyLCBza2V5KTsKKworCS8qIFRoZXJlIGNhbiBiZSBhdCBtb3N0IG9uZSBtYXRjaGluZyBy b3cgKi8KKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0dXBsZSA9IHN5c3RhYmxlX2dldG5leHQo c2NhbikpKQorCQlwZXJPaWQgPSAoKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHVwbGUp KS0+b2lkOworCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKworCS8qIElmIG5vIHN1Y2gg cGVyaW9kIGV4aXN0cywgY29tcGxhaW4gKi8KKwlpZiAoIU9pZElzVmFsaWQocGVyT2lkKSAm JiAhbWlzc2luZ19vaykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgZm9yIHRh YmxlIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJuYW1lLCBnZXRfcmVsX25h bWUocmVsaWQpKSkpOworCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxv Y2spOworCisJcmV0dXJuIHBlck9pZDsKK30KKworLyoKKyAqIGdldF9wZXJpb2RfYXR0bm9z CisgKgkJR2V0IHRoZSBhdHRubyBvZiB0aGUgR0VORVJBVEVEIHJhbmdldHlwZSBjb2x1bW4K KyAqCQlmb3IgYWxsIFBFUklPRHMgaW4gdGhpcyB0YWJsZS4KKyAqLworZXh0ZXJuIEJpdG1h cHNldAorKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCkKK3sKKwlCaXRtYXBzZXQgKmF0 dG5vcyA9IE5VTEw7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsK KwlTeXNTY2FuRGVzYyBzY2FuOworCVNjYW5LZXlEYXRhIHNrZXlbMV07CisKKwlwZ19wZXJp b2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlTY2FuS2V5SW5pdCgmc2tleVswXSwKKwkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwK KwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXRE YXR1bShyZWxpZCkpOworCisJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2Qs IFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJICBOVUxMLCAxLCBza2V5 KTsKKworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4 dChzY2FuKSkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2QgPSAoRm9ybV9wZ19wZXJp b2QpIEdFVFNUUlVDVCh0dXBsZSk7CisKKwkJYXR0bm9zID0gYm1zX2FkZF9tZW1iZXIoYXR0 bm9zLCBwZXJpb2QtPnBlcnJhbmdlKTsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4p OworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCXJldHVy biBhdHRub3M7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0 dXJlcy50eHQgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3NxbF9mZWF0dXJlcy50eHQKaW5kZXgg YjMzMDY1ZDdiZi4uNzc1MDkwYTZlYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9zcWxfZmVhdHVyZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1 cmVzLnR4dApAQCAtNDQ5LDcgKzQ0OSw3IEBAIFQxNzYJU2VxdWVuY2UgZ2VuZXJhdG9yIHN1 cHBvcnQJCQlOTwlzdXBwb3J0ZWQgZXhjZXB0IGZvciBORVhUIFZBTFVFIEZPUgogVDE3NwlT ZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9ydDogc2ltcGxlIHJlc3RhcnQgb3B0aW9uCQkJWUVT CQogVDE3OAlJZGVudGl0eSBjb2x1bW5zOiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJ CiBUMTgwCVN5c3RlbS12ZXJzaW9uZWQgdGFibGVzCQkJTk8JCi1UMTgxCUFwcGxpY2F0aW9u LXRpbWUgcGVyaW9kIHRhYmxlcwkJCU5PCQorVDE4MQlBcHBsaWNhdGlvbi10aW1lIHBlcmlv ZCB0YWJsZXMJCQlZRVMJCiBUMTkxCVJlZmVyZW50aWFsIGFjdGlvbiBSRVNUUklDVAkJCVlF UwkKIFQyMDAJVHJpZ2dlciBEREwJCQlOTwlzaW1pbGFyIGJ1dCBub3QgZnVsbHkgY29tcGF0 aWJsZQogVDIwMQlDb21wYXJhYmxlIGRhdGEgdHlwZXMgZm9yIHJlZmVyZW50aWFsIGNvbnN0 cmFpbnRzCQkJWUVTCQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIu YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKaW5kZXggZmY4ZDAwMzg3Ni4uMmVi ZTQ1ODY0OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCkBAIC02NjksNiArNjY5LDcgQEAgQWx0 ZXJPYmplY3ROYW1lc3BhY2Vfb2lkKE9pZCBjbGFzc0lkLCBPaWQgb2JqaWQsIE9pZCBuc3BP aWQsCiAKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoK KwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNl IE9DTEFTU19MQU5HVUFHRToKIAkJY2FzZSBPQ0xBU1NfTEFSR0VPQkpFQ1Q6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9jb21tZW50LmMKaW5kZXggMjZjNGQ1OTIwMi4uNDUyYWYxZDQxMyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29tbWVudC5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2NvbW1lbnQuYwpAQCAtMTAyLDYgKzEwMiwxNiBAQCBDb21tZW50T2JqZWN0KENv bW1lbnRTdG10ICpzdG10KQogCQkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxh dGlvbikpLAogCQkJCQkJIGVycmRldGFpbF9yZWxraW5kX25vdF9zdXBwb3J0ZWQocmVsYXRp b24tPnJkX3JlbC0+cmVsa2luZCkpKTsKIAkJCWJyZWFrOworCisJCWNhc2UgT0JKRUNUX1BF UklPRDoKKwkJCS8qIFBlcmlvZHMgY2FuIG9ubHkgZ28gb24gdGFibGVzICovCisJCQlpZiAo cmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBF KSwKKwkJCQkJCSBlcnJtc2coIlwiJXNcIiBpcyBub3QgYSB0YWJsZSIsCisJCQkJCQkJCVJl bGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSkpKTsKKwkJCWJyZWFrOworCiAJCWRl ZmF1bHQ6CiAJCQlicmVhazsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwppbmRleCA0 NjlhNmMyZWU5Li4xYjk3NTRlOTk4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9kcm9wY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ryb3BjbWRzLmMKQEAg LTUwOSw2ICs1MDksNyBAQCBkb2VzX25vdF9leGlzdF9za2lwcGluZyhPYmplY3RUeXBlIG9i anR5cGUsIE5vZGUgKm9iamVjdCkKIAkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlOVDoKIAkJ Y2FzZSBPQkpFQ1RfTEFSR0VPQkpFQ1Q6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9BQ0w6 CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFN RVNQQUNFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9SRUw6CiAJCWNhc2UgT0JKRUNU X1RBQkNPTlNUUkFJTlQ6CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVu dF90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9ldmVudF90cmlnZ2VyLmMKaW5k ZXggZDRiMDBkMWE4Mi4uMTllNmRmZDM3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXZlbnRfdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50 X3RyaWdnZXIuYwpAQCAtOTcwLDYgKzk3MCw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2Jq ZWN0VHlwZShPYmplY3RUeXBlIG9idHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoKIAkJ Y2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQljYXNl IE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1Rf UFJPQ0VEVVJFOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTjoKQEAgLTEwMjgsNiArMTAy OSw3IEBAIEV2ZW50VHJpZ2dlclN1cHBvcnRzT2JqZWN0Q2xhc3MoT2JqZWN0Q2xhc3Mgb2Jq Y2xhc3MpCiAJCWNhc2UgT0NMQVNTX0NBU1Q6CiAJCWNhc2UgT0NMQVNTX0NPTExBVElPTjoK IAkJY2FzZSBPQ0xBU1NfQ09OU1RSQUlOVDoKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgogCQlj YXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQljYXNl IE9DTEFTU19MQU5HVUFHRToKQEAgLTIwNjksNiArMjA3MSw3IEBAIHN0cmluZ2lmeV9ncmFu dF9vYmp0eXBlKE9iamVjdFR5cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BDTEFTUzoK IAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09QRkFNSUxZOgorCQlj YXNlIE9CSkVDVF9QRVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpF Q1RfUFVCTElDQVRJT046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToK QEAgLTIxNTMsNiArMjE1Niw3IEBAIHN0cmluZ2lmeV9hZGVmcHJpdnNfb2JqdHlwZShPYmpl Y3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgogCQljYXNlIE9CSkVD VF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJY2FzZSBPQkpF Q1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2UgT0JKRUNUX1BVQkxJ Q0FUSU9OOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc2VjbGFiZWwuYwppbmRleCA3ZmYxNmUzMjc2Li4zZGRjOTk1ODFhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZWNsYWJlbC5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3NlY2xhYmVsLmMKQEAgLTc5LDYgKzc5LDcgQEAgU2VjTGFiZWxTdXBwb3J0 c09iamVjdFR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUEVSQVRP UjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CiAJCWNhc2UgT0JKRUNUX1BBUkFNRVRFUl9B Q0w6CisJCWNhc2UgT0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQlj YXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BBQ0U6CiAJCWNhc2UgT0JKRUNUX1BVQkxJ Q0FUSU9OX1JFTDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggMjY0YWUyMTU5 Ni4uOWMzYjNmZGE4NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQzLDYg KzQzLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2JqZWN0LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xh c3MuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfc3RhdGlzdGljX2V4dC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdGFibGVzcGFj ZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHJpZ2dlci5oIgpAQCAtMTQ5LDEzICsxNTAs MTggQEAgc3RhdGljIExpc3QgKm9uX2NvbW1pdHMgPSBOSUw7CiAjZGVmaW5lIEFUX1BBU1Nf T0xEX0NPTlNUUgkJMwkvKiByZS1hZGQgZXhpc3RpbmcgY29uc3RyYWludHMgKi8KIC8qIFdl IGNvdWxkIHN1cHBvcnQgYSBSRU5BTUUgQ09MVU1OIHBhc3MgaGVyZSwgYnV0IG5vdCBjdXJy ZW50bHkgdXNlZCAqLwogI2RlZmluZSBBVF9QQVNTX0FERF9DT0wJCQk0CS8qIEFERCBDT0xV TU4gKi8KLSNkZWZpbmUgQVRfUEFTU19BRERfQ09OU1RSCQk1CS8qIEFERCBjb25zdHJhaW50 cyAoaW5pdGlhbCBleGFtaW5hdGlvbikgKi8KLSNkZWZpbmUgQVRfUEFTU19DT0xfQVRUUlMJ CTYJLyogc2V0IGNvbHVtbiBhdHRyaWJ1dGVzLCBlZyBOT1QgTlVMTCAqLwotI2RlZmluZSBB VF9QQVNTX0FERF9JTkRFWENPTlNUUgk3CS8qIEFERCBpbmRleC1iYXNlZCBjb25zdHJhaW50 cyAqLwotI2RlZmluZSBBVF9QQVNTX0FERF9JTkRFWAkJOAkvKiBBREQgaW5kZXhlcyAqLwot I2RlZmluZSBBVF9QQVNTX0FERF9PVEhFUkNPTlNUUgk5CS8qIEFERCBvdGhlciBjb25zdHJh aW50cywgZGVmYXVsdHMgKi8KLSNkZWZpbmUgQVRfUEFTU19NSVNDCQkJMTAJLyogb3RoZXIg c3R1ZmYgKi8KLSNkZWZpbmUgQVRfTlVNX1BBU1NFUwkJCTExCisvKgorICogV2UgbXVzdCBh ZGQgUEVSSU9EcyBhZnRlciBjb2x1bW5zLCBpbiBjYXNlIHRoZXkgcmVmZXJlbmNlIGEgbmV3 bHktYWRkZWQgY29sdW1uLAorICogYW5kIGJlZm9yZSBjb25zdHJhaW50cywgaW4gY2FzZSBh IG5ld2x5LWFkZGVkIFBLL0ZLIHJlZmVyZW5jZXMgdGhlbS4KKyAqLworI2RlZmluZSBBVF9Q QVNTX0FERF9QRVJJT0QJCTUJLyogQUREIFBFUklPRCAqLworI2RlZmluZSBBVF9QQVNTX0FE RF9DT05TVFIJCTYJLyogQUREIGNvbnN0cmFpbnRzIChpbml0aWFsIGV4YW1pbmF0aW9uKSAq LworI2RlZmluZSBBVF9QQVNTX0NPTF9BVFRSUwkJNwkvKiBzZXQgY29sdW1uIGF0dHJpYnV0 ZXMsIGVnIE5PVCBOVUxMICovCisjZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYQ09OU1RSCTgJ LyogQUREIGluZGV4LWJhc2VkIGNvbnN0cmFpbnRzICovCisjZGVmaW5lIEFUX1BBU1NfQURE X0lOREVYCQk5CS8qIEFERCBpbmRleGVzICovCisjZGVmaW5lIEFUX1BBU1NfQUREX09USEVS Q09OU1RSCTEwCS8qIEFERCBvdGhlciBjb25zdHJhaW50cywgZGVmYXVsdHMgKi8KKyNkZWZp bmUgQVRfUEFTU19NSVNDCQkJMTEJLyogb3RoZXIgc3R1ZmYgKi8KKyNkZWZpbmUgQVRfTlVN X1BBU1NFUwkJCTEyCiAKIHR5cGVkZWYgc3RydWN0IEFsdGVyZWRUYWJsZUluZm8KIHsKQEAg LTM1NCw2ICszNjAsNyBAQCBzdGF0aWMgdm9pZCBSYW5nZVZhckNhbGxiYWNrRm9yVHJ1bmNh dGUoY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogc3RhdGljIExpc3QgKk1lcmdlQXR0cmli dXRlcyhMaXN0ICpzY2hlbWEsIExpc3QgKnN1cGVycywgY2hhciByZWxwZXJzaXN0ZW5jZSwK IAkJCQkJCQkgYm9vbCBpc19wYXJ0aXRpb24sIExpc3QgKipzdXBjb25zdHIsCiAJCQkJCQkJ IExpc3QgKipzdXBub3RudWxscyk7CitzdGF0aWMgTGlzdCAqTWVyZ2VQZXJpb2RzKGNoYXIg KnJlbG5hbWUsIExpc3QgKnBlcmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJz KTsKIHN0YXRpYyBib29sIE1lcmdlQ2hlY2tDb25zdHJhaW50KExpc3QgKmNvbnN0cmFpbnRz LCBjaGFyICpuYW1lLCBOb2RlICpleHByKTsKIHN0YXRpYyB2b2lkIE1lcmdlQXR0cmlidXRl c0ludG9FeGlzdGluZyhSZWxhdGlvbiBjaGlsZF9yZWwsIFJlbGF0aW9uIHBhcmVudF9yZWwp Owogc3RhdGljIHZvaWQgTWVyZ2VDb25zdHJhaW50c0ludG9FeGlzdGluZyhSZWxhdGlvbiBj aGlsZF9yZWwsIFJlbGF0aW9uIHBhcmVudF9yZWwpOwpAQCAtNDM1LDYgKzQ0Miw4IEBAIHN0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsCiAJCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0 ICpjb250ZXh0KTsKIHN0YXRpYyBib29sIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9jb2xsaXNp b24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQkJCQlib29s IGlmX25vdF9leGlzdHMpOworc3RhdGljIGJvb2wgY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2Nv bGxpc2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCQkJ CWJvb2wgaWZfbm90X2V4aXN0cyk7CiBzdGF0aWMgdm9pZCBhZGRfY29sdW1uX2RhdGF0eXBl X2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBhdHRudW0sIE9pZCB0eXBpZCk7CiBzdGF0 aWMgdm9pZCBhZGRfY29sdW1uX2NvbGxhdGlvbl9kZXBlbmRlbmN5KE9pZCByZWxpZCwgaW50 MzIgYXR0bnVtLCBPaWQgY29sbGlkKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0Ry b3BOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwgYm9vbCByZWN1 cnNlLApAQCAtNDU0LDYgKzQ2MywxMiBAQCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWND b2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAkJCQkJ CQkJCQkgTm9kZSAqbmV3RGVmYXVsdCwgTE9DS01PREUgbG9ja21vZGUpOwogc3RhdGljIE9i amVjdEFkZHJlc3MgQVRFeGVjQ29va2VkQ29sdW1uRGVmYXVsdChSZWxhdGlvbiByZWwsIEF0 dHJOdW1iZXIgYXR0bnVtLAogCQkJCQkJCQkJCQkgICBOb2RlICpuZXdEZWZhdWx0KTsKK3N0 YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlv ZERlZiAqcGVyaW9kLAorCQkJCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CitzdGF0aWMgdm9pZCBBVEV4ZWNEcm9wUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqcGVyaW9kTmFtZSwKKwkJCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAor CQkJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkJCSBib29sIG1p c3Npbmdfb2spOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkSWRlbnRpdHkoUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQkJCQkJICAgTm9kZSAqZGVm LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNTZXRJ ZGVudGl0eShSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCkBAIC02NjIsNiAr Njc3LDEwIEBAIHN0YXRpYyBMaXN0ICpHZXRQYXJlbnRlZEZvcmVpZ25LZXlSZWZzKFJlbGF0 aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgdm9pZCBBVERldGFjaENoZWNrTm9Gb3JlaWduS2V5 UmVmcyhSZWxhdGlvbiBwYXJ0aXRpb24pOwogc3RhdGljIGNoYXIgR2V0QXR0cmlidXRlQ29t cHJlc3Npb24oT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpjb21wcmVzc2lvbik7CiBzdGF0 aWMgY2hhciBHZXRBdHRyaWJ1dGVTdG9yYWdlKE9pZCBhdHR0eXBpZCwgY29uc3QgY2hhciAq c3RvcmFnZW1vZGUpOworc3RhdGljIHZvaWQgQWRkUmVsYXRpb25OZXdQZXJpb2QoUmVsYXRp b24gcmVsLCBQZXJpb2REZWYgKnBlcmlvZCk7CitzdGF0aWMgdm9pZCBWYWxpZGF0ZVBlcmlv ZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kKTsKK3N0YXRpYyBDb25zdHJhaW50 ICptYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAq cGVyaW9kKTsKK3N0YXRpYyBDb2x1bW5EZWYgKm1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJp b2QoUGVyaW9kRGVmICpwZXJpb2QpOwogCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTg5MCw2ICs5 MDksMjYgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5k LCBPaWQgb3duZXJJZCwKIAkJCQkJCXN0bXQtPnBhcnRib3VuZCAhPSBOVUxMLAogCQkJCQkJ Jm9sZF9jb25zdHJhaW50cywgJm9sZF9ub3RudWxscyk7CiAKKwkvKgorCSAqIFVzaW5nIHRo ZSBjb2x1bW4gbGlzdCAoaW5jbHVkaW5nIGluaGVyaXRlZCBjb2x1bW5zKSwKKwkgKiBmaW5k IHRoZSBzdGFydC9lbmQgY29sdW1ucyBmb3IgZWFjaCBwZXJpb2QuCisJICogUEVSSU9EcyBz aG91bGQgYmUgaW5oZXJpdGVkIHRvbyAoYnV0IGFyZW4ndCB5ZXQpLgorCSAqLworCXN0bXQt PnBlcmlvZHMgPSBNZXJnZVBlcmlvZHMocmVsbmFtZSwgc3RtdC0+cGVyaW9kcywgc3RtdC0+ dGFibGVFbHRzLCBpbmhlcml0T2lkcyk7CisKKwkvKgorCSAqIEZvciBlYWNoIFBFUklPRCB3 ZSBuZWVkIHRvIGNyZWF0ZSBhIEdFTkVSQVRFRCBjb2x1bW4sCisJICogc28gYWRkIHRob3Nl IHRvIHRhYmxlRWx0cy4KKwkgKiBUaGVzZSBjb2x1bW5zIGFyZSBub3QgaW5oZXJpdGVkLAor CSAqIHNvIHdlIGRvbid0IHdvcnJ5IGFib3V0IGNvbmZsaWN0cyBpbiB0YWJsZUVsdHMuCisJ ICovCisJZm9yZWFjaChsaXN0cHRyLCBzdG10LT5wZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVm ICpwZXJpb2QgPSAoUGVyaW9kRGVmICopIGxmaXJzdChsaXN0cHRyKTsKKwkJQ29sdW1uRGVm ICpjb2wgPSBtYWtlX3JhbmdlX2NvbHVtbl9mb3JfcGVyaW9kKHBlcmlvZCk7CisJCXN0bXQt PnRhYmxlRWx0cyA9IGxhcHBlbmQoc3RtdC0+dGFibGVFbHRzLCBjb2wpOworCX0KKwogCS8q CiAJICogQ3JlYXRlIGEgdHVwbGUgZGVzY3JpcHRvciBmcm9tIHRoZSByZWxhdGlvbiBzY2hl bWEuICBOb3RlIHRoYXQgdGhpcwogCSAqIGRlYWxzIHdpdGggY29sdW1uIG5hbWVzLCB0eXBl cywgYW5kIGluLWRlc2NyaXB0b3IgTk9UIE5VTEwgZmxhZ3MsIGJ1dApAQCAtMTI4MSw2ICsx MzIwLDIxIEBAIERlZmluZVJlbGF0aW9uKENyZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2lu ZCwgT2lkIG93bmVySWQsCiAJZm9yZWFjaChsaXN0cHRyLCBubmNvbHMpCiAJCXNldF9hdHRu b3RudWxsKE5VTEwsIHJlbCwgbGZpcnN0X2ludChsaXN0cHRyKSwgZmFsc2UsIE5vTG9jayk7 CiAKKwkvKgorCSAqIENyZWF0ZSBwZXJpb2RzIGZvciB0aGUgdGFibGUuIFRoaXMgbXVzdCBj b21lIGFmdGVyIHdlIGNyZWF0ZSBjb2x1bW5zCisJICogYW5kIGJlZm9yZSB3ZSBjcmVhdGUg aW5kZXggY29uc3RyYWludHMuIEl0IHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUKKwkgKiBh IENIRUNLIGNvbnN0cmFpbnQgZm9yIHRoZSBwZXJpb2QuCisJICovCisJZm9yZWFjaChsaXN0 cHRyLCBzdG10LT5wZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpwZXJpb2QgPSAoUGVyaW9k RGVmICopIGxmaXJzdChsaXN0cHRyKTsKKworCQkvKiBEb24ndCB1cGRhdGUgdGhlIGNvdW50 IG9mIGNoZWNrIGNvbnN0cmFpbnRzIHR3aWNlICovCisJCUNvbW1hbmRDb3VudGVySW5jcmVt ZW50KCk7CisKKwkJQWRkUmVsYXRpb25OZXdQZXJpb2QocmVsLCBwZXJpb2QpOworCX0KKwog CU9iamVjdEFkZHJlc3NTZXQoYWRkcmVzcywgUmVsYXRpb25SZWxhdGlvbklkLCByZWxhdGlv bklkKTsKIAogCS8qCkBAIC0xMjkyLDYgKzEzNDYsMjY0IEBAIERlZmluZVJlbGF0aW9uKENy ZWF0ZVN0bXQgKnN0bXQsIGNoYXIgcmVsa2luZCwgT2lkIG93bmVySWQsCiAJcmV0dXJuIGFk ZHJlc3M7CiB9CiAKKy8qCisgKiBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZAorICoKKyAq IEJ1aWxkcyBhIENIRUNLIENvbnN0cmFpbnQgdG8gZW5zdXJlIHN0YXJ0IDwgZW5kLgorICog UmV0dXJucyB0aGUgQ0hFQ0sgQ29uc3RyYWludC4KKyAqIEFsc28gZmlsbHMgaW4gcGVyaW9k LT5jb25zdHJhaW50bmFtZSBpZiBuZWVkZWQuCisgKi8KK3N0YXRpYyBDb25zdHJhaW50ICoK K21ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpw ZXJpb2QpCit7CisJQ29sdW1uUmVmICAqc2NvbCwgKmVjb2w7CisJQ29uc3RyYWludCAqY29u c3RyOworCVR5cGVDYWNoZUVudHJ5ICp0eXBlOworCisJaWYgKHBlcmlvZC0+Y29uc3RyYWlu dG5hbWUgPT0gTlVMTCkKKwkJcGVyaW9kLT5jb25zdHJhaW50bmFtZSA9IENob29zZUNvbnN0 cmFpbnROYW1lKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCQkJCQkJ ICBwZXJpb2QtPnBlcmlvZG5hbWUsCisJCQkJCQkJCQkJCQkJICAiY2hlY2siLAorCQkJCQkJ CQkJCQkJCSAgUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKSwKKwkJCQkJCQkJCQkJCQkgIE5J TCk7CisJc2NvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJc2NvbC0+ZmllbGRzID0gbGlz dF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisJ c2NvbC0+bG9jYXRpb24gPSAwOworCisJZWNvbCA9IG1ha2VOb2RlKENvbHVtblJlZik7CisJ ZWNvbC0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9kLT5l bmRjb2xuYW1lKSkpOworCWVjb2wtPmxvY2F0aW9uID0gMDsKKworCXR5cGUgPSBsb29rdXBf dHlwZV9jYWNoZShwZXJpb2QtPmNvbHR5cGlkLCBUWVBFQ0FDSEVfTFRfT1BSKTsKKwlpZiAo dHlwZS0+bHRfb3ByID09IEludmFsaWRPaWQpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCSBlcnJtc2coImNv bHVtbiBcIiVzXCIgY2Fubm90IGJlIHVzZWQgaW4gYSBQRVJJT0QgYmVjYXVzZSBpdHMgdHlw ZSAlcyBoYXMgbm8gbGVzcyB0aGFuIG9wZXJhdG9yIiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRj b2xuYW1lLCBmb3JtYXRfdHlwZV9iZShwZXJpb2QtPmNvbHR5cGlkKSkpKTsKKworCWNvbnN0 ciA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCWNvbnN0ci0+Y29udHlwZSA9IENPTlNUUl9D SEVDSzsKKwljb25zdHItPmNvbm5hbWUgPSBwZXJpb2QtPmNvbnN0cmFpbnRuYW1lOworCWNv bnN0ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJY29uc3RyLT5sb2NhdGlvbiA9IC0xOworCWNvbnN0ci0+aXNfbm9faW5oZXJpdCA9 IGZhbHNlOworCWNvbnN0ci0+cmF3X2V4cHIgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHBy KEFFWFBSX09QLAorCQkJCQkJCQkJCQkJIGdldF9vcG5hbWUodHlwZS0+bHRfb3ByKSwKKwkJ CQkJCQkJCQkJCSAoTm9kZSAqKSBzY29sLAorCQkJCQkJCQkJCQkJIChOb2RlICopIGVjb2ws CisJCQkJCQkJCQkJCQkgMCk7CisJY29uc3RyLT5jb29rZWRfZXhwciA9IE5VTEw7CisJY29u c3RyLT5za2lwX3ZhbGlkYXRpb24gPSBmYWxzZTsKKwljb25zdHItPmluaXRpYWxseV92YWxp ZCA9IHRydWU7CisKKwlyZXR1cm4gY29uc3RyOworfQorCisvKgorICogbWFrZV9yYW5nZV9j b2x1bW5fZm9yX3BlcmlvZAorICoKKyAqIEJ1aWxkcyBhIEdFTkVSQVRFRCBBTFdBWVMgcmFu Z2UgY29sdW1uIGJhc2VkIG9uIHRoZSBQRVJJT0QKKyAqIHN0YXJ0L2VuZCBjb2x1bW5zLiBS ZXR1cm5zIHRoZSBDb2x1bW5EZWYuCisgKi8KK0NvbHVtbkRlZiAqCittYWtlX3JhbmdlX2Nv bHVtbl9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKQoreworCWNoYXIgKnJhbmdlX3R5 cGVfbmFtZXNwYWNlOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZTsKKwlDb2x1bW5EZWYgKmNv bCA9IG1ha2VOb2RlKENvbHVtbkRlZik7CisJQ29sdW1uUmVmICpzdGFydHZhciwgKmVuZHZh cjsKKwlFeHByICpyYW5nZUNvbnN0cnVjdG9yOworCisJaWYgKCFnZXRfdHlwbmFtZV9hbmRf bmFtZXNwYWNlKHBlcmlvZC0+cm5ndHlwaWQsICZyYW5nZV90eXBlX25hbWUsICZyYW5nZV90 eXBlX25hbWVzcGFjZSkpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIHJhbmdlIHR5cGUgJWQi LCBwZXJpb2QtPnJuZ3R5cGlkKTsKKworCXN0YXJ0dmFyID0gbWFrZU5vZGUoQ29sdW1uUmVm KTsKKwlzdGFydHZhci0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAo cGVyaW9kLT5zdGFydGNvbG5hbWUpKSk7CisJZW5kdmFyID0gbWFrZU5vZGUoQ29sdW1uUmVm KTsKKwllbmR2YXItPmZpZWxkcyA9IGxpc3RfbWFrZTEobWFrZVN0cmluZyhwc3RyZHVwKHBl cmlvZC0+ZW5kY29sbmFtZSkpKTsKKwlyYW5nZUNvbnN0cnVjdG9yID0gKEV4cHIgKikgbWFr ZUZ1bmNDYWxsKAorCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZXNw YWNlKSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCWxpc3RfbWFrZTIoc3Rh cnR2YXIsIGVuZHZhciksCisJCQlDT0VSQ0VfRVhQTElDSVRfQ0FMTCwKKwkJCXBlcmlvZC0+ bG9jYXRpb24pOworCisJY29sLT5jb2xuYW1lID0gcHN0cmR1cChwZXJpb2QtPnBlcmlvZG5h bWUpOworCWNvbC0+dHlwZU5hbWUgPSBtYWtlVHlwZU5hbWUocmFuZ2VfdHlwZV9uYW1lKTsK Kwljb2wtPmNvbXByZXNzaW9uID0gTlVMTDsKKwljb2wtPmluaGNvdW50ID0gMDsKKwljb2wt PmlzX2xvY2FsID0gdHJ1ZTsKKwljb2wtPmlzX25vdF9udWxsID0gdHJ1ZTsKKwljb2wtPmlz X2Zyb21fdHlwZSA9IGZhbHNlOworCWNvbC0+c3RvcmFnZSA9IDA7CisJY29sLT5zdG9yYWdl X25hbWUgPSBOVUxMOworCWNvbC0+cmF3X2RlZmF1bHQgPSAoTm9kZSAqKSByYW5nZUNvbnN0 cnVjdG9yOworCWNvbC0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCWNvbC0+aWRlbnRpdHkg PSAwOworCWNvbC0+Z2VuZXJhdGVkID0gQVRUUklCVVRFX0dFTkVSQVRFRF9TVE9SRUQ7CisJ Y29sLT5jb2xsQ2xhdXNlID0gTlVMTDsKKwljb2wtPmNvbGxPaWQgPSBJbnZhbGlkT2lkOwor CWNvbC0+ZmR3b3B0aW9ucyA9IE5JTDsKKwljb2wtPmxvY2F0aW9uID0gcGVyaW9kLT5sb2Nh dGlvbjsKKworCXJldHVybiBjb2w7Cit9CisKKy8qCisgKiBWYWxpZGF0ZVBlcmlvZAorICoK KyAqIExvb2sgdXAgdGhlIGF0dHJpYnV0ZXMgdXNlZCBieSB0aGUgUEVSSU9ELAorICogbWFr ZSBzdXJlIHRoZXkgZXhpc3QsIGFyZSBub3Qgc3lzdGVtIGNvbHVtbnMsCisgKiBhbmQgaGF2 ZSB0aGUgc2FtZSB0eXBlIGFuZCBjb2xsYXRpb24uCisgKgorICogWW91IG11c3QgaGF2ZSBh IFJvd0V4Y2x1c2l2ZUxvY2sgb24gcGdfYXR0cmlidXRlCisgKiBiZWZvcmUgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLgorICoKKyAqIEFkZCBvdXIgZmluZGluZ3MgdG8gdGhlc2UgUGVyaW9k RGVmIGZpZWxkczoKKyAqCisgKiBjb2x0eXBpZCAtIHRoZSB0eXBlIG9mIFBFUklPRCBjb2x1 bW5zLgorICogc3RhcnRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1bW4u CisgKiBlbmRhdHRudW0gLSB0aGUgYXR0bnVtIG9mIHRoZSBlbmQgY29sdW1uLgorICovCitz dGF0aWMgdm9pZAorVmFsaWRhdGVQZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBl cmlvZCkKK3sKKwlIZWFwVHVwbGUgc3RhcnR0dXBsZTsKKwlIZWFwVHVwbGUgZW5kdHVwbGU7 CisJRm9ybV9wZ19hdHRyaWJ1dGUJYXR0dHVwbGU7CisJT2lkCWF0dGNvbGxhdGlvbjsKKwor CS8qIEZpbmQgdGhlIHN0YXJ0IGNvbHVtbiAqLworCXN0YXJ0dHVwbGUgPSBTZWFyY2hTeXND YWNoZUNvcHlBdHROYW1lKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5zdGFydGNv bG5hbWUpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZChzdGFydHR1cGxlKSkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJ CSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4 aXN0IiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9u TmFtZShyZWwpKSkpOworCWF0dHR1cGxlID0gKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJV Q1Qoc3RhcnR0dXBsZSk7CisJcGVyaW9kLT5jb2x0eXBpZCA9IGF0dHR1cGxlLT5hdHR0eXBp ZDsKKwlhdHRjb2xsYXRpb24gPSBhdHR0dXBsZS0+YXR0Y29sbGF0aW9uOworCXBlcmlvZC0+ c3RhcnRhdHRudW0gPSBhdHR0dXBsZS0+YXR0bnVtOworCisJLyogTWFrZSBzdXJlIGl0J3Mg bm90IGEgc3lzdGVtIGNvbHVtbiAqLworCWlmIChwZXJpb2QtPnN0YXJ0YXR0bnVtIDw9IDAp CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVD VF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBjb2x1bW4g XCIlc1wiIGluIHBlcmlvZCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFtZSkpKTsKKwor CS8qIEZpbmQgdGhlIGVuZCBjb2x1bW4gKi8KKwllbmR0dXBsZSA9IFNlYXJjaFN5c0NhY2hl Q29weUF0dE5hbWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPmVuZGNvbG5hbWUp OworCWlmICghSGVhcFR1cGxlSXNWYWxpZChlbmR0dXBsZSkpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkgZXJybXNn KCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJ CQkJCQlwZXJpb2QtPmVuZGNvbG5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkp KSk7CisJYXR0dHVwbGUgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChlbmR0dXBs ZSk7CisJcGVyaW9kLT5lbmRhdHRudW0gPSBhdHR0dXBsZS0+YXR0bnVtOworCisJLyogTWFr ZSBzdXJlIGl0J3Mgbm90IGEgc3lzdGVtIGNvbHVtbiAqLworCWlmIChwZXJpb2QtPmVuZGF0 dG51bSA8PSAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5W QUxJRF9PQkpFQ1RfREVGSU5JVElPTiksCisJCQkJIGVycm1zZygiY2Fubm90IHVzZSBzeXN0 ZW0gY29sdW1uIFwiJXNcIiBpbiBwZXJpb2QiLAorCQkJCQkJcGVyaW9kLT5lbmRjb2xuYW1l KSkpOworCisJLyogQm90aCBjb2x1bW5zIG11c3QgYmUgb2Ygc2FtZSB0eXBlICovCisJaWYg KHBlcmlvZC0+Y29sdHlwaWQgIT0gYXR0dHVwbGUtPmF0dHR5cGlkKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCSBl cnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBvZiBzYW1l IHR5cGUiKSkpOworCisJLyogQm90aCBjb2x1bW5zIG11c3QgaGF2ZSB0aGUgc2FtZSBjb2xs YXRpb24gKi8KKwlpZiAoYXR0Y29sbGF0aW9uICE9IGF0dHR1cGxlLT5hdHRjb2xsYXRpb24p CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT0xMQVRJT05fTUlT TUFUQ0gpLAorCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2Qg bXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsKKworCWhlYXBfZnJlZXR1cGxlKHN0YXJ0 dHVwbGUpOworCWhlYXBfZnJlZXR1cGxlKGVuZHR1cGxlKTsKK30KKworLyoKKyAqIGNob29z ZV9yYW5nZXR5cGVfZm9yX3BlcmlvZAorICoKKyAqIEZpbmQgYSBzdWl0YWJsZSByYW5nZSB0 eXBlIGZvciBvcGVyYXRpb25zIGludm9sdmluZyB0aGlzIHBlcmlvZC4KKyAqIFVzZSB0aGUg cmFuZ2V0eXBlIG9wdGlvbiBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHRyeSB0byBmaW5kIGEK KyAqIG5vbi1hbWJpZ3VvdXMgZXhpc3RpbmcgdHlwZS4KKyAqLworLy8gVE9ETzogVGhpcyBj b3VsZCBiZSBzdGF0aWMgbm93CitPaWQKK2Nob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChQ ZXJpb2REZWYgKnBlcmlvZCkKK3sKKwlPaWQJcm5ndHlwaWQ7CisKKwlpZiAocGVyaW9kLT5y YW5nZXR5cGVuYW1lICE9IE5VTEwpCisJeworCQkvKiBNYWtlIHN1cmUgaXQgZXhpc3RzICov CisJCXJuZ3R5cGlkID0gVHlwZW5hbWVHZXRUeXBpZEV4dGVuZGVkKHBlcmlvZC0+cmFuZ2V0 eXBlbmFtZSwgZmFsc2UpOworCQlpZiAocm5ndHlwaWQgPT0gSW52YWxpZE9pZCkKKwkJCWVy ZXBvcnQoRVJST1IsIChlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJ CSBlcnJtc2coIlJhbmdlIHR5cGUgJXMgbm90IGZvdW5kIiwgcGVyaW9kLT5yYW5nZXR5cGVu YW1lKSkpOworCisJCS8qIE1ha2Ugc3VyZSBpdCBpcyBhIHJhbmdlIHR5cGUgKi8KKwkJaWYg KCF0eXBlX2lzX3JhbmdlKHJuZ3R5cGlkKSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShl cnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJUeXBl ICVzIGlzIG5vdCBhIHJhbmdlIHR5cGUiLCBwZXJpb2QtPnJhbmdldHlwZW5hbWUpKSk7CisK KwkJLyogTWFrZSBzdXJlIGl0IG1hdGNoZXMgdGhlIGNvbHVtbiB0eXBlICovCisJCWlmIChn ZXRfcmFuZ2Vfc3VidHlwZShybmd0eXBpZCkgIT0gcGVyaW9kLT5jb2x0eXBpZCkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkgZXJybXNnKCJSYW5nZSB0eXBlICVzIGRvZXMgbm90IG1hdGNoIGNvbHVtbiB0 eXBlICVzIiwKKwkJCQkJCSBwZXJpb2QtPnJhbmdldHlwZW5hbWUsCisJCQkJCQkgZm9ybWF0 X3R5cGVfYmUocGVyaW9kLT5jb2x0eXBpZCkpKSk7CisJfQorCWVsc2UKKwl7CisJCXJuZ3R5 cGlkID0gZ2V0X3N1YnR5cGVfcmFuZ2UocGVyaW9kLT5jb2x0eXBpZCk7CisJCWlmIChybmd0 eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygibm8gcmFuZ2UgdHlw ZSBmb3IgJXMgZm91bmQgZm9yIHBlcmlvZCAlcyIsCisJCQkJCQkJZm9ybWF0X3R5cGVfYmUo cGVyaW9kLT5jb2x0eXBpZCksCisJCQkJCQkJcGVyaW9kLT5wZXJpb2RuYW1lKSwKKwkJCQkJ IGVycmhpbnQoIllvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIHJhbmdlIHR5cGUgd2l0aCBDUkVB VEUgVFlQRSIpKSk7CisKKwl9CisKKwlyZXR1cm4gcm5ndHlwaWQ7Cit9CisKK3N0YXRpYyB2 b2lkCitBZGRSZWxhdGlvbk5ld1BlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVy aW9kKQoreworCVJlbGF0aW9uCWF0dHJlbGF0aW9uOworCU9pZAkJCWNvbm9pZDsKKwlDb25z dHJhaW50ICpjb25zdHI7CisJTGlzdAkgICAqbmV3Y29uc3RyczsKKworCWF0dHJlbGF0aW9u ID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsK KworCS8qIEZpbmQgdGhlIEdFTkVSQVRFRCByYW5nZSBjb2x1bW4gKi8KKworCXBlcmlvZC0+ cm5nYXR0bnVtID0gZ2V0X2F0dG51bShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+ cGVyaW9kbmFtZSk7CisJaWYgKHBlcmlvZC0+cm5nYXR0bnVtID09IEludmFsaWRBdHRyTnVt YmVyKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyBhdHRyaWJ1dGUgJXMiLCBwZXJpb2QtPnBl cmlvZG5hbWUpOworCisJLyogVGhlIHBhcnNlciBoYXMgYWxyZWFkeSBmb3VuZCBwZXJpb2Qt PmNvbHR5cGlkICovCisKKwljb25zdHIgPSBtYWtlX2NvbnN0cmFpbnRfZm9yX3BlcmlvZChy ZWwsIHBlcmlvZCk7CisJbmV3Y29uc3RycyA9IEFkZFJlbGF0aW9uTmV3Q29uc3RyYWludHMo cmVsLCBOSUwsIGxpc3RfbWFrZTEoY29uc3RyKSwgZmFsc2UsIHRydWUsIHRydWUsIE5VTEwp OworCWNvbm9pZCA9ICgoQ29va2VkQ29uc3RyYWludCAqKSBsaW5pdGlhbChuZXdjb25zdHJz KSktPmNvbm9pZDsKKworCS8qIFNhdmUgaXQgKi8KKwlTdG9yZVBlcmlvZChyZWwsIHBlcmlv ZC0+cGVyaW9kbmFtZSwgcGVyaW9kLT5zdGFydGF0dG51bSwgcGVyaW9kLT5lbmRhdHRudW0s IHBlcmlvZC0+cm5nYXR0bnVtLCBjb25vaWQpOworCisJdGFibGVfY2xvc2UoYXR0cmVsYXRp b24sIFJvd0V4Y2x1c2l2ZUxvY2spOworfQorCiAvKgogICogRW1pdCB0aGUgcmlnaHQgZXJy b3Igb3Igd2FybmluZyBtZXNzYWdlIGZvciBhICJEUk9QIiBjb21tYW5kIGlzc3VlZCBvbiBh CiAgKiBub24tZXhpc3RlbnQgcmVsYXRpb24KQEAgLTMyODEsNiArMzU5MywxNjggQEAgTWVy Z2VBdHRyaWJ1dGVzKExpc3QgKnNjaGVtYSwgTGlzdCAqc3VwZXJzLCBjaGFyIHJlbHBlcnNp c3RlbmNlLAogfQogCiAKKy8qLS0tLS0tLS0tLQorICogTWVyZ2VQZXJpb2RzCisgKgkJUmV0 dXJucyBuZXcgcGVyaW9kIGxpc3QgZ2l2ZW4gaW5pdGlhbCBwZXJpb2RzIGFuZCBzdXBlcmNs YXNzZXMuCisgKgorICogRm9yIG5vdyB3ZSBkb24ndCBzdXBwb3J0IGluaGVyaXRlbmNlIHdp dGggUEVSSU9EcywKKyAqIGJ1dCB3ZSBtaWdodCBtYWtlIGl0IHdvcmsgZXZlbnR1YWxseS4K KyAqCisgKiBXZSBjYW4gb21pdCBsb3RzIG9mIGNoZWNrcyBoZXJlIGFuZCBhc3N1bWUgTWVy Z2VBdHRyaWJ1dGVzIGFscmVhZHkgZGlkIHRoZW0sCisgKiBmb3IgZXhhbXBsZSB0aGF0IGNo aWxkICYgcGFyZW50cyBhcmUgbm90IGEgbWl4IG9mIHBlcm1hbmVudCBhbmQgdGVtcC4KKyAq Lworc3RhdGljIExpc3QgKgorTWVyZ2VQZXJpb2RzKGNoYXIgKnJlbG5hbWUsIExpc3QgKnBl cmlvZHMsIExpc3QgKnRhYmxlRWx0cywgTGlzdCAqc3VwZXJzKQoreworCUxpc3RDZWxsICAg KmVudHJ5OworCisJLyogSWYgd2UgaGF2ZSBhIFBFUklPRCB0aGVuIHN1cGVycyBtdXN0IGJl IGVtcHR5LiAqLworCisJaWYgKGxpc3RfbGVuZ3RoKHBlcmlvZHMpID4gMCAmJiBsaXN0X2xl bmd0aChzdXBlcnMpID4gMCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiSW5oZXJpdGluZyBp cyBub3Qgc3VwcG9ydGVkIHdoZW4gYSB0YWJsZSBoYXMgYSBQRVJJT0QiKSkpOworCisJLyog SWYgYW55IHBhcmVudCB0YWJsZSBoYXMgYSBQRVJJT0QsIHRoZW4gZmFpbC4gKi8KKworCWZv cmVhY2goZW50cnksIHN1cGVycykKKwl7CisJCU9pZAkJCXBhcmVudCA9IGxmaXJzdF9vaWQo ZW50cnkpOworCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJUmVsYXRpb24JcGdfcGVyaW9kOwor CQlTeXNTY2FuRGVzYyBzY2FuOworCQlTY2FuS2V5RGF0YSBza2V5WzFdOworCQlIZWFwVHVw bGUJdHVwbGU7CisKKwkJLyogY2FsbGVyIGFscmVhZHkgZ290IGxvY2sgKi8KKwkJcmVsYXRp b24gPSB0YWJsZV9vcGVuKHBhcmVudCwgTm9Mb2NrKTsKKwkJcGdfcGVyaW9kID0gdGFibGVf b3BlbihQZXJpb2RSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCVNjYW5LZXlJ bml0KCZza2V5WzBdLAorCQkJCQlBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCQkJQlRF cXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJCQlPYmplY3RJZEdldERhdHVtKHBh cmVudCkpOworCisJCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfcGVyaW9kLCBQZXJp b2RSZWxpZE5hbWVJbmRleElkLCB0cnVlLAorCQkJCQkJCQkgIE5VTEwsIDEsIHNrZXkpOwor CisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2Fu KSkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coIkluaGVyaXRpbmcgZnJvbSBhIHRhYmxl IHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZCIpKSk7CisKKwkJc3lzdGFibGVfZW5k c2NhbihzY2FuKTsKKwkJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxvY2sp OworCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9Mb2NrKTsKKwl9CisKKwkvKgorCSAqIEZp bmQgdGhlIHN0YXJ0ICYgZW5kIGNvbHVtbnMgYW5kIGdldCB0aGVpciBhdHRubyBhbmQgdHlw ZS4KKwkgKiBJbiB0aGUgc2FtZSBwYXNzLCBtYWtlIHN1cmUgdGhlIHBlcmlvZCBkb2Vzbid0 IGNvbmZsaWN0IHdpdGggYW55IGNvbHVtbiBuYW1lcy4KKwkgKiBBbHNvIG1ha2Ugc3VyZSB0 aGUgc2FtZSBwZXJpb2QgbmFtZSBpc24ndCB1c2VkIG1vcmUgdGhhbiBvbmNlLgorCSAqLwor CWZvcmVhY2ggKGVudHJ5LCBwZXJpb2RzKQorCXsKKwkJUGVyaW9kRGVmICpwZXJpb2QgPSBs Zmlyc3QoZW50cnkpOworCQlMaXN0Q2VsbCAqZW50cnkyOworCQlpbnQgaSA9IDE7CisJCU9p ZCBzdGFydGNvbHR5cGlkID0gSW52YWxpZE9pZDsKKwkJT2lkIGVuZGNvbHR5cGlkID0gSW52 YWxpZE9pZDsKKwkJT2lkCXN0YXJ0Y29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKwkJT2lk CWVuZGNvbGNvbGxhdGlvbiA9IEludmFsaWRPaWQ7CisKKwkJcGVyaW9kLT5zdGFydGF0dG51 bSA9IEludmFsaWRBdHRyTnVtYmVyOworCQlwZXJpb2QtPmVuZGF0dG51bSA9IEludmFsaWRB dHRyTnVtYmVyOworCisJCWlmIChTeXN0ZW1BdHRyaWJ1dGVCeU5hbWUocGVyaW9kLT5wZXJp b2RuYW1lKSAhPSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9EVVBMSUNBVEVfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIG5hbWUgXCIl c1wiIGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lIiwKKwkJCQkJCQlwZXJp b2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJZm9yZWFjaCAoZW50cnkyLCBwZXJpb2RzKQorCQl7 CisJCQlQZXJpb2REZWYgKnBlcmlvZDIgPSBsZmlyc3QoZW50cnkyKTsKKworCQkJaWYgKHBl cmlvZCAhPSBwZXJpb2QyICYmIHN0cmNtcChwZXJpb2QtPnBlcmlvZG5hbWUsIHBlcmlvZDIt PnBlcmlvZG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2Rl KEVSUkNPREVfRFVQTElDQVRFX09CSkVDVCksCisJCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFt ZSBcIiVzXCIgc3BlY2lmaWVkIG1vcmUgdGhhbiBvbmNlIiwKKwkJCQkJCQkJcGVyaW9kLT5w ZXJpb2RuYW1lKSkpOworCQl9CisKKwkJZm9yZWFjaCAoZW50cnkyLCB0YWJsZUVsdHMpCisJ CXsKKwkJCUNvbHVtbkRlZiAqY29sID0gbGZpcnN0KGVudHJ5Mik7CisJCQlpbnQzMglhdHR0 eXBtb2Q7CisJCQlBY2xSZXN1bHQgYWNscmVzdWx0OworCisJCQlpZiAoc3RyY21wKHBlcmlv ZC0+cGVyaW9kbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkJIGVy cm1zZygicGVyaW9kIG5hbWUgXCIlc1wiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUi LAorCQkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpKSk7CisKKwkJCWlmIChzdHJjbXAocGVy aW9kLT5zdGFydGNvbG5hbWUsIGNvbC0+Y29sbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZXJp b2QtPnN0YXJ0YXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEws IGNvbC0+dHlwZU5hbWUsICZzdGFydGNvbHR5cGlkLCAmYXR0dHlwbW9kKTsKKworCQkJCWFj bHJlc3VsdCA9IG9iamVjdF9hY2xjaGVjayhUeXBlUmVsYXRpb25JZCwgc3RhcnRjb2x0eXBp ZCwgR2V0VXNlcklkKCksIEFDTF9VU0FHRSk7CisJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xD SEVDS19PSykKKwkJCQkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIHN0YXJ0Y29s dHlwaWQpOworCisJCQkJc3RhcnRjb2xjb2xsYXRpb24gPSBHZXRDb2x1bW5EZWZDb2xsYXRp b24oTlVMTCwgY29sLCBzdGFydGNvbHR5cGlkKTsKKwkJCX0KKworCQkJaWYgKHN0cmNtcChw ZXJpb2QtPmVuZGNvbG5hbWUsIGNvbC0+Y29sbmFtZSkgPT0gMCkKKwkJCXsKKwkJCQlwZXJp b2QtPmVuZGF0dG51bSA9IGk7CisKKwkJCQl0eXBlbmFtZVR5cGVJZEFuZE1vZChOVUxMLCBj b2wtPnR5cGVOYW1lLCAmZW5kY29sdHlwaWQsICZhdHR0eXBtb2QpOworCisJCQkJYWNscmVz dWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBlbmRjb2x0eXBpZCwgR2V0 VXNlcklkKCksIEFDTF9VU0FHRSk7CisJCQkJaWYgKGFjbHJlc3VsdCAhPSBBQ0xDSEVDS19P SykKKwkJCQkJYWNsY2hlY2tfZXJyb3JfdHlwZShhY2xyZXN1bHQsIGVuZGNvbHR5cGlkKTsK KworCQkJCWVuZGNvbGNvbGxhdGlvbiA9IEdldENvbHVtbkRlZkNvbGxhdGlvbihOVUxMLCBj b2wsIGVuZGNvbHR5cGlkKTsKKwkJCX0KKworCQkJaSsrOworCQl9CisKKwkJLyogRGlkIHdl IGZpbmQgdGhlIGNvbHVtbnM/ICovCisJCWlmIChwZXJpb2QtPnN0YXJ0YXR0bnVtID09IElu dmFsaWRBdHRyTnVtYmVyKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJS Q09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBv ZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBlcmlvZC0+c3Rh cnRjb2xuYW1lLCByZWxuYW1lKSkpOworCQlpZiAocGVyaW9kLT5lbmRhdHRudW0gPT0gSW52 YWxpZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9m IHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9kLT5lbmRj b2xuYW1lLCByZWxuYW1lKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBtdXN0IGJlIG9mIHNh bWUgdHlwZSAqLworCQlpZiAoc3RhcnRjb2x0eXBpZCAhPSBlbmRjb2x0eXBpZCkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gp LAorCQkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3Qg YmUgb2Ygc2FtZSB0eXBlIikpKTsKKworCQkvKiBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIHRo ZSBzYW1lIGNvbGxhdGlvbiAqLworCQlpZiAoc3RhcnRjb2xjb2xsYXRpb24gIT0gZW5kY29s Y29sbGF0aW9uKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9D T0xMQVRJT05fTUlTTUFUQ0gpLAorCQkJCQkgZXJybXNnKCJzdGFydCBhbmQgZW5kIGNvbHVt bnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNvbGxhdGlvbiIpKSk7CisKKwkJcGVyaW9k LT5jb2x0eXBpZCA9IHN0YXJ0Y29sdHlwaWQ7CisJCXBlcmlvZC0+cm5ndHlwaWQgPSBjaG9v c2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QocGVyaW9kKTsKKwl9CisKKwlyZXR1cm4gcGVyaW9k czsKK30KKwogLyoKICAqIE1lcmdlQ2hlY2tDb25zdHJhaW50CiAgKgkJVHJ5IHRvIG1lcmdl IGFuIGluaGVyaXRlZCBDSEVDSyBjb25zdHJhaW50IHdpdGggcHJldmlvdXMgb25lcwpAQCAt NDMyNiwxMiArNDgwMCwxMiBAQCBBbHRlclRhYmxlKEFsdGVyVGFibGVTdG10ICpzdG10LCBM T0NLTU9ERSBsb2NrbW9kZSwKICAqIGV4aXN0aW5nIHF1ZXJ5IHBsYW5zLiAgT24gdGhlIGFz c3VtcHRpb24gaXQncyBub3QgdXNlZCBmb3Igc3VjaCwgd2UKICAqIGRvbid0IGhhdmUgdG8g cmVqZWN0IHBlbmRpbmcgQUZURVIgdHJpZ2dlcnMsIGVpdGhlci4KICAqCi0gKiBBbHNvLCBz aW5jZSB3ZSBkb24ndCBoYXZlIGFuIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCwgdGhpcyBj YW5ub3QgYmUKKyAqIEFsc28sIGlmIHlvdSBkb24ndCBwYXNzIGFuIEFsdGVyVGFibGVVdGls aXR5Q29udGV4dCwgdGhpcyBjYW5ub3QgYmUKICAqIHVzZWQgZm9yIGFueSBzdWJjb21tYW5k IHR5cGVzIHRoYXQgcmVxdWlyZSBwYXJzZSB0cmFuc2Zvcm1hdGlvbiBvcgogICogY291bGQg Z2VuZXJhdGUgc3ViY29tbWFuZHMgdGhhdCBoYXZlIHRvIGJlIHBhc3NlZCB0byBQcm9jZXNz VXRpbGl0eS4KICAqLwogdm9pZAotQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwgTGlz dCAqY21kcywgYm9vbCByZWN1cnNlKQorQWx0ZXJUYWJsZUludGVybmFsKE9pZCByZWxpZCwg TGlzdCAqY21kcywgYm9vbCByZWN1cnNlLCBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpCiB7CiAJUmVsYXRpb24JcmVsOwogCUxPQ0tNT0RFCWxvY2ttb2RlID0gQWx0ZXJU YWJsZUdldExvY2tMZXZlbChjbWRzKTsKQEAgLTQzNDAsNyArNDgxNCw3IEBAIEFsdGVyVGFi bGVJbnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSkKIAogCUV2 ZW50VHJpZ2dlckFsdGVyVGFibGVSZWxpZChyZWxpZCk7CiAKLQlBVENvbnRyb2xsZXIoTlVM TCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgTlVMTCk7CisJQVRDb250cm9sbGVy KE5VTEwsIHJlbCwgY21kcywgcmVjdXJzZSwgbG9ja21vZGUsIGNvbnRleHQpOwogfQogCiAv KgpAQCAtNDQzMyw2ICs0OTA3LDggQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpj bWRzKQogCQkJY2FzZSBBVF9FbmFibGVSZXBsaWNhUnVsZToJLyogbWF5IGNoYW5nZSBTRUxF Q1QgcnVsZXMgKi8KIAkJCWNhc2UgQVRfRW5hYmxlUnVsZTogLyogbWF5IGNoYW5nZSBTRUxF Q1QgcnVsZXMgKi8KIAkJCWNhc2UgQVRfRGlzYWJsZVJ1bGU6CS8qIG1heSBjaGFuZ2UgU0VM RUNUIHJ1bGVzICovCisJCQljYXNlIEFUX0FkZFBlcmlvZDogLyogc2hhcmVzIG5hbWVzcGFj ZSB3aXRoIGNvbHVtbnMsIGFkZHMgY29uc3RyYWludCAqLworCQkJY2FzZSBBVF9Ecm9wUGVy aW9kOgogCQkJCWNtZF9sb2NrbW9kZSA9IEFjY2Vzc0V4Y2x1c2l2ZUxvY2s7CiAJCQkJYnJl YWs7CiAKQEAgLTQ3NDgsNiArNTIyNCwxNCBAQCBBVFByZXBDbWQoTGlzdCAqKndxdWV1ZSwg UmVsYXRpb24gcmVsLCBBbHRlclRhYmxlQ21kICpjbWQsCiAJCQkvKiBUaGlzIGNvbW1hbmQg bmV2ZXIgcmVjdXJzZXMgKi8KIAkJCXBhc3MgPSBBVF9QQVNTX0FERF9PVEhFUkNPTlNUUjsK IAkJCWJyZWFrOworCQljYXNlIEFUX0FkZFBlcmlvZDogLyogQUxURVIgVEFCTEUgLi4uIEFE RCBQRVJJT0QgRk9SIG5hbWUgKHN0YXJ0LCBlbmQpICovCisJCQlBVFNpbXBsZVBlcm1pc3Np b25zKGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BBU1Nf QUREX1BFUklPRDsKKwkJCWJyZWFrOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6IC8qIEFMVEVS IFRBQkxFIC4uLiBEUk9QIFBFUklPRCBGT1IgbmFtZSAqLworCQkJQVRTaW1wbGVQZXJtaXNz aW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFKTsKKwkJCXBhc3MgPSBBVF9QQVNT X0RST1A7CisJCQlicmVhazsKIAkJY2FzZSBBVF9BZGRJZGVudGl0eToKIAkJCUFUU2ltcGxl UGVybWlzc2lvbnMoY21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSB8IEFUVF9WSUVXIHwg QVRUX0ZPUkVJR05fVEFCTEUpOwogCQkJLyogVGhpcyBjb21tYW5kIG5ldmVyIHJlY3Vyc2Vz ICovCkBAIC01MTQ1LDYgKzU2MjksMTQgQEAgQVRFeGVjQ21kKExpc3QgKip3cXVldWUsIEFs dGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJY2FzZSBBVF9Db29rZWRDb2x1bW5EZWZhdWx0Ogkv KiBhZGQgYSBwcmUtY29va2VkIGRlZmF1bHQgKi8KIAkJCWFkZHJlc3MgPSBBVEV4ZWNDb29r ZWRDb2x1bW5EZWZhdWx0KHJlbCwgY21kLT5udW0sIGNtZC0+ZGVmKTsKIAkJCWJyZWFrOwor CQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCWFkZHJlc3MgPSBBVEV4ZWNBZGRQZXJpb2QocmVs LCAoUGVyaW9kRGVmICopIGNtZC0+ZGVmLCBjb250ZXh0KTsKKwkJCWJyZWFrOworCQljYXNl IEFUX0Ryb3BQZXJpb2Q6CisJCQlBVEV4ZWNEcm9wUGVyaW9kKHJlbCwgY21kLT5uYW1lLCBj bWQtPmJlaGF2aW9yLAorCQkJCQkJCQkgZmFsc2UsIGZhbHNlLAorCQkJCQkJCQkgY21kLT5t aXNzaW5nX29rKTsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJY21k ID0gQVRQYXJzZVRyYW5zZm9ybUNtZCh3cXVldWUsIHRhYiwgcmVsLCBjbWQsIGZhbHNlLCBs b2NrbW9kZSwKIAkJCQkJCQkJCSAgY3VyX3Bhc3MsIGNvbnRleHQpOwpAQCAtNjI4OSw2ICs2 NzgxLDggQEAgYWx0ZXJfdGFibGVfdHlwZV90b19zdHJpbmcoQWx0ZXJUYWJsZVR5cGUgY21k dHlwZSkKIAkJY2FzZSBBVF9BZGRDb2x1bW46CiAJCWNhc2UgQVRfQWRkQ29sdW1uVG9WaWV3 OgogCQkJcmV0dXJuICJBREQgQ09MVU1OIjsKKwkJY2FzZSBBVF9BZGRQZXJpb2Q6CisJCQly ZXR1cm4gIkFERCBQRVJJT0QiOwogCQljYXNlIEFUX0NvbHVtbkRlZmF1bHQ6CiAJCWNhc2Ug QVRfQ29va2VkQ29sdW1uRGVmYXVsdDoKIAkJCXJldHVybiAiQUxURVIgQ09MVU1OIC4uLiBT RVQgREVGQVVMVCI7CkBAIC02MzEyLDYgKzY4MDYsOCBAQCBhbHRlcl90YWJsZV90eXBlX3Rv X3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQogCQkJcmV0dXJuICJBTFRFUiBDT0xV TU4gLi4uIFNFVCBDT01QUkVTU0lPTiI7CiAJCWNhc2UgQVRfRHJvcENvbHVtbjoKIAkJCXJl dHVybiAiRFJPUCBDT0xVTU4iOworCQljYXNlIEFUX0Ryb3BQZXJpb2Q6CisJCQlyZXR1cm4g IkRST1AgUEVSSU9EIjsKIAkJY2FzZSBBVF9BZGRJbmRleDoKIAkJY2FzZSBBVF9SZUFkZElu ZGV4OgogCQkJcmV0dXJuIE5VTEw7CQkvKiBub3QgcmVhbCBncmFtbWFyICovCkBAIC03MzE3 LDE0ICs3ODEzLDI5IEBAIEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIC8qCiAgKiBJZiBhIG5ldyBvciByZW5h bWVkIGNvbHVtbiB3aWxsIGNvbGxpZGUgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZwog ICogY29sdW1uIGFuZCBpZl9ub3RfZXhpc3RzIGlzIGZhbHNlIHRoZW4gZXJyb3Igb3V0LCBl bHNlIGRvIG5vdGhpbmcuCisgKgorICogU2VlIGFsc28gY2hlY2tfZm9yX3BlcmlvZF9uYW1l X2NvbGxpc2lvbi4KICAqLwogc3RhdGljIGJvb2wKIGNoZWNrX2Zvcl9jb2x1bW5fbmFtZV9j b2xsaXNpb24oUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xuYW1lLAogCQkJCQkJCQli b29sIGlmX25vdF9leGlzdHMpCiB7Ci0JSGVhcFR1cGxlCWF0dFR1cGxlOworCUhlYXBUdXBs ZQlhdHRUdXBsZSwgcGVyVHVwbGU7CiAJaW50CQkJYXR0bnVtOwogCisJLyogSWYgdGhlIG5h bWUgZXhpc3RzIGFzIGEgcGVyaW9kLCB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0gU2Vh cmNoU3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShS ZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShjb2xu YW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJUmVsZWFz ZVN5c0NhY2hlKHBlclR1cGxlKTsKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBuYW1lIFwi JXNcIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lIiwKKwkJCQkJCWNvbG5hbWUpKSk7 CisJfQorCiAJLyoKIAkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRpc2Ry b3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bwogCSAqIGFkZCBhIGNvbHVtbiBt YXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3YXku CkBAIC03MzY4LDYgKzc4NzksNzggQEAgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lv bihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJcmV0dXJuIHRydWU7CiB9 CiAKKy8qCisgKiBJZiBhIG5ldyBwZXJpb2QgbmFtZSB3aWxsIGNvbGxpZGUgd2l0aCB0aGUg bmFtZSBvZiBhbiBleGlzdGluZyBjb2x1bW4gb3IKKyAqIHBlcmlvZCBbYW5kIGlmX25vdF9l eGlzdHMgaXMgZmFsc2VdIHRoZW4gZXJyb3Igb3V0LCBlbHNlIGRvIG5vdGhpbmcuCisgKgor ICogU2VlIGFsc28gY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbi4KKyAqLworc3Rh dGljIGJvb2wKK2NoZWNrX2Zvcl9wZXJpb2RfbmFtZV9jb2xsaXNpb24oUmVsYXRpb24gcmVs LCBjb25zdCBjaGFyICpwZXJuYW1lLAorCQkJCQkJCQlib29sIGlmX25vdF9leGlzdHMpCit7 CisJSGVhcFR1cGxlCWF0dFR1cGxlLCBwZXJUdXBsZTsKKwlpbnQJCQlhdHRudW07CisKKwkv KiBUT0RPOiBpbXBsZW1lbnQgSUYgW05PVF0gRVhJU1RTIGZvciBwZXJpb2RzICovCisJQXNz ZXJ0KCFpZl9ub3RfZXhpc3RzKTsKKworCS8qIElmIHRoZXJlIGlzIGFscmVhZHkgYSBwZXJp b2Qgd2l0aCB0aGlzIG5hbWUsIHRoZW4gd2UncmUgZG9uZS4gKi8KKwlwZXJUdXBsZSA9IFNl YXJjaFN5c0NhY2hlMihQRVJJT0ROQU1FLAorCQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0o UmVsYXRpb25HZXRSZWxpZChyZWwpKSwKKwkJCQkJCQkgICBQb2ludGVyR2V0RGF0dW0ocGVy bmFtZSkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHBlclR1cGxlKSkKKwl7CisJCWlmIChp Zl9ub3RfZXhpc3RzKQorCQl7CisJCQlSZWxlYXNlU3lzQ2FjaGUocGVyVHVwbGUpOworCisJ CQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09M VU1OKSwKKwkJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIg YWxyZWFkeSBleGlzdHMsIHNraXBwaW5nIiwKKwkJCQkJCQlwZXJuYW1lLCBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisKKwkJZXJl cG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4pLAor CQkJCSBlcnJtc2coInBlcmlvZCBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGFscmVhZHkg ZXhpc3RzIiwKKwkJCQkJCXBlcm5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkp KSk7CisJfQorCisJLyoKKwkgKiB0aGlzIHRlc3QgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhdHRp c2Ryb3BwZWQtYXdhcmUsIHNpbmNlIGlmIG9uZSB0cmllcyB0bworCSAqIGFkZCBhIGNvbHVt biBtYXRjaGluZyBhIGRyb3BwZWQgY29sdW1uIG5hbWUsIGl0J3MgZ29ubmEgZmFpbCBhbnl3 YXkuCisJICoKKwkgKiBYWFg6IERvZXMgdGhpcyBob2xkIGZvciBwZXJpb2RzPworCSAqLwor CWF0dFR1cGxlID0gU2VhcmNoU3lzQ2FjaGUyKEFUVE5BTUUsCisJCQkJCQkJICAgT2JqZWN0 SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJH ZXREYXR1bShwZXJuYW1lKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQoYXR0VHVwbGUpKQor CXsKKwkJYXR0bnVtID0gKChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGF0dFR1cGxl KSktPmF0dG51bTsKKwkJUmVsZWFzZVN5c0NhY2hlKGF0dFR1cGxlKTsKKworCQkvKgorCQkg KiBXZSB0aHJvdyBhIGRpZmZlcmVudCBlcnJvciBtZXNzYWdlIGZvciBjb25mbGljdHMgd2l0 aCBzeXN0ZW0gY29sdW1uCisJCSAqIG5hbWVzLCBzaW5jZSB0aGV5IGFyZSBub3JtYWxseSBu b3Qgc2hvd24gYW5kIHRoZSB1c2VyIG1pZ2h0IG90aGVyd2lzZQorCQkgKiBiZSBjb25mdXNl ZCBhYm91dCB0aGUgcmVhc29uIGZvciB0aGUgY29uZmxpY3QuCisJCSAqLworCQlpZiAoYXR0 bnVtIDw9IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RV UExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29u ZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJCXBlcm5hbWUpKSk7 CisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EVVBMSUNBVEVfQ09M VU1OKSwKKwkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGgg YSBjb2x1bW4gbmFtZSIsCisJCQkJCQlwZXJuYW1lKSkpOworCX0KKworCXJldHVybiB0cnVl OworfQorCiAvKgogICogSW5zdGFsbCBhIGNvbHVtbidzIGRlcGVuZGVuY3kgb24gaXRzIGRh dGF0eXBlLgogICovCkBAIC04MDA4LDYgKzg1OTEsMTU1IEBAIEFURXhlY0Nvb2tlZENvbHVt bkRlZmF1bHQoUmVsYXRpb24gcmVsLCBBdHRyTnVtYmVyIGF0dG51bSwKIAlyZXR1cm4gYWRk cmVzczsKIH0KIAorLyoKKyAqIEFMVEVSIFRBQkxFIEFERCBQRVJJT0QKKyAqCisgKiBSZXR1 cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHBlcmlvZC4KKyAqLworc3RhdGljIE9iamVjdEFkZHJl c3MKK0FURXhlY0FkZFBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9kLCBB bHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpCit7CisJUmVsYXRpb24JCWF0dHJl bGF0aW9uOworCU9iamVjdEFkZHJlc3MJYWRkcmVzcyA9IEludmFsaWRPYmplY3RBZGRyZXNz OworCUNvbnN0cmFpbnQJICAgKmNvbnN0cjsKKwlDb2x1bW5EZWYJICAgKnJhbmdlY29sOwor CU9pZAkJCQljb25vaWQsIHBlcmlvZG9pZDsKKwlMaXN0CQkgICAqY21kcyA9IE5JTDsKKwlB bHRlclRhYmxlQ21kICAqY21kOworCisJLyoKKwkgKiBQRVJJT0QgRk9SIFNZU1RFTV9USU1F IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQsIGJ1dCBtYWtlIHN1cmUgbm8gb25lIHVzZXMKKwkg KiB0aGUgbmFtZS4KKwkgKi8KKwlpZiAoc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgInN5 c3RlbV90aW1lIikgPT0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVS UkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiUEVSSU9EIEZP UiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCS8qIFRoZSBwZXJpb2Qg bmFtZSBtdXN0IG5vdCBhbHJlYWR5IGV4aXN0ICovCisJKHZvaWQpIGNoZWNrX2Zvcl9wZXJp b2RfbmFtZV9jb2xsaXNpb24ocmVsLCBwZXJpb2QtPnBlcmlvZG5hbWUsIGZhbHNlKTsKKwor CS8qIFBhcnNlIG9wdGlvbnMgKi8KKwl0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKHBlcmlvZCk7 CisKKwlhdHRyZWxhdGlvbiA9IHRhYmxlX29wZW4oQXR0cmlidXRlUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisJVmFsaWRhdGVQZXJpb2QocmVsLCBwZXJpb2QpOworCisJcGVy aW9kLT5ybmd0eXBpZCA9IGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOwor CisJLyogTWFrZSB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNvbnN0ciA9IG1ha2VfY29u c3RyYWludF9mb3JfcGVyaW9kKHJlbCwgcGVyaW9kKTsKKwljbWQgPSBtYWtlTm9kZShBbHRl clRhYmxlQ21kKTsKKwljbWQtPnN1YnR5cGUgPSBBVF9BZGRDb25zdHJhaW50OworCWNtZC0+ ZGVmID0gKE5vZGUgKikgY29uc3RyOworCWNtZHMgPSBsYXBwZW5kKGNtZHMsIGNtZCk7CisJ QWx0ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgY21kcywgdHJ1ZSwg Y29udGV4dCk7CisJY29ub2lkID0gZ2V0X3JlbGF0aW9uX2NvbnN0cmFpbnRfb2lkKFJlbGF0 aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5jb25zdHJhaW50bmFtZSwgZmFsc2UpOworCisJ LyogTWFrZSB0aGUgcmFuZ2UgY29sdW1uICovCisJcmFuZ2Vjb2wgPSBtYWtlX3JhbmdlX2Nv bHVtbl9mb3JfcGVyaW9kKHBlcmlvZCk7CisJY21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNt ZCk7CisJY21kLT5zdWJ0eXBlID0gQVRfQWRkQ29sdW1uOworCWNtZC0+ZGVmID0gKE5vZGUg KikgcmFuZ2Vjb2w7CisJY21kLT5uYW1lID0gcGVyaW9kLT5wZXJpb2RuYW1lOworCWNtZC0+ cmVjdXJzZSA9IGZhbHNlOyAvKiBubywgbGV0IHRoZSBQRVJJT0QgcmVjdXJzZSBpbnN0ZWFk ICovCisJQWx0ZXJUYWJsZUludGVybmFsKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgbGlzdF9t YWtlMShjbWQpLCB0cnVlLCBjb250ZXh0KTsKKwlwZXJpb2QtPnJuZ2F0dG51bSA9IGdldF9h dHRudW0oUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCWlm IChwZXJpb2QtPnJuZ2F0dG51bSA9PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZWxvZyhFUlJP UiwgIm1pc3NpbmcgYXR0cmlidXRlICVzIiwgcGVyaW9kLT5wZXJpb2RuYW1lKTsKKworCS8q IFNhdmUgdGhlIFBlcmlvZCAqLworCXBlcmlvZG9pZCA9IFN0b3JlUGVyaW9kKHJlbCwgcGVy aW9kLT5wZXJpb2RuYW1lLCBwZXJpb2QtPnN0YXJ0YXR0bnVtLCBwZXJpb2QtPmVuZGF0dG51 bSwgcGVyaW9kLT5ybmdhdHRudW0sIGNvbm9pZCk7CisKKwlPYmplY3RBZGRyZXNzU2V0KGFk ZHJlc3MsIFBlcmlvZFJlbGF0aW9uSWQsIHBlcmlvZG9pZCk7CisKKwl0YWJsZV9jbG9zZShh dHRyZWxhdGlvbiwgUm93RXhjbHVzaXZlTG9jayk7CisKKwlyZXR1cm4gYWRkcmVzczsKK30K KworLyoKKyAqIEFMVEVSIFRBQkxFIERST1AgUEVSSU9ECisgKgorICogTGlrZSBEUk9QIENP TFVNTiwgd2UgY2FuJ3QgdXNlIHRoZSBub3JtYWwgQUxURVIgVEFCTEUgcmVjdXJzaW9uIG1l Y2hhbmlzbS4KKyAqLworc3RhdGljIHZvaWQKK0FURXhlY0Ryb3BQZXJpb2QoUmVsYXRpb24g cmVsLCBjb25zdCBjaGFyICpwZXJpb2ROYW1lLAorCQkJCQkgRHJvcEJlaGF2aW9yIGJlaGF2 aW9yLAorCQkJCQkgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKKwkJCQkJIGJvb2wg bWlzc2luZ19vaykKK3sKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJRm9ybV9wZ19wZXJpb2Qg cGVyaW9kOworCVN5c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEga2V5OworCUhlYXBU dXBsZQl0dXBsZTsKKwlib29sCQlmb3VuZCA9IGZhbHNlOworCisJLyogQXQgdG9wIGxldmVs LCBwZXJtaXNzaW9uIGNoZWNrIHdhcyBkb25lIGluIEFUUHJlcENtZCwgZWxzZSBkbyBpdCAq LworCWlmIChyZWN1cnNpbmcpCisJCUFUU2ltcGxlUGVybWlzc2lvbnMoQVRfRHJvcFBlcmlv ZCwgcmVsLCBBVFRfVEFCTEUpOworCisJcGdfcGVyaW9kID0gdGFibGVfb3BlbihQZXJpb2RS ZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogRmluZCBhbmQgZHJv cCB0aGUgdGFyZ2V0IHBlcmlvZAorCSAqLworCVNjYW5LZXlJbml0KCZrZXksCisJCQkJQW51 bV9wZ19wZXJpb2RfcGVycmVsaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09J REVRLAorCQkJCU9iamVjdElkR2V0RGF0dW0oUmVsYXRpb25HZXRSZWxpZChyZWwpKSk7CisJ c2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJlbGlkTmFtZUlu ZGV4SWQsCisJCQkJCQkJICB0cnVlLCBOVUxMLCAxLCAma2V5KTsKKworCXdoaWxlIChIZWFw VHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2FuKSkpCisJeworCQlP YmplY3RBZGRyZXNzIHBlcm9iajsKKworCQlwZXJpb2QgPSAoRm9ybV9wZ19wZXJpb2QpIEdF VFNUUlVDVCh0dXBsZSk7CisKKwkJaWYgKHN0cmNtcChOYW1lU3RyKHBlcmlvZC0+cGVybmFt ZSksIHBlcmlvZE5hbWUpICE9IDApCisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBQZXJm b3JtIHRoZSBhY3R1YWwgcGVyaW9kIGRlbGV0aW9uCisJCSAqLworCQlwZXJvYmouY2xhc3NJ ZCA9IFBlcmlvZFJlbGF0aW9uSWQ7CisJCXBlcm9iai5vYmplY3RJZCA9IHBlcmlvZC0+b2lk OworCQlwZXJvYmoub2JqZWN0U3ViSWQgPSAwOworCisJCXBlcmZvcm1EZWxldGlvbigmcGVy b2JqLCBiZWhhdmlvciwgMCk7CisKKwkJZm91bmQgPSB0cnVlOworCisJCS8qIHBlcmlvZCBm b3VuZCBhbmQgZHJvcHBlZCAtLSBubyBuZWVkIHRvIGtlZXAgbG9vcGluZyAqLworCQlicmVh azsKKwl9CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCisJaWYgKCFmb3VuZCkKKwl7 CisJCWlmICghbWlzc2luZ19vaykKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVycm1zZygicGVyaW9k IFwiJXNcIiBvbiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QiLAorCQkJCQkJCXBl cmlvZE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCX0KKwkJZWxz ZQorCQl7CisJCQllcmVwb3J0KE5PVElDRSwKKwkJCQkJKGVycm1zZygicGVyaW9kIFwiJXNc IiBvbiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3QsIHNraXBwaW5nIiwKKwkJCQkJ CQlwZXJpb2ROYW1lLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCQkJdGFi bGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwkJCXJldHVybjsKKwkJ fQorCX0KKworCXRhYmxlX2Nsb3NlKHBnX3BlcmlvZCwgUm93RXhjbHVzaXZlTG9jayk7Cit9 CisKIC8qCiAgKiBBTFRFUiBUQUJMRSBBTFRFUiBDT0xVTU4gQUREIElERU5USVRZCiAgKgpA QCAtMTM1MDQsNiArMTQyMzYsMTUgQEAgQVRFeGVjQWx0ZXJDb2x1bW5UeXBlKEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCVJlbWVtYmVyQ29uc3RyYWludEZv clJlYnVpbGRpbmcoZm91bmRPYmplY3Qub2JqZWN0SWQsIHRhYik7CiAJCQkJYnJlYWs7CiAK KwkJCWNhc2UgT0NMQVNTX1BFUklPRDoKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVy cmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkJIGVycm1zZygi Y2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4gdXNlZCBieSBhIHBlcmlvZCIpLAorCQkJ CQkJIGVycmRldGFpbCgiJXMgZGVwZW5kcyBvbiBjb2x1bW4gXCIlc1wiIiwKKwkJCQkJCQkJ ICAgZ2V0T2JqZWN0RGVzY3JpcHRpb24oJmZvdW5kT2JqZWN0LCBmYWxzZSksCisJCQkJCQkJ CSAgIGNvbE5hbWUpKSk7CisJCQkJYnJlYWs7CisKIAkJCWNhc2UgT0NMQVNTX1JFV1JJVEU6 CiAJCQkJLyogWFhYIHNvbWVkYXkgc2VlIGlmIHdlIGNhbiBjb3BlIHdpdGggcmV2aXNpbmcg dmlld3MgKi8KIAkJCQllcmVwb3J0KEVSUk9SLApAQCAtMTU1NjUsNyArMTYzMDYsNyBAQCBB bHRlclRhYmxlTW92ZUFsbChBbHRlclRhYmxlTW92ZUFsbFN0bXQgKnN0bXQpCiAKIAkJRXZl bnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0KChOb2RlICopIHN0bXQpOwogCQkvKiBPSUQgaXMg c2V0IGJ5IEFsdGVyVGFibGVJbnRlcm5hbCAqLwotCQlBbHRlclRhYmxlSW50ZXJuYWwobGZp cnN0X29pZChsKSwgY21kcywgZmFsc2UpOworCQlBbHRlclRhYmxlSW50ZXJuYWwobGZpcnN0 X29pZChsKSwgY21kcywgZmFsc2UsIE5VTEwpOwogCQlFdmVudFRyaWdnZXJBbHRlclRhYmxl RW5kKCk7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKaW5kZXggOWJkNzc1NDZiOS4uYmU0NjM3 Mjg3ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYwpAQCAtMTY5LDcgKzE2OSw3IEBAIERlZmluZVZp cnR1YWxSZWxhdGlvbihSYW5nZVZhciAqcmVsYXRpb24sIExpc3QgKnRsaXN0LCBib29sIHJl cGxhY2UsCiAJCQl9CiAKIAkJCS8qIEV2ZW50VHJpZ2dlckFsdGVyVGFibGVTdGFydCBjYWxs ZWQgYnkgUHJvY2Vzc1V0aWxpdHlTbG93ICovCi0JCQlBbHRlclRhYmxlSW50ZXJuYWwodmll d09pZCwgYXRjbWRzLCB0cnVlKTsKKwkJCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBh dGNtZHMsIHRydWUsIE5VTEwpOwogCiAJCQkvKiBNYWtlIHRoZSBuZXcgdmlldyBjb2x1bW5z IHZpc2libGUgKi8KIAkJCUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CkBAIC0yMDEsNyAr MjAxLDcgQEAgRGVmaW5lVmlydHVhbFJlbGF0aW9uKFJhbmdlVmFyICpyZWxhdGlvbiwgTGlz dCAqdGxpc3QsIGJvb2wgcmVwbGFjZSwKIAkJYXRjbWRzID0gbGlzdF9tYWtlMShhdGNtZCk7 CiAKIAkJLyogRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0IGNhbGxlZCBieSBQcm9jZXNz VXRpbGl0eVNsb3cgKi8KLQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywg dHJ1ZSk7CisJCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lkLCBhdGNtZHMsIHRydWUsIE5V TEwpOwogCiAJCS8qCiAJCSAqIFRoZXJlIGlzIHZlcnkgbGl0dGxlIHRvIGRvIGhlcmUgdG8g dXBkYXRlIHRoZSB2aWV3J3MgZGVwZW5kZW5jaWVzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpp bmRleCA2MmNjYmY5ZDNjLi5hMGMwNjlmYzVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3MuYwpA QCAtMTYzOSw2ICsxNjM5LDkgQEAgZXhwckxvY2F0aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJ CWNhc2UgVF9Db25zdHJhaW50OgogCQkJbG9jID0gKChjb25zdCBDb25zdHJhaW50ICopIGV4 cHIpLT5sb2NhdGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfUGVyaW9kRGVmOgorCQkJbG9j ID0gKChjb25zdCBQZXJpb2REZWYgKikgZXhwciktPmxvY2F0aW9uOworCQkJYnJlYWs7CiAJ CWNhc2UgVF9GdW5jdGlvblBhcmFtZXRlcjoKIAkJCS8qIGp1c3QgdXNlIHR5cGVuYW1lJ3Mg bG9jYXRpb24gKi8KIAkJCWxvYyA9IGV4cHJMb2NhdGlvbigoTm9kZSAqKSAoKGNvbnN0IEZ1 bmN0aW9uUGFyYW1ldGVyICopIGV4cHIpLT5hcmdUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4 IDVhNDliYTZmYTMuLjBlYjY3NTA5MjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNTk1LDcgKzU5 NSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxu YW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8a2V5d29yZD4gY29s X25hbWVfa2V5d29yZCByZXNlcnZlZF9rZXl3b3JkCiAldHlwZSA8a2V5d29yZD4gYmFyZV9s YWJlbF9rZXl3b3JkCiAKLSV0eXBlIDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtl Q2xhdXNlCisldHlwZSA8bm9kZT4JVGFibGVDb25zdHJhaW50IFRhYmxlTGlrZUNsYXVzZSBU YWJsZVBlcmlvZAogJXR5cGUgPGl2YWw+CVRhYmxlTGlrZU9wdGlvbkxpc3QgVGFibGVMaWtl T3B0aW9uCiAldHlwZSA8c3RyPgkJY29sdW1uX2NvbXByZXNzaW9uIG9wdF9jb2x1bW5fY29t cHJlc3Npb24gY29sdW1uX3N0b3JhZ2Ugb3B0X2NvbHVtbl9zdG9yYWdlCiAldHlwZSA8bGlz dD4JQ29sUXVhbExpc3QKQEAgLTI2MDEsNiArMjYwMSwyNCBAQCBhbHRlcl90YWJsZV9jbWQ6 CiAJCQkJCW4tPmRlZiA9IChOb2RlICopICQ0OwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJ CQkJfQorCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFERCBQRVJJT0QgRk9SIDxuYW1lPiAo PG5hbWU+LCA8bmFtZT4pICovCisJCQl8IEFERF9QIFRhYmxlUGVyaW9kCisJCQkJeworCQkJ CQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4t PnN1YnR5cGUgPSBBVF9BZGRQZXJpb2Q7CisJCQkJCW4tPmRlZiA9ICQyOworCQkJCQkkJCA9 IChOb2RlICopbjsKKwkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gRFJPUCBQRVJJ T0QgRk9SIDxuYW1lPiBbUkVTVFJJQ1R8Q0FTQ0FERV0gKi8KKwkJCXwgRFJPUCBQRVJJT0Qg Rk9SIG5hbWUgb3B0X2Ryb3BfYmVoYXZpb3IKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQg Km4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9IEFUX0Ry b3BQZXJpb2Q7CisJCQkJCW4tPm5hbWUgPSAkNDsKKwkJCQkJbi0+YmVoYXZpb3IgPSAkNTsK KwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJ CQl9CiAJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQUREIENPTlNUUkFJTlQgLi4uICovCiAJ CQl8IEFERF9QIFRhYmxlQ29uc3RyYWludAogCQkJCXsKQEAgLTM3MTIsOCArMzczMCwxMCBA QCBUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5EZWYJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8 IFRhYmxlTGlrZUNsYXVzZQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWlu dAkJCQkJeyAkJCA9ICQxOyB9CisJCQl8IFRhYmxlUGVyaW9kCQkJCQkJeyAkJCA9ICQxOyB9 CiAJCTsKIAorCiBUeXBlZFRhYmxlRWxlbWVudDoKIAkJCWNvbHVtbk9wdGlvbnMJCQkJCQl7 ICQkID0gJDE7IH0KIAkJCXwgVGFibGVDb25zdHJhaW50CQkJCQl7ICQkID0gJDE7IH0KQEAg LTQwNjUsNiArNDA4NSwxOSBAQCBUYWJsZUxpa2VPcHRpb246CiAJCTsKIAogCitUYWJsZVBl cmlvZDoKKwkJCVBFUklPRCBGT1IgbmFtZSAnKCcgbmFtZSAnLCcgbmFtZSAnKScgb3B0X2Rl ZmluaXRpb24KKwkJCQl7CisJCQkJCVBlcmlvZERlZiAqbiA9IG1ha2VOb2RlKFBlcmlvZERl Zik7CisJCQkJCW4tPnBlcmlvZG5hbWUgPSAkMzsKKwkJCQkJbi0+c3RhcnRjb2xuYW1lID0g JDU7CisJCQkJCW4tPmVuZGNvbG5hbWUgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ5Owor CQkJCQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQor CQk7CisKIC8qIENvbnN0cmFpbnRFbGVtIHNwZWNpZmllcyBjb25zdHJhaW50IHN5bnRheCB3 aGljaCBpcyBub3QgZW1iZWRkZWQgaW50bwogICoJYSBjb2x1bW4gZGVmaW5pdGlvbi4gQ29s Q29uc3RyYWludEVsZW0gc3BlY2lmaWVzIHRoZSBlbWJlZGRlZCBmb3JtLgogICogLSB0aG9t YXMgMTk5Ny0xMi0wMwpAQCAtNzA5Niw2ICs3MTI5LDE0IEBAIENvbW1lbnRTdG10OgogCQkJ CQluLT5jb21tZW50ID0gJDk7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CisJCQl8 IENPTU1FTlQgT04gUEVSSU9EIGFueV9uYW1lIElTIGNvbW1lbnRfdGV4dAorCQkJCXsKKwkJ CQkJQ29tbWVudFN0bXQgKm4gPSBtYWtlTm9kZShDb21tZW50U3RtdCk7CisJCQkJCW4tPm9i anR5cGUgPSBPQkpFQ1RfUEVSSU9EOworCQkJCQluLT5vYmplY3QgPSAoTm9kZSAqKSAkNDsK KwkJCQkJbi0+Y29tbWVudCA9ICQ2OworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQog CQkJfCBDT01NRU5UIE9OIExBUkdFX1AgT0JKRUNUX1AgTnVtZXJpY09ubHkgSVMgY29tbWVu dF90ZXh0CiAJCQkJewogCQkJCQlDb21tZW50U3RtdCAqbiA9IG1ha2VOb2RlKENvbW1lbnRT dG10KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9yZWxhdGlvbi5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKaW5kZXggODY0ZWE5YjBk NS4uZmJiYWRlNTE0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMKQEAg LTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJj YXRhbG9nL2hlYXAuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190eXBlLmgi CiAjaW5jbHVkZSAiZnVuY2FwaS5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgpA QCAtMzE4OSw2ICszMTkwLDcgQEAgZXhwYW5kTlNJdGVtQXR0cnMoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbSwKIAkJCQkgIGludCBzdWJsZXZlbHNf dXAsIGJvb2wgcmVxdWlyZV9jb2xfcHJpdnMsIGludCBsb2NhdGlvbikKIHsKIAlSYW5nZVRi bEVudHJ5ICpydGUgPSBuc2l0ZW0tPnBfcnRlOworCUJpdG1hcHNldCAgKnBlcmlvZGF0dHMg PSBOVUxMOwogCVJURVBlcm1pc3Npb25JbmZvICpwZXJtaW5mbyA9IG5zaXRlbS0+cF9wZXJt aW5mbzsKIAlMaXN0CSAgICpuYW1lcywKIAkJCSAgICp2YXJzOwpAQCAtMzIxMiwxMiArMzIx NCwyMCBAQCBleHBhbmROU0l0ZW1BdHRycyhQYXJzZVN0YXRlICpwc3RhdGUsIFBhcnNlTmFt ZXNwYWNlSXRlbSAqbnNpdGVtLAogCQlwZXJtaW5mby0+cmVxdWlyZWRQZXJtcyB8PSBBQ0xf U0VMRUNUOwogCX0KIAorCS8qIEdldCBQRVJJT0QgY29sdW1ucyB0byBleGNsdWRlICovCisJ aWYgKHJ0ZS0+cnRla2luZCA9PSBSVEVfUkVMQVRJT04pCisJCXBlcmlvZGF0dHMgPSBnZXRf cGVyaW9kX2F0dG5vcyhydGUtPnJlbGlkKTsKKwogCWZvcmJvdGgobmFtZSwgbmFtZXMsIHZh ciwgdmFycykKIAl7CiAJCWNoYXIJICAgKmxhYmVsID0gc3RyVmFsKGxmaXJzdChuYW1lKSk7 CiAJCVZhcgkJICAgKnZhcm5vZGUgPSAoVmFyICopIGxmaXJzdCh2YXIpOwogCQlUYXJnZXRF bnRyeSAqdGU7CiAKKwkJLyogSWYgdGhpcyBjb2x1bW4gaXMgZnJvbSBhIFBFUklPRCwgc2tp cCBpdCAqLworCQlpZiAoYm1zX2lzX21lbWJlcihwc3RhdGUtPnBfbmV4dF9yZXNubywgcGVy aW9kYXR0cykpCisJCQkJY29udGludWU7CisKIAkJdGUgPSBtYWtlVGFyZ2V0RW50cnkoKEV4 cHIgKikgdmFybm9kZSwKIAkJCQkJCQkgKEF0dHJOdW1iZXIpIHBzdGF0ZS0+cF9uZXh0X3Jl c25vKyssCiAJCQkJCQkJIGxhYmVsLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK aW5kZXggZTE5NTQxMGMyMy4uMDNkY2RiOGNmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb25z dHJhaW50LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19vcGVyYXRvci5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgpAQCAtODAs NiArODEsNyBAQCB0eXBlZGVmIHN0cnVjdAogCWJvb2wJCWlzZm9yZWlnbjsJCS8qIHRydWUg aWYgQ1JFQVRFL0FMVEVSIEZPUkVJR04gVEFCTEUgKi8KIAlib29sCQlpc2FsdGVyOwkJLyog dHJ1ZSBpZiBhbHRlcmluZyBleGlzdGluZyB0YWJsZSAqLwogCUxpc3QJICAgKmNvbHVtbnM7 CQkvKiBDb2x1bW5EZWYgaXRlbXMgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogUGVyaW9k RGVmIGl0ZW1zICovCiAJTGlzdAkgICAqY2tjb25zdHJhaW50czsJLyogQ0hFQ0sgY29uc3Ry YWludHMgKi8KIAlMaXN0CSAgICpubmNvbnN0cmFpbnRzOwkvKiBOT1QgTlVMTCBjb25zdHJh aW50cyAqLwogCUxpc3QJICAgKmZrY29uc3RyYWludHM7CS8qIEZPUkVJR04gS0VZIGNvbnN0 cmFpbnRzICovCkBAIC0xMTEsNiArMTEzLDggQEAgdHlwZWRlZiBzdHJ1Y3QKIAogc3RhdGlj IHZvaWQgdHJhbnNmb3JtQ29sdW1uRGVmaW5pdGlvbihDcmVhdGVTdG10Q29udGV4dCAqY3h0 LAogCQkJCQkJCQkJICBDb2x1bW5EZWYgKmNvbHVtbik7CitzdGF0aWMgdm9pZCB0cmFuc2Zv cm1UYWJsZVBlcmlvZChDcmVhdGVTdG10Q29udGV4dCAqY3h0LAorCQkJCQkJCQkgUGVyaW9k RGVmICpwZXJpb2QpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgQ29uc3RyYWludCAqY29uc3RyYWlu dCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENv bnRleHQgKmN4dCwKQEAgLTI0Miw2ICsyNDYsNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENy ZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCWN4dC5pbmhSZWxh dGlvbnMgPSBzdG10LT5pbmhSZWxhdGlvbnM7CiAJY3h0LmlzYWx0ZXIgPSBmYWxzZTsKIAlj eHQuY29sdW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJh aW50cyA9IE5JTDsKIAljeHQubm5jb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJh aW50cyA9IE5JTDsKQEAgLTI4Miw2ICsyODcsMTAgQEAgdHJhbnNmb3JtQ3JlYXRlU3RtdChD cmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJCQl0cmFuc2Zv cm1Db2x1bW5EZWZpbml0aW9uKCZjeHQsIChDb2x1bW5EZWYgKikgZWxlbWVudCk7CiAJCQkJ YnJlYWs7CiAKKwkJCWNhc2UgVF9QZXJpb2REZWY6CisJCQkJdHJhbnNmb3JtVGFibGVQZXJp b2QoJmN4dCwgKFBlcmlvZERlZiAqKSBlbGVtZW50KTsKKwkJCQlicmVhazsKKwogCQkJY2Fz ZSBUX0NvbnN0cmFpbnQ6CiAJCQkJdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KCZjeHQsIChD b25zdHJhaW50ICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwpAQCAtMzQ5LDYgKzM1OCw3IEBA IHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVl cnlTdHJpbmcpCiAJICogT3V0cHV0IHJlc3VsdHMuCiAJICovCiAJc3RtdC0+dGFibGVFbHRz ID0gY3h0LmNvbHVtbnM7CisJc3RtdC0+cGVyaW9kcyA9IGN4dC5wZXJpb2RzOwogCXN0bXQt PmNvbnN0cmFpbnRzID0gY3h0LmNrY29uc3RyYWludHM7CiAJc3RtdC0+bm5jb25zdHJhaW50 cyA9IGN4dC5ubmNvbnN0cmFpbnRzOwogCkBAIC05MTUsNiArOTI1LDExMyBAQCB0cmFuc2Zv cm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIENvbHVtbkRlZiAq Y29sdW1uKQogCX0KIH0KIAordm9pZAordHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhQZXJpb2RE ZWYgKnBlcmlvZCkKK3sKKwlMaXN0Q2VsbCAgICpvcHRpb247CisJRGVmRWxlbQkgICAqZGNv bnN0cmFpbnRuYW1lID0gTlVMTDsKKwlEZWZFbGVtCSAgICpkcmFuZ2V0eXBlbmFtZSA9IE5V TEw7CisKKwlmb3JlYWNoKG9wdGlvbiwgcGVyaW9kLT5vcHRpb25zKQorCXsKKwkJRGVmRWxl bSAgICAqZGVmZWwgPSAoRGVmRWxlbSAqKSBsZmlyc3Qob3B0aW9uKTsKKworCQlpZiAoc3Ry Y21wKGRlZmVsLT5kZWZuYW1lLCAiY2hlY2tfY29uc3RyYWludF9uYW1lIikgPT0gMCkKKwkJ eworCQkJaWYgKGRjb25zdHJhaW50bmFtZSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJIGVycm1zZygiY29uZmxp Y3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOworCQkJZGNvbnN0cmFpbnRuYW1lID0g ZGVmZWw7CisJCX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAicmFuZ2V0 eXBlIikgPT0gMCkKKwkJeworCQkJaWYgKGRyYW5nZXR5cGVuYW1lKQorCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkg ZXJybXNnKCJjb25mbGljdGluZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7CisJCQlkcmFu Z2V0eXBlbmFtZSA9IGRlZmVsOworCQl9CisJCWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygib3B0 aW9uIFwiJXNcIiBub3QgcmVjb2duaXplZCIsIGRlZmVsLT5kZWZuYW1lKSkpOworCX0KKwor CWlmIChkY29uc3RyYWludG5hbWUgIT0gTlVMTCkKKwkJcGVyaW9kLT5jb25zdHJhaW50bmFt ZSA9IGRlZkdldFN0cmluZyhkY29uc3RyYWludG5hbWUpOworCWVsc2UKKwkJcGVyaW9kLT5j b25zdHJhaW50bmFtZSA9IE5VTEw7CisKKwlpZiAoZHJhbmdldHlwZW5hbWUgIT0gTlVMTCkK KwkJcGVyaW9kLT5yYW5nZXR5cGVuYW1lID0gZGVmR2V0U3RyaW5nKGRyYW5nZXR5cGVuYW1l KTsKKwllbHNlCisJCXBlcmlvZC0+cmFuZ2V0eXBlbmFtZSA9IE5VTEw7Cit9CisKKy8qCisg KiB0cmFuc2Zvcm1UYWJsZVBlcmlvZAorICoJCXRyYW5zZm9ybSBhIFBlcmlvZERlZiBub2Rl IHdpdGhpbiBDUkVBVEUgVEFCTEUgb3IgQUxURVIgVEFCTEUKKyAqCQlUT0RPOiBEb2VzIEFM VEVSIFRBQkxFIHJlYWxseSBjYWxsIHVzPz8gSXQgZG9lc24ndCBzZWVtIGxpa2UgaXQgZG9l cy4gTWF5YmUgaXQgc2hvdWxkLiBEaWQgaXQgaW4gVmlrJ3Mgb3JpZ2luYWwgcGF0Y2g/Cisg Ki8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1UYWJsZVBlcmlvZChDcmVhdGVTdG10Q29udGV4 dCAqY3h0LCBQZXJpb2REZWYgKnBlcmlvZCkKK3sKKwkvLyBPaWQJCQljb2x0eXBpZDsKKwkv LyBDb2x1bW5EZWYgICpjb2w7CisJLy8gTGlzdENlbGwgICAqY29sdW1uczsKKworCWlmIChz dHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCAic3lzdGVtX3RpbWUiKSA9PSAwKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JU RUQpLAorCQkJCQkgZXJybXNnKCJQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlzIG5vdCBzdXBw b3J0ZWQiKSwKKwkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwKKwkJCQkJ CQkJCQlwZXJpb2QtPmxvY2F0aW9uKSkpOworCisJaWYgKHN0cmNtcChwZXJpb2QtPnN0YXJ0 Y29sbmFtZSwgcGVyaW9kLT5lbmRjb2xuYW1lKSA9PSAwKQorCQllcmVwb3J0KEVSUk9SLCAo ZXJybXNnKCJjb2x1bW4gXCIlc1wiIGNhbid0IGJlIHRoZSBzdGFydCBhbmQgZW5kIGNvbHVt biBmb3IgcGVyaW9kIFwiJXNcIiIsCisJCQkJCSAgICBwZXJpb2QtPnN0YXJ0Y29sbmFtZSwg cGVyaW9kLT5wZXJpb2RuYW1lKSkpOworCisJLyoKKwkgKiBEZXRlcm1pbmUgdGhlIGNvbHVt biBpbmZvIGFuZCByYW5nZSB0eXBlIHNvIHRoYXQgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50 cworCSAqIGtub3dzIGhvdyB0byBjcmVhdGUgUFJJTUFSWSBLRVkvVU5JUVVFIGNvbnN0cmFp bnRzIHVzaW5nIHRoaXMgUEVSSU9ELgorCSAqLworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMo cGVyaW9kKTsKKworCS8qCisJICogRmluZCBhIHN1aXRhYmxlIHJhbmdlIHR5cGUgZm9yIG9w ZXJhdGlvbnMgaW52b2x2aW5nIHRoaXMgcGVyaW9kLgorCSAqIFVzZSB0aGUgcmFuZ2V0eXBl IG9wdGlvbiBpZiBwcm92aWRlZCwgb3RoZXJ3aXNlIHRyeSB0byBmaW5kIGEKKwkgKiBub24t YW1iaWd1b3VzIGV4aXN0aW5nIHR5cGUuCisJICovCisKKyNpZmRlZiBhc2RzZGZhCisJLyog Rmlyc3QgZmluZCBvdXQgdGhlIHR5cGUgb2YgdGhlIHBlcmlvZCdzIGNvbHVtbnMgKi8KKwkv LyBUT0RPOiBJJ20gZG9pbmcgdGhpcyBpbiBEZWZpbmVSZWxhdGlvbiBub3csCisJLy8gd2hp Y2ggc2VlbXMgbGlrZSBhIGJldHRlciBwbGFjZSBzaW5jZSBpdCBrbm93cyBhYm91dCBpbmhl cml0ZWQgY29sdW1ucy4KKwlwZXJpb2QtPmNvbHR5cGlkID0gSW52YWxpZE9pZDsKKwlwZXJp b2QtPnJuZ3R5cGlkID0gSW52YWxpZE9pZDsKKwlmb3JlYWNoIChjb2x1bW5zLCBjeHQtPmNv bHVtbnMpCisJeworCQljb2wgPSAoQ29sdW1uRGVmICopIGxmaXJzdChjb2x1bW5zKTsKKwkJ aWYgKHN0cmNtcChjb2wtPmNvbG5hbWUsIHBlcmlvZC0+c3RhcnRjb2xuYW1lKSA9PSAwKQor CQl7CisJCQljb2x0eXBpZCA9IHR5cGVuYW1lVHlwZUlkKGN4dC0+cHN0YXRlLCBjb2wtPnR5 cGVOYW1lKTsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChjb2x0eXBpZCA9PSBJbnZhbGlk T2lkKQorCQllcmVwb3J0KEVSUk9SLCAoZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0 aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQlwZXJpb2QtPnN0YXJ0Y29sbmFt ZSwgY3h0LT5yZWxhdGlvbi0+cmVsbmFtZSkpKTsKKworCXBlcmlvZC0+Y29sdHlwaWQgPSBj b2x0eXBpZDsKKworCS8qIE5vdyBtYWtlIHN1cmUgaXQgbWF0Y2hlcyByYW5nZXR5cGVuYW1l IG9yIHdlIGNhbiBmaW5kIGEgbWF0Y2hpbmcgcmFuZ2UgKi8KKwlwZXJpb2QtPnJuZ3R5cGlk ID0gY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKHBlcmlvZCk7CisjZW5kaWYKKworCWN4 dC0+cGVyaW9kcyA9IGxhcHBlbmQoY3h0LT5wZXJpb2RzLCBwZXJpb2QpOworfQorCiAvKgog ICogdHJhbnNmb3JtVGFibGVDb25zdHJhaW50CiAgKgkJdHJhbnNmb3JtIGEgQ29uc3RyYWlu dCBub2RlIHdpdGhpbiBDUkVBVEUgVEFCTEUgb3IgQUxURVIgVEFCTEUKQEAgLTEwMDUsNiAr MTEyMiw3IEBAIHRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhCiAJQXR0ck51bWJlcglwYXJl bnRfYXR0bm87CiAJUmVsYXRpb24JcmVsYXRpb247CiAJVHVwbGVEZXNjCXR1cGxlRGVzYzsK KwlCaXRtYXBzZXQgICpwZXJpb2RhdHRzOwogCUFjbFJlc3VsdAlhY2xyZXN1bHQ7CiAJY2hh cgkgICAqY29tbWVudDsKIAlQYXJzZUNhbGxiYWNrU3RhdGUgcGNic3RhdGU7CkBAIC0xMDU3 LDYgKzExNzUsNyBAQCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRl eHQgKmN4dCwgVGFibGVMaWtlQ2xhdXNlICp0YWJsZV9saWtlX2NsYQogCX0KIAogCXR1cGxl RGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsYXRpb24pOworCXBlcmlvZGF0dHMgPSBnZXRf cGVyaW9kX2F0dG5vcyhSZWxhdGlvbkdldFJlbGlkKHJlbGF0aW9uKSk7CiAKIAkvKgogCSAq IEluc2VydCB0aGUgY29waWVkIGF0dHJpYnV0ZXMgaW50byB0aGUgY3h0IGZvciB0aGUgbmV3 IHRhYmxlIGRlZmluaXRpb24uCkBAIC0xMDY2LDEwICsxMTg1LDE4IEBAIHRyYW5zZm9ybVRh YmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBUYWJsZUxpa2VDbGF1c2Ug KnRhYmxlX2xpa2VfY2xhCiAJZm9yIChwYXJlbnRfYXR0bm8gPSAxOyBwYXJlbnRfYXR0bm8g PD0gdHVwbGVEZXNjLT5uYXR0czsKIAkJIHBhcmVudF9hdHRubysrKQogCXsKLQkJRm9ybV9w Z19hdHRyaWJ1dGUgYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0cih0dXBsZURlc2MsCi0JCQkJ CQkJCQkJCQkJcGFyZW50X2F0dG5vIC0gMSk7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHJp YnV0ZTsKIAkJQ29sdW1uRGVmICAqZGVmOwogCisJCS8qCisJCSAqIElmIHRoaXMgY29sdW1u IGlzIGZyb20gYSBQRVJJT0QsIHNraXAgaXQKKwkJICogKHNpbmNlIExJS0UgbmV2ZXIgY29w aWVzIFBFUklPRHMpLgorCQkgKi8KKwkJaWYgKGJtc19pc19tZW1iZXIocGFyZW50X2F0dG5v LCBwZXJpb2RhdHRzKSkKKwkJCWNvbnRpbnVlOworCisJCWF0dHJpYnV0ZSA9IFR1cGxlRGVz Y0F0dHIodHVwbGVEZXNjLCBwYXJlbnRfYXR0bm8gLSAxKTsKKwogCQkvKgogCQkgKiBJZ25v cmUgZHJvcHBlZCBjb2x1bW5zIGluIHRoZSBwYXJlbnQuCiAJCSAqLwpAQCAtMzExMyw2ICsz MjQwLDEwIEBAIHRyYW5zZm9ybUluZGV4U3RtdChPaWQgcmVsaWQsIEluZGV4U3RtdCAqc3Rt dCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAJCX0KIAl9CiAKKwkvKiB0YWtlIGNhcmUg b2YgdGhlIHBlcmlvZCAqLworCWlmIChzdG10LT5wZXJpb2QpCisJCXN0bXQtPnBlcmlvZC0+ b2lkID0gZ2V0X3BlcmlvZF9vaWQocmVsaWQsIHN0bXQtPnBlcmlvZC0+cGVyaW9kbmFtZSwg ZmFsc2UpOworCiAJLyoKIAkgKiBDaGVjayB0aGF0IG9ubHkgdGhlIGJhc2UgcmVsIGlzIG1l bnRpb25lZC4gIChUaGlzIHNob3VsZCBiZSBkZWFkIGNvZGUKIAkgKiBub3cgdGhhdCBhZGRf bWlzc2luZ19mcm9tIGlzIGhpc3RvcnkuKQpAQCAtMzU3MCw2ICszNzAxLDcgQEAgdHJhbnNm b3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAlj eHQuaW5oUmVsYXRpb25zID0gTklMOwogCWN4dC5pc2FsdGVyID0gdHJ1ZTsKIAljeHQuY29s dW1ucyA9IE5JTDsKKwljeHQucGVyaW9kcyA9IE5JTDsKIAljeHQuY2tjb25zdHJhaW50cyA9 IE5JTDsKIAljeHQubm5jb25zdHJhaW50cyA9IE5JTDsKIAljeHQuZmtjb25zdHJhaW50cyA9 IE5JTDsKQEAgLTM2MzIsNiArMzc2NCwxNSBAQCB0cmFuc2Zvcm1BbHRlclRhYmxlU3RtdChP aWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCQkJCQkJIChpbnQpIG5vZGVUYWco Y21kLT5kZWYpKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBBVF9BZGRQZXJpb2Q6CisJCQkJ eworCQkJCQluZXdjbWRzID0gbGFwcGVuZChuZXdjbWRzLCBjbWQpOworCQkJCQkvLyBXaHkg bm90IGNhbGwgdHJhbnNmb3JtVGFibGVQZXJpb2QgaGVyZT8KKwkJCQkJLy8gQWggYmVjYXVz ZSBpdCBsb29rcyBhdCBjeHQtPmNvbHVtbnMKKwkJCQkJLy8gYW5kIGluIGFuIEFMVEVSIHN0 YXRlbWVudCB0aGUgY29sdW1ucyBtaWdodCBhbHJlYWR5IGV4aXN0IChvciBub3QpLgorCQkJ CQlicmVhazsKKwkJCQl9CisKIAkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5UeXBlOgogCQkJCXsK IAkJCQkJQ29sdW1uRGVmICAqZGVmID0gY2FzdE5vZGUoQ29sdW1uRGVmLCBjbWQtPmRlZik7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCmluZGV4IDM5MTc2MmYzMDguLjRj Mjk2NWMxNTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNo ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0zMCw2 ICszMCw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19uYW1lc3BhY2UuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9y LmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3JhbmdlLmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19zdGF0aXN0aWMuaCIKQEAgLTEwMjEsNiArMTAyMiw2OCBAQCBnZXRfYXR0 b3B0aW9ucyhPaWQgcmVsaWQsIGludDE2IGF0dG51bSkKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgkJCQktLS0tLS0tLS0tIFBHX1BFUklPRCBDQUNIRSAtLS0tLS0tLS0tCQkJCSAqLwor CisvKgorICogZ2V0X3BlcmlvZG5hbWUgLSBnaXZlbiBpdHMgT0lELCBsb29rIHVwIGEgcGVy aW9kCisgKgorICogSWYgbWlzc2luZ19vayBpcyBmYWxzZSwgdGhyb3cgYW4gZXJyb3IgaWYg dGhlIHBlcmlvZCBpcyBub3QgZm91bmQuCisgKiBJZiB0cnVlLCBqdXN0IHJldHVybiBJbnZh bGlkT2lkLgorICovCitjaGFyICoKK2dldF9wZXJpb2RuYW1lKE9pZCBwZXJpb2RpZCwgYm9v bCBtaXNzaW5nX29rKQoreworCUhlYXBUdXBsZQl0cDsKKworCXRwID0gU2VhcmNoU3lzQ2Fj aGUxKFBFUklPRE9JRCwKKwkJCQkJCSBPYmplY3RJZEdldERhdHVtKHBlcmlvZGlkKSk7CisJ aWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ19wZXJpb2QgcGVyaW9k X3R1cCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHRwKTsKKwkJY2hhcgkgICAqcmVz dWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFtZVN0cihwZXJpb2RfdHVwLT5wZXJuYW1l KSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJ aWYgKCFtaXNzaW5nX29rKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgcGVyaW9kICVkIiwKKwkJCSBwZXJpb2RpZCk7CisJcmV0dXJuIE5VTEw7Cit9CisKKy8q CisgKiBnZXRfcGVyaW9kX29pZCAtIGdldHMgaXRzIHJlbGF0aW9uIGFuZCBuYW1lLCBsb29r IHVwIGEgcGVyaW9kCisgKgorICogSWYgbWlzc2luZ19vayBpcyBmYWxzZSwgdGhyb3cgYW4g ZXJyb3IgaWYgdGhlIGNhc3QgaXMgbm90IGZvdW5kLiAgSWYKKyAqIHRydWUsIGp1c3QgcmV0 dXJuIEludmFsaWRPaWQuCisgKi8KK09pZAorZ2V0X3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBj b25zdCBjaGFyICpwZXJpb2RuYW1lLCBib29sIG1pc3Npbmdfb2spCit7CisJSGVhcFR1cGxl CXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCSBPYmpl Y3RJZEdldERhdHVtKHJlbGlkKSwKKwkJCQkJCSBQb2ludGVyR2V0RGF0dW0ocGVyaW9kbmFt ZSkpOworCisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ19wZXJp b2QgcGVyaW9kX3R1cCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHRwKTsKKwkJT2lk IHJlc3VsdDsKKworCQlyZXN1bHQgPSBwZXJpb2RfdHVwLT5vaWQ7CisJCVJlbGVhc2VTeXND YWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJaWYgKCFtaXNzaW5nX29rKQor CQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3IgcGVyaW9kICVzIiwKKwkJ CSBwZXJpb2RuYW1lKTsKKwlyZXR1cm4gSW52YWxpZE9pZDsKK30KKwogLyoJCQkJLS0tLS0t LS0tLSBQR19DQVNUIENBQ0hFIC0tLS0tLS0tLS0JCQkJCSAqLwogCiAvKgpAQCAtMzUzMiw2 ICszNTk1LDMwIEBAIGdldF9tdWx0aXJhbmdlX3JhbmdlKE9pZCBtdWx0aXJhbmdlT2lkKQog CQlyZXR1cm4gSW52YWxpZE9pZDsKIH0KIAorT2lkCitnZXRfc3VidHlwZV9yYW5nZShPaWQg c3VidHlwZU9pZCkKK3sKKwlDYXRDTGlzdCAqY2F0bGlzdDsKKwlPaWQJcmVzdWx0ID0gSW52 YWxpZE9pZDsKKworCWNhdGxpc3QgPSBTZWFyY2hTeXNDYWNoZUxpc3QxKFJBTkdFU1VCVFlQ RSwgT2JqZWN0SWRHZXREYXR1bShzdWJ0eXBlT2lkKSk7CisKKwlpZiAoY2F0bGlzdC0+bl9t ZW1iZXJzID09IDEpCisJeworCQlIZWFwVHVwbGUJdHVwbGUgPSAmY2F0bGlzdC0+bWVtYmVy c1swXS0+dHVwbGU7CisJCUZvcm1fcGdfcmFuZ2Ugcm5ndHVwID0gKEZvcm1fcGdfcmFuZ2Up IEdFVFNUUlVDVCh0dXBsZSk7CisJCXJlc3VsdCA9IHJuZ3R1cC0+cm5ndHlwaWQ7CisJCVJl bGVhc2VDYXRDYWNoZUxpc3QoY2F0bGlzdCk7CisJfQorCWVsc2UgaWYgKGNhdGxpc3QtPm5f bWVtYmVycyA+IDEpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9J TkRFVEVSTUlOQVRFX0RBVEFUWVBFKSwKKwkJCQkgZXJybXNnKCJhbWJpZ3VvdXMgcmFuZ2Ug Zm9yIHR5cGUgJXMiLAorCQkJCQkJZm9ybWF0X3R5cGVfYmUoc3VidHlwZU9pZCkpKSk7CisK KwlyZXR1cm4gcmVzdWx0OworfQorCiAvKgkJCQktLS0tLS0tLS0tIFBHX0lOREVYIENBQ0hF IC0tLS0tLS0tLS0JCQkJICovCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9zeXNjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lzY2FjaGUu YwppbmRleCA4ZGJkYTAwMjRmLi40NGU2MzZlNWJlIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3N5c2NhY2hlLmMKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX29w ZmFtaWx5LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFs b2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVi bGljYXRpb25fbmFtZXNwYWNlLmgiCkBAIC00MjIsNiArNDIzLDE5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgY2FjaGVkZXNjIGNhY2hlaW5mb1tdID0gewogCQlLRVkoQW51bV9wZ19wYXJ0 aXRpb25lZF90YWJsZV9wYXJ0cmVsaWQpLAogCQkzMgogCX0sCisJW1BFUklPRE5BTUVdID0g eworCQlQZXJpb2RSZWxhdGlvbklkLAorCQlQZXJpb2RSZWxpZE5hbWVJbmRleElkLAorCQlL RVkoQW51bV9wZ19wZXJpb2RfcGVycmVsaWQsCisJCQlBbnVtX3BnX3BlcmlvZF9wZXJuYW1l KSwKKwkJMzIKKwl9LAorCVtQRVJJT0RPSURdID0geworCQlQZXJpb2RSZWxhdGlvbklkLAor CQlQZXJpb2RPYmplY3RJbmRleElkLAorCQlLRVkoQW51bV9wZ19wZXJpb2Rfb2lkKSwKKwkJ MzIKKwl9LAogCVtQUk9DTkFNRUFSR1NOU1BdID0gewogCQlQcm9jZWR1cmVSZWxhdGlvbklk LAogCQlQcm9jZWR1cmVOYW1lQXJnc05zcEluZGV4SWQsCkBAIC00ODAsNiArNDk0LDEzIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgY2FjaGVkZXNjIGNhY2hlaW5mb1tdID0gewogCQlLRVko QW51bV9wZ19yYW5nZV9ybmdtdWx0aXR5cGlkKSwKIAkJNAogCX0sCisJW1JBTkdFU1VCVFlQ RV0gPSB7CisJCVJhbmdlUmVsYXRpb25JZCwKKwkJUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJ ZCwKKwkJS0VZKEFudW1fcGdfcmFuZ2Vfcm5nc3VidHlwZSwKKwkJCUFudW1fcGdfcmFuZ2Vf cm5ndHlwaWQpLAorCQk0CisJfSwKIAlbUkFOR0VUWVBFXSA9IHsKIAkJUmFuZ2VSZWxhdGlv bklkLAogCQlSYW5nZVR5cGlkSW5kZXhJZCwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19iYWNrdXBfYXJjaGl2ZXIuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19iYWNrdXBfYXJj aGl2ZXIuYwppbmRleCBjYzA2ZjFjODE3Li5kMjk0MjQ5ZmJkIDEwMDY0NAotLS0gYS9zcmMv YmluL3BnX2R1bXAvcGdfYmFja3VwX2FyY2hpdmVyLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1w L3BnX2JhY2t1cF9hcmNoaXZlci5jCkBAIC0zNTAwLDYgKzM1MDAsNyBAQCBfZ2V0T2JqZWN0 RGVzY3JpcHRpb24oUFFFeHBCdWZmZXIgYnVmLCBjb25zdCBUb2NFbnRyeSAqdGUpCiAJCQkg c3RyY21wKHR5cGUsICJEQVRBQkFTRSBQUk9QRVJUSUVTIikgPT0gMCB8fAogCQkJIHN0cmNt cCh0eXBlLCAiREVGQVVMVCIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIkZLIENPTlNU UkFJTlQiKSA9PSAwIHx8CisJCQkgc3RyY21wKHR5cGUsICJQRVJJT0QiKSA9PSAwIHx8CiAJ CQkgc3RyY21wKHR5cGUsICJJTkRFWCIpID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlJV TEUiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5cGUsICJUUklHR0VSIikgPT0gMCB8fApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKaW5kZXggZWZlOGQ3MmIzMi4uZWE3NDRiYzNlMyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j CkBAIC02MzMzLDYgKzYzMzMsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpu dW1UYWJsZXMpCiAJaW50CQkJaV9yZWx0eXBlOwogCWludAkJCWlfcmVsb3duZXI7CiAJaW50 CQkJaV9yZWxjaGVja3M7CisJaW50CQkJaV9ucGVyaW9kOwogCWludAkJCWlfcmVsaGFzaW5k ZXg7CiAJaW50CQkJaV9yZWxoYXNydWxlczsKIAlpbnQJCQlpX3JlbHBhZ2VzOwpAQCAtNjQx MCw2ICs2NDExLDE0IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxl cykKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCiAJCQkJCQkJICJjLnJlbGhhc29p ZHMsICIpOwogCisJLyogSW4gUEcxNiB1cHdhcmRzIHdlIGhhdmUgUEVSSU9Ecy4gKi8KKwlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVy U3RyKHF1ZXJ5LAorCQkJCQkJCSAiKFNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3BlcmlvZCBX SEVSRSBwZXJyZWxpZCA9IGMub2lkKSBBUyBucGVyaW9kcywgIik7CisJZWxzZQorCQlhcHBl bmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKKwkJCQkJCQkgIjAgQVMgbnBlcmlvZHMsICIpOwor CiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gOTAzMDApCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LAogCQkJCQkJCSAiYy5yZWxpc3BvcHVsYXRlZCwgIik7CkBAIC02NTQ3 LDYgKzY1NTYsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMp CiAJaV9yZWx0eXBlID0gUFFmbnVtYmVyKHJlcywgInJlbHR5cGUiKTsKIAlpX3JlbG93bmVy ID0gUFFmbnVtYmVyKHJlcywgInJlbG93bmVyIik7CiAJaV9yZWxjaGVja3MgPSBQUWZudW1i ZXIocmVzLCAicmVsY2hlY2tzIik7CisJaV9ucGVyaW9kID0gUFFmbnVtYmVyKHJlcywgIm5w ZXJpb2RzIik7CiAJaV9yZWxoYXNpbmRleCA9IFBRZm51bWJlcihyZXMsICJyZWxoYXNpbmRl eCIpOwogCWlfcmVsaGFzcnVsZXMgPSBQUWZudW1iZXIocmVzLCAicmVsaGFzcnVsZXMiKTsK IAlpX3JlbHBhZ2VzID0gUFFmbnVtYmVyKHJlcywgInJlbHBhZ2VzIik7CkBAIC02NjMwLDYg KzY2NDAsNyBAQCBnZXRUYWJsZXMoQXJjaGl2ZSAqZm91dCwgaW50ICpudW1UYWJsZXMpCiAJ CX0KIAkJdGJsaW5mb1tpXS5yZWx0YWJsZXNwYWNlID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCBpLCBpX3JlbHRhYmxlc3BhY2UpKTsKIAkJdGJsaW5mb1tpXS5oYXNvaWRzID0gKHN0 cmNtcChQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxoYXNvaWRzKSwgInQiKSA9PSAwKTsKKwkJ dGJsaW5mb1tpXS5ucGVyaW9kID0gYXRvaShQUWdldHZhbHVlKHJlcywgaSwgaV9ucGVyaW9k KSk7CiAJCXRibGluZm9baV0uaGFzdHJpZ2dlcnMgPSAoc3RyY21wKFBRZ2V0dmFsdWUocmVz LCBpLCBpX3JlbGhhc3RyaWdnZXJzKSwgInQiKSA9PSAwKTsKIAkJdGJsaW5mb1tpXS5yZWxw ZXJzaXN0ZW5jZSA9ICooUFFnZXR2YWx1ZShyZXMsIGksIGlfcmVscGVyc2lzdGVuY2UpKTsK IAkJdGJsaW5mb1tpXS5yZWxpc3BvcHVsYXRlZCA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMs IGksIGlfcmVsaXNwb3B1bGF0ZWQpLCAidCIpID09IDApOwpAQCAtODM2NCw3ICs4Mzc1LDcg QEAgZ2V0VHJhbnNmb3JtcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRyYW5zZm9ybXMpCiAv KgogICogZ2V0VGFibGVBdHRycyAtCiAgKgkgIGZvciBlYWNoIGludGVyZXN0aW5nIHRhYmxl LCByZWFkIGluZm8gYWJvdXQgaXRzIGF0dHJpYnV0ZXMKLSAqCSAgKG5hbWVzLCB0eXBlcywg ZGVmYXVsdCB2YWx1ZXMsIENIRUNLIGNvbnN0cmFpbnRzLCBldGMpCisgKgkgIChuYW1lcywg dHlwZXMsIGRlZmF1bHQgdmFsdWVzLCBDSEVDSyBjb25zdHJhaW50cywgUEVSSU9EcywgZXRj KQogICoKICAqCW1vZGlmaWVzIHRibGluZm8KICAqLwpAQCAtODQxNyw2ICs4NDI4LDggQEAg Z2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBu dW1UYWJsZXMpCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UYWJsZXM7IGkrKykKIAl7CiAJ CVRhYmxlSW5mbyAgKnRiaW5mbyA9ICZ0YmxpbmZvW2ldOworCQlpbnQJCQluZHVtcGFibGVj aGVja3M7CS8qIG51bWJlciBvZiBDSEVDSyBjb25zdHJhaW50cyB0aGF0IGRvCisJCQkJCQkJ CQkJICAgbm90IGJlbG9uZyB0byBhIHBlcmlvZCAqLwogCiAJCS8qIERvbid0IGJvdGhlciB0 byBjb2xsZWN0IGluZm8gZm9yIHNlcXVlbmNlcyAqLwogCQlpZiAodGJpbmZvLT5yZWxraW5k ID09IFJFTEtJTkRfU0VRVUVOQ0UpCkBAIC04NDMxLDcgKzg0NDQsOCBAQCBnZXRUYWJsZUF0 dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykK IAkJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcih0YmxvaWRzLCAnLCcpOwogCQlhcHBlbmRQUUV4 cEJ1ZmZlcih0YmxvaWRzLCAiJXUiLCB0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKIAotCQlp ZiAodGJpbmZvLT5uY2hlY2sgPiAwKQorCQluZHVtcGFibGVjaGVja3MgPSB0YmluZm8tPm5j aGVjayAtIHRiaW5mby0+bnBlcmlvZDsKKwkJaWYgKG5kdW1wYWJsZWNoZWNrcyA+IDApCiAJ CXsKIAkJCS8qIEFsc28gbWFrZSBhIGxpc3Qgb2YgdGhlIG9uZXMgd2l0aCBjaGVjayBjb25z dHJhaW50cyAqLwogCQkJaWYgKGNoZWNrb2lkcy0+bGVuID4gMSkgLyogZG8gd2UgaGF2ZSBt b3JlIHRoYW4gdGhlICd7Jz8gKi8KQEAgLTg5NjcsMTUgKzg5ODEsMzYgQEAgZ2V0VGFibGVB dHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJsZXMp CiAJCXBnX2xvZ19pbmZvKCJmaW5kaW5nIHRhYmxlIGNoZWNrIGNvbnN0cmFpbnRzIik7CiAK IAkJcmVzZXRQUUV4cEJ1ZmZlcihxKTsKLQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKLQkJCQkJ CSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9pZCwgY29ucmVsaWQsIGNvbm5hbWUsICIKLQkJ CQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0cmFpbnRkZWYoYy5vaWQpIEFTIGNvbnNy YywgIgotCQkJCQkJICAiY29uaXNsb2NhbCwgY29udmFsaWRhdGVkICIKLQkJCQkJCSAgIkZS T00gdW5uZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10pIEFTIHNyYyh0YmxvaWQpXG4iCi0J CQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWludCBjIE9OIChzcmMudGJsb2lk ID0gYy5jb25yZWxpZClcbiIKLQkJCQkJCSAgIldIRVJFIGNvbnR5cGUgPSAnYycgIgotCQkJ CQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5jb25uYW1lIiwKLQkJCQkJCSAgY2hlY2tv aWRzLT5kYXRhKTsKKwkJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTYwMDAwKQorCQl7 CisJCQkvKgorCQkJICogUEVSSU9EcyB3ZXJlIGFkZGVkIGluIHYxNyBhbmQgd2UgZG9uJ3Qg ZHVtcCBDSEVDSworCQkJICogY29uc3RyYWludHMgZm9yIHRoZW0uCisJCQkgKi8KKwkJCWFw cGVuZFBRRXhwQnVmZmVyKHEsCisJCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQsIGMub2lk LCBjb25yZWxpZCwgY29ubmFtZSwgIgorCQkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2Nv bnN0cmFpbnRkZWYoYy5vaWQpIEFTIGNvbnNyYywgIgorCQkJCQkJCSAgImNvbmlzbG9jYWws IGNvbnZhbGlkYXRlZCAiCisJCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxv Zy5vaWRbXSkgQVMgc3JjKHRibG9pZClcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cu cGdfY29uc3RyYWludCBjIE9OIChzcmMudGJsb2lkID0gYy5jb25yZWxpZClcbiIKKwkJCQkJ CQkgICJXSEVSRSBjb250eXBlID0gJ2MnICIKKwkJCQkJCQkgICIgICBBTkQgTk9UIEVYSVNU UyAoU0VMRUNUIEZST00gcGdfcGVyaW9kICIKKwkJCQkJCQkgICIgICAgICAgICAgICAgICAg ICAgV0hFUkUgKHBlcnJlbGlkLCBwZXJjb25zdHJhaW50KSA9IChjb25yZWxpZCwgYy5vaWQp KSAiCisJCQkJCQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5jb25uYW1lIiwKKwkJCQkJ CQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRQUUV4 cEJ1ZmZlcihxLAorCQkJCQkJCSAgIlNFTEVDVCBjLnRhYmxlb2lkLCBjLm9pZCwgY29ucmVs aWQsIGNvbm5hbWUsICIKKwkJCQkJCQkgICJwZ19jYXRhbG9nLnBnX2dldF9jb25zdHJhaW50 ZGVmKGMub2lkKSBBUyBjb25zcmMsICIKKwkJCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxp ZGF0ZWQgIgorCQkJCQkJCSAgIkZST00gdW5uZXN0KCclcyc6OnBnX2NhdGFsb2cub2lkW10p IEFTIHNyYyh0YmxvaWQpXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9nLnBnX2NvbnN0 cmFpbnQgYyBPTiAoc3JjLnRibG9pZCA9IGMuY29ucmVsaWQpXG4iCisJCQkJCQkJICAiV0hF UkUgY29udHlwZSA9ICdjJyAiCisJCQkJCQkJICAiT1JERVIgQlkgYy5jb25yZWxpZCwgYy5j b25uYW1lIiwKKwkJCQkJCQkgIGNoZWNrb2lkcy0+ZGF0YSk7CisJCX0KIAogCQlyZXMgPSBF eGVjdXRlU3FsUXVlcnkoZm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKIApAQCAt ODk5Nyw2ICs5MDMyLDcgQEAgZ2V0VGFibGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUlu Zm8gKnRibGluZm8sIGludCBudW1UYWJsZXMpCiAJCQlPaWQJCQljb25yZWxpZCA9IGF0b29p ZChQUWdldHZhbHVlKHJlcywgaiwgaV9jb25yZWxpZCkpOwogCQkJVGFibGVJbmZvICAqdGJp bmZvID0gTlVMTDsKIAkJCWludAkJCW51bWNvbnM7CisJCQlpbnQJCQluZHVtcGFibGVjaGVj a3M7CiAKIAkJCS8qIENvdW50IHJvd3MgZm9yIHRoaXMgdGFibGUgKi8KIAkJCWZvciAobnVt Y29ucyA9IDE7IG51bWNvbnMgPCBudW1Db25zdHJzIC0gajsgbnVtY29ucysrKQpAQCAtOTAx NiwxMiArOTA1MiwxMyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5m byAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCWlmIChjdXJ0YmxpbmR4ID49IG51bVRh YmxlcykKIAkJCQlwZ19mYXRhbCgidW5yZWNvZ25pemVkIHRhYmxlIE9JRCAldSIsIGNvbnJl bGlkKTsKIAotCQkJaWYgKG51bWNvbnMgIT0gdGJpbmZvLT5uY2hlY2spCisJCQluZHVtcGFi bGVjaGVja3MgPSB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsKKwkJCWlmIChu dW1jb25zICE9IG5kdW1wYWJsZWNoZWNrcykKIAkJCXsKIAkJCQlwZ19sb2dfZXJyb3Iobmdl dHRleHQoImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnQgb24gdGFibGUgXCIlc1wiIGJ1 dCBmb3VuZCAlZCIsCiAJCQkJCQkJCQkgICJleHBlY3RlZCAlZCBjaGVjayBjb25zdHJhaW50 cyBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5kICVkIiwKLQkJCQkJCQkJCSAgdGJpbmZvLT5u Y2hlY2spLAotCQkJCQkJCSB0YmluZm8tPm5jaGVjaywgdGJpbmZvLT5kb2JqLm5hbWUsIG51 bWNvbnMpOworCQkJCQkJCQkJICBuZHVtcGFibGVjaGVja3MpLAorCQkJCQkJCSBuZHVtcGFi bGVjaGVja3MsIHRiaW5mby0+ZG9iai5uYW1lLCBudW1jb25zKTsKIAkJCQlwZ19sb2dfZXJy b3JfaGludCgiVGhlIHN5c3RlbSBjYXRhbG9ncyBtaWdodCBiZSBjb3JydXB0ZWQuIik7CiAJ CQkJZXhpdF9uaWNlbHkoMSk7CiAJCQl9CkBAIC05MDgwLDYgKzkxMTcsNzkgQEAgZ2V0VGFi bGVBdHRycyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gKnRibGluZm8sIGludCBudW1UYWJs ZXMpCiAJCVBRY2xlYXIocmVzKTsKIAl9CiAKKwlmb3IgKGludCBpID0gMDsgaSA8IG51bVRh YmxlczsgaSsrKQorCXsKKwkJVGFibGVJbmZvICAqdGJpbmZvID0gJnRibGluZm9baV07CisK KwkJLyoKKwkJICogR2V0IGluZm8gYWJvdXQgUEVSSU9EIGRlZmluaXRpb25zCisJCSAqLwor CQlpZiAodGJpbmZvLT5ucGVyaW9kID4gMCkKKwkJeworCQkJUGVyaW9kSW5mbyAqcGVyaW9k czsKKwkJCWludAkJCW51bVBlcmlvZHM7CisJCQlpbnQJCQlqOworCisJCQkvKiBXZSBzaG91 bGRuJ3QgaGF2ZSBhbnkgcGVyaW9kcyBiZWZvcmUgdjE3ICovCisJCQlBc3NlcnQoZm91dC0+ cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApOworCisJCQlwZ19sb2dfaW5mbygiZmluZGluZyBw ZXJpb2RzIGZvciB0YWJsZSBcIiVzLiVzXCIiLAorCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWVz cGFjZS0+ZG9iai5uYW1lLAorCQkJCQkJdGJpbmZvLT5kb2JqLm5hbWUpOworCisJCQlyZXNl dFBRRXhwQnVmZmVyKHEpOworCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwKKwkJCQkiU0VMRUNU IHAudGFibGVvaWQsIHAub2lkLCBwLnBlcm5hbWUsICIKKwkJCQkiICAgICAgIHNhLmF0dG5h bWUgQVMgcGVyc3RhcnQsIGVhLmF0dG5hbWUgQVMgcGVyZW5kLCAiCisJCQkJIiAgICAgICBy LnR5cG5hbWUgQVMgcm5ndHlwZSwgIgorCQkJCSIgICAgICAgYy5jb25uYW1lIEFTIGNvbm5h bWUgIgorCQkJCSJGUk9NIHBnX2NhdGFsb2cucGdfcGVyaW9kIEFTIHAgIgorCQkJCSJKT0lO IHBnX2NhdGFsb2cucGdfYXR0cmlidXRlIEFTIHNhIE9OIChzYS5hdHRyZWxpZCwgc2EuYXR0 bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KSAiCisJCQkJIkpPSU4gcGdfY2F0YWxv Zy5wZ19hdHRyaWJ1dGUgQVMgZWEgT04gKGVhLmF0dHJlbGlkLCBlYS5hdHRudW0pID0gKHAu cGVycmVsaWQsIHAucGVyZW5kKSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ190eXBlIEFT IHIgT04gci5vaWQgPSBwLnBlcnJuZ3R5cGUgIgorCQkJCSJKT0lOIHBnX2NhdGFsb2cucGdf Y29uc3RyYWludCBBUyBjIE9OIGMub2lkID0gcC5wZXJjb25zdHJhaW50ICIKKwkJCQkiV0hF UkUgcC5wZXJyZWxpZCA9ICcldSc6OnBnX2NhdGFsb2cub2lkICIKKwkJCQkiT1JERVIgQlkg cC5wZXJuYW1lIiwKKwkJCQl0YmluZm8tPmRvYmouY2F0SWQub2lkKTsKKworCQkJcmVzID0g RXhlY3V0ZVNxbFF1ZXJ5KGZvdXQsIHEtPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CisKKwkJ CS8qCisJCQkgKiBJZiB3ZSBkaWRuJ3QgZ2V0IHRoZSBudW1iZXIgb2Ygcm93cyB3ZSB0aG91 Z2h0IHdlIHdlcmUgZ29pbmcgdG8sCisJCQkgKiB0aGVuIHRob3NlIEpPSU5zIGRpZG4ndCB3 b3JrLgorCQkJICovCisJCQludW1QZXJpb2RzID0gUFFudHVwbGVzKHJlcyk7CisJCQlpZiAo bnVtUGVyaW9kcyAhPSB0YmluZm8tPm5wZXJpb2QpCisJCQl7CisJCQkJcGdfbG9nX2luZm8o bmdldHRleHQoImV4cGVjdGVkICVkIHBlcmlvZCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZvdW5k ICVkIiwKKwkJCQkJCQkJCSAiZXhwZWN0ZWQgJWQgcGVyaW9kcyBvbiB0YWJsZSBcIiVzXCIg YnV0IGZvdW5kICVkIiwKKwkJCQkJCQkJCSB0YmluZm8tPm5wZXJpb2QpLAorCQkJCQkJCXRi aW5mby0+bnBlcmlvZCwgdGJpbmZvLT5kb2JqLm5hbWUsIG51bVBlcmlvZHMpOworCQkJCXBn X2xvZ19pbmZvKCIoVGhlIHN5c3RlbSBjYXRhbG9ncyBtaWdodCBiZSBjb3JydXB0ZWQuKSIp OworCQkJCWV4aXRfbmljZWx5KDEpOworCQkJfQorCisJCQlwZXJpb2RzID0gKFBlcmlvZElu Zm8gKikgcGdfbWFsbG9jKG51bVBlcmlvZHMgKiBzaXplb2YoUGVyaW9kSW5mbykpOworCQkJ dGJpbmZvLT5wZXJpb2RzID0gcGVyaW9kczsKKworCQkJZm9yIChqID0gMDsgaiA8IG51bVBl cmlvZHM7IGorKykKKwkJCXsKKwkJCQlwZXJpb2RzW2pdLmRvYmoub2JqVHlwZSA9IERPX1BF UklPRDsKKwkJCQlwZXJpb2RzW2pdLmRvYmouY2F0SWQudGFibGVvaWQgPSBhdG9vaWQoUFFn ZXR2YWx1ZShyZXMsIGosIDApKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmouY2F0SWQub2lkID0g YXRvb2lkKFBRZ2V0dmFsdWUocmVzLCBqLCAxKSk7CisJCQkJQXNzaWduRHVtcElkKCZwZXJp b2RzW2pdLmRvYmopOworCQkJCXBlcmlvZHNbal0uZG9iai5uYW1lID0gcGdfc3RyZHVwKFBR Z2V0dmFsdWUocmVzLCBqLCAyKSk7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm5hbWVzcGFjZSA9 IHRiaW5mby0+ZG9iai5uYW1lc3BhY2U7CisJCQkJcGVyaW9kc1tqXS5wZXJ0YWJsZSA9IHRi aW5mbzsKKwkJCQlwZXJpb2RzW2pdLnBlcnN0YXJ0ID0gcGdfc3RyZHVwKFBRZ2V0dmFsdWUo cmVzLCBqLCAzKSk7CisJCQkJcGVyaW9kc1tqXS5wZXJlbmQgPSBwZ19zdHJkdXAoUFFnZXR2 YWx1ZShyZXMsIGosIDQpKTsKKwkJCQlwZXJpb2RzW2pdLnJuZ3R5cGUgPSBwZ19zdHJkdXAo UFFnZXR2YWx1ZShyZXMsIGosIDUpKTsKKwkJCQlwZXJpb2RzW2pdLmNvbm5hbWUgPSBwZ19z dHJkdXAoUFFnZXR2YWx1ZShyZXMsIGosIDYpKTsKKwkJCX0KKwkJCVBRY2xlYXIocmVzKTsK KwkJfQorCX0KKwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihxKTsKIAlkZXN0cm95UFFFeHBCdWZm ZXIodGJsb2lkcyk7CiAJZGVzdHJveVBRRXhwQnVmZmVyKGNoZWNrb2lkcyk7CkBAIC0xMDM1 MCw2ICsxMDQ2MCw4IEBAIGR1bXBEdW1wYWJsZU9iamVjdChBcmNoaXZlICpmb3V0LCBEdW1w YWJsZU9iamVjdCAqZG9iaikKIAkJY2FzZSBET19GS19DT05TVFJBSU5UOgogCQkJZHVtcENv bnN0cmFpbnQoZm91dCwgKGNvbnN0IENvbnN0cmFpbnRJbmZvICopIGRvYmopOwogCQkJYnJl YWs7CisJCWNhc2UgRE9fUEVSSU9EOgorCQkJYnJlYWs7CiAJCWNhc2UgRE9fUFJPQ0xBTkc6 CiAJCQlkdW1wUHJvY0xhbmcoZm91dCwgKGNvbnN0IFByb2NMYW5nSW5mbyAqKSBkb2JqKTsK IAkJCWJyZWFrOwpAQCAtMTU4ODUsNiArMTU5OTcsMzIgQEAgZHVtcFRhYmxlU2NoZW1hKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQkJCX0KIAkJCX0KIAor CQkJLyoKKwkJCSAqIEFkZCBub24taW5oZXJpdGVkIFBFUklPRCBkZWZpbml0aW9ucywgaWYg YW55LgorCQkJICovCisJCQlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5ucGVyaW9kOyBqKysp CisJCQl7CisJCQkJUGVyaW9kSW5mbyAqcGVyaW9kID0gJih0YmluZm8tPnBlcmlvZHNbal0p OworCisJCQkJY2hhcgkgICAqbmFtZSA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPmRvYmou bmFtZSkpOworCQkJCWNoYXIJICAgKnN0YXJ0ID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ cGVyc3RhcnQpKTsKKwkJCQljaGFyCSAgICplbmQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9k LT5wZXJlbmQpKTsKKwkJCQljaGFyCSAgICpybmd0eXBlID0gcGdfc3RyZHVwKGZtdElkKHBl cmlvZC0+cm5ndHlwZSkpOworCQkJCWNoYXIJICAgKmNvbm5hbWUgPSBwZ19zdHJkdXAoZm10 SWQocGVyaW9kLT5jb25uYW1lKSk7CisKKwkJCQlpZiAoYWN0dWFsX2F0dHMgPT0gMCkKKwkJ CQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocSwgIiAoXG4gICAgIik7CisJCQkJZWxzZQorCQkJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiLFxuICAgICIpOworCisJCQkJYXBwZW5kUFFF eHBCdWZmZXIocSwgIlBFUklPRCBGT1IgJXMgKCVzLCAlcykgIgorCQkJCQkJIldJVEggKHJh bmdldHlwZSA9ICVzLCBjaGVja19jb25zdHJhaW50X25hbWUgPSAlcykiLAorCQkJCQkJCQkg IG5hbWUsIHN0YXJ0LCBlbmQsCisJCQkJCQkJCSAgcm5ndHlwZSwgY29ubmFtZSk7CisKKwkJ CQlhY3R1YWxfYXR0cysrOworCQkJfQorCiAJCQkvKgogCQkJICogQWRkIG5vbi1pbmhlcml0 ZWQgQ0hFQ0sgY29uc3RyYWludHMsIGlmIGFueS4KIAkJCSAqCkBAIC0xNTg5Myw3ICsxNjAz MSw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8g KnRiaW5mbykKIAkJCSAqIFBBUlRJVElPTiB0aGF0IHdlJ2xsIGVtaXQgbGF0ZXIgZXhwZWN0 cyB0aGUgY29uc3RyYWludCB0byBiZQogCQkJICogdGhlcmUuICAoTm8gbmVlZCB0byBmaXgg Y29uaXNsb2NhbDogQVRUQUNIIFBBUlRJVElPTiBkb2VzIHRoYXQpCiAJCQkgKi8KLQkJCWZv ciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjazsgaisrKQorCQkJZm9yIChqID0gMDsgaiA8 IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOyBqKyspCiAJCQl7CiAJCQkJQ29u c3RyYWludEluZm8gKmNvbnN0ciA9ICYodGJpbmZvLT5jaGVja2V4cHJzW2pdKTsKIApAQCAt MTYxMTEsNyArMTYyNDksNyBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2ZSAqZm91dCwgY29u c3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkgKiBGb3IgcGFydGl0aW9ucywgdGhleSB3ZXJl IGFscmVhZHkgZHVtcGVkLCBhbmQgY29uaXNsb2NhbAogCQkJICogZG9lc24ndCBuZWVkIGZp eGluZy4KIAkJCSAqLwotCQkJZm9yIChrID0gMDsgayA8IHRiaW5mby0+bmNoZWNrOyBrKysp CisJCQlmb3IgKGsgPSAwOyBrIDwgdGJpbmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7 IGsrKykKIAkJCXsKIAkJCQlDb25zdHJhaW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNo ZWNrZXhwcnNba10pOwogCkBAIC0xNjQxMyw3ICsxNjU1MSw3IEBAIGR1bXBUYWJsZVNjaGVt YShBcmNoaXZlICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJZHVtcFRhYmxl U2VjTGFiZWwoZm91dCwgdGJpbmZvLCByZWx0eXBlbmFtZSk7CiAKIAkvKiBEdW1wIGNvbW1l bnRzIG9uIGlubGluZWQgdGFibGUgY29uc3RyYWludHMgKi8KLQlmb3IgKGogPSAwOyBqIDwg dGJpbmZvLT5uY2hlY2s7IGorKykKKwlmb3IgKGogPSAwOyBqIDwgdGJpbmZvLT5uY2hlY2sg LSB0YmluZm8tPm5wZXJpb2Q7IGorKykKIAl7CiAJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIg PSAmKHRiaW5mby0+Y2hlY2tleHByc1tqXSk7CiAKQEAgLTE4NTA5LDYgKzE4NjQ3LDcgQEAg YWRkQm91bmRhcnlEZXBlbmRlbmNpZXMoRHVtcGFibGVPYmplY3QgKipkb2JqcywgaW50IG51 bU9ianMsCiAJCQljYXNlIERPX1RSSUdHRVI6CiAJCQljYXNlIERPX0VWRU5UX1RSSUdHRVI6 CiAJCQljYXNlIERPX0RFRkFVTFRfQUNMOgorCQkJY2FzZSBET19QRVJJT0Q6CiAJCQljYXNl IERPX1BPTElDWToKIAkJCWNhc2UgRE9fUFVCTElDQVRJT046CiAJCQljYXNlIERPX1BVQkxJ Q0FUSU9OX1JFTDoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9z cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmluZGV4IDc3M2EyZGUxOGIuLjE5OWIyNTU3MWIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXAuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIGVudW0KIAlET19U UklHR0VSLAogCURPX0NPTlNUUkFJTlQsCiAJRE9fRktfQ09OU1RSQUlOVCwJCQkvKiBzZWUg bm90ZSBmb3IgQ29uc3RyYWludEluZm8gKi8KKwlET19QRVJJT0QsCiAJRE9fUFJPQ0xBTkcs CiAJRE9fQ0FTVCwKIAlET19UQUJMRV9EQVRBLApAQCAtMjk5LDEyICszMDAsMTQgQEAgdHlw ZWRlZiBzdHJ1Y3QgX3RhYmxlSW5mbwogCWJvb2wJCXJvd3NlYzsJCQkvKiBpcyByb3cgc2Vj dXJpdHkgZW5hYmxlZD8gKi8KIAlib29sCQlmb3JjZXJvd3NlYzsJLyogaXMgcm93IHNlY3Vy aXR5IGZvcmNlZD8gKi8KIAlib29sCQloYXNvaWRzOwkJLyogZG9lcyBpdCBoYXZlIE9JRHM/ ICovCisJYm9vbAkJaGFzcGVyaW9kczsJCS8qIGRvZXMgaXQgaGF2ZSBhbnkgcGVyaW9kcz8g Ki8KIAl1aW50MzIJCWZyb3plbnhpZDsJCS8qIHRhYmxlJ3MgcmVsZnJvemVueGlkICovCiAJ dWludDMyCQltaW5teGlkOwkJLyogdGFibGUncyByZWxtaW5teGlkICovCiAJT2lkCQkJdG9h c3Rfb2lkOwkJLyogdG9hc3QgdGFibGUncyBPSUQsIG9yIDAgaWYgbm9uZSAqLwogCXVpbnQz MgkJdG9hc3RfZnJvemVueGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbGZyb3plbnhpZCwgaWYg YW55ICovCiAJdWludDMyCQl0b2FzdF9taW5teGlkOwkvKiB0b2FzdCB0YWJsZSdzIHJlbG1p bm14aWQgKi8KIAlpbnQJCQluY2hlY2s7CQkJLyogIyBvZiBDSEVDSyBleHByZXNzaW9ucyAq LworCWludAkJCW5wZXJpb2Q7CQkvKiAjIG9mIFBFUklPRCBkZWZpbml0aW9ucyAqLwogCU9p ZAkJCXJlbHR5cGU7CQkvKiBPSUQgb2YgdGFibGUncyBjb21wb3NpdGUgdHlwZSwgaWYgYW55 ICovCiAJT2lkCQkJcmVsb2Z0eXBlOwkJLyogdW5kZXJseWluZyB0eXBlIGZvciB0eXBlZCB0 YWJsZSAqLwogCU9pZAkJCWZvcmVpZ25fc2VydmVyOyAvKiBmb3JlaWduIHNlcnZlciBvaWQs IGlmIGFwcGxpY2FibGUgKi8KQEAgLTM1NCw2ICszNTcsNyBAQCB0eXBlZGVmIHN0cnVjdCBf dGFibGVJbmZvCiAJYm9vbAkgICAqbm90bnVsbF9pbmg7CS8qIHRydWUgaWYgTk9UIE5VTEwg aGFzIG5vIGxvY2FsIGRlZmluaXRpb24gKi8KIAlzdHJ1Y3QgX2F0dHJEZWZJbmZvICoqYXR0 cmRlZnM7IC8qIERFRkFVTFQgZXhwcmVzc2lvbnMgKi8KIAlzdHJ1Y3QgX2NvbnN0cmFpbnRJ bmZvICpjaGVja2V4cHJzOyAvKiBDSEVDSyBjb25zdHJhaW50cyAqLworCXN0cnVjdCBfcGVy aW9kSW5mbyAqcGVyaW9kczsJLyogUEVSSU9EIGRlZmluaXRpb25zICovCiAJYm9vbAkJbmVl ZHNfb3ZlcnJpZGU7IC8qIGhhcyBHRU5FUkFURUQgQUxXQVlTIEFTIElERU5USVRZICovCiAJ Y2hhcgkgICAqYW1uYW1lOwkJCS8qIHJlbGF0aW9uIGFjY2VzcyBtZXRob2QgKi8KIApAQCAt NDkyLDYgKzQ5NiwxNiBAQCB0eXBlZGVmIHN0cnVjdCBfY29uc3RyYWludEluZm8KIAlib29s CQl3aXRob3V0b3ZlcmxhcHM7CS8qIHRydWUgaWYgdGhlIGxhc3QgZWxlbSBpcyBXSVRIT1VU IE9WRVJMQVBTICovCiB9IENvbnN0cmFpbnRJbmZvOwogCit0eXBlZGVmIHN0cnVjdCBfcGVy aW9kSW5mbworeworCUR1bXBhYmxlT2JqZWN0IGRvYmo7CisJVGFibGVJbmZvICAqcGVydGFi bGU7CisJY2hhcgkgICAqcGVyc3RhcnQ7CQkvKiB0aGUgbmFtZSBvZiB0aGUgc3RhcnQgY29s dW1uICovCisJY2hhcgkgICAqcGVyZW5kOwkJCS8qIHRoZSBuYW1lIG9mIHRoZSBlbmQgY29s dW1uICovCisJY2hhcgkgICAqcm5ndHlwZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSByYW5nZSB0 eXBlICovCisJY2hhcgkgICAqY29ubmFtZTsJCS8qIHRoZSBuYW1lIG9mIHRoZSBDSEVDSyBj b25zdHJhaW50ICovCit9IFBlcmlvZEluZm87CisKIHR5cGVkZWYgc3RydWN0IF9wcm9jTGFu Z0luZm8KIHsKIAlEdW1wYWJsZU9iamVjdCBkb2JqOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z19kdW1wL3BnX2R1bXBfc29ydC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5j CmluZGV4IDUyM2ExOWMxNTUuLjU1ZjJiNjhkMGYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wX3NvcnQuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0 LmMKQEAgLTg0LDYgKzg0LDcgQEAgZW51bSBkYk9iamVjdFR5cGVQcmlvcml0aWVzCiAJUFJJ T19DT05TVFJBSU5ULAogCVBSSU9fSU5ERVgsCiAJUFJJT19JTkRFWF9BVFRBQ0gsCisJUFJJ T19QRVJJT0QsCiAJUFJJT19TVEFUU0VYVCwKIAlQUklPX1JVTEUsCiAJUFJJT19UUklHR0VS LApAQCAtMTE4LDYgKzExOSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgZGJPYmplY3RUeXBlUHJp b3JpdHlbXSA9CiAJUFJJT19BVFRSREVGLAkJCQkvKiBET19BVFRSREVGICovCiAJUFJJT19J TkRFWCwJCQkJCS8qIERPX0lOREVYICovCiAJUFJJT19JTkRFWF9BVFRBQ0gsCQkJLyogRE9f SU5ERVhfQVRUQUNIICovCisJUFJJT19QRVJJT0QsCQkJCS8qIERPX1BFUklPRCAqLwogCVBS SU9fU1RBVFNFWFQsCQkJCS8qIERPX1NUQVRTRVhUICovCiAJUFJJT19SVUxFLAkJCQkJLyog RE9fUlVMRSAqLwogCVBSSU9fVFJJR0dFUiwJCQkJLyogRE9fVFJJR0dFUiAqLwpAQCAtMTQz OCw2ICsxNDQwLDExIEBAIGRlc2NyaWJlRHVtcGFibGVPYmplY3QoRHVtcGFibGVPYmplY3Qg Km9iaiwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSkKIAkJCQkJICJGSyBDT05TVFJBSU5UICVz ICAoSUQgJWQgT0lEICV1KSIsCiAJCQkJCSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmot PmNhdElkLm9pZCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRE9fUEVSSU9EOgorCQkJc25wcmlu dGYoYnVmLCBidWZzaXplLAorCQkJCQkgIlBFUklPRCAlcyAgKElEICVkIE9JRCAldSkiLAor CQkJCQkgb2JqLT5uYW1lLCBvYmotPmR1bXBJZCwgb2JqLT5jYXRJZC5vaWQpOworCQkJcmV0 dXJuOwogCQljYXNlIERPX1BST0NMQU5HOgogCQkJc25wcmludGYoYnVmLCBidWZzaXplLAog CQkJCQkgIlBST0NFRFVSQUwgTEFOR1VBR0UgJXMgIChJRCAlZCBPSUQgJXUpIiwKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJl LmMKaW5kZXggNGZiZmMwNzQ2MC4uZTM4YjlhMWMzYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTE5NDgs NiArMTk0OCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAKIAlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiXG5GUk9NIHBnX2NhdGFs b2cucGdfYXR0cmlidXRlIGEiKTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLCAiXG5XSEVS RSBhLmF0dHJlbGlkID0gJyVzJyBBTkQgYS5hdHRudW0gPiAwIEFORCBOT1QgYS5hdHRpc2Ry b3BwZWQiLCBvaWQpOworCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJcbkFORCBOT1QgRVhJ U1RTIChTRUxFQ1QgMSBGUk9NIHBnX2NhdGFsb2cucGdfcGVyaW9kIHAgV0hFUkUgcC5wZXJy ZWxpZCA9IGEuYXR0cmVsaWQgQU5EIHAucGVycmFuZ2UgPSBhLmF0dG51bSkiKTsKIAlhcHBl bmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiXG5PUkRFUiBCWSBhLmF0dG51bTsiKTsKIAogCXJl cyA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKQEAgLTIzNzAsNiArMjM3MSw0MCBAQCBkZXNjcmli ZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQlQR3Jlc3VsdCAg ICpyZXN1bHQgPSBOVUxMOwogCQlpbnQJCQl0dXBsZXMgPSAwOwogCisJCS8qIHByaW50IHBl cmlvZHMgKi8KKwkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTUwMDAwKQorCQl7CisJCQlwcmlu dGZQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCSAgIlNFTEVDVCBxdW90ZV9pZGVudChwLnBl cm5hbWUpLCBxdW90ZV9pZGVudChzLmF0dG5hbWUpIEFTIHN0YXJ0YXR0LCBxdW90ZV9pZGVu dChlLmF0dG5hbWUpIEFTIGVuZGF0dFxuIgorCQkJCQkJCSAgIkZST00gcGdfcGVyaW9kIEFT IHBcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2F0dHJpYnV0ZSBBUyBzIE9OIChzLmF0dHJlbGlk LCBzLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydClcbiIKKwkJCQkJCQkgICJK T0lOIHBnX2F0dHJpYnV0ZSBBUyBlIE9OIChlLmF0dHJlbGlkLCBlLmF0dG51bSkgPSAocC5w ZXJyZWxpZCwgcC5wZXJlbmQpXG4iCisJCQkJCQkJICAiV0hFUkUgcC5wZXJyZWxpZCA9ICcl cydcbiIKKwkJCQkJCQkgICJPUkRFUiBCWSAxOyIsCisJCQkJCQkJICBvaWQpOworCQkJcmVz dWx0ID0gUFNRTGV4ZWMoYnVmLmRhdGEpOworCQkJaWYgKCFyZXN1bHQpCisJCQkJZ290byBl cnJvcl9yZXR1cm47CisJCQllbHNlCisJCQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7 CisKKwkJCWlmICh0dXBsZXMgPiAwKQorCQkJeworCQkJCXByaW50VGFibGVBZGRGb290ZXIo JmNvbnQsIF8oIlBlcmlvZHM6IikpOworCQkJCWZvciAoaSA9IDA7IGkgPCB0dXBsZXM7IGkr KykKKwkJCQl7CisJCQkJCS8qIHVudHJhbnNsYXRlZCBjb25zdHJhaW50IG5hbWUgYW5kIGRl ZiAqLworCQkJCQlwcmludGZQUUV4cEJ1ZmZlcigmYnVmLCAiICAgICVzICglcywgJXMpIiwK KwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDApLAorCQkJCQkJCQkJICBQUWdl dHZhbHVlKHJlc3VsdCwgaSwgMSksCisJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBp LCAyKSk7CisKKwkJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29udCwgYnVmLmRhdGEpOwor CQkJCX0KKwkJCX0KKwkJCVBRY2xlYXIocmVzdWx0KTsKKwkJfQorCiAJCS8qIHByaW50IGlu ZGV4ZXMgKi8KIAkJaWYgKHRhYmxlaW5mby5oYXNpbmRleCkKIAkJewpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9kZXBlbmRlbmN5LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L2RlcGVuZGVuY3kuaAppbmRleCBmZmQ1ZTlkYzgyLi44ZjAzYmYzZGUxIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaAorKysgYi9zcmMvaW5jbHVkZS9j YXRhbG9nL2RlcGVuZGVuY3kuaApAQCAtOTMsNiArOTMsNyBAQCB0eXBlZGVmIGVudW0gT2Jq ZWN0Q2xhc3MKIAlPQ0xBU1NfQ0FTVCwJCQkJLyogcGdfY2FzdCAqLwogCU9DTEFTU19DT0xM QVRJT04sCQkJLyogcGdfY29sbGF0aW9uICovCiAJT0NMQVNTX0NPTlNUUkFJTlQsCQkJLyog cGdfY29uc3RyYWludCAqLworCU9DTEFTU19QRVJJT0QsCQkJCS8qIHBnX3BlcmlvZCAqLwog CU9DTEFTU19DT05WRVJTSU9OLAkJCS8qIHBnX2NvbnZlcnNpb24gKi8KIAlPQ0xBU1NfREVG QVVMVCwJCQkJLyogcGdfYXR0cmRlZiAqLwogCU9DTEFTU19MQU5HVUFHRSwJCQkvKiBwZ19s YW5ndWFnZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggYi9z cmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAppbmRleCA1MWY3YjEyYWEzLi4xZjY0NmYzZDNi IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaAorKysgYi9zcmMvaW5j bHVkZS9jYXRhbG9nL2hlYXAuaApAQCAtMTIxLDYgKzEyMSwxMCBAQCBleHRlcm4gTGlzdCAq QWRkUmVsYXRpb25Ob3ROdWxsQ29uc3RyYWludHMoUmVsYXRpb24gcmVsLAogZXh0ZXJuIHZv aWQgUmVsYXRpb25DbGVhck1pc3NpbmcoUmVsYXRpb24gcmVsKTsKIGV4dGVybiB2b2lkIFNl dEF0dHJNaXNzaW5nKE9pZCByZWxpZCwgY2hhciAqYXR0bmFtZSwgY2hhciAqdmFsdWUpOwog CitleHRlcm4gT2lkIFN0b3JlUGVyaW9kKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVy aW9kLAorCQkJCQkgICBBdHRyTnVtYmVyIHN0YXJ0bnVtLCBBdHRyTnVtYmVyIGVuZG51bSwK KwkJCQkJICAgQXR0ck51bWJlciByYW5nZW51bSwgT2lkIGNvbm9pZCk7CisKIGV4dGVybiBO b2RlICpjb29rRGVmYXVsdChQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkgTm9kZSAqcmF3 X2RlZmF1bHQsCiAJCQkJCQkgT2lkIGF0dHR5cGlkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9tZXNvbi5idWlsZCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVp bGQKaW5kZXggZGNiM2M1Zjc2Ni4uMTk0MzcyOTFhNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9tZXNvbi5idWlsZAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL21lc29u LmJ1aWxkCkBAIC02MSw2ICs2MSw3IEBAIGNhdGFsb2dfaGVhZGVycyA9IFsKICAgJ3BnX2Nv bGxhdGlvbi5oJywKICAgJ3BnX3BhcmFtZXRlcl9hY2wuaCcsCiAgICdwZ19wYXJ0aXRpb25l ZF90YWJsZS5oJywKKyAgJ3BnX3BlcmlvZC5oJywKICAgJ3BnX3JhbmdlLmgnLAogICAncGdf dHJhbnNmb3JtLmgnLAogICAncGdfc2VxdWVuY2UuaCcsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4 LmgKaW5kZXggMzI5MzA0MTFiNi4uYTRlMDJkZGNhNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5k ZXguaApAQCAtNDgsNyArNDgsNiBAQCBDQVRBTE9HKHBnX2luZGV4LDI2MTAsSW5kZXhSZWxh dGlvbklkKSBCS0lfU0NIRU1BX01BQ1JPCiAJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBz dGFydCBoZXJlLCBidXQgd2UgYWxsb3cgZGlyZWN0IGFjY2VzcyB0byBpbmRrZXkgKi8KIAlp bnQydmVjdG9yCWluZGtleSBCS0lfRk9SQ0VfTk9UX05VTEw7CS8qIGNvbHVtbiBudW1iZXJz IG9mIGluZGV4ZWQgY29scywKIAkJCQkJCQkJCQkJICogb3IgMCAqLwotCiAjaWZkZWYgQ0FU QUxPR19WQVJMRU4KIAlvaWR2ZWN0b3IJaW5kY29sbGF0aW9uIEJLSV9MT09LVVBfT1BUKHBn X2NvbGxhdGlvbikgQktJX0ZPUkNFX05PVF9OVUxMOwkvKiBjb2xsYXRpb24gaWRlbnRpZmll cnMgKi8KIAlvaWR2ZWN0b3IJaW5kY2xhc3MgQktJX0xPT0tVUChwZ19vcGNsYXNzKSBCS0lf Rk9SQ0VfTk9UX05VTEw7IC8qIG9wY2xhc3MgaWRlbnRpZmllcnMgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3BlcmlvZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmQy Y2ZmYTA3YmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Bl cmlvZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHBnX3BlcmlvZC5oCisgKgkgIGRlZmluaXRpb24gb2YgdGhlICJwZXJpb2QiIHN5c3RlbSBj YXRhbG9nIChwZ19wZXJpb2QpCisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykg MTk5Ni0yMDIxLCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAq IHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKKyAqCisgKiBOT1RFUworICoJICBU aGUgQ2F0YWxvZy5wbSBtb2R1bGUgcmVhZHMgdGhpcyBmaWxlIGFuZCBkZXJpdmVzIHNjaGVt YQorICoJICBpbmZvcm1hdGlvbi4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor I2lmbmRlZiBQR19QRVJJT0RfSAorI2RlZmluZSBQR19QRVJJT0RfSAorCisjaW5jbHVkZSAi Y2F0YWxvZy9nZW5ia2kuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZF9kLmgiCisK Ky8qIC0tLS0tLS0tLS0tLS0tLS0KKyAqCQlwZ19wZXJpb2QgZGVmaW5pdGlvbi4gIGNwcCB0 dXJucyB0aGlzIGludG8KKyAqCQl0eXBlZGVmIHN0cnVjdCBGb3JtRGF0YV9wZ19wZXJpb2QK KyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLworQ0FUQUxPRyhwZ19wZXJpb2QsODAwMCxQZXJp b2RSZWxhdGlvbklkKQoreworCU9pZAkJCW9pZDsJCQkvKiBPSUQgb2YgdGhlIHBlcmlvZCAq LworCU5hbWVEYXRhCXBlcm5hbWU7CQkvKiBuYW1lIG9mIHBlcmlvZCAqLworCU9pZAkJCXBl cnJlbGlkOwkJLyogT0lEIG9mIHJlbGF0aW9uIGNvbnRhaW5pbmcgdGhpcyBwZXJpb2QgKi8K KwlpbnQxNgkJcGVyc3RhcnQ7CQkvKiBjb2x1bW4gZm9yIHN0YXJ0IHZhbHVlICovCisJaW50 MTYJCXBlcmVuZDsJCQkvKiBjb2x1bW4gZm9yIGVuZCB2YWx1ZSAqLworCWludDE2CQlwZXJy YW5nZTsJCS8qIGNvbHVtbiBmb3IgcmFuZ2UgdmFsdWUgKi8KKwlPaWQJCQlwZXJjb25zdHJh aW50OwkvKiBPSUQgb2YgKHN0YXJ0IDwgZW5kKSBjb25zdHJhaW50ICovCit9IEZvcm1EYXRh X3BnX3BlcmlvZDsKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJCUZvcm1fcGdfcGVyaW9k IGNvcnJlc3BvbmRzIHRvIGEgcG9pbnRlciB0byBhIHR1cGxlIHdpdGgKKyAqCQl0aGUgZm9y bWF0IG9mIHBnX3BlcmlvZCByZWxhdGlvbi4KKyAqIC0tLS0tLS0tLS0tLS0tLS0KKyAqLwor dHlwZWRlZiBGb3JtRGF0YV9wZ19wZXJpb2QgKkZvcm1fcGdfcGVyaW9kOworCitERUNMQVJF X1VOSVFVRV9JTkRFWF9QS0VZKHBnX3BlcmlvZF9vaWRfaW5kZXgsIDgwMDEsIFBlcmlvZE9i amVjdEluZGV4SWQsIHBnX3BlcmlvZCwgYnRyZWUob2lkIG9pZF9vcHMpKTsKK0RFQ0xBUkVf VU5JUVVFX0lOREVYKHBnX3BlcmlvZF9wZXJyZWxpZF9wZXJuYW1lX2luZGV4LCA4MDAyLCBQ ZXJpb2RSZWxpZE5hbWVJbmRleElkLCBwZ19wZXJpb2QsIGJ0cmVlKHBlcnJlbGlkIG9pZF9v cHMsIHBlcm5hbWUgbmFtZV9vcHMpKTsKKworZXh0ZXJuIHZvaWQgUmVtb3ZlUGVyaW9kQnlJ ZChPaWQgcGVyaW9kSWQpOworCitleHRlcm4gT2lkIGdldF9yZWxhdGlvbl9wZXJpb2Rfb2lk KE9pZCByZWxpZCwgY29uc3QgY2hhciAqcGVybmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKK2V4 dGVybiBCaXRtYXBzZXQgKmdldF9wZXJpb2RfYXR0bm9zKE9pZCByZWxpZCk7CisKKyNlbmRp ZgkJCQkJCQkvKiBQR19QRVJJT0RfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19yYW5nZS5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCmluZGV4 IDEyNDdmYTdjNzcuLjdlZDAxNGI3MWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfcmFuZ2UuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKQEAg LTU5LDYgKzU5LDcgQEAgdHlwZWRlZiBGb3JtRGF0YV9wZ19yYW5nZSAqRm9ybV9wZ19yYW5n ZTsKIAogREVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19yYW5nZV9ybmd0eXBpZF9pbmRl eCwgMzU0MiwgUmFuZ2VUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmd0eXBpZCBv aWRfb3BzKSk7CiBERUNMQVJFX1VOSVFVRV9JTkRFWChwZ19yYW5nZV9ybmdtdWx0aXR5cGlk X2luZGV4LCAyMjI4LCBSYW5nZU11bHRpcmFuZ2VUeXBpZEluZGV4SWQsIHBnX3JhbmdlLCBi dHJlZShybmdtdWx0aXR5cGlkIG9pZF9vcHMpKTsKK0RFQ0xBUkVfVU5JUVVFX0lOREVYKHBn X3JhbmdlX3JuZ3N1YnR5cGVfcm5ndHlwaWRfaW5kZXgsIDgwMDMsIFJhbmdlU3ViVHlwaWRU eXBpZEluZGV4SWQsIHBnX3JhbmdlLCBidHJlZShybmdzdWJ0eXBlIG9pZF9vcHMsIHJuZ3R5 cGlkIG9pZF9vcHMpKTsKIAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBw Z19yYW5nZS5jCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90YWJsZWNtZHMu aCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCmluZGV4IDE2YjYxMjY2Njku LmU5MThkOWE2MzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21k cy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oCkBAIC0zOCw3ICsz OCw4IEBAIGV4dGVybiBMT0NLTU9ERSBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNt ZHMpOwogCiBleHRlcm4gdm9pZCBBVEV4ZWNDaGFuZ2VPd25lcihPaWQgcmVsYXRpb25PaWQs IE9pZCBuZXdPd25lcklkLCBib29sIHJlY3Vyc2luZywgTE9DS01PREUgbG9ja21vZGUpOwog Ci1leHRlcm4gdm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRz LCBib29sIHJlY3Vyc2UpOworZXh0ZXJuIHZvaWQgQWx0ZXJUYWJsZUludGVybmFsKE9pZCBy ZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlLAorCQkJCQkJCSAgIHN0cnVjdCBBbHRl clRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwogCiBleHRlcm4gT2lkCUFsdGVyVGFi bGVNb3ZlQWxsKEFsdGVyVGFibGVNb3ZlQWxsU3RtdCAqc3RtdCk7CiAKQEAgLTEwMyw1ICsx MDQsNiBAQCBleHRlcm4gdm9pZCBSYW5nZVZhckNhbGxiYWNrT3duc1JlbGF0aW9uKGNvbnN0 IFJhbmdlVmFyICpyZWxhdGlvbiwKIAkJCQkJCQkJCQkgT2lkIHJlbElkLCBPaWQgb2xkUmVs SWQsIHZvaWQgKmFyZyk7CiBleHRlcm4gYm9vbCBQYXJ0Q29uc3RyYWludEltcGxpZWRCeVJl bENvbnN0cmFpbnQoUmVsYXRpb24gc2NhbnJlbCwKIAkJCQkJCQkJCQkJCSBMaXN0ICpwYXJ0 Q29uc3RyYWludCk7CitleHRlcm4gT2lkIGNob29zZV9yYW5nZXR5cGVfZm9yX3BlcmlvZChQ ZXJpb2REZWYgKnBlcmlvZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBUQUJMRUNNRFNfSCAqLwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDE3N2RmOTZjODYuLjUyZGU2MThkMWYgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTIxNjMsNiArMjE2Myw3IEBAIHR5cGVkZWYg ZW51bSBPYmplY3RUeXBlCiAJT0JKRUNUX09QRVJBVE9SLAogCU9CSkVDVF9PUEZBTUlMWSwK IAlPQkpFQ1RfUEFSQU1FVEVSX0FDTCwKKwlPQkpFQ1RfUEVSSU9ELAogCU9CSkVDVF9QT0xJ Q1ksCiAJT0JKRUNUX1BST0NFRFVSRSwKIAlPQkpFQ1RfUFVCTElDQVRJT04sCkBAIC0yMjUw LDYgKzIyNTEsOCBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5cGUKIAlBVF9WYWxpZGF0 ZUNvbnN0cmFpbnQsCQkvKiB2YWxpZGF0ZSBjb25zdHJhaW50ICovCiAJQVRfQWRkSW5kZXhD b25zdHJhaW50LAkJLyogYWRkIGNvbnN0cmFpbnQgdXNpbmcgZXhpc3RpbmcgaW5kZXggKi8K IAlBVF9Ecm9wQ29uc3RyYWludCwJCQkvKiBkcm9wIGNvbnN0cmFpbnQgKi8KKwlBVF9BZGRQ ZXJpb2QsCQkJCS8qIEFERCBQRVJJT0QgKi8KKwlBVF9Ecm9wUGVyaW9kLAkJCQkvKiBEUk9Q IFBFUklPRCAqLwogCUFUX1JlQWRkQ29tbWVudCwJCQkvKiBpbnRlcm5hbCB0byBjb21tYW5k cy90YWJsZWNtZHMuYyAqLwogCUFUX0FsdGVyQ29sdW1uVHlwZSwJCQkvKiBhbHRlciBjb2x1 bW4gdHlwZSAqLwogCUFUX0FsdGVyQ29sdW1uR2VuZXJpY09wdGlvbnMsCS8qIGFsdGVyIGNv bHVtbiBPUFRJT05TICguLi4pICovCkBAIC0yNTE2LDExICsyNTE5LDExIEBAIHR5cGVkZWYg c3RydWN0IFZhcmlhYmxlU2hvd1N0bXQKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CQlDcmVhdGUgVGFibGUgU3RhdGVtZW50CiAgKgotICogTk9URTogaW4gdGhlIHJhdyBncmFt Lnkgb3V0cHV0LCBDb2x1bW5EZWYgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCi0gKiBpbnRl cm1peGVkIGluIHRhYmxlRWx0cywgYW5kIGNvbnN0cmFpbnRzIGFuZCBubmNvbnN0cmFpbnRz IGFyZSBOSUwuICBBZnRlcgotICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0cyBjb250YWlu cyBqdXN0IENvbHVtbkRlZnMsIG5uY29uc3RyYWludHMgY29udGFpbnMKLSAqIENvbnN0cmFp bnQgbm9kZXMgb2YgQ09OU1RSX05PVE5VTEwgdHlwZSBmcm9tIHZhcmlvdXMgc291cmNlcywg YW5kCi0gKiBjb25zdHJhaW50cyBjb250YWlucyBqdXN0IENPTlNUUl9DSEVDSyBDb25zdHJh aW50IG5vZGVzLgorICogTk9URTogaW4gdGhlIHJhdyBncmFtLnkgb3V0cHV0LCBDb2x1bW5E ZWYsIFBlcmlvZERlZiwgYW5kIENvbnN0cmFpbnQgbm9kZXMgYXJlCisgKiBpbnRlcm1peGVk IGluIHRhYmxlRWx0czsgcGVyaW9kcywgY29uc3RyYWludHMsIGFuZCBubmNvbnN0cmFpbnRz IGFyZSBOSUwuICBBZnRlcgorICogcGFyc2UgYW5hbHlzaXMsIHRhYmxlRWx0cyBjb250YWlu cyBqdXN0IENvbHVtbkRlZnMsIHBlcmlvZHMgY29udGFpbnMganVzdCBQZXJpb2REZWZzLAor ICogbm5jb25zdHJhaW50cyBjb250YWlucyBDb25zdHJhaW50IG5vZGVzIG9mIENPTlNUUl9O T1ROVUxMIHR5cGUgZnJvbSB2YXJpb3VzIHNvdXJjZXMsCisgKiBhbmQgY29uc3RyYWludHMg Y29udGFpbnMganVzdCBDT05TVFJfQ0hFQ0sgQ29uc3RyYWludCBub2Rlcy4KICAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqLwogCkBAIC0yNTI5LDYgKzI1MzIsNyBAQCB0eXBlZGVm IHN0cnVjdCBDcmVhdGVTdG10CiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZhciAgICpyZWxh dGlvbjsJCS8qIHJlbGF0aW9uIHRvIGNyZWF0ZSAqLwogCUxpc3QJICAgKnRhYmxlRWx0czsJ CS8qIGNvbHVtbiBkZWZpbml0aW9ucyAobGlzdCBvZiBDb2x1bW5EZWYpICovCisJTGlzdAkg ICAqcGVyaW9kczsJCS8qIHBlcmlvZHMgKGxpc3Qgb2YgUGVyaW9kRGVmIG5vZGVzKSAqLwog CUxpc3QJICAgKmluaFJlbGF0aW9uczsJLyogcmVsYXRpb25zIHRvIGluaGVyaXQgZnJvbSAo bGlzdCBvZgogCQkJCQkJCQkgKiBSYW5nZVZhcikgKi8KIAlQYXJ0aXRpb25Cb3VuZFNwZWMg KnBhcnRib3VuZDsJLyogRk9SIFZBTFVFUyBjbGF1c2UgKi8KQEAgLTI1NDMsNiArMjU0Nywz MCBAQCB0eXBlZGVmIHN0cnVjdCBDcmVhdGVTdG10CiAJYm9vbAkJaWZfbm90X2V4aXN0czsJ LyoganVzdCBkbyBub3RoaW5nIGlmIGl0IGFscmVhZHkgZXhpc3RzPyAqLwogfSBDcmVhdGVT dG10OwogCisKKy8qIC0tLS0tLS0tLS0KKyAqIERlZmluaXRpb25zIGZvciBwZXJpb2RzIGlu IENyZWF0ZVN0bXQKKyAqIC0tLS0tLS0tLS0KKyAqLworCit0eXBlZGVmIHN0cnVjdCBQZXJp b2REZWYKK3sKKwlOb2RlVGFnCQl0eXBlOworCU9pZAkJCW9pZDsJCQkvKiBwZXJpb2Qgb2lk LCBvbmNlIGl0J3MgdHJhbnNmb3JtZWQgKi8KKwljaGFyCSAgICpwZXJpb2RuYW1lOwkJLyog cGVyaW9kIG5hbWUgKi8KKwljaGFyCSAgICpzdGFydGNvbG5hbWU7CS8qIG5hbWUgb2Ygc3Rh cnQgY29sdW1uICovCisJY2hhcgkgICAqZW5kY29sbmFtZTsJCS8qIG5hbWUgb2YgZW5kIGNv bHVtbiAqLworCUF0dHJOdW1iZXIJc3RhcnRhdHRudW07CS8qIGF0dG51bSBvZiB0aGUgc3Rh cnQgY29sdW1uICovCisJQXR0ck51bWJlcgllbmRhdHRudW07CQkvKiBhdHRudW0gb2YgdGhl IGVuZCBjb2x1bW4gKi8KKwlBdHRyTnVtYmVyCXJuZ2F0dG51bTsJCS8qIGF0dG51bSBvZiB0 aGUgR0VORVJBVEVEIHJhbmdlIGNvbHVtbiAqLworCUxpc3QJICAgKm9wdGlvbnM7CQkvKiBv cHRpb25zIGZyb20gV0lUSCBjbGF1c2UgKi8KKwljaGFyCSAgICpjb25zdHJhaW50bmFtZTsJ LyogbmFtZSBvZiB0aGUgQ0hFQ0sgY29uc3RyYWludCAqLworCWNoYXIJICAgKnJhbmdldHlw ZW5hbWU7CS8qIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUgKi8KKwlPaWQJCQljb2x0eXBpZDsJ CS8qIHRoZSBzdGFydC9lbmQgY29sIHR5cGUgKi8KKwlPaWQJCQlybmd0eXBpZDsJCS8qIHRo ZSByYW5nZSB0eXBlIHRvIHVzZSAqLworCWludAkJCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9j YXRpb24sIG9yIC0xIGlmIHVua25vd24gKi8KK30gUGVyaW9kRGVmOworCiAvKiAtLS0tLS0t LS0tCiAgKiBEZWZpbml0aW9ucyBmb3IgY29uc3RyYWludHMgaW4gQ3JlYXRlU3RtdAogICoK QEAgLTMyNTIsNiArMzI4MCw3IEBAIHR5cGVkZWYgc3RydWN0IEluZGV4U3RtdAogCUxpc3QJ ICAgKmluZGV4UGFyYW1zOwkvKiBjb2x1bW5zIHRvIGluZGV4OiBhIGxpc3Qgb2YgSW5kZXhF bGVtICovCiAJTGlzdAkgICAqaW5kZXhJbmNsdWRpbmdQYXJhbXM7CS8qIGFkZGl0aW9uYWwg Y29sdW1ucyB0byBpbmRleDogYSBsaXN0CiAJCQkJCQkJCQkJICogb2YgSW5kZXhFbGVtICov CisJUGVyaW9kRGVmICAqcGVyaW9kOwkJCS8qIFRoZSBwZXJpb2QgaW5jbHVkZWQgaW4gdGhl IGluZGV4ICovCiAJTGlzdAkgICAqb3B0aW9uczsJCS8qIFdJVEggY2xhdXNlIG9wdGlvbnM6 IGEgbGlzdCBvZiBEZWZFbGVtICovCiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxp ZmljYXRpb24gKHBhcnRpYWwtaW5kZXggcHJlZGljYXRlKSAqLwogCUxpc3QJICAgKmV4Y2x1 ZGVPcE5hbWVzOyAvKiBleGNsdXNpb24gb3BlcmF0b3IgbmFtZXMsIG9yIE5JTCBpZiBub25l ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaAppbmRleCAyYjQwYTBiNWIxLi5m ZWI2YzI2MDA3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKQEAgLTQwLDUg KzQwLDYgQEAgZXh0ZXJuIEluZGV4U3RtdCAqZ2VuZXJhdGVDbG9uZWRJbmRleFN0bXQoUmFu Z2VWYXIgKmhlYXBSZWwsCiAJCQkJCQkJCQkJICBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCQkJ CQkJCQkJCSAgY29uc3Qgc3RydWN0IEF0dHJNYXAgKmF0dG1hcCwKIAkJCQkJCQkJCQkgIE9p ZCAqY29uc3RyYWludE9pZCk7CitleHRlcm4gdm9pZCB0cmFuc2Zvcm1QZXJpb2RPcHRpb25z KFBlcmlvZERlZiAqcGVyaW9kKTsKIAogI2VuZGlmCQkJCQkJCS8qIFBBUlNFX1VUSUxDTURf SCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAppbmRleCBhMTE3NTI3ZDhhLi5mMDE1YjUxYzg2 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaApAQCAtOTYsNiArOTYsOCBAQCBleHRlcm4gT2lk CWdldF9hdHR0eXBlKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0pOwogZXh0ZXJuIHZv aWQgZ2V0X2F0dHR5cGV0eXBtb2Rjb2xsKE9pZCByZWxpZCwgQXR0ck51bWJlciBhdHRudW0s CiAJCQkJCQkJCSAgT2lkICp0eXBpZCwgaW50MzIgKnR5cG1vZCwgT2lkICpjb2xsaWQpOwog ZXh0ZXJuIERhdHVtIGdldF9hdHRvcHRpb25zKE9pZCByZWxpZCwgaW50MTYgYXR0bnVtKTsK K2V4dGVybiBjaGFyICpnZXRfcGVyaW9kbmFtZShPaWQgcGVyaW9kaWQsIGJvb2wgbWlzc2lu Z19vayk7CitleHRlcm4gT2lkCWdldF9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3QgY2hh ciAqcGVyaW9kbmFtZSwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBPaWQJZ2V0X2Nhc3Rf b2lkKE9pZCBzb3VyY2V0eXBlaWQsIE9pZCB0YXJnZXR0eXBlaWQsIGJvb2wgbWlzc2luZ19v ayk7CiBleHRlcm4gY2hhciAqZ2V0X2NvbGxhdGlvbl9uYW1lKE9pZCBjb2xsb2lkKTsKIGV4 dGVybiBib29sIGdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKE9pZCBjb2xsb2lkKTsK QEAgLTE5Nyw2ICsxOTksNyBAQCBleHRlcm4gT2lkCWdldF9yYW5nZV9zdWJ0eXBlKE9pZCBy YW5nZU9pZCk7CiBleHRlcm4gT2lkCWdldF9yYW5nZV9jb2xsYXRpb24oT2lkIHJhbmdlT2lk KTsKIGV4dGVybiBPaWQJZ2V0X3JhbmdlX211bHRpcmFuZ2UoT2lkIHJhbmdlT2lkKTsKIGV4 dGVybiBPaWQJZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11bHRpcmFuZ2VPaWQpOworZXh0 ZXJuIE9pZAlnZXRfc3VidHlwZV9yYW5nZShPaWQgc3VidHlwZU9pZCk7CiBleHRlcm4gT2lk CWdldF9pbmRleF9jb2x1bW5fb3BjbGFzcyhPaWQgaW5kZXhfb2lkLCBpbnQgYXR0bm8pOwog ZXh0ZXJuIGJvb2wgZ2V0X2luZGV4X2lzcmVwbGlkZW50KE9pZCBpbmRleF9vaWQpOwogZXh0 ZXJuIGJvb2wgZ2V0X2luZGV4X2lzdmFsaWQoT2lkIGluZGV4X29pZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lz Y2FjaGUuaAppbmRleCA2N2VhNmU0OTQ1Li4zM2JhYjQwNjFhIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2Nh Y2hlLmgKQEAgLTc1LDYgKzc1LDggQEAgZW51bSBTeXNDYWNoZUlkZW50aWZpZXIKIAlQQVJB TUVURVJBQ0xOQU1FLAogCVBBUkFNRVRFUkFDTE9JRCwKIAlQQVJUUkVMSUQsCisJUEVSSU9E TkFNRSwKKwlQRVJJT0RPSUQsCiAJUFJPQ05BTUVBUkdTTlNQLAogCVBST0NPSUQsCiAJUFVC TElDQVRJT05OQU1FLApAQCAtODQsNiArODYsNyBAQCBlbnVtIFN5c0NhY2hlSWRlbnRpZmll cgogCVBVQkxJQ0FUSU9OUkVMLAogCVBVQkxJQ0FUSU9OUkVMTUFQLAogCVJBTkdFTVVMVElS QU5HRSwKKwlSQU5HRVNVQlRZUEUsCiAJUkFOR0VUWVBFLAogCVJFTE5BTUVOU1AsCiAJUkVM T0lELApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rl c3RfZGRsX2RlcGFyc2UuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9kZGxfZGVwYXJzZS90 ZXN0X2RkbF9kZXBhcnNlLmMKaW5kZXggMDMwMmY3OWJiNy4uMDVmOTc4MGVjZiAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFy c2UuYworKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxf ZGVwYXJzZS5jCkBAIC0xODAsNiArMTgwLDEyIEBAIGdldF9hbHRlcnRhYmxlX3N1YmNtZGlu Zm8oUEdfRlVOQ1RJT05fQVJHUykKIAkJCWNhc2UgQVRfRHJvcENvbnN0cmFpbnQ6CiAJCQkJ c3RydHlwZSA9ICJEUk9QIENPTlNUUkFJTlQiOwogCQkJCWJyZWFrOworCQkJY2FzZSBBVF9B ZGRQZXJpb2Q6CisJCQkJc3RydHlwZSA9ICJBREQgUEVSSU9EIjsKKwkJCQlicmVhazsKKwkJ CWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCQlzdHJ0eXBlID0gIkRST1AgUEVSSU9EIjsKKwkJ CQlicmVhazsKIAkJCWNhc2UgQVRfUmVBZGRDb21tZW50OgogCQkJCXN0cnR5cGUgPSAiKHJl KSBBREQgQ09NTUVOVCI7CiAJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w ZXJpb2RzLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4wZjJi MmQ0NTNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w ZXJpb2RzLm91dApAQCAtMCwwICsxLDE3MyBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5v dCBpbXBsZW1lbnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRl LCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpKTsKK0VSUk9SOiAg UEVSSU9EIEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCitMSU5FIDI6IGNyZWF0 ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBz eS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KKy8qIFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoYm9ndXMsIGRlKSk7CitFUlJPUjogIGNvbHVtbiAiYm9ndXMiIG9mIHJlbGF0aW9u ICJwdCIgZG9lcyBub3QgZXhpc3QKK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMg ZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgYm9ndXMpKTsKK0VSUk9SOiAgY29s dW1uICJib2d1cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorLyogRGF0YSB0 eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJS T1I6ICBzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgYmUgb2Ygc2FtZSB0 eXBlCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHRleHQgY29sbGF0ZSAiQyIs IGRlIHRleHQgY29sbGF0ZSAiUE9TSVgiLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJS T1I6ICBzdGFydCBhbmQgZW5kIGNvbHVtbnMgb2YgcGVyaW9kIG11c3QgaGF2ZSBzYW1lIGNv bGxhdGlvbgorLyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVlIG9wZXJhdG9y IGNsYXNzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHhtbCwgZGUgeG1s LCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBubyByYW5nZSB0eXBlIGZvciB4 bWwgZm91bmQgZm9yIHBlcmlvZCBwCitISU5UOiAgWW91IGNhbiBkZWZpbmUgYSBjdXN0b20g cmFuZ2UgdHlwZSB3aXRoIENSRUFURSBUWVBFCisvKiBQZXJpb2QgYW5kIGNvbHVtbiBuYW1l cyBhcmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGlu dGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMsIGRlKSk7CitF UlJPUjogIHBlcmlvZCBuYW1lICJjdGlkIiBjb25mbGljdHMgd2l0aCBhIHN5c3RlbSBjb2x1 bW4gbmFtZQorY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImlkIiBj b25mbGljdHMgd2l0aCBhIGNvbHVtbiBuYW1lCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBn aXZlbiBtb3JlIHRoYW4gb25jZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAo ZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJwIiBzcGVjaWZpZWQgbW9yZSB0aGFu IG9uY2UKKy8qIE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFibGUgcHQg KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7 CisvKiBTRUxFQ1QgKiBleGNsdWRlcyB0aGUgUEVSSU9EICovCitpbnNlcnQgaW50byBwdCB2 YWx1ZXMgKDEsICcyMDAwLTAxLTAxJywgJzIwMDEtMDEtMDEnKTsKK3NlbGVjdCAqIGZyb20g cHQ7CisgaWQgfCAgICAgZHMgICAgIHwgICAgIGRlICAgICAKKy0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLQorICAxIHwgMDEtMDEtMjAwMCB8IDAxLTAxLTIwMDEKKygxIHJvdykK KworLyogWW91IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVjdCAqLCBwIGZyb20g cHQ7CisgaWQgfCAgICAgZHMgICAgIHwgICAgIGRlICAgICB8ICAgICAgICAgICAgcCAgICAg ICAgICAgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgMSB8IDAxLTAxLTIwMDAgfCAwMS0wMS0yMDAxIHwgWzAxLTAxLTIw MDAsMDEtMDEtMjAwMSkKKygxIHJvdykKKworLyogVHdvIGFyZSBva2F5ICovCitjcmVhdGUg dGFibGUgcHQyIChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAx IChkcywgZGUpLCBwZXJpb2QgZm9yIHAyIChkcywgZGUpKTsKK2Ryb3AgdGFibGUgcHQyOwor LyoKKyAqIEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVy aW9kIGZvciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUg KGRzLCBkZSk7CitFUlJPUjogIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBv cnRlZAorYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3IgcCAoZHMsIGRlKTsKKy8qIEFk ZGluZyBhIHNlY29uZCBvbmUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSkpOworYWx0ZXIgdGFibGUg cHQyIGFkZCBwZXJpb2QgZm9yIHAyIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7CisvKiBD YW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBk czsKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGRzIG9mIHRhYmxlIHB0IGJlY2F1c2Ug b3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxl IHB0IGRlcGVuZHMgb24gY29sdW1uIGRzIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1Ag Li4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorYWx0ZXIg dGFibGUgcHQgZHJvcCBjb2x1bW4gZGU7CitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBk ZSBvZiB0YWJsZSBwdCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRB SUw6ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiBkZSBvZiB0YWJs ZSBwdAorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVu dCBvYmplY3RzIHRvby4KKy8qIENhbid0IGNoYW5nZSB0aGUgZGF0YSB0eXBlcyAqLworYWx0 ZXIgdGFibGUgcHQgYWx0ZXIgY29sdW1uIGRzIHR5cGUgdGltZXN0YW1wOworRVJST1I6ICBj YW5ub3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kCitERVRBSUw6 ICBwZXJpb2QgcCBvbiB0YWJsZSBwdCBkZXBlbmRzIG9uIGNvbHVtbiAiZHMiCithbHRlciB0 YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5v dCBhbHRlciB0eXBlIG9mIGEgY29sdW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBl cmlvZCBwIG9uIHRhYmxlIHB0IGRlcGVuZHMgb24gY29sdW1uICJkcyIKKy8qIGNvbHVtbi9w ZXJpb2QgbmFtZXNwYWNlIGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVt biBwIGludGVnZXI7CitFUlJPUjogIGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBh IHBlcmlvZCBuYW1lCithbHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CitF UlJPUjogIGNvbHVtbiBuYW1lICJwIiBjb25mbGljdHMgd2l0aCBhIHBlcmlvZCBuYW1lCisv KiBhZGRpbmcgY29sdW1ucyBhbmQgdGhlIHBlcmlvZCBhdCB0aGUgc2FtZSB0aW1lICovCitj cmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyKTsKK2FsdGVyIHRhYmxlIHB0MiBhZGQgY29s dW1uIGRzIGRhdGUsIGFkZCBjb2x1bW4gZGUgZGF0ZSwgYWRkIHBlcmlvZCBmb3IgcCAoZHMs IGRlKTsKK2Ryb3AgdGFibGUgcHQyOworLyogQW1iaWd1b3VzIHJhbmdlIHR5cGVzIHJhaXNl IGFuIGVycm9yICovCitjcmVhdGUgdHlwZSBteWRhdGVyYW5nZSBhcyByYW5nZShzdWJ0eXBl PWRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworRVJST1I6ICBhbWJpZ3VvdXMgcmFuZ2UgZm9yIHR5 cGUgZGF0ZQorLyogWW91IGNhbiBnaXZlIGFuIGV4cGxpY2l0IHJhbmdlIHR5cGUgKi8KK2Ny ZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBw IChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdteWRhdGVyYW5nZScpKTsKK2Ryb3AgdHlw ZSBteWRhdGVyYW5nZTsKK0VSUk9SOiAgY2Fubm90IGRyb3AgdHlwZSBteWRhdGVyYW5nZSBi ZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwZXJpb2QgcCBv biB0YWJsZSBwdDIgZGVwZW5kcyBvbiB0eXBlIG15ZGF0ZXJhbmdlCitISU5UOiAgVXNlIERS T1AgLi4uIENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorZHJv cCB0eXBlIG15ZGF0ZXJhbmdlIGNhc2NhZGU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRv IHBlcmlvZCBwIG9uIHRhYmxlIHB0MgorZHJvcCB0YWJsZSBwdDI7CitjcmVhdGUgdGFibGUg cHQyIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3 aXRoIChyYW5nZXR5cGUgPSAnZGF0ZXJhbmdlJykpOworLyogUmFuZ2UgdHlwZSBpcyBub3Qg Zm91bmQgKi8KK2NyZWF0ZSB0YWJsZSBwdDMgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdub3RhcmFuZ2UnKSk7 CitFUlJPUjogIFJhbmdlIHR5cGUgbm90YXJhbmdlIG5vdCBmb3VuZAorLyogUmFuZ2UgdHlw ZSBpcyB0aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBk YXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0g J3RzdHpyYW5nZScpKTsKK0VSUk9SOiAgUmFuZ2UgdHlwZSB0c3R6cmFuZ2UgZG9lcyBub3Qg bWF0Y2ggY29sdW1uIHR5cGUgZGF0ZQorZHJvcCB0YWJsZSBwdDI7CisvKiBDUkVBVEUgVEFC TEUgKExJS0UgLi4uKSAqLworLyogUGVyaW9kcyBhcmUgbm90IGNvcGllZCBieSBMSUtFLCBz byB0aGVpciBjb2x1bW5zIGFyZW4ndCBlaXRoZXIgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGxp a2UgcHQpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlk ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRh dGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8IAorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQg YSBwZXJpb2QgcmVmZXJyaW5nIHRvIExJS0UnZCBjb2x1bW5zICovCitjcmVhdGUgdGFibGUg bm90X3AgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUpOworY3JlYXRlIHRhYmxlIHB0 MiAobGlrZSBub3RfcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK1xkIHB0MgorICAgICAg ICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xs YXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAg ICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAK K1BlcmlvZHM6CisgICAgcCAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0 Ml9wX2NoZWNrIiBDSEVDSyAoZHMgPCBkZSkKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4g YWRkIGEgcGVyaW9kIHdpdGggdGhlIHNhbWUgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAo bGlrZSBwdCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK1xkIHB0MgorICAgICAgICAgICAg ICAgIFRhYmxlICJwdWJsaWMucHQyIgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKKyBkcyAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAg fCAKKyBkZSAgICAgfCBkYXRlICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK1Blcmlv ZHM6CisgICAgcCAoZHMsIGRlKQorQ2hlY2sgY29uc3RyYWludHM6CisgICAgInB0Ml9wX2No ZWNrIiBDSEVDSyAoZHMgPCBkZSkKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4gYWRkIGEg cGVyaW9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZSAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlr ZSBwdCwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7CitcZCBwdDIKKyAgICAgICAgICAgICAg ICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0aW9uIHwg TnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAgICB8ICAg ICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwg CisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitQZXJpb2Rz OgorICAgIHAyIChkcywgZGUpCitDaGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3AyX2No ZWNrIiBDSEVDSyAoZHMgPCBkZSkKKworZHJvcCB0YWJsZSBwdDI7CisvKiBDYW4ndCBhZGQg YSBwZXJpb2Qgd2hvc2UgbmFtZSBjb25mbGljdHMgd2l0aCBhIExJS0UnZCBjb2x1bW4gKi8K K2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOwor RVJST1I6ICBwZXJpb2QgbmFtZSAiaWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5hbWUK Ky8qIENSRUFURSBUQUxCRSBJTkhFUklUUyAqLworLyogQ2FuJ3QgaW5oZXJpdCBmcm9tIGEg dGFibGUgd2l0aCBhIHBlcmlvZCAqLworY3JlYXRlIHRhYmxlIHB0MiAobmFtZSB0ZXh0KSBp bmhlcml0cyAocHQpOworRVJST1I6ICBJbmhlcml0aW5nIGZyb20gYSB0YWJsZSB3aXRoIGEg UEVSSU9EIGlzIG5vdCBzdXBwb3J0ZWQKKy8qIENhbid0IGluaGVyaXQgd2l0aCBhIHBlcmlv ZCAqLworY3JlYXRlIHRhYmxlIHB0MiAoZDJzIGRhdGUsIGQyZSBkYXRlLCBwZXJpb2QgZm9y IHAgKGQycywgZDJlKSkgaW5oZXJpdHMgKG5vdF9wKTsKK0VSUk9SOiAgSW5oZXJpdGluZyBp cyBub3Qgc3VwcG9ydGVkIHdoZW4gYSB0YWJsZSBoYXMgYSBQRVJJT0QKK2Ryb3AgdGFibGUg bm90X3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl IGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRleCA5OWNmNmYxOGQ2 Li4yNTE2NzcxMmM5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTQz LDcgKzQzLDcgQEAgdGVzdDogY29weSBjb3B5c2VsZWN0IGNvcHlkbWwgaW5zZXJ0IGluc2Vy dF9jb25mbGljdAogIyBOb3RlOiBtYW55IG9mIHRoZSB0ZXN0cyBpbiBsYXRlciBncm91cHMg ZGVwZW5kIG9uIGNyZWF0ZV9pbmRleAogIyAtLS0tLS0tLS0tCiB0ZXN0OiBjcmVhdGVfZnVu Y3Rpb25fYyBjcmVhdGVfbWlzYyBjcmVhdGVfb3BlcmF0b3IgY3JlYXRlX3Byb2NlZHVyZSBj cmVhdGVfdGFibGUgY3JlYXRlX3R5cGUgY3JlYXRlX3NjaGVtYQotdGVzdDogY3JlYXRlX2lu ZGV4IGNyZWF0ZV9pbmRleF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGlu ZGV4X2luY2x1ZGluZ19naXN0Cit0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3Nw Z2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5nX2dpc3Qg cGVyaW9kcwogCiAjIC0tLS0tLS0tLS0KICMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0 ZXN0cwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi41MTZmMWNlZjlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvcGVyaW9kcy5zcWwKQEAgLTAsMCArMSwxMTcgQEAKKy8qIFN5c3Rl bSBwZXJpb2RzIGFyZSBub3QgaW1wbGVtZW50ZWQgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQg aW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMs IGRlKSk7CisKKy8qIFBlcmlvZHMgbXVzdCBzcGVjaWZ5IGFjdHVhbCBjb2x1bW5zICovCitj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoYm9ndXMsIGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRh dGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGJvZ3VzKSk7CisKKy8qIERhdGEgdHlw ZXMgbXVzdCBtYXRjaCBleGFjdGx5ICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIs IGRzIGRhdGUsIGRlIHRpbWVzdGFtcCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK2NyZWF0 ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4dCBj b2xsYXRlICJQT1NJWCIsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CisKKy8qIFBlcmlvZHMg bXVzdCBoYXZlIGEgZGVmYXVsdCBCVHJlZSBvcGVyYXRvciBjbGFzcyAqLworY3JlYXRlIHRh YmxlIHB0IChpZCBpbnRlZ2VyLCBkcyB4bWwsIGRlIHhtbCwgcGVyaW9kIGZvciBwIChkcywg ZGUpKTsKKworLyogUGVyaW9kIGFuZCBjb2x1bW4gbmFtZXMgYXJlIGluIHRoZSBzYW1lIG5h bWVzcGFjZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBk YXRlLCBwZXJpb2QgZm9yIGN0aWQgKGRzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBp bnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKwor LyogUGVyaW9kIG5hbWUgY2FuJ3QgYmUgZ2l2ZW4gbW9yZSB0aGFuIG9uY2UgKi8KK2NyZWF0 ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBw IChkcywgZGUpLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBOb3cgbWFrZSBvbmUg dGhhdCB3b3JrcyAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBk ZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBTRUxFQ1QgKiBleGNsdWRl cyB0aGUgUEVSSU9EICovCitpbnNlcnQgaW50byBwdCB2YWx1ZXMgKDEsICcyMDAwLTAxLTAx JywgJzIwMDEtMDEtMDEnKTsKK3NlbGVjdCAqIGZyb20gcHQ7CisKKy8qIFlvdSBjYW4gZ2V0 IGl0IGlmIHlvdSB3YW50ICovCitzZWxlY3QgKiwgcCBmcm9tIHB0OworCisvKiBUd28gYXJl IG9rYXkgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSksIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOwor ZHJvcCB0YWJsZSBwdDI7CisKKy8qCisgKiBBTFRFUiBUQUJMRSB0ZXN0cworICovCithbHRl ciB0YWJsZSBwdCBkcm9wIHBlcmlvZCBmb3IgcDsKK2FsdGVyIHRhYmxlIHB0IGFkZCBwZXJp b2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlv ZCBmb3IgcCAoZHMsIGRlKTsKKworLyogQWRkaW5nIGEgc2Vjb25kIG9uZSAqLworY3JlYXRl IHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBw MSAoZHMsIGRlKSk7CithbHRlciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcDIgKGRzLCBk ZSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyogQ2FuJ3QgZHJvcCBpdHMgY29sdW1ucyAqLwor YWx0ZXIgdGFibGUgcHQgZHJvcCBjb2x1bW4gZHM7CithbHRlciB0YWJsZSBwdCBkcm9wIGNv bHVtbiBkZTsKKworLyogQ2FuJ3QgY2hhbmdlIHRoZSBkYXRhIHR5cGVzICovCithbHRlciB0 YWJsZSBwdCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CithbHRlciB0YWJsZSBw dCBhbHRlciBjb2x1bW4gZHMgdHlwZSB0aW1lc3RhbXA7CisKKy8qIGNvbHVtbi9wZXJpb2Qg bmFtZXNwYWNlIGNvbmZsaWN0cyAqLworYWx0ZXIgdGFibGUgcHQgYWRkIGNvbHVtbiBwIGlu dGVnZXI7CithbHRlciB0YWJsZSBwdCByZW5hbWUgY29sdW1uIGlkIHRvIHA7CisKKy8qIGFk ZGluZyBjb2x1bW5zIGFuZCB0aGUgcGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUgKi8KK2NyZWF0 ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBjb2x1bW4g ZHMgZGF0ZSwgYWRkIGNvbHVtbiBkZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUp OworZHJvcCB0YWJsZSBwdDI7CisKKy8qIEFtYmlndW91cyByYW5nZSB0eXBlcyByYWlzZSBh biBlcnJvciAqLworY3JlYXRlIHR5cGUgbXlkYXRlcmFuZ2UgYXMgcmFuZ2Uoc3VidHlwZT1k YXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVy aW9kIGZvciBwIChkcywgZGUpKTsKKworLyogWW91IGNhbiBnaXZlIGFuIGV4cGxpY2l0IHJh bmdlIHR5cGUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0 ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdteWRhdGVyYW5n ZScpKTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5nZTsKK2Ryb3AgdHlwZSBteWRhdGVyYW5nZSBj YXNjYWRlOworZHJvcCB0YWJsZSBwdDI7CitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnQsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUg PSAnZGF0ZXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlzIG5vdCBmb3VuZCAqLworY3Jl YXRlIHRhYmxlIHB0MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAg KGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScpKTsKKworLyogUmFuZ2Ug dHlwZSBpcyB0aGUgd3JvbmcgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MyAoaWQgaW50LCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBl ID0gJ3RzdHpyYW5nZScpKTsKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDUkVBVEUgVEFCTEUg KExJS0UgLi4uKSAqLworCisvKiBQZXJpb2RzIGFyZSBub3QgY29waWVkIGJ5IExJS0UsIHNv IHRoZWlyIGNvbHVtbnMgYXJlbid0IGVpdGhlciAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlr ZSBwdCk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQyOworCisvKiBDYW4gYWRkIGEgcGVyaW9k IHJlZmVycmluZyB0byBMSUtFJ2QgY29sdW1ucyAqLworY3JlYXRlIHRhYmxlIG5vdF9wIChp ZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlKTsKK2NyZWF0ZSB0YWJsZSBwdDIgKGxpa2Ug bm90X3AsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitcZCBwdDIKK2Ryb3AgdGFibGUgcHQy OworCisvKiBDYW4gYWRkIGEgcGVyaW9kIHdpdGggdGhlIHNhbWUgbmFtZSAqLworY3JlYXRl IHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK1xkIHB0Mgor ZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCBhIGRpZmZlcmVu dCBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAyIChk cywgZGUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbid0IGFkZCBhIHBl cmlvZCB3aG9zZSBuYW1lIGNvbmZsaWN0cyB3aXRoIGEgTElLRSdkIGNvbHVtbiAqLworY3Jl YXRlIHRhYmxlIHB0MiAobGlrZSBwdCwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CisKKy8q IENSRUFURSBUQUxCRSBJTkhFUklUUyAqLworCisvKiBDYW4ndCBpbmhlcml0IGZyb20gYSB0 YWJsZSB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQyIChuYW1lIHRleHQpIGlu aGVyaXRzIChwdCk7CisKKy8qIENhbid0IGluaGVyaXQgd2l0aCBhIHBlcmlvZCAqLworY3Jl YXRlIHRhYmxlIHB0MiAoZDJzIGRhdGUsIGQyZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGQycywg ZDJlKSkgaW5oZXJpdHMgKG5vdF9wKTsKKworZHJvcCB0YWJsZSBub3RfcDsKLS0gCjIuMjUu MQoK --------------WEIT9zjCxFDg0fV7Xy9sQj0U--