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 1qbpBp-00D7MW-II for pgsql-hackers@arkaria.postgresql.org; Thu, 31 Aug 2023 21:26:58 +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 1qbpBn-009x44-Ai for pgsql-hackers@arkaria.postgresql.org; Thu, 31 Aug 2023 21:26:55 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qbpBl-009x3R-Op for pgsql-hackers@lists.postgresql.org; Thu, 31 Aug 2023 21:26:54 +0000 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qbpBX-0022Ke-Dp for pgsql-hackers@lists.postgresql.org; Thu, 31 Aug 2023 21:26:52 +0000 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-68730bafa6bso1667730b3a.1 for ; Thu, 31 Aug 2023 14:26:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1693517198; x=1694121998; 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=mre602CVd2a92QXnVP3loL1cLLtDe+czp0pH8BLVFSY=; b=Ry3gNTnpFEHzsUf0JCFj3xurlkw2qgw401qrCwAOEg9G3cb1llB6wTqMweXBftQgCh epNwRlDR3VIEo94QjZgDguOKiIfysz6hDRs4Bp1sAGBvodV6Lmcqa46wTjHPbjPlr7gu tRQOERFc3yZon/tNOjJ2716MBaWVfyqNeVBIIEocaQzJhL5aDQm8TLRP11ruk3wNlqEv XZYBq76vVRC9/tbytOhLD6KPDtUuEo8FSd+BhDRchobReMRFlIB5n60droam5EOGU25O CGwAYq6gahJBOTgNbttx4kfv8TTgXZ6zQuPXDtuP9II9IZ87f3my10pExhp1pgh2zEA3 CA2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693517198; x=1694121998; 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=mre602CVd2a92QXnVP3loL1cLLtDe+czp0pH8BLVFSY=; b=Bpb4JcxCnDzWC6Day9i+utDF7uq2V2EO6MI1srvqz5vr1P1cHUAsYcgZhwAlSoeA33 racQdPTyu8/5bufy4Dq3SVuDqymylDKOiKXCFwE7zamca6LG7t2yISpnqqaJMxWMaUYh Y+fCa/1OA6uELaI12UOpd3e6J/CxWxANZYABGQg+t5sSvxLi0+8cg+yIPr/lFPcnl68r u+nN2MRtppl1WJ1PfS/9zcMo+XbKeJwEhkGMYUZ8+6+b8rXceAPsCU5GAnXFDqWlSjMH uEQF3yD+ng7vLYRUhOYVZjqsERgNeJZwO7+/ftri7Qmunu+g5U46WhnCDJ1Iv4RNs1ye MtQg== X-Gm-Message-State: AOJu0YwErbWyF/a1tHrzbhcud7pJod6GEbVxrcteGAPusuZ0ea/cVXIm wXc+VCih04PFU1RO7qsuqe44vw== X-Google-Smtp-Source: AGHT+IF0T2GSIo1ZQ1M4mNp55QqaRPv7YYEPNpmNrJCua6kkBD778qXYwgqIFftKIVZaaroEUEW1Pg== X-Received: by 2002:a05:6a20:8f08:b0:133:8784:15f7 with SMTP id b8-20020a056a208f0800b00133878415f7mr939197pzk.14.1693517197587; Thu, 31 Aug 2023 14:26:37 -0700 (PDT) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id d11-20020a63a70b000000b0052c9d1533b6sm1726089pgf.56.2023.08.31.14.26.32 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 31 Aug 2023 14:26:35 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------XDFSGX0v4ADvwDYCFM5gI4Qr" Message-ID: Date: Thu, 31 Aug 2023 14:26:31 -0700 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Subject: Re: SQL:2011 application time Content-Language: en-US To: Peter Eisentraut Cc: Corey Huinker , PostgreSQL Hackers , Jaime Casanova , jian he , Daniel Gustafsson References: <5650d77a-1d73-fd8d-4410-8e97dbeff572@illuminatedcomputing.com> <21964319-46e5-3e47-217b-6ac4169bdf13@enterprisedb.com> <27361388-f5ab-ea36-ea35-41d68a90e60d@illuminatedcomputing.com> <152e4c2c-36b4-bdc0-1b62-e9f9e8b68adc@enterprisedb.com> <251B44D1-D3E0-47E4-AB9D-4A848EDB495E@yesql.se> <1c674adf-4114-e8d8-cec7-ac10e2f424c7@enterprisedb.com> <831f17ba-ff36-1380-a475-a7cd2c65a89c@enterprisedb.com> From: Paul Jungwirth In-Reply-To: <831f17ba-ff36-1380-a475-a7cd2c65a89c@enterprisedb.com> 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. --------------XDFSGX0v4ADvwDYCFM5gI4Qr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 7/12/23 01:24, Peter Eisentraut wrote: > On 07.07.23 03:03, Paul A Jungwirth wrote: >> Here are some new patch files based on discussions from PGCon. > > Here are a few fixup patches to get things building without warnings and > errors. > > The last patch (your 0005) fails the regression test for me and it > didn't appear to be a trivial problem, so please take another look at > that sometime.  (Since it's the last patch, it's obviously lower priority.) Hello, Here are the latest patches for my temporal tables work. They are rebased on e8d74ad6 from Aug 31. I incorporated Peter's edits mentioned above and have made various other improvements. The most significant change is support for partitioned tables. Those now work with temporal PRIMARY KEY and UNIQUE constraints, FOR PORTION OF commands, and FOREIGN KEYs. I've tried to clean up the first four patches to get them ready for committing, since they could get committed before the PERIOD patch. I think there is a little more cleanup needed but they should be ready for a review. The PERIOD patch is not finished and includes some deliberately-failing tests. I did make some progress here finishing ALTER TABLE ADD PERIOD. I could use help handling the INTERNAL depenency from the PERIOD to its (hidden) GENERATED column. The problem is in findDependentObjects: if you drop the PERIOD, then Postgres automatically tries to drop the column (correctly), but then it seems to think it needs to drop the whole table. I think this is because a column's object address is the table's object address plus a subaddress equaling the attno, and findDependentObjects thinks it should drop the whole thing. I'm sure I can sort this out, but if anyone has a suggestion it might save me some time. Thanks for taking a look! Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------XDFSGX0v4ADvwDYCFM5gI4Qr Content-Type: text/x-patch; charset=UTF-8; name="v13-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v13-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA2MWQ4YmQwODJlOTY0OWFmM2M1NWQ0MzMyZjZiNGM0ODI2MGZkNjA3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxMyAxLzVdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxl LnNnbWwgICAgICAgICAgICB8ICAzOCArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMg ICAgICAgICAgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YyAgICAgICAgICAgICAgICAgICB8ICAxNyArLQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19j b25zdHJhaW50LmMgICAgICAgICAgIHwgICAyICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2lu ZGV4Y21kcy5jICAgICAgICAgICAgICB8IDE2MCArKysrKysrLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDE0ICstCiBzcmMvYmFja2VuZC9j b21tYW5kcy90cmlnZ2VyLmMgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHlwZWNtZHMuYyAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L25vZGVzL21ha2VmdW5jcy5jICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwgIDMyICstCiBzcmMvYmFj a2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxMjQgKysrKystCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgMjkgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMgICAgICAgICAgICB8ICAxMCAr LQogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgIDM1 ICstCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwgICAgICAgICAgICAgIHwg IDQ2ICsrKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDEyICstCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25zdHJhaW50LmggICAgICAg ICAgIHwgICA5ICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaCAgICAgICAgICAg ICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oICAgICAgICAg ICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAg ICAgICAgICAgICB8ICAgNCArCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dCAgICAgfCAzNTkgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8IDI2MiArKysrKysrKysrKysrCiAy NiBmaWxlcyBjaGFuZ2VkLCAxMTA0IGluc2VydGlvbnMoKyksIDY3IGRlbGV0aW9ucygtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9v dmVybGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93 aXRob3V0X292ZXJsYXBzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3Jl YXRlX3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmlu ZGV4IGUwNGEwNjkyYzQuLjg3ZjBhYWIxM2IgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFi bGUuc2dtbApAQCAtNzgsOCArNzgsOCBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0g eyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQog WyBDT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50 X25hbWU8L3JlcGxhY2VhYmxlPiBdCiB7IENIRUNLICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIFsgTk8gSU5IRVJJVCBdIHwK ICAgTk9UIE5VTEwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gWyBOTyBJTkhFUklUIF0gfAotICBVTklRVUUgWyBOVUxMUyBbIE5P VCBdIERJU1RJTkNUIF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAotICBQUklNQVJZIEtF WSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFj ZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4 X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CisgIFVOSVFVRSBbIE5VTExTIFsgTk9UIF0g RElTVElOQ1QgXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFt ZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+IFdJVEhPVVQgT1ZFUkxBUFMg XSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9y ZXBsYWNlYWJsZT4gfAorICBQUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFibGU+ IFdJVEhPVVQgT1ZFUkxBUFMgXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5p bmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAogICBFWENMVURFIFsgVVNJTkcgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+ IF0gKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjbHVkZV9lbGVtZW50PC9y ZXBsYWNlYWJsZT4gV0lUSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3BlcmF0 b3I8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gWyBXSEVSRSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcmVkaWNhdGU8L3JlcGxhY2VhYmxlPiApIF0gfAog ICBGT1JFSUdOIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBd ICkgXQogICAgIFsgTUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUg XSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUKQEAgLTEwNyw2ICsxMDcsMTAgQEAgV0lUSCAo IE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJh bDwvcmVwbGFjZWFibGU+LCBSRU0KIAogeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiB8ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIH0gWyA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+b3BjbGFzczwvcmVwbGFjZWFibGU+IF0gWyBBU0MgfCBERVND IF0gWyBOVUxMUyB7IEZJUlNUIHwgTEFTVCB9IF0KIAorPHBocmFzZT48cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBpbiBh IDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiwgPGxpdGVyYWw+VU5JUVVFPC9saXRl cmFsPiwgb3IgPGxpdGVyYWw+Rk9SRUlHTiBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgaXM6 PC9waHJhc2U+CisKKzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9jb2x1 bW5fbmFtZTwvcmVwbGFjZWFibGU+CisKIDxwaHJhc2U+PHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IGluIGEgPGxpdGVy YWw+Rk9SRUlHTiBLRVk8L2xpdGVyYWw+LzxsaXRlcmFsPlJFRkVSRU5DRVM8L2xpdGVyYWw+ IGNvbnN0cmFpbnQgaXM6PC9waHJhc2U+CiAKIHsgTk8gQUNUSU9OIHwgUkVTVFJJQ1QgfCBD QVNDQURFIHwgU0VUIE5VTEwgWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5j b2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXSB8IFNFVCBERUZBVUxUIFsg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApIF0gfQpAQCAtMTAwMSw3ICsxMDA1LDEwIEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3Jl cGxhY2VhYmxlPiwgUkVNCiAKICAgICAgPHBhcmE+CiAgICAgICBBZGRpbmcgYSB1bmlxdWUg Y29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgdW5pcXVlIGJ0cmVlCi0g ICAgICBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0 aGUgY29uc3RyYWludC4KKyAgICAgIGluZGV4IG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2Yg Y29sdW1ucyB1c2VkIGluIHRoZSBjb25zdHJhaW50LiBCdXQgaWYKKyAgICAgIHRoZSBjb25z dHJhaW50IGluY2x1ZGVzIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0ZXJhbD4g Y2xhdXNlLAorICAgICAgaXQgd2lsbCB1c2UgYSBHaVNUIGluZGV4IGFuZCBiZWhhdmUgbGlr ZSBhIHRlbXBvcmFsIDxsaXRlcmFsPlBSSU1BUlkKKyAgICAgIEtFWTwvbGl0ZXJhbD46IHBy ZXZlbnRpbmcgZHVwbGljYXRlcyBvbmx5IGluIG92ZXJsYXBwaW5nIHRpbWUgcGVyaW9kcy4K ICAgICAgPC9wYXJhPgogCiAgICAgIDxwYXJhPgpAQCAtMTAxOSw3ICsxMDI2LDggQEAgV0lU SCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0 ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KIAogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXRhYmxlLXBhcm1zLXByaW1hcnkta2V5Ij4KICAgICA8dGVybT48bGl0ZXJhbD5QUklN QVJZIEtFWTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KLSAgICA8dGVy bT48bGl0ZXJhbD5QUklNQVJZIEtFWSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLiBdICk8L2xpdGVyYWw+CisgICAg PHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXQorICAgIFssIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFjZWFi bGU+IFdJVEhPVVQgT1ZFUkxBUFMgXSApPC9saXRlcmFsPgogICAgIDxvcHRpb25hbD4gPGxp dGVyYWw+SU5DTFVERSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5f bmFtZTwvcmVwbGFjZWFibGU+IFssIC4uLl0pPC9saXRlcmFsPiA8L29wdGlvbmFsPiAodGFi bGUgY29uc3RyYWludCk8L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KQEAg LTEwNTMsOCArMTA2MSw4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAKICAgICAg PHBhcmE+CiAgICAgICBBZGRpbmcgYSA8bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJhbD4g Y29uc3RyYWludCB3aWxsIGF1dG9tYXRpY2FsbHkKLSAgICAgIGNyZWF0ZSBhIHVuaXF1ZSBi dHJlZSBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBpbiB0 aGUKLSAgICAgIGNvbnN0cmFpbnQuCisgICAgICBjcmVhdGUgYSB1bmlxdWUgYnRyZWUgaW5k ZXggKG9yIEdpU1QgaWYgdGVtcG9yYWwpIG9uIHRoZSBjb2x1bW4gb3IgZ3JvdXAgb2YKKyAg ICAgIGNvbHVtbnMgdXNlZCBpbiB0aGUgY29uc3RyYWludC4KICAgICAgPC9wYXJhPgogCiAg ICAgIDxwYXJhPgpAQCAtMTA2Nyw2ICsxMDc1LDI0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxl PiwgUkVNCiAgICAgICAoZS5nLiwgPGxpdGVyYWw+RFJPUCBDT0xVTU48L2xpdGVyYWw+KSBj YW4gY2F1c2UgY2FzY2FkZWQgY29uc3RyYWludCBhbmQKICAgICAgIGluZGV4IGRlbGV0aW9u LgogICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+CisgICAgICBBIDxsaXRlcmFsPlBSSU1B UlkgS0VZPC9saXRlcmFsPiB3aXRoIGEgPGxpdGVyYWw+V0lUSE9VVCBPVkVSTEFQUzwvbGl0 ZXJhbD4gb3B0aW9uCisgICAgICBpcyBhIDxlbXBoYXNpcz50ZW1wb3JhbDwvZW1waGFzaXM+ IHByaW1hcnkga2V5LgorICAgICAgVGhlIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xp dGVyYWw+IHZhbHVlCisgICAgICBtdXN0IGJlIGEgcmFuZ2UgdHlwZSBhbmQgaXMgdXNlZCB0 byBjb25zdHJhaW4gdGhlIHJlY29yZCdzIGFwcGxpY2FiaWxpdHkKKyAgICAgIHRvIGp1c3Qg dGhhdCBpbnRlcnZhbCAodXN1YWxseSBhIHJhbmdlIG9mIGRhdGVzIG9yIHRpbWVzdGFtcHMp LgorICAgICAgVGhlIG1haW4gcGFydCBvZiB0aGUgcHJpbWFyeSBrZXkgbWF5IGJlIHJlcGVh dGVkIGluIG90aGVyIHJvd3Mgb2YgdGhlIHRhYmxlLAorICAgICAgYXMgbG9uZyBhcyByZWNv cmRzIHdpdGggdGhlIHNhbWUga2V5IGRvbid0IG92ZXJsYXAgaW4gdGhlCisgICAgICA8bGl0 ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiBjb2x1bW4uCisgICAgIDwvcGFyYT4K KworICAgICA8cGFyYT4KKyAgICAgIEEgdGVtcG9yYWwgPGxpdGVyYWw+UFJJTUFSWSBLRVk8 L2xpdGVyYWw+IGlzIGVuZm9yY2VkIHdpdGggYW4KKyAgICAgIDxsaXRlcmFsPkVYQ0xVREU8 L2xpdGVyYWw+IGNvbnN0cmFpbnQgcmF0aGVyIHRoYW4gYSA8bGl0ZXJhbD5VTklRVUU8L2xp dGVyYWw+CisgICAgICBjb25zdHJhaW50LCBiYWNrZWQgYnkgYSBHaVNUIGluZGV4LiBZb3Ug bWF5IG5lZWQgdG8gaW5zdGFsbCB0aGUKKyAgICAgIDx4cmVmIGxpbmtlbmQ9ImJ0cmVlLWdp c3QiLz4gZXh0ZW5zaW9uIHRvIGNyZWF0ZSB0ZW1wb3JhbCBwcmltYXJ5IGtleXMuCisgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxv Zy9oZWFwLmMKaW5kZXggYjQyNzExZjU3NC4uNzE0OGRkMTc4NyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFw LmMKQEAgLTIxNDAsNiArMjE0MCw3IEBAIFN0b3JlUmVsQ2hlY2soUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpjY25hbWUsIE5vZGUgKmV4cHIsCiAJCQkJCQkJICBpc19sb2NhbCwgLyog Y29uaXNsb2NhbCAqLwogCQkJCQkJCSAgaW5oY291bnQsIC8qIGNvbmluaGNvdW50ICovCiAJ CQkJCQkJICBpc19ub19pbmhlcml0LAkvKiBjb25ub2luaGVyaXQgKi8KKwkJCQkJCQkgIGZh bHNlLAkvKiBjb250ZW1wb3JhbCAqLwogCQkJCQkJCSAgaXNfaW50ZXJuYWwpOyAvKiBpbnRl cm5hbGx5IGNvbnN0cnVjdGVkPyAqLwogCiAJcGZyZWUoY2NiaW4pOwpAQCAtMjE5MCw2ICsy MTkxLDcgQEAgU3RvcmVSZWxOb3ROdWxsKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqbm5u YW1lLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkgIGlzX2xvY2FsLAogCQkJCQkJCSAg aW5oY291bnQsCiAJCQkJCQkJICBpc19ub19pbmhlcml0LAorCQkJCQkJCSAgZmFsc2UsCS8q IGNvbnRlbXBvcmFsICovCiAJCQkJCQkJICBmYWxzZSk7CiAJcmV0dXJuIGNvbnN0ck9pZDsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9iYWNr ZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBmZDA5Mzc4ODQ4Li4yYmVmMjg3OTUxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMKKysrIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9pbmRleC5jCkBAIC0yNTUsOCArMjU1LDggQEAgaW5kZXhfY2hlY2tfcHJpbWFy eV9rZXkoUmVsYXRpb24gaGVhcFJlbCwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJF X05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJybXNnKCJwcmltYXJ5IGtleXMgY2Fubm90IGJl IGV4cHJlc3Npb25zIikpKTsKIAotCQkvKiBTeXN0ZW0gYXR0cmlidXRlcyBhcmUgbmV2ZXIg bnVsbCwgc28gbm8gbmVlZCB0byBjaGVjayAqLwotCQlpZiAoYXR0bnVtIDwgMCkKKwkJLyog KiBTeXN0ZW0gYXR0cmlidXRlcyBhcmUgbmV2ZXIgbnVsbCwgc28gbm8gbmVlZCB0byBjaGVj ay4gKi8KKwkJaWYgKGF0dG51bSA8PSAwKQogCQkJY29udGludWU7CiAKIAkJYXR0dHVwbGUg PSBTZWFyY2hTeXNDYWNoZTIoQVRUTlVNLApAQCAtMTM3Nyw3ICsxMzc3LDggQEAgaW5kZXhf Y29uY3VycmVudGx5X2NyZWF0ZV9jb3B5KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwgT2lkIG9s ZEluZGV4SWQsCiAJCQkJCQkJb2xkSW5mby0+aWlfTnVsbHNOb3REaXN0aW5jdCwKIAkJCQkJ CQlmYWxzZSwJLyogbm90IHJlYWR5IGZvciBpbnNlcnRzICovCiAJCQkJCQkJdHJ1ZSwKLQkJ CQkJCQlpbmRleFJlbGF0aW9uLT5yZF9pbmRhbS0+YW1zdW1tYXJpemluZyk7CisJCQkJCQkJ aW5kZXhSZWxhdGlvbi0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCisJCQkJCQkJb2xkSW5m by0+aWlfVGVtcG9yYWwpOwogCiAJLyoKIAkgKiBFeHRyYWN0IHRoZSBsaXN0IG9mIGNvbHVt biBuYW1lcyBhbmQgdGhlIGNvbHVtbiBudW1iZXJzIGZvciB0aGUgbmV3CkBAIC0xODk3LDYg KzE4OTgsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfc2V0X2RlYWQoT2lkIGhlYXBJZCwgT2lk IGluZGV4SWQpCiAgKgkJSU5ERVhfQ09OU1RSX0NSRUFURV9VUERBVEVfSU5ERVg6IHVwZGF0 ZSB0aGUgcGdfaW5kZXggcm93CiAgKgkJSU5ERVhfQ09OU1RSX0NSRUFURV9SRU1PVkVfT0xE X0RFUFM6IHJlbW92ZSBleGlzdGluZyBkZXBlbmRlbmNpZXMKICAqCQkJb2YgaW5kZXggb24g dGFibGUncyBjb2x1bW5zCisgKgkJSU5ERVhfQ09OU1RSX0NSRUFURV9URU1QT1JBTDogY29u c3RyYWludCBpcyBmb3IgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleQogICogYWxsb3dfc3lzdGVt X3RhYmxlX21vZHM6IGFsbG93IHRhYmxlIHRvIGJlIGEgc3lzdGVtIGNhdGFsb2cKICAqIGlz X2ludGVybmFsOiBpbmRleCBpcyBjb25zdHJ1Y3RlZCBkdWUgdG8gaW50ZXJuYWwgcHJvY2Vz cwogICovCkBAIC0xOTIwLDExICsxOTIyLDEzIEBAIGluZGV4X2NvbnN0cmFpbnRfY3JlYXRl KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlib29sCQltYXJrX2FzX3ByaW1hcnk7CiAJYm9v bAkJaXNsb2NhbDsKIAlib29sCQlub2luaGVyaXQ7CisJYm9vbAkJaXNfdGVtcG9yYWw7CiAJ aW50CQkJaW5oY291bnQ7CiAKIAlkZWZlcnJhYmxlID0gKGNvbnN0cl9mbGFncyAmIElOREVY X0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRSkgIT0gMDsKIAlpbml0ZGVmZXJyZWQgPSAoY29u c3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVEKSAhPSAwOwog CW1hcmtfYXNfcHJpbWFyeSA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRF X01BUktfQVNfUFJJTUFSWSkgIT0gMDsKKwlpc190ZW1wb3JhbCA9IChjb25zdHJfZmxhZ3Mg JiBJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMKSAhPSAwOwogCiAJLyogY29uc3RyYWlu dCBjcmVhdGlvbiBzdXBwb3J0IGRvZXNuJ3Qgd29yayB3aGlsZSBib290c3RyYXBwaW5nICov CiAJQXNzZXJ0KCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdNb2RlKCkpOwpAQCAtMjAwMSw2ICsy MDA1LDcgQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9u LAogCQkJCQkJCQkgICBpc2xvY2FsLAogCQkJCQkJCQkgICBpbmhjb3VudCwKIAkJCQkJCQkJ ICAgbm9pbmhlcml0LAorCQkJCQkJCQkgICBpc190ZW1wb3JhbCwJLyogY29udGVtcG9yYWwg Ki8KIAkJCQkJCQkJICAgaXNfaW50ZXJuYWwpOwogCiAJLyoKQEAgLTI0NTAsNyArMjQ1NSw4 IEBAIEJ1aWxkSW5kZXhJbmZvKFJlbGF0aW9uIGluZGV4KQogCQkJCQkgICBpbmRleFN0cnVj dC0+aW5kbnVsbHNub3RkaXN0aW5jdCwKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmluZGlzcmVh ZHksCiAJCQkJCSAgIGZhbHNlLAotCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFy aXppbmcpOworCQkJCQkgICBpbmRleC0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcsCisJCQkJ CSAgIGZhbHNlKTsKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3Ig KGkgPSAwOyBpIDwgbnVtQXR0czsgaSsrKQpAQCAtMjUxMSw3ICsyNTE3LDggQEAgQnVpbGRE dW1teUluZGV4SW5mbyhSZWxhdGlvbiBpbmRleCkKIAkJCQkJICAgaW5kZXhTdHJ1Y3QtPmlu ZG51bGxzbm90ZGlzdGluY3QsCiAJCQkJCSAgIGluZGV4U3RydWN0LT5pbmRpc3JlYWR5LAog CQkJCQkgICBmYWxzZSwKLQkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5n KTsKKwkJCQkJICAgaW5kZXgtPnJkX2luZGFtLT5hbXN1bW1hcml6aW5nLAorCQkJCQkgICBm YWxzZSk7CiAKIAkvKiBmaWxsIGluIGF0dHJpYnV0ZSBudW1iZXJzICovCiAJZm9yIChpID0g MDsgaSA8IG51bUF0dHM7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfY29uc3RyYWludC5jIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMK aW5kZXggZTlkNGQ2MDA2ZS4uZDUzMjljYThjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y2F0YWxvZy9wZ19jb25zdHJhaW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19j b25zdHJhaW50LmMKQEAgLTc4LDYgKzc4LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNv bnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJ CQkJICBpbnQgY29uSW5oQ291bnQsCiAJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJ CSAgYm9vbCBjb25UZW1wb3JhbCwKIAkJCQkJICBib29sIGlzX2ludGVybmFsKQogewogCVJl bGF0aW9uCWNvbkRlc2M7CkBAIC0xOTMsNiArMTk0LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVu dHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAogCXZhbHVlc1tBbnVtX3BnX2NvbnN0 cmFpbnRfY29uaXNsb2NhbCAtIDFdID0gQm9vbEdldERhdHVtKGNvbklzTG9jYWwpOwogCXZh bHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uaW5oY291bnQgLSAxXSA9IEludDE2R2V0RGF0 dW0oY29uSW5oQ291bnQpOwogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ubm9pbmhl cml0IC0gMV0gPSBCb29sR2V0RGF0dW0oY29uTm9Jbmhlcml0KTsKKwl2YWx1ZXNbQW51bV9w Z19jb25zdHJhaW50X2NvbnRlbXBvcmFsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uVGVtcG9y YWwpOwogCiAJaWYgKGNvbmtleUFycmF5KQogCQl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50 X2NvbmtleSAtIDFdID0gUG9pbnRlckdldERhdHVtKGNvbmtleUFycmF5KTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvaW5kZXhjbWRzLmMKaW5kZXggYWI4YjgxYjMwMi4uODdkNmJjMzMwNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvaW5kZXhjbWRzLmMKQEAgLTczLDYgKzczLDExIEBACiAvKiBub24tZXhw b3J0IGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KIHN0YXRpYyBib29sIENvbXBhcmVPcGNsYXNz T3B0aW9ucyhjb25zdCBEYXR1bSAqb3B0czEsIGNvbnN0IERhdHVtICpvcHRzMiwgaW50IG5h dHRzKTsKIHN0YXRpYyB2b2lkIENoZWNrUHJlZGljYXRlKEV4cHIgKnByZWRpY2F0ZSk7Citz dGF0aWMgdm9pZCBnZXRfaW5kZXhfYXR0cl90ZW1wb3JhbF9vcGVyYXRvcihPaWQgb3BjbGFz cywKKwkJCQkJCQkJCQkJIE9pZCBhdHR0eXBlLAorCQkJCQkJCQkJCQkgYm9vbCBpc292ZXJs YXBzLAorCQkJCQkJCQkJCQkgT2lkICpvcGlkLAorCQkJCQkJCQkJCQkgaW50ICpzdHJhdCk7 CiBzdGF0aWMgdm9pZCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywK IAkJCQkJCQkgIE9pZCAqdHlwZU9pZHMsCiAJCQkJCQkJICBPaWQgKmNvbGxhdGlvbk9pZHMs CkBAIC04NSw2ICs5MCw3IEBAIHN0YXRpYyB2b2lkIENvbXB1dGVJbmRleEF0dHJzKEluZGV4 SW5mbyAqaW5kZXhJbmZvLAogCQkJCQkJCSAgT2lkIGFjY2Vzc01ldGhvZElkLAogCQkJCQkJ CSAgYm9vbCBhbWNhbm9yZGVyLAogCQkJCQkJCSAgYm9vbCBpc2NvbnN0cmFpbnQsCisJCQkJ CQkJICBib29sIGlzdGVtcG9yYWwsCiAJCQkJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkJ CQkgIGludCBkZGxfc2VjX2NvbnRleHQsCiAJCQkJCQkJICBpbnQgKmRkbF9zYXZlX25lc3Rs ZXZlbCk7CkBAIC0xNDIsNiArMTQ4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEVycm9y SW5mbwogICoJCXRvIGluZGV4IG9uLgogICogJ2V4Y2x1c2lvbk9wTmFtZXMnOiBsaXN0IG9m IG5hbWVzIG9mIGV4Y2x1c2lvbi1jb25zdHJhaW50IG9wZXJhdG9ycywKICAqCQlvciBOSUwg aWYgbm90IGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50LgorICogJ2lzdGVtcG9yYWwnOiB0cnVl IGlmZiB0aGlzIGluZGV4IGhhcyBhIFdJVEhPVVQgT1ZFUkxBUFMgY2xhdXNlLgogICoKICAq IFRoaXMgaXMgdGFpbG9yZWQgdG8gdGhlIG5lZWRzIG9mIEFMVEVSIFRBQkxFIEFMVEVSIFRZ UEUsIHdoaWNoIHJlY3JlYXRlcwogICogYW55IGluZGV4ZXMgdGhhdCBkZXBlbmRlZCBvbiBh IGNoYW5naW5nIGNvbHVtbiBmcm9tIHRoZWlyIHBnX2dldF9pbmRleGRlZgpAQCAtMTcxLDcg KzE3OCw4IEBAIGJvb2wKIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJ IGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCSBjb25zdCBMaXN0ICphdHRy aWJ1dGVMaXN0LAotCQkJCQkgY29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJ IGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMsCisJCQkJCSBib29sIGlzdGVtcG9yYWwp CiB7CiAJYm9vbAkJaXNjb25zdHJhaW50OwogCU9pZAkJICAgKnR5cGVJZHM7CkBAIC0yMzQs NyArMjQyLDcgQEAgQ2hlY2tJbmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCSAqLwogCWlu ZGV4SW5mbyA9IG1ha2VJbmRleEluZm8obnVtYmVyT2ZBdHRyaWJ1dGVzLCBudW1iZXJPZkF0 dHJpYnV0ZXMsCiAJCQkJCQkJICBhY2Nlc3NNZXRob2RJZCwgTklMLCBOSUwsIGZhbHNlLCBm YWxzZSwKLQkJCQkJCQkgIGZhbHNlLCBmYWxzZSwgYW1zdW1tYXJpemluZyk7CisJCQkJCQkJ ICBmYWxzZSwgZmFsc2UsIGFtc3VtbWFyaXppbmcsIGZhbHNlKTsKIAl0eXBlSWRzID0gcGFs bG9jX2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKIAljb2xsYXRpb25JZHMgPSBw YWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwogCW9wY2xhc3NJZHMgPSBw YWxsb2NfYXJyYXkoT2lkLCBudW1iZXJPZkF0dHJpYnV0ZXMpOwpAQCAtMjQ0LDggKzI1Miw4 IEBAIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJICBjb2xvcHRpb25z LCBhdHRyaWJ1dGVMaXN0LAogCQkJCQkgIGV4Y2x1c2lvbk9wTmFtZXMsIHJlbGF0aW9uSWQs CiAJCQkJCSAgYWNjZXNzTWV0aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0JCQkJCSAgYW1j YW5vcmRlciwgaXNjb25zdHJhaW50LCBJbnZhbGlkT2lkLCAwLCBOVUxMKTsKLQorCQkJCQkg IGFtY2Fub3JkZXIsIGlzY29uc3RyYWludCwgaXN0ZW1wb3JhbCwgSW52YWxpZE9pZCwKKwkJ CQkJICAwLCBOVUxMKTsKIAogCS8qIEdldCB0aGUgc29vbi1vYnNvbGV0ZSBwZ19pbmRleCB0 dXBsZS4gKi8KIAl0dXBsZSA9IFNlYXJjaFN5c0NhY2hlMShJTkRFWFJFTElELCBPYmplY3RJ ZEdldERhdHVtKG9sZElkKSk7CkBAIC01NTMsNiArNTYxLDcgQEAgRGVmaW5lSW5kZXgoT2lk IHRhYmxlSWQsCiAJYm9vbAkJYW1jYW5vcmRlcjsKIAlib29sCQlhbWlzc3VtbWFyaXppbmc7 CiAJYW1vcHRpb25zX2Z1bmN0aW9uIGFtb3B0aW9uczsKKwlib29sCQlleGNsdXNpb247CiAJ Ym9vbAkJcGFydGl0aW9uZWQ7CiAJYm9vbAkJc2FmZV9pbmRleDsKIAlEYXR1bQkJcmVsb3B0 aW9uczsKQEAgLTY3MSw2ICs2ODAsMTIgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxlSWQsCiAK IAluYW1lc3BhY2VJZCA9IFJlbGF0aW9uR2V0TmFtZXNwYWNlKHJlbCk7CiAKKwkvKgorCSAq IEl0IGhhcyBleGNsdXNpb24gY29uc3RyYWludCBiZWhhdmlvciBpZiBpdCdzIGFuIEVYQ0xV REUgY29uc3RyYWludAorCSAqIG9yIGEgdGVtcG9yYWwgUFJJTUFSWSBLRVkvVU5JUVVFIGNv bnN0cmFpbnQKKwkgKi8KKwlleGNsdXNpb24gPSBzdG10LT5leGNsdWRlT3BOYW1lcyB8fCBz dG10LT5pc3RlbXBvcmFsOworCiAJLyogRW5zdXJlIHRoYXQgaXQgbWFrZXMgc2Vuc2UgdG8g aW5kZXggdGhpcyBraW5kIG9mIHJlbGF0aW9uICovCiAJc3dpdGNoIChyZWwtPnJkX3JlbC0+ cmVsa2luZCkKIAl7CkBAIC04MzksNyArODU0LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRhYmxl SWQsCiAJcGdzdGF0X3Byb2dyZXNzX3VwZGF0ZV9wYXJhbShQUk9HUkVTU19DUkVBVEVJRFhf QUNDRVNTX01FVEhPRF9PSUQsCiAJCQkJCQkJCSBhY2Nlc3NNZXRob2RJZCk7CiAKLQlpZiAo c3RtdC0+dW5pcXVlICYmICFhbVJvdXRpbmUtPmFtY2FudW5pcXVlKQorCWlmIChzdG10LT51 bmlxdWUgJiYgIXN0bXQtPmlzdGVtcG9yYWwgJiYgIWFtUm91dGluZS0+YW1jYW51bmlxdWUp CiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAogCQkJCSBlcnJtc2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRvZXMgbm90 IHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMiLApAQCAtODU0LDcgKzg2OSw3IEBAIERlZmluZUlu ZGV4KE9pZCB0YWJsZUlkLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKIAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0aG9kIFwiJXNcIiBkb2VzIG5vdCBz dXBwb3J0IG11bHRpY29sdW1uIGluZGV4ZXMiLAogCQkJCQkJYWNjZXNzTWV0aG9kTmFtZSkp KTsKLQlpZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMgJiYgYW1Sb3V0aW5lLT5hbWdldHR1cGxl ID09IE5VTEwpCisJaWYgKGV4Y2x1c2lvbiAmJiBhbVJvdXRpbmUtPmFtZ2V0dHVwbGUgPT0g TlVMTCkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVf Tk9UX1NVUFBPUlRFRCksCiAJCQkJIGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9l cyBub3Qgc3VwcG9ydCBleGNsdXNpb24gY29uc3RyYWludHMiLApAQCAtODk1LDcgKzkxMCw4 IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJCQkJCSAgc3RtdC0+bnVsbHNfbm90 X2Rpc3RpbmN0LAogCQkJCQkJCSAgIWNvbmN1cnJlbnQsCiAJCQkJCQkJICBjb25jdXJyZW50 LAotCQkJCQkJCSAgYW1pc3N1bW1hcml6aW5nKTsKKwkJCQkJCQkgIGFtaXNzdW1tYXJpemlu ZywKKwkJCQkJCQkgIHN0bXQtPmlzdGVtcG9yYWwpOwogCiAJdHlwZUlkcyA9IHBhbGxvY19h cnJheShPaWQsIG51bWJlck9mQXR0cmlidXRlcyk7CiAJY29sbGF0aW9uSWRzID0gcGFsbG9j X2FycmF5KE9pZCwgbnVtYmVyT2ZBdHRyaWJ1dGVzKTsKQEAgLTkwNiw4ICs5MjIsOSBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJICBjb2xvcHRpb25zLCBhbGxJbmRleFBh cmFtcywKIAkJCQkJICBzdG10LT5leGNsdWRlT3BOYW1lcywgdGFibGVJZCwKIAkJCQkJICBh Y2Nlc3NNZXRob2ROYW1lLCBhY2Nlc3NNZXRob2RJZCwKLQkJCQkJICBhbWNhbm9yZGVyLCBz dG10LT5pc2NvbnN0cmFpbnQsIHJvb3Rfc2F2ZV91c2VyaWQsCi0JCQkJCSAgcm9vdF9zYXZl X3NlY19jb250ZXh0LCAmcm9vdF9zYXZlX25lc3RsZXZlbCk7CisJCQkJCSAgYW1jYW5vcmRl ciwgc3RtdC0+aXNjb25zdHJhaW50LCBzdG10LT5pc3RlbXBvcmFsLAorCQkJCQkgIHJvb3Rf c2F2ZV91c2VyaWQsIHJvb3Rfc2F2ZV9zZWNfY29udGV4dCwKKwkJCQkJICAmcm9vdF9zYXZl X25lc3RsZXZlbCk7CiAKIAkvKgogCSAqIEV4dHJhIGNoZWNrcyB3aGVuIGNyZWF0aW5nIGEg UFJJTUFSWSBLRVkgaW5kZXguCkBAIC05MjUsNyArOTQyLDcgQEAgRGVmaW5lSW5kZXgoT2lk IHRhYmxlSWQsCiAJICogV2UgY291bGQgbGlmdCB0aGlzIGxpbWl0YXRpb24gaWYgd2UgaGFk IGdsb2JhbCBpbmRleGVzLCBidXQgdGhvc2UgaGF2ZQogCSAqIHRoZWlyIG93biBwcm9ibGVt cywgc28gdGhpcyBpcyBhIHVzZWZ1bCBmZWF0dXJlIGNvbWJpbmF0aW9uLgogCSAqLwotCWlm IChwYXJ0aXRpb25lZCAmJiAoc3RtdC0+dW5pcXVlIHx8IHN0bXQtPmV4Y2x1ZGVPcE5hbWVz KSkKKwlpZiAocGFydGl0aW9uZWQgJiYgKHN0bXQtPnVuaXF1ZSB8fCBleGNsdXNpb24pKQog CXsKIAkJUGFydGl0aW9uS2V5IGtleSA9IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHJlbCk7 CiAJCWNvbnN0IGNoYXIgKmNvbnN0cmFpbnRfdHlwZTsKQEAgLTkzMyw2ICs5NTAsOCBAQCBE ZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCQlpZiAoc3RtdC0+cHJpbWFyeSkKIAkJCWNv bnN0cmFpbnRfdHlwZSA9ICJQUklNQVJZIEtFWSI7CisJCWVsc2UgaWYgKHN0bXQtPnVuaXF1 ZSAmJiBzdG10LT5pc3RlbXBvcmFsKQorCQkJY29uc3RyYWludF90eXBlID0gInRlbXBvcmFs IFVOSVFVRSI7CiAJCWVsc2UgaWYgKHN0bXQtPnVuaXF1ZSkKIAkJCWNvbnN0cmFpbnRfdHlw ZSA9ICJVTklRVUUiOwogCQllbHNlIGlmIChzdG10LT5leGNsdWRlT3BOYW1lcykKQEAgLTk3 OSwxMCArOTk4LDEwIEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlkLAogCQkJICogYXNzb2Np YXRlZCB3aXRoIGluZGV4IGNvbHVtbnMsIHRvby4gIFdlIGtub3cgd2hhdCB0byBkbyB3aXRo CiAJCQkgKiBidHJlZSBvcGNsYXNzZXM7IGlmIHRoZXJlIGFyZSBldmVyIGFueSBvdGhlciBp bmRleCB0eXBlcyB0aGF0CiAJCQkgKiBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLCB0aGlzIGxv Z2ljIHdpbGwgbmVlZCBleHRlbnNpb24uIEJ1dCBpZgotCQkJICogd2UgaGF2ZSBhbiBleGNs dXNpb24gY29uc3RyYWludCwgaXQgYWxyZWFkeSBrbm93cyB0aGUKLQkJCSAqIG9wZXJhdG9y cywgc28gd2UgZG9uJ3QgaGF2ZSB0byBpbmZlciB0aGVtLgorCQkJICogd2UgaGF2ZSBhbiBl eGNsdXNpb24gY29uc3RyYWludCAob3IgYSB0ZW1wb3JhbCBQSyksIGl0IGFscmVhZHkKKwkJ CSAqIGtub3dzIHRoZSBvcGVyYXRvcnMsIHNvIHdlIGRvbid0IGhhdmUgdG8gaW5mZXIgdGhl bS4KIAkJCSAqLwotCQkJaWYgKHN0bXQtPnVuaXF1ZSAmJiBhY2Nlc3NNZXRob2RJZCAhPSBC VFJFRV9BTV9PSUQpCisJCQlpZiAoc3RtdC0+dW5pcXVlICYmICFzdG10LT5pc3RlbXBvcmFs ICYmIGFjY2Vzc01ldGhvZElkICE9IEJUUkVFX0FNX09JRCkKIAkJCQllcmVwb3J0KEVSUk9S LAogCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJ CQkJIGVycm1zZygiY2Fubm90IG1hdGNoIHBhcnRpdGlvbiBrZXkgdG8gYW4gaW5kZXggdXNp bmcgYWNjZXNzIG1ldGhvZCBcIiVzXCIiLApAQCAtMTAxNSwxMiArMTAzNCwxMiBAQCBEZWZp bmVJbmRleChPaWQgdGFibGVJZCwKIAkJCQkJewogCQkJCQkJT2lkCQkJaWR4X2Vxb3AgPSBJ bnZhbGlkT2lkOwogCi0JCQkJCQlpZiAoc3RtdC0+dW5pcXVlKQorCQkJCQkJaWYgKHN0bXQt PnVuaXF1ZSAmJiAhc3RtdC0+aXN0ZW1wb3JhbCkKIAkJCQkJCQlpZHhfZXFvcCA9IGdldF9v cGZhbWlseV9tZW1iZXIoaWR4X29wZmFtaWx5LAogCQkJCQkJCQkJCQkJCQkgICBpZHhfb3Bj aW50eXBlLAogCQkJCQkJCQkJCQkJCQkgICBpZHhfb3BjaW50eXBlLAogCQkJCQkJCQkJCQkJ CQkgICBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIpOwotCQkJCQkJZWxzZSBpZiAoc3RtdC0+ZXhj bHVkZU9wTmFtZXMpCisJCQkJCQllbHNlIGlmIChleGNsdXNpb24pCiAJCQkJCQkJaWR4X2Vx b3AgPSBpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wc1tqXTsKIAkJCQkJCUFzc2VydChpZHhf ZXFvcCk7CiAKQEAgLTEwMjksNyArMTA0OCw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJsZUlk LAogCQkJCQkJCWZvdW5kID0gdHJ1ZTsKIAkJCQkJCQlicmVhazsKIAkJCQkJCX0KLQkJCQkJ CWVsc2UgaWYgKHN0bXQtPmV4Y2x1ZGVPcE5hbWVzKQorCQkJCQkJZWxzZSBpZiAoZXhjbHVz aW9uKQogCQkJCQkJewogCQkJCQkJCS8qCiAJCQkJCQkJICogV2UgZm91bmQgYSBtYXRjaCwg YnV0IGl0J3Mgbm90IGFuIGVxdWFsaXR5CkBAIC0xMTczLDYgKzExOTIsOCBAQCBEZWZpbmVJ bmRleChPaWQgdGFibGVJZCwKIAkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVB VEVfREVGRVJSQUJMRTsKIAlpZiAoc3RtdC0+aW5pdGRlZmVycmVkKQogCQljb25zdHJfZmxh Z3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9JTklUX0RFRkVSUkVEOworCWlmIChzdG10LT5p c3RlbXBvcmFsKQorCQljb25zdHJfZmxhZ3MgfD0gSU5ERVhfQ09OU1RSX0NSRUFURV9URU1Q T1JBTDsKIAogCWluZGV4UmVsYXRpb25JZCA9CiAJCWluZGV4X2NyZWF0ZShyZWwsIGluZGV4 UmVsYXRpb25OYW1lLCBpbmRleFJlbGF0aW9uSWQsIHBhcmVudEluZGV4SWQsCkBAIC0xODQx LDYgKzE4NjIsOTEgQEAgQ2hlY2tQcmVkaWNhdGUoRXhwciAqcHJlZGljYXRlKQogCQkJCSBl cnJtc2coImZ1bmN0aW9ucyBpbiBpbmRleCBwcmVkaWNhdGUgbXVzdCBiZSBtYXJrZWQgSU1N VVRBQkxFIikpKTsKIH0KIAorLyoKKyAqIGdldF9pbmRleF9hdHRyX3RlbXBvcmFsX29wZXJh dG9yCisgKgorICogRmluZHMgYW4gb3BlcmF0b3IgZm9yIGEgdGVtcG9yYWwgaW5kZXggYXR0 cmlidXRlLgorICogV2UgbmVlZCBhbiBlcXVhbGl0eSBvcGVyYXRvciBmb3Igbm9ybWFsIGtl eXMKKyAqIGFuZCBhbiBvdmVybGFwcyBvcGVyYXRvciBmb3IgdGhlIHJhbmdlLgorICogUmV0 dXJucyB0aGUgb3BlcmF0b3Igb2lkIGFuZCBzdHJhdGVneSBpbiBvcGlkIGFuZCBzdHJhdCwK KyAqIHJlc3BlY3RpdmVseS4KKyAqLworc3RhdGljIHZvaWQKK2dldF9pbmRleF9hdHRyX3Rl bXBvcmFsX29wZXJhdG9yKE9pZCBvcGNsYXNzLAorCQkJCQkJCQkgT2lkIGF0dHR5cGUsCisJ CQkJCQkJCSBib29sIGlzb3ZlcmxhcHMsCisJCQkJCQkJCSBPaWQgKm9waWQsCisJCQkJCQkJ CSBpbnQgKnN0cmF0KQoreworCU9pZCBvcGZhbWlseTsKKwljb25zdCBjaGFyICpvcG5hbWU7 CisKKwlvcGZhbWlseSA9IGdldF9vcGNsYXNzX2ZhbWlseShvcGNsYXNzKTsKKwkvKgorCSAq IElmIHdlIGhhdmUgYSByYW5nZSB0eXBlLCBmYWxsIGJhY2sgb24gYW55cmFuZ2UuCisJICog VGhpcyBzZWVtcyBsaWtlIGEgaGFjaworCSAqIGJ1dCBJIGNhbid0IGZpbmQgYW55IGV4aXN0 aW5nIGxvb2t1cCBmdW5jdGlvbgorCSAqIHRoYXQga25vd3MgYWJvdXQgcHNldWRvdHlwZXMu CisJICogY29tcGF0aWJsZV9vcGVyIGlzIGNsb3NlIGJ1dCB3YW50cyBhICpuYW1lKiwKKwkg KiBhbmQgdGhlIHBvaW50IGhlcmUgaXMgdG8gYXZvaWQgaGFyZGNvZGluZyBhIG5hbWUKKwkg KiAoYWx0aG91Z2ggaXQgc2hvdWxkIGFsd2F5cyBiZSA9IGFuZCAmJikuCisJICoKKwkgKiBJ biBhZGRpdGlvbiBmb3IgdGhlIG5vcm1hbCBrZXkgZWxlbWVudHMKKwkgKiB0cnkgYm90aCBS VEVxdWFsU3RyYXRlZ3lOdW1iZXIgYW5kIEJURXF1YWxTdHJhdGVneU51bWJlci4KKwkgKiBJ ZiB5b3UncmUgdXNpbmcgYnRyZWVfZ2lzdCB0aGVuIHlvdSdsbCBuZWVkIHRoZSBsYXR0ZXIu CisJICovCisJaWYgKGlzb3ZlcmxhcHMpCisJeworCQkqc3RyYXQgPSBSVE92ZXJsYXBTdHJh dGVneU51bWJlcjsKKwkJb3BuYW1lID0gIm92ZXJsYXBzIjsKKwkJKm9waWQgPSBnZXRfb3Bm YW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBhdHR0eXBlLCBhdHR0eXBlLCAqc3RyYXQpOworCQlp ZiAoIU9pZElzVmFsaWQoKm9waWQpICYmIHR5cGVfaXNfcmFuZ2UoYXR0dHlwZSkpCisJCQkq b3BpZCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIEFOWVJBTkdFT0lELCBBTllS QU5HRU9JRCwgKnN0cmF0KTsKKwl9CisJZWxzZQorCXsKKwkJKnN0cmF0ID0gUlRFcXVhbFN0 cmF0ZWd5TnVtYmVyOworCQlvcG5hbWUgPSAiZXF1YWxpdHkiOworCQkqb3BpZCA9IGdldF9v cGZhbWlseV9tZW1iZXIob3BmYW1pbHksIGF0dHR5cGUsIGF0dHR5cGUsICpzdHJhdCk7CisJ CWlmICghT2lkSXNWYWxpZCgqb3BpZCkgJiYgdHlwZV9pc19yYW5nZShhdHR0eXBlKSkKKwkJ CSpvcGlkID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWlseSwgQU5ZUkFOR0VPSUQsIEFO WVJBTkdFT0lELCAqc3RyYXQpOworCisJCWlmICghT2lkSXNWYWxpZCgqb3BpZCkpCisJCXsK KwkJCSpzdHJhdCA9IEJURXF1YWxTdHJhdGVneU51bWJlcjsKKwkJCSpvcGlkID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgYXR0dHlwZSwgYXR0dHlwZSwgKnN0cmF0KTsKKwkJ CWlmICghT2lkSXNWYWxpZCgqb3BpZCkgJiYgdHlwZV9pc19yYW5nZShhdHR0eXBlKSkKKwkJ CQkqb3BpZCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIEFOWVJBTkdFT0lELCBB TllSQU5HRU9JRCwgKnN0cmF0KTsKKwkJfQorCX0KKworCWlmICghT2lkSXNWYWxpZCgqb3Bp ZCkpCisJeworCQlIZWFwVHVwbGUJb3BmdHVwbGU7CisJCUZvcm1fcGdfb3BmYW1pbHkgb3Bm Zm9ybTsKKworCQkvKgorCQkgKiBhdHRyaWJ1dGUtPm9wY2xhc3MgbWlnaHQgbm90IGV4cGxp Y2l0bHkgbmFtZSB0aGUgb3BmYW1pbHksCisJCSAqIHNvIGZldGNoIHRoZSBuYW1lIG9mIHRo ZSBzZWxlY3RlZCBvcGZhbWlseSBmb3IgdXNlIGluIHRoZQorCQkgKiBlcnJvciBtZXNzYWdl LgorCQkgKi8KKwkJb3BmdHVwbGUgPSBTZWFyY2hTeXNDYWNoZTEoT1BGQU1JTFlPSUQsCisJ CQkJCQkJCSAgIE9iamVjdElkR2V0RGF0dW0ob3BmYW1pbHkpKTsKKwkJaWYgKCFIZWFwVHVw bGVJc1ZhbGlkKG9wZnR1cGxlKSkKKwkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFp bGVkIGZvciBvcGZhbWlseSAldSIsCisJCQkJIG9wZmFtaWx5KTsKKwkJb3BmZm9ybSA9IChG b3JtX3BnX29wZmFtaWx5KSBHRVRTVFJVQ1Qob3BmdHVwbGUpOworCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkgZXJy bXNnKCJubyAlcyBvcGVyYXRvciBmb3VuZCBmb3IgV0lUSE9VVCBPVkVSTEFQUyBjb25zdHJh aW50Iiwgb3BuYW1lKSwKKwkJCQkgZXJyZGV0YWlsKCJUaGVyZSBtdXN0IGJlIGFuICVzIG9w ZXJhdG9yIHdpdGhpbiBvcGZhbWlseSBcIiVzXCIgZm9yIHR5cGUgXCIlc1wiLiIsCisJCQkJ CQkgICBvcG5hbWUsCisJCQkJCQkgICBOYW1lU3RyKG9wZmZvcm0tPm9wZm5hbWUpLAorCQkJ CQkJICAgZm9ybWF0X3R5cGVfYmUoYXR0dHlwZSkpKSk7CisJfQorfQorCiAvKgogICogQ29t cHV0ZSBwZXItaW5kZXgtY29sdW1uIGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgaW5kZXhlZCBj b2x1bW4gbnVtYmVycwogICogb3IgaW5kZXggZXhwcmVzc2lvbnMsIG9wY2xhc3NlcyBhbmQg dGhlaXIgb3B0aW9ucy4gTm90ZSwgYWxsIG91dHB1dCB2ZWN0b3JzCkBAIC0xODYzLDYgKzE5 NjksNyBAQCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkg IE9pZCBhY2Nlc3NNZXRob2RJZCwKIAkJCQkgIGJvb2wgYW1jYW5vcmRlciwKIAkJCQkgIGJv b2wgaXNjb25zdHJhaW50LAorCQkJCSAgYm9vbCBpc3RlbXBvcmFsLAogCQkJCSAgT2lkIGRk bF91c2VyaWQsCiAJCQkJICBpbnQgZGRsX3NlY19jb250ZXh0LAogCQkJCSAgaW50ICpkZGxf c2F2ZV9uZXN0bGV2ZWwpCkBAIC0xODg2LDYgKzE5OTMsMTQgQEAgQ29tcHV0ZUluZGV4QXR0 cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJZWxzZQogCQluZXh0RXhjbE9wID0gTlVMTDsK IAorCS8qIGV4Y2x1c2lvbk9wTmFtZXMgY2FuIGJlIG5vbi1OSUwgaWYgd2UgYXJlIGNyZWF0 aW5nIGEgcGFydGl0aW9uICovCisJaWYgKGlzdGVtcG9yYWwgJiYgZXhjbHVzaW9uT3BOYW1l cyA9PSBOSUwpCisJeworCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wcyA9IHBhbGxvY19h cnJheShPaWQsIG5rZXljb2xzKTsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25Qcm9jcyA9 IHBhbGxvY19hcnJheShPaWQsIG5rZXljb2xzKTsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNp b25TdHJhdHMgPSBwYWxsb2NfYXJyYXkodWludDE2LCBua2V5Y29scyk7CisJfQorCiAJaWYg KE9pZElzVmFsaWQoZGRsX3VzZXJpZCkpCiAJCUdldFVzZXJJZEFuZFNlY0NvbnRleHQoJnNh dmVfdXNlcmlkLCAmc2F2ZV9zZWNfY29udGV4dCk7CiAKQEAgLTIxNjEsNiArMjI3NiwxOSBA QCBDb21wdXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCWluZGV4SW5m by0+aWlfRXhjbHVzaW9uU3RyYXRzW2F0dG5dID0gc3RyYXQ7CiAJCQluZXh0RXhjbE9wID0g bG5leHQoZXhjbHVzaW9uT3BOYW1lcywgbmV4dEV4Y2xPcCk7CiAJCX0KKwkJZWxzZSBpZiAo aXN0ZW1wb3JhbCkKKwkJeworCQkJaW50IHN0cmF0OworCQkJT2lkIG9waWQ7CisJCQlnZXRf aW5kZXhfYXR0cl90ZW1wb3JhbF9vcGVyYXRvcihvcGNsYXNzT2lkc1thdHRuXSwKKwkJCQkJ CQkJCQkJIGF0dHR5cGUsCisJCQkJCQkJCQkJCSBhdHRuID09IG5rZXljb2xzIC0gMSwJLyog VE9ETzogRG9uJ3QgYXNzdW1lIGl0J3MgbGFzdD8gKi8KKwkJCQkJCQkJCQkJICZvcGlkLAor CQkJCQkJCQkJCQkgJnN0cmF0KTsKKwkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uT3BzW2F0 dG5dID0gb3BpZDsKKwkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uUHJvY3NbYXR0bl0gPSBn ZXRfb3Bjb2RlKG9waWQpOworCQkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25TdHJhdHNbYXR0 bl0gPSBzdHJhdDsKKwkJfQogCiAJCS8qCiAJCSAqIFNldCB1cCB0aGUgcGVyLWNvbHVtbiBv cHRpb25zIChpbmRvcHRpb24gZmllbGQpLiAgRm9yIG5vdywgdGhpcyBpcwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYwppbmRleCBkMDk3ZGEzYzc4Li43NjhlYWExZGViIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMjA4LDYgKzIwOCw3IEBAIHR5cGVkZWYgc3Ry dWN0IE5ld0NvbnN0cmFpbnQKIAlPaWQJCQlyZWZyZWxpZDsJCS8qIFBLIHJlbCwgaWYgRk9S RUlHTiAqLwogCU9pZAkJCXJlZmluZGlkOwkJLyogT0lEIG9mIFBLJ3MgaW5kZXgsIGlmIEZP UkVJR04gKi8KIAlPaWQJCQljb25pZDsJCQkvKiBPSUQgb2YgcGdfY29uc3RyYWludCBlbnRy eSwgaWYgRk9SRUlHTiAqLworCWJvb2wJCWNvbnRlbXBvcmFsOwkvKiBXaGV0aGVyIHRoZSBu ZXcgY29uc3RyYWludCBpcyB0ZW1wb3JhbCAqLwogCU5vZGUJICAgKnF1YWw7CQkJLyogQ2hl Y2sgZXhwciBvciBDT05TVFJfRk9SRUlHTiBDb25zdHJhaW50ICovCiAJRXhwclN0YXRlICAq cXVhbHN0YXRlOwkJLyogRXhlY3V0aW9uIHN0YXRlIGZvciBDSEVDSyBleHByICovCiB9IE5l d0NvbnN0cmFpbnQ7CkBAIC05OTk4LDYgKzk5OTksNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVu Y2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24g cmVsLAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkg IGNvbmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJICBjb25ub2luaGVyaXQs IC8qIGNvbk5vSW5oZXJpdCAqLworCQkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwg Ki8KIAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRk cmVzc1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAg LTEwMjk2LDYgKzEwMjk4LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndx dWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJ CQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJ CSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCiAJCQkJCQkJCQkgIGZhbHNlKTsKIAogCQkJ LyoKQEAgLTEwODAxLDYgKzEwODA0LDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3 cXVldWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJ ICBmYWxzZSwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkgIDEsCS8qIGluaGNvdW50ICovCiAJ CQkJCQkJCSAgZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAqLworCQkJCQkJCQkgIGZhbHNlLAkv KiBjb25UZW1wb3JhbCAqLwogCQkJCQkJCQkgIHRydWUpOwogCiAJCS8qIFNldCB1cCBwYXJ0 aXRpb24gZGVwZW5kZW5jaWVzIGZvciB0aGUgbmV3IGNvbnN0cmFpbnQgKi8KQEAgLTExNDc1 LDYgKzExNDc5LDcgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUs IFJlbGF0aW9uIHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQg PSBjb24tPmNvbmZyZWxpZDsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBjb24tPmNvbmluZGlk OwogCQkJbmV3Y29uLT5jb25pZCA9IGNvbi0+b2lkOworCQkJbmV3Y29uLT5jb250ZW1wb3Jh bCA9IGNvbi0+Y29udGVtcG9yYWw7CiAJCQluZXdjb24tPnF1YWwgPSAoTm9kZSAqKSBma2Nv bnN0cmFpbnQ7CiAKIAkJCS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9y IHRoaXMgdGFibGUgKi8KQEAgLTExNjQxLDEwICsxMTY0NiwxMiBAQCB0cmFuc2Zvcm1Db2x1 bW5OYW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNvbExpc3QsCiAgKgogICoJTG9vayB1cCB0 aGUgbmFtZXMsIGF0dG51bXMsIGFuZCB0eXBlcyBvZiB0aGUgcHJpbWFyeSBrZXkgYXR0cmli dXRlcwogICoJZm9yIHRoZSBwa3JlbC4gIEFsc28gcmV0dXJuIHRoZSBpbmRleCBPSUQgYW5k IGluZGV4IG9wY2xhc3NlcyBvZiB0aGUKLSAqCWluZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1h cnkga2V5LgorICoJaW5kZXggc3VwcG9ydGluZyB0aGUgcHJpbWFyeSBrZXkuICBJZiB0aGlz IGlzIGEgdGVtcG9yYWwgcHJpbWFyeSBrZXksCisgKglhbHNvIHNldCB0aGUgV0lUSE9VVCBP VkVSTEFQUyBhdHRyaWJ1dGUgbmFtZSwgYXR0bnVtLCBhbmQgYXR0dHlwaWQuCiAgKgogICoJ QWxsIHBhcmFtZXRlcnMgZXhjZXB0IHBrcmVsIGFyZSBvdXRwdXQgcGFyYW1ldGVycy4gIEFs c28sIHRoZSBmdW5jdGlvbgotICoJcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYXR0 cmlidXRlcyBpbiB0aGUgcHJpbWFyeSBrZXkuCisgKglyZXR1cm4gdmFsdWUgaXMgdGhlIG51 bWJlciBvZiBhdHRyaWJ1dGVzIGluIHRoZSBwcmltYXJ5IGtleSwKKyAqCW5vdCBpbmNsdWRp bmcgdGhlIFdJVEhPVVQgT1ZFUkxBUFMgaWYgYW55LgogICoKICAqCVVzZWQgd2hlbiB0aGUg Y29sdW1uIGxpc3QgaW4gdGhlIFJFRkVSRU5DRVMgc3BlY2lmaWNhdGlvbiBpcyBvbWl0dGVk LgogICovCkBAIC0xNDE4Nyw3ICsxNDE5NCw4IEBAIFRyeVJldXNlSW5kZXgoT2lkIG9sZElk LCBJbmRleFN0bXQgKnN0bXQpCiAJaWYgKENoZWNrSW5kZXhDb21wYXRpYmxlKG9sZElkLAog CQkJCQkJCSBzdG10LT5hY2Nlc3NNZXRob2QsCiAJCQkJCQkJIHN0bXQtPmluZGV4UGFyYW1z LAotCQkJCQkJCSBzdG10LT5leGNsdWRlT3BOYW1lcykpCisJCQkJCQkJIHN0bXQtPmV4Y2x1 ZGVPcE5hbWVzLAorCQkJCQkJCSBzdG10LT5pc3RlbXBvcmFsKSkKIAl7CiAJCVJlbGF0aW9u CWlyZWwgPSBpbmRleF9vcGVuKG9sZElkLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmln Z2VyLmMKaW5kZXggNTIxNzc3NTlhYi4uMDU3N2I2MDQxNSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3Ry aWdnZXIuYwpAQCAtODQxLDYgKzg0MSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVh dGVUcmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJ CSAgdHJ1ZSwgLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICov CiAJCQkJCQkJCQkJCSAgdHJ1ZSwgLyogbm9pbmhlcml0ICovCisJCQkJCQkJCQkJCSAgZmFs c2UsIC8qIGNvbnRlbXBvcmFsICovCiAJCQkJCQkJCQkJCSAgaXNJbnRlcm5hbCk7CS8qIGlz X2ludGVybmFsICovCiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 eXBlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCA1ZTk3 NjA2NzkzLi42ZDBlOTQ2Njg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90 eXBlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTM1 NDQsNiArMzU0NCw3IEBAIGRvbWFpbkFkZENvbnN0cmFpbnQoT2lkIGRvbWFpbk9pZCwgT2lk IGRvbWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAgdHJ1ZSwgLyog aXMgbG9jYWwgKi8KIAkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJICBmYWxz ZSwJLyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwg Ki8KIAkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAlpZiAoY29uc3RyQWRk cikKIAkJT2JqZWN0QWRkcmVzc1NldCgqY29uc3RyQWRkciwgQ29uc3RyYWludFJlbGF0aW9u SWQsIGNjb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5j IGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKaW5kZXggMGU3ZTZlNDZkOS4uMTlk ZmFjNWYyNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTc0NSw3ICs3NDUsNyBAQCBt YWtlX2FuZHNfaW1wbGljaXQoRXhwciAqY2xhdXNlKQogSW5kZXhJbmZvICoKIG1ha2VJbmRl eEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0cnMsIE9pZCBhbW9pZCwgTGlzdCAq ZXhwcmVzc2lvbnMsCiAJCQkgIExpc3QgKnByZWRpY2F0ZXMsIGJvb2wgdW5pcXVlLCBib29s IG51bGxzX25vdF9kaXN0aW5jdCwKLQkJCSAgYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJl bnQsIGJvb2wgc3VtbWFyaXppbmcpCisJCQkgIGJvb2wgaXNyZWFkeSwgYm9vbCBjb25jdXJy ZW50LCBib29sIHN1bW1hcml6aW5nLCBib29sIHRlbXBvcmFsKQogewogCUluZGV4SW5mbyAg Km4gPSBtYWtlTm9kZShJbmRleEluZm8pOwogCkBAIC03NTUsNiArNzU1LDcgQEAgbWFrZUlu ZGV4SW5mbyhpbnQgbnVtYXR0cnMsIGludCBudW1rZXlhdHRycywgT2lkIGFtb2lkLCBMaXN0 ICpleHByZXNzaW9ucywKIAlBc3NlcnQobi0+aWlfTnVtSW5kZXhLZXlBdHRycyA8PSBuLT5p aV9OdW1JbmRleEF0dHJzKTsKIAluLT5paV9VbmlxdWUgPSB1bmlxdWU7CiAJbi0+aWlfTnVs bHNOb3REaXN0aW5jdCA9IG51bGxzX25vdF9kaXN0aW5jdDsKKwluLT5paV9UZW1wb3JhbCA9 IHRlbXBvcmFsOwogCW4tPmlpX1JlYWR5Rm9ySW5zZXJ0cyA9IGlzcmVhZHk7CiAJbi0+aWlf Q2hlY2tlZFVuY2hhbmdlZCA9IGZhbHNlOwogCW4tPmlpX0luZGV4VW5jaGFuZ2VkID0gZmFs c2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQppbmRleCA3ZDIwMzI4ODVlLi5jYTZkMTNkMzQ5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKQEAgLTUyMyw3ICs1MjMsOCBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxlbWVudCBDb25zdHJh aW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9kZT4JY29sdW1uRGVmIGNvbHVt bk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlvbl9lbGVtIG9sZF9h Z2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxub2RlPglkZWZfYXJnIGNvbHVt bkVsZW0gd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCisldHlwZSA8bm9k ZT4JZGVmX2FyZyBjb2x1bW5FbGVtIHdpdGhvdXRPdmVybGFwc0NsYXVzZQorCQkJCXdoZXJl X2NsYXVzZSB3aGVyZV9vcl9jdXJyZW50X2NsYXVzZQogCQkJCWFfZXhwciBiX2V4cHIgY19l eHByIEFleHByQ29uc3QgaW5kaXJlY3Rpb25fZWwgb3B0X3NsaWNlX2JvdW5kCiAJCQkJY29s dW1ucmVmIGluX2V4cHIgaGF2aW5nX2NsYXVzZSBmdW5jX3RhYmxlIHhtbHRhYmxlIGFycmF5 X2V4cHIKIAkJCQlPcHRXaGVyZUNsYXVzZSBvcGVyYXRvcl9kZWZfYXJnCkBAIC0zODc2LDYg KzM4NzcsNyBAQCBDb2xDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNU Ul9QUklNQVJZOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQluLT5rZXlzID0gTlVM TDsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9IE5VTEw7CiAJCQkJCW4tPm9wdGlvbnMg PSAkMzsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsKIAkJCQkJbi0+aW5kZXhzcGFjZSA9 ICQ0OwpAQCAtNDA5Niw3ICs0MDk4LDcgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmlu aXRpYWxseV92YWxpZCA9IHRydWU7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0J CQl8IFVOSVFVRSBvcHRfdW5pcXVlX251bGxfdHJlYXRtZW50ICcoJyBjb2x1bW5MaXN0ICcp JyBvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCisJCQl8 IFVOSVFVRSBvcHRfdW5pcXVlX251bGxfdHJlYXRtZW50ICcoJyBjb2x1bW5MaXN0IHdpdGhv dXRPdmVybGFwc0NsYXVzZSAnKScgb3B0X2NfaW5jbHVkZSBvcHRfZGVmaW5pdGlvbiBPcHRD b25zVGFibGVTcGFjZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJ CQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CkBAIC00MTA1LDExICs0 MTA3LDEyIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJ CQluLT5udWxsc19ub3RfZGlzdGluY3QgPSAhJDI7CiAJCQkJCW4tPmtleXMgPSAkNDsKLQkJ CQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0JCQkJCW4tPm9wdGlvbnMgPSAkNzsKKwkJCQkJbi0+ d2l0aG91dF9vdmVybGFwcyA9ICQ1OworCQkJCQluLT5pbmNsdWRpbmcgPSAkNzsKKwkJCQkJ bi0+b3B0aW9ucyA9ICQ4OwogCQkJCQluLT5pbmRleG5hbWUgPSBOVUxMOwotCQkJCQluLT5p bmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQ5LCBAOSwgIlVOSVFVRSIs CisJCQkJCW4tPmluZGV4c3BhY2UgPSAkOTsKKwkJCQkJcHJvY2Vzc0NBU2JpdHMoJDEwLCBA MTAsICJVTklRVUUiLAogCQkJCQkJCQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZl cnJlZCwgTlVMTCwKIAkJCQkJCQkJICAgTlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwpAQCAtNDEzMCw3ICs0MTMzLDcgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJ CQkJCSAgIE5VTEwsIHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 Ci0JCQl8IFBSSU1BUlkgS0VZICcoJyBjb2x1bW5MaXN0ICcpJyBvcHRfY19pbmNsdWRlIG9w dF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCisJCQl8IFBSSU1BUlkgS0VZICcoJyBj b2x1bW5MaXN0IHdpdGhvdXRPdmVybGFwc0NsYXVzZSAnKScgb3B0X2NfaW5jbHVkZSBvcHRf ZGVmaW5pdGlvbiBPcHRDb25zVGFibGVTcGFjZQogCQkJCUNvbnN0cmFpbnRBdHRyaWJ1dGVT cGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7 CkBAIC00MTM4LDExICs0MTQxLDEyIEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5jb250 eXBlID0gQ09OU1RSX1BSSU1BUlk7CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCW4t PmtleXMgPSAkNDsKLQkJCQkJbi0+aW5jbHVkaW5nID0gJDY7Ci0JCQkJCW4tPm9wdGlvbnMg PSAkNzsKKwkJCQkJbi0+d2l0aG91dF9vdmVybGFwcyA9ICQ1OworCQkJCQluLT5pbmNsdWRp bmcgPSAkNzsKKwkJCQkJbi0+b3B0aW9ucyA9ICQ4OwogCQkJCQluLT5pbmRleG5hbWUgPSBO VUxMOwotCQkJCQluLT5pbmRleHNwYWNlID0gJDg7Ci0JCQkJCXByb2Nlc3NDQVNiaXRzKCQ5 LCBAOSwgIlBSSU1BUlkgS0VZIiwKKwkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ5OworCQkJCQlw cm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlBSSU1BUlkgS0VZIiwKIAkJCQkJCQkJICAgJm4t PmRlZmVycmFibGUsICZuLT5pbml0ZGVmZXJyZWQsIE5VTEwsCiAJCQkJCQkJCSAgIE5VTEws IHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKQEAgLTQxNTQsNiArNDE1OCw3 IEBAIENvbnN0cmFpbnRFbGVtOgogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX1BSSU1BUlk7 CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCW4tPmtleXMgPSBOSUw7CisJCQkJCW4t PndpdGhvdXRfb3ZlcmxhcHMgPSBOVUxMOwogCQkJCQluLT5pbmNsdWRpbmcgPSBOSUw7CiAJ CQkJCW4tPm9wdGlvbnMgPSBOSUw7CiAJCQkJCW4tPmluZGV4bmFtZSA9ICQzOwpAQCAtNDIy MCw2ICs0MjI1LDExIEBAIGNvbHVtbkxpc3Q6CiAJCQl8IGNvbHVtbkxpc3QgJywnIGNvbHVt bkVsZW0JCQkJeyAkJCA9IGxhcHBlbmQoJDEsICQzKTsgfQogCQk7CiAKK3dpdGhvdXRPdmVy bGFwc0NsYXVzZToKKwkJCScsJyBjb2x1bW5FbGVtIFdJVEhPVVQgT1ZFUkxBUFMgeyAkJCA9 ICQyOyB9CisJCQl8IC8qRU1QVFkqLyAgICAgICAgICAgICAgIHsgJCQgPSBOVUxMOyB9CisJ OworCiBjb2x1bW5FbGVtOiBDb2xJZAogCQkJCXsKIAkJCQkJJCQgPSAoTm9kZSAqKSBtYWtl U3RyaW5nKCQxKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCmluZGV4IDU1YzMx NWYwZTIuLjY3MjNhNzRmMmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV91dGlsY21kLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwpA QCAtMTI0LDYgKzEyNCw4IEBAIHN0YXRpYyBMaXN0ICpnZXRfb3BjbGFzcyhPaWQgb3BjbGFz cywgT2lkIGFjdHVhbF9kYXRhdHlwZSk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1JbmRleENv bnN0cmFpbnRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpOwogc3RhdGljIEluZGV4U3RtdCAq dHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNvbnN0cmFpbnQsCiAJCQkJ CQkJCQkJICAgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCk7CitzdGF0aWMgYm9vbCBmaW5kTmV3 T3JPbGRDb2x1bW4oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgY2hhciAqY29sbmFtZSwgY2hh ciAqKnR5cG5hbWUsCisJCQkJCQkJICAgT2lkICp0eXBpZCk7CiBzdGF0aWMgdm9pZCB0cmFu c2Zvcm1FeHRlbmRlZFN0YXRpc3RpY3MoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCk7CiBzdGF0 aWMgdm9pZCB0cmFuc2Zvcm1GS0NvbnN0cmFpbnRzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs CiAJCQkJCQkJCSAgIGJvb2wgc2tpcFZhbGlkYXRpb24sCkBAIC0xNzI1LDYgKzE3MjcsNyBA QCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24g c291cmNlX2lkeCwKIAlpbmRleC0+dW5pcXVlID0gaWR4cmVjLT5pbmRpc3VuaXF1ZTsKIAlp bmRleC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gaWR4cmVjLT5pbmRudWxsc25vdGRpc3RpbmN0 OwogCWluZGV4LT5wcmltYXJ5ID0gaWR4cmVjLT5pbmRpc3ByaW1hcnk7CisJaW5kZXgtPmlz dGVtcG9yYWwgPSAoaWR4cmVjLT5pbmRpc3ByaW1hcnkgfHwgaWR4cmVjLT5pbmRpc3VuaXF1 ZSkgJiYgaWR4cmVjLT5pbmRpc2V4Y2x1c2lvbjsKIAlpbmRleC0+dHJhbnNmb3JtZWQgPSB0 cnVlOwkvKiBkb24ndCBuZWVkIHRyYW5zZm9ybUluZGV4U3RtdCAqLwogCWluZGV4LT5jb25j dXJyZW50ID0gZmFsc2U7CiAJaW5kZXgtPmlmX25vdF9leGlzdHMgPSBmYWxzZTsKQEAgLTE3 NzQsNyArMTc3Nyw5IEBAIGdlbmVyYXRlQ2xvbmVkSW5kZXhTdG10KFJhbmdlVmFyICpoZWFw UmVsLCBSZWxhdGlvbiBzb3VyY2VfaWR4LAogCQkJCWludAkJCW5FbGVtczsKIAkJCQlpbnQJ CQlpOwogCi0JCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xV U0lPTik7CisJCQkJQXNzZXJ0KGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX0VYQ0xV U0lPTiB8fAorCQkJCQkJKGluZGV4LT5pc3RlbXBvcmFsICYmCisJCQkJCQkgKGNvbnJlYy0+ Y29udHlwZSA9PSBDT05TVFJBSU5UX1BSSU1BUlkgfHwgY29ucmVjLT5jb250eXBlID09IENP TlNUUkFJTlRfVU5JUVVFKSkpOwogCQkJCS8qIEV4dHJhY3Qgb3BlcmF0b3IgT0lEcyBmcm9t IHRoZSBwZ19jb25zdHJhaW50IHR1cGxlICovCiAJCQkJZGF0dW0gPSBTeXNDYWNoZUdldEF0 dHJOb3ROdWxsKENPTlNUUk9JRCwgaHRfY29uc3RyLAogCQkJCQkJCQkJCQkgICBBbnVtX3Bn X2NvbnN0cmFpbnRfY29uZXhjbG9wKTsKQEAgLTIzMTQsNiArMjMxOSw3IEBAIHRyYW5zZm9y bUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBDcmVhdGVTdG10Q29u dGV4dCAqY3h0KQogCX0KIAlpbmRleC0+bnVsbHNfbm90X2Rpc3RpbmN0ID0gY29uc3RyYWlu dC0+bnVsbHNfbm90X2Rpc3RpbmN0OwogCWluZGV4LT5pc2NvbnN0cmFpbnQgPSB0cnVlOwor CWluZGV4LT5pc3RlbXBvcmFsID0gY29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyAhPSBO VUxMOwogCWluZGV4LT5kZWZlcnJhYmxlID0gY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKIAlp bmRleC0+aW5pdGRlZmVycmVkID0gY29uc3RyYWludC0+aW5pdGRlZmVycmVkOwogCkBAIC0y NDA2LDYgKzI0MTIsMTEgQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQg KmNvbnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJCQkJCSBlcnJtc2coImlu ZGV4IFwiJXNcIiBpcyBub3QgdmFsaWQiLCBpbmRleF9uYW1lKSwKIAkJCQkJIHBhcnNlcl9l cnJwb3NpdGlvbihjeHQtPnBzdGF0ZSwgY29uc3RyYWludC0+bG9jYXRpb24pKSk7CiAKKwkJ LyoKKwkJICogVG9kYXkgd2UgZm9yYmlkIG5vbi11bmlxdWUgaW5kZXhlcywgYnV0IHdlIGNv dWxkIHBlcm1pdCBHaVNUCisJCSAqIGluZGV4ZXMgd2hvc2UgbGFzdCBlbnRyeSBpcyBhIHJh bmdlIHR5cGUgYW5kIHVzZSB0aGF0IHRvIGNyZWF0ZSBhCisJCSAqIFdJVEhPVVQgT1ZFUkxB UFMgY29uc3RyYWludCAoaS5lLiBhIHRlbXBvcmFsIGNvbnN0cmFpbnQpLgorCQkgKi8KIAkJ aWYgKCFpbmRleF9mb3JtLT5pbmRpc3VuaXF1ZSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLApAQCAtMjY4Miw2ICsyNjkz LDY1IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50 LCBDcmVhdGVTdG10Q29udGV4dCAqY3h0KQogCQkJCW5vdG51bGxjbWRzID0gbGFwcGVuZChu b3RudWxsY21kcywgbm90bnVsbGNtZCk7CiAJCQl9CiAJCX0KKworCQkvKgorCQkgKiBBbnl0 aGluZyBpbiB3aXRob3V0X292ZXJsYXBzIHNob3VsZCBiZSBpbmNsdWRlZCwKKwkJICogYnV0 IHdpdGggdGhlIG92ZXJsYXBzIG9wZXJhdG9yICgmJikgaW5zdGVhZCBvZiBlcXVhbGl0eS4K KwkJICovCisJCWlmIChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBzICE9IE5VTEwpIHsK KwkJCWNoYXIgKndpdGhvdXRfb3ZlcmxhcHNfc3RyID0gc3RyVmFsKGNvbnN0cmFpbnQtPndp dGhvdXRfb3ZlcmxhcHMpOworCQkJSW5kZXhFbGVtICppcGFyYW0gPSBtYWtlTm9kZShJbmRl eEVsZW0pOworCQkJY2hhciAgICp0eXBuYW1lOworCQkJT2lkCQl0eXBpZDsKKworCQkJLyoK KwkJCSAqIEl0ZXJhdGUgdGhyb3VnaCB0aGUgdGFibGUncyBjb2x1bW5zCisJCQkgKiAobGlr ZSBqdXN0IGEgbGl0dGxlIGJpdCBhYm92ZSkuCisJCQkgKiBJZiB3ZSBmaW5kIG9uZSB3aG9z ZSBuYW1lIGlzIHRoZSBzYW1lIGFzIHdpdGhvdXRfb3ZlcmxhcHMsCisJCQkgKiB2YWxpZGF0 ZSB0aGF0IGl0J3MgYSByYW5nZSB0eXBlLgorCQkJICoKKwkJCSAqIE90aGVyd2lzZSByZXBv cnQgYW4gZXJyb3IuCisJCQkgKi8KKworCQkJaWYgKGZpbmROZXdPck9sZENvbHVtbihjeHQs IHdpdGhvdXRfb3ZlcmxhcHNfc3RyLCAmdHlwbmFtZSwgJnR5cGlkKSkKKwkJCXsKKwkJCQlp ZiAoIXR5cGVfaXNfcmFuZ2UodHlwaWQpKQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAorCQkJCQkJCSBlcnJtc2co ImNvbHVtbiBcIiVzXCIgbmFtZWQgaW4gV0lUSE9VVCBPVkVSTEFQUyBpcyBub3QgYSByYW5n ZSB0eXBlIiwKKwkJCQkJCQkJCXdpdGhvdXRfb3ZlcmxhcHNfc3RyKSkpOworCQkJfQorCQkJ ZWxzZQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1VOREVG SU5FRF9DT0xVTU4pLAorCQkJCQkJIGVycm1zZygicmFuZ2Ugb3IgUEVSSU9EIFwiJXNcIiBu YW1lZCBpbiBXSVRIT1VUIE9WRVJMQVBTIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQkJd2l0 aG91dF9vdmVybGFwc19zdHIpKSk7CisKKwkJCWlwYXJhbS0+bmFtZSA9IHBzdHJkdXAod2l0 aG91dF9vdmVybGFwc19zdHIpOworCQkJaXBhcmFtLT5leHByID0gTlVMTDsKKwkJCWlwYXJh bS0+aW5kZXhjb2xuYW1lID0gTlVMTDsKKwkJCWlwYXJhbS0+Y29sbGF0aW9uID0gTklMOwor CQkJaXBhcmFtLT5vcGNsYXNzID0gTklMOworCQkJaXBhcmFtLT5vcGNsYXNzb3B0cyA9IE5J TDsKKwkJCWlwYXJhbS0+b3JkZXJpbmcgPSBTT1JUQllfREVGQVVMVDsKKwkJCWlwYXJhbS0+ bnVsbHNfb3JkZXJpbmcgPSBTT1JUQllfTlVMTFNfREVGQVVMVDsKKwkJCWluZGV4LT5pbmRl eFBhcmFtcyA9IGxhcHBlbmQoaW5kZXgtPmluZGV4UGFyYW1zLCBpcGFyYW0pOworCisJCQlp bmRleC0+YWNjZXNzTWV0aG9kID0gImdpc3QiOworCQkJY29uc3RyYWludC0+YWNjZXNzX21l dGhvZCA9ICJnaXN0IjsKKworCQkJaWYgKGNvbnN0cmFpbnQtPmNvbnR5cGUgPT0gQ09OU1RS X1BSSU1BUlkpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBGb3JjZSB0aGUgY29sdW1uIHRvIE5P VCBOVUxMIHNpbmNlIGl0IGlzIHBhcnQgb2YgdGhlIHByaW1hcnkga2V5LgorCQkJCSAqLwor CQkJCUFsdGVyVGFibGVDbWQgKm5vdG51bGxjbWQgPSBtYWtlTm9kZShBbHRlclRhYmxlQ21k KTsKKworCQkJCW5vdG51bGxjbWQtPnN1YnR5cGUgPSBBVF9TZXRBdHROb3ROdWxsOworCQkJ CW5vdG51bGxjbWQtPm5hbWUgPSBwc3RyZHVwKHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKKwkJ CQlub3RudWxsY21kcyA9IGxhcHBlbmQobm90bnVsbGNtZHMsIG5vdG51bGxjbWQpOworCQkJ fQorCQl9CiAJfQogCiAJLyoKQEAgLTI4MDEsNiArMjg3MSw1OCBAQCB0cmFuc2Zvcm1JbmRl eENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQg KmN4dCkKIAlyZXR1cm4gaW5kZXg7CiB9CiAKKy8qCisgKiBUcmllcyB0byBmaW5kIGEgY29s dW1uIGJ5IG5hbWUgYW1vbmcgdGhlIGV4aXN0aW5nIG9uZXMgKGlmIGl0J3MgYW4gQUxURVIg VEFCTEUpCisgKiBhbmQgdGhlIG5ldyBvbmVzLiBTZXRzIHR5cG5hbWUgYW5kIHR5cGlkIGlm IG9uZSBpcyBmb3VuZC4gUmV0dXJucyBmYWxzZSBpZiB3ZQorICogY291bGRuJ3QgZmluZCBh IG1hdGNoLgorICovCitzdGF0aWMgYm9vbAorZmluZE5ld09yT2xkQ29sdW1uKENyZWF0ZVN0 bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGNoYXIgKip0eXBuYW1lLCBPaWQgKnR5 cGlkKQoreworCS8qIENoZWNrIHRoZSBuZXcgY29sdW1ucyBmaXJzdCBpbiBjYXNlIHRoZWly IHR5cGUgaXMgY2hhbmdpbmcuICovCisKKwlDb2x1bW5EZWYgICpjb2x1bW4gPSBOVUxMOwor CUxpc3RDZWxsICAgKmNvbHVtbnM7CisKKwlmb3JlYWNoKGNvbHVtbnMsIGN4dC0+Y29sdW1u cykKKwl7CisJCWNvbHVtbiA9IGxmaXJzdF9ub2RlKENvbHVtbkRlZiwgY29sdW1ucyk7CisJ CWlmIChzdHJjbXAoY29sdW1uLT5jb2xuYW1lLCBjb2xuYW1lKSA9PSAwKQorCQl7CisJCQkq dHlwaWQgPSB0eXBlbmFtZVR5cGVJZChOVUxMLCBjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCSp0 eXBuYW1lID0gVHlwZU5hbWVUb1N0cmluZyhjb2x1bW4tPnR5cGVOYW1lKTsKKwkJCXJldHVy biB0cnVlOworCQl9CisJfQorCisJLyogTG9vayB1cCBjb2x1bW5zIG9uIGV4aXN0aW5nIHRh YmxlLiAqLworCisJaWYgKGN4dC0+aXNhbHRlcikKKwl7CisJCVJlbGF0aW9uIHJlbCA9IGN4 dC0+cmVsOworCQlmb3IgKGludCBpID0gMDsgaSA8IHJlbC0+cmRfYXR0LT5uYXR0czsgaSsr KQorCQl7CisJCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cihyZWwt PnJkX2F0dCwgaSk7CisJCQljb25zdCBjaGFyICphdHRuYW1lOworCisJCQlpZiAoYXR0ci0+ YXR0aXNkcm9wcGVkKQorCQkJCWNvbnRpbnVlOworCisJCQlhdHRuYW1lID0gTmFtZVN0cihh dHRyLT5hdHRuYW1lKTsKKwkJCWlmIChzdHJjbXAoYXR0bmFtZSwgY29sbmFtZSkgPT0gMCkK KwkJCXsKKwkJCQlUeXBlIHR5cGUgPSB0eXBlaWRUeXBlKGF0dHItPmF0dHR5cGlkKTsKKwkJ CQkqdHlwaWQgPSBhdHRyLT5hdHR0eXBpZDsKKwkJCQkqdHlwbmFtZSA9IHBzdHJkdXAodHlw ZVR5cGVOYW1lKHR5cGUpKTsKKwkJCQlSZWxlYXNlU3lzQ2FjaGUodHlwZSk7CisJCQkJcmV0 dXJuIHRydWU7CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAg KiB0cmFuc2Zvcm1FeHRlbmRlZFN0YXRpc3RpY3MKICAqICAgICBIYW5kbGUgZXh0ZW5kZWQg c3RhdGlzdGljIG9iamVjdHMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA5 N2IwZWYyMmFjLi43NzhkM2UwMzM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CkBAIC0zMzgsOCArMzM4LDggQEAgc3RhdGljIGNoYXIgKmRlcGFyc2VfZXhwcmVzc2lvbl9w cmV0dHkoTm9kZSAqZXhwciwgTGlzdCAqZHBjb250ZXh0LAogc3RhdGljIGNoYXIgKnBnX2dl dF92aWV3ZGVmX3dvcmtlcihPaWQgdmlld29pZCwKIAkJCQkJCQkJICAgaW50IHByZXR0eUZs YWdzLCBpbnQgd3JhcENvbHVtbik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZf d29ya2VyKE9pZCB0cmlnaWQsIGJvb2wgcHJldHR5KTsKLXN0YXRpYyBpbnQJZGVjb21waWxl X2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJ ZCwKLQkJCQkJCQkJCQkgU3RyaW5nSW5mbyBidWYpOworc3RhdGljIGludAlkZWNvbXBpbGVf Y29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElk LCBPaWQgaW5kZXhJZCwKKwkJCQkJCQkJCQkgYm9vbCB3aXRob3V0T3ZlcmxhcHMsIFN0cmlu Z0luZm8gYnVmKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1 bGVvaWQsIGludCBwcmV0dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVm X3dvcmtlcihPaWQgaW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lk ICpleGNsdWRlT3BzLApAQCAtMjI0Nyw3ICsyMjQ3LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRk ZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFs ID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJ IEFudW1fcGdfY29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9p bmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCAmYnVmKTsKKwkJCQlkZWNvbXBp bGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGNvbkZvcm0t PmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQkvKiBhZGQgZm9yZWlnbiByZWxhdGlv biBuYW1lICovCiAJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmLCAiKSBSRUZFUkVOQ0VTICVz KCIsCkBAIC0yMjU4LDcgKzIyNTgsNyBAQCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIo T2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNo ZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19j b25zdHJhaW50X2NvbmZrZXkpOwogCi0JCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJh eSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVt bl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwgY29uRm9ybS0+Y29uaW5k aWQsIGZhbHNlLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcp Jyk7CiAKQEAgLTIzNDQsNyArMjM0NCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtl cihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCWlmICghaXNudWxs KQogCQkJCXsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiICgiKTsKLQkJ CQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlk LCAmYnVmKTsKKwkJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZv cm0tPmNvbnJlbGlkLCBJbnZhbGlkT2lkLCBmYWxzZSwgJmJ1Zik7CiAJCQkJCWFwcGVuZFN0 cmluZ0luZm9DaGFyKCZidWYsICcpJyk7CiAJCQkJfQogCkBAIC0yMzU3LDYgKzIzNTcsNyBA QCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBm dWxsQ29tbWFuZCwKIAkJCQlPaWQJCQlpbmRleElkOwogCQkJCWludAkJCWtleWF0dHM7CiAJ CQkJSGVhcFR1cGxlCWluZHR1cDsKKwkJCQlib29sCQlpc251bGw7CiAKIAkJCQkvKiBTdGFy dCBvZmYgdGhlIGNvbnN0cmFpbnQgZGVmaW5pdGlvbiAqLwogCQkJCWlmIChjb25Gb3JtLT5j b250eXBlID09IENPTlNUUkFJTlRfUFJJTUFSWSkKQEAgLTIzNzksNyArMjM4MCwxNCBAQCBw Z19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxs Q29tbWFuZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwg dHVwLAogCQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlr ZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNv bnJlbGlkLCAmYnVmKTsKKwkJCQkvKgorCQkJCSAqIElmIGl0IGhhcyBleGNsdXNpb24tc3R5 bGUgb3BlcmF0b3IgT0lEcworCQkJCSAqIHRoZW4gaXQgdXNlcyBXSVRIT1VUIE9WRVJMQVBT LgorCQkJCSAqLworCQkJCWluZGV4SWQgPSBjb25Gb3JtLT5jb25pbmRpZDsKKwkJCQlTeXND YWNoZUdldEF0dHIoQ09OU1RST0lELCB0dXAsCisJCQkJCQkgIEFudW1fcGdfY29uc3RyYWlu dF9jb25leGNsb3AsICZpc251bGwpOworCQkJCWtleWF0dHMgPSBkZWNvbXBpbGVfY29sdW1u X2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGluZGV4SWQsICFpc251bGws ICZidWYpOwogCiAJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIApAQCAt MjU3NCw4ICsyNTgyLDggQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25z dHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAgKiBvZiBrZXlzLgogICovCiBzdGF0aWMg aW50Ci1kZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9h cnJheSwgT2lkIHJlbElkLAotCQkJCQkJCSBTdHJpbmdJbmZvIGJ1ZikKK2RlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQs IE9pZCBpbmRleElkLAorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5m byBidWYpCiB7CiAJRGF0dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0yNTg4LDEx ICsyNTk2LDE0IEBAIGRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1u X2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCiAJZm9yIChqID0gMDsgaiA8IG5LZXlzOyBqKysp CiAJewogCQljaGFyCSAgICpjb2xOYW1lOworCQlpbnQJCQljb2xpZCA9IERhdHVtR2V0SW50 MTYoa2V5c1tqXSk7CiAKLQkJY29sTmFtZSA9IGdldF9hdHRuYW1lKHJlbElkLCBEYXR1bUdl dEludDE2KGtleXNbal0pLCBmYWxzZSk7CisJCWNvbE5hbWUgPSBnZXRfYXR0bmFtZShyZWxJ ZCwgY29saWQsIGZhbHNlKTsKIAogCQlpZiAoaiA9PSAwKQogCQkJYXBwZW5kU3RyaW5nSW5m b1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQllbHNlIGlmICh3 aXRob3V0T3ZlcmxhcHMgJiYgaiA9PSBuS2V5cyAtIDEpCisJCQlhcHBlbmRTdHJpbmdJbmZv KGJ1ZiwgIiwgJXMgV0lUSE9VVCBPVkVSTEFQUyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFt ZSkpOwogCQllbHNlCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9p ZGVudGlmaWVyKGNvbE5hbWUpKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9yZWxjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUu YwppbmRleCA3MjM0Y2IzZGE2Li43N2E1YjI1ODg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hl L3JlbGNhY2hlLmMKQEAgLTU1MzYsOCArNTUzNiw5IEBAIFJlbGF0aW9uR2V0SWRlbnRpdHlL ZXlCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24pCiAgKiBSZWxhdGlvbkdldEV4Y2x1c2lvbklu Zm8gLS0gZ2V0IGluZm8gYWJvdXQgaW5kZXgncyBleGNsdXNpb24gY29uc3RyYWludAogICoK ICAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGZvciBhbiBpbmRleCB0aGF0IGlzIGtu b3duIHRvIGhhdmUgYW4KLSAqIGFzc29jaWF0ZWQgZXhjbHVzaW9uIGNvbnN0cmFpbnQuICBJ dCByZXR1cm5zIGFycmF5cyAocGFsbG9jJ2QgaW4gY2FsbGVyJ3MKLSAqIGNvbnRleHQpIG9m IHRoZSBleGNsdXNpb24gb3BlcmF0b3IgT0lEcywgdGhlaXIgdW5kZXJseWluZyBmdW5jdGlv bnMnCisgKiBhc3NvY2lhdGVkIGV4Y2x1c2lvbiBjb25zdHJhaW50IG9yIHRlbXBvcmFsIHBy aW1hcnkga2V5L3VuaXF1ZQorICogY29uc3RyYWludC4gSXQgcmV0dXJucyBhcnJheXMgKHBh bGxvYydkIGluIGNhbGxlcidzIGNvbnRleHQpCisgKiBvZiB0aGUgZXhjbHVzaW9uIG9wZXJh dG9yIE9JRHMsIHRoZWlyIHVuZGVybHlpbmcgZnVuY3Rpb25zJwogICogT0lEcywgYW5kIHRo ZWlyIHN0cmF0ZWd5IG51bWJlcnMgaW4gdGhlIGluZGV4J3Mgb3BjbGFzc2VzLiAgV2UgY2Fj aGUKICAqIGFsbCB0aGlzIGluZm9ybWF0aW9uIHNpbmNlIGl0IHJlcXVpcmVzIGEgZmFpciBh bW91bnQgb2Ygd29yayB0byBnZXQuCiAgKi8KQEAgLTU2MDMsNyArNTYwNCwxMCBAQCBSZWxh dGlvbkdldEV4Y2x1c2lvbkluZm8oUmVsYXRpb24gaW5kZXhSZWxhdGlvbiwKIAkJaW50CQkJ bmVsZW07CiAKIAkJLyogV2Ugd2FudCB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3duaW5n IHRoZSBpbmRleCAqLwotCQlpZiAoY29uZm9ybS0+Y29udHlwZSAhPSBDT05TVFJBSU5UX0VY Q0xVU0lPTiB8fAorCQlpZiAoKGNvbmZvcm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9FWENM VVNJT04gJiYKKwkJCQkJIShjb25mb3JtLT5jb250ZW1wb3JhbCAmJiAoCisJCQkJCQkJY29u Zm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BSSU1BUlkKKwkJCQkJCQl8fCBjb25mb3Jt LT5jb250eXBlID09IENPTlNUUkFJTlRfVU5JUVVFKSkpIHx8CiAJCQljb25mb3JtLT5jb25p bmRpZCAhPSBSZWxhdGlvbkdldFJlbGlkKGluZGV4UmVsYXRpb24pKQogCQkJY29udGludWU7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jCmluZGV4IDY1ZjY0YzI4MmQuLjhmZDUxZTlmOWYgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYwpAQCAtNjk2NCw3ICs2OTY0LDggQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0 LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVzKQogCQkJCWlfdGFibGVzcGFj ZSwKIAkJCQlpX2luZHJlbG9wdGlvbnMsCiAJCQkJaV9pbmRzdGF0Y29scywKLQkJCQlpX2lu ZHN0YXR2YWxzOworCQkJCWlfaW5kc3RhdHZhbHMsCisJCQkJaV93aXRob3V0b3ZlcmxhcHM7 CiAKIAkvKgogCSAqIFdlIHdhbnQgdG8gcGVyZm9ybSBqdXN0IG9uZSBxdWVyeSBhZ2FpbnN0 IHBnX2luZGV4LiAgSG93ZXZlciwgd2UKQEAgLTcwMzksMTAgKzcwNDAsMTcgQEAgZ2V0SW5k ZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5mb1tdLCBpbnQgbnVtVGFibGVz KQogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgImkuaW5kbnVsbHNub3RkaXN0aW5jdCAiKTsK KwkJCQkJCQkgImkuaW5kbnVsbHNub3RkaXN0aW5jdCwgIik7CiAJZWxzZQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKLQkJCQkJCQkgImZhbHNlIEFTIGluZG51bGxzbm90ZGlz dGluY3QgIik7CisJCQkJCQkJICJmYWxzZSBBUyBpbmRudWxsc25vdGRpc3RpbmN0LCAiKTsK KworCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE3MDAwMCkKKwkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJjLmNvbmV4Y2xvcCBJUyBOT1QgTlVMTCBBUyB3 aXRob3V0b3ZlcmxhcHMgIik7CisJZWxzZQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwKKwkJCQkJCQkgIm51bGwgQVMgd2l0aG91dG92ZXJsYXBzICIpOwogCiAJLyoKIAkgKiBU aGUgcG9pbnQgb2YgdGhlIG1lc3N5LWxvb2tpbmcgb3V0ZXIgam9pbiBpcyB0byBmaW5kIGEg Y29uc3RyYWludCB0aGF0CkBAIC03MTE3LDYgKzcxMjUsNyBAQCBnZXRJbmRleGVzKEFyY2hp dmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMpCiAJaV9pbmRy ZWxvcHRpb25zID0gUFFmbnVtYmVyKHJlcywgImluZHJlbG9wdGlvbnMiKTsKIAlpX2luZHN0 YXRjb2xzID0gUFFmbnVtYmVyKHJlcywgImluZHN0YXRjb2xzIik7CiAJaV9pbmRzdGF0dmFs cyA9IFBRZm51bWJlcihyZXMsICJpbmRzdGF0dmFscyIpOworCWlfd2l0aG91dG92ZXJsYXBz ID0gUFFmbnVtYmVyKHJlcywgIndpdGhvdXRvdmVybGFwcyIpOwogCiAJaW5keGluZm8gPSAo SW5keEluZm8gKikgcGdfbWFsbG9jKG50dXBzICogc2l6ZW9mKEluZHhJbmZvKSk7CiAKQEAg LTcyMTksNiArNzIyOCw3IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZv IHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAkJCQljb25zdHJpbmZvLT5jb25kZWZlcnJl ZCA9ICooUFFnZXR2YWx1ZShyZXMsIGosIGlfY29uZGVmZXJyZWQpKSA9PSAndCc7CiAJCQkJ Y29uc3RyaW5mby0+Y29uaXNsb2NhbCA9IHRydWU7CiAJCQkJY29uc3RyaW5mby0+c2VwYXJh dGUgPSB0cnVlOworCQkJCWNvbnN0cmluZm8tPndpdGhvdXRvdmVybGFwcyA9ICooUFFnZXR2 YWx1ZShyZXMsIGosIGlfd2l0aG91dG92ZXJsYXBzKSkgPT0gJ3QnOwogCiAJCQkJaW5keGlu Zm9bal0uaW5kZXhjb25zdHJhaW50ID0gY29uc3RyaW5mby0+ZG9iai5kdW1wSWQ7CiAJCQl9 CkBAIC0xNjkxNCw5ICsxNjkyNCwyMiBAQCBkdW1wQ29uc3RyYWludChBcmNoaXZlICpmb3V0 LCBjb25zdCBDb25zdHJhaW50SW5mbyAqY29uaW5mbykKIAkJCQkJYnJlYWs7CiAJCQkJYXR0 bmFtZSA9IGdldEF0dHJOYW1lKGluZGtleSwgdGJpbmZvKTsKIAotCQkJCWFwcGVuZFBRRXhw QnVmZmVyKHEsICIlcyVzIiwKLQkJCQkJCQkJICAoayA9PSAwKSA/ICIiIDogIiwgIiwKLQkJ CQkJCQkJICBmbXRJZChhdHRuYW1lKSk7CisJCQkJaWYgKGsgPT0gMCkKKwkJCQl7CisJCQkJ CWFwcGVuZFBRRXhwQnVmZmVyKHEsICIlcyIsCisJCQkJCQkJCQkJZm10SWQoYXR0bmFtZSkp OworCQkJCX0KKwkJCQllbHNlIGlmIChrID09IGluZHhpbmZvLT5pbmRua2V5YXR0cnMgLSAx ICYmCisJCQkJCQljb25pbmZvLT53aXRob3V0b3ZlcmxhcHMpCisJCQkJeworCQkJCQlhcHBl bmRQUUV4cEJ1ZmZlcihxLCAiLCAlcyBXSVRIT1VUIE9WRVJMQVBTIiwKKwkJCQkJCQkJCSAg Zm10SWQoYXR0bmFtZSkpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlcihxLCAiLCAlcyIsCisJCQkJCQkJCQkJZm10SWQoYXR0bmFtZSkpOworCQkJ CX0KIAkJCX0KIAogCQkJaWYgKGluZHhpbmZvLT5pbmRua2V5YXR0cnMgPCBpbmR4aW5mby0+ aW5kbmF0dHJzKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggOTAzNmIxM2Y2YS4uNzczYTJkZTE4YiAx MDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCkBAIC00ODksNiArNDg5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2Nv bnN0cmFpbnRJbmZvCiAJYm9vbAkJY29uZGVmZXJyZWQ7CS8qIHRydWUgaWYgY29uc3RyYWlu dCBpcyBJTklUSUFMTFkgREVGRVJSRUQgKi8KIAlib29sCQljb25pc2xvY2FsOwkJLyogdHJ1 ZSBpZiBjb25zdHJhaW50IGhhcyBsb2NhbCBkZWZpbml0aW9uICovCiAJYm9vbAkJc2VwYXJh dGU7CQkvKiB0cnVlIGlmIG11c3QgZHVtcCBhcyBzZXBhcmF0ZSBpdGVtICovCisJYm9vbAkJ d2l0aG91dG92ZXJsYXBzOwkvKiB0cnVlIGlmIHRoZSBsYXN0IGVsZW0gaXMgV0lUSE9VVCBP VkVSTEFQUyAqLwogfSBDb25zdHJhaW50SW5mbzsKIAogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NM YW5nSW5mbwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwg Yi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbAppbmRleCAwNzU4ZmU1ZWEwLi4y MmFhODdkM2RjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5w bAorKysgYi9zcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbApAQCAtMTAxNSw2ICsx MDE1LDUyIEBAIG15ICV0ZXN0cyA9ICgKIAkJfSwKIAl9LAogCisJJ0FMVEVSIFRBQkxFIE9O TFkgdGVzdF90YWJsZV90cGsgQUREIENPTlNUUkFJTlQgLi4uIFBSSU1BUlkgS0VZICguLi4s IC4uLiBXSVRIT1VUIE9WRVJMQVBTKScgPT4geworCQljcmVhdGVfc3FsICA9PiAnQ1JFQVRF IFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3RwayAoCisJCQkJCQkJY29sMSBpbnQ0cmFu Z2UsCisJCQkJCQkJY29sMiB0c3R6cmFuZ2UsCisJCQkJCQkJQ09OU1RSQUlOVCB0ZXN0X3Rh YmxlX3Rwa19wa2V5IFBSSU1BUlkgS0VZCisJCQkJCQkJCShjb2wxLCBjb2wyIFdJVEhPVVQg T1ZFUkxBUFMpKTsnLAorCQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZ IGR1bXBfdGVzdC50ZXN0X3RhYmxlX3Rwa1xFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlO VCB0ZXN0X3RhYmxlX3Rwa19wa2V5IFBSSU1BUlkgS0VZIChjb2wxLCBjb2wyIFdJVEhPVVQg T1ZFUkxBUFMpO1xFCisJCQkveG0sCisJCWxpa2UgPT4geworCQkJJWZ1bGxfcnVucywKKwkJ CSVkdW1wX3Rlc3Rfc2NoZW1hX3J1bnMsCisJCQlzZWN0aW9uX3Bvc3RfZGF0YSAgPT4gMSwK KwkJCWV4Y2x1ZGVfdGVzdF90YWJsZSA9PiAxLAorCQl9LAorCQl1bmxpa2UgPT4geworCQkJ b25seV9kdW1wX3Rlc3RfdGFibGUgICAgID0+IDEsCisJCQlleGNsdWRlX2R1bXBfdGVzdF9z Y2hlbWEgPT4gMSwKKwkJCW9ubHlfZHVtcF9tZWFzdXJlbWVudCAgICA9PiAxLAorCQl9LAor CX0sCisKKwknQUxURVIgVEFCTEUgT05MWSB0ZXN0X3RhYmxlX3R1cSBBREQgQ09OU1RSQUlO VCAuLi4gVU5JUVVFICguLi4sIC4uLiBXSVRIT1VUIE9WRVJMQVBTKScgPT4geworCQljcmVh dGVfc3FsICA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBfdGVzdC50ZXN0X3RhYmxlX3R1cSAoCisJ CQkJCQkJY29sMSBpbnQ0cmFuZ2UsCisJCQkJCQkJY29sMiB0c3R6cmFuZ2UsCisJCQkJCQkJ Q09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1cV91cSBVTklRVUUKKwkJCQkJCQkJKGNvbDEsIGNv bDIgV0lUSE9VVCBPVkVSTEFQUykpOycsCisJCXJlZ2V4cCA9PiBxci9eCisJCQlcUUFMVEVS IFRBQkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGVfdHVxXEUgXG5eXHMrCisJCQlcUUFE RCBDT05TVFJBSU5UIHRlc3RfdGFibGVfdHVxX3VxIFVOSVFVRSAoY29sMSwgY29sMiBXSVRI T1VUIE9WRVJMQVBTKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsKKwkJCSVmdWxsX3J1bnMs CisJCQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAorCQkJc2VjdGlvbl9wb3N0X2RhdGEgID0+ IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUgPT4gMSwKKwkJfSwKKwkJdW5saWtlID0+IHsK KwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9PiAxLAorCQkJZXhjbHVkZV9kdW1wX3Rl c3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBfbWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJ fSwKKwl9LAorCiAJJ0FMVEVSIFRBQkxFIChwYXJ0aXRpb25lZCkgQUREIENPTlNUUkFJTlQg Li4uIEZPUkVJR04gS0VZJyA9PiB7CiAJCWNyZWF0ZV9vcmRlciA9PiA0LAogCQljcmVhdGVf c3FsID0+ICdDUkVBVEUgVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGVfZmsgKApkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUu YwppbmRleCBiYWM5NGEzMzhjLi40ZmJmYzA3NDYwIDEwMDY0NAotLS0gYS9zcmMvYmluL3Bz cWwvZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMjM4NCw2 ICsyMzg0LDEwIEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVt YW5hbWUsCiAJCQllbHNlCiAJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIiwgZmFs c2UgQVMgaW5kaXNyZXBsaWRlbnQiKTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYs ICIsIGMyLnJlbHRhYmxlc3BhY2UiKTsKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAw MCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBjb24uY29udGVtcG9yYWwi KTsKKwkJCWVsc2UKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBmYWxzZSBB UyBjb250ZW1wb3JhbCIpOwogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKIAkJCQkJCQkg ICJcbkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjLCBwZ19jYXRhbG9nLnBnX2NsYXNzIGMy LCBwZ19jYXRhbG9nLnBnX2luZGV4IGlcbiIKIAkJCQkJCQkgICIgIExFRlQgSk9JTiBwZ19j YXRhbG9nLnBnX2NvbnN0cmFpbnQgY29uIE9OIChjb25yZWxpZCA9IGkuaW5kcmVsaWQgQU5E IGNvbmluZGlkID0gaS5pbmRleHJlbGlkIEFORCBjb250eXBlIElOICgncCcsJ3UnLCd4Jykp XG4iCkBAIC0yNDA1LDggKzI0MDksMTIgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29u c3QgY2hhciAqc2NoZW1hbmFtZSwKIAkJCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIiAg ICBcIiVzXCIiLAogCQkJCQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCkpOwogCi0J CQkJCS8qIElmIGV4Y2x1c2lvbiBjb25zdHJhaW50LCBwcmludCB0aGUgY29uc3RyYWludGRl ZiAqLwotCQkJCQlpZiAoc3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9 PSAwKQorCQkJCQkvKgorCQkJCQkgKiBJZiBleGNsdXNpb24gY29uc3RyYWludCBvciB0ZW1w b3JhbCBQSy9VTklRVUUgY29uc3RyYWludCwKKwkJCQkJICogcHJpbnQgdGhlIGNvbnN0cmFp bnRkZWYKKwkJCQkJICovCisJCQkJCWlmIChzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGks IDcpLCAieCIpID09IDAgfHwKKwkJCQkJCQlzdHJjbXAoUFFnZXR2YWx1ZShyZXN1bHQsIGks IDEyKSwgInQiKSA9PSAwKQogCQkJCQl7CiAJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVm LCAiICVzIiwKIAkJCQkJCQkJCQkgIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA2KSk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmggYi9zcmMvaW5jbHVkZS9jYXRh bG9nL2luZGV4LmgKaW5kZXggNGQ4YmE4MWY5MC4uYTYwNDU0NmY0OCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv aW5kZXguaApAQCAtOTEsNiArOTEsNyBAQCBleHRlcm4gT2lkCWluZGV4X2NyZWF0ZShSZWxh dGlvbiBoZWFwUmVsYXRpb24sCiAjZGVmaW5lCUlOREVYX0NPTlNUUl9DUkVBVEVfSU5JVF9E RUZFUlJFRAkoMSA8PCAyKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1VQREFURV9J TkRFWAkoMSA8PCAzKQogI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1JFTU9WRV9PTERf REVQUwkoMSA8PCA0KQorI2RlZmluZQlJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMCQko MSA8PCA1KQogCiBleHRlcm4gT2lkCWluZGV4X2NvbmN1cnJlbnRseV9jcmVhdGVfY29weShS ZWxhdGlvbiBoZWFwUmVsYXRpb24sCiAJCQkJCQkJCQkJICAgT2lkIG9sZEluZGV4SWQsCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IDliOWQ4ZmFmMzUuLjc4NmE5 Y2E5MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5o CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0xMDcsNiAr MTA3LDEyIEBAIENBVEFMT0cocGdfY29uc3RyYWludCwyNjA2LENvbnN0cmFpbnRSZWxhdGlv bklkKQogCS8qIEhhcyBhIGxvY2FsIGRlZmluaXRpb24gYW5kIGNhbm5vdCBiZSBpbmhlcml0 ZWQgKi8KIAlib29sCQljb25ub2luaGVyaXQ7CiAKKwkvKgorCSAqIEZvciBwcmltYXJ5IGFu ZCBmb3JlaWduIGtleXMsIHNpZ25pZmllcyB0aGUgbGFzdCBjb2x1bW4gaXMgYSByYW5nZQor CSAqIGFuZCBzaG91bGQgdXNlIG92ZXJsYXBzIGluc3RlYWQgb2YgZXF1YWxzLgorCSAqLwor CWJvb2wJCWNvbnRlbXBvcmFsOworCiAjaWZkZWYgQ0FUQUxPR19WQVJMRU4JCQkvKiB2YXJp YWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUgKi8KIAogCS8qCkBAIC0xNDYsNyArMTUy LDcgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYsQ29uc3RyYWludFJlbGF0aW9uSWQp CiAKIAkvKgogCSAqIElmIGFuIGV4Y2x1c2lvbiBjb25zdHJhaW50LCB0aGUgT0lEcyBvZiB0 aGUgZXhjbHVzaW9uIG9wZXJhdG9ycyBmb3IKLQkgKiBlYWNoIGNvbHVtbiBvZiB0aGUgY29u c3RyYWludAorCSAqIGVhY2ggY29sdW1uIG9mIHRoZSBjb25zdHJhaW50LiBBbHNvIHNldCBm b3IgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLgogCSAqLwogCU9pZAkJCWNvbmV4Y2xvcFsxXSBC S0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKIApAQCAtMjM2LDYgKzI0Miw3IEBAIGV4dGVybiBP aWQJQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFpbnROYW1lLAog CQkJCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJCQkJICBpbnQgY29uSW5oQ291bnQs CiAJCQkJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCQkJCSAgYm9vbCBjb25UZW1w b3JhbCwKIAkJCQkJCQkJICBib29sIGlzX2ludGVybmFsKTsKIAogZXh0ZXJuIGJvb2wgQ29u c3RyYWludE5hbWVJc1VzZWQoQ29uc3RyYWludENhdGVnb3J5IGNvbkNhdCwgT2lkIG9iaklk LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmggYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9kZWZyZW0uaAppbmRleCAxNzllYjk5MDFmLi5mMTA4ODZmNmNhIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9kZWZyZW0uaAorKysgYi9zcmMvaW5j bHVkZS9jb21tYW5kcy9kZWZyZW0uaApAQCAtNDQsNyArNDQsOCBAQCBleHRlcm4gY2hhciAq Q2hvb3NlUmVsYXRpb25OYW1lKGNvbnN0IGNoYXIgKm5hbWUxLCBjb25zdCBjaGFyICpuYW1l MiwKIGV4dGVybiBib29sIENoZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJ CQkJIGNvbnN0IGNoYXIgKmFjY2Vzc01ldGhvZE5hbWUsCiAJCQkJCQkJCSBjb25zdCBMaXN0 ICphdHRyaWJ1dGVMaXN0LAotCQkJCQkJCQkgY29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1l cyk7CisJCQkJCQkJCSBjb25zdCBMaXN0ICpleGNsdXNpb25PcE5hbWVzLAorCQkJCQkJCQkg Ym9vbCBpc3RlbXBvcmFsKTsKIGV4dGVybiBPaWQJR2V0RGVmYXVsdE9wQ2xhc3MoT2lkIHR5 cGVfaWQsIE9pZCBhbV9pZCk7CiBleHRlcm4gT2lkCVJlc29sdmVPcENsYXNzKGNvbnN0IExp c3QgKm9wY2xhc3MsIE9pZCBhdHRyVHlwZSwKIAkJCQkJCSAgIGNvbnN0IGNoYXIgKmFjY2Vz c01ldGhvZE5hbWUsIE9pZCBhY2Nlc3NNZXRob2RJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CmluZGV4IGNiNzE0ZjRhMTkuLjIzMjdiNTVmMTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC0xNTUsNiArMTU1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgkJVW5p cXVlUHJvY3MKICAqCQlVbmlxdWVTdHJhdHMKICAqCQlVbmlxdWUJCQkJaXMgaXQgYSB1bmlx dWUgaW5kZXg/CisgKgkJVGVtcG9yYWwJCQlpcyBpdCBmb3IgYSB0ZW1wb3JhbCBjb25zdHJh aW50PwogICoJCU9wY2xhc3NPcHRpb25zCQlvcGNsYXNzLXNwZWNpZmljIG9wdGlvbnMsIG9y IE5VTEwgaWYgbm9uZQogICoJCVJlYWR5Rm9ySW5zZXJ0cwkJaXMgaXQgdmFsaWQgZm9yIGlu c2VydHM/CiAgKgkJQ2hlY2tlZFVuY2hhbmdlZAlJbmRleFVuY2hhbmdlZCBzdGF0dXMgZGV0 ZXJtaW5lZCB5ZXQ/CkBAIC0xOTAsNiArMTkxLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhJ bmZvCiAJRGF0dW0JICAgKmlpX09wY2xhc3NPcHRpb25zOwkvKiBhcnJheSB3aXRoIG9uZSBl bnRyeSBwZXIgY29sdW1uICovCiAJYm9vbAkJaWlfVW5pcXVlOwogCWJvb2wJCWlpX051bGxz Tm90RGlzdGluY3Q7CisJYm9vbAkJaWlfVGVtcG9yYWw7CiAJYm9vbAkJaWlfUmVhZHlGb3JJ bnNlcnRzOwogCWJvb2wJCWlpX0NoZWNrZWRVbmNoYW5nZWQ7CiAJYm9vbAkJaWlfSW5kZXhV bmNoYW5nZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtlZnVuY3MuaCBi L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCmluZGV4IDMxODA3MDMwMDUuLjQzNjM0 NjcxNDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC05OCw3ICs5OCw3IEBAIGV4dGVy biBJbmRleEluZm8gKm1ha2VJbmRleEluZm8oaW50IG51bWF0dHJzLCBpbnQgbnVta2V5YXR0 cnMsIE9pZCBhbW9pZCwKIAkJCQkJCQkJTGlzdCAqZXhwcmVzc2lvbnMsIExpc3QgKnByZWRp Y2F0ZXMsCiAJCQkJCQkJCWJvb2wgdW5pcXVlLCBib29sIG51bGxzX25vdF9kaXN0aW5jdCwK IAkJCQkJCQkJYm9vbCBpc3JlYWR5LCBib29sIGNvbmN1cnJlbnQsCi0JCQkJCQkJCWJvb2wg c3VtbWFyaXppbmcpOworCQkJCQkJCQlib29sIHN1bW1hcml6aW5nLCBib29sIHRlbXBvcmFs KTsKIAogZXh0ZXJuIERlZkVsZW0gKm1ha2VEZWZFbGVtKGNoYXIgKm5hbWUsIE5vZGUgKmFy ZywgaW50IGxvY2F0aW9uKTsKIGV4dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbUV4dGVuZGVk KGNoYXIgKm5hbWVTcGFjZSwgY2hhciAqbmFtZSwgTm9kZSAqYXJnLApkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCmluZGV4IGZlZjRjNzE0YjguLjA3NDdiNTRiMjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKQEAgLTI2NDEsNiArMjY0MSw5IEBAIHR5cGVkZWYgc3RydWN0IENvbnN0 cmFpbnQKIAlPaWQJCQlvbGRfcGt0YWJsZV9vaWQ7CS8qIHBnX2NvbnN0cmFpbnQuY29uZnJl bGlkIG9mIG15IGZvcm1lcgogCQkJCQkJCQkJICogc2VsZiAqLwogCisJLyogRmllbGRzIHVz ZWQgZm9yIHRlbXBvcmFsIFBSSU1BUlkgS0VZIGFuZCBGT1JFSUdOIEtFWSBjb25zdHJhaW50 czogKi8KKwlOb2RlCSAgICp3aXRob3V0X292ZXJsYXBzOyAvKiBTdHJpbmcgbm9kZSBuYW1p bmcgcmFuZ2UgY29sdW1uICovCisKIAkvKiBGaWVsZHMgdXNlZCBmb3IgY29uc3RyYWludHMg dGhhdCBhbGxvdyBhIE5PVCBWQUxJRCBzcGVjaWZpY2F0aW9uICovCiAJYm9vbAkJc2tpcF92 YWxpZGF0aW9uOwkvKiBza2lwIHZhbGlkYXRpb24gb2YgZXhpc3Rpbmcgcm93cz8gKi8KIAli b29sCQlpbml0aWFsbHlfdmFsaWQ7CS8qIG1hcmsgdGhlIG5ldyBjb25zdHJhaW50IGFzIHZh bGlkPyAqLwpAQCAtMzI0Miw2ICszMjQ1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTdG10 CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OyAvKiBudWxsIHRyZWF0bWVudCBmb3IgVU5J UVVFIGNvbnN0cmFpbnRzICovCiAJYm9vbAkJcHJpbWFyeTsJCS8qIGlzIGluZGV4IGEgcHJp bWFyeSBrZXk/ICovCiAJYm9vbAkJaXNjb25zdHJhaW50OwkvKiBpcyBpdCBmb3IgYSBwa2V5 L3VuaXF1ZSBjb25zdHJhaW50PyAqLworCWJvb2wJCWlzdGVtcG9yYWw7CQkvKiBpcyBpdCBm b3IgYSB0ZW1wb3JhbCBwa2V5PyAqLwogCWJvb2wJCWRlZmVycmFibGU7CQkvKiBpcyB0aGUg Y29uc3RyYWludCBERUZFUlJBQkxFPyAqLwogCWJvb2wJCWluaXRkZWZlcnJlZDsJLyogaXMg dGhlIGNvbnN0cmFpbnQgSU5JVElBTExZIERFRkVSUkVEPyAqLwogCWJvb2wJCXRyYW5zZm9y bWVkOwkvKiB0cnVlIHdoZW4gdHJhbnNmb3JtSW5kZXhTdG10IGlzIGZpbmlzaGVkICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5kN2VlMGM0ZmY5Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dApAQCAtMCwwICsxLDM1OSBAQAorLS0gVGVzdHMgZm9yIFdJVEhPVVQgT1ZFUkxB UFMuCistLQorLS0gV2UgbGVhdmUgYmVoaW5kIHNldmVyYWwgdGFibGVzIHRvIHRlc3QgcGdf ZHVtcCBldGM6CistLSB0ZW1wb3JhbF9ybmcsIHRlbXBvcmFsX3JuZzIsCistLSB0ZW1wb3Jh bF9ma19ybmcycm5nLgorLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorLS0gUEsgd2l0 aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmcgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9y bmdfcGsgUFJJTUFSWSBLRVkgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJS T1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiV0lUSE9VVCIKK0xJTkUgMzogIENPTlNU UkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9W Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gUEsgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24n dCB0aGVyZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgcmFuZ2Ugb3IgUEVSSU9EICJ2YWxpZF9h dCIgbmFtZWQgaW4gV0lUSE9VVCBPVkVSTEFQUyBkb2VzIG5vdCBleGlzdAorLS0gUEsgd2l0 aCBhIG5vbi1yYW5nZSBjb2x1bW46CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlp ZCBJTlRFR0VSLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdf cGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VS Uk9SOiAgY29sdW1uICJ2YWxpZF9hdCIgbmFtZWQgaW4gV0lUSE9VVCBPVkVSTEFQUyBpcyBu b3QgYSByYW5nZSB0eXBlCistLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgor Q1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJLS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5k IG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRyYW5nZSBpbnN0 ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lvbiB0ZXN0IHVz ZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKKyAgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmciCisgIENvbHVtbiAgfCAgIFR5cGUgICAg fCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0 cmFuZ2UgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAg IHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3Ju Z19wayIgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCitT RUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmdfcGsnOworICAgICAgICAgICAgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQs IDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFs X3JuZ19wayc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRl eGRlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmdfcGsgT04gdGVt cG9yYWxfcm5nIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0gUEsg d2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxf cm5nMiAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3BrIFBSSU1BUlkgS0VZIChpZDEs IGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcy CisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4g IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlk MSAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBpZDIgICAg ICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0 c3JhbmdlICAgfCAgICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVt cG9yYWxfcm5nMl9wayIgUFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBn X2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAg ICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFS WSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQor CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2Nv bnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3BrIE9OIHRlbXBv cmFsX3JuZzIgVVNJTkcgZ2lzdCAoaWQxLCBpZDIsIHZhbGlkX2F0KQorKDEgcm93KQorCitE Uk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CistLSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5 cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNv bGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5n Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMiBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5n Ml9wazsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKK0RST1AgVFlQRSB0ZXh0cmFuZ2Uy OworLS0gVU5JUVVFIHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKK0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIldJVEhPVVQiCitM SU5FIDM6ICBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFICh2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gVU5JUVVFIHdpdGggYSByYW5nZSBjb2x1bW4vUEVS SU9EIHRoYXQgaXNuJ3QgdGhlcmU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJ aWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIHJhbmdlIG9yIFBFUklP RCAidmFsaWRfYXQiIG5hbWVkIGluIFdJVEhPVVQgT1ZFUkxBUFMgZG9lcyBub3QgZXhpc3QK Ky0tIFVOSVFVRSB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmcyICgKKwlpZCBJTlRFR0VSLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworRVJST1I6ICBjb2x1bW4gInZhbGlkX2F0IiBuYW1lZCBpbiBXSVRIT1VUIE9W RVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5cGUKKy0tIFVOSVFVRSB3aXRoIG9uZSBjb2x1bW4g cGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCS0tIFNpbmNl IHdlIGNhbid0IGRlcGVuZCBvbiBoYXZpbmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBh biBpbnQ0cmFuZ2UgaW5zdGVhZCBvZiBhbiBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJl Z3Jlc3Npb24gdGVzdCB1c2VzIHRoZSBzYW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJ dmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVF IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcy CisgICAgICAgICAgICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4g IHwgICBUeXBlICAgIHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlk ICAgICAgIHwgaW50NHJhbmdlIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyB2YWxpZF9h dCB8IHRzcmFuZ2UgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAg ICJ0ZW1wb3JhbF9ybmcyX3VxIiBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0 cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3VxJzsKKyAgICAgICAgICBw Z19nZXRfY29uc3RyYWludGRlZiAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0 cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcy X3VxJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3VxIE9OIHRl bXBvcmFsX3JuZzIgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQorKDEgcm93KQorCistLSBV TklRVUUgd2l0aCB0d28gY29sdW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcm5nMyAoCisJaWQxIGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlk X2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQx LCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5n MworICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMudGVtcG9yYWxfcm5nMyIKKyAgQ29sdW1u ICB8ICAgVHlwZSAgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBp ZDEgICAgICB8IGludDRyYW5nZSB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisgaWQyICAg ICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwg dHNyYW5nZSAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRl bXBvcmFsX3JuZzNfdXEiIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29u c3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAg ICAgIHBnX2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVOSVFVRSAoaWQxLCBpZDIsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5k ZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGdfZ2V0X2luZGV4ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5J UVVFIElOREVYIHRlbXBvcmFsX3JuZzNfdXEgT04gdGVtcG9yYWxfcm5nMyBVU0lORyBnaXN0 IChpZDEsIGlkMiwgdmFsaWRfYXQpCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nMzsKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorRFJP UCBUQUJMRSB0ZW1wb3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlp ZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBv cmFsX3JuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19waworCVBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CistLSBQSyB3aXRoIFVTSU5HIElO REVYIChub3QgcG9zc2libGUpOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3RlbXBv cmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsMworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1B UlkgS0VZIFVTSU5HIElOREVYIGlkeF90ZW1wb3JhbDNfdXE7CitFUlJPUjogICJpZHhfdGVt cG9yYWwzX3VxIiBpcyBub3QgYSB1bmlxdWUgaW5kZXgKK0xJTkUgMjogIEFERCBDT05TVFJB SU5UIHRlbXBvcmFsM19waworICAgICAgICAgICAgIF4KK0RFVEFJTDogIENhbm5vdCBjcmVh dGUgYSBwcmltYXJ5IGtleSBvciB1bmlxdWUgY29uc3RyYWludCB1c2luZyBzdWNoIGFuIGlu ZGV4LgorRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLSBVTklRVUUgd2l0aCBVU0lORyBJTkRF WCAobm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRy YW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVYIGlkeF90ZW1wb3Jh bDNfdXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUg VVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0VSUk9SOiAgImlkeF90ZW1wb3JhbDNf dXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRleAorTElORSAyOiAgQUREIENPTlNUUkFJTlQgdGVt cG9yYWwzX3VxCisgICAgICAgICAgICAgXgorREVUQUlMOiAgQ2Fubm90IGNyZWF0ZSBhIHBy aW1hcnkga2V5IG9yIHVuaXF1ZSBjb25zdHJhaW50IHVzaW5nIHN1Y2ggYW4gaW5kZXguCitE Uk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tIEFkZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBh dCB0aGUgc2FtZSB0aW1lCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFu Z2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRz cmFuZ2UsCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOwor LS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgVU5JUVVFIGNvbnN0cmFpbnQgYXQgdGhlIHNhbWUg dGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlCispOworQUxU RVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBQSyBp bnNlcnRzCistLQorLS0gb2theToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMt MDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCBOVUxMKSk7CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScp KTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ybmdfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFsxLDIpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6 MDA6MDAgMjAxOCIpKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9h dCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6 MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKE5VTEws IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0VSUk9SOiAgbnVsbCB2 YWx1ZSBpbiBjb2x1bW4gImlkIiBvZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRl cyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAo bnVsbCwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAw IDIwMTgiKSkuCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMsM10nLCBO VUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gInZhbGlkX2F0IiBvZiByZWxh dGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRB SUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAoWzMsNCksIG51bGwpLgorLS0KKy0tIHRlc3Qg YSByYW5nZSB3aXRoIGJvdGggYSBQSyBhbmQgYSBVTklRVUUgY29uc3RyYWludAorLS0KK0NS RUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRh dGVyYW5nZSwKKyAgaWQyIGludDhyYW5nZSwKKyAgbmFtZSBURVhULAorICBDT05TVFJBSU5U IHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpLAorICBDT05TVFJBSU5UIHRlbXBvcmFsM191bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZh bGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s3LDddJywgJ2ZvbycpLAorICAoJ1syLDJd JywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2Jh cicpCis7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IGNoYW5naW5nIHRo ZSBQSydzIGRlcGVuZGVuY2llcworLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlk IGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwz X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitB TFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxURVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5V TEw7CitFUlJPUjogIGNvbHVtbiAidmFsaWRfYXQiIGlzIGluIGEgcHJpbWFyeSBrZXkKK0FM VEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3R6cmFu Z2UgVVNJTkcgdHN0enJhbmdlKGxvd2VyKHZhbGlkX2F0KSwgdXBwZXIodmFsaWRfYXQpKTsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBSRU5BTUUgQ09MVU1OIHZhbGlkX2F0IFRPIHZhbGlk X3RocnU7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfdGhydTsK K0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciBy YW5nZXMKKy0tCistLSB0ZW1wb3JhbCBQUklNQVJZIEtFWToKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5n ZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElP TiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIsMl0nKTsKK0NSRUFU RSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxV RVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEn LCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAg IHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMi0wMS0yMDAwKSB8IG9u ZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAsMDMtMDEtMjAwMCkgfCBvbmUKKyBbMyw0KSB8IFsw MS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZS T00gdHAxIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikg fCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorKDIgcm93cykKKworU0VMRUNUICog RlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlk X2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IHRocmVlCiso MSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQ7CistLSB0ZW1wb3Jh bCBVTklRVUU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0 cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMiwyXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9y YWxfcGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScs IGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdb MywzXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScp OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0w MS0yMDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0y MDAwKSB8IG9uZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQor KDMgcm93cykKKworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDIt MDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25l CisoMiByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7 CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMyw0KSB8IFswMS0wMS0yMDAw LDAxLTAxLTIwMTApIHwgdGhyZWUKKygxIHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDRkZjlk ODUwM2IuLjY2Yjc1ZmExMmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpA QCAtMjgsNyArMjgsNyBAQCB0ZXN0OiBzdHJpbmdzIG1kNSBudW1lcm9sb2d5IHBvaW50IGxz ZWcgbGluZSBib3ggcGF0aCBwb2x5Z29uIGNpcmNsZSBkYXRlIHRpbWUgdAogIyBnZW9tZXRy eSBkZXBlbmRzIG9uIHBvaW50LCBsc2VnLCBsaW5lLCBib3gsIHBhdGgsIHBvbHlnb24sIGNp cmNsZQogIyBob3JvbG9neSBkZXBlbmRzIG9uIGRhdGUsIHRpbWUsIHRpbWV0eiwgdGltZXN0 YW1wLCB0aW1lc3RhbXB0eiwgaW50ZXJ2YWwKICMgLS0tLS0tLS0tLQotdGVzdDogZ2VvbWV0 cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdleCB0eXBlX3Nhbml0eSBvcHJfc2FuaXR5IG1pc2Nf c2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Npb25zIHVuaWNvZGUgeGlkIG12Y2MKK3Rlc3Q6IGdl b21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMgcmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBt aXNjX3Nhbml0eSBjb21tZW50cyBleHByZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjIHdpdGhv dXRfb3ZlcmxhcHMKIAogIyAtLS0tLS0tLS0tCiAjIExvYWQgaHVnZSBhbW91bnRzIG9mIGRh dGEKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMu c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2MzMjM2NjE4YwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBA IC0wLDAgKzEsMjYyIEBACistLSBUZXN0cyBmb3IgV0lUSE9VVCBPVkVSTEFQUy4KKy0tCist LSBXZSBsZWF2ZSBiZWhpbmQgc2V2ZXJhbCB0YWJsZXMgdG8gdGVzdCBwZ19kdW1wIGV0YzoK Ky0tIHRlbXBvcmFsX3JuZywgdGVtcG9yYWxfcm5nMiwKKy0tIHRlbXBvcmFsX2ZrX3JuZzJy bmcuCisKKy0tCistLSB0ZXN0IGlucHV0IHBhcnNlcgorLS0KKworLS0gUEsgd2l0aCBubyBj b2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZyAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19w ayBQUklNQVJZIEtFWSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFBL IHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQgaXNuJ3QgdGhlcmU6CisKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKKworLS0gUEsgd2l0aCBhIG5vbi1yYW5nZSBjb2x1bW46CisKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispOworCistLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdl OgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBk ZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dpc3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdl IGluc3RlYWQgb2YgYW4gaW50LgorCS0tIChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRl c3QgdXNlcyB0aGUgc2FtZSB0cmljay4pCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRz cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZworU0VMRUNU IHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNv bm5hbWUgPSAndGVtcG9yYWxfcm5nX3BrJzsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29u aW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3Rl bXBvcmFsX3JuZ19wayc7CisKKy0tIFBLIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdl OgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQy IGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cm5nMl9wayBQUklNQVJZIEtFWSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpCispOworXGQgdGVtcG9yYWxfcm5nMgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVm KG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5n Ml9wayc7CitTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKK0RS T1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKKworCistLSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdl IHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQs IGNvbGxhdGlvbj0iQyIpOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cm5nMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcm5nMiBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxf cm5nMl9wazsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKK0RST1AgVFlQRSB0ZXh0cmFu Z2UyOworCistLSBVTklRVUUgd2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQ UzoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCXZhbGlkX2F0IHRzcmFuZ2Us CisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3VxIFVOSVFVRSAodmFsaWRfYXQgV0lUSE9V VCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklP RCB0aGF0IGlzbid0IHRoZXJlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJ aWQgSU5URUdFUiwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3aXRoIGEgbm9u LXJhbmdlIGNvbHVtbjoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIElO VEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEg VU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFV RSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nMiAoCisJLS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9n aXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwkt LSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2su KQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfcm5nMl91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor KTsKK1xkIHRlbXBvcmFsX3JuZzIKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfdXEn OworU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19j b25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CisKKy0tIFVO SVFVRSB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmczICgKKwlpZDEgaW50NHJhbmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZDEs IGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcz CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmczX3VxJzsKK1NFTEVDVCBwZ19nZXRfaW5k ZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25u YW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEnOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOwor CistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RSQUlOVAorLS0KKworRFJPUCBU QUJMRSB0ZW1wb3JhbF9ybmc7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBp bnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X3JuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19waworCVBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CisKKy0tIFBLIHdpdGggVVNJTkcgSU5E RVggKG5vdCBwb3NzaWJsZSk6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9y YWwzX3VxIE9OIHRlbXBvcmFsMyBVU0lORyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIg VEFCTEUgdGVtcG9yYWwzCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFS WSBLRVkgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0RST1AgVEFCTEUgdGVtcG9y YWwzOworCistLSBVTklRVUUgd2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jh bmdlCispOworQ1JFQVRFIElOREVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVT SU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBv cmFsM191cTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBBZGQgcmFuZ2UgY29sdW1u IGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAo CisJaWQgaW50NHJhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVN TiB2YWxpZF9hdCB0c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworCVBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxF IHRlbXBvcmFsMzsKKworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQgVU5JUVVFIGNvbnN0cmFp bnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50 NHJhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9h dCB0c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisK Ky0tCistLSB0ZXN0IFBLIGluc2VydHMKKy0tCisKKy0tIG9rYXk6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIw MTgtMDItMDMnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0n LCB0c3JhbmdlKCcyMDE4LTAzLTAzJywgJzIwMTgtMDQtMDQnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDEtMDUnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMsM10n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgTlVMTCkpOworCistLSBzaG91bGQgZmFpbDoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMywzXScsIE5VTEwpOworCistLQorLS0g dGVzdCBhIHJhbmdlIHdpdGggYm90aCBhIFBLIGFuZCBhIFVOSVFVRSBjb25zdHJhaW50Cist LQorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxp ZF9hdCBkYXRlcmFuZ2UsCisgIGlkMiBpbnQ4cmFuZ2UsCisgIG5hbWUgVEVYVCwKKyAgQ09O U1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKSwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdW5pcSBVTklRVUUgKGlkMiwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMg KGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVy YW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKKyAg KCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5 XScsICdiYXInKQorOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tCistLSB0ZXN0IGNo YW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcworLS0KKworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKQorKTsKKworQUxURVIgVEFCTEUgdGVtcG9yYWwzIEFMVEVSIENPTFVNTiB2YWxpZF9h dCBEUk9QIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIEFMVEVSIENPTFVNTiB2 YWxpZF9hdCBUWVBFIHRzdHpyYW5nZSBVU0lORyB0c3R6cmFuZ2UobG93ZXIodmFsaWRfYXQp LCB1cHBlcih2YWxpZF9hdCkpOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIFJFTkFNRSBDT0xV TU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhydTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9Q IENPTFVNTiB2YWxpZF90aHJ1OworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tCistLSB0 ZXN0IFBBUlRJVElPTiBCWSBmb3IgcmFuZ2VzCistLQorCistLSB0ZW1wb3JhbCBQUklNQVJZ IEtFWToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcGFyaXRpb25lZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUg dHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgn WzEsMV0nLCAnWzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgn WzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUn KTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VM RUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworRFJPUCBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZDsKKworLS0gdGVtcG9yYWwgVU5JUVVFOgorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0 ZXJhbmdlLAorICBuYW1lIHRleHQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVk X3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElP TiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIsMl0nKTsKK0NSRUFU RSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxV RVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEn LCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0 cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKLS0gCjIu MjUuMQoK --------------XDFSGX0v4ADvwDYCFM5gI4Qr Content-Type: text/x-patch; charset=UTF-8; name="v13-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v13-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSAyN2EzM2QxZDQwZTQxYzJhYWJjMmU2ZWJlODI2MjVjZWM2ODAzNGY5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxMyAyLzVdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwg IDQyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCA3NTIgKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jICAgICAgICAgICB8IDMwOSArKysrKystCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMgICAgICAgICAgICAgfCAgMTkgKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfY29uc3RyYWludC5oICAgICAgICAgICB8ICAgOCArLQogc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgIDI0ICsKIHNyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS9w YXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlZ3Jlc3Mv ZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwgNDI3ICsrKysrKysrKysKIHNy Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8IDQzMSArKysr KysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAxNzExIGluc2VydGlvbnMoKyksIDM0MSBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5z Z21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCA4N2YwYWFi MTNiLi5mZWE4ZmMzYzdhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAg LTgxLDcgKzgxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZ IHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVFIFsg TlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gV0lU SE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4 X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4u IF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFs PC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVYQ0xV REUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9k PC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNs dWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBbIFdI RVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVwbGFj ZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVOQ0VT IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+ IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVS SU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwv cmVwbGFjZWFibGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9EIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVwbGFj ZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1BVENI IFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xhc3M9InBhcmFtZXRlciI+ cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJs ZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZIERF RkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTQ5LDggKzExNDksOCBAQCBX SVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19s aXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNy ZWF0ZXRhYmxlLXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPlJFRkVS RU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBsYWNl YWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48L3Jl cGxhY2VhYmxlPiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9O IFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0 aW9uPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVy bT4KIAotICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApCi0g ICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8 L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNv bHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRlcm0+PGxpdGVyYWw+Rk9S RUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApCisgICAgUkVG RVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxh Y2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVtbjwv cmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkgXQogICAgIFsg TUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVwbGFj ZWFibGU+IF0KICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBEQVRF IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3Jl cGxhY2VhYmxlPiBdPC9saXRlcmFsPgpAQCAtMTE2MSwxMSArMTE2MSwyOSBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFs PC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEgZm9y ZWlnbiBrZXkgY29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBncm91 cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5CiAg ICAgICBjb250YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJlbmNl ZAotICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxl LiAgSWYgdGhlIDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9m IHRoZSByZWZlcmVuY2VkIHRhYmxlLgorICAgICAgSWYgdGhlIDxyZXBsYWNlYWJsZQogICAg ICAgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gbGlzdCBpcyBv bWl0dGVkLCB0aGUKICAgICAgIHByaW1hcnkga2V5IG9mIHRoZSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPgogICAgICAgaXMgdXNlZC4g IFRoZSByZWZlcmVuY2VkIGNvbHVtbnMgbXVzdCBiZSB0aGUgY29sdW1ucyBvZiBhIG5vbi1k ZWZlcnJhYmxlCi0gICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29uc3RyYWludCBpbiB0 aGUgcmVmZXJlbmNlZCB0YWJsZS4gIFRoZSB1c2VyCisgICAgICB1bmlxdWUgb3IgcHJpbWFy eSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgPC9wYXJh PgorCisgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtlZCB3 aXRoIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICBpdCBtdXN0IGJlIGEgcGVy aW9kIG9yIHJhbmdlIGNvbHVtbiwgYW5kIHRoZSByZWZlcmVuY2VkIHRhYmxlCisgICAgICBt dXN0IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgIFRoZSBub24tPGxpdGVy YWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5vcm1hbGx5CisgICAg ICAoYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0pLAorICAgICAgYnV0 IHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVtbiBpcyBub3QgY29tcGFyZWQg Zm9yIGVxdWFsaXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29uc3RyYWludCBpcyBjb25zaWRl cmVkIHNhdGlzZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5jZWQgdGFibGUgaGFzIG1hdGNo aW5nIHJlY29yZHMgd2hvc2UgY29tYmluZWQgcmFuZ2VzIGNvbXBsZXRlbHkgY292ZXIKKyAg ICAgIHRoZSByZWZlcmVuY2luZyByZWNvcmQuCisgICAgICBJbiBvdGhlciB3b3JkcywgdGhl IHJlZmVyZW5jZSBtdXN0IGhhdmUgYSByZWZlcmVudCBmb3IgaXRzIGVudGlyZSBkdXJhdGlv bi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIHVzZXIKICAgICAg IG11c3QgaGF2ZSA8bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBwZXJtaXNzaW9uIG9u IHRoZSByZWZlcmVuY2VkIHRhYmxlCiAgICAgICAoZWl0aGVyIHRoZSB3aG9sZSB0YWJsZSwg b3IgdGhlIHNwZWNpZmljIHJlZmVyZW5jZWQgY29sdW1ucykuICBUaGUKICAgICAgIGFkZGl0 aW9uIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCByZXF1aXJlcyBhCkBAIC0xMjM3LDcg KzEyNTUsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDxwYXJh PgogICAgICAgICAgIERlbGV0ZSBhbnkgcm93cyByZWZlcmVuY2luZyB0aGUgZGVsZXRlZCBy b3csIG9yIHVwZGF0ZSB0aGUKICAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlZmVyZW5jaW5n IGNvbHVtbihzKSB0byB0aGUgbmV3IHZhbHVlcyBvZiB0aGUKLSAgICAgICAgICByZWZlcmVu Y2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICByZWZlcmVuY2VkIGNvbHVt bnMsIHJlc3BlY3RpdmVseS4gSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwKKyAgICAgICAg ICB0aGUgZGVsZXRlIHdpbGwgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFs PiBzZW1hbnRpY3MKKyAgICAgICAgICB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0aGUg Ym91bmRzIG9mIHRoZSByZWZlcmVuY2VkIHJvdworICAgICAgICAgIGJlaW5nIGRlbGV0ZWQu CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJs aXN0ZW50cnk+CkBAIC0xMjUwLDYgKzEyNzEsMTIgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+ LCBSRU0KICAgICAgICAgICByZWZlcmVuY2luZyBjb2x1bW5zLCB0byBudWxsLiBBIHN1YnNl dCBvZiBjb2x1bW5zIGNhbiBvbmx5IGJlCiAgICAgICAgICAgc3BlY2lmaWVkIGZvciA8bGl0 ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICA8L3BhcmE+CisK KyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXks IHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9SCisgICAgICAgICAgUE9SVElPTiBP RjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUgZWZmZWN0IHRvIHRoZSBi b3VuZHMKKyAgICAgICAgICBvZiB0aGUgcmVmZXJlbmNlZCByb3cuCisgICAgICAgICA8L3Bh cmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAg LTEyNjIsNiArMTI4OSw5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICAg ICAgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVy YWw+IGFjdGlvbnMuCiAgICAgICAgICAgKFRoZXJlIG11c3QgYmUgYSByb3cgaW4gdGhlIHJl ZmVyZW5jZWQgdGFibGUgbWF0Y2hpbmcgdGhlIGRlZmF1bHQKICAgICAgICAgICB2YWx1ZXMs IGlmIHRoZXkgYXJlIG5vdCBudWxsLCBvciB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbC4pCisg ICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxsIHVz ZSA8bGl0ZXJhbD5GT1IgUE9SVElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1hbnRp Y3MgdG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBvZiB0aGUKKyAgICAg ICAgICByZWZlcmVuY2VkIHJvdy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0 aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRz LmMKaW5kZXggNzY4ZWFhMWRlYi4uNWY0YThhYTgwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKQEAgLTM4MSwxNiArMzgxLDE4IEBAIHN0YXRpYyBpbnQJdHJhbnNmb3JtQ29s dW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogc3RhdGljIGludAl0cmFu c2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxhdGlvbiBwa3JlbCwgT2lkICppbmRleE9pZCwK IAkJCQkJCQkJCSAgIExpc3QgKiphdHRuYW1lbGlzdCwKIAkJCQkJCQkJCSAgIGludDE2ICph dHRudW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJCQkJCQkJCSAgIGludDE2ICpwZXJpb2RhdHRu dW1zLCBPaWQgKnBlcmlvZGF0dHR5cGlkcywKIAkJCQkJCQkJCSAgIE9pZCAqb3BjbGFzc2Vz KTsKIHN0YXRpYyBPaWQJdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWws CiAJCQkJCQkJCQlpbnQgbnVtYXR0cnMsIGludDE2ICphdHRudW1zLAorCQkJCQkJCQkJYm9v bCBpc190ZW1wb3JhbCwgaW50MTYgcGVyaW9kYXR0bnVtLAogCQkJCQkJCQkJT2lkICpvcGNs YXNzZXMpOwogc3RhdGljIHZvaWQgY2hlY2tGa2V5UGVybWlzc2lvbnMoUmVsYXRpb24gcmVs LCBpbnQxNiAqYXR0bnVtcywgaW50IG5hdHRzKTsKIHN0YXRpYyBDb2VyY2lvblBhdGhUeXBl IGZpbmRGa2V5Q2FzdChPaWQgdGFyZ2V0VHlwZUlkLCBPaWQgc291cmNlVHlwZUlkLAogCQkJ CQkJCQkJIE9pZCAqZnVuY2lkKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRm9yZWlnbktleUNv bnN0cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkJCQkgUmVsYXRpb24gcmVsLCBSZWxh dGlvbiBwa3JlbCwKLQkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBPaWQgY29uc3RyYWludE9p ZCk7CisJCQkJCQkJCQkJIE9pZCBwa2luZE9pZCwgT2lkIGNvbnN0cmFpbnRPaWQsIGJvb2wg dGVtcG9yYWwpOwogc3RhdGljIHZvaWQgQVRDb250cm9sbGVyKEFsdGVyVGFibGVTdG10ICpw YXJzZXRyZWUsCiAJCQkJCQkgUmVsYXRpb24gcmVsLCBMaXN0ICpjbWRzLCBib29sIHJlY3Vy c2UsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4 dCAqY29udGV4dCk7CkBAIC01MDAsNyArNTAyLDggQEAgc3RhdGljIE9iamVjdEFkZHJlc3Mg YWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2Nv bnN0cmEKIAkJCQkJCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRv cnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJCQkJCQkJaW50IG51bWZrZGVsc2V0Y29s cywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCQkJCQkJYm9vbCBvbGRfY2hlY2tfb2ss Ci0JCQkJCQkJCQkJCU9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dl cik7CisJCQkJCQkJCQkJCU9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJp Z2dlciwKKwkJCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCB2YWxp ZGF0ZUZrT25EZWxldGVTZXRDb2x1bW5zKGludCBudW1ma3MsIGNvbnN0IGludDE2ICpma2F0 dG51bXMsCiAJCQkJCQkJCQkJIGludCBudW1ma3NldGNvbHMsIGNvbnN0IGludDE2ICpma3Nl dGNvbHNhdHRudW1zLAogCQkJCQkJCQkJCSBMaXN0ICpma3NldGNvbHMpOwpAQCAtNTEwLDcg KzUxMyw5IEBAIHN0YXRpYyB2b2lkIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3 cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIAkJCQkJCQkJCU9pZCAqcGZlcW9w ZXJhdG9ycywgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVyYXRvcnMsCiAJCQkJ CQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJ CQkJYm9vbCBvbGRfY2hlY2tfb2ssIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJCQkJT2lk IHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCU9p ZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCQkJCWJv b2wgaXNfdGVtcG9yYWwpOworCiBzdGF0aWMgdm9pZCBDbG9uZUZvcmVpZ25LZXlDb25zdHJh aW50cyhMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBwYXJlbnRSZWwsCiAJCQkJCQkJCQkgICBS ZWxhdGlvbiBwYXJ0aXRpb25SZWwpOwogc3RhdGljIHZvaWQgQ2xvbmVGa1JlZmVyZW5jZWQo UmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwpOwpAQCAtNTQyLDYg KzU0NywxMiBAQCBzdGF0aWMgdm9pZCBHZXRGb3JlaWduS2V5Q2hlY2tUcmlnZ2VycyhSZWxh dGlvbiB0cmlncmVsLAogCQkJCQkJCQkJICAgT2lkIGNvbm9pZCwgT2lkIGNvbmZyZWxpZCwg T2lkIGNvbnJlbGlkLAogCQkJCQkJCQkJICAgT2lkICppbnNlcnRUcmlnZ2VyT2lkLAogCQkJ CQkJCQkJICAgT2lkICp1cGRhdGVUcmlnZ2VyT2lkKTsKK3N0YXRpYyB2b2lkIEZpbmRGS0Nv bXBhcmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQkJCQlBbHRl cmVkVGFibGVJbmZvICp0YWIsIGludCBpLCBpbnQxNiAqZmthdHRudW0sCisJCQkJCWJvb2wg Km9sZF9jaGVja19vaywgTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0ZW0sCisJCQkJCU9pZCBw a3R5cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQkJCQlib29sIGlzX3RlbXBvcmFs LCBib29sIGZvcl9vdmVybGFwcywKKwkJCQkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9w T3V0LCBPaWQgKmZmZXFvcE91dCk7CiBzdGF0aWMgdm9pZCBBVEV4ZWNEcm9wQ29uc3RyYWlu dChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbnN0ck5hbWUsCiAJCQkJCQkJCSBEcm9w QmVoYXZpb3IgYmVoYXZpb3IsCiAJCQkJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJz aW5nLApAQCAtNTgyMyw3ICs1ODM0LDggQEAgQVRSZXdyaXRlVGFibGVzKEFsdGVyVGFibGVT dG10ICpwYXJzZXRyZWUsIExpc3QgKip3cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCiAJ CQkJdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChma2NvbnN0cmFpbnQtPmNvbm5hbWUs IHJlbCwgcmVmcmVsLAogCQkJCQkJCQkJCQkgY29uLT5yZWZpbmRpZCwKLQkJCQkJCQkJCQkJ IGNvbi0+Y29uaWQpOworCQkJCQkJCQkJCQkgY29uLT5jb25pZCwKKwkJCQkJCQkJCQkJIGNv bi0+Y29udGVtcG9yYWwpOwogCiAJCQkJLyoKIAkJCQkgKiBObyBuZWVkIHRvIG1hcmsgdGhl IGNvbnN0cmFpbnQgcm93IGFzIHZhbGlkYXRlZCwgd2UgZGlkCkBAIC05NDMzLDYgKzk0NDUs MTEgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVk VGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlPaWQJCQlwcGVxb3BlcmF0b3JzW0lO REVYX01BWF9LRVlTXSA9IHswfTsKIAlPaWQJCQlmZmVxb3BlcmF0b3JzW0lOREVYX01BWF9L RVlTXSA9IHswfTsKIAlpbnQxNgkJZmtkZWxzZXRjb2xzW0lOREVYX01BWF9LRVlTXSA9IHsw fTsKKwlib29sCQlpc190ZW1wb3JhbCA9IChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBO VUxMKTsKKwlpbnQxNgkJcGtwZXJpb2RhdHRudW1zWzFdID0gezB9OworCWludDE2CQlma3Bl cmlvZGF0dG51bXNbMV0gPSB7MH07CisJT2lkCQkJcGtwZXJpb2R0eXBvaWRzWzFdID0gezB9 OworCU9pZAkJCWZrcGVyaW9kdHlwb2lkc1sxXSA9IHswfTsKIAlpbnQJCQlpOwogCWludAkJ CW51bWZrcywKIAkJCQludW1wa3MsCkBAIC05NTI3LDYgKzk1NDQsMTAgQEAgQVRBZGRGb3Jl aWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAludW1ma3MgPSB0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxh dGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJCQkgZmtjb25zdHJhaW50LT5ma19hdHRycywK IAkJCQkJCQkJCSBma2F0dG51bSwgZmt0eXBvaWQpOworCWlmIChpc190ZW1wb3JhbCkKKwkJ dHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChyZWwpLAorCQkJCQkJ CSAgbGlzdF9tYWtlMShma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCksCisJCQkJCQkJICBma3Bl cmlvZGF0dG51bXMsIGZrcGVyaW9kdHlwb2lkcyk7CiAKIAludW1ma2RlbHNldGNvbHMgPSB0 cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCiAJCQkJCQkJ CQkJCSAgZmtjb25zdHJhaW50LT5ma19kZWxfc2V0X2NvbHMsCkBAIC05NTQ2LDYgKzk1Njcs NyBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQludW1wa3MgPSB0cmFuc2Zvcm1Ga2V5 R2V0UHJpbWFyeUtleShwa3JlbCwgJmluZGV4T2lkLAogCQkJCQkJCQkJCQkmZmtjb25zdHJh aW50LT5wa19hdHRycywKIAkJCQkJCQkJCQkJcGthdHRudW0sIHBrdHlwb2lkLAorCQkJCQkJ CQkJCQlwa3BlcmlvZGF0dG51bXMsIHBrcGVyaW9kdHlwb2lkcywKIAkJCQkJCQkJCQkJb3Bj bGFzc2VzKTsKIAl9CiAJZWxzZQpAQCAtOTU1Myw4ICs5NTc1LDE0IEBAIEFUQWRkRm9yZWln bktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCiAJCW51bXBrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0 aW9uR2V0UmVsaWQocGtyZWwpLAogCQkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPnBrX2F0dHJz LAogCQkJCQkJCQkJCSBwa2F0dG51bSwgcGt0eXBvaWQpOworCQlpZiAoaXNfdGVtcG9yYWwp CisJCQl0cmFuc2Zvcm1Db2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHBrcmVsKSwK KwkJCQkJCQkJCWxpc3RfbWFrZTEoZmtjb25zdHJhaW50LT5wa19wZXJpb2QpLAorCQkJCQkJ CQkJcGtwZXJpb2RhdHRudW1zLCBwa3BlcmlvZHR5cG9pZHMpOworCiAJCS8qIExvb2sgZm9y IGFuIGluZGV4IG1hdGNoaW5nIHRoZSBjb2x1bW4gbGlzdCAqLwogCQlpbmRleE9pZCA9IHRy YW5zZm9ybUZrZXlDaGVja0F0dHJzKHBrcmVsLCBudW1wa3MsIHBrYXR0bnVtLAorCQkJCQkJ CQkJCSAgIGlzX3RlbXBvcmFsLCBwa3BlcmlvZGF0dG51bXNbMF0sCiAJCQkJCQkJCQkJICAg b3BjbGFzc2VzKTsKIAl9CiAKQEAgLTk2MTMsMTg3ICs5NjQxLDI3IEBAIEFUQWRkRm9yZWln bktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBS ZWxhdGlvbiByZWwsCiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtcGtzOyBpKyspCiAJewotCQlP aWQJCQlwa3R5cGUgPSBwa3R5cG9pZFtpXTsKLQkJT2lkCQkJZmt0eXBlID0gZmt0eXBvaWRb aV07Ci0JCU9pZAkJCWZrdHlwZWQ7Ci0JCUhlYXBUdXBsZQljbGFfaHQ7Ci0JCUZvcm1fcGdf b3BjbGFzcyBjbGFfdHVwOwotCQlPaWQJCQlhbWlkOwotCQlPaWQJCQlvcGZhbWlseTsKLQkJ T2lkCQkJb3BjaW50eXBlOwotCQlPaWQJCQlwZmVxb3A7Ci0JCU9pZAkJCXBwZXFvcDsKLQkJ T2lkCQkJZmZlcW9wOwotCQlpbnQxNgkJZXFzdHJhdGVneTsKLQkJT2lkCQkJcGZlcW9wX3Jp Z2h0OwotCi0JCS8qIFdlIG5lZWQgc2V2ZXJhbCBmaWVsZHMgb3V0IG9mIHRoZSBwZ19vcGNs YXNzIGVudHJ5ICovCi0JCWNsYV9odCA9IFNlYXJjaFN5c0NhY2hlMShDTEFPSUQsIE9iamVj dElkR2V0RGF0dW0ob3BjbGFzc2VzW2ldKSk7Ci0JCWlmICghSGVhcFR1cGxlSXNWYWxpZChj bGFfaHQpKQotCQkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xh c3MgJXUiLCBvcGNsYXNzZXNbaV0pOwotCQljbGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykg R0VUU1RSVUNUKGNsYV9odCk7Ci0JCWFtaWQgPSBjbGFfdHVwLT5vcGNtZXRob2Q7Ci0JCW9w ZmFtaWx5ID0gY2xhX3R1cC0+b3BjZmFtaWx5OwotCQlvcGNpbnR5cGUgPSBjbGFfdHVwLT5v cGNpbnR5cGU7Ci0JCVJlbGVhc2VTeXNDYWNoZShjbGFfaHQpOwotCi0JCS8qCi0JCSAqIENo ZWNrIGl0J3MgYSBidHJlZTsgY3VycmVudGx5IHRoaXMgY2FuIG5ldmVyIGZhaWwgc2luY2Ug bm8gb3RoZXIKLQkJICogaW5kZXggQU1zIHN1cHBvcnQgdW5pcXVlIGluZGV4ZXMuICBJZiB3 ZSBldmVyIGRpZCBoYXZlIG90aGVyIHR5cGVzCi0JCSAqIG9mIHVuaXF1ZSBpbmRleGVzLCB3 ZSdkIG5lZWQgYSB3YXkgdG8gZGV0ZXJtaW5lIHdoaWNoIG9wZXJhdG9yCi0JCSAqIHN0cmF0 ZWd5IG51bWJlciBpcyBlcXVhbGl0eS4gIChJcyBpdCByZWFzb25hYmxlIHRvIGluc2lzdCB0 aGF0Ci0JCSAqIGV2ZXJ5IHN1Y2ggaW5kZXggQU0gdXNlIGJ0cmVlJ3MgbnVtYmVyIGZvciBl cXVhbGl0eT8pCi0JCSAqLwotCQlpZiAoYW1pZCAhPSBCVFJFRV9BTV9PSUQpCi0JCQllbG9n KEVSUk9SLCAib25seSBiLXRyZWUgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciBmb3JlaWdu IGtleXMiKTsKLQkJZXFzdHJhdGVneSA9IEJURXF1YWxTdHJhdGVneU51bWJlcjsKLQotCQkv KgotCQkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRv ciBmb3IgdGhlIGluZGV4LgotCQkgKiBXZSdsbCB1c2UgaXQgZm9yIFBLID0gUEsgY29tcGFy aXNvbnMuCi0JCSAqLwotCQlwcGVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5 LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwKLQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQotCQlp ZiAoIU9pZElzVmFsaWQocHBlcW9wKSkKLQkJCWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJh dG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAldSIsCi0JCQkJIGVxc3RyYXRlZ3ksIG9wY2lu dHlwZSwgb3BjaW50eXBlLCBvcGZhbWlseSk7Ci0KLQkJLyoKLQkJICogQXJlIHRoZXJlIGVx dWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRha2UgZXhhY3RseSB0aGUgRksgdHlwZT8gQXNzdW1l Ci0JCSAqIHdlIHNob3VsZCBsb29rIHRocm91Z2ggYW55IGRvbWFpbiBoZXJlLgotCQkgKi8K LQkJZmt0eXBlZCA9IGdldEJhc2VUeXBlKGZrdHlwZSk7Ci0KLQkJcGZlcW9wID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgb3BjaW50eXBlLCBma3R5cGVkLAotCQkJCQkJCQkJ IGVxc3RyYXRlZ3kpOwotCQlpZiAoT2lkSXNWYWxpZChwZmVxb3ApKQotCQl7Ci0JCQlwZmVx b3BfcmlnaHQgPSBma3R5cGVkOwotCQkJZmZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihv cGZhbWlseSwgZmt0eXBlZCwgZmt0eXBlZCwKLQkJCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0J CX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JCQlwZmVx b3BfcmlnaHQgPSBJbnZhbGlkT2lkOwotCQkJZmZlcW9wID0gSW52YWxpZE9pZDsKLQkJfQot Ci0JCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQot CQl7Ci0JCQkvKgotCQkJICogT3RoZXJ3aXNlLCBsb29rIGZvciBhbiBpbXBsaWNpdCBjYXN0 IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhlCi0JCQkgKiBvcGNpbnR5cGUsIGFuZCBpZiBmb3Vu ZCwgdXNlIHRoZSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yLgotCQkJICogVGhpcyBpcyBh IGJpdCB0cmlja3kgYmVjYXVzZSBvcGNpbnR5cGUgbWlnaHQgYmUgYSBwb2x5bW9ycGhpYwot CQkJICogdHlwZSBzdWNoIGFzIEFOWUFSUkFZIG9yIEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2 ZSB0byB0ZXN0IGlzCi0JCQkgKiB3aGV0aGVyIHRoZSB0d28gYWN0dWFsIGNvbHVtbiB0eXBl cyBjYW4gYmUgY29uY3VycmVudGx5IGNhc3QgdG8KLQkJCSAqIHRoYXQgdHlwZS4gIChPdGhl cndpc2UsIHdlJ2QgZmFpbCB0byByZWplY3QgY29tYmluYXRpb25zIHN1Y2gKLQkJCSAqIGFz IGludFtdIGFuZCBwb2ludFtdLikKLQkJCSAqLwotCQkJT2lkCQkJaW5wdXRfdHlwZWlkc1sy XTsKLQkJCU9pZAkJCXRhcmdldF90eXBlaWRzWzJdOwotCi0JCQlpbnB1dF90eXBlaWRzWzBd ID0gcGt0eXBlOwotCQkJaW5wdXRfdHlwZWlkc1sxXSA9IGZrdHlwZTsKLQkJCXRhcmdldF90 eXBlaWRzWzBdID0gb3BjaW50eXBlOwotCQkJdGFyZ2V0X3R5cGVpZHNbMV0gPSBvcGNpbnR5 cGU7Ci0JCQlpZiAoY2FuX2NvZXJjZV90eXBlKDIsIGlucHV0X3R5cGVpZHMsIHRhcmdldF90 eXBlaWRzLAotCQkJCQkJCQlDT0VSQ0lPTl9JTVBMSUNJVCkpCi0JCQl7Ci0JCQkJcGZlcW9w ID0gZmZlcW9wID0gcHBlcW9wOwotCQkJCXBmZXFvcF9yaWdodCA9IG9wY2ludHlwZTsKLQkJ CX0KLQkJfQotCi0JCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZm ZXFvcCkpKQotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRB VFlQRV9NSVNNQVRDSCksCi0JCQkJCSBlcnJtc2coImZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg XCIlc1wiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCIsCi0JCQkJCQkJZmtjb25zdHJhaW50LT5j b25uYW1lKSwKLQkJCQkJIGVycmRldGFpbCgiS2V5IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVz XCIgIgotCQkJCQkJCSAgICJhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiAlcyBhbmQgJXMu IiwKLQkJCQkJCQkgICBzdHJWYWwobGlzdF9udGgoZmtjb25zdHJhaW50LT5ma19hdHRycywg aSkpLAotCQkJCQkJCSAgIHN0clZhbChsaXN0X250aChma2NvbnN0cmFpbnQtPnBrX2F0dHJz LCBpKSksCi0JCQkJCQkJICAgZm9ybWF0X3R5cGVfYmUoZmt0eXBlKSwKLQkJCQkJCQkgICBm b3JtYXRfdHlwZV9iZShwa3R5cGUpKSkpOwotCi0JCWlmIChvbGRfY2hlY2tfb2spCi0JCXsK LQkJCS8qCi0JCQkgKiBXaGVuIGEgcGZlcW9wIGNoYW5nZXMsIHJldmFsaWRhdGUgdGhlIGNv bnN0cmFpbnQuICBXZSBjb3VsZAotCQkJICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5n ZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxlIGNvbXBsZXhpdHkKLQkJCSAqIHdpdGhvdXQgYW55 IGNvbmNyZXRlIGJlbmVmaXQgZm9yIGNvcmUgdHlwZXMuICBXZSBuZWVkIG5vdAotCQkJICog YXNzZXNzIHBwZXFvcCBvciBmZmVxb3AsIHdoaWNoIFJJX0luaXRpYWxfQ2hlY2soKSBkb2Vz IG5vdCB1c2UuCi0JCQkgKi8KLQkJCW9sZF9jaGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0 X29pZChvbGRfcGZlcW9wX2l0ZW0pKTsKLQkJCW9sZF9wZmVxb3BfaXRlbSA9IGxuZXh0KGZr Y29uc3RyYWludC0+b2xkX2NvbnBmZXFvcCwKLQkJCQkJCQkJCW9sZF9wZmVxb3BfaXRlbSk7 Ci0JCX0KLQkJaWYgKG9sZF9jaGVja19vaykKLQkJewotCQkJT2lkCQkJb2xkX2ZrdHlwZTsK LQkJCU9pZAkJCW5ld19ma3R5cGU7Ci0JCQlDb2VyY2lvblBhdGhUeXBlIG9sZF9wYXRodHlw ZTsKLQkJCUNvZXJjaW9uUGF0aFR5cGUgbmV3X3BhdGh0eXBlOwotCQkJT2lkCQkJb2xkX2Nh c3RmdW5jOwotCQkJT2lkCQkJbmV3X2Nhc3RmdW5jOwotCQkJRm9ybV9wZ19hdHRyaWJ1dGUg YXR0ciA9IFR1cGxlRGVzY0F0dHIodGFiLT5vbGREZXNjLAotCQkJCQkJCQkJCQkJICAgZmth dHRudW1baV0gLSAxKTsKLQotCQkJLyoKLQkJCSAqIElkZW50aWZ5IGNvZXJjaW9uIHBhdGh3 YXlzIGZyb20gZWFjaCBvZiB0aGUgb2xkIGFuZCBuZXcgRkstc2lkZQotCQkJICogY29sdW1u IHR5cGVzIHRvIHRoZSByaWdodCAoZm9yZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVx b3AuCi0JCQkgKiBXZSBtYXkgYXNzdW1lIHRoYXQgcGdfY29uc3RyYWludC5jb25rZXkgaXMg bm90IGNoYW5naW5nLgotCQkJICovCi0JCQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7 Ci0JCQluZXdfZmt0eXBlID0gZmt0eXBlOwotCQkJb2xkX3BhdGh0eXBlID0gZmluZEZrZXlD YXN0KHBmZXFvcF9yaWdodCwgb2xkX2ZrdHlwZSwKLQkJCQkJCQkJCQkmb2xkX2Nhc3RmdW5j KTsKLQkJCW5ld19wYXRodHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG5ld19m a3R5cGUsCi0JCQkJCQkJCQkJJm5ld19jYXN0ZnVuYyk7Ci0KLQkJCS8qCi0JCQkgKiBVcG9u IGEgY2hhbmdlIHRvIHRoZSBjYXN0IGZyb20gdGhlIEZLIGNvbHVtbiB0byBpdHMgcGZlcW9w Ci0JCQkgKiBvcGVyYW5kLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgRm9yIHRoaXMg ZXZhbHVhdGlvbiwgYQotCQkJICogYmluYXJ5IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVu dCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxlCi0JCQkgKiB0eXBlIGltcGxlbWVudG9ycyBz aG91bGQgZGVzaWduIGltcGxpY2l0IGNhc3RzIHdpdGggYW4gZXllCi0JCQkgKiB0b3dhcmQg Y29uc2lzdGVuY3kgb2Ygb3BlcmF0aW9ucyBsaWtlIGVxdWFsaXR5LCB3ZSBjYW5ub3QKLQkJ CSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCi0JCQkgKgotCQkJICog QSBmdW5jdGlvbiB3aXRoIGEgcG9seW1vcnBoaWMgYXJndW1lbnQgY291bGQgY2hhbmdlIGJl aGF2aW9yCi0JCQkgKiBhcmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhwcl9h cmd0eXBlKCkuICBUaGVyZWZvcmUsCi0JCQkgKiB3aGVuIHRoZSBjYXN0IGRlc3RpbmF0aW9u IGlzIHBvbHltb3JwaGljLCB3ZSBvbmx5IGF2b2lkCi0JCQkgKiByZXZhbGlkYXRpb24gaWYg dGhlIGlucHV0IHR5cGUgaGFzIG5vdCBjaGFuZ2VkIGF0IGFsbC4gIEdpdmVuCi0JCQkgKiBq dXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVx dWlyZW1lbnQKLQkJCSAqIHByZXZlbnRzIG5vIHdvdWxkLWJlIG9wdGltaXphdGlvbnMuCi0J CQkgKgotCQkJICogSWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBh IGRvbWFpbiB0aGVyZW9uLCB0aGVuCi0JCQkgKiB0aGF0IGRvbWFpbiB0eXBlIG11c3QgYmUg dGhlIG9wY2ludHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4LgotCQkJICogTmVjZXNzYXJpbHks IHRoZSBwcmltYXJ5IGtleSBjb2x1bW4gbXVzdCB0aGVuIGJlIG9mIHRoZSBkb21haW4KLQkJ CSAqIHR5cGUuICBTaW5jZSB0aGUgY29uc3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwg YWxsIHZhbHVlcyBvbgotCQkJICogdGhlIGZvcmVpZ24gc2lkZSBuZWNlc3NhcmlseSBleGlz dCBvbiB0aGUgcHJpbWFyeSBzaWRlIGFuZCBpbgotCQkJICogdHVybiBjb25mb3JtIHRvIHRo ZSBkb21haW4uICBDb25zZXF1ZW50bHksIHdlIG5lZWQgbm90IHRyZWF0Ci0JCQkgKiBkb21h aW5zIHNwZWNpYWxseSBoZXJlLgotCQkJICoKLQkJCSAqIFNpbmNlIHdlIHJlcXVpcmUgdGhh dCBhbGwgY29sbGF0aW9ucyBzaGFyZSB0aGUgc2FtZSBub3Rpb24gb2YKLQkJCSAqIGVxdWFs aXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNlIHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UK LQkJCSAqIGVxdWFsaXR5KSwgd2UgZG9uJ3QgY29tcGFyZSBjb2xsYXRpb24gaGVyZS4KLQkJ CSAqCi0JCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlwZS4g IEl0J3MgbmVjZXNzYXJpbHkKLQkJCSAqIGJpbmFyeSBjb2VyY2libGUgdG8gdGhlIG9wY2lu dHlwZSBvZiB0aGUgdW5pcXVlIGluZGV4IGNvbHVtbiwKLQkJCSAqIGFuZCByaV90cmlnZ2Vy cy5jIHdpbGwgb25seSBkZWFsIHdpdGggUEsgZGF0dW1zIGluIHRlcm1zIG9mCi0JCQkgKiB0 aGF0IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBm ZXFvcC4KLQkJCSAqLwotCQkJb2xkX2NoZWNrX29rID0gKG5ld19wYXRodHlwZSA9PSBvbGRf cGF0aHR5cGUgJiYKLQkJCQkJCQluZXdfY2FzdGZ1bmMgPT0gb2xkX2Nhc3RmdW5jICYmCi0J CQkJCQkJKCFJc1BvbHltb3JwaGljVHlwZShwZmVxb3BfcmlnaHQpIHx8Ci0JCQkJCQkJIG5l d19ma3R5cGUgPT0gb2xkX2ZrdHlwZSkpOwotCQl9CisJCUZpbmRGS0NvbXBhcmlzb25PcGVy YXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIsIGksIGZrYXR0bnVtLAorCQkJCSZvbGRf Y2hlY2tfb2ssICZvbGRfcGZlcW9wX2l0ZW0sCisJCQkJcGt0eXBvaWRbaV0sIGZrdHlwb2lk W2ldLCBvcGNsYXNzZXNbaV0sCisJCQkJaXNfdGVtcG9yYWwsIGZhbHNlLAorCQkJCSZwZmVx b3BlcmF0b3JzW2ldLCAmcHBlcW9wZXJhdG9yc1tpXSwgJmZmZXFvcGVyYXRvcnNbaV0pOwor CX0KKwlpZiAoaXNfdGVtcG9yYWwpIHsKKwkJcGthdHRudW1bbnVtcGtzXSA9IHBrcGVyaW9k YXR0bnVtc1swXTsKKwkJcGt0eXBvaWRbbnVtcGtzXSA9IHBrcGVyaW9kdHlwb2lkc1swXTsK KwkJZmthdHRudW1bbnVtcGtzXSA9IGZrcGVyaW9kYXR0bnVtc1swXTsKKwkJZmt0eXBvaWRb bnVtcGtzXSA9IGZrcGVyaW9kdHlwb2lkc1swXTsKIAotCQlwZmVxb3BlcmF0b3JzW2ldID0g cGZlcW9wOwotCQlwcGVxb3BlcmF0b3JzW2ldID0gcHBlcW9wOwotCQlmZmVxb3BlcmF0b3Jz W2ldID0gZmZlcW9wOworCQlGaW5kRktDb21wYXJpc29uT3BlcmF0b3JzKAorCQkJCWZrY29u c3RyYWludCwgdGFiLCBudW1wa3MsIGZrYXR0bnVtLAorCQkJCSZvbGRfY2hlY2tfb2ssICZv bGRfcGZlcW9wX2l0ZW0sCisJCQkJcGtwZXJpb2R0eXBvaWRzWzBdLCBma3BlcmlvZHR5cG9p ZHNbMF0sIG9wY2xhc3Nlc1tudW1wa3NdLAorCQkJCWlzX3RlbXBvcmFsLCB0cnVlLAorCQkJ CSZwZmVxb3BlcmF0b3JzW251bXBrc10sICZwcGVxb3BlcmF0b3JzW251bXBrc10sICZmZmVx b3BlcmF0b3JzW251bXBrc10pOworCQludW1ma3MgKz0gMTsKKwkJbnVtcGtzICs9IDE7CiAJ fQogCiAJLyoKQEAgLTk4MTIsNyArOTY4MCw4IEBAIEFUQWRkRm9yZWlnbktleUNvbnN0cmFp bnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWws CiAJCQkJCQkJCQkgbnVtZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJIGZrZGVsc2V0Y29scywK IAkJCQkJCQkJCSBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxp ZE9pZCk7CisJCQkJCQkJCQkgSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSBp c190ZW1wb3JhbCk7CiAKIAkvKiBOb3cgaGFuZGxlIHRoZSByZWZlcmVuY2luZyBzaWRlLiAq LwogCWFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKHdxdWV1ZSwgZmtjb25zdHJhaW50LCByZWws IHBrcmVsLApAQCAtOTgyOCw3ICs5Njk3LDggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWlu dChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwK IAkJCQkJCQlma2RlbHNldGNvbHMsCiAJCQkJCQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCWxv Y2ttb2RlLAotCQkJCQkJCUludmFsaWRPaWQsIEludmFsaWRPaWQpOworCQkJCQkJCUludmFs aWRPaWQsIEludmFsaWRPaWQsCisJCQkJCQkJaXNfdGVtcG9yYWwpOwogCiAJLyoKIAkgKiBE b25lLiAgQ2xvc2UgcGsgdGFibGUsIGJ1dCBrZWVwIGxvY2sgdW50aWwgd2UndmUgY29tbWl0 dGVkLgpAQCAtOTkxMyw3ICs5NzgzLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0 ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJ CQkJICAgT2lkICpwcGVxb3BlcmF0b3JzLCBPaWQgKmZmZXFvcGVyYXRvcnMsCiAJCQkJCSAg IGludCBudW1ma2RlbHNldGNvbHMsIGludDE2ICpma2RlbHNldGNvbHMsCiAJCQkJCSAgIGJv b2wgb2xkX2NoZWNrX29rLAotCQkJCQkgICBPaWQgcGFyZW50RGVsVHJpZ2dlciwgT2lkIHBh cmVudFVwZFRyaWdnZXIpCisJCQkJCSAgIE9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFy ZW50VXBkVHJpZ2dlciwKKwkJCQkJICAgYm9vbCBpc190ZW1wb3JhbCkKIHsKIAlPYmplY3RB ZGRyZXNzIGFkZHJlc3M7CiAJT2lkCQkJY29uc3RyT2lkOwpAQCAtOTk5OSw3ICs5ODcwLDcg QEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyog aXNsb2NhbCAqLwogCQkJCQkJCQkJICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJ CQkJCQkJCSAgY29ubm9pbmhlcml0LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBj b25UZW1wb3JhbCAqLwogCQkJCQkJCQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAK IAlPYmplY3RBZGRyZXNzU2V0KGFkZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25z dHJPaWQpOwpAQCAtMTAwNzUsNyArOTk0Niw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQo TGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWws CiAJCQkJCQkJCSAgIHBmZXFvcGVyYXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFvcGVyYXRv cnMsCiAJCQkJCQkJCSAgIG51bWZrZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAogCQkJCQkJ CQkgICBvbGRfY2hlY2tfb2ssCi0JCQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0 ZVRyaWdnZXJPaWQpOworCQkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRhdGVUcmln Z2VyT2lkLAorCQkJCQkJCQkgICBpc190ZW1wb3JhbCk7CiAKIAkJCS8qIERvbmUgLS0gY2xl YW4gdXAgKGJ1dCBrZWVwIHRoZSBsb2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFydFJlbCwg Tm9Mb2NrKTsKQEAgLTEwMTMzLDcgKzEwMDA1LDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNp bmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiBy ZWwsCiAJCQkJCQlPaWQgKnBmZXFvcGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lk ICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZr ZGVsc2V0Y29scywKIAkJCQkJCWJvb2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9k ZSwKLQkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikK KwkJCQkJCU9pZCBwYXJlbnRJbnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJ CQkJCWJvb2wgaXNfdGVtcG9yYWwpCiB7CiAJT2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJ CQl1cGRhdGVUcmlnZ2VyT2lkOwpAQCAtMTAxODEsNiArMTAwNTQsNyBAQCBhZGRGa1JlY3Vy c2VSZWZlcmVuY2luZyhMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQs IFJlbGF0aW9uIHJlbCwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlk KHBrcmVsKTsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBpbmRleE9pZDsKIAkJCW5ld2Nvbi0+ Y29uaWQgPSBwYXJlbnRDb25zdHI7CisJCQluZXdjb24tPmNvbnRlbXBvcmFsID0gZmtjb25z dHJhaW50LT5ma19wZXJpb2QgIT0gTlVMTDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChOb2RlICop IGZrY29uc3RyYWludDsKIAogCQkJdGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFiLT5j b25zdHJhaW50cywgbmV3Y29uKTsKQEAgLTEwMjk4LDcgKzEwMTcyLDcgQEAgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJ CQkJCQkJICBmYWxzZSwKLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJ CQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJCQkJICBm YWxzZSk7CiAKIAkJCS8qCkBAIC0xMDMyOSw3ICsxMDIwMyw4IEBAIGFkZEZrUmVjdXJzZVJl ZmVyZW5jaW5nKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVs YXRpb24gcmVsLAogCQkJCQkJCQkJb2xkX2NoZWNrX29rLAogCQkJCQkJCQkJbG9ja21vZGUs CiAJCQkJCQkJCQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9p ZCk7CisJCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkJaXNfdGVtcG9yYWwp OwogCiAJCQl0YWJsZV9jbG9zZShwYXJ0aXRpb24sIE5vTG9jayk7CiAJCX0KQEAgLTEwNTY1 LDcgKzEwNDQwLDggQEAgQ2xvbmVGa1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBS ZWxhdGlvbiBwYXJ0aXRpb25SZWwpCiAJCQkJCQkJICAgY29uZmRlbHNldGNvbHMsCiAJCQkJ CQkJICAgdHJ1ZSwKIAkJCQkJCQkgICBkZWxldGVUcmlnZ2VyT2lkLAotCQkJCQkJCSAgIHVw ZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJCQkJ ICAgY29uc3RyRm9ybS0+Y29udGVtcG9yYWwpOwogCiAJCXRhYmxlX2Nsb3NlKGZrUmVsLCBO b0xvY2spOwogCQlSZWxlYXNlU3lzQ2FjaGUodHVwbGUpOwpAQCAtMTA4MDQsNyArMTA2ODAs NyBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50 UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJCQkgIGZhbHNlLAkvKiBpc2xvY2FsICov CiAJCQkJCQkJCSAgMSwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJICBmYWxzZSwJLyogY29u Tm9Jbmhlcml0ICovCi0JCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJ CQkJCSAgY29uc3RyRm9ybS0+Y29udGVtcG9yYWwsCS8qIGNvblRlbXBvcmFsICovCiAJCQkJ CQkJCSAgdHJ1ZSk7CiAKIAkJLyogU2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNpZXMgZm9y IHRoZSBuZXcgY29uc3RyYWludCAqLwpAQCAtMTA4MzgsMTMgKzEwNzE0LDIzMiBAQCBDbG9u ZUZrUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxh dGlvbiBwYXJ0UmVsKQogCQkJCQkJCQlmYWxzZSwJLyogbm8gb2xkIGNoZWNrIGV4aXN0cyAq LwogCQkJCQkJCQlBY2Nlc3NFeGNsdXNpdmVMb2NrLAogCQkJCQkJCQlpbnNlcnRUcmlnZ2Vy T2lkLAotCQkJCQkJCQl1cGRhdGVUcmlnZ2VyT2lkKTsKKwkJCQkJCQkJdXBkYXRlVHJpZ2dl ck9pZCwKKwkJCQkJCQkJY29uc3RyRm9ybS0+Y29udGVtcG9yYWwpOwogCQl0YWJsZV9jbG9z ZShwa3JlbCwgTm9Mb2NrKTsKIAl9CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dFeGNs dXNpdmVMb2NrKTsKIH0KIAorc3RhdGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVyYXRv cnMoQ29uc3RyYWludCAqZmtjb25zdHJhaW50LAorCQlBbHRlcmVkVGFibGVJbmZvICp0YWIs CisJCWludCBpLAorCQlpbnQxNiAqZmthdHRudW0sCisJCWJvb2wgKm9sZF9jaGVja19vaywK KwkJTGlzdENlbGwgKipvbGRfcGZlcW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUsIE9pZCBma3R5 cGUsIE9pZCBvcGNsYXNzLAorCQlib29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVybGFw cywKKwkJT2lkICpwZmVxb3BPdXQsIE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCkK K3sKKwlPaWQJCQlma3R5cGVkOworCUhlYXBUdXBsZQljbGFfaHQ7CisJRm9ybV9wZ19vcGNs YXNzIGNsYV90dXA7CisJT2lkCQkJYW1pZDsKKwlPaWQJCQlvcGZhbWlseTsKKwlPaWQJCQlv cGNpbnR5cGU7CisJT2lkCQkJcGZlcW9wOworCU9pZAkJCXBwZXFvcDsKKwlPaWQJCQlmZmVx b3A7CisJaW50MTYJCWVxc3RyYXRlZ3k7CisJT2lkCQkJcGZlcW9wX3JpZ2h0OworCisJLyog V2UgbmVlZCBzZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8K KwljbGFfaHQgPSBTZWFyY2hTeXNDYWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9w Y2xhc3MpKTsKKwlpZiAoIUhlYXBUdXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJZWxvZyhFUlJP UiwgImNhY2hlIGxvb2t1cCBmYWlsZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzKTsKKwlj bGFfdHVwID0gKEZvcm1fcGdfb3BjbGFzcykgR0VUU1RSVUNUKGNsYV9odCk7CisJYW1pZCA9 IGNsYV90dXAtPm9wY21ldGhvZDsKKwlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsK KwlvcGNpbnR5cGUgPSBjbGFfdHVwLT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5c0NhY2hlKGNs YV9odCk7CisKKwlpZiAoaXNfdGVtcG9yYWwpCisJeworCQlpZiAoYW1pZCAhPSBHSVNUX0FN X09JRCkKKwkJCWVsb2coRVJST1IsICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUgc3VwcG9ydGVk IGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKTsKKwkJZXFzdHJhdGVneSA9IGZvcl9vdmVy bGFwcyA/IFJUT3ZlcmxhcFN0cmF0ZWd5TnVtYmVyIDogUlRFcXVhbFN0cmF0ZWd5TnVtYmVy OworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJl bnRseSB0aGlzIGNhbiBuZXZlciBmYWlsIHNpbmNlIG5vIG90aGVyCisJCSAqIGluZGV4IEFN cyBzdXBwb3J0IHVuaXF1ZSBpbmRleGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0 eXBlcworCQkgKiBvZiB1bmlxdWUgaW5kZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVy bWluZSB3aGljaCBvcGVyYXRvcgorCQkgKiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHku ICAoSXMgaXQgcmVhc29uYWJsZSB0byBpbnNpc3QgdGhhdAorCQkgKiBldmVyeSBzdWNoIGlu ZGV4IEFNIHVzZSBidHJlZSdzIG51bWJlciBmb3IgZXF1YWxpdHk/KQorCQkgKi8KKwkJaWYg KGFtaWQgIT0gQlRSRUVfQU1fT0lEKQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGlu ZGV4ZXMgYXJlIHN1cHBvcnRlZCBmb3IgZm9yZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kg PSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJfQorCisJLyoKKwkgKiBUaGVyZSBoYWQgYmV0 dGVyIGJlIGEgcHJpbWFyeSBlcXVhbGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgorCSAq IFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29ucy4KKwkgKi8KKwlwcGVxb3Ag PSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwK KwkJCQkJCQkJIGVxc3RyYXRlZ3kpOworCisJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkpCisJ CWVsb2coRVJST1IsICJtaXNzaW5nIG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAl dSIsCisJCQkgZXFzdHJhdGVneSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFtaWx5KTsK KworCS8qCisJICogQXJlIHRoZXJlIGVxdWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRha2UgZXhh Y3RseSB0aGUgRksgdHlwZT8gQXNzdW1lCisJICogd2Ugc2hvdWxkIGxvb2sgdGhyb3VnaCBh bnkgZG9tYWluIGhlcmUuCisJICovCisJZmt0eXBlZCA9IGdldEJhc2VUeXBlKGZrdHlwZSk7 CisKKwlwZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUs IGZrdHlwZWQsCisJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKKwlpZiAoT2lkSXNWYWxpZChwZmVx b3ApKQorCXsKKwkJcGZlcW9wX3JpZ2h0ID0gZmt0eXBlZDsKKwkJZmZlcW9wID0gZ2V0X29w ZmFtaWx5X21lbWJlcihvcGZhbWlseSwgZmt0eXBlZCwgZmt0eXBlZCwKKwkJCQkJCQkJCSBl cXN0cmF0ZWd5KTsKKwl9CisJZWxzZQorCXsKKwkJLyoga2VlcCBjb21waWxlciBxdWlldCAq LworCQlwZmVxb3BfcmlnaHQgPSBJbnZhbGlkT2lkOworCQlmZmVxb3AgPSBJbnZhbGlkT2lk OworCX0KKworCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFv cCkpKQorCXsKKwkJLyoKKwkJICogT3RoZXJ3aXNlLCBsb29rIGZvciBhbiBpbXBsaWNpdCBj YXN0IGZyb20gdGhlIEZLIHR5cGUgdG8gdGhlCisJCSAqIG9wY2ludHlwZSwgYW5kIGlmIGZv dW5kLCB1c2UgdGhlIHByaW1hcnkgZXF1YWxpdHkgb3BlcmF0b3IuCisJCSAqIFRoaXMgaXMg YSBiaXQgdHJpY2t5IGJlY2F1c2Ugb3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMK KwkJICogdHlwZSBzdWNoIGFzIEFOWUFSUkFZIG9yIEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2 ZSB0byB0ZXN0IGlzCisJCSAqIHdoZXRoZXIgdGhlIHR3byBhY3R1YWwgY29sdW1uIHR5cGVz IGNhbiBiZSBjb25jdXJyZW50bHkgY2FzdCB0bworCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3 aXNlLCB3ZSdkIGZhaWwgdG8gcmVqZWN0IGNvbWJpbmF0aW9ucyBzdWNoCisJCSAqIGFzIGlu dFtdIGFuZCBwb2ludFtdLikKKwkJICovCisJCU9pZAkJCWlucHV0X3R5cGVpZHNbMl07CisJ CU9pZAkJCXRhcmdldF90eXBlaWRzWzJdOworCisJCWlucHV0X3R5cGVpZHNbMF0gPSBwa3R5 cGU7CisJCWlucHV0X3R5cGVpZHNbMV0gPSBma3R5cGU7CisJCXRhcmdldF90eXBlaWRzWzBd ID0gb3BjaW50eXBlOworCQl0YXJnZXRfdHlwZWlkc1sxXSA9IG9wY2ludHlwZTsKKwkJaWYg KGNhbl9jb2VyY2VfdHlwZSgyLCBpbnB1dF90eXBlaWRzLCB0YXJnZXRfdHlwZWlkcywKKwkJ CQkJCQlDT0VSQ0lPTl9JTVBMSUNJVCkpCisJCXsKKwkJCXBmZXFvcCA9IGZmZXFvcCA9IHBw ZXFvcDsKKwkJCXBmZXFvcF9yaWdodCA9IG9wY2ludHlwZTsKKwkJfQorCX0KKworCWlmICgh KE9pZElzVmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQorCXsKKwkJY2hh ciAqZmthdHRyX25hbWU7CisJCWNoYXIgKnBrYXR0cl9uYW1lOworCisJCWlmIChmb3Jfb3Zl cmxhcHMpCisJCXsKKwkJCWZrYXR0cl9uYW1lID0gc3RyVmFsKGZrY29uc3RyYWludC0+Zmtf cGVyaW9kKTsKKwkJCXBrYXR0cl9uYW1lID0gc3RyVmFsKGZrY29uc3RyYWludC0+cGtfcGVy aW9kKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWZrYXR0cl9uYW1lID0gc3RyVmFsKGxpc3Rf bnRoKGZrY29uc3RyYWludC0+ZmtfYXR0cnMsIGkpKTsKKwkJCXBrYXR0cl9uYW1lID0gc3Ry VmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtfYXR0cnMsIGkpKTsKKwkJfQorCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCks CisJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIgY2Fubm90IGJl IGltcGxlbWVudGVkIiwKKwkJCQkJCWZrY29uc3RyYWludC0+Y29ubmFtZSksCisJCQkJIGVy cmRldGFpbCgiS2V5IGNvbHVtbnMgXCIlc1wiIGFuZCBcIiVzXCIgIgorCQkJCQkJICAgImFy ZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4iLAorCQkJCQkJICAgZmthdHRy X25hbWUsCisJCQkJCQkgICBwa2F0dHJfbmFtZSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2Jl KGZrdHlwZSksCisJCQkJCQkgICBmb3JtYXRfdHlwZV9iZShwa3R5cGUpKSkpOworCX0KKwor CWlmICgqb2xkX2NoZWNrX29rKQorCXsKKwkJLyoKKwkJICogV2hlbiBhIHBmZXFvcCBjaGFu Z2VzLCByZXZhbGlkYXRlIHRoZSBjb25zdHJhaW50LiAgV2UgY291bGQKKwkJICogcGVybWl0 IGludHJhLW9wZmFtaWx5IGNoYW5nZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxlIGNvbXBsZXhp dHkKKwkJICogd2l0aG91dCBhbnkgY29uY3JldGUgYmVuZWZpdCBmb3IgY29yZSB0eXBlcy4g IFdlIG5lZWQgbm90CisJCSAqIGFzc2VzcyBwcGVxb3Agb3IgZmZlcW9wLCB3aGljaCBSSV9J bml0aWFsX0NoZWNrKCkgZG9lcyBub3QgdXNlLgorCQkgKi8KKwkJKm9sZF9jaGVja19vayA9 IChwZmVxb3AgPT0gbGZpcnN0X29pZCgqb2xkX3BmZXFvcF9pdGVtKSk7CisJCSpvbGRfcGZl cW9wX2l0ZW0gPSBsbmV4dChma2NvbnN0cmFpbnQtPm9sZF9jb25wZmVxb3AsCisJCQkJCQkJ CSpvbGRfcGZlcW9wX2l0ZW0pOworCX0KKwlpZiAoKm9sZF9jaGVja19vaykKKwl7CisJCU9p ZAkJCW9sZF9ma3R5cGU7CisJCU9pZAkJCW5ld19ma3R5cGU7CisJCUNvZXJjaW9uUGF0aFR5 cGUgb2xkX3BhdGh0eXBlOworCQlDb2VyY2lvblBhdGhUeXBlIG5ld19wYXRodHlwZTsKKwkJ T2lkCQkJb2xkX2Nhc3RmdW5jOworCQlPaWQJCQluZXdfY2FzdGZ1bmM7CisJCUZvcm1fcGdf YXR0cmlidXRlIGF0dHIgPSBUdXBsZURlc2NBdHRyKHRhYi0+b2xkRGVzYywKKwkJCQkJCQkJ CQkJICAgZmthdHRudW1baV0gLSAxKTsKKworCQkvKgorCQkgKiBJZGVudGlmeSBjb2VyY2lv biBwYXRod2F5cyBmcm9tIGVhY2ggb2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNpZGUKKwkJICog Y29sdW1uIHR5cGVzIHRvIHRoZSByaWdodCAoZm9yZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRo ZSBwZmVxb3AuCisJCSAqIFdlIG1heSBhc3N1bWUgdGhhdCBwZ19jb25zdHJhaW50LmNvbmtl eSBpcyBub3QgY2hhbmdpbmcuCisJCSAqLworCQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlw aWQ7CisJCW5ld19ma3R5cGUgPSBma3R5cGU7CisJCW9sZF9wYXRodHlwZSA9IGZpbmRGa2V5 Q2FzdChwZmVxb3BfcmlnaHQsIG9sZF9ma3R5cGUsCisJCQkJCQkJCQkmb2xkX2Nhc3RmdW5j KTsKKwkJbmV3X3BhdGh0eXBlID0gZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgbmV3X2Zr dHlwZSwKKwkJCQkJCQkJCSZuZXdfY2FzdGZ1bmMpOworCisJCS8qCisJCSAqIFVwb24gYSBj aGFuZ2UgdG8gdGhlIGNhc3QgZnJvbSB0aGUgRksgY29sdW1uIHRvIGl0cyBwZmVxb3AKKwkJ ICogb3BlcmFuZCwgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIEZvciB0aGlzIGV2YWx1 YXRpb24sIGEKKwkJICogYmluYXJ5IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBu byBjYXN0IGF0IGFsbC4gIFdoaWxlCisJCSAqIHR5cGUgaW1wbGVtZW50b3JzIHNob3VsZCBk ZXNpZ24gaW1wbGljaXQgY2FzdHMgd2l0aCBhbiBleWUKKwkJICogdG93YXJkIGNvbnNpc3Rl bmN5IG9mIG9wZXJhdGlvbnMgbGlrZSBlcXVhbGl0eSwgd2UgY2Fubm90CisJCSAqIGFzc3Vt ZSBoZXJlIHRoYXQgdGhleSBoYXZlIGRvbmUgc28uCisJCSAqCisJCSAqIEEgZnVuY3Rpb24g d2l0aCBhIHBvbHltb3JwaGljIGFyZ3VtZW50IGNvdWxkIGNoYW5nZSBiZWhhdmlvcgorCQkg KiBhcmJpdHJhcmlseSBpbiByZXNwb25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBU aGVyZWZvcmUsCisJCSAqIHdoZW4gdGhlIGNhc3QgZGVzdGluYXRpb24gaXMgcG9seW1vcnBo aWMsIHdlIG9ubHkgYXZvaWQKKwkJICogcmV2YWxpZGF0aW9uIGlmIHRoZSBpbnB1dCB0eXBl IGhhcyBub3QgY2hhbmdlZCBhdCBhbGwuICBHaXZlbgorCQkgKiBqdXN0IHRoZSBjb3JlIGRh dGEgdHlwZXMgYW5kIG9wZXJhdG9yIGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKKwkJICog cHJldmVudHMgbm8gd291bGQtYmUgb3B0aW1pemF0aW9ucy4KKwkJICoKKwkJICogSWYgdGhl IGNhc3QgY29udmVydHMgZnJvbSBhIGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9uLCB0 aGVuCisJCSAqIHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRo ZSB1bmlxdWUgaW5kZXguCisJCSAqIE5lY2Vzc2FyaWx5LCB0aGUgcHJpbWFyeSBrZXkgY29s dW1uIG11c3QgdGhlbiBiZSBvZiB0aGUgZG9tYWluCisJCSAqIHR5cGUuICBTaW5jZSB0aGUg Y29uc3RyYWludCB3YXMgcHJldmlvdXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgorCQkgKiB0 aGUgZm9yZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUg YW5kIGluCisJCSAqIHR1cm4gY29uZm9ybSB0byB0aGUgZG9tYWluLiAgQ29uc2VxdWVudGx5 LCB3ZSBuZWVkIG5vdCB0cmVhdAorCQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgorCQkg KgorCQkgKiBTaW5jZSB3ZSByZXF1aXJlIHRoYXQgYWxsIGNvbGxhdGlvbnMgc2hhcmUgdGhl IHNhbWUgbm90aW9uIG9mCisJCSAqIGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNl IHRleHRlcSByZWR1Y2VzIHRvIGJpdHdpc2UKKwkJICogZXF1YWxpdHkpLCB3ZSBkb24ndCBj b21wYXJlIGNvbGxhdGlvbiBoZXJlLgorCQkgKgorCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3Rs eSBjb25zaWRlciB0aGUgUEsgdHlwZS4gIEl0J3MgbmVjZXNzYXJpbHkKKwkJICogYmluYXJ5 IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXggY29sdW1u LAorCQkgKiBhbmQgcmlfdHJpZ2dlcnMuYyB3aWxsIG9ubHkgZGVhbCB3aXRoIFBLIGRhdHVt cyBpbiB0ZXJtcyBvZgorCQkgKiB0aGF0IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBvcGNp bnR5cGUgYWxzbyBjaGFuZ2VzIHBmZXFvcC4KKwkJICovCisJCSpvbGRfY2hlY2tfb2sgPSAo bmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgorCQkJCQkJbmV3X2Nhc3RmdW5jID09 IG9sZF9jYXN0ZnVuYyAmJgorCQkJCQkJKCFJc1BvbHltb3JwaGljVHlwZShwZmVxb3Bfcmln aHQpIHx8CisJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0eXBlKSk7CisKKwl9CisKKwkq cGZlcW9wT3V0ID0gcGZlcW9wOworCSpwcGVxb3BPdXQgPSBwcGVxb3A7CisJKmZmZXFvcE91 dCA9IGZmZXFvcDsKK30KKwogLyoKICAqIFdoZW4gdGhlIHBhcmVudCBvZiBhIHBhcnRpdGlv biByZWNlaXZlcyBbdGhlIHJlZmVyZW5jaW5nIHNpZGUgb2ZdIGEgZm9yZWlnbgogICoga2V5 LCB3ZSBtdXN0IHByb3BhZ2F0ZSB0aGF0IGZvcmVpZ24ga2V5IHRvIHRoZSBwYXJ0aXRpb24u ICBIb3dldmVyLCB0aGUKQEAgLTExNTkwLDcgKzExNjg1LDYgQEAgQVRFeGVjVmFsaWRhdGVD b25zdHJhaW50KExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgY2hhciAqY29uc3RyTmFt ZSwKIAlyZXR1cm4gYWRkcmVzczsKIH0KIAotCiAvKgogICogdHJhbnNmb3JtQ29sdW1uTmFt ZUxpc3QgLSB0cmFuc2Zvcm0gbGlzdCBvZiBjb2x1bW4gbmFtZXMKICAqCkBAIC0xMTY1OSw2 ICsxMTc1Myw3IEBAIHN0YXRpYyBpbnQKIHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJl bGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCQkJCQkJICAgTGlzdCAqKmF0dG5hbWVs aXN0LAogCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJ ICAgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVyaW9kYXR0dHlwaWRzLAogCQkJCQkJ ICAgT2lkICpvcGNsYXNzZXMpCiB7CiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0OwpAQCAtMTE3 MjMsMzYgKzExODE4LDUyIEBAIHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9u IHBrcmVsLCBPaWQgKmluZGV4T2lkLAogCiAJLyoKIAkgKiBOb3cgYnVpbGQgdGhlIGxpc3Qg b2YgUEsgYXR0cmlidXRlcyBmcm9tIHRoZSBpbmRrZXkgZGVmaW5pdGlvbiAod2UKLQkgKiBh c3N1bWUgYSBwcmltYXJ5IGtleSBjYW5ub3QgaGF2ZSBleHByZXNzaW9uYWwgZWxlbWVudHMp CisJICogYXNzdW1lIGEgcHJpbWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVs ZW1lbnRzLCB1bmxlc3MgaXQKKwkgKiBoYXMgYSBQRVJJT0QpCiAJICovCiAJKmF0dG5hbWVs aXN0ID0gTklMOwogCWZvciAoaSA9IDA7IGkgPCBpbmRleFN0cnVjdC0+aW5kbmtleWF0dHM7 IGkrKykKIAl7CiAJCWludAkJCXBrYXR0bm8gPSBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVl c1tpXTsKIAotCQlhdHRudW1zW2ldID0gcGthdHRubzsKLQkJYXR0dHlwaWRzW2ldID0gYXR0 bnVtVHlwZUlkKHBrcmVsLCBwa2F0dG5vKTsKLQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3Mt PnZhbHVlc1tpXTsKLQkJKmF0dG5hbWVsaXN0ID0gbGFwcGVuZCgqYXR0bmFtZWxpc3QsCi0J CQkJCQkJICAgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVTdHIoKmF0dG51bUF0dE5hbWUocGty ZWwsIHBrYXR0bm8pKSkpKTsKKwkJaWYgKGkgPT0gaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRz IC0gMSAmJiBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCisJCXsKKwkJCS8qIHdlIGhh dmUgYSByYW5nZSAqLworCQkJLyogVGhlIGNhbGxlciB3aWxsIHNldCBhdHRudW1zW2ldICov CisJCQlwZXJpb2RhdHRudW1zWzBdID0gcGthdHRubzsKKwkJCXBlcmlvZGF0dHR5cGlkc1sw XSA9IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7CisJCQlvcGNsYXNzZXNbaV0gPSBp bmRjbGFzcy0+dmFsdWVzW2ldOworCQl9CisJCWVsc2UKKwkJeworCQkJYXR0bnVtc1tpXSA9 IHBrYXR0bm87CisJCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0 bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKwkJCSphdHRu YW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAorCQkJCQkJCQkgIG1ha2VTdHJpbmco cHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVsLCBwa2F0dG5vKSkpKSk7CisJ CX0KIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBsZSk7CiAKLQlyZXR1cm4gaTsK KwlpZiAoaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKSByZXR1cm4gaSAtIDE7CisJZWxz ZSByZXR1cm4gaTsKIH0KIAogLyoKICAqIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzIC0KICAq CiAgKglNYWtlIHN1cmUgdGhhdCB0aGUgYXR0cmlidXRlcyBvZiBhIHJlZmVyZW5jZWQgdGFi bGUgYmVsb25nIHRvIGEgdW5pcXVlCi0gKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFpbnQu ICBSZXR1cm4gdGhlIE9JRCBvZiB0aGUgaW5kZXggc3VwcG9ydGluZwotICoJdGhlIGNvbnN0 cmFpbnQsIGFzIHdlbGwgYXMgdGhlIG9wY2xhc3NlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGlu ZGV4CisgKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFpbnQuICBPciBpZiB0aGlzIGlzIGEg dGVtcG9yYWwgZm9yZWlnbiBrZXkKKyAqCXRoZSBwcmltYXJ5IGtleSBzaG91bGQgYmUgYW4g ZXhjbHVzaW9uIGNvbnN0cmFpbnQgaW5zdGVhZC4KKyAqCVJldHVybiB0aGUgT0lEIG9mIHRo ZSBpbmRleCBzdXBwb3J0aW5nIHRoZSBjb25zdHJhaW50LAorICoJYXMgd2VsbCBhcyB0aGUg b3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgKICAqCWNvbHVtbnMuCiAgKi8K IHN0YXRpYyBPaWQKIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAog CQkJCQkJaW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywKKwkJCQkJCWJvb2wgaXNfdGVt cG9yYWwsIGludDE2IHBlcmlvZGF0dG51bSwKIAkJCQkJCU9pZCAqb3BjbGFzc2VzKSAvKiBv dXRwdXQgcGFyYW1ldGVyICovCiB7CiAJT2lkCQkJaW5kZXhvaWQgPSBJbnZhbGlkT2lkOwpA QCAtMTE3NzksNiArMTE4OTAsMTAgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRp b24gcGtyZWwsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkp LAogCQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3Qg bXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzIikpKTsKIAkJfQorCQlpZiAoaXNfdGVtcG9y YWwgJiYgYXR0bnVtc1tpXSA9PSBwZXJpb2RhdHRudW0pCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkpLAorCQkJCQkgZXJy bXNnKCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5vdCBjb250 YWluIGR1cGxpY2F0ZXMiKSkpOwogCX0KIAogCS8qCkBAIC0xMTgwMCwxMiArMTE5MTUsMTYg QEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCWluZGV4U3Ry dWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKIAogCQkvKgot CQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjb2x1bW5zOyBtdXN0IGJlIHVu aXF1ZSBhbmQgbm90IGEKLQkJICogcGFydGlhbCBpbmRleDsgZm9yZ2V0IGl0IGlmIHRoZXJl IGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52YWxpZAotCQkgKiBpbmRleGVzIGFyZSBv dXQgYXMgd2VsbC4KKwkJICogTXVzdCBoYXZlIHRoZSByaWdodCBudW1iZXIgb2YgY29sdW1u czsgbXVzdCBiZSB1bmlxdWUKKwkJICogKG9yIGlmIHRlbXBvcmFsIHRoZW4gZXhjbHVzaW9u IGluc3RlYWQpIGFuZCBub3QgYQorCQkgKiBwYXJ0aWFsIGluZGV4OyBmb3JnZXQgaXQgaWYg dGhlcmUgYXJlIGFueSBleHByZXNzaW9ucywgdG9vLgorCQkgKiBJbnZhbGlkIGluZGV4ZXMg YXJlIG91dCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYgKGluZGV4U3RydWN0LT5pbmRua2V5YXR0 cyA9PSBudW1hdHRycyAmJgotCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdW5pcXVlICYmCisJCWlm ICgoaXNfdGVtcG9yYWwKKwkJCSAgPyAoaW5kZXhTdHJ1Y3QtPmluZG5rZXlhdHRzID09IG51 bWF0dHJzICsgMSAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXNleGNsdXNpb24pCisJCQkg IDogKGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgorCQkJCSBpbmRl eFN0cnVjdC0+aW5kaXN1bmlxdWUpKSAmJgogCQkJaW5kZXhTdHJ1Y3QtPmluZGlzdmFsaWQg JiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kcHJl ZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5k ZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAtMTE4NDMsNiArMTE5NjIsMTkgQEAgdHJhbnNmb3Jt RmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJaWYgKCFmb3VuZCkKIAkJCQkJ YnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVtcG9yYWwpCisJCQl7CisJCQkJ Zm91bmQgPSBmYWxzZTsKKwkJCQlmb3IgKGogPSAwOyBqIDwgbnVtYXR0cnMgKyAxOyBqKysp CisJCQkJeworCQkJCQlpZiAocGVyaW9kYXR0bnVtID09IGluZGV4U3RydWN0LT5pbmRrZXku dmFsdWVzW2pdKQorCQkJCQl7CisJCQkJCQlvcGNsYXNzZXNbbnVtYXR0cnNdID0gaW5kY2xh c3MtPnZhbHVlc1tqXTsKKwkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOworCQkJ CQl9CisJCQkJfQorCQkJfQogCiAJCQkvKgogCQkJICogUmVmdXNlIHRvIHVzZSBhIGRlZmVy cmFibGUgdW5pcXVlL3ByaW1hcnkga2V5LiAgVGhpcyBpcyBwZXIgU1FMCkBAIC0xMTk1Miw3 ICsxMjA4NCw4IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0cmFpbnQoY2hhciAqY29ubmFt ZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVsLAogCQkJCQkJCSBSZWxhdGlvbiBwa3JlbCwKIAkJ CQkJCQkgT2lkIHBraW5kT2lkLAotCQkJCQkJCSBPaWQgY29uc3RyYWludE9pZCkKKwkJCQkJ CQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkJIGJvb2wgdGVtcG9yYWwpCiB7CiAJVHVw bGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFibGVTY2FuRGVzYyBzY2FuOwpAQCAtMTE5ODEsOCAr MTIxMTQsMTAgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1l LAogCS8qCiAJICogU2VlIGlmIHdlIGNhbiBkbyBpdCB3aXRoIGEgc2luZ2xlIExFRlQgSk9J TiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0CiAJICogaW5kaWNhdGVzIHdlIG11c3QgcHJvY2Vl ZCB3aXRoIHRoZSBmaXJlLXRoZS10cmlnZ2VyIG1ldGhvZC4KKwkgKiBXZSBjYW4ndCBkbyBh IExFRlQgSk9JTiBmb3IgdGVtcG9yYWwgRktzIHlldCwKKwkgKiBidXQgd2UgY2FuIG9uY2Ug d2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0IGpvaW5zLgogCSAqLwotCWlmIChSSV9Jbml0aWFs X0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKKwlpZiAoIXRlbXBvcmFsICYmIFJJX0luaXRp YWxfQ2hlY2soJnRyaWcsIHJlbCwgcGtyZWwpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtMTIw NTEsNiArMTIxODYsNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dlcihPaWQgbXlSZWxPaWQsIE9p ZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwKIHsKIAlPYmplY3RBZGRy ZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0ZVRyaWdTdG10ICpma190cmlnZ2VyOworCWJvb2wg aXNfdGVtcG9yYWwgPSBma2NvbnN0cmFpbnQtPmZrX3BlcmlvZDsKIAogCS8qCiAJICogTm90 ZTogZm9yIGEgc2VsZi1yZWZlcmVudGlhbCBGSyAocmVmZXJlbmNpbmcgYW5kIHJlZmVyZW5j ZWQgdGFibGVzIGFyZQpAQCAtMTIwNzAsMTIgKzEyMjA2LDE4IEBAIENyZWF0ZUZLQ2hlY2tU cmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25z dHJhaW50LAogCS8qIEVpdGhlciBPTiBJTlNFUlQgb3IgT04gVVBEQVRFICovCiAJaWYgKG9u X2luc2VydCkKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2NoZWNrX2lucyIpOwor CQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X2NoZWNrX2lucyIpOwogCQlma190cmlnZ2VyLT5ldmVudHMgPSBUUklHR0VSX1RZUEVf SU5TRVJUOwogCX0KIAllbHNlCiAJewotCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3Rl bUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX3VwZCIpOworCQlpZiAoaXNfdGVtcG9yYWwpCisJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9jaGVj a191cGQiKTsKKwkJZWxzZQorCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5j TmFtZSgiUklfRktleV9jaGVja191cGQiKTsKIAkJZmtfdHJpZ2dlci0+ZXZlbnRzID0gVFJJ R0dFUl9UWVBFX1VQREFURTsKIAl9CiAKQEAgLTEyMTMzLDM3ICsxMjI3NSw2OCBAQCBjcmVh dGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lk LCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXItPndoZW5DbGF1c2UgPSBOVUxM OwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklMOwogCWZrX3RyaWdnZXItPmNv bnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24p CisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpCiAJewotCQljYXNlIEZL Q09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBm a2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQg PSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7Ci0JCQlicmVhazsK LQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6Ci0JCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK LQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVz dHJpY3RfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FE RToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIpOwotCQkJYnJlYWs7Ci0JCWNhc2Ug RktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF9kZWwi KTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgotCQkJ ZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7Ci0JCQlicmVhazsKLQkJZGVmYXVsdDoK LQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKLQkJ CQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKLQkJCWJyZWFrOworCQkv KiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJc3dpdGNoIChma2NvbnN0cmFpbnQtPmZr X2RlbF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX05PQUNUSU9OOgor CQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7 CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVm ZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJ X0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FD VElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7CisJ CQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJY2FzZSBG S0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERF RkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qgc3VwcG9y dGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOworCQkJCWJyZWFrOworCQkJZGVm YXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAl ZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pOworCQkJCWJy ZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma19k ZWxfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJ CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOwor CQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVy cmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZL ZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0cmljdF9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6CisJCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9 IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJ X0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJ CWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1 bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0bnVsbF9kZWwiKTsKKwkJCQli cmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJ CQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJ CQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJ fQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dlcihma190cmlnZ2VyLCBOVUxM LCByZWZSZWxPaWQsCkBAIC0xMjE5MywzNyArMTIzNjYsNjggQEAgY3JlYXRlRm9yZWlnbktl eUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWlu dCAqZmtjb25zdHIKIAlma190cmlnZ2VyLT53aGVuQ2xhdXNlID0gTlVMTDsKIAlma190cmln Z2VyLT50cmFuc2l0aW9uUmVscyA9IE5JTDsKIAlma190cmlnZ2VyLT5jb25zdHJyZWwgPSBO VUxMOwotCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKQorCWlmIChma2Nv bnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMKQogCXsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fTk9BQ1RJT046Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50 LT5kZWZlcnJhYmxlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtjb25zdHJh aW50LT5pbml0ZGVmZXJyZWQ7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktD T05TVFJfQUNUSU9OX1JFU1RSSUNUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZh bHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmln Z2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Jlc3RyaWN0X3VwZCIp OwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6Ci0JCQlma190 cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJy ZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FD VElPTl9TRVROVUxMOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5j bmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7Ci0JCQlicmVh azsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVMVDoKLQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZh bHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktl eV9zZXRkZWZhdWx0X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQllbG9nKEVS Uk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCi0JCQkJIChpbnQpIGZr Y29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7Ci0JCQlicmVhazsKKwkJLyogVGVtcG9yYWwg Zm9yZWlnbiBrZXlzICovCisJCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9u KQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKKwkJCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X25vYWN0 aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJ Q1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0g U3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3RyaWN0X3VwZCIpOworCQkJCWJyZWFrOwor CQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJCWNhc2UgRktDT05TVFJfQUNU SU9OX1NFVE5VTEw6CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVt cG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLAorCQkJCQkg KGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsKKwkJCQlicmVhazsKKwkJfQor CX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbikK KwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046CisJCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJyYWJsZTsKKwkJCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKKwkJCQlm a190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9u X3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6 CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lz dGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2Nhc2Nh ZGVfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxM OgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2Vy LT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJCWZrX3RyaWdnZXItPmRlZmVy cmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK KwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3Nl dGRlZmF1bHRfdXBkIik7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJS T1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKKwkJCQkJIChpbnQpIGZr Y29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJlYWs7CisJCX0KIAl9CiAKIAl0 cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dlciwgTlVMTCwgcmVmUmVsT2lk LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5k L3BhcnNlci9ncmFtLnkKaW5kZXggY2E2ZDEzZDM0OS4uMDU0NGZmYjYzZCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55CkBAIC01MjMsMTEgKzUyMywxMiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRhYmxlRWxlbWVudCBDb25zdHJh aW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9kZT4JY29sdW1uRGVmIGNvbHVt bk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJlbG9wdGlvbl9lbGVtIG9sZF9h Z2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxub2RlPglkZWZfYXJnIGNvbHVt bkVsZW0gd2l0aG91dE92ZXJsYXBzQ2xhdXNlCisldHlwZSA8bm9kZT4JZGVmX2FyZyBjb2x1 bW5FbGVtIHdpdGhvdXRPdmVybGFwc0NsYXVzZSBvcHRpb25hbFBlcmlvZE5hbWUKIAkJCQl3 aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9leHBy IGNfZXhwciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAogCQkJ CWNvbHVtbnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJsZSBh cnJheV9leHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZworJXR5cGUg PGxpc3Q+CW9wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0CiAldHlwZSA8bGlzdD4Jcm93c2Zy b21faXRlbSByb3dzZnJvbV9saXN0IG9wdF9jb2xfZGVmX2xpc3QKICV0eXBlIDxib29sZWFu PiBvcHRfb3JkaW5hbGl0eQogJXR5cGUgPGxpc3Q+CUV4Y2x1c2lvbkNvbnN0cmFpbnRMaXN0 IEV4Y2x1c2lvbkNvbnN0cmFpbnRFbGVtCkBAIC03NDUsNyArNzQ2LDcgQEAgc3RhdGljIE5v ZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFz ZXMsIE5vZGUgKnF1ZXJ5KTsKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBP V05FRCBPV05FUgogCiAJUEFSQUxMRUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJ VElPTiBQQVNTSU5HIFBBU1NXT1JECi0JUExBQ0lORyBQTEFOUyBQT0xJQ1kKKwlQRVJJT0Qg UExBQ0lORyBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBS RVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJP Q0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKQEAg LTQxODgsMjEgKzQxODksMjMgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCQkJCSAgIE5VTEws IHl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IEZPUkVJ R04gS0VZICcoJyBjb2x1bW5MaXN0ICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmllZF9uYW1lCi0J CQkJb3B0X2NvbHVtbl9saXN0IGtleV9tYXRjaCBrZXlfYWN0aW9ucyBDb25zdHJhaW50QXR0 cmlidXRlU3BlYworCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCBvcHRpb25hbFBl cmlvZE5hbWUgJyknIFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUKKwkJCQlvcHRfY29sdW1u X2FuZF9wZXJpb2RfbGlzdCBrZXlfbWF0Y2gga2V5X2FjdGlvbnMgQ29uc3RyYWludEF0dHJp YnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJh aW50KTsKIAogCQkJCQluLT5jb250eXBlID0gQ09OU1RSX0ZPUkVJR047CiAJCQkJCW4tPmxv Y2F0aW9uID0gQDE7Ci0JCQkJCW4tPnBrdGFibGUgPSAkNzsKKwkJCQkJbi0+cGt0YWJsZSA9 ICQ4OwogCQkJCQluLT5ma19hdHRycyA9ICQ0OwotCQkJCQluLT5wa19hdHRycyA9ICQ4Owot CQkJCQluLT5ma19tYXRjaHR5cGUgPSAkOTsKLQkJCQkJbi0+ZmtfdXBkX2FjdGlvbiA9ICgk MTApLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVsX2FjdGlvbiA9ICgk MTApLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKLQkJCQkJbi0+ZmtfZGVsX3NldF9jb2xzID0g KCQxMCktPmRlbGV0ZUFjdGlvbi0+Y29sczsKLQkJCQkJcHJvY2Vzc0NBU2JpdHMoJDExLCBA MTEsICJGT1JFSUdOIEtFWSIsCisJCQkJCW4tPmZrX3BlcmlvZCA9ICQ1OworCQkJCQluLT5w a19hdHRycyA9IGxpbml0aWFsKCQ5KTsKKwkJCQkJbi0+cGtfcGVyaW9kID0gbHNlY29uZCgk OSk7CisJCQkJCW4tPmZrX21hdGNodHlwZSA9ICQxMDsKKwkJCQkJbi0+ZmtfdXBkX2FjdGlv biA9ICgkMTEpLT51cGRhdGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJbi0+ZmtfZGVsX2FjdGlv biA9ICgkMTEpLT5kZWxldGVBY3Rpb24tPmFjdGlvbjsKKwkJCQkJbi0+ZmtfZGVsX3NldF9j b2xzID0gKCQxMSktPmRlbGV0ZUFjdGlvbi0+Y29sczsKKwkJCQkJcHJvY2Vzc0NBU2JpdHMo JDEyLCBAMTIsICJGT1JFSUdOIEtFWSIsCiAJCQkJCQkJCSAgICZuLT5kZWZlcnJhYmxlLCAm bi0+aW5pdGRlZmVycmVkLAogCQkJCQkJCQkgICAmbi0+c2tpcF92YWxpZGF0aW9uLCBOVUxM LAogCQkJCQkJCQkgICB5eXNjYW5uZXIpOwpAQCAtNDIzMCw2ICs0MjMzLDE2IEBAIHdpdGhv dXRPdmVybGFwc0NsYXVzZToKIAkJCXwgLypFTVBUWSovICAgICAgICAgICAgICAgeyAkJCA9 IE5VTEw7IH0KIAk7CiAKK29wdGlvbmFsUGVyaW9kTmFtZToKKwkJCScsJyBQRVJJT0QgY29s dW1uRWxlbSB7ICQkID0gJDM7IH0KKwkJCXwgLypFTVBUWSovICAgICAgICAgICAgICAgeyAk JCA9IE5VTEw7IH0KKwk7CisKK29wdF9jb2x1bW5fYW5kX3BlcmlvZF9saXN0OgorCQkJJygn IGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJwkJCXsgJCQgPSBsaXN0X21ha2Uy KCQyLCAkMyk7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gbGlzdF9tYWtlMihO SUwsIE5VTEwpOyB9CisJCTsKKwogY29sdW1uRWxlbTogQ29sSWQKIAkJCQl7CiAJCQkJCSQk ID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7CkBAIC0xNzUxNyw2ICsxNzUzMCw3IEBAIHJl c2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkKIAkJCXwgT1IKIAkJCXwgT1JERVIKKwkJCXwg UEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJTUFSWQogCQkJfCBSRUZFUkVOQ0VTCkBA IC0xNzgyNiw2ICsxNzg0MCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSVElU SU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dPUkQKKwkJCXwgUEVSSU9ECiAJCQl8IFBM QUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jCmluZGV4IDY5NDVkOTliM2QuLjcwNDY2YTk0ZDkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxv Zy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgpA QCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAi dXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNs dWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5j bHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcnVsZXV0aWxzLmgiCkBAIC0x MTgsNiArMTIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUklfQ29uc3RyYWludEluZm8KIAlpbnQx NgkJY29uZmRlbHNldGNvbHNbUklfTUFYX05VTUtFWVNdOyAvKiBhdHRudW1zIG9mIGNvbHMg dG8gc2V0IG9uCiAJCQkJCQkJCQkJCQkgKiBkZWxldGUgKi8KIAljaGFyCQljb25mbWF0Y2h0 eXBlOwkvKiBmb3JlaWduIGtleSdzIG1hdGNoIHR5cGUgKi8KKwlib29sCQl0ZW1wb3JhbDsJ CS8qIGlmIHRoZSBmb3JlaWduIGtleSBpcyB0ZW1wb3JhbCAqLwogCWludAkJCW5rZXlzOwkJ CS8qIG51bWJlciBvZiBrZXkgY29sdW1ucyAqLwogCWludDE2CQlwa19hdHRudW1zW1JJX01B WF9OVU1LRVlTXTsgLyogYXR0bnVtcyBvZiByZWZlcmVuY2VkIGNvbHMgKi8KIAlpbnQxNgkJ ZmtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107IC8qIGF0dG51bXMgb2YgcmVmZXJlbmNpbmcg Y29scyAqLwpAQCAtMjAwLDggKzIwMyw5IEBAIHN0YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1 cGxlRGVzYyB0dXBEZXNjLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIHN0YXRpYyB2b2lkIHJp X0J1aWxkUXVlcnlLZXkoUklfUXVlcnlLZXkgKmtleSwKIAkJCQkJCQkgY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkgaW50MzIgY29uc3RyX3F1ZXJ5bm8pOwot c3RhdGljIGJvb2wgcmlfS2V5c0VxdWFsKFJlbGF0aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3Qg Km9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAorc3RhdGljIGJvb2wgcmlfS2V5 c1N0YWJsZShSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRh YmxlU2xvdCAqbmV3c2xvdCwKIAkJCQkJCSBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlp bmZvLCBib29sIHJlbF9pc19wayk7CitzdGF0aWMgYm9vbCByaV9SYW5nZUF0dHJpYnV0ZU5l ZWRzQ2hlY2soYm9vbCByZWxfaXNfcGssIERhdHVtIG9sZHZhbHVlLCBEYXR1bSBuZXd2YWx1 ZSk7CiBzdGF0aWMgYm9vbCByaV9BdHRyaWJ1dGVzRXF1YWwoT2lkIGVxX29wciwgT2lkIHR5 cGVpZCwKIAkJCQkJCQkgICBEYXR1bSBvbGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpOwogCkBA IC0zNjEsMjYgKzM2NSw1NyBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0 YSkKIAogCQkvKiAtLS0tLS0tLS0tCiAJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMK LQkJICoJU0VMRUNUIDEgRlJPTSBbT05MWV0gPHBrdGFibGU+IHggV0hFUkUgcGthdHQxID0g JDEgW0FORCAuLi5dCi0JCSAqCQkgICBGT1IgS0VZIFNIQVJFIE9GIHgKKwkJICoJU0VMRUNU IDEKKwkJICoJRlJPTSBbT05MWV0gPHBrdGFibGU+IHggV0hFUkUgcGthdHQxID0gJDEgW0FO RCAuLi5dCisJCSAqCUZPUiBLRVkgU0hBUkUgT0YgeAogCQkgKiBUaGUgdHlwZSBpZCdzIGZv ciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0aGUKIAkJICogY29ycmVzcG9uZGlu ZyBGSyBhdHRyaWJ1dGVzLgorCQkgKgorCQkgKiBCdXQgZm9yIHRlbXBvcmFsIEZLcyB3ZSBu ZWVkIHRvIG1ha2Ugc3VyZQorCQkgKiB0aGUgRksncyByYW5nZSBpcyBjb21wbGV0ZWx5IGNv dmVyZWQuCisJCSAqIFNvIHdlIHVzZSB0aGlzIHF1ZXJ5IGluc3RlYWQ6CisJCSAqICBTRUxF Q1QgMQorCQkgKglGUk9NCSgKKwkJICoJCVNFTEVDVCBwa3BlcmlvZGF0dCBBUyByCisJCSAq CQlGUk9NICAgW09OTFldIHBrdGFibGUgeAorCQkgKgkJV0hFUkUgIHBrYXR0MSA9ICQxIFtB TkQgLi4uXQorCQkgKgkJQU5EICAgIHBrcGVyaW9kYXR0ICYmICRuCisJCSAqCQlGT1IgS0VZ IFNIQVJFIE9GIHgKKwkJICoJKSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJhbmdlX2FnZyh4 MS5yKQorCQkgKiBOb3RlIGlmIEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3MgR1JPVVAgQlkg YW5kIEhBVklORworCQkgKiB3ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBsZXIuCiAJCSAq IC0tLS0tLS0tLS0KIAkJICovCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBr X29ubHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVE X1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxu YW1lLCBwa19yZWwpOwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAx IEZST00gJXMlcyB4IiwKLQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOworCQlpZiAocmlp bmZvLT50ZW1wb3JhbCkKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCVJJ QXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0p KTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsCisJCQkJCSJTRUxFQ1QgMSBG Uk9NIChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMgeCIsCisJCQkJCWF0dG5hbWUsIHBrX29u bHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZSB7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKKwkJCQkJCQkgcGtfb25seSwgcGty ZWxuYW1lKTsKKwkJfQogCQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAw OyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklB dHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5 cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lk CXBrX3R5cGU7CisJCQlPaWQJZmtfdHlwZTsKIAorCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShw a19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwKIAkJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsK KworCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tp XSk7CisKIAkJCXNwcmludGYocGFyYW1uYW1lLCAiJCVkIiwgaSArIDEpOwogCQkJcmlfR2Vu ZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAsCiAJCQkJCQkJYXR0bmFtZSwgcGtfdHlw ZSwKQEAgLTM5MCw2ICs0MjUsOCBAQCBSSV9GS2V5X2NoZWNrKFRyaWdnZXJEYXRhICp0cmln ZGF0YSkKIAkJCXF1ZXJ5b2lkc1tpXSA9IGZrX3R5cGU7CiAJCX0KIAkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZygmcXVlcnlidWYsICIgRk9SIEtFWSBTSEFSRSBPRiB4Iik7CisJCWlmIChy aWluZm8tPnRlbXBvcmFsKQorCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICIpIHgx IEhBVklORyAkJWQgPEAgcGdfY2F0YWxvZy5yYW5nZV9hZ2coeDEucikiLCByaWluZm8tPm5r ZXlzKTsKIAogCQkvKiBQcmVwYXJlIGFuZCBzYXZlIHRoZSBwbGFuICovCiAJCXFwbGFuID0g cmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJpaW5mby0+bmtleXMsIHF1ZXJ5b2lkcywK QEAgLTUwOCwxMCArNTQ1LDEyIEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3Jl bCwgUmVsYXRpb24gZmtfcmVsLAogCQlxdWVyeXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50 IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAkJ cGtfdHlwZTsKIAorCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1tpXSk7CiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5h bWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKwogCQkJc3ByaW50ZihwYXJh bW5hbWUsICIkJWQiLCBpICsgMSk7CiAJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBx dWVyeXNlcCwKIAkJCQkJCQlhdHRuYW1lLCBwa190eXBlLApAQCAtNjk1LDEwICs3MzQsMTYg QEAgcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25vX2FjdGlv bikKIAkJcXVlcnlzZXAgPSAiV0hFUkUiOwogCQlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5m by0+bmtleXM7IGkrKykKIAkJewotCQkJT2lkCQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19y ZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlPaWQJCQlma190eXBlID0gUklBdHRU eXBlKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCXBrX2NvbGwg PSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCQlP aWQJCQlma19jb2xsID0gUklBdHRDb2xsYXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbaV0pOworCQkJT2lkCQlwa190eXBlOworCQkJT2lkCQlma190eXBlOworCQkJT2lkCQlw a19jb2xsOworCQkJT2lkCQlma19jb2xsOworCisJCQlwa190eXBlID0gUklBdHRUeXBlKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCXBrX2NvbGwgPSBSSUF0dENvbGxh dGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisKKwkJCWZrX3R5cGUgPSBS SUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJZmtfY29sbCA9 IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKIAogCQkJ cXVvdGVPbmVOYW1lKGF0dG5hbWUsCiAJCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW2ldKSk7CkBAIC0xMjEzLDYgKzEyNTgsMTI2IEBAIHJpX3NldChUcmln Z2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpCiAJfQog fQogCisvKiAtLS0tLS0tLS0tCisgKiBUUklfRktleV9jaGVja19pbnMgLQorICoKKyAqCUNo ZWNrIHRlbXBvcmFsIGZvcmVpZ24ga2V5IGV4aXN0ZW5jZSBhdCBpbnNlcnQgZXZlbnQgb24g RksgdGFibGUuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitUUklfRktleV9jaGVja19p bnMoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENoZWNrIHRoYXQgdGhpcyBpcyBh IHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZlbnQuCisJICov CisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlJJX0ZLZXlfY2hlY2tfaW5zIiwgUklfVFJJ R1RZUEVfSU5TRVJUKTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRoIFVQREFURSBjYXNl LgorCSAqLworCXJldHVybiBSSV9GS2V5X2NoZWNrKChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQpOworfQorCisKKy8qIC0tLS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX3Vw ZCAtCisgKgorICoJQ2hlY2sgdGVtcG9yYWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IHVw ZGF0ZSBldmVudCBvbiBGSyB0YWJsZS4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RS SV9GS2V5X2NoZWNrX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVj a191cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdp dGggSU5TRVJUIGNhc2UuCisJICovCisJcmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJE YXRhICopIGZjaW5mby0+Y29udGV4dCk7Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJ X0ZLZXlfbm9hY3Rpb25fZGVsIC0KKyAqCisgKglHaXZlIGFuIGVycm9yIGFuZCByb2xsIGJh Y2sgdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gaWYgdGhlCisgKglkZWxldGUgaGFzIHJlc3Vs dGVkIGluIGEgdmlvbGF0aW9uIG9mIHRoZSBnaXZlbiB0ZW1wb3JhbAorICoJcmVmZXJlbnRp YWwgaW50ZWdyaXR5IGNvbnN0cmFpbnQuCisgKiAtLS0tLS0tLS0tCisgKi8KK0RhdHVtCitU UklfRktleV9ub2FjdGlvbl9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKgorCSAqIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuCisJICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X25vYWN0aW9uX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKgorCSAqIFNoYXJl IGNvZGUgd2l0aCBSRVNUUklDVC9VUERBVEUgY2FzZXMuCisJICovCisJcmV0dXJuIHJpX3Jl c3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisv KgorICogVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIC0KKyAqCisgKiBSZXN0cmljdCBkZWxldGUg ZnJvbSBQSyB0YWJsZSB0byByb3dzIHVucmVmZXJlbmNlZCBieSBmb3JlaWduIGtleS4KKyAq CisgKiBUaGUgU1FMIHN0YW5kYXJkIGludGVuZHMgdGhhdCB0aGlzIHJlZmVyZW50aWFsIGFj dGlvbiBvY2N1ciBleGFjdGx5IHdoZW4KKyAqIHRoZSBkZWxldGUgaXMgcGVyZm9ybWVkLCBy YXRoZXIgdGhhbiBhZnRlci4gIFRoaXMgYXBwZWFycyB0byBiZQorICogdGhlIG9ubHkgZGlm ZmVyZW5jZSBiZXR3ZWVuICJOTyBBQ1RJT04iIGFuZCAiUkVTVFJJQ1QiLiAgSW4gUG9zdGdy ZXMKKyAqIHdlIHN0aWxsIGltcGxlbWVudCB0aGlzIGFzIGFuIEFGVEVSIHRyaWdnZXIsIGJ1 dCBpdCdzIG5vbi1kZWZlcnJhYmxlLgorICovCitEYXR1bQorVFJJX0ZLZXlfcmVzdHJpY3Rf ZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFs aWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9D aGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfcmVzdHJpY3RfZGVsIiwgUklfVFJJR1RZ UEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBOTyBBQ1RJT04vVVBEQVRFIGNh c2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5j b250ZXh0LCBmYWxzZSk7Cit9CisKKy8qCisgKiBUUklfRktleV9ub2FjdGlvbl91cGQgLQor ICoKKyAqIEdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3VycmVudCB0cmFuc2Fj dGlvbiBpZiB0aGUKKyAqIHVwZGF0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2aW9sYXRpb24gb2Yg dGhlIGdpdmVuIHJlZmVyZW50aWFsCisgKiBpbnRlZ3JpdHkgY29uc3RyYWludC4KKyAqLwor RGF0dW0KK1RSSV9GS2V5X25vYWN0aW9uX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X25vYWN0aW9uX3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBjb2Rl IHdpdGggUkVTVFJJQ1QvREVMRVRFIGNhc2VzLiAqLworCXJldHVybiByaV9yZXN0cmljdCgo VHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCB0cnVlKTsKK30KKworLyoKKyAqIFRS SV9GS2V5X3Jlc3RyaWN0X3VwZCAtCisgKgorICogUmVzdHJpY3QgdXBkYXRlIG9mIFBLIHRv IHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBTUUwgc3Rh bmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3VyIGV4YWN0 bHkgd2hlbgorICogdGhlIHVwZGF0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFuIGFmdGVy LiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4g Ik5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ugc3RpbGwg aW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9uLWRlZmVy cmFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9yZXN0cmljdF91cGQoUEdfRlVOQ1RJT05f QVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwg b24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2lu Zm8sICJUUklfRktleV9yZXN0cmljdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJ LyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJu IHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsK K30KIAogLyoKICAqIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KQEAgLTEyNDEs NyArMTQwNiw3IEBAIFJJX0ZLZXlfcGtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRy aWdnZXIsIFJlbGF0aW9uIHBrX3JlbCwKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyogSWYgYWxs IG9sZCBhbmQgbmV3IGtleSB2YWx1ZXMgYXJlIGVxdWFsLCBubyBjaGVjayBpcyBuZWVkZWQg Ki8KLQlpZiAobmV3c2xvdCAmJiByaV9LZXlzRXF1YWwocGtfcmVsLCBvbGRzbG90LCBuZXdz bG90LCByaWluZm8sIHRydWUpKQorCWlmIChuZXdzbG90ICYmIHJpX0tleXNTdGFibGUocGtf cmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8sIHRydWUpKQogCQlyZXR1cm4gZmFsc2U7 CiAKIAkvKiBFbHNlIHdlIG5lZWQgdG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KQEAgLTEzNDAs NyArMTUwNSw3IEBAIFJJX0ZLZXlfZmtfdXBkX2NoZWNrX3JlcXVpcmVkKFRyaWdnZXIgKnRy aWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwKIAkJcmV0dXJuIHRydWU7CiAKIAkvKiBJZiBhbGwg b2xkIGFuZCBuZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5lZWRlZCAq LwotCWlmIChyaV9LZXlzRXF1YWwoZmtfcmVsLCBvbGRzbG90LCBuZXdzbG90LCByaWluZm8s IGZhbHNlKSkKKwlpZiAocmlfS2V5c1N0YWJsZShma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3Qs IHJpaW5mbywgZmFsc2UpKQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBFbHNlIHdlIG5lZWQg dG8gZmlyZSB0aGUgdHJpZ2dlci4gKi8KQEAgLTE0ODgsMTUgKzE2NTMsMTcgQEAgUklfSW5p dGlhbF9DaGVjayhUcmlnZ2VyICp0cmlnZ2VyLCBSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9u IHBrX3JlbCkKIAlzZXAgPSAiKCI7CiAJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5r ZXlzOyBpKyspCiAJewotCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlp bmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCXBrX2NvbGwgPSBSSUF0dENv bGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7Ci0JCU9pZAkJCWZrX2Nv bGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJ CU9pZAlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKKwkJT2lkCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbaV0pOworCQlPaWQJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKKwkJT2lkCWZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CiAKIAkJcXVvdGVPbmVOYW1lKHBrYXR0bmFt ZSArIDMsCiAJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0p KTsKKwogCQlxdW90ZU9uZU5hbWUoZmthdHRuYW1lICsgMywKIAkJCQkJIFJJQXR0TmFtZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCiAJCXJpX0dlbmVyYXRlUXVhbCgm cXVlcnlidWYsIHNlcCwKIAkJCQkJCXBrYXR0bmFtZSwgcGtfdHlwZSwKIAkJCQkJCXJpaW5m by0+cGZfZXFfb3Byc1tpXSwKQEAgLTIxMzcsNiArMjMwNCw3IEBAIHJpX0xvYWRDb25zdHJh aW50SW5mbyhPaWQgY29uc3RyYWludE9pZCkKIAlyaWluZm8gPSAoUklfQ29uc3RyYWludElu Zm8gKikgaGFzaF9zZWFyY2gocmlfY29uc3RyYWludF9jYWNoZSwKIAkJCQkJCQkJCQkJICAg JmNvbnN0cmFpbnRPaWQsCiAJCQkJCQkJCQkJCSAgIEhBU0hfRU5URVIsICZmb3VuZCk7CisK IAlpZiAoIWZvdW5kKQogCQlyaWluZm8tPnZhbGlkID0gZmFsc2U7CiAJZWxzZSBpZiAocmlp bmZvLT52YWxpZCkKQEAgLTIxNzEsNiArMjMzOSw3IEBAIHJpX0xvYWRDb25zdHJhaW50SW5m byhPaWQgY29uc3RyYWludE9pZCkKIAlyaWluZm8tPmNvbmZ1cGR0eXBlID0gY29uRm9ybS0+ Y29uZnVwZHR5cGU7CiAJcmlpbmZvLT5jb25mZGVsdHlwZSA9IGNvbkZvcm0tPmNvbmZkZWx0 eXBlOwogCXJpaW5mby0+Y29uZm1hdGNodHlwZSA9IGNvbkZvcm0tPmNvbmZtYXRjaHR5cGU7 CisJcmlpbmZvLT50ZW1wb3JhbCA9IGNvbkZvcm0tPmNvbnRlbXBvcmFsOwogCiAJRGVjb25z dHJ1Y3RGa0NvbnN0cmFpbnRSb3codHVwLAogCQkJCQkJCSAgICZyaWluZm8tPm5rZXlzLApA QCAtMjc5MSw5ICsyOTYwLDEyIEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkg KmtleSwgU1BJUGxhblB0ciBwbGFuKQogCiAKIC8qCi0gKiByaV9LZXlzRXF1YWwgLQorICog cmlfS2V5c1N0YWJsZSAtCiAgKgotICogQ2hlY2sgaWYgYWxsIGtleSB2YWx1ZXMgaW4gT0xE IGFuZCBORVcgYXJlIGVxdWFsLgorICogQ2hlY2sgaWYgYWxsIGtleSB2YWx1ZXMgaW4gT0xE IGFuZCBORVcgYXJlICJlcXVpdmFsZW50IjoKKyAqIEZvciBub3JtYWwgRktzIHdlIGNoZWNr IGZvciBlcXVhbGl0eS4KKyAqIEZvciB0ZW1wb3JhbCBGS3Mgd2UgY2hlY2sgdGhhdCB0aGUg UEsgc2lkZSBpcyBhIHN1cGVyc2V0IG9mIGl0cyBvbGQgdmFsdWUsCisgKiBvciB0aGUgRksg c2lkZSBpcyBhIHN1YnNldC4KICAqCiAgKiBOb3RlOiBhdCBzb21lIHBvaW50IHdlIG1pZ2h0 IHdpc2ggdG8gcmVkZWZpbmUgdGhpcyBhcyBjaGVja2luZyBmb3IKICAqICJJUyBOT1QgRElT VElOQ1QiIHJhdGhlciB0aGFuICI9IiwgdGhhdCBpcywgYWxsb3cgdHdvIG51bGxzIHRvIGJl CkBAIC0yODAxLDcgKzI5NzMsNyBAQCByaV9IYXNoUHJlcGFyZWRQbGFuKFJJX1F1ZXJ5S2V5 ICprZXksIFNQSVBsYW5QdHIgcGxhbikKICAqIHByZXZpb3VzbHkgZm91bmQgYXQgbGVhc3Qg b25lIG9mIHRoZSByb3dzIHRvIGNvbnRhaW4gbm8gbnVsbHMuCiAgKi8KIHN0YXRpYyBib29s Ci1yaV9LZXlzRXF1YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwg VHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCityaV9LZXlzU3RhYmxlKFJlbGF0aW9uIHJlbCwg VHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdzbG90LAogCQkJ IGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIGJvb2wgcmVsX2lzX3BrKQogewog CWNvbnN0IGludDE2ICphdHRudW1zOwpAQCAtMjgzNCwzNSArMzAwNiw4NiBAQCByaV9LZXlz RXF1YWwoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJs ZVNsb3QgKm5ld3Nsb3QsCiAKIAkJaWYgKHJlbF9pc19waykKIAkJewotCQkJLyoKLQkJCSAq IElmIHdlIGFyZSBsb29raW5nIGF0IHRoZSBQSyB0YWJsZSwgdGhlbiBkbyBhIGJ5dGV3aXNl Ci0JCQkgKiBjb21wYXJpc29uLiAgV2UgbXVzdCBwcm9wYWdhdGUgUEsgY2hhbmdlcyBpZiB0 aGUgdmFsdWUgaXMKLQkJCSAqIGNoYW5nZWQgdG8gb25lIHRoYXQgImxvb2tzIiBkaWZmZXJl bnQgYnV0IHdvdWxkIGNvbXBhcmUgYXMKLQkJCSAqIGVxdWFsIHVzaW5nIHRoZSBlcXVhbGl0 eSBvcGVyYXRvci4gIFRoaXMgb25seSBtYWtlcyBhCi0JCQkgKiBkaWZmZXJlbmNlIGZvciBP TiBVUERBVEUgQ0FTQ0FERSwgYnV0IGZvciBjb25zaXN0ZW5jeSB3ZSB0cmVhdAotCQkJICog YWxsIGNoYW5nZXMgdG8gdGhlIFBLIHRoZSBzYW1lLgotCQkJICovCi0JCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKG9sZHNsb3QtPnR0c190dXBsZURlc2NyaXB0 b3IsIGF0dG51bXNbaV0gLSAxKTsKKwkJCWlmIChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0g cmlpbmZvLT5ua2V5cyAtIDEpCisJCQl7CisJCQkJaWYgKHJpX1JhbmdlQXR0cmlidXRlTmVl ZHNDaGVjayh0cnVlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQorCQkJCQlyZXR1cm4gZmFsc2U7 CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkgKiBJZiB3ZSBhcmUgbG9va2lu ZyBhdCB0aGUgUEsgdGFibGUsIHRoZW4gZG8gYSBieXRld2lzZQorCQkJCSAqIGNvbXBhcmlz b24uICBXZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBpcworCQkJ CSAqIGNoYW5nZWQgdG8gb25lIHRoYXQgImxvb2tzIiBkaWZmZXJlbnQgYnV0IHdvdWxkIGNv bXBhcmUgYXMKKwkJCQkgKiBlcXVhbCB1c2luZyB0aGUgZXF1YWxpdHkgb3BlcmF0b3IuICBU aGlzIG9ubHkgbWFrZXMgYQorCQkJCSAqIGRpZmZlcmVuY2UgZm9yIE9OIFVQREFURSBDQVND QURFLCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0CisJCQkJICogYWxsIGNoYW5nZXMg dG8gdGhlIFBLIHRoZSBzYW1lLgorCQkJCSAqLworCQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0 dCA9IFR1cGxlRGVzY0F0dHIob2xkc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgYXR0bnVt c1tpXSAtIDEpOwogCi0JCQlpZiAoIWRhdHVtX2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2YWx1 ZSwgYXR0LT5hdHRieXZhbCwgYXR0LT5hdHRsZW4pKQotCQkJCXJldHVybiBmYWxzZTsKKwkJ CQlpZiAoIWRhdHVtX2ltYWdlX2VxKG9sZHZhbHVlLCBuZXd2YWx1ZSwgYXR0LT5hdHRieXZh bCwgYXR0LT5hdHRsZW4pKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CiAJCX0KIAkJZWxz ZQogCQl7Ci0JCQkvKgotCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRo ZSBhcHByb3ByaWF0ZSBlcXVhbGl0eQotCQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQg Y29tcGFyZSBlcXVhbCB3aWxsIHN0aWxsIHNhdGlzZnkgdGhlCi0JCQkgKiBjb25zdHJhaW50 IGFmdGVyIHRoZSB1cGRhdGUuCi0JCQkgKi8KLQkJCWlmICghcmlfQXR0cmlidXRlc0VxdWFs KHJpaW5mby0+ZmZfZXFfb3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVtc1tpXSksCi0J CQkJCQkJCQlvbGR2YWx1ZSwgbmV3dmFsdWUpKQotCQkJCXJldHVybiBmYWxzZTsKKwkJCWlm IChyaWluZm8tPnRlbXBvcmFsICYmIGkgPT0gcmlpbmZvLT5ua2V5cyAtIDEpCisJCQl7CisJ CQkJaWYgKHJpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayhmYWxzZSwgb2xkdmFsdWUsIG5l d3ZhbHVlKSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CS8qCisJCQkJICogRm9yIHRoZSBGSyB0YWJsZSwgY29tcGFyZSB3aXRoIHRoZSBhcHByb3By aWF0ZSBlcXVhbGl0eQorCQkJCSAqIG9wZXJhdG9yLiAgQ2hhbmdlcyB0aGF0IGNvbXBhcmUg ZXF1YWwgd2lsbCBzdGlsbCBzYXRpc2Z5IHRoZQorCQkJCSAqIGNvbnN0cmFpbnQgYWZ0ZXIg dGhlIHVwZGF0ZS4KKwkJCQkgKi8KKwkJCQlpZiAoIXJpX0F0dHJpYnV0ZXNFcXVhbChyaWlu Zm8tPmZmX2VxX29wcnNbaV0sIFJJQXR0VHlwZShyZWwsIGF0dG51bXNbaV0pLAorCQkJCQkJ CQkJCW9sZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KIAkJ fQogCX0KIAogCXJldHVybiB0cnVlOwogfQogCisvKgorICogcmlfUmFuZ2VBdHRyaWJ1dGVO ZWVkc0NoZWNrIC0KKyAqCisgKiBDb21wYXJlIG9sZCBhbmQgbmV3IHZhbHVlcywgYW5kIHJl dHVybiB0cnVlIGlmIHdlIG5lZWQgdG8gY2hlY2sgdGhlIEZLLgorICoKKyAqIE5COiB3ZSBo YXZlIGFscmVhZHkgY2hlY2tlZCB0aGF0IG5laXRoZXIgdmFsdWUgaXMgbnVsbC4KKyAqLwor c3RhdGljIGJvb2wKK3JpX1JhbmdlQXR0cmlidXRlTmVlZHNDaGVjayhib29sIHJlbF9pc19w aywgRGF0dW0gb2xkdmFsdWUsIERhdHVtIG5ld3ZhbHVlKQoreworCVJhbmdlVHlwZSAqb2xk cmFuZ2UsICpuZXdyYW5nZTsKKwlPaWQgb2xkcm5ndHlwZSwgbmV3cm5ndHlwZTsKKwlUeXBl Q2FjaGVFbnRyeSAqdHlwY2FjaGU7CisKKwlvbGRyYW5nZSA9IERhdHVtR2V0UmFuZ2VUeXBl UChvbGR2YWx1ZSk7CisJbmV3cmFuZ2UgPSBEYXR1bUdldFJhbmdlVHlwZVAobmV3dmFsdWUp OworCW9sZHJuZ3R5cGUgPSBSYW5nZVR5cGVHZXRPaWQob2xkcmFuZ2UpOworCW5ld3JuZ3R5 cGUgPSBSYW5nZVR5cGVHZXRPaWQobmV3cmFuZ2UpOworCisJaWYgKG9sZHJuZ3R5cGUgIT0g bmV3cm5ndHlwZSkKKwkJZWxvZyhFUlJPUiwgInJhbmdlIHR5cGVzIGFyZSBpbmNvbnNpc3Rl bnQiKTsKKworCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUob2xkcm5ndHlwZSwgVFlQ RUNBQ0hFX1JBTkdFX0lORk8pOworCWlmICh0eXBjYWNoZS0+cm5nZWxlbXR5cGUgPT0gTlVM TCkKKwkJZWxvZyhFUlJPUiwgInR5cGUgJXUgaXMgbm90IGEgcmFuZ2UgdHlwZSIsIG9sZHJu Z3R5cGUpOworCisJaWYgKHJlbF9pc19waykKKwkJLyogSWYgdGhlIFBLJ3MgcmFuZ2Ugc2hy dW5rLCBhIGNvbmZsaWN0IGlzIHBvc3NpYmxlLiAqLworCQlyZXR1cm4gIXJhbmdlX2VxX2lu dGVybmFsKHR5cGNhY2hlLCBvbGRyYW5nZSwgbmV3cmFuZ2UpICYmCisJCQkhcmFuZ2VfY29u dGFpbnNfaW50ZXJuYWwodHlwY2FjaGUsIG5ld3JhbmdlLCBvbGRyYW5nZSk7CisJZWxzZQor CQkvKiBJZiB0aGUgRksncyByYW5nZSBncmV3LCBhIGNvbmZsaWN0IGlzIHBvc3NpYmxlLiAq LworCQlyZXR1cm4gIXJhbmdlX2VxX2ludGVybmFsKHR5cGNhY2hlLCBvbGRyYW5nZSwgbmV3 cmFuZ2UpICYmCisJCQlyYW5nZV9jb250YWluc19pbnRlcm5hbCh0eXBjYWNoZSwgbmV3cmFu Z2UsIG9sZHJhbmdlKTsKK30KIAogLyoKICAqIHJpX0F0dHJpYnV0ZXNFcXVhbCAtCkBAIC0z MDIxLDEwICszMjQ0LDE2IEBAIFJJX0ZLZXlfdHJpZ2dlcl90eXBlKE9pZCB0Z2ZvaWQpCiAJ CWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgogCQljYXNlIEZfUklfRktFWV9OT0FD VElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX1VQRDoKKwkJY2FzZSBGX1RS SV9GS0VZX1JFU1RSSUNUX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX1VQRDoK KwkJY2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX05P QUNUSU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwogCiAJCWNhc2UgRl9SSV9G S0VZX0NIRUNLX0lOUzoKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tfVVBEOgorCQljYXNlIEZf VFJJX0ZLRVlfQ0hFQ0tfSU5TOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0hFQ0tfVVBEOgogCQkJ cmV0dXJuIFJJX1RSSUdHRVJfRks7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKaW5kZXggNzc4ZDNlMDMzNC4uMWRiNWVkNTU3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYwpAQCAtMzM5LDcgKzMzOSw3IEBAIHN0YXRpYyBjaGFyICpwZ19nZXRfdmll d2RlZl93b3JrZXIoT2lkIHZpZXdvaWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywg aW50IHdyYXBDb2x1bW4pOwogc3RhdGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtl cihPaWQgdHJpZ2lkLCBib29sIHByZXR0eSk7CiBzdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9p ZCBpbmRleElkLAotCQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgU3RyaW5nSW5m byBidWYpOworCQkJCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFwcywgYm9vbCB3aXRoUGVy aW9kLCBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3J1bGVkZWZfd29y a2VyKE9pZCBydWxlb2lkLCBpbnQgcHJldHR5RmxhZ3MpOwogc3RhdGljIGNoYXIgKnBnX2dl dF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGludCBjb2xubywKIAkJCQkJCQkJ CWNvbnN0IE9pZCAqZXhjbHVkZU9wcywKQEAgLTIyNDcsNyArMjI0NywxMCBAQCBwZ19nZXRf Y29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFu ZCwKIAkJCQl2YWwgPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKENPTlNUUk9JRCwgdHVwLAog CQkJCQkJCQkJCQkgQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSk7CiAKLQkJCQlkZWNvbXBp bGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGNvbkZvcm0t PmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CisJCQkJLyogSWYgaXQgaXMgYSB0ZW1wb3JhbCBm b3JlaWduIGtleSB0aGVuIGl0IHVzZXMgUEVSSU9ELiAqLworCQkJCWRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwKKwkJCQkJCQkJCQkJIGNv bkZvcm0tPmNvbmluZGlkLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbnRlbXBv cmFsLCAmYnVmKTsKIAogCQkJCS8qIGFkZCBmb3JlaWduIHJlbGF0aW9uIG5hbWUgKi8KIAkJ CQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsICIpIFJFRkVSRU5DRVMgJXMoIiwKQEAgLTIyNTgs NyArMjI2MSw5IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWlu dElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51 bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29u ZmtleSk7CiAKLQkJCQlkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9y bS0+Y29uZnJlbGlkLCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsICZidWYpOworCQkJCWRl Y29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQsCisJ CQkJCQkJCQkJCSBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsCisJCQkJCQkJCQkJCSBjb25G b3JtLT5jb250ZW1wb3JhbCwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigm YnVmLCAnKScpOwogCkBAIC0yMzQ0LDcgKzIzNDksNyBAQCBwZ19nZXRfY29uc3RyYWludGRl Zl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlpZiAo IWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgIiAo Iik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5j b25yZWxpZCwgSW52YWxpZE9pZCwgZmFsc2UsICZidWYpOworCQkJCQlkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIEludmFsaWRPaWQsIGZh bHNlLCBmYWxzZSwgJmJ1Zik7CiAJCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcp Jyk7CiAJCQkJfQogCkBAIC0yMzg3LDcgKzIzOTIsNyBAQCBwZ19nZXRfY29uc3RyYWludGRl Zl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwKIAkJCQlpbmRl eElkID0gY29uRm9ybS0+Y29uaW5kaWQ7CiAJCQkJU3lzQ2FjaGVHZXRBdHRyKENPTlNUUk9J RCwgdHVwLAogCQkJCQkJICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wLCAmaXNudWxs KTsKLQkJCQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNv bkZvcm0tPmNvbnJlbGlkLCBpbmRleElkLCAhaXNudWxsLCAmYnVmKTsKKwkJCQlrZXlhdHRz ID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlk LCBpbmRleElkLCAhaXNudWxsLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcigmYnVmLCAnKScpOwogCkBAIC0yNTgzLDcgKzI1ODgsNyBAQCBwZ19nZXRfY29u c3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBmdWxsQ29tbWFuZCwK ICAqLwogc3RhdGljIGludAogZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBj b2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQsCi0JCQkJCQkJIGJv b2wgd2l0aG91dE92ZXJsYXBzLCBTdHJpbmdJbmZvIGJ1ZikKKwkJCQkJCQkgYm9vbCB3aXRo b3V0T3ZlcmxhcHMsIGJvb2wgd2l0aFBlcmlvZCwgU3RyaW5nSW5mbyBidWYpCiB7CiAJRGF0 dW0JICAgKmtleXM7CiAJaW50CQkJbktleXM7CkBAIC0yNjA0LDYgKzI2MDksOCBAQCBkZWNv bXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lk IHJlbElkLCBPaWQgaW5kZXhJZCwKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBx dW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAkJZWxzZSBpZiAod2l0aG91dE92ZXJsYXBz ICYmIGogPT0gbktleXMgLSAxKQogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIFdJ VEhPVVQgT1ZFUkxBUFMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKKwkJZWxzZSBp ZiAod2l0aFBlcmlvZCAmJiBqID09IG5LZXlzIC0gMSkKKwkJCWFwcGVuZFN0cmluZ0luZm8o YnVmLCAiLCBQRVJJT0QgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAkJZWxz ZQogCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIiwgcXVvdGVfaWRlbnRpZmllcihj b2xOYW1lKSk7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19jb25z dHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAppbmRleCA3 ODZhOWNhOTA0Li43Y2EwNTM0YjQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaApAQCAtMTI3LDE5ICsxMjcsMTkgQEAgQ0FUQUxPRyhwZ19jb25zdHJhaW50LDI2MDYs Q29uc3RyYWludFJlbGF0aW9uSWQpCiAJaW50MTYJCWNvbmZrZXlbMV07CiAKIAkvKgotCSAq IElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9IEZLIGVxdWFsaXR5IG9w ZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRo ZSBQSyA9IEZLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9m IHRoZSBjb25zdHJhaW50CiAJICovCiAJT2lkCQkJY29ucGZlcW9wWzFdIEJLSV9MT09LVVAo cGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBv ZiB0aGUgUEsgPSBQSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVhY2gKKwkgKiBJZiBhIGZv cmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgUEsgPSBQSyBjb21wYXJpc29uIG9wZXJhdG9y cyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWludCAoaS5lLiwgZXF1YWxp dHkgZm9yIHRoZSByZWZlcmVuY2VkIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29ucHBlcW9w WzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwogCiAJLyoKLQkgKiBJZiBhIGZvcmVpZ24g a2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBlcXVhbGl0eSBvcGVyYXRvcnMgZm9yIGVh Y2gKKwkgKiBJZiBhIGZvcmVpZ24ga2V5LCB0aGUgT0lEcyBvZiB0aGUgRksgPSBGSyBjb21w YXJpc29uIG9wZXJhdG9ycyBmb3IgZWFjaAogCSAqIGNvbHVtbiBvZiB0aGUgY29uc3RyYWlu dCAoaS5lLiwgZXF1YWxpdHkgZm9yIHRoZSByZWZlcmVuY2luZyBjb2x1bW5zKQogCSAqLwog CU9pZAkJCWNvbmZmZXFvcFsxXSBCS0lfTE9PS1VQKHBnX29wZXJhdG9yKTsKQEAgLTE4MCw3 ICsxODAsNyBAQCBERUNMQVJFX0lOREVYKHBnX2NvbnN0cmFpbnRfY29ucGFyZW50aWRfaW5k ZXgsIDI1NzksIENvbnN0cmFpbnRQYXJlbnRJbmRleElkLCBwZwogCiAvKiBjb25rZXkgY2Fu IGNvbnRhaW4gemVybyAoSW52YWxpZEF0dHJOdW1iZXIpIGlmIGEgd2hvbGUtcm93IFZhciBp cyB1c2VkICovCiBERUNMQVJFX0FSUkFZX0ZPUkVJR05fS0VZX09QVCgoY29ucmVsaWQsIGNv bmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKLURFQ0xBUkVfQVJS QVlfRk9SRUlHTl9LRVkoKGNvbmZyZWxpZCwgY29uZmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0 dHJlbGlkLCBhdHRudW0pKTsKK0RFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlfT1BUKChjb25m cmVsaWQsIGNvbmZrZXkpLCBwZ19hdHRyaWJ1dGUsIChhdHRyZWxpZCwgYXR0bnVtKSk7CiAK ICNpZmRlZiBFWFBPU0VfVE9fQ0xJRU5UX0NPREUKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5k YXQKaW5kZXggOTgwNWJjNjExOC4uMzEzMjQ2OGE5YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3By b2MuZGF0CkBAIC0zOTQyLDYgKzM5NDIsMzAgQEAKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dl cicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4gJ1JJX0ZLZXlfbm9hY3Rpb25f dXBkJyB9LAogCisjIFRlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBjb25zdHJhaW50 IHRyaWdnZXJzCit7IG9pZCA9PiAnNjEyMicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVu dGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMnLAorICBwcm9uYW1l ID0+ICdUUklfRktleV9jaGVja19pbnMnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5 cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklf RktleV9jaGVja19pbnMnIH0sCit7IG9pZCA9PiAnNjEyMycsIGRlc2NyID0+ICd0ZW1wb3Jh bCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgRk9SRUlHTiBLRVkgLi4uIFJFRkVSRU5DRVMnLAor ICBwcm9uYW1lID0+ICdUUklfRktleV9jaGVja191cGQnLCBwcm92b2xhdGlsZSA9PiAndics IHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3Jj ID0+ICdUUklfRktleV9jaGVja191cGQnIH0sCit7IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFJFU1RSSUNUJywK KyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJywgcHJvdm9sYXRpbGUgPT4g J3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisg IHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjcn LCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBS RVNUUklDVCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3Zv bGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVz ID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lk ID0+ICc2MTMyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBP TiBERUxFVEUgTk8gQUNUSU9OJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25f ZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywg cHJvYXJndHlwZXMgPT4gJycsCisgIHByb3NyYyA9PiAnVFJJX0ZLZXlfbm9hY3Rpb25fZGVs JyB9LAoreyBvaWQgPT4gJzYxMzMnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwg aW50ZWdyaXR5IE9OIFVQREFURSBOTyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktl eV9ub2FjdGlvbl91cGQnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4g J3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9u b2FjdGlvbl91cGQnIH0sCisKIHsgb2lkID0+ICcxNjY2JywKICAgcHJvbmFtZSA9PiAndmFy Yml0ZXEnLCBwcm9sZWFrcHJvb2YgPT4gJ3QnLCBwcm9yZXR0eXBlID0+ICdib29sJywKICAg cHJvYXJndHlwZXMgPT4gJ3ZhcmJpdCB2YXJiaXQnLCBwcm9zcmMgPT4gJ2JpdGVxJyB9LApk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDA3NDdiNTRiMjYuLjQ3OWI1ZmZhMzUgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTI2MzIsNyArMjYzMiw5IEBAIHR5cGVkZWYg c3RydWN0IENvbnN0cmFpbnQKIAkvKiBGaWVsZHMgdXNlZCBmb3IgRk9SRUlHTiBLRVkgY29u c3RyYWludHM6ICovCiAJUmFuZ2VWYXIgICAqcGt0YWJsZTsJCS8qIFByaW1hcnkga2V5IHRh YmxlICovCiAJTGlzdAkgICAqZmtfYXR0cnM7CQkvKiBBdHRyaWJ1dGVzIG9mIGZvcmVpZ24g a2V5ICovCisJTm9kZQkgICAqZmtfcGVyaW9kOwkJLyogU3RyaW5nIG5vZGUgbmFtaW5nIFBl cmlvZCBvciByYW5nZSBjb2x1bW4gKi8KIAlMaXN0CSAgICpwa19hdHRyczsJCS8qIENvcnJl c3BvbmRpbmcgYXR0cnMgaW4gUEsgdGFibGUgKi8KKwlOb2RlCSAgICpwa19wZXJpb2Q7CQkv KiBTdHJpbmcgbm9kZSBuYW1pbmcgUGVyaW9kIG9yIHJhbmdlIGNvbHVtbiAqLwogCWNoYXIJ CWZrX21hdGNodHlwZTsJLyogRlVMTCwgUEFSVElBTCwgU0lNUExFICovCiAJY2hhcgkJZmtf dXBkX2FjdGlvbjsJLyogT04gVVBEQVRFIGFjdGlvbiAqLwogCWNoYXIJCWZrX2RlbF9hY3Rp b247CS8qIE9OIERFTEVURSBhY3Rpb24gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCA1OTg0 ZGNmYTRiLi5jY2Y1YmY4YWE2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBAIC0zMjYsNiArMzI2 LDcgQEAgUEdfS0VZV09SRCgicGFydGlhbCIsIFBBUlRJQUwsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBBUlRJVElPTiwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc2luZyIsIFBB U1NJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBh c3N3b3JkIiwgUEFTU1dPUkQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKK1BH X0tFWVdPUkQoInBlcmlvZCIsIFBFUklPRCwgUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJF TCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNFUlZFRF9LRVlXT1JELCBC QVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFOUywgVU5SRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5IiwgUE9MSUNZLCBVTlJFU0VS VkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC93aXRob3V0X292ZXJsYXBzLm91dAppbmRleCBkN2VlMGM0ZmY5Li5lNjFmZDFkOTA2 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zlcmxh cHMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFw cy5vdXQKQEAgLTM1NywzICszNTcsNDMwIEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZ IGlkLCB2YWxpZF9hdDsKICgxIHJvdykKIAogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZDsKKy0tCistLSB0ZXN0IEZLIGRlcGVuZGVuY2llcworLS0KKy0tIGNhbid0IGRyb3Ag YSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVB VEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCisp OworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworRVJST1I6 ICBjYW5ub3QgZHJvcCBjb2x1bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzIGJlY2F1 c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIGNvbnN0cmFpbnQgdGVt cG9yYWxfZmtfcm5nMnJuZ19mayBvbiB0YWJsZSB0ZW1wb3JhbF9ma19ybmcycm5nIGRlcGVu ZHMgb24gY29sdW1uIHZhbGlkX2F0IG9mIHRhYmxlIHRlbXBvcmFsMworSElOVDogIFVzZSBE Uk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVudCBvYmplY3RzIHRvby4KK0FM VEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF9hdCBDQVNDQURFOworTk9U SUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb25zdHJhaW50IHRlbXBvcmFsX2ZrX3JuZzJybmdf Zmsgb24gdGFibGUgdGVtcG9yYWxfZmtfcm5nMnJuZworRFJPUCBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBGT1JFSUdO IEtFWSwgcmFuZ2UgcmVmZXJlbmNlcyByYW5nZQorLS0KKy0tIENhbid0IGNyZWF0ZSBhIEZL IHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgaW50NHJhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3Br MiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklP RCB2YWxpZF9hdCkKKyk7CitFUlJPUjogIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBv cmFsX2ZrX3JuZzJybmdfZmsyIiBjYW5ub3QgYmUgaW1wbGVtZW50ZWQKK0RFVEFJTDogIEtl eSBjb2x1bW5zICJ2YWxpZF9hdCIgYW5kICJ2YWxpZF9hdCIgYXJlIG9mIGluY29tcGF0aWJs ZSB0eXBlczogaW50NHJhbmdlIGFuZCB0c3JhbmdlLgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBh cmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3Br IFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0Qg dmFsaWRfYXQpCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworLS0gd2l0 aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCispOwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworLS0gc2hvdWxkIGZhaWwgYmVjYXVz ZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX2ZrX3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAor CXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5n X3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCBwYXJlbnRfaWQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVS SU9EIGlkKQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxp c3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzCistLQorLS0gdGVzdCBBTFRFUiBUQUJM RSBBREQgQ09OU1RSQUlOVAorLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n ICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50 NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpOworQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gc2hvdWxkIGZhaWwgYmVj YXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CitFUlJPUjogIGZvcmVpZ24g a2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVwbGljYXRl cworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDIn LCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9y YWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0w NC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK KwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRl bXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRf YXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAw OjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIu CistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FM VEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0KKy0tIHRlc3QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9N IHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19ybmcycm5nX2Zr JzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50 ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlkX2F0KQor KDEgcm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKK0VSUk9SOiAgaW5zZXJ0 IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIKK0RFVEFJTDog IEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIgMDA6MDA6 MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3QgcHJlc2VudCBp biB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBpdCBzaG91bGQgd29yazoKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDIt MDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcg VkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwg J1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBEQVRFIHRl bXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMics ICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZhaWw6CitV UERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjogIGlu c2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRB SUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAw OjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNl bnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJu ZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJPUjog IGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitE RVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbOCw5KSwgWyJUdWUgSmFuIDAy IDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHBy ZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLQorLS0gdGVzdCBGSyBwYXJlbnQg dXBkYXRlcyBOTyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJl Y2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0g YSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBp cyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2Zr X3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgt MDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNl ZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w MS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9y YWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsi TW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4Iikp IGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIu CistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUg UEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1 XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg cGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAor LS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJy bmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVk cyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRz cmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsK Ky0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMg aWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0w MScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVy ZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMgZm9yZWln biBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFibGUgInRl bXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYp LCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAx OCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJy bmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBz YW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNU SU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JF SUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51 bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsK K0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBL IGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJl ZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDIt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jh bmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcy MDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIw MTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFy ZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2 aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2Zr IiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZh bGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAw MSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVt cG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJl Y29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0 ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJP UCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19m aworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVO Q0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1l cmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAx OC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVj YXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdI RVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywg JzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVt cG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9m a19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDog IEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4 IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJv bSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2Jq ZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgT04g VVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBD QVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBwYXJlbnQg dXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5 LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VSUk9SOiAg YWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVz dCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxf cm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBW QUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBD T0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxU IE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQg Zm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0 YWJsZXMKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJB SU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsKK0NSRUFU RSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1Ig VkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzksOV0n LCAnWzExLDExXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScsICdbNiw2 XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5n ZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMiwyXScsIGRh dGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0d28nKTsKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RS QUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlk LCBQRVJJT0QgdmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUg VEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywg J1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0n LCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7Cist LSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyksCisgICgnWzEsMV0nLCBkYXRl cmFuZ2UoJzIwMDEtMDEtMDEnLCAnMjAwMi0wMS0wMScpLCAnWzIsMl0nKSwKKyAgKCdbMiwy XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwxXScpOwor LS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAxJywgJzIw MTAtMDItMTUnKSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFi bGUgInRma3AxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRfaWQsIHZh bGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDEwLDAyLTE1LTIwMTApKSBpcyBub3QgcHJlc2Vu dCBpbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIi4KK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKK0VSUk9SOiAg aW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsiCitERVRB SUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMyw0KSwgWzAxLTAxLTIwMDAsMDIt MTUtMjAwMCkpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmciLgorLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcy MDAwLTAxLTAxJywgJzIwMDAtMDItMTMnKSBXSEVSRSBpZCA9ICdbMiwyXSc7CistLSBtb3Zl IGEgcm93IGZyb20gdGhlIGZpcnN0IHBhcnRpdGlvbiB0byB0aGUgc2Vjb25kCitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0nIFdIRVJF IGlkID0gJ1sxLDFdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0aGUgc2Vjb25kIHBhcnRpdGlv biB0byB0aGUgZmlyc3QKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IFNFVCBpZCA9ICdbMSwxXScgV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gc2hvdWxkIGZhaWw6 CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQg PSBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wNC0wMScpIFdIRVJFIGlkID0gJ1sx LDFdJzsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lv biBjb25zdHJhaW50ICJ0ZmtwMV9wa2V5IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQp PShbMSwyKSwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkpIGNvbmZsaWN0cyB3aXRoIGV4aXN0 aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDAwLDA0LTAxLTIwMDAp KS4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgorSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJh bmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAx JywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykK KyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAx JywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBv biB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBz dGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gcGFydGl0 aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBW QUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAn MjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0ZSBvciBk ZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIgb24gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ii4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVURSBSRVNUUklD VDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1 XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAx Ni0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitVUERB VEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgn MjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRf aWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0y MDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScs ICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtl eSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6 ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkg aXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIi4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04g S0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRFIENBU0NB REU7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWdu IGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKKy0tIHBh cnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n CisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJPUjogIGFj dGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0tIHBhcnRp dGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCistLSBwYXJ0aXRpb25lZCBGSyBw YXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxU ICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK KwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIFNF VCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBz dXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAppbmRleCAz YzMyMzY2MThjLi4zMjQ4MzkwNzQ0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbApAQCAtMjYwLDMgKzI2MCw0MzQgQEAgU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBG Uk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRF UiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwor CistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCisKKy0tIGNhbid0IGRyb3AgYSBy YW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitDUkVBVEUg VEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJ VEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0 cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZ IChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispOwor QUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxURVIgVEFC TEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitEUk9QIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0KKy0t IHRlc3QgRk9SRUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCisKKy0tIENh bid0IGNyZWF0ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NSRUFURSBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg aW50NHJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CisKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlw YXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQ RVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsKKworLS0g d2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0NSRUFURSBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtf cm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCisp OworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworCistLSBzaG91bGQgZmFpbCBi ZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlk LCBQRVJJT0QgaWQpCispOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQgQ09OU1RS QUlOVAorLS0KKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7Cist LSB3aXRoIGluZmVycmVkIFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CisKKy0tIHNob3VsZCBmYWlsIGJlY2F1c2Ugb2Yg ZHVwbGljYXRlIHJlZmVyZW5jZWQgY29sdW1uczoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrMgorCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCBwYXJlbnRfaWQpCisJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpOworCistLQorLS0gdGVzdCB3aXRoIHJvd3Mg YWxyZWFkeQorLS0KKworREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsKK0FMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxf Zmtfcm5nMnJuZ19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFd Jyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19mazsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBz aG91bGQgZmFpbDoKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9p ZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gb2th eSBhZ2FpbjoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmc7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKworLS0KKy0tIHRlc3QgcGdfZ2V0X2NvbnN0cmFp bnRkZWYKKy0tCisKK1NFTEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX2ZrX3JuZzJybmdfZmsnOwor CistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMics ICcyMDE4LTAyLTAxJyksICdbMSwxXScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworLS0gbm93IGl0IHNob3VsZCB3b3Jr OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxLDFdJywgdHNyYW5nZSgn MjAxOC0wMi0wMycsICcyMDE4LTAzLTAzJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtf cm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0w NC0wMScpLCAnWzEsMV0nKTsKKworLS0KKy0tIHRlc3QgRksgY2hpbGQgdXBkYXRlcworLS0K KworVVBEQVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hv dWxkIGZhaWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0 c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7 CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBX SEVSRSBpZCA9ICdbMSwxXSc7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIE5P IEFDVElPTgorLS0KKworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBiZWNhdXNlIHRo ZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYt MDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGEgUEsgdXBk YXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51bWVyaWMgaWQgaXMgcmVmZXJl bmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Ju ZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyks ICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gYSBQ SyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJlIHJlZmVyZW5jZWQ6CitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSB0aGVuIGRlbGV0ZSB0aGUgb2Jq ZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVM RVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERB VEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAn MjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisKKy0tCistLSB0 ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1w b3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf Zms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNU UklDVDsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgYmVjYXVzZSB0aGUgbnVtZXJp YyBpZCBpc24ndCByZWZlcmVuY2VkOgorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworVVBE QVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVj YXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0n KTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0w Mi0wMScsICcyMDE2LTAzLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgdXBkYXRl IHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBG SyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBv cmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDIt MDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFy ZW50IGRlbGV0ZXMgTk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQp CisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2Nl ZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFp bHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksg cmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBk ZWxldGVzIFJFU1RSSUNUCistLQorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFp bHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksg cmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisKKy0tCistLSB0ZXN0IE9OIFVQREFURS9E RUxFVEUgb3B0aW9ucworLS0KKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURF CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURS T1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUg Q0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRl cyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJl bnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJ T04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKKworLS0gdGVzdCBGSyBw YXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZB TFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMg KCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEy XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4g cGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQ REFURSBTRVQgREVGQVVMVDsKKworLS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMK KworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQgaW50NHJh bmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQg dGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRB QkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxV RVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdb MTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywg J1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAx LTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcy MDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywgZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwgJ3R3bycpOworCitDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IGRhdGVyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRB QkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdb OSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywg J1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworCist LSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMS0wMS0wMScsICcyMDAyLTAxLTAxJyksICdbMiwyXScpLAorICAoJ1sy LDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7 CistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAn MjAxMC0wMi0xNScpLCAnWzEsMV0nKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEt MDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKKworLS0gcGFydGl0aW9uZWQgRksgY2hp bGQgdXBkYXRlcworCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBT RVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdI RVJFIGlkID0gJ1syLDJdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0 aW9uIHRvIHRoZSBzZWNvbmQKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFNFVCBpZCA9ICdbNCw0XScgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJv dyBmcm9tIHRoZSBzZWNvbmQgcGFydGl0aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9 ICdbNCw0XSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcy MDAwLTA0LTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBw YXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIw MTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQg PSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sz LDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7 CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7 CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VU IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsK KworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCisKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAy LTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1Jywg JzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZh bGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNs ZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFy ZW50IHVwZGF0ZXMgUkVTVFJJQ1QKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdf ZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJF TkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBk YXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKSBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUn LCAnMjAxOC0wMS0xMCcpLCAnWzUsNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMt MDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcy MDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYt MDEtMDEnLCAnMjAxNi0wMi0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4g dXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQg ZGVsZXRlcyBSRVNUUklDVAorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdb NSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwor LS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJyk7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVz IENBU0NBREUKKworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2Zr LAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsK KwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVO Q0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBV UERBVEUgQ0FTQ0FERTsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FT Q0FERQorCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorCitB TFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5V TEw7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCisKKy0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCisKK0FMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBh cmVudF9pZCBTRVQgREVGQVVMVCAnWy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lk LCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nCisJCU9OIERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CisK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCisKK0RST1Ag VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nOwotLSAKMi4yNS4xCgo= --------------XDFSGX0v4ADvwDYCFM5gI4Qr Content-Type: text/x-patch; charset=UTF-8; name="v13-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v13-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSA3YjFmYjRkYjMyOTFiMTJiNDhhZDQzMjFjZTAwZjhhODlkMDM1Mzk5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxMyAzLzVdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU 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 LmMgICAgICAgICAgICB8ICA0MiArKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2Nh Y2hlLmMgICAgICAgICAgIHwgIDUyICsrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dl ci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oICAgICAgICAgICAgICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgICAgIHwgIDQ0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRo bm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxh bm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3By aW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNSArCiBzcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3BhcnNl ci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvcGFy c2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3Bh cnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv dXRpbHMvcGVyaW9kLmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9pbmNsdWRl L3V0aWxzL3JhbmdldHlwZXMuaCAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA0MzEgKysrKysrKysrKysr KysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAgICAg fCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mub3V0 IHwgIDMyICsrCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCAg ICAgfCAgOTAgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSAgICAg ICAgICAgIHwgICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5z cWwgICAgICAgfCAzNDAgKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3By aXZpbGVnZXMuc3FsICAgICAgICAgICB8ICAxOCArCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC91 cGRhdGFibGVfdmlld3Muc3FsICAgICAgfCAgMTQgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv d2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgIDQ2ICsrCiA0NiBmaWxlcyBjaGFuZ2VkLCAy MDE3IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9vZi5zcWwKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9kZWxl dGUuc2dtbAppbmRleCAxYjgxYjRlN2Q3Li5jMDkwM2VjMzYxIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2RlbGV0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvZGVsZXRl LnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiA8c3lu b3BzaXM+CiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogREVMRVRFIEZST00g WyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3Jl cGxhY2VhYmxlPiBbICogXSBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+YWxpYXM8L3JlcGxhY2VhYmxlPiBdCisgICAgWyBGT1IgUE9SVElPTiBPRiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2Vh YmxlPiBGUk9NIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9y ZXBsYWNlYWJsZT4gVE8gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmVuZF90aW1l PC9yZXBsYWNlYWJsZT4gXQogICAgIFsgVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmZyb21faXRlbTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQogICAgIFsgV0hFUkUg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbmRpdGlvbjwvcmVwbGFjZWFibGU+ IHwgV0hFUkUgQ1VSUkVOVCBPRiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y3Vy c29yX25hbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgWyBSRVRVUk5JTkcgKiB8IDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vdXRwdXRfZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ IFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vdXRwdXRfbmFtZTwv cmVwbGFjZWFibGU+IF0gWywgLi4uXSBdCkBAIC01NCw2ICs1NSwxNSBAQCBERUxFVEUgRlJP TSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwv cmVwbGFjZWFibGU+IFsgKgogICAgY2lyY3Vtc3RhbmNlcy4KICAgPC9wYXJhPgogCisgIDxw YXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIDxsaW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2Rz LWFwcGxpY2F0aW9uLXBlcmlvZHMiPnJhbmdlIGNvbHVtbgorICAgb3IgPGxpdGVyYWw+UEVS SU9EPC9saXRlcmFsPjwvbGluaz4sIHlvdSBtYXkgc3VwcGx5IGEKKyAgIDxsaXRlcmFsPkZP UiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsIGFuZCB5b3VyIGRlbGV0ZSB3aWxsIG9u bHkgYWZmZWN0IHJvd3MKKyAgIHRoYXQgb3ZlcmxhcCB0aGUgZ2l2ZW4gaW50ZXJ2YWwuIEZ1 cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4gZXh0ZW5kcyBvdXRzaWRlCisgICB0aGUgPGxp dGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+IGJvdW5kcywgdGhlbiBuZXcgcm93cyBz cGFubmluZyB0aGUgImN1dAorICAgb2ZmIiBkdXJhdGlvbiB3aWxsIGJlIGluc2VydGVkIHRv IHByZXNlcnZlIHRoZSBvbGQgdmFsdWVzLgorICA8L3BhcmE+CisKICAgPHBhcmE+CiAgICBU aGUgb3B0aW9uYWwgPGxpdGVyYWw+UkVUVVJOSU5HPC9saXRlcmFsPiBjbGF1c2UgY2F1c2Vz IDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4KICAgIHRvIGNvbXB1dGUgYW5kIHJldHVybiB2 YWx1ZShzKSBiYXNlZCBvbiBlYWNoIHJvdyBhY3R1YWxseSBkZWxldGVkLgpAQCAtMTE2LDYg KzEyNiw0MiBAQCBERUxFVEUgRlJPTSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8gdXNlIHdoZW4gcGVyZm9ybWluZyBhIHRl bXBvcmFsIGRlbGV0ZS4gVGhpcworICAgICAgbXVzdCBtYXRjaCB0aGUgcmFuZ2Ugb3IgcGVy aW9kIHVzZWQgaW4gdGhlIHRhYmxlJ3MgdGVtcG9yYWwgcHJpbWFyeSBrZXkuCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0 YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxw YXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUgKGluY2x1c2l2ZSkgdG8gY2hhbmdlIGlu IGEgdGVtcG9yYWwgZGVsZXRlLgorICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hp bmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVw bGFjZWFibGU+LiBJdCBtYXkgYWxzbworICAgICAgYmUgdGhlIHNwZWNpYWwgdmFsdWUgPGxp dGVyYWw+TUlOVkFMVUU8L2xpdGVyYWw+IHRvIGluZGljYXRlIGEgZGVsZXRlIHdob3NlCisg ICAgICBiZWdpbm5pbmcgaXMgdW5ib3VuZGVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0 aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0 ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFi bGU+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBUaGUgbGF0 ZXN0IHRpbWUgKGV4Y2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgZGVsZXRlLgor ICAgICAgVGhpcyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0 aGUgcmFuZ2Ugb3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yYW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBJdCBtYXkgYWxz bworICAgICAgYmUgdGhlIHNwZWNpYWwgdmFsdWUgPGxpdGVyYWw+TUFYVkFMVUU8L2xpdGVy YWw+IHRvIGluZGljYXRlIGEgZGVsZXRlIHdob3NlCisgICAgICBlbmQgaXMgdW5ib3VuZGVk LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZi91cGRhdGUuc2dtbAppbmRleCAyYWIyNGIwNTIzLi4wNjljYjNjYTVjIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9yZWYvdXBkYXRlLnNnbWwKQEAgLTIzLDYgKzIzLDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVu dGF0aW9uCiA8c3lub3BzaXM+CiBbIFdJVEggWyBSRUNVUlNJVkUgXSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+d2l0aF9xdWVyeTwvcmVwbGFjZWFibGU+IFssIC4uLl0gXQog VVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0Yg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRf dGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmRfdGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBTRVQgeyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA9IHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8IERFRkFVTFQg fSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSBbIFJPVyBdICggeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IHwgREVGQVVM VCB9IFssIC4uLl0gKSB8CiAgICAgICAgICAgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgPSAoIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWItU0VMRUNUPC9yZXBsYWNlYWJsZT4gKQpAQCAt NTEsNiArNTIsMTYgQEAgVVBEQVRFIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWwogICAgY2lyY3Vtc3Rh bmNlcy4KICAgPC9wYXJhPgogCisgIDxwYXJhPgorICAgSWYgdGhlIHRhYmxlIGhhcyBhIDxs aW5rIGxpbmtlbmQ9ImRkbC1wZXJpb2RzLWFwcGxpY2F0aW9uLXBlcmlvZHMiPnJhbmdlIGNv bHVtbgorICAgb3IgPGxpdGVyYWw+UEVSSU9EPC9saXRlcmFsPjwvbGluaz4sIHlvdSBtYXkg c3VwcGx5IGEKKyAgIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBjbGF1c2Us IGFuZCB5b3VyIHVwZGF0ZSB3aWxsIG9ubHkgYWZmZWN0IHJvd3MKKyAgIHRoYXQgb3Zlcmxh cCB0aGUgZ2l2ZW4gaW50ZXJ2YWwuIEZ1cnRoZXJtb3JlLCBpZiBhIHJvdydzIHNwYW4gZXh0 ZW5kcyBvdXRzaWRlCisgICB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+ IGJvdW5kcywgdGhlbiBpdCB3aWxsIGJlIHRydW5jYXRlZCB0byBmaXQKKyAgIHdpdGhpbiB0 aGUgYm91bmRzLCBhbmQgbmV3IHJvd3Mgc3Bhbm5pbmcgdGhlICJjdXQgb2ZmIiBkdXJhdGlv biB3aWxsIGJlCisgICBpbnNlcnRlZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlcy4KKyAg PC9wYXJhPgorCiAgIDxwYXJhPgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklO RzwvbGl0ZXJhbD4gY2xhdXNlIGNhdXNlcyA8Y29tbWFuZD5VUERBVEU8L2NvbW1hbmQ+CiAg ICB0byBjb21wdXRlIGFuZCByZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0 dWFsbHkgdXBkYXRlZC4KQEAgLTExNCw2ICsxMjUsNDIgQEAgVVBEQVRFIFsgT05MWSBdIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4g WyAqIF0gWwogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZh cmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIHJhbmdlIGNvbHVtbiBvciBwZXJpb2QgdG8g dXNlIHdoZW4gcGVyZm9ybWluZyBhIHRlbXBvcmFsIHVwZGF0ZS4gVGhpcworICAgICAgbXVz dCBtYXRjaCB0aGUgcmFuZ2Ugb3IgcGVyaW9kIHVzZWQgaW4gdGhlIHRhYmxlJ3MgdGVtcG9y YWwgcHJpbWFyeSBrZXkuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92 YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGVhcmxpZXN0IHRpbWUg KGluY2x1c2l2ZSkgdG8gY2hhbmdlIGluIGEgdGVtcG9yYWwgdXBkYXRlLgorICAgICAgVGhp cyBtdXN0IGJlIGEgdmFsdWUgbWF0Y2hpbmcgdGhlIGJhc2UgdHlwZSBvZiB0aGUgcmFuZ2Ug b3IgcGVyaW9kIGZyb20KKyAgICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y YW5nZV9vcl9wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+LiBJdCBtYXkgYWxzbworICAgICAg YmUgdGhlIHNwZWNpYWwgdmFsdWUgPGxpdGVyYWw+TUlOVkFMVUU8L2xpdGVyYWw+IHRvIGlu ZGljYXRlIGFuIHVwZGF0ZSB3aG9zZQorICAgICAgYmVnaW5uaW5nIGlzIHVuYm91bmRlZC4K KyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwor ICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+Cisg ICAgIDxwYXJhPgorICAgICAgVGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5n ZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1h dGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAg ICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8 L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVl IDxsaXRlcmFsPk1BWFZBTFVFPC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhbiB1cGRhdGUgd2hv c2UKKyAgICAgIGVuZCBpcyB1bmJvdW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3Rp dGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRl cm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3RyaWdnZXIuc2dtbCBiL2RvYy9zcmMvc2dtbC90cmlnZ2VyLnNnbWwKaW5kZXggNmUxZjM3 MGIyMS4uYjU4ZTYzNDhhZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCkBAIC01MzcsMTcgKzUzNywxOCBA QCBDQUxMRURfQVNfVFJJR0dFUihmY2luZm8pCiA8cHJvZ3JhbWxpc3Rpbmc+CiB0eXBlZGVm IHN0cnVjdCBUcmlnZ2VyRGF0YQogewotICAgIE5vZGVUYWcgICAgICAgICAgdHlwZTsKLSAg ICBUcmlnZ2VyRXZlbnQgICAgIHRnX2V2ZW50OwotICAgIFJlbGF0aW9uICAgICAgICAgdGdf cmVsYXRpb247Ci0gICAgSGVhcFR1cGxlICAgICAgICB0Z190cmlndHVwbGU7Ci0gICAgSGVh cFR1cGxlICAgICAgICB0Z19uZXd0dXBsZTsKLSAgICBUcmlnZ2VyICAgICAgICAgKnRnX3Ry aWdnZXI7Ci0gICAgVHVwbGVUYWJsZVNsb3QgICp0Z190cmlnc2xvdDsKLSAgICBUdXBsZVRh YmxlU2xvdCAgKnRnX25ld3Nsb3Q7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJs ZTsKLSAgICBUdXBsZXN0b3Jlc3RhdGUgKnRnX25ld3RhYmxlOwotICAgIGNvbnN0IEJpdG1h cHNldCAqdGdfdXBkYXRlZGNvbHM7CisgICAgTm9kZVRhZyAgICAgICAgICAgIHR5cGU7Cisg ICAgVHJpZ2dlckV2ZW50ICAgICAgIHRnX2V2ZW50OworICAgIFJlbGF0aW9uICAgICAgICAg ICB0Z19yZWxhdGlvbjsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfdHJpZ3R1cGxlOwor ICAgIEhlYXBUdXBsZSAgICAgICAgICB0Z19uZXd0dXBsZTsKKyAgICBUcmlnZ2VyICAgICAg ICAgICAqdGdfdHJpZ2dlcjsKKyAgICBUdXBsZVRhYmxlU2xvdCAgICAqdGdfdHJpZ3Nsb3Q7 CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX25ld3Nsb3Q7CisgICAgVHVwbGVzdG9yZXN0 YXRlICAgKnRnX29sZHRhYmxlOworICAgIFR1cGxlc3RvcmVzdGF0ZSAgICp0Z19uZXd0YWJs ZTsKKyAgICBjb25zdCBCaXRtYXBzZXQgICAqdGdfdXBkYXRlZGNvbHM7CisgICAgRm9yUG9y dGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIDwvcHJvZ3JhbWxp c3Rpbmc+CiAKQEAgLTgxNSw2ICs4MTYsNDMgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlcgog ICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48c3RydWN0ZmllbGQ+dGdf dGVtcG9yYWw8L3N0cnVjdGZpZWxkPjwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICA8cGFyYT4KKyAgICAgICAgU2V0IGZvciA8bGl0ZXJhbD5VUERBVEU8L2xpdGVyYWw+IGFu ZCA8bGl0ZXJhbD5ERUxFVEU8L2xpdGVyYWw+IHF1ZXJpZXMKKyAgICAgICAgdGhhdCB1c2Ug PGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8L2xpdGVyYWw+LCBvdGhlcndpc2UgPHN5bWJvbD5O VUxMPC9zeW1ib2w+LgorICAgICAgICBDb250YWlucyBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3R1 cmUgb2YgdHlwZQorICAgICAgICA8c3RydWN0bmFtZT5Gb3JQb3J0aW9uT2ZTdGF0ZTwvc3Ry dWN0bmFtZT4sIGRlZmluZWQgaW4KKyAgICAgICAgPGZpbGVuYW1lPm5vZGVzL2V4ZWNub2Rl cy5oPC9maWxlbmFtZT46CisKKzxwcm9ncmFtbGlzdGluZz4KK3R5cGVkZWYgc3RydWN0IEZv clBvcnRpb25PZlN0YXRlCit7CisgICAgTm9kZVRhZyB0eXBlOworCisgICAgY2hhciAgICpm cF9yYW5nZU5hbWU7ICAgICAgIC8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQ T1JUSU9OIE9GICovCisgICAgT2lkICAgICBmcF9yYW5nZVR5cGU7ICAgICAgIC8qIHRoZSB0 eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICovCisgICAgYm9vbCAgICBm cF9oYXNQZXJpb2Q7ICAgICAgIC8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEg cmFuZ2UgKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZFN0YXJ0TmFtZTsgLyogdGhlIFBFUklP RCdzIHN0YXJ0IGNvbHVtbiAqLworICAgIGNoYXIgICAqZnBfcGVyaW9kRW5kTmFtZTsgICAv KiB0aGUgUEVSSU9EJ3MgZW5kIGNvbHVtbiAqLworICAgIERhdHVtICAgZnBfdGFyZ2V0UmFu Z2U7ICAgICAvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAqLworfSBGb3JQb3J0 aW9uT2ZTdGF0ZTsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICAgICB3aGVyZSA8c3RydWN0 ZmllbGQ+ZnBfcmFuZ2VOYW1lPC9zdHJ1Y3RmaWVsZD4gaXMgdGhlIHBlcmlvZCBvciByYW5n ZQorICAgICAgIGNvbHVtbiBuYW1lZCBpbiB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJT04gT0Y8 L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBfcmFuZ2VUeXBlPC9z dHJ1Y3RmaWVsZD4gaXMgaXRzIHJhbmdlIHR5cGUsCisgICAgICAgPHN0cnVjdGZpZWxkPmZw X2hhc1BlcmlvZDwvc3RydWN0ZmllbGQ+IGluZGljYXRlcyB3aGV0aGVyIGEgcGVyaW9kIHdh cyB1c2VkCisgICAgICAgb3IgYSByYW5nZSBjb2x1bW4sIDxzdHJ1Y3RmaWVsZD5mcF9wZXJp b2RTdGFydE5hbWU8L3N0cnVjdGZpZWxkPiBhbmQKKyAgICAgICA8c3RydWN0ZmllbGQ+ZnBf cGVyaW9kRW5kTmFtZTwvc3RydWN0ZmllbGQ+IGFyZSB0aGUgbmFtZXMgb2YgdGhlIHBlcmlv ZCdzCisgICAgICAgc3RhcnQgYW5kIGVuZCBjb2x1bW5zIChvciA8c3ltYm9sPk5VTEw8L3N5 bWJvbD4gaWYgYSByYW5nZSBjb2x1bW4gd2FzIHVzZWQpLAorICAgICAgIGFuZCA8c3RydWN0 ZmllbGQ+ZnBfdGFyZ2V0UmFuZ2U8L3N0cnVjdGZpZWxkPiBpcyBhIHJhbmdldHlwZSB2YWx1 ZSBjcmVhdGVkCisgICAgICAgYnkgZXZhbHVhdGluZyB0aGUgPGxpdGVyYWw+Rk9SIFBPUlRJ T04gT0Y8L2xpdGVyYWw+IGJvdW5kcy4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3Rp dGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgIDwv cGFyYT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA1ZjRhOGFhODA5Li5h ZjkyZTc4YWM5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTIxNTcsNiAr MTIxNTcsNyBAQCB2YWxpZGF0ZUZvcmVpZ25LZXlDb25zdHJhaW50KGNoYXIgKmNvbm5hbWUs CiAJCXRyaWdkYXRhLnRnX3RyaWd0dXBsZSA9IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xv dCwgZmFsc2UsIE5VTEwpOwogCQl0cmlnZGF0YS50Z190cmlnc2xvdCA9IHNsb3Q7CiAJCXRy aWdkYXRhLnRnX3RyaWdnZXIgPSAmdHJpZzsKKwkJdHJpZ2RhdGEudGdfdGVtcG9yYWwgPSBO VUxMOwogCiAJCWZjaW5mby0+Y29udGV4dCA9IChOb2RlICopICZ0cmlnZGF0YTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDA1NzdiNjA0MTUuLjJmMDU1NTdiMzQgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTU0LDYgKzU0LDcgQEAKICNpbmNsdWRlICJ1dGls cy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxz L2J5dGVhLmgiCisjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9m bWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Y19ob29rcy5oIgogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCkBAIC0yNjM4LDYgKzI2MzksNyBAQCBFeGVjQlNEZWxldGVUcmlnZ2Vy cyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbykKIAlMb2NUcmlnZ2Vy RGF0YS50Z19ldmVudCA9IFRSSUdHRVJfRVZFTlRfREVMRVRFIHwKIAkJVFJJR0dFUl9FVkVO VF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9S ZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5y aV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRyaWdkZXNjLT5udW10cmlnZ2Vy czsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dlciA9ICZ0cmlnZGVzYy0+dHJpZ2dl cnNbaV07CkBAIC0yNzM3LDYgKzI3MzksNyBAQCBFeGVjQlJEZWxldGVUcmlnZ2VycyhFU3Rh dGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8 CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9u ID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBv cmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmln ZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKIAl7CiAJCUhlYXBUdXBsZQluZXd0dXBsZTsKQEAg LTI4MjgsNiArMjgzMSw3IEBAIEV4ZWNJUkRlbGV0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRl LCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRS SUdHRVJfRVZFTlRfSU5TVEVBRDsKIAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJl bGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9 IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxl KHRyaWd0dXBsZSwgc2xvdCwgZmFsc2UpOwogCkBAIC0yODkxLDYgKzI4OTUsNyBAQCBFeGVj QlNVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5m bykKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRp b24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CiAJTG9jVHJpZ2dlckRhdGEudGdfdXBk YXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9 IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBpIDwgdHJpZ2Rlc2Mt Pm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlUcmlnZ2VyICAgICp0cmlnZ2VyID0gJnRyaWdk ZXNjLT50cmlnZ2Vyc1tpXTsKQEAgLTMwMDgsNiArMzAxMyw3IEBAIEV4ZWNCUlVwZGF0ZVRy aWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBFUFFTdGF0ZSAqZXBxc3RhdGUsCiAJCVRSSUdHRVJf RVZFTlRfUk9XIHwKIAkJVFJJR0dFUl9FVkVOVF9CRUZPUkU7CiAJTG9jVHJpZ2dlckRhdGEu dGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRh dGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJdXBkYXRlZENv bHMgPSBFeGVjR2V0QWxsVXBkYXRlZENvbHMocmVsaW5mbywgZXN0YXRlKTsKIAlMb2NUcmln Z2VyRGF0YS50Z191cGRhdGVkY29scyA9IHVwZGF0ZWRDb2xzOwogCWZvciAoaSA9IDA7IGkg PCB0cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKQEAgLTMxNTcsNiArMzE2Myw3IEBAIEV4 ZWNJUlVwZGF0ZVRyaWdnZXJzKEVTdGF0ZSAqZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxp bmZvLAogCQlUUklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfSU5TVEVBRDsK IAlMb2NUcmlnZ2VyRGF0YS50Z19yZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVz YzsKKwlMb2NUcmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRp b25PZjsKIAogCUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKHRyaWd0dXBsZSwgb2xkc2xvdCwg ZmFsc2UpOwogCkBAIC0zNjIzLDYgKzM2MzAsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZnRlclRy aWdnZXJTaGFyZWREYXRhCiAJT2lkCQkJYXRzX3Rnb2lkOwkJLyogdGhlIHRyaWdnZXIncyBJ RCAqLwogCU9pZAkJCWF0c19yZWxpZDsJCS8qIHRoZSByZWxhdGlvbiBpdCdzIG9uICovCiAJ Q29tbWFuZElkCWF0c19maXJpbmdfaWQ7CS8qIElEIGZvciBmaXJpbmcgY3ljbGUgKi8KKwlG b3JQb3J0aW9uT2ZTdGF0ZSAqZm9yX3BvcnRpb25fb2Y7CS8qIHRoZSBGT1IgUE9SVElPTiBP RiBjbGF1c2UgKi8KIAlzdHJ1Y3QgQWZ0ZXJUcmlnZ2Vyc1RhYmxlRGF0YSAqYXRzX3RhYmxl OwkvKiB0cmFuc2l0aW9uIHRhYmxlIGFjY2VzcyAqLwogCUJpdG1hcHNldCAgKmF0c19tb2Rp ZmllZGNvbHM7CS8qIG1vZGlmaWVkIGNvbHVtbnMgKi8KIH0gQWZ0ZXJUcmlnZ2VyU2hhcmVk RGF0YTsKQEAgLTM4OTYsNiArMzkwNCw3IEBAIHN0YXRpYyBTZXRDb25zdHJhaW50U3RhdGUg U2V0Q29uc3RyYWludFN0YXRlQ3JlYXRlKGludCBudW1hbGxvYyk7CiBzdGF0aWMgU2V0Q29u c3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNvcHkoU2V0Q29uc3RyYWludFN0YXRl IG9yaWdzdGF0ZSk7CiBzdGF0aWMgU2V0Q29uc3RyYWludFN0YXRlIFNldENvbnN0cmFpbnRT dGF0ZUFkZEl0ZW0oU2V0Q29uc3RyYWludFN0YXRlIHN0YXRlLAogCQkJCQkJCQkJCQkJCU9p ZCB0Z29pZCwgYm9vbCB0Z2lzZGVmZXJyZWQpOworc3RhdGljIEZvclBvcnRpb25PZlN0YXRl ICpDb3B5Rm9yUG9ydGlvbk9mU3RhdGUoRm9yUG9ydGlvbk9mU3RhdGUgKnNyYyk7CiBzdGF0 aWMgdm9pZCBjYW5jZWxfcHJpb3Jfc3RtdF90cmlnZ2VycyhPaWQgcmVsaWQsIENtZFR5cGUg Y21kVHlwZSwgaW50IHRnZXZlbnQpOwogCiAKQEAgLTQxMDUsNiArNDExNCw3IEBAIGFmdGVy VHJpZ2dlckFkZEV2ZW50KEFmdGVyVHJpZ2dlckV2ZW50TGlzdCAqZXZlbnRzLAogCQkJbmV3 c2hhcmVkLT5hdHNfcmVsaWQgPT0gZXZ0c2hhcmVkLT5hdHNfcmVsaWQgJiYKIAkJCW5ld3No YXJlZC0+YXRzX2V2ZW50ID09IGV2dHNoYXJlZC0+YXRzX2V2ZW50ICYmCiAJCQluZXdzaGFy ZWQtPmF0c190YWJsZSA9PSBldnRzaGFyZWQtPmF0c190YWJsZSAmJgorCQkJbmV3c2hhcmVk LT5mb3JfcG9ydGlvbl9vZiA9PSBldnRzaGFyZWQtPmZvcl9wb3J0aW9uX29mICYmCiAJCQlu ZXdzaGFyZWQtPmF0c19maXJpbmdfaWQgPT0gMCkKIAkJCWJyZWFrOwogCX0KQEAgLTQ0Njks NiArNDQ3OSw3IEBAIEFmdGVyVHJpZ2dlckV4ZWN1dGUoRVN0YXRlICplc3RhdGUsCiAJTG9j VHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWw7CiAJaWYgKFRSSUdHRVJfRk9SX1VQREFU RShMb2NUcmlnZ2VyRGF0YS50Z190cmlnZ2VyLT50Z3R5cGUpKQogCQlMb2NUcmlnZ2VyRGF0 YS50Z191cGRhdGVkY29scyA9IGV2dHNoYXJlZC0+YXRzX21vZGlmaWVkY29sczsKKwlMb2NU cmlnZ2VyRGF0YS50Z190ZW1wb3JhbCA9IGV2dHNoYXJlZC0+Zm9yX3BvcnRpb25fb2Y7CiAK IAlNZW1vcnlDb250ZXh0UmVzZXQocGVyX3R1cGxlX2NvbnRleHQpOwogCkBAIC02MDA1LDYg KzYwMTYsNDMgQEAgQWZ0ZXJUcmlnZ2VyUGVuZGluZ09uUmVsKE9pZCByZWxpZCkKIAlyZXR1 cm4gZmFsc2U7CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZlN0YXRlKCkK KyAqCisgKiBDb3BpZXMgYSBGb3JQb3J0aW9uT2ZTdGF0ZSBpbnRvIHRoZSBjdXJyZW50IG1l bW9yeSBjb250ZXh0LgorICovCitzdGF0aWMgRm9yUG9ydGlvbk9mU3RhdGUgKgorQ29weUZv clBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMpCit7CisJRm9yUG9ydGlv bk9mU3RhdGUgKmRzdCA9IE5VTEw7CisJaWYgKHNyYykgeworCQlNZW1vcnlDb250ZXh0IG9s ZGN0eDsKKwkJUmFuZ2VUeXBlICpyOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisK KwkJLyoKKwkJICogTmVlZCB0byBsaWZ0IHRoZSBGT1IgUE9SVElPTiBPRiBkZXRhaWxzIGlu dG8gYSBoaWdoZXIgbWVtb3J5IGNvbnRleHQKKwkJICogYmVjYXVzZSBjYXNjYWRpbmcgZm9y ZWlnbiBrZXkgdXBkYXRlL2RlbGV0ZXMgY2FuIGNhdXNlIHRyaWdnZXJzIHRvIGZpcmUKKwkJ ICogdHJpZ2dlcnMsIGFuZCB0aGUgQWZ0ZXJUcmlnZ2VyRXZlbnRzIHdpbGwgb3V0bGl2ZSB0 aGUgRlBPCisJCSAqIGRldGFpbHMgb2YgdGhlIG9yaWdpbmFsIHF1ZXJ5LgorCQkgKi8KKwkJ b2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKFRvcFRyYW5zYWN0aW9uQ29udGV4dCk7 CisJCWRzdCA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZHN0LT5mcF9yYW5n ZU5hbWUgPSBwc3RyZHVwKHNyYy0+ZnBfcmFuZ2VOYW1lKTsKKwkJZHN0LT5mcF9yYW5nZVR5 cGUgPSBzcmMtPmZwX3JhbmdlVHlwZTsKKwkJZHN0LT5mcF9oYXNQZXJpb2QgPSBzcmMtPmZw X2hhc1BlcmlvZDsKKwkJZHN0LT5mcF9yYW5nZUF0dG5vID0gc3JjLT5mcF9yYW5nZUF0dG5v OworCQlkc3QtPmZwX3BlcmlvZFN0YXJ0QXR0bm8gPSBzcmMtPmZwX3BlcmlvZFN0YXJ0QXR0 bm87CisJCWRzdC0+ZnBfcGVyaW9kRW5kQXR0bm8gPSBzcmMtPmZwX3BlcmlvZEVuZEF0dG5v OworCisJCXIgPSBEYXR1bUdldFJhbmdlVHlwZVAoc3JjLT5mcF90YXJnZXRSYW5nZSk7CisJ CXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUoUmFuZ2VUeXBlR2V0T2lkKHIpLCBUWVBF Q0FDSEVfUkFOR0VfSU5GTyk7CisJCWRzdC0+ZnBfdGFyZ2V0UmFuZ2UgPSBkYXR1bUNvcHko c3JjLT5mcF90YXJnZXRSYW5nZSwgdHlwY2FjaGUtPnR5cGJ5dmFsLCB0eXBjYWNoZS0+dHlw bGVuKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJfQorCXJldHVybiBk c3Q7Cit9CisKIC8qIC0tLS0tLS0tLS0KICAqIEFmdGVyVHJpZ2dlclNhdmVFdmVudCgpCiAg KgpAQCAtNjQyMCw2ICs2NDY4LDcgQEAgQWZ0ZXJUcmlnZ2VyU2F2ZUV2ZW50KEVTdGF0ZSAq ZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogCQllbHNlCiAJCQluZXdfc2hhcmVk LmF0c190YWJsZSA9IE5VTEw7CiAJCW5ld19zaGFyZWQuYXRzX21vZGlmaWVkY29scyA9IGFm dGVyVHJpZ2dlckNvcHlCaXRtYXAobW9kaWZpZWRDb2xzKTsKKwkJbmV3X3NoYXJlZC5mb3Jf cG9ydGlvbl9vZiA9IENvcHlGb3JQb3J0aW9uT2ZTdGF0ZShyZWxpbmZvLT5yaV9mb3JQb3J0 aW9uT2YpOwogCiAJCWFmdGVyVHJpZ2dlckFkZEV2ZW50KCZhZnRlclRyaWdnZXJzLnF1ZXJ5 X3N0YWNrW2FmdGVyVHJpZ2dlcnMucXVlcnlfZGVwdGhdLmV2ZW50cywKIAkJCQkJCQkgJm5l d19ldmVudCwgJm5ld19zaGFyZWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXgg NGM1YTdiYmY2Mi4uNjkwOTZjYmVmYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCkBA IC0xMjc0LDYgKzEyNzQsNyBAQCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpy ZXN1bHRSZWxJbmZvLAogCXJlc3VsdFJlbEluZm8tPnJpX3Byb2plY3RSZXR1cm5pbmcgPSBO VUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX29uQ29uZmxpY3RBcmJpdGVySW5kZXhlcyA9IE5J TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0ID0gTlVMTDsKKwlyZXN1bHRSZWxJ bmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1JldHVy bmluZ1Nsb3QgPSBOVUxMOwogCXJlc3VsdFJlbEluZm8tPnJpX1RyaWdPbGRTbG90ID0gTlVM TDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnTmV3U2xvdCA9IE5VTEw7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDUwMDVkOGMwZDEuLjkyZDY2MTFm NTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC02MSw2 ICs2MSw5IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGls cy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRp bHMvcGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMvcmFuZ2V0eXBlcy5oIgorI2luY2x1ZGUg InV0aWxzL2xzeXNjYWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCiAKQEAgLTE0 MSw2ICsxNDQsMTAgQEAgc3RhdGljIGJvb2wgRXhlY09uQ29uZmxpY3RVcGRhdGUoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKmV4Y2x1 ZGVkU2xvdCwKIAkJCQkJCQkJIGJvb2wgY2FuU2V0VGFnLAogCQkJCQkJCQkgVHVwbGVUYWJs ZVNsb3QgKipyZXR1cm5pbmcpOworc3RhdGljIHZvaWQgRXhlY0ZvclBvcnRpb25PZkxlZnRv dmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCisJCQkJCQkJCQkgIEVTdGF0ZSAq ZXN0YXRlLAorCQkJCQkJCQkJICBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJ CQkJCQkJICBJdGVtUG9pbnRlciB0dXBsZWlkKTsKIHN0YXRpYyBUdXBsZVRhYmxlU2xvdCAq RXhlY1ByZXBhcmVUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJ CQkJCQkJCQkJICAgRVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkJCSAgIFBhcnRpdGlvblR1 cGxlUm91dGluZyAqcHJvdXRlLApAQCAtMTIwNSw2ICsxMjEyLDEzOCBAQCBFeGVjSW5zZXJ0 KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcworICoKKyAqCQlT YXZlcyB0aGUgbmV3IGJvdW5kcyBpbnRvIHRoZSByYW5nZSBhdHRyaWJ1dGUKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAqLworc3RhdGljIHZvaWQgc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhUdXBs ZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZSwKKwkJCQkJCQkJCSAgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJICBUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUs CisJCQkJCQkJCQkgIFJhbmdlVHlwZSAqbGVmdG92ZXJSYW5nZVR5cGUpCit7CisJLyogU3Rv cmUgdGhlIHJhbmdlIGRpcmVjdGx5ICovCisKKwlsZWZ0b3ZlclR1cGxlLT50dHNfdmFsdWVz W2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBSYW5nZVR5cGVQR2V0 RGF0dW0obGVmdG92ZXJSYW5nZVR5cGUpOworCWxlZnRvdmVyVHVwbGUtPnR0c19pc251bGxb Zm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8gLSAxXSA9IGZhbHNlOworfQorCisv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKgkJRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycworICoKKyAqCQlJ bnNlcnQgdHVwbGVzIGZvciB0aGUgdW50b3VjaGVkIHRpbWVzdGFtcCBvZiBhIHJvdyBpbiBh IEZPUgorICoJCVBPUlRJT04gT0YgVVBEQVRFL0RFTEVURQorICogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICov CitzdGF0aWMgdm9pZAorRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhNb2RpZnlUYWJsZUNv bnRleHQgKmNvbnRleHQsCisJCQkJCQkgIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJICBSZXN1 bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJICBJdGVtUG9pbnRlciB0dXBsZWlk KQoreworCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUgPSBjb250ZXh0LT5tdHN0YXRlOwor CU1vZGlmeVRhYmxlICpub2RlID0gKE1vZGlmeVRhYmxlICopIG10c3RhdGUtPnBzLnBsYW47 CisJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIg Kikgbm9kZS0+Zm9yUG9ydGlvbk9mOworCURhdHVtIG9sZFJhbmdlOworCVJhbmdlVHlwZSAq b2xkUmFuZ2VUeXBlOworCVJhbmdlVHlwZSAqdGFyZ2V0UmFuZ2VUeXBlOworCVJhbmdlVHlw ZSAqbGVmdG92ZXJSYW5nZVR5cGUxOworCVJhbmdlVHlwZSAqbGVmdG92ZXJSYW5nZVR5cGUy OworCU9pZCByYW5nZVR5cGVPaWQgPSBmb3JQb3J0aW9uT2YtPnJhbmdlVHlwZTsKKwlib29s IGlzTnVsbCA9IGZhbHNlOworCVR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZTsKKwlGb3JQb3J0 aW9uT2ZTdGF0ZSAqZnBvU3RhdGUgPSByZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2Y7 CisJVHVwbGVUYWJsZVNsb3QgKm9sZHR1cGxlU2xvdCA9IGZwb1N0YXRlLT5mcF9FeGlzdGlu ZzsKKwlUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZTEgPSBmcG9TdGF0ZS0+ZnBfTGVm dG92ZXIxOworCVR1cGxlVGFibGVTbG90ICpsZWZ0b3ZlclR1cGxlMiA9IGZwb1N0YXRlLT5m cF9MZWZ0b3ZlcjI7CisKKwkvKgorCSAqIEdldCB0aGUgcmFuZ2Ugb2YgdGhlIG9sZCBwcmUt VVBEQVRFL0RFTEVURSB0dXBsZSwKKwkgKiBzbyB3ZSBjYW4gaW50ZXJzZWN0IGl0IHdpdGgg dGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdldAorCSAqIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFu eSAibGVmdG92ZXJzIiB0byBpbnNlcnQuCisJICoKKwkgKiBXZSBoYXZlIGFscmVhZHkgbG9j a2VkIHRoZSB0dXBsZSBpbiBFeGVjVXBkYXRlL0V4ZWNEZWxldGUKKwkgKiAoVE9ETzogaWYg aXQgd2FzICpub3QqIGNvbmN1cnJlbnRseSB1cGRhdGVkLCBkb2VzIHRhYmxlX3R1cGxlX3Vw ZGF0ZSBsb2NrIHRoZSB0dXBsZSBpdHNlbGY/CisJICogSSBkb24ndCBmb3VuZCB0aGUgY29k ZSBmb3IgdGhhdCB5ZXQsIGFuZCBtYXliZSBpdCBkZXBlbmRzIG9uIHRoZSBBTT8pCisJICog YW5kIGl0IGhhcyBwYXNzZWQgRXZhbFBsYW5RdWFsLgorCSAqIE1ha2Ugc3VyZSB3ZSdyZSBs b29raW5nIGF0IHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uLgorCSAqIE90aGVyd2lzZSBjb25j dXJyZW50IHVwZGF0ZXMgb2YgdGhlIHNhbWUgdHVwbGUgaW4gUkVBRCBDT01NSVRURUQKKwkg KiBjb3VsZCBpbnNlcnQgY29uZmxpY3RpbmcgImxlZnRvdmVycyIuCisJICovCisJaWYgKCF0 YWJsZV90dXBsZV9mZXRjaF9yb3dfdmVyc2lvbihyZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlv bkRlc2MsIHR1cGxlaWQsIFNuYXBzaG90QW55LCBvbGR0dXBsZVNsb3QpKQorCQllbG9nKEVS Uk9SLCAiZmFpbGVkIHRvIGZldGNoIHR1cGxlIGZvciBGT1IgUE9SVElPTiBPRiIpOworCisJ b2xkUmFuZ2UgPSBzbG90X2dldGF0dHIob2xkdHVwbGVTbG90LCBmb3JQb3J0aW9uT2YtPnJh bmdlVmFyLT52YXJhdHRubywgJmlzTnVsbCk7CisKKwlpZiAoaXNOdWxsKQorCQllbG9nKEVS Uk9SLCAiZm91bmQgYSBOVUxMIHJhbmdlIGluIGEgdGVtcG9yYWwgdGFibGUiKTsKKwlvbGRS YW5nZVR5cGUgPSBEYXR1bUdldFJhbmdlVHlwZVAob2xkUmFuZ2UpOworCisJLyogR2V0IHRo ZSB0YXJnZXQgcmFuZ2UuICovCisKKwl0YXJnZXRSYW5nZVR5cGUgPSBEYXR1bUdldFJhbmdl VHlwZVAoZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlKTsKKworCS8qCisJICogR2V0IHRoZSBy YW5nZSdzIHR5cGUgY2FjaGUgZW50cnkuIFRoaXMgaXMgd29ydGggY2FjaGluZyBmb3IgdGhl IHdob2xlIFVQREFURQorCSAqIGxpa2UgcmFuZ2UgZnVuY3Rpb25zIGRvLgorCSAqLworCisJ dHlwY2FjaGUgPSBmcG9TdGF0ZS0+ZnBfcmFuZ2V0eXBjYWNoZTsKKwlpZiAodHlwY2FjaGUg PT0gTlVMTCkKKwl7CisJCXR5cGNhY2hlID0gbG9va3VwX3R5cGVfY2FjaGUocmFuZ2VUeXBl T2lkLCBUWVBFQ0FDSEVfUkFOR0VfSU5GTyk7CisJCWlmICh0eXBjYWNoZS0+cm5nZWxlbXR5 cGUgPT0gTlVMTCkKKwkJCWVsb2coRVJST1IsICJ0eXBlICV1IGlzIG5vdCBhIHJhbmdlIHR5 cGUiLCByYW5nZVR5cGVPaWQpOworCQlmcG9TdGF0ZS0+ZnBfcmFuZ2V0eXBjYWNoZSA9IHR5 cGNhY2hlOworCX0KKworCS8qIEdldCB0aGUgcmFuZ2VzIHRvIHRoZSBsZWZ0L3JpZ2h0IG9m IHRoZSB0YXJnZXRlZCByYW5nZS4gKi8KKworCXJhbmdlX2xlZnRvdmVyX2ludGVybmFsKHR5 cGNhY2hlLCBvbGRSYW5nZVR5cGUsIHRhcmdldFJhbmdlVHlwZSwgJmxlZnRvdmVyUmFuZ2VU eXBlMSwKKwkJCSZsZWZ0b3ZlclJhbmdlVHlwZTIpOworCisJLyoKKwkgKiBJbnNlcnQgYSBj b3B5IG9mIHRoZSB0dXBsZSB3aXRoIHRoZSBsb3dlciBsZWZ0b3ZlciByYW5nZS4KKwkgKiBF dmVuIGlmIHRoZSB0YWJsZSBpcyBwYXJ0aXRpb25lZCwKKwkgKiBvdXIgaW5zZXJ0IHdvbid0 IGV4dGVuZCBwYXN0IHRoZSBjdXJyZW50IHJvdywgc28gd2UgZG9uJ3QgbmVlZCB0byByZS1y b3V0ZS4KKwkgKiBUT0RPOiBSZWFsbHk/IFdoYXQgaWYgeW91IHVwZGF0ZSB0aGUgcGFydGl0 aW9uIGtleT8KKwkgKi8KKworCWlmICghUmFuZ2VJc0VtcHR5KGxlZnRvdmVyUmFuZ2VUeXBl MSkpCisJeworCQkvLyBUT0RPOiBhbnl0aGluZyB3ZSBuZWVkIHRvIGNsZWFyIGhlcmU/CisJ CS8vIEFyZSB3ZSBpbiB0aGUgcm93IGNvbnRleHQ/CisJCUhlYXBUdXBsZSBvbGR0dXBsZSA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUob2xkdHVwbGVTbG90LCBmYWxzZSwgTlVMTCk7CisJ CUV4ZWNGb3JjZVN0b3JlSGVhcFR1cGxlKG9sZHR1cGxlLCBsZWZ0b3ZlclR1cGxlMSwgZmFs c2UpOworCisJCXNldF9sZWZ0b3Zlcl90dXBsZV9ib3VuZHMobGVmdG92ZXJUdXBsZTEsIGZv clBvcnRpb25PZiwgdHlwY2FjaGUsIGxlZnRvdmVyUmFuZ2VUeXBlMSk7CisJCUV4ZWNNYXRl cmlhbGl6ZVNsb3QobGVmdG92ZXJUdXBsZTEpOworCisJCS8vIFRPRE86IE5lZWQgdG8gc2F2 ZSBjb250ZXh0LT5tdHN0YXRlLT5tdF90cmFuc2l0aW9uX2NhcHR1cmU/IChTZWUgY29tbWVu dCBvbiBFeGVjSW5zZXJ0KQorCQlFeGVjSW5zZXJ0KGNvbnRleHQsIHJlc3VsdFJlbEluZm8s IGxlZnRvdmVyVHVwbGUxLCBub2RlLT5jYW5TZXRUYWcsIE5VTEwsIE5VTEwpOworCX0KKwor CS8qCisJICogSW5zZXJ0IGEgY29weSBvZiB0aGUgdHVwbGUgd2l0aCB0aGUgdXBwZXIgbGVm dG92ZXIgcmFuZ2UKKwkgKiBFdmVuIGlmIHRoZSB0YWJsZSBpcyBwYXJ0aXRpb25lZCwKKwkg KiBvdXIgaW5zZXJ0IHdvbid0IGV4dGVuZCBwYXN0IHRoZSBjdXJyZW50IHJvdywgc28gd2Ug ZG9uJ3QgbmVlZCB0byByZS1yb3V0ZS4KKwkgKiBUT0RPOiBSZWFsbHk/IFdoYXQgaWYgeW91 IHVwZGF0ZSB0aGUgcGFydGl0aW9uIGtleT8KKwkgKi8KKworCWlmICghUmFuZ2VJc0VtcHR5 KGxlZnRvdmVyUmFuZ2VUeXBlMikpCisJeworCQlIZWFwVHVwbGUgb2xkdHVwbGUgPSBFeGVj RmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1cGxlU2xvdCwgZmFsc2UsIE5VTEwpOworCQlFeGVj Rm9yY2VTdG9yZUhlYXBUdXBsZShvbGR0dXBsZSwgbGVmdG92ZXJUdXBsZTIsIGZhbHNlKTsK KworCQlzZXRfbGVmdG92ZXJfdHVwbGVfYm91bmRzKGxlZnRvdmVyVHVwbGUyLCBmb3JQb3J0 aW9uT2YsIHR5cGNhY2hlLCBsZWZ0b3ZlclJhbmdlVHlwZTIpOworCQlFeGVjTWF0ZXJpYWxp emVTbG90KGxlZnRvdmVyVHVwbGUyKTsKKworCQkvLyBUT0RPOiBOZWVkIHRvIHNhdmUgY29u dGV4dC0+bXRzdGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlPyAoU2VlIGNvbW1lbnQgb24g RXhlY0luc2VydCkKKwkJRXhlY0luc2VydChjb250ZXh0LCByZXN1bHRSZWxJbmZvLCBsZWZ0 b3ZlclR1cGxlMiwgbm9kZS0+Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsKKwl9Cit9CisKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqCQlFeGVjQmF0Y2hJbnNlcnQKICAqCkBAIC0xMzU3LDcgKzE0OTYs OCBAQCBFeGVjRGVsZXRlQWN0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKICAqCiAgKiBDbG9zaW5nIHN0ZXBzIG9mIHR1cGxl IGRlbGV0aW9uOyB0aGlzIGludm9rZXMgQUZURVIgRk9SIEVBQ0ggUk9XIHRyaWdnZXJzLAog ICogaW5jbHVkaW5nIHRoZSBVUERBVEUgdHJpZ2dlcnMgaWYgdGhlIGRlbGV0aW9uIGlzIGJl aW5nIGRvbmUgYXMgcGFydCBvZiBhCi0gKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4K KyAqIGNyb3NzLXBhcnRpdGlvbiB0dXBsZSBtb3ZlLiBJdCBhbHNvIGluc2VydHMgbGVmdG92 ZXJzIGZyb20gYSBGT1IgUE9SVElPTiBPRgorICogZGVsZXRlLgogICovCiBzdGF0aWMgdm9p ZAogRXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKQEAgLTEzOTAsNiArMTUzMCwxMSBAQCBFeGVj RGVsZXRlRXBpbG9ndWUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LCBSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvLAogCQlhcl9kZWxldGVfdHJpZ190Y3MgPSBOVUxMOwogCX0K IAorCS8qIENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICovCisJLy8gVE9E TzogU2tpcCB0aGlzIGZvciBGRFcgZGVsZXRlcz8KKwlpZiAoKChNb2RpZnlUYWJsZSAqKSBj b250ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlFeGVjRm9yUG9y dGlvbk9mTGVmdG92ZXJzKGNvbnRleHQsIGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVp ZCk7CisKIAkvKiBBRlRFUiBST1cgREVMRVRFIFRyaWdnZXJzICovCiAJRXhlY0FSRGVsZXRl VHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLCB0dXBsZWlkLCBvbGR0dXBsZSwKIAkJ CQkJCSBhcl9kZWxldGVfdHJpZ190Y3MsIGNoYW5naW5nUGFydCk7CkBAIC0yMTMzLDYgKzIy NzgsMTEgQEAgRXhlY1VwZGF0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwgVXBkYXRlQ29udGV4dCAqdXBkYXRlQ3h0LAogCQkJCQkJCQkJCQkgICBOVUxMLCBOSUws CiAJCQkJCQkJCQkJCSAgICh1cGRhdGVDeHQtPnVwZGF0ZUluZGV4ZXMgPT0gVFVfU3VtbWFy aXppbmcpKTsKIAorCS8qIENvbXB1dGUgbGVmdG92ZXJzIGluIEZPUiBQT1JUSU9OIE9GICov CisJLy8gVE9ETzogU2tpcCB0aGlzIGZvciBGRFcgdXBkYXRlcz8KKwlpZiAoKChNb2RpZnlU YWJsZSAqKSBjb250ZXh0LT5tdHN0YXRlLT5wcy5wbGFuKS0+Zm9yUG9ydGlvbk9mKQorCQlF eGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKGNvbnRleHQsIGNvbnRleHQtPmVzdGF0ZSwgcmVz dWx0UmVsSW5mbywgdHVwbGVpZCk7CisKIAkvKiBBRlRFUiBST1cgVVBEQVRFIFRyaWdnZXJz ICovCiAJRXhlY0FSVXBkYXRlVHJpZ2dlcnMoY29udGV4dC0+ZXN0YXRlLCByZXN1bHRSZWxJ bmZvLAogCQkJCQkJIE5VTEwsIE5VTEwsCkBAIC0zNjEwLDYgKzM3NjAsNyBAQCBFeGVjTW9k aWZ5VGFibGUoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqIFJlc2V0IHBlci10dXBsZSBtZW1v cnkgY29udGV4dCB1c2VkIGZvciBwcm9jZXNzaW5nIG9uIGNvbmZsaWN0IGFuZAogCQkgKiBy ZXR1cm5pbmcgY2xhdXNlcywgdG8gZnJlZSBhbnkgZXhwcmVzc2lvbiBldmFsdWF0aW9uIHN0 b3JhZ2UKIAkJICogYWxsb2NhdGVkIGluIHRoZSBwcmV2aW91cyBjeWNsZS4KKwkJICogVE9E TzogSXQgc291bmRzIGxpa2UgRk9SIFBPUlRJT04gT0YgbWlnaHQgbmVlZCB0byBkbyBzb21l dGhpbmcgaGVyZSB0b28/CiAJCSAqLwogCQlpZiAocHN0YXRlLT5wc19FeHByQ29udGV4dCkK IAkJCVJlc2V0RXhwckNvbnRleHQocHN0YXRlLT5wc19FeHByQ29udGV4dCk7CkBAIC00Mjgy LDYgKzQ0MzMsNzUgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwg RVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJCX0KIAl9CiAKKwkvKgorCSAqIElmIG5l ZWRlZCwgaW5pdGlhbGl6ZSB0aGUgdGFyZ2V0IHJhbmdlIGZvciBGT1IgUE9SVElPTiBPRi4K KwkgKi8KKwlpZiAobm9kZS0+Zm9yUG9ydGlvbk9mKQorCXsKKwkJVHVwbGVEZXNjIHR1cERl c2M7CisJCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwkJRGF0dW0JdGFyZ2V0 UmFuZ2U7CisJCWJvb2wJaXNOdWxsOworCQlFeHByQ29udGV4dCAqZWNvbnRleHQ7CisJCUV4 cHJTdGF0ZSAqZXhwclN0YXRlOworCQlGb3JQb3J0aW9uT2ZTdGF0ZSAqZnBvU3RhdGU7CisK KwkJcmVzdWx0UmVsSW5mbyA9IG10c3RhdGUtPnJlc3VsdFJlbEluZm87CisJCXR1cERlc2Mg PSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MtPnJkX2F0dDsKKwkJZm9yUG9ydGlv bk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZS0+Zm9yUG9ydGlvbk9mOworCisJCS8q IEV2YWwgdGhlIEZPUiBQT1JUSU9OIE9GIHRhcmdldCAqLworCQlpZiAobXRzdGF0ZS0+cHMu cHNfRXhwckNvbnRleHQgPT0gTlVMTCkKKwkJCUV4ZWNBc3NpZ25FeHByQ29udGV4dChlc3Rh dGUsICZtdHN0YXRlLT5wcyk7CisJCWVjb250ZXh0ID0gbXRzdGF0ZS0+cHMucHNfRXhwckNv bnRleHQ7CisKKwkJZXhwclN0YXRlID0gRXhlY1ByZXBhcmVFeHByKChFeHByICopIGZvclBv cnRpb25PZi0+dGFyZ2V0UmFuZ2UsIGVzdGF0ZSk7CisJCXRhcmdldFJhbmdlID0gRXhlY0V2 YWxFeHByKGV4cHJTdGF0ZSwgZWNvbnRleHQsICZpc051bGwpOworCQlpZiAoaXNOdWxsKQor CQkJZWxvZyhFUlJPUiwgIkdvdCBhIE5VTEwgRk9SIFBPUlRJT04gT0YgdGFyZ2V0IHJhbmdl Iik7CisKKwkJLyogQ3JlYXRlIHN0YXRlIGZvciBGT1IgUE9SVElPTiBPRiBvcGVyYXRpb24g Ki8KKworCQlmcG9TdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKwkJZnBv U3RhdGUtPmZwX3JhbmdlTmFtZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZTsKKwkJZnBv U3RhdGUtPmZwX3JhbmdlVHlwZSA9IGZvclBvcnRpb25PZi0+cmFuZ2VUeXBlOworCQlmcG9T dGF0ZS0+ZnBfcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5v OworCQlmcG9TdGF0ZS0+ZnBfdGFyZ2V0UmFuZ2UgPSB0YXJnZXRSYW5nZTsKKworCQkvKiBJ bml0aWFsaXplIHNsb3QgZm9yIHRoZSBleGlzdGluZyB0dXBsZSAqLworCisJCWZwb1N0YXRl LT5mcF9FeGlzdGluZyA9CisJCQl0YWJsZV9zbG90X2NyZWF0ZShyZXN1bHRSZWxJbmZvLT5y aV9SZWxhdGlvbkRlc2MsCisJCQkJCQkJICAmbXRzdGF0ZS0+cHMuc3RhdGUtPmVzX3R1cGxl VGFibGUpOworCisJCS8qIENyZWF0ZSB0aGUgdHVwbGUgc2xvdHMgZm9yIElOU0VSVGluZyB0 aGUgbGVmdG92ZXJzICovCisKKwkJZnBvU3RhdGUtPmZwX0xlZnRvdmVyMSA9CisJCQlFeGVj SW5pdEV4dHJhVHVwbGVTbG90KG10c3RhdGUtPnBzLnN0YXRlLCB0dXBEZXNjLCAmVFRTT3Bz VmlydHVhbCk7CisJCWZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjIgPQorCQkJRXhlY0luaXRFeHRy YVR1cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVzYywgJlRUU09wc1ZpcnR1YWwp OworCisJCS8qCisJCSAqIFdlIG11c3QgYXR0YWNoIHRoZSBGb3JQb3J0aW9uT2ZTdGF0ZSB0 byBhbGwgcmVzdWx0IHJlbHMsCisJCSAqIGluIGNhc2Ugb2YgYSBjcm9zcy1wYXJ0aXRpb24g dXBkYXRlIG9yIHRyaWdnZXJzIGZpcmluZworCQkgKiBvbiBwYXJ0aXRpb25zLgorCQkgKgor CQkgKiBUaGV5IHNob3VsZCBhbGwgaGF2ZSB0aGUgc2FtZSB0dXBsZWRlc2MsIHNvIGl0J3Mg b2theQorCQkgKiB0aGF0IGFueSBvbmUgb2YgdGhlbSBjYW4gdXNlIHRoZSB0dXBsZSB0YWJs ZSBzbG90cyB0aGVyZS4KKwkJICovCisJCWZvciAoaSA9IDA7IGkgPCBucmVsczsgaSsrKQor CQl7CisJCQlyZXN1bHRSZWxJbmZvID0gJm10c3RhdGUtPnJlc3VsdFJlbEluZm9baV07CisJ CQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBmcG9TdGF0ZTsKKwkJfQorCisJ CS8qIE1ha2Ugc3VyZSB0aGUgcm9vdCByZWxhdGlvbiBoYXMgdGhlIEZPUiBQT1JUSU9OIE9G IGNsYXVzZSB0b28uICovCisJCWlmIChub2RlLT5yb290UmVsYXRpb24gPiAwKQorCQkJbXRz dGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8tPnJpX2ZvclBvcnRpb25PZiA9IGZwb1N0YXRlOwor CisJCS8qIERvbid0IGZyZWUgdGhlIEV4cHJDb250ZXh0IGhlcmUgYmVjYXVzZSB0aGUgcmVz dWx0IG11c3QgbGFzdCBmb3IgdGhlIHdob2xlIHF1ZXJ5ICovCisJfQorCiAJLyoKIAkgKiBJ ZiB3ZSBoYXZlIGFueSBzZWNvbmRhcnkgcmVsYXRpb25zIGluIGFuIFVQREFURSBvciBERUxF VEUsIHRoZXkgbmVlZCB0bwogCSAqIGJlIHRyZWF0ZWQgbGlrZSBub24tbG9ja2VkIHJlbGF0 aW9ucyBpbiBTRUxFQ1QgRk9SIFVQREFURSwgaWUsIHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwppbmRleCBjMDNmNGYyM2UyLi42MmNjYmY5ZDNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9ub2RlRnVuY3Mu YwpAQCAtMjQ0Miw2ICsyNDQyLDE0IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChO b2RlICpub2RlLAogCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNl IFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQ b3J0aW9uT2YgPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCisJCQkJaWYgKFdBTEso Zm9yUG9ydGlvbk9mLT50YXJnZXRSYW5nZSkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQor CQkJYnJlYWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQ YXJ0aXRpb25QcnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICop IG5vZGU7CkBAIC0yNTgyLDYgKzI1OTAsOCBAQCBxdWVyeV90cmVlX3dhbGtlcl9pbXBsKFF1 ZXJ5ICpxdWVyeSwKIAkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPm1lcmdlQWN0 aW9uTGlzdCkpCiAJCXJldHVybiB0cnVlOworCWlmIChXQUxLKHF1ZXJ5LT5mb3JQb3J0aW9u T2YpKQorCQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+cmV0dXJuaW5nTGlzdCkp CiAJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5qb2ludHJlZSkpCkBAIC0zNDI1 LDYgKzM0MzUsMTkgQEAgZXhwcmVzc2lvbl90cmVlX211dGF0b3JfaW1wbChOb2RlICpub2Rl LAogCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwogCQkJfQogCQkJYnJlYWs7CisJCWNh c2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgorCQkJeworCQkJCUZvclBvcnRpb25PZkV4cHIgKmZw byA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGU7CisJCQkJRm9yUG9ydGlvbk9mRXhwciAq bmV3bm9kZTsKKworCQkJCUZMQVRDT1BZKG5ld25vZGUsIGZwbywgRm9yUG9ydGlvbk9mRXhw cik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnJhbmdlVmFyLCBmcG8tPnJhbmdlVmFyLCBWYXIg Kik7CisJCQkJTVVUQVRFKG5ld25vZGUtPnRhcmdldFJhbmdlLCBmcG8tPnRhcmdldFJhbmdl LCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVNldCwgZnBvLT5yYW5nZVNl dCwgTGlzdCAqKTsKKworCQkJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOworCQkJfQorCQkJ YnJlYWs7CiAJCWNhc2UgVF9QYXJ0aXRpb25QcnVuZVN0ZXBPcDoKIAkJCXsKIAkJCQlQYXJ0 aXRpb25QcnVuZVN0ZXBPcCAqb3BzdGVwID0gKFBhcnRpdGlvblBydW5lU3RlcE9wICopIG5v ZGU7CkBAIC0zNjAzLDYgKzM2MjYsNyBAQCBxdWVyeV90cmVlX211dGF0b3JfaW1wbChRdWVy eSAqcXVlcnksCiAJTVVUQVRFKHF1ZXJ5LT53aXRoQ2hlY2tPcHRpb25zLCBxdWVyeS0+d2l0 aENoZWNrT3B0aW9ucywgTGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPm9uQ29uZmxpY3QsIHF1 ZXJ5LT5vbkNvbmZsaWN0LCBPbkNvbmZsaWN0RXhwciAqKTsKIAlNVVRBVEUocXVlcnktPm1l cmdlQWN0aW9uTGlzdCwgcXVlcnktPm1lcmdlQWN0aW9uTGlzdCwgTGlzdCAqKTsKKwlNVVRB VEUocXVlcnktPmZvclBvcnRpb25PZiwgcXVlcnktPmZvclBvcnRpb25PZiwgRm9yUG9ydGlv bk9mRXhwciAqKTsKIAlNVVRBVEUocXVlcnktPnJldHVybmluZ0xpc3QsIHF1ZXJ5LT5yZXR1 cm5pbmdMaXN0LCBMaXN0ICopOwogCU1VVEFURShxdWVyeS0+am9pbnRyZWUsIHF1ZXJ5LT5q b2ludHJlZSwgRnJvbUV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5zZXRPcGVyYXRpb25zLCBx dWVyeS0+c2V0T3BlcmF0aW9ucywgTm9kZSAqKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2NyZWF0ZXBsYW4uYwppbmRleCAzNGNhNmQ0YWMyLi45NTRlYjRkYTgzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC0zMTEsNyArMzExLDgg QEAgc3RhdGljIE1vZGlmeVRhYmxlICptYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpy b290LCBQbGFuICpzdWJwbGFuLAogCQkJCQkJCQkJIExpc3QgKnVwZGF0ZUNvbG5vc0xpc3Rz LAogCQkJCQkJCQkJIExpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5p bmdMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9u Y29uZmxpY3QsCi0JCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgaW50IGVwcVBh cmFtKTsKKwkJCQkJCQkJCSBMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZF eHByICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJCQkgaW50IGVwcVBhcmFtKTsKIHN0YXRpYyBH YXRoZXJNZXJnZSAqY3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFuKFBsYW5uZXJJbmZvICpyb290 LAogCQkJCQkJCQkJCQkgR2F0aGVyTWVyZ2VQYXRoICpiZXN0X3BhdGgpOwogCkBAIC0yODM1 LDYgKzI4MzYsNyBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGxhbihQbGFubmVySW5mbyAqcm9v dCwgTW9kaWZ5VGFibGVQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkJYmVzdF9wYXRoLT5yb3dN YXJrcywKIAkJCQkJCQliZXN0X3BhdGgtPm9uY29uZmxpY3QsCiAJCQkJCQkJYmVzdF9wYXRo LT5tZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCWJlc3RfcGF0aC0+Zm9yUG9ydGlvbk9mLAog CQkJCQkJCWJlc3RfcGF0aC0+ZXBxUGFyYW0pOwogCiAJY29weV9nZW5lcmljX3BhdGhfaW5m bygmcGxhbi0+cGxhbiwgJmJlc3RfcGF0aC0+cGF0aCk7CkBAIC03MDA1LDcgKzcwMDcsOCBA QCBtYWtlX21vZGlmeXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAog CQkJCSBMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywKIAkJCQkgTGlzdCAqd2l0aENoZWNrT3B0 aW9uTGlzdHMsIExpc3QgKnJldHVybmluZ0xpc3RzLAogCQkJCSBMaXN0ICpyb3dNYXJrcywg T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlz dHMsIGludCBlcHFQYXJhbSkKKwkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCSBpbnQgZXBxUGFyYW0pCiB7CiAJTW9k aWZ5VGFibGUgKm5vZGUgPSBtYWtlTm9kZShNb2RpZnlUYWJsZSk7CiAJTGlzdAkgICAqZmR3 X3ByaXZhdGVfbGlzdDsKQEAgLTcwNzEsNiArNzA3NCw3IEBAIG1ha2VfbW9kaWZ5dGFibGUo UGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnN1YnBsYW4sCiAJCW5vZGUtPmV4Y2xSZWxUbGlz dCA9IG9uY29uZmxpY3QtPmV4Y2xSZWxUbGlzdDsKIAl9CiAJbm9kZS0+dXBkYXRlQ29sbm9z TGlzdHMgPSB1cGRhdGVDb2xub3NMaXN0czsKKwlub2RlLT5mb3JQb3J0aW9uT2YgPSAoTm9k ZSAqKSBmb3JQb3J0aW9uT2Y7CiAJbm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMgPSB3aXRo Q2hlY2tPcHRpb25MaXN0czsKIAlub2RlLT5yZXR1cm5pbmdMaXN0cyA9IHJldHVybmluZ0xp c3RzOwogCW5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9wbGFubmVyLmMKaW5kZXggNDRlZmIxZjRlYi4uYjJkOGE2N2Y0YyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtMTk2OSw2ICsxOTY5LDcgQEAgZ3Jv dXBpbmdfcGxhbm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9u KQogCQkJCQkJCQkJCXJvd01hcmtzLAogCQkJCQkJCQkJCXBhcnNlLT5vbkNvbmZsaWN0LAog CQkJCQkJCQkJCW1lcmdlQWN0aW9uTGlzdHMsCisJCQkJCQkJCQkJcGFyc2UtPmZvclBvcnRp b25PZiwKIAkJCQkJCQkJCQlhc3NpZ25fc3BlY2lhbF9leGVjX3BhcmFtKHJvb3QpKTsKIAkJ fQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCAyMTFiYTY1 Mzg5Li44MjNkMWZiYWIxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRp bC9wYXRobm9kZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2Rl LmMKQEAgLTM2NzAsNyArMzY3MCw4IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5u ZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQlMaXN0ICp1cGRhdGVDb2xu b3NMaXN0cywKIAkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1 cm5pbmdMaXN0cywKIAkJCQkJCUxpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAqb25j b25mbGljdCwKLQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBlcHFQYXJhbSkK KwkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIEZvclBvcnRpb25PZkV4cHIgKmZvclBv cnRpb25PZiwKKwkJCQkJCWludCBlcHFQYXJhbSkKIHsKIAlNb2RpZnlUYWJsZVBhdGggKnBh dGhub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGVQYXRoKTsKIApAQCAtMzczNiw2ICszNzM3 LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKnJlbCwKIAlwYXRobm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1cm5pbmdMaXN0 czsKIAlwYXRobm9kZS0+cm93TWFya3MgPSByb3dNYXJrczsKIAlwYXRobm9kZS0+b25jb25m bGljdCA9IG9uY29uZmxpY3Q7CisJcGF0aG5vZGUtPmZvclBvcnRpb25PZiA9IGZvclBvcnRp b25PZjsKIAlwYXRobm9kZS0+ZXBxUGFyYW0gPSBlcHFQYXJhbTsKIAlwYXRobm9kZS0+bWVy Z2VBY3Rpb25MaXN0cyA9IG1lcmdlQWN0aW9uTGlzdHM7CiAKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CmluZGV4IDdhMWRmYjYzNjQuLmM0YjZkNDQzY2YgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpA QCAtNDcsMTEgKzQ3LDEzIEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgi CiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3RhcmdldC5oIgogI2luY2x1ZGUgInBhcnNlci9w YXJzZV90eXBlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlci5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgog I2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9sc3lz Y2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgogCkBAIC02MCwxMCArNjIsMTcgQEAKIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29r X3R5cGUgcG9zdF9wYXJzZV9hbmFseXplX2hvb2sgPSBOVUxMOwogCiBzdGF0aWMgUXVlcnkg KnRyYW5zZm9ybU9wdGlvbmFsU2VsZWN0SW50byhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUg KnBhcnNlVHJlZSk7CitzdGF0aWMgTm9kZSAqYWRkRm9yUG9ydGlvbk9mV2hlcmVDb25kaXRp b25zKFF1ZXJ5ICpxcnksIEZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mLAorCQkJ CQkJCQkJCQlOb2RlICp3aGVyZUNsYXVzZSk7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybURl bGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KTsKIHN0YXRp YyBRdWVyeSAqdHJhbnNmb3JtSW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2Vy dFN0bXQgKnN0bXQpOwogc3RhdGljIE9uQ29uZmxpY3RFeHByICp0cmFuc2Zvcm1PbkNvbmZs aWN0Q2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJCSBPbkNvbmZsaWN0 Q2xhdXNlICpvbkNvbmZsaWN0Q2xhdXNlKTsKK3N0YXRpYyBOb2RlICp0cmFuc2Zvcm1Gb3JQ b3J0aW9uT2ZCb3VuZChOb2RlICpuLCBib29sIGlzTG93ZXJCb3VuZCk7CitzdGF0aWMgRm9y UG9ydGlvbk9mRXhwciAqdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwKKwkJCQkJCQkJCQkJCQkgaW50IHJ0aW5kZXgsCisJCQkJCQkJCQkJCQkJIEZv clBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mQ2xhdXNlLAorCQkJCQkJCQkJCQkJCSBi b29sIGlzVXBkYXRlKTsKIHN0YXRpYyBpbnQJY291bnRfcm93ZXhwcl9jb2x1bW5zKFBhcnNl U3RhdGUgKnBzdGF0ZSwgTm9kZSAqZXhwcik7CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVNl bGVjdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KTsKIHN0YXRp YyBRdWVyeSAqdHJhbnNmb3JtVmFsdWVzQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2Vs ZWN0U3RtdCAqc3RtdCk7CkBAIC00NzksNiArNDg4LDIwIEBAIHN0bXRfcmVxdWlyZXNfcGFy c2VfYW5hbHlzaXMoUmF3U3RtdCAqcGFyc2VUcmVlKQogCXJldHVybiByZXN1bHQ7CiB9CiAK K3N0YXRpYyBOb2RlICoKK2FkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhRdWVyeSAq cXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZiwgTm9kZSAqd2hlcmVDbGF1 c2UpCit7CisJaWYgKGZvclBvcnRpb25PZikKKwl7CisJCWlmICh3aGVyZUNsYXVzZSkKKwkJ CXJldHVybiAoTm9kZSAqKSBtYWtlQm9vbEV4cHIoQU5EX0VYUFIsIGxpc3RfbWFrZTIocXJ5 LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwciwgd2hlcmVDbGF1c2UpLCAtMSk7CisJCWVs c2UKKwkJCXJldHVybiBxcnktPmZvclBvcnRpb25PZi0+b3ZlcmxhcHNFeHByOworCX0KKwll bHNlCisJCXJldHVybiB3aGVyZUNsYXVzZTsKK30KKwogLyoKICAqIGFuYWx5emVfcmVxdWly ZXNfc25hcHNob3QKICAqCQlSZXR1cm5zIHRydWUgaWYgYSBzbmFwc2hvdCBtdXN0IGJlIHNl dCBiZWZvcmUgZG9pbmcgcGFyc2UgYW5hbHlzaXMKQEAgLTUxMiw2ICs1MzUsNyBAQCB0cmFu c2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCkK IHsKIAlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVlcnkpOwogCVBhcnNlTmFtZXNwYWNl SXRlbSAqbnNpdGVtOworCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCU5vZGUJICAgKnF1YWw7 CiAKIAlxcnktPmNvbW1hbmRUeXBlID0gQ01EX0RFTEVURTsKQEAgLTU1MCw3ICs1NzQsMTEg QEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQg KnN0bXQpCiAJbnNpdGVtLT5wX2xhdGVyYWxfb25seSA9IGZhbHNlOwogCW5zaXRlbS0+cF9s YXRlcmFsX29rID0gdHJ1ZTsKIAotCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3Rh dGUsIHN0bXQtPndoZXJlQ2xhdXNlLAorCWlmIChzdG10LT5mb3JQb3J0aW9uT2YpCisJCXFy eS0+Zm9yUG9ydGlvbk9mID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKHBzdGF0ZSwg cXJ5LT5yZXN1bHRSZWxhdGlvbiwgc3RtdC0+Zm9yUG9ydGlvbk9mLCBmYWxzZSk7CisKKwl3 aGVyZUNsYXVzZSA9IGFkZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhxcnksIHN0bXQt PmZvclBvcnRpb25PZiwgc3RtdC0+d2hlcmVDbGF1c2UpOworCXF1YWwgPSB0cmFuc2Zvcm1X aGVyZUNsYXVzZShwc3RhdGUsIHdoZXJlQ2xhdXNlLAogCQkJCQkJCQlFWFBSX0tJTkRfV0hF UkUsICJXSEVSRSIpOwogCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gdHJhbnNmb3JtUmV0dXJu aW5nTGlzdChwc3RhdGUsIHN0bXQtPnJldHVybmluZ0xpc3QpOwpAQCAtMTE3Myw3ICsxMjAx LDcgQEAgdHJhbnNmb3JtT25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CSAqIE5vdyB0cmFuc2Zvcm0gdGhlIFVQREFURSBzdWJleHByZXNzaW9ucy4KIAkJICovCiAJ CW9uQ29uZmxpY3RTZXQgPQotCQkJdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUs IG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QpOworCQkJdHJhbnNmb3JtVXBkYXRlVGFy Z2V0TGlzdChwc3RhdGUsIG9uQ29uZmxpY3RDbGF1c2UtPnRhcmdldExpc3QsIE5VTEwpOwog CiAJCW9uQ29uZmxpY3RXaGVyZSA9IHRyYW5zZm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwKIAkJ CQkJCQkJCQkJICAgb25Db25mbGljdENsYXVzZS0+d2hlcmVDbGF1c2UsCkBAIC0xMjAzLDYg KzEyMzEsMTYxIEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1Gb3JQb3J0aW9u T2ZCb3VuZAorICogICAgdHJhbnNmb3JtcyBVTkJPVU5ERUQgcHNldWRvLWNvbHVtbiByZWZl cmVuY2VzIHRvIE5VTEwKKyAqICAgICh3aGljaCByZXByZXNlbnQgInVuYm91bmRlZCIgaW4g YSByYW5nZSB0eXBlLCBvdGhlcndpc2UgcmV0dXJucworICogICAgaXRzIGlucHV0IHVuY2hh bmdlZC4KKyAqLworc3RhdGljIE5vZGUgKgordHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQo Tm9kZSAqbiwgYm9vbCBpc0xvd2VyQm91bmQpCit7CisJaWYgKG5vZGVUYWcobikgPT0gVF9D b2x1bW5SZWYpCisJeworCQlDb2x1bW5SZWYgICpjcmVmID0gKENvbHVtblJlZiAqKSBuOwor CQljaGFyCSAgICpjbmFtZSA9ICIiOworCQlBX0NvbnN0CSAgICpuMjsKKworCQlpZiAobGlz dF9sZW5ndGgoY3JlZi0+ZmllbGRzKSA9PSAxICYmCisJCQlJc0EobGluaXRpYWwoY3JlZi0+ ZmllbGRzKSwgU3RyaW5nKSkKKwkJCWNuYW1lID0gc3RyVmFsKGxpbml0aWFsKGNyZWYtPmZp ZWxkcykpOworCisJCWlmIChzdHJjbXAoInVuYm91bmRlZCIsIGNuYW1lKSAhPSAwKQorCQkJ cmV0dXJuIG47CisKKwkJbjIgPSBtYWtlTm9kZShBX0NvbnN0KTsKKwkJbjItPmlzbnVsbCA9 IHRydWU7CisJCW4yLT5sb2NhdGlvbiA9ICgoQ29sdW1uUmVmICopbiktPmxvY2F0aW9uOwor CisJCXJldHVybiAoTm9kZSAqKW4yOworCX0KKwllbHNlCisJCXJldHVybiBuOworfQorCisv KgorICogdHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlCisgKgorICoJICBUcmFuc2Zvcm1z IGEgRm9yUG9ydGlvbk9mQ2xhdXNlIGluIGFuIFVQREFURS9ERUxFVEUgc3RhdGVtZW50Lgor ICoKKyAqCSAgLSBMb29rIHVwIHRoZSByYW5nZS9wZXJpb2QgcmVxdWVzdGVkLgorICoJICAt IEJ1aWxkIGEgY29tcGF0aWJsZSByYW5nZSB2YWx1ZSBmcm9tIHRoZSBGUk9NIGFuZCBUTyBl eHByZXNzaW9ucy4KKyAqCSAgLSBCdWlsZCBhbiAib3ZlcmxhcHMiIGV4cHJlc3Npb24gZm9y IGZpbHRlcmluZy4KKyAqCSAgLSBGb3IgVVBEQVRFcywgYnVpbGQgYW4gImludGVyc2VjdHMi IGV4cHJlc3Npb24gdGhlIHJld3JpdGVyIGNhbiBhZGQKKyAqCSAgLSB0byB0aGUgdGFyZ2V0 TGlzdCB0byBjaGFuZ2UgdGhlIHRlbXBvcmFsIGJvdW5kcy4KKyAqLworc3RhdGljIEZvclBv cnRpb25PZkV4cHIgKgordHJhbnNmb3JtRm9yUG9ydGlvbk9mQ2xhdXNlKFBhcnNlU3RhdGUg KnBzdGF0ZSwKKwkJCQkJCQlpbnQgcnRpbmRleCwKKwkJCQkJCQlGb3JQb3J0aW9uT2ZDbGF1 c2UgKmZvclBvcnRpb25PZiwKKwkJCQkJCQlib29sIGlzVXBkYXRlKQoreworCVJlbGF0aW9u IHRhcmdldHJlbCA9IHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb247CisJUlRFUGVybWlzc2lv bkluZm8gKnRhcmdldF9wZXJtaW5mbyA9IHBzdGF0ZS0+cF90YXJnZXRfbnNpdGVtLT5wX3Bl cm1pbmZvOworCWNoYXIgKnJhbmdlX25hbWUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWU7 CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lc3BhY2UgPSBOVUxMOworCWNoYXIgKnJhbmdlX3R5 cGVfbmFtZSA9IE5VTEw7CisJaW50IHJhbmdlX2F0dG5vID0gSW52YWxpZEF0dHJOdW1iZXI7 CisJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cjsKKwlGb3JQb3J0aW9uT2ZFeHByICpyZXN1bHQ7 CisJTGlzdCAqdGFyZ2V0TGlzdDsKKwlOb2RlICp0YXJnZXRfc3RhcnQsICp0YXJnZXRfZW5k OworCVZhciAqcmFuZ2VWYXI7CisJRnVuY0NhbGwgKmZjOworCisJcmVzdWx0ID0gbWFrZU5v ZGUoRm9yUG9ydGlvbk9mRXhwcik7CisKKwkvKiBMb29rIHVwIHRoZSBGT1IgUE9SVElPTiBP RiBuYW1lIHJlcXVlc3RlZC4gKi8KKwlyYW5nZV9hdHRubyA9IGF0dG5hbWVBdHROdW0odGFy Z2V0cmVsLCByYW5nZV9uYW1lLCBmYWxzZSk7CisJaWYgKHJhbmdlX2F0dG5vID09IEludmFs aWRBdHRyTnVtYmVyKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG9yIHBlcmlvZCBcIiVz XCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXJhbmdlX25h bWUsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkg cGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xv Y2F0aW9uKSkpOworCWF0dHIgPSBUdXBsZURlc2NBdHRyKHRhcmdldHJlbC0+cmRfYXR0LCBy YW5nZV9hdHRubyAtIDEpOworCS8vIFRPRE86IGNoZWNrIGF0dHItPmF0dGlzZHJvcHBlZCAo PyksCisJLy8gYW5kIGZpZ3VyZSBvdXQgY29uY3VycmVuY3kgaXNzdWVzIHdpdGggdGhhdCBp biBnZW5lcmFsLgorCS8vIEl0IHNob3VsZCB3b3JrIHRoZSBzYW1lIGFzIHVwZGF0aW5nIGFu eSBvdGhlciBjb2x1bW4uCisKKwkvKiBNYWtlIHN1cmUgaXQncyBhIHJhbmdlIGNvbHVtbiAq LworCWlmICghdHlwZV9pc19yYW5nZShhdHRyLT5hdHR0eXBpZCkpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX0NPTFVNTl9SRUZFUkVOQ0UpLAor CQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIG5vdCBh IHJhbmdlIHR5cGUiLAorCQkJCQkJcmFuZ2VfbmFtZSwKKwkJCQkJCVJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHRhcmdldHJlbCkpLAorCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRl LCBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pKSk7CisKKwlyYW5nZVZhciA9 IG1ha2VWYXIoCisJCQlydGluZGV4LAorCQkJcmFuZ2VfYXR0bm8sCisJCQlhdHRyLT5hdHR0 eXBpZCwKKwkJCWF0dHItPmF0dHR5cG1vZCwKKwkJCWF0dHItPmF0dGNvbGxhdGlvbiwKKwkJ CTApOworCXJhbmdlVmFyLT5sb2NhdGlvbiA9IGZvclBvcnRpb25PZi0+cmFuZ2VfbmFtZV9s b2NhdGlvbjsKKwlyZXN1bHQtPnJhbmdlVmFyID0gcmFuZ2VWYXI7CisJcmVzdWx0LT5yYW5n ZVR5cGUgPSBhdHRyLT5hdHR0eXBpZDsKKwlpZiAoIWdldF90eXBuYW1lX2FuZF9uYW1lc3Bh Y2UoYXR0ci0+YXR0dHlwaWQsICZyYW5nZV90eXBlX25hbWUsICZyYW5nZV90eXBlX25hbWVz cGFjZSkpCisJCWVsb2coRVJST1IsICJtaXNzaW5nIHJhbmdlIHR5cGUgJWQiLCBhdHRyLT5h dHR0eXBpZCk7CisKKworCS8qCisJICogQnVpbGQgYSByYW5nZSBmcm9tIHRoZSBGUk9NIC4u LiBUTyAuLi4uIGJvdW5kcy4KKwkgKiBUaGlzIHNob3VsZCBnaXZlIGEgY29uc3RhbnQgcmVz dWx0LCBzbyB3ZSBhY2NlcHQgZnVuY3Rpb25zIGxpa2UgTk9XKCkKKwkgKiBidXQgbm90IGNv bHVtbiByZWZlcmVuY2VzLCBzdWJxdWVyaWVzLCBldGMuCisJICoKKwkgKiBJdCBhbHNvIHBl cm1pdHMgVU5CT1VOREVEIGluIGVpdGhlciBwbGFjZS4KKwkgKi8KKwl0YXJnZXRfc3RhcnQg PSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZCb3VuZChmb3JQb3J0aW9uT2YtPnRhcmdldF9zdGFy dCwgdHJ1ZSk7CisJdGFyZ2V0X2VuZCAgID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQo Zm9yUG9ydGlvbk9mLT50YXJnZXRfZW5kLCBmYWxzZSk7CisJZmMgPSBtYWtlRnVuY0NhbGwo CisJCQlsaXN0X21ha2UyKG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lc3BhY2UpLCBtYWtl U3RyaW5nKHJhbmdlX3R5cGVfbmFtZSkpLAorCQkJbGlzdF9tYWtlMih0YXJnZXRfc3RhcnQs IHRhcmdldF9lbmQpLAorCQkJQ09FUkNFX0VYUExJQ0lUX0NBTEwsCisJCQlmb3JQb3J0aW9u T2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCXJlc3VsdC0+dGFyZ2V0UmFuZ2UgPSB0cmFu c2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgZmMsIEVYUFJfS0lORF9VUERBVEVfUE9SVElP Tik7CisKKwkvKiBvdmVybGFwc0V4cHIgaXMgc29tZXRoaW5nIHdlIGNhbiBhZGQgdG8gdGhl IHdoZXJlQ2xhdXNlICovCisJcmVzdWx0LT5vdmVybGFwc0V4cHIgPSAoTm9kZSAqKSBtYWtl U2ltcGxlQV9FeHByKEFFWFBSX09QLCAiJiYiLAorCQkJKE5vZGUgKikgY29weU9iamVjdChy YW5nZVZhciksIChOb2RlICopIGZjLAorCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xv Y2F0aW9uKTsKKworCWlmIChpc1VwZGF0ZSkKKwl7CisJCS8qCisJCSAqIE5vdyBtYWtlIHN1 cmUgd2UgdXBkYXRlIHRoZSBzdGFydC9lbmQgdGltZSBvZiB0aGUgcmVjb3JkLgorCQkgKiBG b3IgYSByYW5nZSBjb2wgKHIpIHRoaXMgaXMgYHIgPSByICogdGFyZ2V0UmFuZ2VgLgorCQkg Ki8KKwkJRXhwciAqcmFuZ2VTZXRFeHByID0gKEV4cHIgKikgbWFrZVNpbXBsZUFfRXhwcihB RVhQUl9PUCwgIioiLAorCQkJCShOb2RlICopIGNvcHlPYmplY3QocmFuZ2VWYXIpLCAoTm9k ZSAqKSBmYywKKwkJCQlmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWVfbG9jYXRpb24pOworCQlU YXJnZXRFbnRyeSAqdGxlOworCisJCXRhcmdldExpc3QgPSBOSUw7CisJCXJhbmdlU2V0RXhw ciA9IChFeHByICopIHRyYW5zZm9ybUV4cHIocHN0YXRlLCAoTm9kZSAqKSByYW5nZVNldEV4 cHIsIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTik7CisJCXRsZSA9IG1ha2VUYXJnZXRFbnRy eShyYW5nZVNldEV4cHIsCisJCQkJCQkJICByYW5nZV9hdHRubywKKwkJCQkJCQkgIHJhbmdl X25hbWUsCisJCQkJCQkJICBmYWxzZSk7CisKKwkJdGFyZ2V0TGlzdCA9IGxhcHBlbmQodGFy Z2V0TGlzdCwgdGxlKTsKKworCQkvKiBNYXJrIHRoZSByYW5nZSBjb2x1bW4gYXMgcmVxdWly aW5nIHVwZGF0ZSBwZXJtaXNzaW9ucyAqLworCQl0YXJnZXRfcGVybWluZm8tPnVwZGF0ZWRD b2xzID0gYm1zX2FkZF9tZW1iZXIodGFyZ2V0X3Blcm1pbmZvLT51cGRhdGVkQ29scywKKwkJ CQkJCQkJCQkJCQkgIHJhbmdlX2F0dG5vIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlcik7CisKKwkJcmVzdWx0LT5yYW5nZVNldCA9IHRhcmdldExpc3Q7CisJfQorCWVs c2UKKwkJcmVzdWx0LT5yYW5nZVNldCA9IE5JTDsKKworCXJlc3VsdC0+cmFuZ2VfbmFtZSA9 IHJhbmdlX25hbWU7CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKgogICogQnVpbGRPbkNv bmZsaWN0RXhjbHVkZWRUYXJnZXRsaXN0CkBAIC0yNDA5LDYgKzI1OTIsNyBAQCB0cmFuc2Zv cm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIHsK IAlRdWVyeQkgICAqcXJ5ID0gbWFrZU5vZGUoUXVlcnkpOwogCVBhcnNlTmFtZXNwYWNlSXRl bSAqbnNpdGVtOworCU5vZGUJICAgKndoZXJlQ2xhdXNlOwogCU5vZGUJICAgKnF1YWw7CiAK IAlxcnktPmNvbW1hbmRUeXBlID0gQ01EX1VQREFURTsKQEAgLTI0MjYsNiArMjYxMCwxMCBA QCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAq c3RtdCkKIAkJCQkJCQkJCQkgc3RtdC0+cmVsYXRpb24tPmluaCwKIAkJCQkJCQkJCQkgdHJ1 ZSwKIAkJCQkJCQkJCQkgQUNMX1VQREFURSk7CisKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9m KQorCQlxcnktPmZvclBvcnRpb25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShw c3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgdHJ1ZSk7 CisKIAluc2l0ZW0gPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRlbTsKIAogCS8qIHN1YnF1ZXJp ZXMgaW4gRlJPTSBjYW5ub3QgYWNjZXNzIHRoZSByZXN1bHQgcmVsYXRpb24gKi8KQEAgLTI0 NDIsNyArMjYzMCw4IEBAIHRyYW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBVcGRhdGVTdG10ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsK IAluc2l0ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hl cmVDbGF1c2UocHN0YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwl3aGVyZUNsYXVzZSA9IGFk ZEZvclBvcnRpb25PZldoZXJlQ29uZGl0aW9ucyhxcnksIHN0bXQtPmZvclBvcnRpb25PZiwg c3RtdC0+d2hlcmVDbGF1c2UpOworCXF1YWwgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3Rh dGUsIHdoZXJlQ2xhdXNlLAogCQkJCQkJCQlFWFBSX0tJTkRfV0hFUkUsICJXSEVSRSIpOwog CiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gdHJhbnNmb3JtUmV0dXJuaW5nTGlzdChwc3RhdGUs IHN0bXQtPnJldHVybmluZ0xpc3QpOwpAQCAtMjQ1MSw3ICsyNjQwLDcgQEAgdHJhbnNmb3Jt VXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJICog Tm93IHdlIGFyZSBkb25lIHdpdGggU0VMRUNULWxpa2UgcHJvY2Vzc2luZywgYW5kIGNhbiBn ZXQgb24gd2l0aAogCSAqIHRyYW5zZm9ybWluZyB0aGUgdGFyZ2V0IGxpc3QgdG8gbWF0Y2gg dGhlIFVQREFURSB0YXJnZXQgY29sdW1ucy4KIAkgKi8KLQlxcnktPnRhcmdldExpc3QgPSB0 cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCk7CisJ cXJ5LT50YXJnZXRMaXN0ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0 bXQtPnRhcmdldExpc3QsIHFyeS0+Zm9yUG9ydGlvbk9mKTsKIAogCXFyeS0+cnRhYmxlID0g cHN0YXRlLT5wX3J0YWJsZTsKIAlxcnktPnJ0ZXBlcm1pbmZvcyA9IHBzdGF0ZS0+cF9ydGVw ZXJtaW5mb3M7CkBAIC0yNDcwLDcgKzI2NTksNyBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBh cnNlU3RhdGUgKnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKICAqCWhhbmRsZSBTRVQgY2xh dXNlIGluIFVQREFURS9NRVJHRS9JTlNFUlQgLi4uIE9OIENPTkZMSUNUIFVQREFURQogICov CiBMaXN0ICoKLXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRl LCBMaXN0ICpvcmlnVGxpc3QpCit0cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0LCBGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0 aW9uT2YpCiB7CiAJTGlzdAkgICAqdGxpc3QgPSBOSUw7CiAJUlRFUGVybWlzc2lvbkluZm8g KnRhcmdldF9wZXJtaW5mbzsKQEAgLTI1MjAsNiArMjcwOSwyMSBAQCB0cmFuc2Zvcm1VcGRh dGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQogCQkJ CQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHBzdGF0ZS0+cF90YXJnZXRfcmVsYXRpb24p KSwKIAkJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG9yaWdUYXJnZXQtPmxvY2F0 aW9uKSkpOwogCisJCS8qCisJCSAqIElmIHRoaXMgaXMgYSBGT1IgUE9SVElPTiBPRiB1cGRh dGUsCisJCSAqIGZvcmJpZCBkaXJlY3RseSBzZXR0aW5nIHRoZSByYW5nZSBjb2x1bW4sCisJ CSAqIHNpbmNlIHRoYXQgd291bGQgY29uZmxpY3Qgd2l0aCB0aGUgaW1wbGljaXQgdXBkYXRl cy4KKwkJICovCisJCWlmIChmb3JQb3J0aW9uT2YgIT0gTlVMTCkKKwkJeworCQkJaWYgKGF0 dHJubyA9PSBmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubykKKwkJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJ IGVycm1zZygiY2FuJ3QgZGlyZWN0bHkgYXNzaWduIHRvIFwiJXNcIiBpbiBhIEZPUiBQT1JU SU9OIE9GIHVwZGF0ZSIsCisJCQkJCQkJCW9yaWdUYXJnZXQtPm5hbWUpLAorCQkJCQkJIHBh cnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIG9yaWdUYXJnZXQtPmxvY2F0aW9uKSkpOworCQl9 CisKIAkJdXBkYXRlVGFyZ2V0TGlzdEVudHJ5KHBzdGF0ZSwgdGxlLCBvcmlnVGFyZ2V0LT5u YW1lLAogCQkJCQkJCSAgYXR0cm5vLAogCQkJCQkJCSAgb3JpZ1RhcmdldC0+aW5kaXJlY3Rp b24sCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueQppbmRleCAwNTQ0ZmZiNjNkLi40OTJmMzBmZjY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkKQEAgLTI1OCw2ICsyNTgsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2 ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkp OwogCVJhbmdlVmFyICAgKnJhbmdlOwogCUludG9DbGF1c2UgKmludG87CiAJV2l0aENsYXVz ZSAqd2l0aDsKKwlGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvcnBvcnRpb25vZjsKIAlJbmZlckNs YXVzZQkqaW5mZXI7CiAJT25Db25mbGljdENsYXVzZSAqb25jb25mbGljdDsKIAlBX0luZGlj ZXMgICphaW5kOwpAQCAtNTUxLDYgKzU1Miw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4JZXh0ZW5k ZWRfcmVsYXRpb25fZXhwcgogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByX29wdF9hbGlh cworJXR5cGUgPGZvcnBvcnRpb25vZj4gZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAldHlwZSA8 bm9kZT4JdGFibGVzYW1wbGVfY2xhdXNlIG9wdF9yZXBlYXRhYmxlX2NsYXVzZQogJXR5cGUg PHRhcmdldD4JdGFyZ2V0X2VsIHNldF90YXJnZXQgaW5zZXJ0X2NvbHVtbl9pdGVtCiAKQEAg LTc0Nyw3ICs3NDksNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCiAJUEFSQUxM RUwgUEFSQU1FVEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVNTSU5HIFBBU1NXT1JE CiAJUEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZCi0JUE9TSVRJT04gUFJFQ0VESU5HIFBS RUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkKKwlQT1JUSU9OIFBP U0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQ UklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NFRFVSRSBQUk9DRURV UkVTIFBST0dSQU0gUFVCTElDQVRJT04KIAogCVFVT1RFCkBAIC04MjgsNiArODMwLDE2IEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBM aXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAlbm9uYXNzb2MJS0VZUyBPQkpFQ1RfUCBT Q0FMQVIgVkFMVUVfUAogJW5vbmFzc29jCVdJVEggV0lUSE9VVAogCisvKgorICogV2UgbmVl ZCB0byBoYW5kbGUgdGhpcyBzaGlmdC9yZWR1Y2UgY29uZmxpY3Q6CisgKiBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIElOVEVSVkFMIFlFQVIgVE8gTU9OVEggVE8gZm9vLgorICog VGhpcyBpcyBiYXNpY2FsbHkgdGhlIGNsYXNzaWMgImRhbmdsaW5nIGVsc2UiIHByb2JsZW0s IGFuZCB3ZSB3YW50IGEKKyAqIHNpbWlsYXIgcmVzb2x1dGlvbjogdHJlYXQgdGhlIFRPIGFz IHBhcnQgb2YgdGhlIElOVEVSVkFMLCBub3QgYXMgcGFydCBvZgorICogdGhlIEZST00gLi4u IFRPIC4uLi4gVXNlcnMgY2FuIGFkZCBwYXJlbnRoZXNlcyBpZiB0aGF0J3MgYSBwcm9ibGVt LgorICogVE8ganVzdCBuZWVkcyB0byBiZSBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIFlFQVJf UCBldGMuCisgKi8KKyVub25hc3NvYyBZRUFSX1AgTU9OVEhfUCBEQVlfUCBIT1VSX1AgTUlO VVRFX1AKKyVub25hc3NvYyBUTwogLyoKICAqIFRvIHN1cHBvcnQgdGFyZ2V0X2VsIHdpdGhv dXQgQVMsIGl0IHVzZWQgdG8gYmUgbmVjZXNzYXJ5IHRvIGFzc2lnbiBJREVOVCBhbgogICog ZXhwbGljaXQgcHJlY2VkZW5jZSBqdXN0IGxlc3MgdGhhbiBPcC4gIFdoaWxlIHRoYXQncyBu b3QgcmVhbGx5IG5lY2Vzc2FyeQpAQCAtMTIxNjgsMTQgKzEyMTgwLDE2IEBAIHJldHVybmlu Z19jbGF1c2U6CiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIERlbGV0ZVN0bXQ6IG9w dF93aXRoX2NsYXVzZSBERUxFVEVfUCBGUk9NIHJlbGF0aW9uX2V4cHJfb3B0X2FsaWFzCisJ CQlmb3JfcG9ydGlvbl9vZl9jbGF1c2UKIAkJCXVzaW5nX2NsYXVzZSB3aGVyZV9vcl9jdXJy ZW50X2NsYXVzZSByZXR1cm5pbmdfY2xhdXNlCiAJCQkJewogCQkJCQlEZWxldGVTdG10ICpu ID0gbWFrZU5vZGUoRGVsZXRlU3RtdCk7CiAKIAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKLQkJ CQkJbi0+dXNpbmdDbGF1c2UgPSAkNTsKLQkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNjsKLQkJ CQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ3OworCQkJCQluLT5mb3JQb3J0aW9uT2YgPSAkNTsK KwkJCQkJbi0+dXNpbmdDbGF1c2UgPSAkNjsKKwkJCQkJbi0+d2hlcmVDbGF1c2UgPSAkNzsK KwkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4OwogCQkJCQluLT53aXRoQ2xhdXNlID0gJDE7 CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9CkBAIC0xMjIzOCw2ICsxMjI1Miw3IEBA IG9wdF9ub3dhaXRfb3Jfc2tpcDoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogVXBk YXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFURSByZWxhdGlvbl9leHByX29wdF9hbGlh cworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQlTRVQgc2V0X2NsYXVzZV9saXN0CiAJ CQlmcm9tX2NsYXVzZQogCQkJd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKQEAgLTEyMjQ2LDEw ICsxMjI2MSwxMSBAQCBVcGRhdGVTdG10OiBvcHRfd2l0aF9jbGF1c2UgVVBEQVRFIHJlbGF0 aW9uX2V4cHJfb3B0X2FsaWFzCiAJCQkJCVVwZGF0ZVN0bXQgKm4gPSBtYWtlTm9kZShVcGRh dGVTdG10KTsKIAogCQkJCQluLT5yZWxhdGlvbiA9ICQzOwotCQkJCQluLT50YXJnZXRMaXN0 ID0gJDU7Ci0JCQkJCW4tPmZyb21DbGF1c2UgPSAkNjsKLQkJCQkJbi0+d2hlcmVDbGF1c2Ug PSAkNzsKLQkJCQkJbi0+cmV0dXJuaW5nTGlzdCA9ICQ4OworCQkJCQluLT5mb3JQb3J0aW9u T2YgPSAkNDsKKwkJCQkJbi0+dGFyZ2V0TGlzdCA9ICQ2OworCQkJCQluLT5mcm9tQ2xhdXNl ID0gJDc7CisJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDg7CisJCQkJCW4tPnJldHVybmluZ0xp c3QgPSAkOTsKIAkJCQkJbi0+d2l0aENsYXVzZSA9ICQxOwogCQkJCQkkJCA9IChOb2RlICop IG47CiAJCQkJfQpAQCAtMTM2ODUsNiArMTM3MDEsMTkgQEAgcmVsYXRpb25fZXhwcl9vcHRf YWxpYXM6IHJlbGF0aW9uX2V4cHIJCQkJCSVwcmVjIFVNSU5VUwogCQkJCX0KIAkJOwogCitm b3JfcG9ydGlvbl9vZl9jbGF1c2U6CisJCQlGT1IgUE9SVElPTiBPRiBDb2xJZCBGUk9NIGFf ZXhwciBUTyBhX2V4cHIKKwkJCQl7CisJCQkJCUZvclBvcnRpb25PZkNsYXVzZSAqbiA9IG1h a2VOb2RlKEZvclBvcnRpb25PZkNsYXVzZSk7CisJCQkJCW4tPnJhbmdlX25hbWUgPSAkNDsK KwkJCQkJbi0+cmFuZ2VfbmFtZV9sb2NhdGlvbiA9IEA0OworCQkJCQluLT50YXJnZXRfc3Rh cnQgPSAkNjsKKwkJCQkJbi0+dGFyZ2V0X2VuZCA9ICQ4OworCQkJCQkkJCA9IG47CisJCQkJ fQorCQkJfCAvKkVNUFRZKi8JCQkJCXsgJCQgPSBOVUxMOyB9CisJCTsKKwogLyoKICAqIFRB QkxFU0FNUExFIGRlY29yYXRpb24gaW4gYSBGUk9NIGl0ZW0KICAqLwpAQCAtMTcyNDAsNiAr MTcyNjksNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFBBU1NXT1JECiAJCQl8IFBM QU5TCiAJCQl8IFBPTElDWQorCQkJfCBQT1JUSU9OCiAJCQl8IFBSRUNFRElORwogCQkJfCBQ UkVQQVJFCiAJCQl8IFBSRVBBUkVECkBAIC0xNzg0NCw2ICsxNzg3NCw3IEBAIGJhcmVfbGFi ZWxfa2V5d29yZDoKIAkJCXwgUExBQ0lORwogCQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKKwkJ CXwgUE9SVElPTgogCQkJfCBQT1NJVElPTgogCQkJfCBQUkVDRURJTkcKIAkJCXwgUFJFUEFS RQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCmluZGV4IDg1Y2Q0N2I3YWUuLmNlOGUwYmUwNDUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKQEAgLTU2Myw2ICs1NjMsMTMgQEAgY2hlY2tf YWdnbGV2ZWxzX2FuZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4 cHIpCiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsK IAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWlmIChp c0FnZykKKwkJCQllcnIgPSBfKCJhZ2dyZWdhdGUgZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dl ZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCQkJZWxzZQorCQkJCWVyciA9 IF8oImdyb3VwaW5nIG9wZXJhdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9O IE9GIGV4cHJlc3Npb25zIik7CisKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUg aXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBA IC05NTMsNiArOTYwLDkgQEAgdHJhbnNmb3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAq cHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVfTUFS SzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQ REFURV9QT1JUSU9OOgorCQkJZXJyID0gXygid2luZG93IGZ1bmN0aW9ucyBhcmUgbm90IGFs bG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwogCiAJ CQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhl cmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y29sbGF0ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYwppbmRleCA5 ZjZhZmMzNTFjLi5kMDliMmQyYjFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY29sbGF0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRl LmMKQEAgLTQ4NCw2ICs0ODQsNyBAQCBhc3NpZ25fY29sbGF0aW9uc193YWxrZXIoTm9kZSAq bm9kZSwgYXNzaWduX2NvbGxhdGlvbnNfY29udGV4dCAqY29udGV4dCkKIAkJY2FzZSBUX0pv aW5FeHByOgogCQljYXNlIFRfRnJvbUV4cHI6CiAJCWNhc2UgVF9PbkNvbmZsaWN0RXhwcjoK KwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CiAJCWNhc2UgVF9Tb3J0R3JvdXBDbGF1c2U6 CiAJCWNhc2UgVF9NZXJnZUFjdGlvbjoKIAkJCSh2b2lkKSBleHByZXNzaW9uX3RyZWVfd2Fs a2VyKG5vZGUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYwppbmRleCA2NGM1ODJjMzQ0Li5m ZWU2YmQ5MDJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTU2Niw2ICs1NjYs OSBAQCB0cmFuc2Zvcm1Db2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYg KmNyZWYpCiAJCWNhc2UgRVhQUl9LSU5EX1BBUlRJVElPTl9CT1VORDoKIAkJCWVyciA9IF8o ImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBwYXJ0aXRpb24gYm91bmQgZXhwcmVz c2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JUSU9OOgor CQkJZXJyID0gXygiY2Fubm90IHVzZSBjb2x1bW4gcmVmZXJlbmNlIGluIEZPUiBQT1JUSU9O IE9GIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMg aW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0x ODEzLDYgKzE4MTYsOSBAQCB0cmFuc2Zvcm1TdWJMaW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwg U3ViTGluayAqc3VibGluaykKIAkJY2FzZSBFWFBSX0tJTkRfR0VORVJBVEVEX0NPTFVNTjoK IAkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gY29sdW1uIGdlbmVyYXRpb24g ZXhwcmVzc2lvbiIpOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JU SU9OOgorCQkJZXJyID0gXygiY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBGT1IgUE9SVElPTiBP RiBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGlu dGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpAQCAtMzEw NCw2ICszMTEwLDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2lu ZCkKIAkJCXJldHVybiAiVVBEQVRFIjsKIAkJY2FzZSBFWFBSX0tJTkRfTUVSR0VfV0hFTjoK IAkJCXJldHVybiAiTUVSR0UgV0hFTiI7CisJCWNhc2UgRVhQUl9LSU5EX1VQREFURV9QT1JU SU9OOgorCQkJcmV0dXJuICJGT1IgUE9SVElPTiBPRiI7CiAJCWNhc2UgRVhQUl9LSU5EX0dS T1VQX0JZOgogCQkJcmV0dXJuICJHUk9VUCBCWSI7CiAJCWNhc2UgRVhQUl9LSU5EX09SREVS X0JZOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggYjNmMGI2YTEzNy4uMzFlZDAx YTg0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYworKysg Yi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCkBAIC0yNjU2LDYgKzI2NTYsOSBA QCBjaGVja19zcmZfY2FsbF9wbGFjZW1lbnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBOb2RlICps YXN0X3NyZiwgaW50IGxvY2F0aW9uKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgog CQkJZXJya2luZCA9IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRF X1BPUlRJT046CisJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWJyZWFrOwog CiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNl IGhlcmUsIHNvIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfbWVyZ2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCmluZGV4IDkx YjExNTZkOTkuLmMwMDgwMmFlMjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9w YXJzZV9tZXJnZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9tZXJnZS5jCkBA IC0zNzIsNyArMzcyLDcgQEAgdHJhbnNmb3JtTWVyZ2VTdG10KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgTWVyZ2VTdG10ICpzdG10KQogCQkJCQlwc3RhdGUtPnBfaXNfaW5zZXJ0ID0gZmFsc2U7 CiAJCQkJCWFjdGlvbi0+dGFyZ2V0TGlzdCA9CiAJCQkJCQl0cmFuc2Zvcm1VcGRhdGVUYXJn ZXRMaXN0KHBzdGF0ZSwKLQkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJnZXRM aXN0KTsKKwkJCQkJCQkJCQkJCSAgbWVyZ2VXaGVuQ2xhdXNlLT50YXJnZXRMaXN0LCBOVUxM KTsKIAkJCQl9CiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9ERUxFVEU6CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9y ZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggYjQ4NmFiNTU5YS4uNTc2YTk4ZTBmNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBi L3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtMzQ3Myw2ICszNDcz LDMwIEBAIHJld3JpdGVUYXJnZXRWaWV3KFF1ZXJ5ICpwYXJzZXRyZWUsIFJlbGF0aW9uIHZp ZXcpCiAJCQkJCQkJCQkgICZwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKTsKIAl9CiAKKwlpZiAo cGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YgJiYgcGFyc2V0cmVlLT5jb21tYW5kVHlwZSA9PSBD TURfVVBEQVRFKQorCXsKKwkJLyoKKwkJICogTGlrZSB0aGUgSU5TRVJUL1VQREFURSBjb2Rl IGFib3ZlLCB1cGRhdGUgdGhlIHJlc25vcyBpbiB0aGUKKwkJICogYXV4aWxpYXJ5IFVQREFU RSB0YXJnZXRsaXN0IHRvIHJlZmVyIHRvIGNvbHVtbnMgb2YgdGhlIGJhc2UKKwkJICogcmVs YXRpb24uCisJCSAqLworCQlmb3JlYWNoKGxjLCBwYXJzZXRyZWUtPmZvclBvcnRpb25PZi0+ cmFuZ2VTZXQpCisJCXsKKwkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFyZ2V0RW50cnkgKikg bGZpcnN0KGxjKTsKKwkJCVRhcmdldEVudHJ5ICp2aWV3X3RsZTsKKworCQkJaWYgKHRsZS0+ cmVzanVuaykKKwkJCQljb250aW51ZTsKKworCQkJdmlld190bGUgPSBnZXRfdGxlX2J5X3Jl c25vKHZpZXdfdGFyZ2V0bGlzdCwgdGxlLT5yZXNubyk7CisJCQlpZiAodmlld190bGUgIT0g TlVMTCAmJiAhdmlld190bGUtPnJlc2p1bmsgJiYgSXNBKHZpZXdfdGxlLT5leHByLCBWYXIp KQorCQkJCXRsZS0+cmVzbm8gPSAoKFZhciAqKSB2aWV3X3RsZS0+ZXhwciktPnZhcmF0dG5v OworCQkJZWxzZQorCQkJCWVsb2coRVJST1IsICJhdHRyaWJ1dGUgbnVtYmVyICVkIG5vdCBm b3VuZCBpbiB2aWV3IHRhcmdldGxpc3QiLAorCQkJCQkgdGxlLT5yZXNubyk7CisJCX0KKwl9 CisKIAkvKgogCSAqIEZvciBVUERBVEUvREVMRVRFLCBwdWxsIHVwIGFueSBXSEVSRSBxdWFs cyBmcm9tIHRoZSB2aWV3LiAgV2Uga25vdyB0aGF0CiAJICogYW55IFZhcnMgaW4gdGhlIHF1 YWxzIG11c3QgcmVmZXJlbmNlIHRoZSBvbmUgYmFzZSByZWxhdGlvbiwgc28gd2UgbmVlZApA QCAtMzgxMSw2ICszODM1LDIyIEBAIFJld3JpdGVRdWVyeShRdWVyeSAqcGFyc2V0cmVlLCBM aXN0ICpyZXdyaXRlX2V2ZW50cywgaW50IG9yaWdfcnRfbGVuZ3RoKQogCQllbHNlIGlmIChl dmVudCA9PSBDTURfVVBEQVRFKQogCQl7CiAJCQlBc3NlcnQocGFyc2V0cmVlLT5vdmVycmlk ZSA9PSBPVkVSUklESU5HX05PVF9TRVQpOworCQkJLyoKKwkJCSAqIFVwZGF0ZSBGT1IgUE9S VElPTiBPRiBjb2x1bW4ocykgYXV0b21hdGljYWxseS4gRG9uJ3QKKwkJCSAqIGRvIHRoaXMg dW50aWwgd2UncmUgZG9uZSByZXdyaXRpbmcgYSB2aWV3IHVwZGF0ZSwgc28KKwkJCSAqIHRo YXQgd2UgZG9uJ3QgYWRkIHRoZSBzYW1lIHVwZGF0ZSBvbiB0aGUgcmVjdXJzaW9uLgorCQkJ ICovCisJCQlpZiAocGFyc2V0cmVlLT5mb3JQb3J0aW9uT2YgJiYKKwkJCQlydF9lbnRyeV9y ZWxhdGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfVklFVykKKwkJCXsKKwkJCQlM aXN0Q2VsbCAqdGw7CisJCQkJZm9yZWFjaCh0bCwgcGFyc2V0cmVlLT5mb3JQb3J0aW9uT2Yt PnJhbmdlU2V0KQorCQkJCXsKKwkJCQkJVGFyZ2V0RW50cnkgKnRsZSA9IChUYXJnZXRFbnRy eSAqKSBsZmlyc3QodGwpOworCQkJCQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPSBsYXBwZW5k KHBhcnNldHJlZS0+dGFyZ2V0TGlzdCwgdGxlKTsKKwkJCQl9CisJCQl9CisKIAkJCXBhcnNl dHJlZS0+dGFyZ2V0TGlzdCA9CiAJCQkJcmV3cml0ZVRhcmdldExpc3RJVShwYXJzZXRyZWUt PnRhcmdldExpc3QsCiAJCQkJCQkJCQlwYXJzZXRyZWUtPmNvbW1hbmRUeXBlLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMgYi9zcmMvYmFja2VuZC90Y29wL3V0 aWxpdHkuYwppbmRleCBlM2NjZjZjN2Y3Li42NzgxZTU1MDIwIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC90Y29wL3V0aWxpdHkuYworKysgYi9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHku YwpAQCAtMTU2MCw3ICsxNTYwLDcgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUg KnBzdGF0ZSwKIAkJCQkJCQkJCXRydWUsCS8qIGNoZWNrX3JpZ2h0cyAqLwogCQkJCQkJCQkJ dHJ1ZSwJLyogY2hlY2tfbm90X2luX3VzZSAqLwogCQkJCQkJCQkJZmFsc2UsCS8qIHNraXBf YnVpbGQgKi8KLQkJCQkJCQkJCWZhbHNlKTsgLyogcXVpZXQgKi8KKwkJCQkJCQkJCWZhbHNl KTsJLyogcXVpZXQgKi8KIAogCQkJCQkvKgogCQkJCQkgKiBBZGQgdGhlIENSRUFURSBJTkRF WCBub2RlIGl0c2VsZiB0byBzdGFzaCByaWdodCBhd2F5OwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2Vm aWxlCmluZGV4IDBkZTBiYmIxYjguLmE0ZjIyNmVjOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvTWFr ZWZpbGUKQEAgLTc4LDYgKzc4LDcgQEAgT0JKUyA9IFwKIAlvcmFjbGVfY29tcGF0Lm8gXAog CW9yZGVyZWRzZXRhZ2dzLm8gXAogCXBhcnRpdGlvbmZ1bmNzLm8gXAorCXBlcmlvZC5vIFwK IAlwZ19sb2NhbGUubyBcCiAJcGdfbHNuLm8gXAogCXBnX3VwZ3JhZGVfc3VwcG9ydC5vIFwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwLi4wZWQ0MzA0ZTE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3BlcmlvZC5jCkBAIC0wLDAgKzEsNTYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICoKKyAqIHBlcmlvZC5jCisgKgkgIEZ1bmN0aW9ucyB0byBzdXBwb3J0IHBlcmlvZHMu CisgKgorICoKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDIyLCBQb3N0Z3Jl U1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChj KSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisg KgorICogSURFTlRJRklDQVRJT04KKyAqCSAgc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Blcmlv ZC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpbmNsdWRlICJwb3N0Z3Jl cy5oIgorCisjaW5jbHVkZSAiZXhlY3V0b3IvdHVwdGFibGUuaCIKKyNpbmNsdWRlICJmbWdy LmgiCisjaW5jbHVkZSAibm9kZXMvcHJpbW5vZGVzLmgiCisjaW5jbHVkZSAidXRpbHMvZm1n cnByb3Rvcy5oIgorI2luY2x1ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxz L3JhbmdldHlwZXMuaCIKKworRGF0dW0gcGVyaW9kX3RvX3JhbmdlKFR1cGxlVGFibGVTbG90 ICpzbG90LCBpbnQgc3RhcnRhdHRubywgaW50IGVuZGF0dG5vLCBPaWQgcmFuZ2V0eXBlKQor eworCURhdHVtIHN0YXJ0dmFsdWU7CisJRGF0dW0gZW5kdmFsdWU7CisJRGF0dW0gcmVzdWx0 OworCWJvb2wJc3RhcnRpc251bGw7CisJYm9vbAllbmRpc251bGw7CisJTE9DQUxfRkNJTkZP KGZjaW5mbywgMik7CisJRm1nckluZm8JZmxpbmZvOworCUZ1bmNFeHByICAgKmY7CisKKwlJ bml0RnVuY3Rpb25DYWxsSW5mb0RhdGEoKmZjaW5mbywgJmZsaW5mbywgMiwgSW52YWxpZE9p ZCwgTlVMTCwgTlVMTCk7CisJZiA9IG1ha2VOb2RlKEZ1bmNFeHByKTsKKwlmLT5mdW5jcmVz dWx0dHlwZSA9IHJhbmdldHlwZTsKKwlmbGluZm8uZm5fZXhwciA9IChOb2RlICopIGY7CisJ ZmxpbmZvLmZuX2V4dHJhID0gTlVMTDsKKworCS8qIGNvbXB1dGUgb2xkdmFsdWUgKi8KKwlz dGFydHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIHN0YXJ0YXR0bm8sICZzdGFydGlzbnVs bCk7CisJZW5kdmFsdWUgPSBzbG90X2dldGF0dHIoc2xvdCwgZW5kYXR0bm8sICZlbmRpc251 bGwpOworCisJZmNpbmZvLT5hcmdzWzBdLnZhbHVlID0gc3RhcnR2YWx1ZTsKKwlmY2luZm8t PmFyZ3NbMF0uaXNudWxsID0gc3RhcnRpc251bGw7CisJZmNpbmZvLT5hcmdzWzFdLnZhbHVl ID0gZW5kdmFsdWU7CisJZmNpbmZvLT5hcmdzWzFdLmlzbnVsbCA9IGVuZGlzbnVsbDsKKwor CXJlc3VsdCA9IHJhbmdlX2NvbnN0cnVjdG9yMihmY2luZm8pOworCWlmIChmY2luZm8tPmlz bnVsbCkKKwkJZWxvZyhFUlJPUiwgImZ1bmN0aW9uICV1IHJldHVybmVkIE5VTEwiLCBmbGlu Zm8uZm5fb2lkKTsKKworCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Jh bmdldHlwZXMuYwppbmRleCBkNjVlNTYyNWM3Li5kNGUxNzMyMzc3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9yYW5nZXR5cGVzLmMKQEAgLTEyMDYsNiArMTIwNiw0OCBAQCByYW5nZV9zcGxp dF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAq cjEsIGNvbnN0IFJhbmdlVAogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIHJhbmdlX2xl ZnRvdmVyX2ludGVybmFsIC0gU2V0cyBvdXRwdXQxIGFuZCBvdXRwdXQyIHRvIHRoZSByZW1h aW5pbmcgcGFydHMgb2YgcjEKKyAqIGFmdGVyIHN1YnRyYWN0aW5nIHIyLCBvciBpZiBub3Ro aW5nIGlzIGxlZnQgdGhlbiB0byB0aGUgZW1wdHkgcmFuZ2UuCisgKiBvdXRwdXQxIHdpbGwg YWx3YXlzIGJlICJiZWZvcmUiIHIyIGFuZCBvdXRwdXQyICJhZnRlciIuCisgKi8KK3ZvaWQK K3JhbmdlX2xlZnRvdmVyX2ludGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29u c3QgUmFuZ2VUeXBlICpyMSwKKwkJCQkJCWNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlw ZSAqKm91dHB1dDEsIFJhbmdlVHlwZSAqKm91dHB1dDIpCit7CisJUmFuZ2VCb3VuZAlsb3dl cjEsCisJCQkJbG93ZXIyOworCVJhbmdlQm91bmQJdXBwZXIxLAorCQkJCXVwcGVyMjsKKwli b29sCQllbXB0eTEsCisJCQkJZW1wdHkyOworCisJcmFuZ2VfZGVzZXJpYWxpemUodHlwY2Fj aGUsIHIxLCAmbG93ZXIxLCAmdXBwZXIxLCAmZW1wdHkxKTsKKwlyYW5nZV9kZXNlcmlhbGl6 ZSh0eXBjYWNoZSwgcjIsICZsb3dlcjIsICZ1cHBlcjIsICZlbXB0eTIpOworCisJaWYgKHJh bmdlX2NtcF9ib3VuZHModHlwY2FjaGUsICZsb3dlcjEsICZsb3dlcjIpIDwgMCkKKwl7CisJ CWxvd2VyMi5pbmNsdXNpdmUgPSAhbG93ZXIyLmluY2x1c2l2ZTsKKwkJbG93ZXIyLmxvd2Vy ID0gZmFsc2U7CisJCSpvdXRwdXQxID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJmxvd2VyMSwg Jmxvd2VyMiwgZmFsc2UsIE5VTEwpOworCX0KKwllbHNlCisJeworCQkqb3V0cHV0MSA9IG1h a2VfZW1wdHlfcmFuZ2UodHlwY2FjaGUpOworCX0KKworCWlmIChyYW5nZV9jbXBfYm91bmRz KHR5cGNhY2hlLCAmdXBwZXIxLCAmdXBwZXIyKSA+IDApCisJeworCQl1cHBlcjIuaW5jbHVz aXZlID0gIXVwcGVyMi5pbmNsdXNpdmU7CisJCXVwcGVyMi5sb3dlciA9IHRydWU7CisJCSpv dXRwdXQyID0gbWFrZV9yYW5nZSh0eXBjYWNoZSwgJnVwcGVyMiwgJnVwcGVyMSwgZmFsc2Us IE5VTEwpOworCX0KKwllbHNlCisJeworCQkqb3V0cHV0MiA9IG1ha2VfZW1wdHlfcmFuZ2Uo dHlwY2FjaGUpOworCX0KK30KKwogLyogcmFuZ2UgLT4gcmFuZ2UgYWdncmVnYXRlIGZ1bmN0 aW9ucyAqLwogCiBEYXR1bQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv bHN5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYwppbmRl eCBmYzZkMjY3ZTQ0Li4zOTE3NjJmMzA4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9jYWNoZS9sc3lzY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9sc3lz Y2FjaGUuYwpAQCAtMjE3MCw2ICsyMTcwLDU4IEBAIGdldF90eXBpc2RlZmluZWQoT2lkIHR5 cGlkKQogCQlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBnZXRfdHlwbmFtZQorICoKKyAq CSAgUmV0dXJucyB0aGUgbmFtZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5zIGEg cGFsbG9jJ2QgY29weSBvZiB0aGUgc3RyaW5nLCBvciBOVUxMIGlmIG5vIHN1Y2ggdHlwZS4K KyAqLworY2hhciAqCitnZXRfdHlwbmFtZShPaWQgdHlwaWQpCit7CisJSGVhcFR1cGxlICAg dHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lELCBPYmplY3RJZEdldERhdHVt KHR5cGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHApKQorCXsKKwkJRm9ybV9wZ190 eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVDVCh0cCk7CisJCWNoYXIJICAg KnJlc3VsdDsKKworCQlyZXN1bHQgPSBwc3RyZHVwKE5hbWVTdHIodHlwdHVwLT50eXBuYW1l KSk7CisJCVJlbGVhc2VTeXNDYWNoZSh0cCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCWVs c2UKKwkJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBnZXRfdHlwbmFtZV9hbmRfbmFtZXNw YWNlCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1lIGFuZCBuYW1lc3BhY2Ugb2YgYSBnaXZl biB0eXBlCisgKgorICogUmV0dXJucyB0cnVlIGlmIG9uZSBmb3VuZCwgb3IgZmFsc2UgaWYg bm90LgorICovCitib29sCitnZXRfdHlwbmFtZV9hbmRfbmFtZXNwYWNlKE9pZCB0eXBpZCwg Y2hhciAqKnR5cG5hbWUsIGNoYXIgKip0eXBuYW1lc3BhY2UpCit7CisJSGVhcFR1cGxlCXRw OworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEoVFlQRU9JRCwgT2JqZWN0SWRHZXREYXR1bSh0 eXBpZCkpOworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHRwKSkKKwl7CisJCUZvcm1fcGdfdHlw ZSB0eXB0dXAgPSAoRm9ybV9wZ190eXBlKSBHRVRTVFJVQ1QodHApOworCisJCSp0eXBuYW1l ID0gcHN0cmR1cChOYW1lU3RyKHR5cHR1cC0+dHlwbmFtZSkpOworCQkqdHlwbmFtZXNwYWNl ID0gZ2V0X25hbWVzcGFjZV9uYW1lKHR5cHR1cC0+dHlwbmFtZXNwYWNlKTsKKwkJUmVsZWFz ZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuICp0eXBuYW1lc3BhY2U7CisJfQorCWVsc2UKKwkJ cmV0dXJuIGZhbHNlOworfQorCiAvKgogICogZ2V0X3R5cGxlbgogICoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaAppbmRleCA0MzBlM2NhN2RkLi5iM2Q5MGRlYWE3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdHJpZ2dlci5oCkBAIC00MSw2ICs0MSw3IEBAIHR5cGVkZWYgc3RydWN0IFRyaWdnZXJE YXRhCiAJVHVwbGVzdG9yZXN0YXRlICp0Z19vbGR0YWJsZTsKIAlUdXBsZXN0b3Jlc3RhdGUg KnRnX25ld3RhYmxlOwogCWNvbnN0IEJpdG1hcHNldCAqdGdfdXBkYXRlZGNvbHM7CisJRm9y UG9ydGlvbk9mU3RhdGUgKnRnX3RlbXBvcmFsOwogfSBUcmlnZ2VyRGF0YTsKIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKaW5kZXggMjMyN2I1NWYxNS4uZGNiZmQwNDhhMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvZXhlY25vZGVzLmgKQEAgLTQxLDEyICs0MSwxNCBAQAogI2luY2x1ZGUgInN0b3Jh Z2UvY29uZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgog I2luY2x1ZGUgInV0aWxzL3F1ZXJ5ZW52aXJvbm1lbnQuaCIKKyNpbmNsdWRlICJ1dGlscy9y YW5nZXR5cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUg InV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1dGlscy9zbmFwc2hvdC5o IgogI2luY2x1ZGUgInV0aWxzL3NvcnRzdXBwb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVw bGVzb3J0LmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgorI2luY2x1ZGUgInV0 aWxzL3R5cGNhY2hlLmgiCiAKIHN0cnVjdCBQbGFuU3RhdGU7CQkJCS8qIGZvcndhcmQgcmVm ZXJlbmNlcyBpbiB0aGlzIGZpbGUgKi8KIHN0cnVjdCBQYXJhbGxlbEhhc2hKb2luU3RhdGU7 CkBAIC00MjQsNiArNDI2LDI4IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQWN0aW9uU3RhdGUK IAlFeHByU3RhdGUgICptYXNfd2hlbnF1YWw7CS8qIFdIRU4gW05PVF0gTUFUQ0hFRCBBTkQg Y29uZGl0aW9ucyAqLwogfSBNZXJnZUFjdGlvblN0YXRlOwogCisvKgorICogRm9yUG9ydGlv bk9mU3RhdGUKKyAqCisgKiBFeGVjdXRvciBzdGF0ZSBvZiBhIEZPUiBQT1JUSU9OIE9GIG9w ZXJhdGlvbi4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgRm9yUG9ydGlvbk9mU3RhdGUKK3sKKwlO b2RlVGFnCQl0eXBlOworCisJY2hhciAgICpmcF9yYW5nZU5hbWU7CQkvKiB0aGUgY29sdW1u L1BFUklPRCBuYW1lZCBpbiBGT1IgUE9SVElPTiBPRiAqLworCU9pZAkJZnBfcmFuZ2VUeXBl OwkJLyogdGhlIHR5cGUgb2YgdGhlIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24gKi8KKwli b29sCWZwX2hhc1BlcmlvZDsJCS8qIHRydWUgaWZmIHRoaXMgaXMgYSBQRVJJT0Qgbm90IGEg cmFuZ2UgKi8KKwlpbnQJCWZwX3JhbmdlQXR0bm87CQkvKiB0aGUgYXR0bm8gb2YgdGhlIHJh bmdlIGNvbHVtbiAob3IgMCBmb3IgYSBQRVJJT0QpICovCisJaW50CQlmcF9wZXJpb2RTdGFy dEF0dG5vOwkvKiB0aGUgYXR0bm8gb2YgdGhlIFBFUklPRCBzdGFydCBjb2x1bW4gKG9yIDAg Zm9yIGEgcmFuZ2UpICovCisJaW50CQlmcF9wZXJpb2RFbmRBdHRubzsJCS8qIHRoZSBhdHRu byBvZiB0aGUgUEVSSU9EIGVuZCBjb2x1bW4gKG9yIDAgZm9yIGEgcmFuZ2UpICovCisJRGF0 dW0JZnBfdGFyZ2V0UmFuZ2U7CQkvKiB0aGUgcmFuZ2UgZnJvbSBGT1IgUE9SVElPTiBPRiAq LworCVR5cGVDYWNoZUVudHJ5ICpmcF9yYW5nZXR5cGNhY2hlOwkvKiB0eXBlIGNhY2hlIGVu dHJ5IG9mIHRoZSByYW5nZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9FeGlzdGluZzsJCS8q IHNsb3QgdG8gc3RvcmUgZXhpc3RpbmcgdGFyZ2V0IHR1cGxlIGluICovCisJVHVwbGVUYWJs ZVNsb3QgKmZwX0xlZnRvdmVyMTsJCS8qIHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgYmVsb3cg dGhlIHRhcmdldCByYW5nZSAqLworCVR1cGxlVGFibGVTbG90ICpmcF9MZWZ0b3ZlcjI7CQkv KiBzbG90IHRvIHN0b3JlIGxlZnRvdmVyIGFib3ZlIHRoZSB0YXJnZXQgcmFuZ2UgKi8KK30g Rm9yUG9ydGlvbk9mU3RhdGU7CisKIC8qCiAgKiBSZXN1bHRSZWxJbmZvCiAgKgpAQCAtNTQ0 LDYgKzU2OCw5IEBAIHR5cGVkZWYgc3RydWN0IFJlc3VsdFJlbEluZm8KIAlMaXN0CSAgICpy aV9tYXRjaGVkTWVyZ2VBY3Rpb247CiAJTGlzdAkgICAqcmlfbm90TWF0Y2hlZE1lcmdlQWN0 aW9uOwogCisJLyogRk9SIFBPUlRJT04gT0YgZXZhbHVhdGlvbiBzdGF0ZSAqLworCUZvclBv cnRpb25PZlN0YXRlICpyaV9mb3JQb3J0aW9uT2Y7CisKIAkvKiBwYXJ0aXRpb24gY2hlY2sg ZXhwcmVzc2lvbiBzdGF0ZSAoTlVMTCBpZiBub3Qgc2V0IHVwIHlldCkgKi8KIAlFeHByU3Rh dGUgICpyaV9QYXJ0aXRpb25DaGVja0V4cHI7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApp bmRleCA0NzliNWZmYTM1Li4xNzdkZjk2Yzg2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5o CkBAIC0xNDgsNiArMTQ4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAkgKi8KIAlpbnQJ CQlyZXN1bHRSZWxhdGlvbiBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiAK KwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KKwlGb3JQ b3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CisKIAkvKiBoYXMgYWdncmVnYXRlcyBpbiB0 bGlzdCBvciBoYXZpbmdRdWFsICovCiAJYm9vbAkJaGFzQWdncyBwZ19ub2RlX2F0dHIocXVl cnlfanVtYmxlX2lnbm9yZSk7CiAJLyogaGFzIHdpbmRvdyBmdW5jdGlvbnMgaW4gdGxpc3Qg Ki8KQEAgLTE1MzcsNiArMTU0MCwxOSBAQCB0eXBlZGVmIHN0cnVjdCBSb3dNYXJrQ2xhdXNl CiAJYm9vbAkJcHVzaGVkRG93bjsJCS8qIHB1c2hlZCBkb3duIGZyb20gaGlnaGVyIHF1ZXJ5 IGxldmVsPyAqLwogfSBSb3dNYXJrQ2xhdXNlOwogCisvKgorICogRm9yUG9ydGlvbk9mQ2xh dXNlCisgKgkJcmVwcmVzZW50YXRpb24gb2YgRk9SIFBPUlRJT04gT0YgPHBlcmlvZC1uYW1l PiBGUk9NIDx0MT4gVE8gPHQyPgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZD bGF1c2UKK3sKKwlOb2RlVGFnCQl0eXBlOworCWNoYXIJICAgKnJhbmdlX25hbWU7CisJaW50 CQkJcmFuZ2VfbmFtZV9sb2NhdGlvbjsKKwlOb2RlCSAgICp0YXJnZXRfc3RhcnQ7CisJTm9k ZQkgICAqdGFyZ2V0X2VuZDsKK30gRm9yUG9ydGlvbk9mQ2xhdXNlOworCiAvKgogICogV2l0 aENsYXVzZSAtCiAgKgkgICByZXByZXNlbnRhdGlvbiBvZiBXSVRIIGNsYXVzZQpAQCAtMTkx NywxMiArMTkzMywxMyBAQCB0eXBlZGVmIHN0cnVjdCBJbnNlcnRTdG10CiAgKi8KIHR5cGVk ZWYgc3RydWN0IERlbGV0ZVN0bXQKIHsKLQlOb2RlVGFnCQl0eXBlOwotCVJhbmdlVmFyICAg KnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gZGVsZXRlIGZyb20gKi8KLQlMaXN0CSAgICp1 c2luZ0NsYXVzZTsJLyogb3B0aW9uYWwgdXNpbmcgY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAq LwotCU5vZGUJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwotCUxpc3QJ ICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICov Ci0JV2l0aENsYXVzZSAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRh ZwkJCQl0eXBlOworCVJhbmdlVmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBk ZWxldGUgZnJvbSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBG T1IgUE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnVzaW5nQ2xhdXNlOwkvKiBv cHRpb25hbCB1c2luZyBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCisJTm9kZQkJCSAgICp3 aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KKwlMaXN0CQkJICAgKnJldHVybmlu Z0xpc3Q7CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVz ZQkJICAgKndpdGhDbGF1c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBEZWxldGVTdG10Owog CiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTMxLDEzICsxOTQ4LDE0IEBAIHR5 cGVkZWYgc3RydWN0IERlbGV0ZVN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgVXBkYXRlU3Rt dAogewotCU5vZGVUYWcJCXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxh dGlvbiB0byB1cGRhdGUgKi8KLQlMaXN0CSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdl dCBsaXN0IChvZiBSZXNUYXJnZXQpICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1 YWxpZmljYXRpb25zICovCi0JTGlzdAkgICAqZnJvbUNsYXVzZTsJCS8qIG9wdGlvbmFsIGZy b20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLwotCUxpc3QJICAgKnJldHVybmluZ0xpc3Q7 CS8qIGxpc3Qgb2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCi0JV2l0aENsYXVzZSAqd2l0 aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCisJTm9kZVRhZwkJCQl0eXBlOworCVJhbmdl VmFyCQkgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byB1cGRhdGUgKi8KKwlGb3JQb3J0 aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xhdXNlICov CisJTGlzdAkJCSAgICp0YXJnZXRMaXN0OwkJLyogdGhlIHRhcmdldCBsaXN0IChvZiBSZXNU YXJnZXQpICovCisJTm9kZQkJCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMg Ki8KKwlMaXN0CQkJICAgKmZyb21DbGF1c2U7CQkvKiBvcHRpb25hbCBmcm9tIGNsYXVzZSBm b3IgbW9yZSB0YWJsZXMgKi8KKwlMaXN0CQkJICAgKnJldHVybmluZ0xpc3Q7CS8qIGxpc3Qg b2YgZXhwcmVzc2lvbnMgdG8gcmV0dXJuICovCisJV2l0aENsYXVzZQkJICAgKndpdGhDbGF1 c2U7CQkvKiBXSVRIIGNsYXVzZSAqLwogfSBVcGRhdGVTdG10OwogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMu aCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDU3MDJmYmJhNjAuLmQy YmU3ZjI2ZDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0yMzUyLDYgKzIzNTIsNyBA QCB0eXBlZGVmIHN0cnVjdCBNb2RpZnlUYWJsZVBhdGgKIAlMaXN0CSAgICpyZXR1cm5pbmdM aXN0czsgLyogcGVyLXRhcmdldC10YWJsZSBSRVRVUk5JTkcgdGxpc3RzICovCiAJTGlzdAkg ICAqcm93TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJ T25Db25mbGljdEV4cHIgKm9uY29uZmxpY3Q7IC8qIE9OIENPTkZMSUNUIGNsYXVzZSwgb3Ig TlVMTCAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJ T04gT0YgY2xhdXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJaW50CQkJZXBxUGFyYW07CQkv KiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8KIAlMaXN0CSAgICpt ZXJnZUFjdGlvbkxpc3RzOwkvKiBwZXItdGFyZ2V0LXRhYmxlIGxpc3RzIG9mIGFjdGlvbnMg Zm9yCiAJCQkJCQkJCQkgKiBNRVJHRSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGxhbm5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAppbmRleCAx Yjc4N2ZlMDMxLi4yYmNhNzA4NmUyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMjQz LDYgKzI0Myw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlCiAJTGlzdAkgICAqcm93 TWFya3M7CQkvKiBQbGFuUm93TWFya3MgKG5vbi1sb2NraW5nIG9ubHkpICovCiAJaW50CQkJ ZXBxUGFyYW07CQkvKiBJRCBvZiBQYXJhbSBmb3IgRXZhbFBsYW5RdWFsIHJlLWV2YWwgKi8K IAlPbkNvbmZsaWN0QWN0aW9uIG9uQ29uZmxpY3RBY3Rpb247CS8qIE9OIENPTkZMSUNUIGFj dGlvbiAqLworCU5vZGUJICAgKmZvclBvcnRpb25PZjsJLyogRk9SIFBPUlRJT04gT0YgY2xh dXNlIGZvciBVUERBVEUvREVMRVRFICovCiAJTGlzdAkgICAqYXJiaXRlckluZGV4ZXM7IC8q IExpc3Qgb2YgT04gQ09ORkxJQ1QgYXJiaXRlciBpbmRleCBPSURzICAqLwogCUxpc3QJICAg Km9uQ29uZmxpY3RTZXQ7CS8qIElOU0VSVCBPTiBDT05GTElDVCBETyBVUERBVEUgdGFyZ2V0 bGlzdCAqLwogCUxpc3QJICAgKm9uQ29uZmxpY3RDb2xzOyAvKiB0YXJnZXQgY29sdW1uIG51 bWJlcnMgZm9yIG9uQ29uZmxpY3RTZXQgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKaW5kZXgg NjBkNzJhODc2Yi4uYjNjNmY2Y2VjZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKQEAgLTIw NDEsNCArMjA0MSwyOSBAQCB0eXBlZGVmIHN0cnVjdCBPbkNvbmZsaWN0RXhwcgogCUxpc3QJ ICAgKmV4Y2xSZWxUbGlzdDsJLyogdGxpc3Qgb2YgdGhlIEVYQ0xVREVEIHBzZXVkbyByZWxh dGlvbiAqLwogfSBPbkNvbmZsaWN0RXhwcjsKIAorLyotLS0tLS0tLS0tCisgKiBGb3JQb3J0 aW9uT2ZFeHByIC0gcmVwcmVzZW50cyBhIEZPUiBQT1JUSU9OIE9GIC4uLiBleHByZXNzaW9u CisgKgorICogV2Ugc2V0IHVwIGFuIGV4cHJlc3Npb24gdG8gbWFrZSBhIHJhbmdlIGZyb20g dGhlIEZST00vVE8gYm91bmRzLAorICogc28gdGhhdCB3ZSBjYW4gdXNlIHJhbmdlIG9wZXJh dG9ycyB3aXRoIGl0LgorICoKKyAqIFRoZW4gd2Ugc2V0IHVwIGFuIG92ZXJsYXBzIGV4cHJl c3Npb24gYmV0d2VlbiB0aGF0IGFuZCB0aGUgcmFuZ2UgY29sdW1uLAorICogc28gdGhhdCB3 ZSBjYW4gZmluZCB0aGUgcm93cyB3ZSBuZWVkIHRvIHVwZGF0ZS9kZWxldGUuCisgKgorICog SW4gdGhlIGV4ZWN1dG9yIHdlJ2xsIGFsc28gYnVpbGQgYW4gaW50ZXJzZWN0IGV4cHJlc3Np b24gYmV0d2VlbiB0aGUKKyAqIHRhcmdldGVkIHJhbmdlIGFuZCB0aGUgcmFuZ2UgY29sdW1u LCBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgdGhlIHN0YXJ0L2VuZAorICogYm91bmRzIG9mIHRo ZSBVUERBVEUnZCByZWNvcmQuCisgKi0tLS0tLS0tLS0KKyAqLwordHlwZWRlZiBzdHJ1Y3Qg Rm9yUG9ydGlvbk9mRXhwcgoreworCU5vZGVUYWcJCXR5cGU7CisJVmFyCQkgICAqcmFuZ2VW YXI7CQkJLyogUmFuZ2UgY29sdW1uICovCisJY2hhcgkgICAqcmFuZ2VfbmFtZTsJCQkvKiBS YW5nZSBuYW1lICovCisJTm9kZQkgICAqdGFyZ2V0UmFuZ2U7CQkvKiBGT1IgUE9SVElPTiBP RiBib3VuZHMgYXMgYSByYW5nZSAqLworCU9pZAkJCXJhbmdlVHlwZTsJCQkvKiB0eXBlIG9m IHRhcmdldFJhbmdlICovCisJTm9kZQkgICAqb3ZlcmxhcHNFeHByOwkJLyogcmFuZ2UgJiYg dGFyZ2V0UmFuZ2UgKi8KKwlMaXN0CSAgICpyYW5nZVNldDsJCQkvKiBMaXN0IG9mIFRhcmdl dEVudHJ5cyB0byBzZXQgdGhlIHRpbWUgY29sdW1uKHMpICovCit9IEZvclBvcnRpb25PZkV4 cHI7CisKICNlbmRpZgkJCQkJCQkvKiBQUklNTk9ERVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aG5vZGUuaAppbmRleCA2ZTU1N2JlYmM0Li5jOTMyZDEyMDRjIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aG5vZGUuaApAQCAtMjgzLDcgKzI4Myw4IEBAIGV4dGVybiBNb2RpZnlUYWJs ZVBhdGggKmNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJ CQkJCQkJCQkJTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJCQkJCQkJCQlMaXN0ICp3 aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkJ CQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4cHIgKm9uY29uZmxpY3QsCi0JCQkJCQkJ CQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pOworCQkJCQkJCQkJ CQkJTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQkJCQkJCUZvclBvcnRpb25PZkV4 cHIgKmZvclBvcnRpb25PZiwgaW50IGVwcVBhcmFtKTsKIGV4dGVybiBMaW1pdFBhdGggKmNy ZWF0ZV9saW1pdF9wYXRoKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJ CQkJCQkJCQlQYXRoICpzdWJwYXRoLAogCQkJCQkJCQkJTm9kZSAqbGltaXRPZmZzZXQsIE5v ZGUgKmxpbWl0Q291bnQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6 ZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAppbmRleCBjOTY0ODNhZTc4Li5i NmQ1MDY1ZTEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCisr KyBiL3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKQEAgLTQzLDcgKzQzLDggQEAgZXh0 ZXJuIExpc3QgKnRyYW5zZm9ybUluc2VydFJvdyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3Qg KmV4cHJsaXN0LAogCQkJCQkJCQlMaXN0ICpzdG10Y29scywgTGlzdCAqaWNvbHVtbnMsIExp c3QgKmF0dHJub3MsCiAJCQkJCQkJCWJvb2wgc3RyaXBfaW5kaXJlY3Rpb24pOwogZXh0ZXJu IExpc3QgKnRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QoUGFyc2VTdGF0ZSAqcHN0YXRlLAot CQkJCQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0KTsKKwkJCQkJCQkJCSAgIExpc3QgKm9yaWdU bGlzdCwKKwkJCQkJCQkJCSAgIEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZik7CiBl eHRlcm4gUXVlcnkgKnRyYW5zZm9ybVRvcExldmVsU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IFJhd1N0bXQgKnBhcnNlVHJlZSk7CiBleHRlcm4gUXVlcnkgKnRyYW5zZm9ybVN0bXQoUGFy c2VTdGF0ZSAqcHN0YXRlLCBOb2RlICpwYXJzZVRyZWUpOwogCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgK aW5kZXggY2NmNWJmOGFhNi4uYzg5Y2VlYTlmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaApAQCAt MzMwLDYgKzMzMCw3IEBAIFBHX0tFWVdPUkQoInBlcmlvZCIsIFBFUklPRCwgUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBS RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbnMiLCBQTEFO UywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicG9saWN5 IiwgUE9MSUNZLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JE KCJwb3J0aW9uIiwgUE9SVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgicG9zaXRpb24iLCBQT1NJVElPTiwgQ09MX05BTUVfS0VZV09SRCwgQkFS RV9MQUJFTCkKIFBHX0tFWVdPUkQoInByZWNlZGluZyIsIFBSRUNFRElORywgVU5SRVNFUlZF RF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2lzaW9uIiwgUFJFQ0lT SU9OLCBDT0xfTkFNRV9LRVlXT1JELCBBU19MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9k ZS5oCmluZGV4IGY1ODkxMTJkNWUuLjBkNjAxZjM0YTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X25vZGUuaApAQCAtNTYsNiArNTYsNyBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAog CUVYUFJfS0lORF9VUERBVEVfU09VUkNFLAkvKiBVUERBVEUgYXNzaWdubWVudCBzb3VyY2Ug aXRlbSAqLwogCUVYUFJfS0lORF9VUERBVEVfVEFSR0VULAkvKiBVUERBVEUgYXNzaWdubWVu dCB0YXJnZXQgaXRlbSAqLwogCUVYUFJfS0lORF9NRVJHRV9XSEVOLAkJLyogTUVSR0UgV0hF TiBbTk9UXSBNQVRDSEVEIGNvbmRpdGlvbiAqLworCUVYUFJfS0lORF9VUERBVEVfUE9SVElP TiwJLyogVVBEQVRFIEZPUiBQT1JUSU9OIE9GIGl0ZW0gKi8KIAlFWFBSX0tJTkRfR1JPVVBf QlksCQkJLyogR1JPVVAgQlkgKi8KIAlFWFBSX0tJTkRfT1JERVJfQlksCQkJLyogT1JERVIg QlkgKi8KIAlFWFBSX0tJTkRfRElTVElOQ1RfT04sCQkvKiBESVNUSU5DVCBPTiAqLwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmggYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaAppbmRleCBmNWZkYmZlMTE2Li5hMTE3NTI3ZDhhIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91 dGlscy9sc3lzY2FjaGUuaApAQCAtMTQzLDYgKzE0Myw4IEBAIGV4dGVybiBjaGFyIGdldF9y ZWxfcGVyc2lzdGVuY2UoT2lkIHJlbGlkKTsKIGV4dGVybiBPaWQJZ2V0X3RyYW5zZm9ybV9m cm9tc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAqdHJmdHlwZXMpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX3Rvc3FsKE9pZCB0eXBpZCwgT2lkIGxhbmdpZCwgTGlzdCAq dHJmdHlwZXMpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpOwor ZXh0ZXJuIGNoYXIgKmdldF90eXBuYW1lKE9pZCB0eXBpZCk7CitleHRlcm4gYm9vbCBnZXRf dHlwbmFtZV9hbmRfbmFtZXNwYWNlKE9pZCB0eXBpZCwgY2hhciAqKnR5cG5hbWUsIGNoYXIg Kip0eXBuYW1lc3BhY2UpOwogZXh0ZXJuIGludDE2IGdldF90eXBsZW4oT2lkIHR5cGlkKTsK IGV4dGVybiBib29sIGdldF90eXBieXZhbChPaWQgdHlwaWQpOwogZXh0ZXJuIHZvaWQgZ2V0 X3R5cGxlbmJ5dmFsKE9pZCB0eXBpZCwgaW50MTYgKnR5cGxlbiwgYm9vbCAqdHlwYnl2YWwp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmggYi9zcmMvaW5jbHVk ZS91dGlscy9wZXJpb2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw Li4wYThhZjNlZGIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGVy aW9kLmgKQEAgLTAsMCArMSwxOSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICog cGVyaW9kLmgKKyAqCSAgc3VwcG9ydCBmb3IgUG9zdGdyZXMgcGVyaW9kcy4KKyAqCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjIsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNs dWRlL3V0aWxzL3BlcmlvZC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgUEVSSU9EX0gKKyNkZWZpbmUgUEVSSU9EX0gKKworZXh0ZXJuIERhdHVtIHBlcmlv ZF90b19yYW5nZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBl bmRhdHRubywgT2lkIHJhbmdldHlwZSk7CisKKyNlbmRpZgkJCQkJCQkvKiBQRVJJT0RfSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvcmFuZ2V0eXBlcy5oCmluZGV4IDZiNDIwYTg2MTguLjQ4ZWUyZGViZWQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaAorKysgYi9zcmMv aW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKQEAgLTE2NCw1ICsxNjQsOCBAQCBleHRlcm4g UmFuZ2VUeXBlICptYWtlX2VtcHR5X3JhbmdlKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSk7 CiBleHRlcm4gYm9vbCByYW5nZV9zcGxpdF9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlw Y2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCiAJCQkJCQkJCSBjb25zdCBSYW5nZVR5cGUg KnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAogCQkJCQkJCQkgUmFuZ2VUeXBlICoqb3V0cHV0 Mik7CitleHRlcm4gdm9pZCByYW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbChUeXBlQ2FjaGVFbnRy eSAqdHlwY2FjaGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCisJCQkJCQkJCQljb25zdCBSYW5n ZVR5cGUgKnIyLCBSYW5nZVR5cGUgKipvdXRwdXQxLAorCQkJCQkJCQkJUmFuZ2VUeXBlICoq b3V0cHV0Mik7CiAKICNlbmRpZgkJCQkJCQkvKiBSQU5HRVRZUEVTX0ggKi8KZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMzA5MTliNTVlNQotLS0gL2Rldi9udWxsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC0w LDAgKzEsNDMxIEBACistLSBUZXN0cyBmb3IgVVBEQVRFL0RFTEVURSBGT1IgUE9SVElPTiBP RgorLS0gV29ya3Mgb24gbm9uLVBLIGNvbHVtbnMKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlv bl9vZl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorICBu YW1lIHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0 IFZBTFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDIwLTAxLTAxKScsICdvbmUnKTsK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2Zvbyc7CitE RUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTE1JyBUTyBVTkJPVU5ERUQ7CitTRUxFQ1QgKiBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlk X2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LQorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IGZvbworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIw MTgiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJUdWUg SmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJUdWUgSmFuIDE1IDAwOjAwOjAwIDIwMTkiKSB8IG9u ZQorKDMgcm93cykKKworLS0gV29ya3Mgb24gbW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBU QUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29m X3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxp ZDJfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMiknLCAnWzIwMTgtMDEtMDIsMjAx OC0wMi0wMyknLCAnWzIwMTUtMDEtMDEsMjAyNS0wMS0wMSknLCAnb25lJyk7CitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIw MTgtMDEtMTUnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnZm9vJzsKK1NFTEVDVCAqIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAg MjAxNSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgZm9vCisgWzEsMikgfCBbIlR1 ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg WyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUi KSB8IG9uZQorKDIgcm93cykKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5ERUQKK1NF VCBuYW1lID0gJ2Jhcic7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7Cisg IGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAg ICAgICAgICAgICAgICB8IG5hbWUgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikg fCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAx OCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1 IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEph biAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwg YmFyCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUg MDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFu IDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorKDQgcm93cykKKworREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgt MDEtMjAnIFRPIFVOQk9VTkRFRDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQxX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkMl9hdCAgICAg ICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBb MSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAx OCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAwOjAw IDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwgWyJN b24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8 IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1 IikgfCBiYXIKKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0IEph biAyMCAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1v biBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgZm9vCisoNCByb3dzKQorCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDJfYXQgRlJPTSAn MjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDFfYXQgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0 ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IikgfCBvbmUKKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDow MCAyMDE4IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6 MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgZm9vCisgWzEsMikg fCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAx OCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAw IDIwMTgiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJT YXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4 IiwiU2F0IEphbiAyMCAwMDowMDowMCAyMDE4IikgfCBiYXIKKyg0IHJvd3MpCisKK0RST1Ag VEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9v Zl90ZXN0ICgKKyAgaWQgaW50NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCB0c3Jhbmdl IE5PVCBOVUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9y dGlvbl9vZl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDIp JywgJ1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwyKScsICdbMjAx OC0wMi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEsMiknLCAnWzIwMTgtMDMtMDMs MjAxOC0wNC0wNCknLCAnb25lJyksCisoJ1syLDMpJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEt MDUpJywgJ3R3bycpLAorKCdbMyw0KScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCiso J1s0LDUpJywgJygsMjAxOC0wNC0wMSknLCAnZm91cicpLAorKCdbNSw2KScsICcoLCknLCAn Zml2ZScpCis7CistLQorLS0gVVBEQVRFIHRlc3RzCistLQorLS0gU2V0dGluZyB3aXRoIGEg bWlzc2luZyBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAor U0VUIG5hbWUgPSAnZm9vJworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBjb2x1bW4g b3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9yX3BvcnRpb25fb2ZfdGVz dCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKKyAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gU2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90 ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJP VU5ERUQKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0wMS0wMSwxOTk5LTAxLTAxKScKK1dIRVJF IGlkID0gJ1s1LDYpJzsKK0VSUk9SOiAgY2FuJ3QgZGlyZWN0bHkgYXNzaWduIHRvICJ2YWxp ZF9hdCIgaW4gYSBGT1IgUE9SVElPTiBPRiB1cGRhdGUKK0xJTkUgMzogU0VUIHZhbGlkX2F0 ID0gJ1sxOTkwLTAxLTAxLDE5OTktMDEtMDEpJworICAgICAgICAgICAgXgorLS0gVGhlIHdy b25nIHR5cGUgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlk ID0gJ1szLDQpJzsKK0VSUk9SOiAgZnVuY3Rpb24gcGdfY2F0YWxvZy50c3JhbmdlKGludGVn ZXIsIGludGVnZXIpIGRvZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gMSBUTyA0CisgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBO byBmdW5jdGlvbiBtYXRjaGVzIHRoZSBnaXZlbiBuYW1lIGFuZCBhcmd1bWVudCB0eXBlcy4g WW91IG1pZ2h0IG5lZWQgdG8gYWRkIGV4cGxpY2l0IHR5cGUgY2FzdHMuCistLSBTZXR0aW5n IHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcy MDE4LTAxLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDQpJzsK K0VSUk9SOiAgcmFuZ2UgbG93ZXIgYm91bmQgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwg dG8gcmFuZ2UgdXBwZXIgYm91bmQKKy0tIFNldHRpbmcgd2l0aCBhIHN1YnF1ZXJ5IGZhaWxz CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYtMDEnCitTRVQgbmFtZSA9 ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICBjYW5ub3QgdXNlIHN1YnF1 ZXJ5IGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb24KK0xJTkUgMjogRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtLi4uCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2V0dGluZyB3aXRo IGEgY29sdW1uIGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8gVU5CT1VOREVECitTRVQg bmFtZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICBjYW5ub3QgdXNl IGNvbHVtbiByZWZlcmVuY2UgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgorTElORSAy OiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBVTkJP VU5ERUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBTZXR0aW5nIHdpdGggdGltZXN0YW1wcyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQREFURSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBp ZCA9ICdbMyw0KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24gd2l0aCBh IGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorU0VU IG5hbWUgPSAndGhyZWVeMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGEg ZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5C T1VOREVEIFRPICcyMDE4LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlk ID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBh biBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyAnMjAxOC0wMi0wMScKK1NF VCBuYW1lID0gJ2ZvdXJeMScKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKy0tIFVwZGF0aW5nIGFu IG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhIGZpbml0ZS9vcGVuIHRhcmdldAorVVBEQVRF IGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTctMDEtMDEnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnZm91cl4yJworV0hFUkUgaWQg PSAnWzQsNSknOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBh biBleGFjdCBmaXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1l ID0gJ2ZvdXJeMycKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xv c2VkIHNwYW4KK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3R3b14y JworV0hFUkUgaWQgPSAnWzIsMyknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9vcGVuIHBvcnRp b24gd2l0aCBhIGZpbml0ZS9maW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMScgVE8gJzIw MTktMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjInCitXSEVSRSBpZCA9ICdbNSw2KSc7Cist LSBVcGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBz cGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2 ZV4zJworV0hFUkUgaWQgPSAnWzUsNiknOworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9z ZWQgc3BhbnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVSRSBp ZCA9ICdbMSwyKSc7CistLSBVcGRhdGluZyB3aXRoIGEgc2hpZnQvcmVkdWNlIGNvbmZsaWN0 CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQK KyAgRlJPTSAnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcxJyBIT1VSIFRP IE1JTlVURQorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV4zJworV0hFUkUg aWQgPSAnWzEsMiknOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZB TCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hF UkUgaWQgPSAnWzEsMiknOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiJzIw MTktMDEtMDEnIgorTElORSA0OiAgIFRPICcyMDE5LTAxLTAxJworICAgICAgICAgICAgIF4K K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAor ICBGUk9NICgnMjAxOC0wMy0wMScgQVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSKQor ICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40JworV0hFUkUgaWQgPSAnWzEs MiknOworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5nZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFU RSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAnWzYsNyknCitXSEVSRSBpZCA9ICdbMSwy KSc7CistLSBVUERBVEUgd2l0aCBubyBXSEVSRSBjbGF1c2UKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDMwLTAxLTAxJyBU TyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOworU0VMRUNUICogRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIG5h bWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAw MDowMDowMCAyMDE4IiwiU2F0IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsx LDIpIHwgWyJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAw IDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJl ZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbMyw0KSB8IFsiRnJpIEp1biAwMSAwMDowMDow MCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCB0aHJlZV4xCisgWzMsNCkg fCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgdGhyZWVeMSoKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIp ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEph biAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3Vy XjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAw MDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6 MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBb IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIp IHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgZml2ZV4zCisgWzUsNikgfCBbIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgZml2ZV4zCisg WzUsNikgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEgMDA6MDA6 MDAgMjAzMCIpIHwgZml2ZQorIFs1LDYpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAi LCkgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZpdmUqCisgWzYsNykgfCBbIlRodSBG ZWIgMTUgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDg6MDE6MDAgMjAxOCIpIHwgb25l XjIKKyBbNiw3KSB8IFsiVGh1IE1hciAwMSAwODowMTowMCAyMDE4IiwiVGh1IE1hciAwMSAx MDowMDowMCAyMDE4IikgfCBvbmVeMworIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDEwOjAwOjAw IDIwMTgiLCJTYXQgTWFyIDAzIDAwOjAwOjAwIDIwMTgiKSB8IG9uZV40CisgWzYsNykgfCBb IlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIsIldlZCBBcHIgMDQgMDA6MDA6MDAgMjAxOCIp IHwgb25lXjQKKygyMCByb3dzKQorCistLQorLS0gREVMRVRFIHRlc3RzCistLQorLS0gRGVs ZXRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1uIGZhaWxzCitERUxFVEUgRlJPTSBmb3JfcG9y dGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s1LDYpJzsKK0VSUk9SOiAgY29sdW1uIG9yIHBl cmlvZCAiaW52YWxpZF9hdCIgb2YgcmVsYXRpb24gImZvcl9wb3J0aW9uX29mX3Rlc3QiIGRv ZXMgbm90IGV4aXN0CitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAn MjAxOC0wNi0wMScgVE8gTlVMTAorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBEZWxl dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYt MDEnIFRPICcyMDE4LTAxLTAxJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICByYW5n ZSBsb3dlciBib3VuZCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBl ciBib3VuZAorLS0gRGVsZXRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRvZXMgbm90aGlu ZworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gJzIwMTgtMDQtMDEnCitXSEVSRSBpZCA9ICdb Myw0KSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Nsb3NlZCB0YXJnZXQKK0RFTEVU RSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gJzIwMTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hFUkUgaWQgPSAnWzUsNiknOwor LS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w NC0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzMsNCknOworLS0gRGVsZXRpbmcgd2l0aCBh biBvcGVuL2Nsb3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyAnMjAxOC0wMi0wOCcKK1dI RVJFIGlkID0gJ1sxLDIpJzsKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9vcGVuIHRhcmdl dAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJFIGlkID0gJ1s2LDcpJzsKKy0tIERFTEVU RSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNS0wMS0wMScgVE8gTlVMTDsK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgIG5hbWUgICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLQorIFsx LDIpIHwgWyJUaHUgRmViIDA4IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAw IDIwMTgiKSB8IG9uZV4yCisgWzIsMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIs IkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpIHwgdHdvXjIKKyBbMyw0KSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJl ZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEg MDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6 MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmb3VyXjEKKyBbNCw1KSB8 IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiU3Vu IEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBbNSw2KSB8ICgsIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmaXZlCisg WzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAx OCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1v biBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwg Zml2ZQorKDExIHJvd3MpCisKKy0tIFVQREFURSAuLi4gUkVUVVJOSU5HIHJldHVybnMgb25s eSB0aGUgdXBkYXRlZCB2YWx1ZXMgKG5vdCB0aGUgaW5zZXJ0ZWQgc2lkZSB2YWx1ZXMpCitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMi0wMScgVE8gJzIwMTgtMDItMTUnCitTRVQgbmFtZSA9ICd0aHJlZV4zJwor V0hFUkUgaWQgPSAnWzMsNCknCitSRVRVUk5JTkcgKjsKKyAgaWQgICB8ICAgICAgICAgICAg ICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAg IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tCisgWzMsNCkgfCBbIlRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCIsIlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMworKDEgcm93 KQorCistLSB0ZXN0IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRF ZCByb3cgYW5kIHRoZSBJTlNFUlRlZCByb3dzCitDUkVBVEUgRlVOQ1RJT04gZm9yX3BvcnRp b25fb2ZfdHJpZ2dlcigpCitSRVRVUk5TIHRyaWdnZXIKK0FTCiskJAorQkVHSU4KKyAgUkFJ U0UgTk9USUNFICclICUgJSBvZiAlJywgVEdfV0hFTiwgVEdfT1AsIE5FVy52YWxpZF9hdCwg T0xELnZhbGlkX2F0OworICBJRiBUR19PUCA9ICdERUxFVEUnIFRIRU4KKyAgICBSRVRVUk4g T0xEOworICBFTFNFCisgICAgUkVUVVJOIE5FVzsKKyAgRU5EIElGOworRU5EOworJCQKK0xB TkdVQUdFIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVm b3JlX2luc2VydAorICBCRUZPUkUgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAg Rk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dl cigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2luc2VydAor ICBBRlRFUiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cK KyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUg VFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX3VwZGF0ZQorICBCRUZPUkUgVVBE QVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUg RlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJn X2Zvcl9wb3J0aW9uX29mX2FmdGVyX3VwZGF0ZQorICBBRlRFUiBVUERBVEUgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3Jf cG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25f b2ZfYmVmb3JlX2RlbGV0ZQorICBCRUZPUkUgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rl c3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2Zf dHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2Rl bGV0ZQorICBBRlRFUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFD SCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAyMS0wMS0wMScgVE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjQnCitX SEVSRSBpZCA9ICdbNSw2KSc7CitOT1RJQ0U6ICBCRUZPUkUgVVBEQVRFIFsiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIikgb2YgWyJNb24g SnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorTk9U SUNFOiAgQkVGT1JFIElOU0VSVCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBK YW4gMDEgMDA6MDA6MDAgMjAyMSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQkVGT1JFIElOU0VS VCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy NSIpIG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiTW9uIEp1biAwMSAwMDow MDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+CitOT1RJ Q0U6ICBBRlRFUiBJTlNFUlQgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIFVQREFURSBb IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIsIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIp IG9mIFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAwMSAwMDowMDowMCAy MDI1IikKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJworV0hFUkUgaWQg PSAnWzUsNiknOworTk9USUNFOiAgQkVGT1JFIERFTEVURSA8TlVMTD4gb2YgWyJTYXQgSmFu IDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorTk9USUNF OiAgQkVGT1JFIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIlN1biBKYW4g MDEgMDA6MDA6MDAgMjAyMyIpIG9mIDxOVUxMPgorTk9USUNFOiAgQkVGT1JFIElOU0VSVCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIp IG9mIDxOVUxMPgorTk9USUNFOiAgQUZURVIgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDow MCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJQ0U6 ICBBRlRFUiBJTlNFUlQgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMjQiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjUiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIERFTEVURSA8TlVM TD4gb2YgWyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjUiKQorU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0IE9SREVSIEJZIGlk LCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMTUg MDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29eMgorIFszLDQpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgi KSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1 IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCB0aHJlZV4zCisgWzMsNCkgfCBbIlRodSBGZWIg MTUgMDA6MDA6MDAgMjAxOCIsIlRodSBNYXIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVe MgorIFszLDQpIHwgWyJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlCisgWzQsNSkgfCAoLCJTdW4gSmFuIDAxIDAwOjAwOjAw IDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZm91cl4xCisgWzQsNSkgfCBb IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIsIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIp IHwgZm91cl4zCisgWzQsNSkgfCBbIlRodSBGZWIgMDEgMDA6MDA6MDAgMjAxOCIsIlN1biBB cHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgZm91cl4yCisgWzUsNikgfCAoLCJTdW4gSmFuIDAx IDAwOjAwOjAwIDIwMTciKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2ZQorIFs1 LDYpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJNb24gSmFuIDAxIDAwOjAwOjAw IDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgi LCJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZpdmVeMworIFs1LDYpIHwgWyJNb24g SnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IGZp dmUKKyBbNSw2KSB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEphbiAwMSAw MDowMDowMCAyMDIyIikgfCBmaXZlXjQKKyBbNSw2KSB8IFsiU2F0IEphbiAwMSAwMDowMDow MCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgfCBmaXZlCisgWzUsNikgfCBb Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIp IHwgZml2ZQorKDE2IHJvd3MpCisKKy0tIFRlc3Qgd2l0aCBhIGN1c3RvbSByYW5nZSB0eXBl CitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBlPWRhdGUpOworQ1JF QVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyICgKKyAgaWQgaW50NHJhbmdlIE5PVCBO VUxMLAorICB2YWxpZF9hdCBteWRhdGVyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0IE5P VCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfdGVzdDJfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZv cl9wb3J0aW9uX29mX3Rlc3QyCitWQUxVRVMKKygnWzEsMV0nLCAnWzIwMTgtMDEtMDIsMjAx OC0wMi0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMp JywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUn KSwKKygnWzIsMl0nLCAnWzIwMTgtMDEtMDEsMjAxOC0wNS0wMSknLCAndHdvJyksCisoJ1sz LDNdJywgJ1syMDE4LTAxLTAxLCknLCAndGhyZWUnKTsKKzsKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xMCcg VE8gJzIwMTgtMDItMTAnCitTRVQgbmFtZSA9ICdvbmVeMScKK1dIRVJFIGlkID0gJ1sxLDFd JzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOC0wMi0xNScKK1dIRVJFIGlkID0g J1syLDJdJzsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1l ICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikg fCBbMDEtMDItMjAxOCwwMS0xMC0yMDE4KSB8IG9uZQorIFsxLDIpIHwgWzAxLTEwLTIwMTgs MDItMDMtMjAxOCkgfCBvbmVeMQorIFsxLDIpIHwgWzAyLTAzLTIwMTgsMDItMTAtMjAxOCkg fCBvbmVeMQorIFsxLDIpIHwgWzAyLTEwLTIwMTgsMDMtMDMtMjAxOCkgfCBvbmUKKyBbMSwy KSB8IFswMy0wMy0yMDE4LDA0LTA0LTIwMTgpIHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAx OCwwMS0xNS0yMDE4KSB8IHR3bworIFsyLDMpIHwgWzAyLTE1LTIwMTgsMDUtMDEtMjAxOCkg fCB0d28KKyBbMyw0KSB8IFswMS0wMS0yMDE4LCkgICAgICAgICAgIHwgdGhyZWUKKyg4IHJv d3MpCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDI7CitEUk9QIFRZUEUgbXlk YXRlcmFuZ2U7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZp bGVnZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApp bmRleCBjMWU2MTBlNjJmLi5jZjJjN2RmOTAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcHJpdmlsZWdlcy5vdXQKQEAgLTk4NSw2ICs5ODUsMjQgQEAgRVJST1I6ICBudWxs IHZhbHVlIGluIGNvbHVtbiAiYiIgb2YgcmVsYXRpb24gImVycnRzdF9wYXJ0XzIiIHZpb2xh dGVzIG5vdC1udWxsIGMKIERFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zIChhLCBiLCBj KSA9IChhYWFhLCBudWxsLCBjY2MpLgogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjE7CiBEUk9QIFRBQkxFIGVycnRzdDsKKy0tIHRlc3QgY29sdW1uLWxl dmVsIHByaXZpbGVnZXMgb24gdGhlIHJhbmdlL1BFUklPRCB1c2VkIGluIEZPUiBQT1JUSU9O IE9GCitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0NS RUFURSBUQUJMRSB0MSAoCisgIGMxIGludDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwK KwlDT05TVFJBSU5UIHQxcGsgUFJJTUFSWSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9W RVJMQVBTKQorKTsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7 CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIzOworR1JBTlQgVVBE QVRFIChjMSkgT04gdDEgVE8gcmVncmVzc19wcml2X3VzZXIyOworR1JBTlQgVVBEQVRFIChj MSwgdmFsaWRfYXQpIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1NFVCBTRVNTSU9O IEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIyOworVVBEQVRFIHQxIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQg YzEgPSAnWzIsMyknOworRVJST1I6ICBwZXJtaXNzaW9uIGRlbmllZCBmb3IgdGFibGUgdDEK K1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIzOworVVBEQVRF IHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMDEnIFRPICcyMDAx LTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiBy ZWdyZXNzX3ByaXZfdXNlcjE7CitEUk9QIFRBQkxFIHQxOwogLS0gdGVzdCBjb2x1bW4tbGV2 ZWwgcHJpdmlsZWdlcyB3aGVuIGludm9sdmVkIHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBB VVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBB REQgQ09MVU1OIHRocmVlIGludGVnZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3VwZGF0YWJsZV92aWV3cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKaW5kZXggMTk1MGU2ZjI4MS4uZjRiODhiY2MzOCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91 dApAQCAtMzAyMyw2ICszMDIzLDM4IEBAIHNlbGVjdCAqIGZyb20gdXZfaW9jdV90YWI7CiAK IGRyb3AgdmlldyB1dl9pb2N1X3ZpZXc7CiBkcm9wIHRhYmxlIHV2X2lvY3VfdGFiOworLS0g Q2hlY2sgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdvcmtzIGNvcnJlY3RseQorY3JlYXRlIHRh YmxlIHV2X2Zwb190YWIgKGlkIGludDRyYW5nZSwgdmFsaWRfYXQgdHNyYW5nZSwgYiBmbG9h dCwKKyAgICBjb25zdHJhaW50IHBrX3V2X2Zwb190YWIgcHJpbWFyeSBrZXkgKGlkLCB2YWxp ZF9hdCB3aXRob3V0IG92ZXJsYXBzKSk7CitpbnNlcnQgaW50byB1dl9mcG9fdGFiIHZhbHVl cyAoJ1sxLDFdJywgJ1syMDIwLTAxLTAxLCAyMDMwLTAxLTAxKScsIDApOworY3JlYXRlIHZp ZXcgdXZfZnBvX3ZpZXcgYXMKKyAgICBzZWxlY3QgYiwgYisxIGFzIGMsIHZhbGlkX2F0LCBp ZCwgJzIuMCc6OnRleHQgYXMgdHdvIGZyb20gdXZfZnBvX3RhYjsKK2luc2VydCBpbnRvIHV2 X2Zwb192aWV3IChpZCwgdmFsaWRfYXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDEwLTAx LTAxLCAyMDIwLTAxLTAxKScsIDEpOworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKyBi IHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAw IHwgMSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiVHVlIEphbiAwMSAwMDowMDow MCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMTAiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxLDIpIHwgMi4wCisoMiBy b3dzKQorCit1cGRhdGUgdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJv bSAnMjAxNS0wMS0wMScgdG8gJzIwMjAtMDEtMDEnIHNldCBiID0gMiB3aGVyZSBpZCA9ICdb MSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAg IHwgdHdvIAorLS0tKy0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIp IHwgMi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIpIHwgWzEsMikgfCAyLjAKKyAxIHwgMiB8IFsiRnJpIEphbiAw MSAwMDowMDowMCAyMDEwIiwiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8 IDIuMAorKDMgcm93cykKKworZGVsZXRlIGZyb20gdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24g b2YgdmFsaWRfYXQgZnJvbSAnMjAxNy0wMS0wMScgdG8gJzIwMjItMDEtMDEnIHdoZXJlIGlk ID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7CisgYiB8IGMgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg IGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMSB8IDIgfCBbIkZy aSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIpIHwg WzEsMikgfCAyLjAKKyAwIHwgMSB8IFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiVHVl IEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBbMSwyKSB8IDIuMAorIDIgfCAzIHwgWyJUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciKSB8IFsx LDIpIHwgMi4wCisoMyByb3dzKQorCiAtLSBUZXN0IHdob2xlLXJvdyByZWZlcmVuY2VzIHRv IHRoZSB2aWV3CiBjcmVhdGUgdGFibGUgdXZfaW9jdV90YWIgKGEgaW50IHVuaXF1ZSwgYiB0 ZXh0KTsKIGNyZWF0ZSB2aWV3IHV2X2lvY3VfdmlldyBhcwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKaW5kZXggZTYxZmQxZDkwNi4u MDRiNGIwMmYyYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRo b3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CkBAIC0yNjksNiArMjY5LDM2IEBAIElOU0VSVCBJTlRPIHRlbXBv cmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2Uo JzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCiAgICgnWzIs Ml0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAn YmFyJykKIDsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wNS0wMScgVE8gJzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAn MSc7CitVUERBVEUgdGVtcG9yYWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDQtMDEnIFRPICcyMDAwLTA2LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCisg IFdIRVJFIGlkID0gJ1syLDJdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWwzIE9SREVSIEJZ IGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlk MiAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDUtMDEtMjAwMCkgfCBbNyw4KSAg fCBmb28KKyBbMSwyKSB8IFswNS0wMS0yMDAwLDA3LTAxLTIwMDApIHwgWzcsOCkgIHwgZm9v MQorIFsxLDIpIHwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCBbNyw4KSAgfCBmb28KKyBb MiwzKSB8IFswMS0wMS0yMDAwLDA0LTAxLTIwMDApIHwgWzksMTApIHwgYmFyCisgWzIsMykg fCBbMDQtMDEtMjAwMCwwNS0wMS0yMDAwKSB8IFs5LDEwKSB8IGJhcjIKKyBbMiwzKSB8IFsw NS0wMS0yMDAwLDA2LTAxLTIwMDApIHwgWzksMTApIHwgYmFyMTIKKyBbMiwzKSB8IFswNi0w MS0yMDAwLDA3LTAxLTIwMDApIHwgWzksMTApIHwgYmFyMQorIFsyLDMpIHwgWzA3LTAxLTIw MDAsMDEtMDEtMjAxMCkgfCBbOSwxMCkgfCBiYXIKKyg4IHJvd3MpCisKKy0tIGNvbmZsaWN0 aW5nIGlkIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQy LCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwNS0wMS0wMScs ICcyMDA2LTAxLTAxJyksICdbOCw4XScsICdmb28zJyk7CitFUlJPUjogIGNvbmZsaWN0aW5n IGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidGVtcG9yYWwzX3Br IgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMDUsMDEt MDEtMjAwNikpIGNvbmZsaWN0cyB3aXRoIGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0o WzEsMiksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4KKy0tIGNvbmZsaWN0aW5nIGlkMiBv bmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkK KyAgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDUtMDEtMDEnLCAnMjAxMC0w MS0wMScpLCAnWzksOV0nLCAnYmFyMycpOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFs dWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgInRlbXBvcmFsM191bmlxIgorREVU QUlMOiAgS2V5IChpZDIsIHZhbGlkX2F0KT0oWzksMTApLCBbMDEtMDEtMjAwNSwwMS0wMS0y MDEwKSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcga2V5IChpZDIsIHZhbGlkX2F0KT0oWzks MTApLCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSkuCiBEUk9QIFRBQkxFIHRlbXBvcmFsMzsK IC0tCiAtLSB0ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcwpAQCAtMzIxLDYg KzM1MSwzNiBAQCBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAg WzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDEwKSB8IHRocmVlCiAoMSByb3cpCiAKK1VQ REFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFNFVCBuYW1lID0gJ29uZTIn CisgIFdIRVJFIGlkID0gJ1sxLDFdJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQK KyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMi0yMCcgVE8gJzIwMDAt MDItMjUnCisgIFNFVCBpZCA9ICdbNCw0XScKKyAgV0hFUkUgbmFtZSA9ICdvbmUnOworVVBE QVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAyLTAxLTAxJyBUTyAnMjAwMy0wMS0wMScKKyAgU0VUIGlkID0gJ1syLDJdJwor ICBXSEVSRSBuYW1lID0gJ3RocmVlJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcy MDAwLTAyLTE1JworICBXSEVSRSBpZCA9ICdbMywzXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCBv bmUKKyBbMSwyKSB8IFswMS0xNS0yMDAwLDAyLTAxLTIwMDApIHwgb25lMgorIFsxLDIpIHwg WzAyLTAxLTIwMDAsMDItMTUtMjAwMCkgfCBvbmUyCisgWzEsMikgfCBbMDItMTUtMjAwMCww Mi0yMC0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTI1LTIwMDAsMDMtMDEtMjAwMCkgfCBv bmUKKyBbMiwzKSB8IFswMS0wMS0yMDAyLDAxLTAxLTIwMDMpIHwgdGhyZWUKKyBbMyw0KSB8 IFswMS0wMS0yMDAwLDAxLTE1LTIwMDApIHwgdGhyZWUKKyBbMyw0KSB8IFswMi0xNS0yMDAw LDAxLTAxLTIwMDIpIHwgdGhyZWUKKyBbMyw0KSB8IFswMS0wMS0yMDAzLDAxLTAxLTIwMTAp IHwgdGhyZWUKKyBbNCw1KSB8IFswMi0yMC0yMDAwLDAyLTI1LTIwMDApIHwgb25lCisoMTAg cm93cykKKwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIC0tIHRlbXBvcmFs IFVOSVFVRToKIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCkBAIC0zNTYs NiArNDE2LDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK ICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKICgxIHJvdykKIAor VVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25l MicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAw MC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitV UERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0n CisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8g JzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAg ICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8 IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEtMjAwMCkgfCBvbmUyCisgWzEsMikg fCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0xNS0yMDAw LDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMjUtMjAwMCwwMy0wMS0yMDAwKSB8 IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEtMjAwMykgfCB0aHJlZQorIFszLDQp IHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJlZQorIFszLDQpIHwgWzAyLTE1LTIw MDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDMsMDEtMDEtMjAx MCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAsMDItMjUtMjAwMCkgfCBvbmUKKygx MCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogLS0KIC0tIHRl c3QgRksgZGVwZW5kZW5jaWVzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQppbmRl eCA2NmI3NWZhMTJmLi45OWNmNmYxOGQ2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKQEAgLTQ4LDcgKzQ4LDcgQEAgdGVzdDogY3JlYXRlX2luZGV4IGNyZWF0ZV9pbmRl eF9zcGdpc3QgY3JlYXRlX3ZpZXcgaW5kZXhfaW5jbHVkaW5nIGluZGV4X2luY2x1ZGkKICMg LS0tLS0tLS0tLQogIyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCiAjIC0tLS0t LS0tLS0KLXRlc3Q6IGNyZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVh dGVfY2FzdCBjb25zdHJhaW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJs ZSB2YWN1dW0gZHJvcF9pZl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVz IGNyZWF0ZV9hbSBoYXNoX2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UKK3Rlc3Q6IGNy ZWF0ZV9hZ2dyZWdhdGUgY3JlYXRlX2Z1bmN0aW9uX3NxbCBjcmVhdGVfY2FzdCBjb25zdHJh aW50cyB0cmlnZ2VycyBzZWxlY3QgaW5oZXJpdCB0eXBlZF90YWJsZSB2YWN1dW0gZHJvcF9p Zl9leGlzdHMgdXBkYXRhYmxlX3ZpZXdzIHJvbGVhdHRyaWJ1dGVzIGNyZWF0ZV9hbSBoYXNo X2Z1bmMgZXJyb3JzIGluZmluaXRlX3JlY3Vyc2UgZm9yX3BvcnRpb25fb2YKIAogIyAtLS0t LS0tLS0tCiAjIHNhbml0eV9jaGVjayBkb2VzIGEgdmFjdXVtLCBhZmZlY3RpbmcgdGhlIHNv cnQgb3JkZXIgb2YgU0VMRUNUICoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2Zvcl9wb3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9u X29mLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iZjJhYjA5 M2E2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRp b25fb2Yuc3FsCkBAIC0wLDAgKzEsMzQwIEBACistLSBUZXN0cyBmb3IgVVBEQVRFL0RFTEVU RSBGT1IgUE9SVElPTiBPRgorCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlk X2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRPIGZv cl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDIpJywgJ1syMDE4LTAxLTAyLDIwMjAt MDEtMDEpJywgJ29uZScpOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gJzIwMTktMDEtMDEnCitT RVQgbmFtZSA9ICdmb28nOworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTE1JyBUTyBVTkJPVU5ERUQ7 CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworLS0gV29ya3Mgb24g bW9yZSB0aGFuIG9uZSByYW5nZQorRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0Owor Q1JFQVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisg IHZhbGlkMV9hdCB0c3JhbmdlLAorICB2YWxpZDJfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0 IE5PVCBOVUxMCispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMK KygnWzEsMiknLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnWzIwMTUtMDEtMDEsMjAy NS0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitT RVQgbmFtZSA9ICdmb28nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0Owor CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0 IEZST00gJzIwMTgtMDEtMTUnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnYmFyJzsKK1NF TEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKworREVMRVRFIEZST00gZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQxX2F0IEZST00gJzIwMTgtMDEt MjAnIFRPIFVOQk9VTkRFRDsKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsK KworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWQyX2F0IEZST00gJzIwMTgtMDEtMjAnIFRPIFVOQk9VTkRFRDsKK1NFTEVDVCAqIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdDsKKworCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgdHNyYW5nZSBOT1QgTlVMTCwKKyAgbmFtZSB0ZXh0 IE5PVCBOVUxMLAorCUNPTlNUUkFJTlQgZm9yX3BvcnRpb25fb2ZfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0lOU0VSVCBJTlRPIGZvcl9w b3J0aW9uX29mX3Rlc3QKK1ZBTFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDE4LTAy LTAzKScsICdvbmUnKSwKKygnWzEsMiknLCAnWzIwMTgtMDItMDMsMjAxOC0wMy0wMyknLCAn b25lJyksCisoJ1sxLDIpJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQtMDQpJywgJ29uZScpLAor KCdbMiwzKScsICdbMjAxOC0wMS0wMSwyMDE4LTAxLTA1KScsICd0d28nKSwKKygnWzMsNCkn LCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpLAorKCdbNCw1KScsICcoLDIwMTgtMDQtMDEp JywgJ2ZvdXInKSwKKygnWzUsNiknLCAnKCwpJywgJ2ZpdmUnKQorOworCistLQorLS0gVVBE QVRFIHRlc3RzCistLQorCistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWls cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRf YXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdmb28nCitX SEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFNldHRpbmcgdGhlIHJhbmdlIGZhaWxzCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEs MTk5OS0wMS0wMSknCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIFRoZSB3cm9uZyB0eXBl IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAxIFRPIDQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0 KSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hF UkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5nIHdpdGggYSBzdWJxdWVyeSBmYWlscwor VVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZS T00gKFNFTEVDVCAnMjAxOC0wMS0wMScpIFRPICcyMDE4LTA2LTAxJworU0VUIG5hbWUgPSAn bm9wZScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0gU2V0dGluZyB3aXRoIGEgY29sdW1u IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSBsb3dlcih2YWxpZF9hdCkgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdu b3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5nIHdpdGggdGltZXN0YW1w cyBlcXVhbCBkb2VzIG5vdGhpbmcKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScK K1NFVCBuYW1lID0gJ3RocmVlXjAnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFVwZGF0 aW5nIGEgZmluaXRlL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wNi0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hF UkUgaWQgPSAnWzMsNCknOworCistLSBVcGRhdGluZyBhIGZpbml0ZS9vcGVuIHBvcnRpb24g d2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIFVOQk9VTkRFRCBUTyAnMjAxOC0wMy0w MScKK1NFVCBuYW1lID0gJ3RocmVlXjInCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFVw ZGF0aW5nIGFuIG9wZW4vZmluaXRlIHBvcnRpb24gd2l0aCBhbiBvcGVuL2Zpbml0ZSB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NIFVOQk9VTkRFRCBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJeMScK K1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9y dGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gVU5C T1VOREVECitTRVQgbmFtZSA9ICdmb3VyXjInCitXSEVSRSBpZCA9ICdbNCw1KSc7CisKKy0t IFVwZGF0aW5nIGEgZmluaXRlL2Zpbml0ZSBwb3J0aW9uIHdpdGggYW4gZXhhY3QgZml0CitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxNy0wMS0wMScgVE8gJzIwMTgtMDItMDEnCitTRVQgbmFtZSA9ICdmb3VyXjMnCitX SEVSRSBpZCA9ICdbNCw1KSc7CisKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4KK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N IFVOQk9VTkRFRCBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3R3b14yJworV0hFUkUgaWQg PSAnWzIsMyknOworCistLSBVcGRhdGluZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEg ZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScK K1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gVXBkYXRp bmcgYW4gZW5jbG9zZWQgc3BhbiB3aXRoIHNlcGFyYXRlIHByb3RydWRpbmcgc3BhbnMKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE3LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMycKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKworLS0gVXBkYXRpbmcgbXVsdGlwbGUgZW5jbG9zZWQgc3Bh bnMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NIE5VTEwgVE8gTlVMTAorU0VUIG5hbWUgPSAnb25lXjInCitXSEVSRSBpZCA9ICdb MSwyKSc7CisKKy0tIFVwZGF0aW5nIHdpdGggYSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdAorICBG Uk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwgJzEnIEhPVVIgVE8gTUlO VVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjMnCitXSEVSRSBpZCA9 ICdbMSwyKSc7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5URVJWQUwg JzInIEhPVVIKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeNCcKK1dIRVJF IGlkID0gJ1sxLDIpJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUgSU5U RVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25lXjQn CitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVwZGF0aW5nIHRoZSBub24tcmFuZ2UgcGFy dCBvZiB0aGUgUEs6CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMi0xNScgVE8gTlVMTAorU0VUIGlkID0gJ1s2LDcp JworV0hFUkUgaWQgPSAnWzEsMiknOworCistLSBVUERBVEUgd2l0aCBubyBXSEVSRSBjbGF1 c2UKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDMwLTAxLTAxJyBUTyBOVUxMCitTRVQgbmFtZSA9IG5hbWUgfHwgJyonOwor CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworCistLQorLS0gREVMRVRFIHRlc3RzCistLQorCistLSBEZWxldGluZyB3aXRoIGEg bWlzc2luZyBjb2x1bW4gZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAor V0hFUkUgaWQgPSAnWzUsNiknOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2 ZXJzZWQgZmFpbHMKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDE4LTAxLTAxJworV0hF UkUgaWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFtcHMgZXF1YWwg ZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0wNC0wMScKK1dI RVJFIGlkID0gJ1szLDQpJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9jbG9zZWQg dGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyAnMjAyMC0wNi0wMScKK1dIRVJFIGlk ID0gJ1s1LDYpJzsKKworLS0gRGVsZXRpbmcgd2l0aCBhIGNsb3NlZC9vcGVuIHRhcmdldAor REVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wNC0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzMsNCknOworCist LSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRP ICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMiknOworCistLSBEZWxldGluZyB3aXRo IGFuIG9wZW4vb3BlbiB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitXSEVSRSBpZCA9 ICdbNiw3KSc7CisKKy0tIERFTEVURSB3aXRoIG5vIFdIRVJFIGNsYXVzZQorREVMRVRFIEZS T00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAyNS0wMS0wMScgVE8gTlVMTDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworLS0gVVBEQVRFIC4uLiBSRVRVUk5JTkcg cmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNlcnRlZCBzaWRl IHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NFVCBuYW1lID0g J3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMyw0KScKK1JFVFVSTklORyAqOworCistLSB0ZXN0 IHRoYXQgd2UgcnVuIHRyaWdnZXJzIG9uIHRoZSBVUERBVEUvREVMRVRFZCByb3cgYW5kIHRo ZSBJTlNFUlRlZCByb3dzCisKK0NSRUFURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmln Z2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgorQVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0Ug JyUgJSAlIG9mICUnLCBUR19XSEVOLCBUR19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRf YXQ7CisgIElGIFRHX09QID0gJ0RFTEVURScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVM U0UKKyAgICBSRVRVUk4gTkVXOworICBFTkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxw Z3NxbDsKKworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV9pbnNl cnQKKyAgQkVGT1JFIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNI IFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NS RUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9pbnNlcnQKKyAgQUZURVIg SU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNV VEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIg dHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9yZV91cGRhdGUKKyAgQkVGT1JFIFVQREFURSBPTiBm b3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9O IGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9y dGlvbl9vZl9hZnRlcl91cGRhdGUKKyAgQUZURVIgVVBEQVRFIE9OIGZvcl9wb3J0aW9uX29m X3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25f b2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2JlZm9y ZV9kZWxldGUKKyAgQkVGT1JFIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZP UiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIo KTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9hZnRlcl9kZWxldGUKKyAg QUZURVIgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisg IEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworCitVUERBVEUg Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAy MS0wMS0wMScgVE8gJzIwMjItMDEtMDEnCitTRVQgbmFtZSA9ICdmaXZlXjQnCitXSEVSRSBp ZCA9ICdbNSw2KSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjMtMDEtMDEnIFRPICcyMDI0LTAxLTAxJwor V0hFUkUgaWQgPSAnWzUsNiknOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBUZXN0IHdpdGggYSBjdXN0b20gcmFu Z2UgdHlwZQorCitDUkVBVEUgVFlQRSBteWRhdGVyYW5nZSBBUyByYW5nZShzdWJ0eXBlPWRh dGUpOworCitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAorICBpZCBpbnQ0 cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBOVUxMLAorICBu YW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl90ZXN0Ml9w ayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5T RVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwxXScsICdbMjAx OC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDItMDMs MjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAzLDIwMTgtMDQt MDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1LTAxKScsICd0 d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOworOworCitVUERB VEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDEtMTAnIFRPICcyMDE4LTAyLTEwJworU0VUIG5hbWUgPSAnb25lXjEnCitXSEVS RSBpZCA9ICdbMSwxXSc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOC0wMi0x NScKK1dIRVJFIGlkID0gJ1syLDJdJzsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9v Zl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKK0RST1AgVEFCTEUgZm9yX3BvcnRp b25fb2ZfdGVzdDI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wcml2aWxlZ2VzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3ByaXZpbGVnZXMuc3FsCmluZGV4IGJmMDAzNWQ5NmQuLjM2NmJlOTlhMjcgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsCkBAIC03MTMsNiArNzEzLDI0IEBAIFVQREFU RSBlcnJ0c3QgU0VUIGEgPSAnYWFhYScsIGIgPSBOVUxMIFdIRVJFIGEgPSAnYWFhJzsKIFNF VCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwogRFJPUCBUQUJM RSBlcnJ0c3Q7CiAKKy0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZpbGVnZXMgb24gdGhlIHJh bmdlL1BFUklPRCB1c2VkIGluIEZPUiBQT1JUSU9OIE9GCitTRVQgU0VTU0lPTiBBVVRIT1JJ WkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0NSRUFURSBUQUJMRSB0MSAoCisgIGMxIGlu dDRyYW5nZSwKKyAgdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHQxcGsgUFJJTUFS WSBLRVkgKGMxLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0dSQU5UIFNFTEVD VCBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBTRUxFQ1QgT04gdDEgVE8g cmVncmVzc19wcml2X3VzZXIzOworR1JBTlQgVVBEQVRFIChjMSkgT04gdDEgVE8gcmVncmVz c19wcml2X3VzZXIyOworR1JBTlQgVVBEQVRFIChjMSwgdmFsaWRfYXQpIE9OIHQxIFRPIHJl Z3Jlc3NfcHJpdl91c2VyMzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19w cml2X3VzZXIyOworVVBEQVRFIHQxIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MDAtMDEtMDEnIFRPICcyMDAxLTAxLTAxJyBTRVQgYzEgPSAnWzIsMyknOworU0VUIFNFU1NJ T04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNF VCBjMSA9ICdbMiwzKSc7CitTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJp dl91c2VyMTsKK0RST1AgVEFCTEUgdDE7CisKIC0tIHRlc3QgY29sdW1uLWxldmVsIHByaXZp bGVnZXMgd2hlbiBpbnZvbHZlZCB3aXRoIERFTEVURQogU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBBTFRFUiBUQUJMRSBhdGVzdDYgQUREIENPTFVN TiB0aHJlZSBpbnRlZ2VyOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBk YXRhYmxlX3ZpZXdzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3 cy5zcWwKaW5kZXggZWFlZTBiN2UxZC4uZjgxNDcwMWE0MyAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvdXBkYXRhYmxlX3ZpZXdzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCkBAIC0xNTQxLDYgKzE1NDEsMjAgQEAgc2Vs ZWN0ICogZnJvbSB1dl9pb2N1X3RhYjsKIGRyb3AgdmlldyB1dl9pb2N1X3ZpZXc7CiBkcm9w IHRhYmxlIHV2X2lvY3VfdGFiOwogCistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04gT0Yg d29ya3MgY29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJhbmdl LCB2YWxpZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZfZnBv X3RhYiBwcmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsKK2lu c2VydCBpbnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEsIDIw MzAtMDEtMDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNlbGVj dCBiLCBiKzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJvbSB1 dl9mcG9fdGFiOworCitpbnNlcnQgaW50byB1dl9mcG9fdmlldyAoaWQsIHZhbGlkX2F0LCBi KSB2YWx1ZXMgKCdbMSwxXScsICdbMjAxMC0wMS0wMSwgMjAyMC0wMS0wMSknLCAxKTsKK3Nl bGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7Cit1cGRhdGUgdXZfZnBvX3ZpZXcgZm9yIHBvcnRp b24gb2YgdmFsaWRfYXQgZnJvbSAnMjAxNS0wMS0wMScgdG8gJzIwMjAtMDEtMDEnIHNldCBi ID0gMiB3aGVyZSBpZCA9ICdbMSwxXSc7CitzZWxlY3QgKiBmcm9tIHV2X2Zwb192aWV3Owor ZGVsZXRlIGZyb20gdXZfZnBvX3ZpZXcgZm9yIHBvcnRpb24gb2YgdmFsaWRfYXQgZnJvbSAn MjAxNy0wMS0wMScgdG8gJzIwMjItMDEtMDEnIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVj dCAqIGZyb20gdXZfZnBvX3ZpZXc7CisKIC0tIFRlc3Qgd2hvbGUtcm93IHJlZmVyZW5jZXMg dG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1dl9pb2N1X3RhYiAoYSBpbnQgdW5pcXVlLCBi IHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9jdV92aWV3IGFzCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IDMyNDgzOTA3NDQuLjFjZDI3MmE1 NzUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBA IC0yMDMsNiArMjAzLDIwIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0 LCBpZDIsIG5hbWUpCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAx MC0wMS0wMScpLCAnWzcsN10nLCAnZm9vJyksCiAgICgnWzIsMl0nLCBkYXRlcmFuZ2UoJzIw MDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyJykKIDsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNS0wMScgVE8g JzIwMDAtMDctMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMSc7CitVUERBVEUgdGVtcG9y YWwzIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDQtMDEnIFRPICcyMDAw LTA2LTAxJworICBTRVQgbmFtZSA9IG5hbWUgfHwgJzInCisgIFdIRVJFIGlkID0gJ1syLDJd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWwzIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKy0t IGNvbmZsaWN0aW5nIGlkIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxp ZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAw NS0wMS0wMScsICcyMDA2LTAxLTAxJyksICdbOCw4XScsICdmb28zJyk7CistLSBjb25mbGlj dGluZyBpZDIgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBp ZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDA1LTAxLTAx JywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcjMnKTsKIERST1AgVEFCTEUgdGVtcG9y YWwzOwogCiAtLQpAQCAtMjQxLDYgKzI1NSwyMiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBWQUxVRVMKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQg T1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQs IHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0Owor VVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25l MicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25l ZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAw MC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitV UERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0n CisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8g JzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZDsKIAogLS0gdGVtcG9yYWwgVU5JUVVFOgpAQCAtMjU5LDYg KzI4OSwyMiBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBWQUxVRVMKIFNF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OwogU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICog RlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0 aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBU TyAnMjAwMC0wMi0xNScKKyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEs MV0nOworVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0g J1s0LDRdJworICBXSEVSRSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRP ICcyMDAzLTAxLTAxJworICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhy ZWUnOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJF IGlkID0gJ1szLDNdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsK IAogLS0KLS0gCjIuMjUuMQoK --------------XDFSGX0v4ADvwDYCFM5gI4Qr Content-Type: text/x-patch; charset=UTF-8; name="v13-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v13-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1YTIzMTYwM2E4NmY4OTlhY2QxYmY2NzUxZTQ0ZDVmZDYyNDNkYmI1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjEzIDQvNV0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDI4ICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA2MTggKysrKysrKysrKysrKysr KystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg MjAgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwg NDEzICsrKysrKysrKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFw cy5zcWwgICAgIHwgMTczICsrKystCiA1IGZpbGVzIGNoYW5nZWQsIDEyMjQgaW5zZXJ0aW9u cygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRl eCBhZjkyZTc4YWM5Li5lMjMwZGZjNTY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YwpAQCAtMTIyOTIsMTEgKzEyMjkyLDE5IEBAIGNyZWF0ZUZvcmVpZ25LZXlBY3Rpb25Ucmln Z2VycyhSZWxhdGlvbiByZWwsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3Ry CiAJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlf cmVzdHJpY3RfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9D QVNDQURFOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFt ZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9jYXNjYWRlX2RlbCIpOworCQkJCWJyZWFr OwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZL ZXlfc2V0bnVsbF9kZWwiKTsKKwkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9O X1NFVERFRkFVTFQ6Ci0JCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCShlcnJjb2RlKEVSUkNP REVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKLQkJCQkJCSBlcnJtc2coImFjdGlvbiBub3Qg c3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOworCQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQg PSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJU UklfRktleV9zZXRkZWZhdWx0X2RlbCIpOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKIAkJ CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAlZCIsCkBAIC0x MjM4MywxMSArMTIzOTEsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRyaWdnZXJzKFJl bGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHIKIAkJCQlm a190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9yZXN0cmlj dF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NBREU6 CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lz dGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CiAJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFi bGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJ CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktleV9zZXRu dWxsX3VwZCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVG QVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0aW9uIG5vdCBzdXBwb3J0 ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJZmtfdHJpZ2dlci0+ZGVm ZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5 X3NldGRlZmF1bHRfdXBkIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCWVsb2co RVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3JpX3RyaWdnZXJzLmMKaW5kZXggNzA0NjZhOTRkOS4uNTE4OTBmNTM4YSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKQEAgLTgzLDYgKzgzLDEyIEBACiAj ZGVmaW5lIFJJX1BMQU5fU0VUTlVMTF9PTlVQREFURQkJNwogI2RlZmluZSBSSV9QTEFOX1NF VERFRkFVTFRfT05ERUxFVEUJCTgKICNkZWZpbmUgUklfUExBTl9TRVRERUZBVUxUX09OVVBE QVRFCQk5CisjZGVmaW5lIFRSSV9QTEFOX0NBU0NBREVfT05ERUxFVEUJCTEwCisjZGVmaW5l IFRSSV9QTEFOX0NBU0NBREVfT05VUERBVEUJCTExCisjZGVmaW5lIFRSSV9QTEFOX1NFVE5V TExfT05VUERBVEUJCTEyCisjZGVmaW5lIFRSSV9QTEFOX1NFVE5VTExfT05ERUxFVEUJCTEz CisjZGVmaW5lIFRSSV9QTEFOX1NFVERFRkFVTFRfT05VUERBVEUJMTQKKyNkZWZpbmUgVFJJ X1BMQU5fU0VUREVGQVVMVF9PTkRFTEVURQkxNQogCiAjZGVmaW5lIE1BWF9RVU9URURfTkFN RV9MRU4gIChOQU1FREFUQUxFTioyKzMpCiAjZGVmaW5lIE1BWF9RVU9URURfUkVMX05BTUVf TEVOICAoTUFYX1FVT1RFRF9OQU1FX0xFTioyKQpAQCAtMTkwLDYgKzE5Niw3IEBAIHN0YXRp YyBib29sIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtf cmVsLAogCQkJCQkJCSAgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbyk7CiBzdGF0 aWMgRGF0dW0gcmlfcmVzdHJpY3QoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX25v X2FjdGlvbik7CiBzdGF0aWMgRGF0dW0gcmlfc2V0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwg Ym9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7CitzdGF0aWMgRGF0dW0gdHJpX3NldChU cmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGwsIGludCB0Z2tpbmQpOwog c3RhdGljIHZvaWQgcXVvdGVPbmVOYW1lKGNoYXIgKmJ1ZmZlciwgY29uc3QgY2hhciAqbmFt ZSk7CiBzdGF0aWMgdm9pZCBxdW90ZVJlbGF0aW9uTmFtZShjaGFyICpidWZmZXIsIFJlbGF0 aW9uIHJlbCk7CiBzdGF0aWMgdm9pZCByaV9HZW5lcmF0ZVF1YWwoU3RyaW5nSW5mbyBidWYs CkBAIC0yMjcsNiArMjM0LDcgQEAgc3RhdGljIGJvb2wgcmlfUGVyZm9ybUNoZWNrKGNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCiAJCQkJCQkJUklfUXVlcnlLZXkgKnFrZXks IFNQSVBsYW5QdHIgcXBsYW4sCiAJCQkJCQkJUmVsYXRpb24gZmtfcmVsLCBSZWxhdGlvbiBw a19yZWwsCiAJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90 ICpuZXdzbG90LAorCQkJCQkJCWJvb2wgaGFzRm9yUG9ydGlvbk9mLCBEYXR1bSBmb3JQb3J0 aW9uT2YsCiAJCQkJCQkJYm9vbCBkZXRlY3ROZXdSb3dzLCBpbnQgZXhwZWN0X09LKTsKIHN0 YXRpYyB2b2lkIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywgYm9v bCByZWxfaXNfcGssCkBAIC0yMzUsNiArMjQzLDExIEBAIHN0YXRpYyB2b2lkIHJpX1JlcG9y dFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCQkJCSAg IFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJCQkJCSAgIFR1cGxlVGFi bGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNjLAogCQkJCQkJCSAgIGlu dCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKK3N0 YXRpYyBib29sIGZwb190YXJnZXRzX3BrX3JhbmdlKGNvbnN0IEZvclBvcnRpb25PZlN0YXRl ICp0Z190ZW1wb3JhbCwKKwkJCQkJCQkJIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWlu Zm8pOworc3RhdGljIERhdHVtIHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQ b3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJCQkJCQkJCQkgIGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8sCisJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpvbGRzbG90 KTsKIAogCiAvKgpAQCAtNDQzLDYgKzQ1Niw3IEBAIFJJX0ZLZXlfY2hlY2soVHJpZ2dlckRh dGEgKnRyaWdkYXRhKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwK IAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCU5VTEwsIG5ld3Nsb3QsCisJCQkJCWZhbHNl LCAwLAogCQkJCQlwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElP TkVEX1RBQkxFLAogCQkJCQlTUElfT0tfU0VMRUNUKTsKIApAQCAtNTcyLDYgKzU4Niw3IEBA IHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAog CXJlc3VsdCA9IHJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKIAkJCQkJ CQkgZmtfcmVsLCBwa19yZWwsCiAJCQkJCQkJIG9sZHNsb3QsIE5VTEwsCisJCQkJCQkJIGZh bHNlLCAwLAogCQkJCQkJCSB0cnVlLAkvKiB0cmVhdCBsaWtlIHVwZGF0ZSAqLwogCQkJCQkJ CSBTUElfT0tfU0VMRUNUKTsKIApAQCAtNzcwLDYgKzc4NSw3IEBAIHJpX3Jlc3RyaWN0KFRy aWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJcmlfUGVyZm9ybUNo ZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJ b2xkc2xvdCwgTlVMTCwKKwkJCQkJZmFsc2UsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRl dGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElfT0tfU0VMRUNUKTsKIApAQCAtODc2LDYgKzg5 Miw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwoUEdfRlVOQ1RJT05fQVJHUykKIAlyaV9QZXJm b3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAog CQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQlmYWxzZSwgMCwKIAkJCQkJdHJ1ZSwJCS8qIG11 c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19ERUxFVEUpOwogCkBAIC05OTcs NiArMTAxNCw3IEBAIFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKIAly aV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtf cmVsLAogCQkJCQlvbGRzbG90LCBuZXdzbG90LAorCQkJCQlmYWxzZSwgMCwKIAkJCQkJdHJ1 ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19VUERBVEUpOwog CkBAIC0xMjI5LDYgKzEyNDcsNyBAQCByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBi b29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8s ICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCW9sZHNsb3QsIE5V TEwsCisJCQkJCWZhbHNlLCAwLAogCQkJCQl0cnVlLAkJLyogbXVzdCBkZXRlY3QgbmV3IHJv d3MgKi8KIAkJCQkJU1BJX09LX1VQREFURSk7CiAKQEAgLTEzNDIsNiArMTM2MSwxMjcgQEAg VFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jl c3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAor LyoKKyAqIFRSSV9GS2V5X2Nhc2NhZGVfZGVsIC0KKyAqCisgKiBDYXNjYWRlZCBkZWxldGUg Zm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCBkZWxldGUgZXZlbnQgb24gdGVtcG9yYWwgUEsg dGFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9B UkdTKQoreworCVRyaWdnZXJEYXRhICp0cmlnZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2lu Zm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxh dGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRz bG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0g dGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2Vy IGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dl cihmY2luZm8sICJUUklfRktleV9jYXNjYWRlX2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7 CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmln Z2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJ ICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxl cyBhbmQgdGhlIG9sZCB0dXBsZS4KKwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93 RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFs IERFTEVURSB3aWxsIGdldCBvbiBpdC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJp aW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRh LT50Z19yZWxhdGlvbjsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJ LyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24s CisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3Nh cnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJp Z2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25u ZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBm YWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUg Y2FzY2FkZWQgZGVsZXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBU UklfUExBTl9DQVNDQURFX09OREVMRVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFBy ZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVy eWJ1ZjsKKwkJY2hhcgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJ Y2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1l WzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlzZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9N QVhfTlVNS0VZUyArIDFdOworCQljb25zdCBjaGFyICpma19vbmx5OworCisJCS8qIC0tLS0t LS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZS T00gW09OTFldIDxma3RhYmxlPgorCQkgKiAgRk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00g bG93ZXIoJHtuKzF9KSBUTyB1cHBlcigke24rMX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0 MSBbQU5EIC4uLl0KKwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBh cmUgdGhvc2Ugb2YgdGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJ ICogLS0tLS0tLS0tLQorCQkgKi8KKwkJaW5pdFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJ Zmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9O RURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAiOworCQlxdW90ZVJlbGF0aW9uTmFtZShma3Jl bG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25lTmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtf cmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBw ZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJERUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9O IE9GICVzIEZST00gbG93ZXIoJCVkKSBUTyB1cHBlcigkJWQpIiwKKwkJCQkJCSBma19vbmx5 LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlz ICsgMSk7CisJCXF1ZXJ5c2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBy aWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRD b2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5 cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lk IGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tp XSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIk JWQiLCBpICsgMSk7CisJCQlyaV9HZW5lcmF0ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwK KwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJz W2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtf Y29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJ cmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVy eXNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8q IFNldCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lk c1tyaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVt c1tyaWluZm8tPm5rZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBs YW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5u a2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsK Kwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gQnVpbGQgdXAgdGhlIGFyZ3Vt ZW50cyBmcm9tIHRoZSBrZXkgdmFsdWVzIGluIHRoZQorCSAqIGRlbGV0ZWQgUEsgdHVwbGUg YW5kIGRlbGV0ZSB0aGUgcmVmZXJlbmNpbmcgcm93cworCSAqLworCXJpX1BlcmZvcm1DaGVj ayhyaWluZm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9s ZHNsb3QsIE5VTEwsCisJCQkJCXRydWUsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkgICAv KiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKworCWlm IChTUElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9m aW5pc2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxv Y2spOworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCiAvKgogICog VFJJX0ZLZXlfbm9hY3Rpb25fdXBkIC0KICAqCkBAIC0xMzc5LDYgKzE1MTksNDE1IEBAIFRS SV9GS2V5X3Jlc3RyaWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0 cmljdCgoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8q CisgKiBUUklfRktleV9jYXNjYWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZv cmVpZ24ga2V5IHJlZmVyZW5jZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRh YmxlLgorICovCitEYXR1bQorVFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwlUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZv LT5jb250ZXh0OworCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRp b24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xv dDsKKwlUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQ SVBsYW5QdHIgIHFwbGFuOworCURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhh dCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV91 cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJh aW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19y ZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRv cnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBuZXcgYW5kCisJICogb2xkIHR1 cGxlLgorCSAqCisJICogZmtfcmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1v ZGUgc2luY2UgdGhhdCdzIHdoYXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0 IG9uIGl0LgorCSAqLworCWZrX3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwg Um93RXhjbHVzaXZlTG9jayk7CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOwor CW5ld3Nsb3QgPSB0cmlnZGF0YS0+dGdfbmV3c2xvdDsKKwlvbGRzbG90ID0gdHJpZ2RhdGEt PnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4g dGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9S VElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9j YXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3Qp OworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJS T1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBz YXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtl eSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX09OVVBEQVRFKTsKKworCWlmICgo cXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlT dHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJ Y2hhcgkJZmtyZWxuYW1lW01BWF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0 bmFtZVtNQVhfUVVPVEVEX05BTUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJ Y29uc3QgY2hhciAqcXVlcnlzZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJ IHF1ZXJ5b2lkc1syICogUklfTUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3QgY2hhciAqZmtf b25seTsKKworCQkvKiAtLS0tLS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQg aXMKKwkJICogIFVQREFURSBbT05MWV0gPGZrdGFibGU+CisJCSAqCQkgIEZPUiBQT1JUSU9O IE9GICRma2F0dCBGUk9NIGxvd2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4rMX0pCisJCSAq CQkgIFNFVCBma2F0dDEgPSAkMSwgWywgLi4uXQorCQkgKgkJICBXSEVSRSAkbiA9IGZrYXR0 MSBbQU5EIC4uLl0KKwkJICogVGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBh cmUgdGhvc2Ugb2YgdGhlCisJCSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4gIE5v dGUgdGhhdCB3ZSBhcmUgYXNzdW1pbmcKKwkJICogdGhlcmUgaXMgYW4gYXNzaWdubWVudCBj YXN0IGZyb20gdGhlIFBLIHRvIHRoZSBGSyB0eXBlOworCQkgKiBlbHNlIHRoZSBwYXJzZXIg d2lsbCBmYWlsLgorCQkgKiAtLS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygm cXVlcnlidWYpOworCQlpbml0U3RyaW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBm a19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8K KwkJCSIiIDogIk9OTFkgIjsKKwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19y ZWwpOworCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLCAiVVBEQVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dl cigkJWQpIFRPIHVwcGVyKCQlZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUs IGF0dG5hbWUsIDIgKiByaWluZm8tPm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAx KTsKKworCQlxdWVyeXNlcCA9ICIiOworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChp bnQgaSA9IDAsIGogPSByaWluZm8tPm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBq KyspCisJCXsKKwkJCU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5w a19hdHRudW1zW2ldKTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVs LCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUo ZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0 dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3Rl T25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+Zmtf YXR0bnVtc1tpXSkpOworCQkJLyoKKwkJCSAqIERvbid0IHNldCB0aGUgdGVtcG9yYWwgY29s dW1uKHMpLgorCQkJICogRk9SIFBPUlRJT04gT0Ygd2lsbCB0YWtlIGNhcmUgb2YgdGhhdC4K KwkJCSAqLworCQkJaWYgKGkgPCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKCZxdWVyeWJ1ZiwKKwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBx dWVyeXNlcCwgYXR0bmFtZSwgaSArIDEpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQl ZCIsIGogKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJ CQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ld LAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29s bCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlf R2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNl cCA9ICIsIjsKKwkJCXF1YWxzZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5 cGU7CisJCQlxdWVyeW9pZHNbal0gPSBwa190eXBlOworCQl9CisJCWFwcGVuZEJpbmFyeVN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKKworCQkv KiBTZXQgYSBwYXJhbSBmb3IgRk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9p ZHNbMiAqIHJpaW5mby0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19h dHRudW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0 aGUgcGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCAyICog cmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwg cGtfcmVsKTsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRv IHVwZGF0ZSB0aGUgZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hl Y2socmlpbmZvLCAmcWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlv bGRzbG90LCBuZXdzbG90LAorCQkJCQl0cnVlLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJ CS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJ aWYgKFNQSV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJ X2ZpbmlzaCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZl TG9jayk7CisKKwlyZXR1cm4gUG9pbnRlckdldERhdHVtKE5VTEwpOworfQorCisvKgorICog VFJJX0ZLZXlfc2V0bnVsbF9kZWwgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSByZWZlcmVu Y2VzIHRvIE5VTEwgdmFsdWVzIGF0IGRlbGV0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLwor RGF0dW0KK1RSSV9GS2V5X3NldG51bGxfZGVsKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyog Q2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0 aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlf c2V0bnVsbF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUpOworCisJLyogU2hhcmUgY29kZSB3 aXRoIFVQREFURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZj aW5mby0+Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAq IFRSSV9GS2V5X3NldG51bGxfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBOVUxMIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAqLworRGF0dW0K K1RSSV9GS2V5X3NldG51bGxfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sg dGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFu ZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfc2V0bnVs bF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hhcmUgY29kZSB3aXRoIERF TEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+ Y29udGV4dCwgdHJ1ZSwgUklfVFJJR1RZUEVfVVBEQVRFKTsKK30KKworLyoKKyAqIFRSSV9G S2V5X3NldGRlZmF1bHRfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNl cyB0byBkZWZhdWx0cyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRkZWZhdWx0X2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENo ZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGlt ZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3Nl dGRlZmF1bHRfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUg d2l0aCBVUERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBm Y2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9ERUxFVEUpOworfQorCisvKgor ICogVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQgLQorICoKKyAqIFNldCBmb3JlaWduIGtleSBy ZWZlcmVuY2VzIHRvIGRlZmF1bHRzIGF0IHVwZGF0ZSBldmVudCBvbiBQSyB0YWJsZS4KKyAq LworRGF0dW0KK1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7 CisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSBy aWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJ X0ZLZXlfc2V0ZGVmYXVsdF91cGQiLCBSSV9UUklHVFlQRV9VUERBVEUpOworCisJLyogU2hh cmUgY29kZSB3aXRoIERFTEVURSBjYXNlICovCisJcmV0dXJuIHRyaV9zZXQoKFRyaWdnZXJE YXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9 CisKKy8qCisgKiB0cmlfc2V0IC0KKyAqCisgKiBDb21tb24gY29kZSBmb3IgdGVtcG9yYWwg T04gREVMRVRFIFNFVCBOVUxMLCBPTiBERUxFVEUgU0VUIERFRkFVTFQsIE9OCisgKiBVUERB VEUgU0VUIE5VTEwsIGFuZCBPTiBVUERBVEUgU0VUIERFRkFVTFQuCisgKi8KK3N0YXRpYyBE YXR1bQordHJpX3NldChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfc2V0X251bGws IGludCB0Z2tpbmQpCit7CisJY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbzsKKwlS ZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtfcmVsOworCVR1cGxlVGFibGVTbG90ICpv bGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJU1BJUGxhblB0cglxcGxhbjsKKwlEYXR1 bQkJdGFyZ2V0UmFuZ2U7CisJaW50MzIJCXF1ZXJ5bm87CisKKwlyaWluZm8gPSByaV9GZXRj aENvbnN0cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2Rh dGEtPnRnX3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBk ZXNjcmlwdG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4K KwkgKgorCSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNp bmNlIHRoYXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIFVQREFURSB3aWxsIGdldCBvbiBp dC4KKwkgKi8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRz bG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBTRVQgTlVM TC9ERUZBVUxUIHRoYW4gbW9yZSB0aGFuIHRoZSBQSydzIGR1cmF0aW9uLAorCSAqIHRyaW1t ZWQgYnkgYW4gb3JpZ2luYWwgRk9SIFBPUlRJT04gT0YgaWYgbmVjZXNzYXJ5LgorCSAqLwor CXRhcmdldFJhbmdlID0gcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlKHRyaWdkYXRhLT50Z190 ZW1wb3JhbCwgcmlpbmZvLCBvbGRzbG90KTsKKworCWlmIChTUElfY29ubmVjdCgpICE9IFNQ SV9PS19DT05ORUNUKQorCQllbG9nKEVSUk9SLCAiU1BJX2Nvbm5lY3QgZmFpbGVkIik7CisK KwkvKgorCSAqIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgdHJpZ2dl ci4KKwkgKi8KKwlzd2l0Y2ggKHRna2luZCkKKwl7CisJCWNhc2UgUklfVFJJR1RZUEVfVVBE QVRFOgorCQkJcXVlcnlubyA9IGlzX3NldF9udWxsCisJCQkJPyBUUklfUExBTl9TRVROVUxM X09OVVBEQVRFCisJCQkJOiBUUklfUExBTl9TRVRERUZBVUxUX09OVVBEQVRFOworCQkJYnJl YWs7CisJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJcXVlcnlubyA9IGlzX3NldF9u dWxsCisJCQkJPyBUUklfUExBTl9TRVROVUxMX09OREVMRVRFCisJCQkJOiBUUklfUExBTl9T RVRERUZBVUxUX09OREVMRVRFOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVS Uk9SLCAiaW52YWxpZCB0Z2tpbmQgcGFzc2VkIHRvIHJpX3NldCIpOworCX0KKworCXJpX0J1 aWxkUXVlcnlLZXkoJnFrZXksIHJpaW5mbywgcXVlcnlubyk7CisKKwlpZiAoKHFwbGFuID0g cmlfRmV0Y2hQcmVwYXJlZFBsYW4oJnFrZXkpKSA9PSBOVUxMKQorCXsKKwkJU3RyaW5nSW5m b0RhdGEgcXVlcnlidWY7CisJCVN0cmluZ0luZm9EYXRhIHF1YWxidWY7CisJCWNoYXIJCWZr cmVsbmFtZVtNQVhfUVVPVEVEX1JFTF9OQU1FX0xFTl07CisJCWNoYXIJCWF0dG5hbWVbTUFY X1FVT1RFRF9OQU1FX0xFTl07CisJCWNoYXIJCXBhcmFtbmFtZVsxNl07CisJCWNvbnN0IGNo YXIgKnF1ZXJ5c2VwOworCQljb25zdCBjaGFyICpxdWFsc2VwOworCQlPaWQJCQlxdWVyeW9p ZHNbUklfTUFYX05VTUtFWVMgKyAxXTsgLyogKzEgZm9yIEZPUiBQT1JUSU9OIE9GICovCisJ CWNvbnN0IGNoYXIgKmZrX29ubHk7CisJCWludAkJCW51bV9jb2xzX3RvX3NldDsKKwkJY29u c3QgaW50MTYgKnNldF9jb2xzOworCisJCXN3aXRjaCAodGdraW5kKQorCQl7CisJCQljYXNl IFJJX1RSSUdUWVBFX1VQREFURToKKwkJCQkvKiAtMSBzbyB3ZSBsZXQgRk9SIFBPUlRJT04g T0Ygc2V0IHRoZSByYW5nZS4gKi8KKwkJCQludW1fY29sc190b19zZXQgPSByaWluZm8tPm5r ZXlzIC0gMTsKKwkJCQlzZXRfY29scyA9IHJpaW5mby0+ZmtfYXR0bnVtczsKKwkJCQlicmVh azsKKwkJCWNhc2UgUklfVFJJR1RZUEVfREVMRVRFOgorCQkJCS8qCisJCQkJICogSWYgY29u ZmRlbHNldGNvbHMgYXJlIHByZXNlbnQsIHRoZW4gd2Ugb25seSB1cGRhdGUgdGhlCisJCQkJ ICogY29sdW1ucyBzcGVjaWZpZWQgaW4gdGhhdCBhcnJheSwgb3RoZXJ3aXNlIHdlIHVwZGF0 ZSBhbGwKKwkJCQkgKiB0aGUgcmVmZXJlbmNpbmcgY29sdW1ucy4KKwkJCQkgKi8KKwkJCQlp ZiAocmlpbmZvLT5uZGVsc2V0Y29scyAhPSAwKQorCQkJCXsKKwkJCQkJbnVtX2NvbHNfdG9f c2V0ID0gcmlpbmZvLT5uZGVsc2V0Y29sczsKKwkJCQkJc2V0X2NvbHMgPSByaWluZm8tPmNv bmZkZWxzZXRjb2xzOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiAtMSBzbyB3 ZSBsZXQgRk9SIFBPUlRJT04gT0Ygc2V0IHRoZSByYW5nZS4gKi8KKwkJCQkJbnVtX2NvbHNf dG9fc2V0ID0gcmlpbmZvLT5ua2V5cyAtIDE7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5m a19hdHRudW1zOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhF UlJPUiwgImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwkJfQorCisJCS8q IC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmluZyBidWlsdCBpcworCQkgKglVUERB VEUgW09OTFldIDxma3RhYmxlPgorCQkgKgkJCUZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9N IGxvd2VyKCR7bisxfSkgVE8gdXBwZXIoJHtuKzF9KQorCQkgKgkJCVNFVCBma2F0dDEgPSB7 TlVMTHxERUZBVUxUfSBbLCAuLi5dCisJCSAqCQkJV0hFUkUgJDEgPSBma2F0dDEgW0FORCAu Li5dCisJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFtZXRlcnMgYXJlIHRob3Nl IG9mIHRoZQorCQkgKiBjb3JyZXNwb25kaW5nIFBLIGF0dHJpYnV0ZXMuCisJCSAqIC0tLS0t LS0tLS0KKwkJICovCisJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CisJCWluaXRTdHJp bmdJbmZvKCZxdWFsYnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5yZWxraW5k ID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAiOworCQlx dW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25lTmFtZShh dHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlpbmZvLT5u a2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJVUERBVEUg JXMlcyBGT1IgUE9SVElPTiBPRiAlcyBGUk9NIGxvd2VyKCQlZCkgVE8gdXBwZXIoJCVkKSBT RVQiLAorCQkJCQkJIGZrX29ubHksIGZrcmVsbmFtZSwgYXR0bmFtZSwgcmlpbmZvLT5ua2V5 cyArIDEsIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQkvKgorCQkgKiBBZGQgYXNzaWdubWVu dCBjbGF1c2VzCisJCSAqLworCQlxdWVyeXNlcCA9ICIiOworCQlmb3IgKGludCBpID0gMDsg aSA8IG51bV9jb2xzX3RvX3NldDsgaSsrKQorCQl7CisJCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwgUklBdHROYW1lKGZrX3JlbCwgc2V0X2NvbHNbaV0pKTsKKwkJCWFwcGVuZFN0cmluZ0lu Zm8oJnF1ZXJ5YnVmLAorCQkJCQkJCSAiJXMgJXMgPSAlcyIsCisJCQkJCQkJIHF1ZXJ5c2Vw LCBhdHRuYW1lLAorCQkJCQkJCSBpc19zZXRfbnVsbCA/ICJOVUxMIiA6ICJERUZBVUxUIik7 CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJfQorCisJCS8qCisJCSAqIEFkZCBXSEVSRSBjbGF1 c2UKKwkJICovCisJCXF1YWxzZXAgPSAiV0hFUkUiOworCQlmb3IgKGludCBpID0gMDsgaSA8 IHJpaW5mby0+bmtleXM7IGkrKykKKwkJeworCQkJT2lkCXBrX3R5cGUgPSBSSUF0dFR5cGUo cGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCWZrX3R5cGUgPSBSSUF0 dFR5cGUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkCXBrX2NvbGwg PSBSSUF0dENvbGxhdGlvbihwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7CisJCQlP aWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1z W2ldKTsKKworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsCisJCQkJCQkgUklBdHROYW1lKGZr X3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKSk7CisKKwkJCXNwcmludGYocGFyYW1uYW1l LCAiJCVkIiwgaSArIDEpOworCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVhbHNl cCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9v cHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0g ZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJ CQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlx dWFsc2VwID0gIkFORCI7CisJCQlxdWVyeW9pZHNbaV0gPSBwa190eXBlOworCQl9CisKKwkJ LyogU2V0IGEgcGFyYW0gZm9yIEZPUiBQT1JUSU9OIE9GIFRPL0ZST00gKi8KKwkJcXVlcnlv aWRzW3JpaW5mby0+bmtleXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW3JpaW5mby0+bmtleXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUg cGxhbiAqLworCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCByaWluZm8t Pm5rZXlzICsgMSwgcXVlcnlvaWRzLAorCQkJCQkJCSAmcWtleSwgZmtfcmVsLCBwa19yZWwp OworCX0KKworCS8qCisJICogV2UgaGF2ZSBhIHBsYW4gbm93LiBSdW4gaXQgdG8gdXBkYXRl IHRoZSBleGlzdGluZyByZWZlcmVuY2VzLgorCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWlu Zm8sICZxa2V5LCBxcGxhbiwKKwkJCQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3Qs IE5VTEwsCisJCQkJCXRydWUsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkJLyogbXVzdCBk ZXRlY3QgbmV3IHJvd3MgKi8KKwkJCQkJU1BJX09LX1VQREFURSk7CisKKwlpZiAoU1BJX2Zp bmlzaCgpICE9IFNQSV9PS19GSU5JU0gpCisJCWVsb2coRVJST1IsICJTUElfZmluaXNoIGZh aWxlZCIpOworCisJdGFibGVfY2xvc2UoZmtfcmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwor CWlmIChpc19zZXRfbnVsbCkKKwkJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKKwll bHNlCisJeworCQkvKgorCQkgKiBJZiB3ZSBqdXN0IGRlbGV0ZWQgb3IgdXBkYXRlZCB0aGUg UEsgcm93IHdob3NlIGtleSB3YXMgZXF1YWwgdG8gdGhlCisJCSAqIEZLIGNvbHVtbnMnIGRl ZmF1bHQgdmFsdWVzLCBhbmQgYSByZWZlcmVuY2luZyByb3cgZXhpc3RzIGluIHRoZSBGSwor CQkgKiB0YWJsZSwgd2Ugd291bGQgaGF2ZSB1cGRhdGVkIHRoYXQgcm93IHRvIHRoZSBzYW1l IHZhbHVlcyBpdCBhbHJlYWR5CisJCSAqIGhhZCAtLS0gYW5kIFJJX0ZLZXlfZmtfdXBkX2No ZWNrX3JlcXVpcmVkIHdvdWxkIGhlbmNlIGJlbGlldmUgbm8KKwkJICogY2hlY2sgaXMgbmVj ZXNzYXJ5LiAgU28gd2UgbmVlZCB0byBkbyBhbm90aGVyIGxvb2t1cCBub3cgYW5kIGluCisJ CSAqIGNhc2UgYSByZWZlcmVuY2Ugc3RpbGwgZXhpc3RzLCBhYm9ydCB0aGUgb3BlcmF0aW9u LiAgVGhhdCBpcworCQkgKiBhbHJlYWR5IGltcGxlbWVudGVkIGluIHRoZSBOTyBBQ1RJT04g dHJpZ2dlciwgc28ganVzdCBydW4gaXQuIChUaGlzCisJCSAqIHJlY2hlY2sgaXMgb25seSBu ZWVkZWQgaW4gdGhlIFNFVCBERUZBVUxUIGNhc2UsIHNpbmNlIENBU0NBREUgd291bGQKKwkJ ICogcmVtb3ZlIHN1Y2ggcm93cyBpbiBjYXNlIG9mIGEgREVMRVRFIG9wZXJhdGlvbiBvciB3 b3VsZCBjaGFuZ2UgdGhlCisJCSAqIEZLIGtleSB2YWx1ZXMgaW4gY2FzZSBvZiBhbiBVUERB VEUsIHdoaWxlIFNFVCBOVUxMIGlzIGNlcnRhaW4gdG8KKwkJICogcmVzdWx0IGluIHJvd3Mg dGhhdCBzYXRpc2Z5IHRoZSBGSyBjb25zdHJhaW50LikKKwkJICovCisJCXJldHVybiByaV9y ZXN0cmljdCh0cmlnZGF0YSwgdHJ1ZSk7CisJfQorfQorCiAvKgogICogUklfRktleV9wa191 cGRfY2hlY2tfcmVxdWlyZWQgLQogICoKQEAgLTI0OTEsNiArMzA0MCw3IEBAIHJpX1BlcmZv cm1DaGVjayhjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLAogCQkJCVJJX1F1ZXJ5 S2V5ICpxa2V5LCBTUElQbGFuUHRyIHFwbGFuLAogCQkJCVJlbGF0aW9uIGZrX3JlbCwgUmVs YXRpb24gcGtfcmVsLAogCQkJCVR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxl U2xvdCAqbmV3c2xvdCwKKwkJCQlib29sIGhhc0ZvclBvcnRpb25PZiwgRGF0dW0gZm9yUG9y dGlvbk9mLAogCQkJCWJvb2wgZGV0ZWN0TmV3Um93cywgaW50IGV4cGVjdF9PSykKIHsKIAlS ZWxhdGlvbglxdWVyeV9yZWwsCkBAIC0yNTAyLDggKzMwNTIsOSBAQCByaV9QZXJmb3JtQ2hl Y2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlpbnQJCQlzcGlfcmVzdWx0 OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRleHQ7Ci0JRGF0 dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAyXTsKLQljaGFyCQludWxsc1tSSV9NQVhfTlVN S0VZUyAqIDJdOworCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOworCWNo YXIJCW51bGxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOworCWludAkJCWxhc3RfcGFyYW07 CiAKIAkvKgogCSAqIFVzZSB0aGUgcXVlcnkgdHlwZSBjb2RlIHRvIGRldGVybWluZSB3aGV0 aGVyIHRoZSBxdWVyeSBpcyBydW4gYWdhaW5zdApAQCAtMjUzMywxOSArMzA4NCwyOSBAQCBy aV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAl9CiAK IAkvKiBFeHRyYWN0IHRoZSBwYXJhbWV0ZXJzIHRvIGJlIHBhc3NlZCBpbnRvIHRoZSBxdWVy eSAqLworCWxhc3RfcGFyYW0gPSByaWluZm8tPm5rZXlzOwogCWlmIChuZXdzbG90KQogCXsK IAkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBuZXdzbG90LCByaWluZm8sIHNvdXJj ZV9pc19waywKIAkJCQkJCSB2YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQorCQl7CiAJ CQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNl X2lzX3BrLAogCQkJCQkJCSB2YWxzICsgcmlpbmZvLT5ua2V5cywgbnVsbHMgKyByaWluZm8t Pm5rZXlzKTsKKwkJCWxhc3RfcGFyYW0gPSAyICogcmlpbmZvLT5ua2V5czsKKwkJfQogCX0K IAllbHNlCiAJewogCQlyaV9FeHRyYWN0VmFsdWVzKHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJp aW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJIHZhbHMsIG51bGxzKTsKIAl9CisJLyogQWRk IG9uZSBtb3JlIHF1ZXJ5IHBhcmFtIGlmIHdlIGFyZSB1c2luZyBGT1IgUE9SVElPTiBPRiAq LworCWlmIChoYXNGb3JQb3J0aW9uT2YpCisJeworCQl2YWxzW2xhc3RfcGFyYW1dID0gZm9y UG9ydGlvbk9mOworCQludWxsc1tsYXN0X3BhcmFtXSA9ICcgJzsKKwl9CiAKIAkvKgogCSAq IEluIFJFQUQgQ09NTUlUVEVEIG1vZGUsIHdlIGp1c3QgbmVlZCB0byB1c2UgYW4gdXAtdG8t ZGF0ZSByZWd1bGFyCkBAIC0zMjQ0LDggKzM4MDUsMTQgQEAgUklfRktleV90cmlnZ2VyX3R5 cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJX0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJCWNh c2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJT05f VVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfQ0FTQ0FERV9ERUw6CisJCWNhc2UgRl9UUklfRktF WV9DQVNDQURFX1VQRDoKIAkJY2FzZSBGX1RSSV9GS0VZX1JFU1RSSUNUX0RFTDoKIAkJY2Fz ZSBGX1RSSV9GS0VZX1JFU1RSSUNUX1VQRDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExf REVMOgorCQljYXNlIEZfVFJJX0ZLRVlfU0VUTlVMTF9VUEQ6CisJCWNhc2UgRl9UUklfRktF WV9TRVRERUZBVUxUX0RFTDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVERFRkFVTFRfVVBEOgog CQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fREVMOgogCQljYXNlIEZfVFJJX0ZLRVlfTk9B Q1RJT05fVVBEOgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfUEs7CkBAIC0zMjU5LDMgKzM4MjYs NTAgQEAgUklfRktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAogCXJldHVybiBSSV9U UklHR0VSX05PTkU7CiB9CisKKy8qCisgKiBmcG9fdGFyZ2V0c19wa19yYW5nZQorICoKKyAq IFJldHVybnMgdHJ1ZSBpZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZv IGluY2x1ZGVzIHRoZSByYW5nZQorICogY29sdW1uIHRhcmdldGVkIGJ5IHRoZSBGT1IgUE9S VElPTiBPRiBjbGF1c2UgKGFjY29yZGluZyB0byB0Z190ZW1wb3JhbCkuCisgKi8KK3N0YXRp YyBib29sCitmcG9fdGFyZ2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAq dGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pCit7CisJaWYg KHRnX3RlbXBvcmFsID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiByaWlu Zm8tPnBrX2F0dG51bXNbcmlpbmZvLT5ua2V5cyAtIDFdID09IHRnX3RlbXBvcmFsLT5mcF9y YW5nZUF0dG5vOworfQorCisvKgorICogcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlIC0KKyAq CisgKiBSZXR1cm5zIGEgRGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRoZSBhcHByb3By aWF0ZSB0aW1lc3BhbgorICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3ZSBDQVND QURFL1NFVCBOVUxML1NFVCBERUZBVUxULgorICoKKyAqIEluIGEgbm9ybWFsIFVQREFURS9E RUxFVEUgdGhpcyBzaG91bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAorICog YnV0IGlmIHRoZXJlIHdhcyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91 bGQgdXNlIHRoYXQgdG8KKyAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVy LgorICovCitzdGF0aWMgRGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBG b3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZv ICpyaWluZm8sIFR1cGxlVGFibGVTbG90ICpvbGRzbG90KQoreworCURhdHVtCXBrUmVjb3Jk UmFuZ2U7CisJYm9vbAlpc251bGw7CisKKwlwa1JlY29yZFJhbmdlID0gc2xvdF9nZXRhdHRy KG9sZHNsb3QsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0sICZpc251 bGwpOworCWlmIChpc251bGwpCisJCWVsb2coRVJST1IsICJhcHBsaWNhdGlvbiB0aW1lIHNo b3VsZCBub3QgYmUgbnVsbCIpOworCisJaWYgKGZwb190YXJnZXRzX3BrX3JhbmdlKHRnX3Rl bXBvcmFsLCByaWluZm8pKQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9IERhdHVtR2V0UmFuZ2VU eXBlUChwa1JlY29yZFJhbmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9IERhdHVtR2V0UmFuZ2VU eXBlUCh0Z190ZW1wb3JhbC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlPaWQgcm5ndHlwaWQgPSBS YW5nZVR5cGVHZXRPaWQocjEpOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBsb29r dXBfdHlwZV9jYWNoZShybmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlyZXR1 cm4gUmFuZ2VUeXBlUEdldERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNo ZSwgcjEsIHIyKSk7CisJfQorCWVsc2UKKwkJcmV0dXJuIHBrUmVjb3JkUmFuZ2U7Cit9CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCAzMTMyNDY4YTljLi43MjVlY2ExMjZkIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTM5NDksNiArMzk0OSwxMiBAQAogeyBv aWQgPT4gJzYxMjMnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IEZPUkVJR04gS0VZIC4uLiBSRUZFUkVOQ0VTJywKICAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlf Y2hlY2tfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2Vy JywKICAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2hlY2tfdXBk JyB9LAoreyBvaWQgPT4gJzYxMjQnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwg aW50ZWdyaXR5IE9OIERFTEVURSBDQVNDQURFJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlf Y2FzY2FkZV9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdn ZXInLAorICBwcm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9jYXNjYWRl X2RlbCcgfSwKK3sgb2lkID0+ICc2MTI1JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50 aWFsIGludGVncml0eSBPTiBVUERBVEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9G S2V5X2Nhc2NhZGVfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0 cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2Fz Y2FkZV91cGQnIH0sCiB7IG9pZCA9PiAnNjEyNicsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZl cmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFJFU1RSSUNUJywKICAgcHJvbmFtZSA9PiAn VFJJX0ZLZXlfcmVzdHJpY3RfZGVsJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAogICBwcm9yZXR0 eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCkBAIC0zOTU3LDYgKzM5NjMs MjAgQEAKICAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJywgcHJvdm9sYXRp bGUgPT4gJ3YnLAogICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4g JycsCiAgIHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJyB9LAoreyBvaWQgPT4g JzYxMjgnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERF TEVURSBTRVQgTlVMTCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJywg cHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJn dHlwZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF9kZWwnIH0sCit7IG9p ZCA9PiAnNjEyOScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkg T04gVVBEQVRFIFNFVCBOVUxMJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91 cGQnLCBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLAorICBw cm9hcmd0eXBlcyA9PiAnJywgcHJvc3JjID0+ICdUUklfRktleV9zZXRudWxsX3VwZCcgfSwK K3sgb2lkID0+ICc2MTMwJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVn cml0eSBPTiBERUxFVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9z ZXRkZWZhdWx0X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAn dHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Nl dGRlZmF1bHRfZGVsJyB9LAoreyBvaWQgPT4gJzYxMzEnLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBTRVQgREVGQVVMVCcsCisgIHByb25h bWUgPT4gJ1RSSV9GS2V5X3NldGRlZmF1bHRfdXBkJywgcHJvdm9sYXRpbGUgPT4gJ3YnLAor ICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisgIHByb3Ny YyA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF91cGQnIH0sCiB7IG9pZCA9PiAnNjEzMicsIGRl c2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIE5PIEFD VElPTicsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X25vYWN0aW9uX2RlbCcsIHByb3ZvbGF0 aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ ICcnLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292 ZXJsYXBzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFw cy5vdXQKaW5kZXggMDRiNGIwMmYyYS4uNWUzZjg5OTIxZCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dAorKysgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CkBAIC0xNDgsNiArMTQ4 LDcgQEAgU0VMRUNUIHBnX2dldF9pbmRleGRlZihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBw Z19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGUKICBDUkVBVEUgVU5JUVVFIElOREVY IHRlbXBvcmFsX3JuZzJfdXEgT04gdGVtcG9yYWxfcm5nMiBVU0lORyBnaXN0IChpZCwgdmFs aWRfYXQpCiAoMSByb3cpCiAKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKIC0tIFVOSVFV RSB3aXRoIHR3byBjb2x1bW5zIHBsdXMgYSByYW5nZToKIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ybmczICgKIAlpZDEgaW50NHJhbmdlLApAQCAtNzE2LDcgKzcxNyw2MiBAQCBBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRF IENBU0NBREUgT04gVVBEQVRFIENBU0NBREU7Ci1FUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9y dGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKKyAgaWQgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs0LDUpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFs3LDgp CisgWzQsNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzYsNykKKyBbNCw1KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbNiw3KQorKDMgcm93cykKKwor VVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZd JzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0 XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbNCw1KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDow MDowMCAyMDIwIikgfCBbNyw4KQorIFs0LDUpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs3LDgpCisgWzQsNSkgfCBbIldl ZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwg WzcsOCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxNiwxNl0n IFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRp bWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTAsMTBdJzsKKyAgIGlkICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFsxNiwxNykKKyBbMTAsMTEpIHwgWyJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsx NSwxNikKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s4LDhdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQg PSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQg ICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFs1LDYpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs4LDkpCisgWzUsNikgfCBbIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzgsOSkKKygyIHJv d3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOwor IGlkIHwgdmFsaWRfYXQgfCBwYXJlbnRfaWQgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKygwIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTcs MTddJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNywxN10nLCB0c3JhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZB TFVFUyAoJ1sxMSwxMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1sxNywxN10nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMTcs MTddJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CisgICBp ZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEx LDEyKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDow MCAyMDIxIikgfCBbMTcsMTgpCisoMSByb3cpCisKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0 ZXMgU0VUIE5VTEwKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbOSw5XScs IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKIElOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1s5LDldJyk7CkBAIC03MjYsNyArNzgyLDY3IEBAIEFMVEVS IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwg UEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxF VEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwotRVJST1I6ICBhY3Rpb24gbm90IHN1 cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcm5n IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAx LTAxJyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOworU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgWyJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IAorIFs2LDcpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAw OjAwOjAwIDIwMTkiKSB8IFs5LDEwKQorIFs2LDcpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs5LDEwKQorKDMgcm93cykK KworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAn WzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0g J1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAg ICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorIFs2LDcpIHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAx IDAwOjAwOjAwIDIwMjAiKSB8IAorIFs2LDcpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IAorIFs2LDcpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IAorKDMg cm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCB0 c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4 XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQg PSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMiwxMl0n OworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxMiwxMykgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyMCIpIHwgCisgWzEyLDEzKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTgsMTkpCisoMiByb3dzKQor CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9ybmcgVkFMVUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgn WzcsN10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0n KTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10n OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzcsOCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgCisgWzcsOCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1 ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWzExLDEyKQorIFs3LDgpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMSwx MikKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdb MTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbNyw3XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbNyw4KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIikgfCAKKyBbNyw4KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAy MDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCAKKyBbNyw4KSB8IFsiV2VkIEph biAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygz IHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAo J1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMCwy MF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMjAsMjBdJyBB TkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisgICBpZCAgICB8 ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEzLDE0KSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IikgfCAKKyBbMTMsMTQpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsyMCwyMSkKKygyIHJvd3MpCisKIC0tIHRlc3QgRksg cGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CiBJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpKTsKQEAgLTczOCw3ICs4NTQsOTUgQEAgQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBTRVQgREVGQVVM VCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7Ci1FUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVk IGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKK1VQREFURSB0ZW1wb3JhbF9ybmcgRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNF VCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlkICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFsiVHVlIEph biAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEs MCkKKyBbOCw5KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbMTIsMTMpCisgWzgsOSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzEyLDEzKQorKDMgcm93 cykKKworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQg PSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9h dCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgWy0xLDApCisg WzgsOSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6 MDAgMjAyMSIpIHwgWy0xLDApCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgdHNy YW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTQsMTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMjIsMjJdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbMjMsMjNdJyBXSEVSRSBpZCA9ICdbMjIsMjJdJyBBTkQgdmFsaWRfYXQgQD4gJzIw MTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzE0LDE1KSB8IFsiTW9uIEphbiAwMSAwMDow MDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbMTQs MTUpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiKSB8IFsyMiwyMykKKygyIHJvd3MpCisKKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0 ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTQs MTRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOSw5XScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgICAg ICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEwKSB8IFsiVHVlIEphbiAw MSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbLTEsMCkK KyBbOSwxMCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAxOSIpIHwgWzE0LDE1KQorIFs5LDEwKSB8IFsiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTQsMTUpCisoMyByb3dz KQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOwor ICAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAg ICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb OSwxMCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIpIHwgWy0xLDApCisgWzksMTApIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIw MTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFs5LDEwKSB8IFsi V2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikg fCBbLTEsMCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMjQsMjRdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCB0c3JhbmdlKCcyMDIw LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcy cm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1syNCwyNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbMjQsMjRdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzE1LDE1XSc7 CisgICBpZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAg ICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgWzE1LDE2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAw MDowMDowMCAyMDIwIikgfCBbLTEsMCkKKyBbMTUsMTYpIHwgWyJXZWQgSmFuIDAxIDAwOjAw OjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsyNCwyNSkKKygyIHJv d3MpCisKKy0tIEZLIHdpdGggYSBjdXN0b20gcmFuZ2UgdHlwZQorQ1JFQVRFIFRZUEUgbXlk YXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9ybmcyICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgbXlkYXRlcmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlwYXJlbnRfaWQg aW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrMl9ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcyIChpZCwgUEVSSU9EIHZhbGlk X2F0KSBPTiBERUxFVEUgQ0FTQ0FERQorKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZzIg VkFMVUVTICgnWzgsOF0nLCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmsyX3JuZzJybmcgVkFMVUVTICgnWzUsNV0n LCBteWRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOwor REVMRVRFIEZST00gdGVtcG9yYWxfcm5nMiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9mazJfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7Cisg IGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs1LDYpIHwgWzAxLTAx LTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5KQorIFs1LDYpIHwgWzAxLTAxLTIwMjAsMDEtMDEt MjAyMSkgfCBbOCw5KQorKDIgcm93cykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5n MnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKK0RST1AgVFlQRSBteWRhdGVyYW5n ZTsKIC0tIEZLIGJldHdlZW4gcGFydGl0aW9uZWQgdGFibGVzCiBDUkVBVEUgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nICgKIAlpZCBpbnQ0cmFuZ2UsCkBAIC03NDYsOCArOTUw LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyAoCiAgIG5hbWUg dGV4dCwKIAlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKICkgUEFSVElUSU9OIEJZIExJ U1QgKGlkKTsKLUNSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAn WzcsN10nLCAnWzksOV0nLCAnWzExLDExXScpOwotQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScs ICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0NS RUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBG T1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAnWzks OV0nLCAnWzExLDExXScsICdbMTMsMTNdJywgJ1sxNSwxNV0nLCAnWzE3LDE3XScsICdbMTks MTldJywgJ1syMSwyMV0nLCAnWzIzLDIzXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMCwwXScs ICdbMiwyXScsICdbNCw0XScsICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwx Ml0nLCAnWzE0LDE0XScsICdbMTYsMTZdJywgJ1sxOCwxOF0nLCAnWzIwLDIwXScsICdbMjIs MjJdJywgJ1syNCwyNF0nKTsKIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBWQUxVRVMKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAy LTAxJyksICdvbmUnKSwKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScsICcy MDAwLTAzLTAxJyksICdvbmUnKSwKQEAgLTc2MCw4ICs5NjQsOCBAQCBDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg KGlkLCBQRVJJT0QgdmFsaWRfYXQpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVB VEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDdd JywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24g T0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIs Ml0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7 CitDUkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywg J1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sx NywxN10nLCAnWzE5LDE5XScsICdbMjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJM RSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBG T1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgs OF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgs MThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiAtLSBwYXJ0aXRpb25l ZCBGSyBjaGlsZCBpbnNlcnRzCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUwogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywg JzIwMDAtMDItMTUnKSwgJ1sxLDFdJyksCkBAIC03OTYsNyArMTAwMCw3IEBAIFVQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2 LTAyLTAxJywgJzIwMTYtMDMtCiAtLSBzaG91bGQgZmFpbDoKIFVQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywg JzIwMTYtMDItMDEnKQogICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50 ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0 YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRl IG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJh aW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMg c3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIi4KIC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpAQCAtODA4LDcgKzEw MTIsNyBAQCBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZB TFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6 CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAx Jyk7Ci1FUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19wYXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmciCitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19wYXJlbnRfaWRfZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAx LTIwMTgsMDItMDEtMjAxOCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0g J1s1LDVdJzsKQEAgLTgzMCw3ICsxMDM0LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0w My0KIC0tIHNob3VsZCBmYWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBT RVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAg IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAxOC0wMi0wMScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxl ICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRh YmxlICJ0cDEiIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0 KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2Vk IGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xl YW4gdXA6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdI RVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CkBAIC04NDIsMzUgKzEwNDYsMjE0IEBAIElOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVURSBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9m a2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9S OiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtl eSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9p ZF9ma2V5MSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0y MDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIi4KIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENB U0NBREUKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdb Niw2XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxU RVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RS QUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsK LUVSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5 cworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDdd JyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjAp IHwgWzcsOCkKKyBbNCw1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzYsNykKKyBb NCw1KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbNCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkK KyBbNCw1KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzcsOCkKKyBbNCw1KSB8IFsw MS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0w MScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAsMTBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjEtMDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxp ZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBpZCAgICB8 ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAyMCkgfCBbMTYsMTcpCisgWzEwLDExKSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgWzE1LDE2KQorKDIgcm93cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50 IGRlbGV0ZXMgQ0FTQ0FERQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1s4LDhdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4 LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJF IGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorIFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5 KQorIFs1LDYpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbOCw5KQorKDIgcm93cykK KworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s4 LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZCAKKy0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcy cm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpLCAnWzE3LDE3XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6 OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzExLDExXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyBbMTEsMTIpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTcs MTgpCisoMSByb3cpCisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBO VUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzks OV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKIEFMVEVS IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChw YXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsK LUVSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5 cworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwx MF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAg dmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs2LDcpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAy MCkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzksMTApCisgWzYs NykgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFs5LDEwKQorKDMgcm93cykKKworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUg aWQgPSAnWzksOV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgWzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2 LDcpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDIw LDAxLTAxLTIwMjEpIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbMTgsMThdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9 ICdbMTksMTldJyBXSEVSRSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTkt MDEtMDEnOjpkYXRlOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRf YXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzEyLDEzKSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjAp IHwgCisgWzEyLDEzKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE4LDE5KQorKDIg cm93cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTEsMTFdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgZGF0ZXJh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7 CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzcsN10nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyBbNyw4KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzcsOCkgfCBbMDEtMDEt MjAxOCwwMS0wMS0yMDE5KSB8IFsxMSwxMikKKyBbNyw4KSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgWzExLDEyKQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbMDEtMDEtMjAx OSwwMS0wMS0yMDIwKSB8IAorIFs3LDgpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCAK KyBbNyw4KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgCisoMyByb3dzKQorCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIw MjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAg IHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMywxNCkgfCBbMDEtMDEtMjAxOCwwMS0w MS0yMDIwKSB8IAorIFsxMywxNCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsyMCwy MSkKKygyIHJvd3MpCisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBE RUZBVUxUCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgn WzAsMF0nLCBkYXRlcmFuZ2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZwotICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxU ICdbLTEsLTFdJywKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWzAs MF0nLAogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n X2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdf ZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFV TFQgT04gVVBEQVRFIFNFVCBERUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRl ZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb OCw5KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOCw5KSB8IFswMS0w MS0yMDE4LDAxLTAxLTIwMTkpIHwgWzEyLDEzKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEt MDEtMjAyMSkgfCBbMTIsMTMpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbOCw4XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9p ZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4 LDkpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAx LTIwMTgsMDEtMDEtMjAxOSkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEt MjAyMSkgfCBbMCwxKQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAx LTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorIFsxNCwxNSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8 IFswLDEpCisgWzE0LDE1KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIyLDIzKQor KDIgcm93cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFV TFQKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTQs MTRdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNCwxNF0nKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0 LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAg IHwgcGFyZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFs5LDEwKSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBb OSwxMCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5KSB8IFsxNCwxNSkKKyBbOSwxMCkgfCBb MDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsxNCwxNSkKKygzIHJvd3MpCisKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbOSw5XSc7CisgICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzksMTApIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFsw MS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCww MS0wMS0yMDIxKSB8IFswLDEpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg VkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg V0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0 ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTUsMTVdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFsxNSwxNikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisg WzE1LDE2KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzI0LDI1KQorKDIgcm93cykK KwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L3dpdGhvdXRfb3ZlcmxhcHMuc3FsCmluZGV4IDFjZDI3MmE1NzUuLmU0ODVlM2Y4OTEgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0xMDMs NiArMTAzLDcgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAogXGQgdGVtcG9yYWxf cm5nMgogU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJh aW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CiBTRUxFQ1QgcGdfZ2V0 X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUg Y29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5n MjsKIAogLS0gVU5JUVVFIHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgogQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3JuZzMgKApAQCAtNTcyLDYgKzU3MywyOCBAQCBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIENB U0NBREUgT04gVVBEQVRFIENBU0NBREU7CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQgPSAnWzcsN10nIFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNCw0XSc7CitVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNSwx NV0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgs OF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIw LTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVT ICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAy MC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMTcsMTddJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0n OwogCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiBJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSk7CkBAIC01ODIsNiArNjA1LDI4IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0 KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04g VVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sx MCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBp ZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAt MDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE4LDE4XScs IHRzcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBT RVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxl dGVzIFNFVCBOVUxMCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzExLDEx XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFs X3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAy MC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMjAsMjBdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCB0c3Jhbmdl KCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MjEtMDEtMDEnKSwgJ1syMCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbMjAsMjBdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3Rh bXA7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEz LDEzXSc7CiAKIC0tIHRlc3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBu dWxsKSk7CkBAIC01OTQsNiArNjM5LDU0IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBE QVRFIFNFVCBERUZBVUxUOworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sx MywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VU IGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1syMywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB2YWxpZF9h dCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf Zmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQg ZGVsZXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywg dHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxNSwxNV0nOworCistLSBGSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JF QVRFIFRZUEUgbXlkYXRlcmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRh dGVyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3Jh bF9mazJfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdl LAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmsyX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlk LCBQRVJJT0QgdmFsaWRfYXQpIE9OIERFTEVURSBDQVNDQURFCispOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nMiBWQUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBW QUxVRVMgKCdbNSw1XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSwgJ1s4LDhdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9 ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKK0RST1Ag VEFCTEUgdGVtcG9yYWxfcm5nMjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIAogLS0gRksg YmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKIApAQCAtNjAzLDggKzY5Niw4IEBAIENSRUFU RSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZh bGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1D UkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg Rk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5 LDldJywgJ1sxMSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJ TiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwx MV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEs MjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAn WzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwx NF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQs MjRdJyk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAg ICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25l JyksCiAgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScp LCAnb25lJyksCkBAIC02MTgsOCArNzExLDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRf YXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9E IHZhbGlkX2F0KQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRm a3AxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBW QUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScs ICdbMTEsMTFdJyk7Ci1DUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRd JywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRB QkxFIHRma3AxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n IEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdb OSw5XScsICdbMTEsMTFdJywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sx OSwxOV0nLCAnWzIxLDIxXScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFy dGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJ TiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwx MF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAs MjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScpOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBjaGls ZCBpbnNlcnRzCiAKQEAgLTcwMywzNyArNzk2LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRh dGVyYW5nZQogCiAtLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVy YW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZwogCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFU RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUg aWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0n OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwx NV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJh bmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1 LDE1XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBd JzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNU ICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9 ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1sxMSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3 LDE3XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzExLDExXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxM CiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOwor VVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0n IFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1sxOCwxOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThd JywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUg aWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTIsMTJdJzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5V TEwKIAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10n LCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOwor REVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdb MTEsMTFdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBWQUxVRVMgKCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRh dGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJl bnRfaWQgU0VUIERFRkFVTFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lk IFNFVCBERUZBVUxUICdbMCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCiAJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9O IERFTEVURSBTRVQgREVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQg PSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgs OF0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sy MiwyMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0 ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAn WzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQs MTRdJzsKIAogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQK IAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwx NF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVM RVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQs MTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbOSw5XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MS0wMS0wMScpLCAnWzI0LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFdIRVJFIGlkID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n OwotLSAKMi4yNS4xCgo= --------------XDFSGX0v4ADvwDYCFM5gI4Qr Content-Type: text/x-patch; charset=UTF-8; name="v13-0005-Add-PERIODs.patch" Content-Disposition: attachment; filename="v13-0005-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSBmOWIxNTk5MzMwNDI5NmMwMDE4YzFiY2ViNGU0OTYyMzQ0NDdmOGM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjEzIDUvNV0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu 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 YmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgICAgICAgICAgfCAxNTEgKysrLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMgICAgICAgICAgIHwgIDg3ICsr CiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jICAgICAgICAgICAgfCAgMjEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZlci5jICAgICAgICAgIHwgICAx ICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMgICAgICAgICAgICAgICAgICAgICB8IDE3 MyArKystCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oICAgICAgICAgICAgICAgICAgICAg fCAgMTQgKwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXBfc29ydC5jICAgICAgICAgICAgICAg IHwgICA3ICsKIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAg ICB8ICAzNSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCAgICAgICAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9oZWFwLmggICAgICAgICAgICAgICAg ICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVpbGQgICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2luZGV4LmggICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmggICAgICAg ICAgICAgICB8ICA1NCArKwogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oICAg ICAgICAgICAgICB8ICAgNCArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oICAg ICAgICAgICAgICAgIHwgIDM5ICstCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5oICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvdXRpbHMvbHN5c2NhY2hlLmgg ICAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgg ICAgICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2Rk bF9kZXBhcnNlLmMgICAgICAgfCAgIDYgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w ZXJpb2RzLm91dCAgICAgICAgIHwgMTczICsrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxs ZWxfc2NoZWR1bGUgICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cGVyaW9kcy5zcWwgICAgICAgICAgICAgIHwgMTE3ICsrKwogNDggZmlsZXMgY2hhbmdlZCwg MjMxOCBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3BlcmlvZC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5k ZXggZDE3ZmY1MWUyOC4uNmNiMmQ2MTA2ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTIzMCw2 ICsyMzAsMTEgQEAKICAgICAgIDxlbnRyeT5pbmZvcm1hdGlvbiBhYm91dCBwYXJ0aXRpb24g a2V5IG9mIHRhYmxlczwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wZXJpb2QiPjxzdHJ1Y3RuYW1l PnBnX3BlcmlvZDwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5w ZXJpb2RzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBvbGljeSI+PHN0cnVjdG5hbWU+cGdfcG9s aWN5PC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PnJvdy1zZWN1 cml0eSBwb2xpY2llczwvZW50cnk+CkBAIC01NzAwLDYgKzU3MDUsMTEzIEBAIFNDUkFNLVNI QS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJs ZT46PHJlcGxhY2VhYmxlPiZsCiAgICAgICAgYXJlIHNpbXBsZSByZWZlcmVuY2VzLgogICAg ICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgorCisgICAgPC90Ym9keT4KKyAgIDwv dGdyb3VwPgorICA8L3RhYmxlPgorIDwvc2VjdDE+CisKKworIDxzZWN0MSBpZD0iY2F0YWxv Zy1wZy1wZXJpb2QiPgorICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3Ru YW1lPjwvdGl0bGU+CisKKyAgPGluZGV4dGVybSB6b25lPSJjYXRhbG9nLXBnLXBlcmlvZCI+ CisgICA8cHJpbWFyeT5wZ19wZXJpb2Q8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJtPgorCisg IDxwYXJhPgorICAgVGhlIGNhdGFsb2cgPHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1Y3Ru YW1lPiBzdG9yZXMKKyAgIGluZm9ybWF0aW9uIGFib3V0IHN5c3RlbSBhbmQgYXBwbGljYXRp b24gdGltZSBwZXJpb2RzLgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBQZXJpb2RzIGFy ZSBkZXNjcmliZWQgaW4gPHhyZWYgbGlua2VuZD0iZGRsLXBlcmlvZHMiLz4uCisgIDwvcGFy YT4KKworICA8dGFibGU+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdfcGVyaW9kPC9zdHJ1 Y3RuYW1lPiBDb2x1bW5zPC90aXRsZT4KKworICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICA8 dGhlYWQ+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIENvbHVtbiBU eXBlCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBEZXNjcmlwdGlvbgor ICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGhlYWQ+CisKKyAg ICA8dGJvZHk+CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICA8L3Bh cmE+CisgICAgICA8cGFyYT4KKyAgICAgICBSb3cgaWRlbnRpZmllcgorICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD5wZXJuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4 dDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFBlcmlvZCBu YW1lCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJj b2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcnJlbGlkPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5rIGxp bmtlbmQ9ImNhdGFsb2ctcGctY2xhc3MiPjxzdHJ1Y3RuYW1lPnBnX2NsYXNzPC9zdHJ1Y3Ru YW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIHRhYmxlIHRoaXMgcGVyaW9kIGJlbG9u Z3MgdG8KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cGVyc3RhcnQ8L3N0 cnVjdGZpZWxkPiA8dHlwZT5pbnQyPC90eXBlPgorICAgICAgIChyZWZlcmVuY2VzIDxsaW5r IGxpbmtlbmQ9ImNhdGFsb2ctcGctYXR0cmlidXRlIj48c3RydWN0bmFtZT5wZ19hdHRyaWJ1 dGU8L3N0cnVjdG5hbWU+PC9saW5rPi48c3RydWN0ZmllbGQ+YXR0bnVtPC9zdHJ1Y3RmaWVs ZD4pCisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGUgbnVtYmVyIG9m IHRoZSBzdGFydCBjb2x1bW4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cGVyZW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+aW50MjwvdHlwZT4KKyAgICAgICAocmVmZXJl bmNlcyA8bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLWF0dHJpYnV0ZSI+PHN0cnVjdG5hbWU+ cGdfYXR0cmlidXRlPC9zdHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPmF0dG51bTwv c3RydWN0ZmllbGQ+KQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhl IG51bWJlciBvZiB0aGUgZW5kIGNvbHVtbgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAg IDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1 Y3RmaWVsZD5wZXJybmd0eXBlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgorICAg ICAgIChyZWZlcmVuY2VzIDxsaW5rIGxpbmtlbmQ9ImNhdGFsb2ctcGctdHlwZSI+PHN0cnVj dG5hbWU+cGdfdHlwZTwvc3RydWN0bmFtZT48L2xpbms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0 cnVjdGZpZWxkPikKKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRoZSBP SUQgb2YgdGhlIHJhbmdlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcGVyaW9kCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxl bnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnBlcmNvbnN0cmFpbnQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAgICAgKHJlZmVyZW5jZXMgPGxpbmsgbGlua2Vu ZD0iY2F0YWxvZy1wZy1jb25zdHJhaW50Ij48c3RydWN0bmFtZT5wZ19jb25zdHJhaW50PC9z dHJ1Y3RuYW1lPjwvbGluaz4uPHN0cnVjdGZpZWxkPm9pZDwvc3RydWN0ZmllbGQ+KQorICAg ICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVGhlIE9JRCBvZiB0aGUgcGVyaW9k J3MgPGxpdGVyYWw+Q0hFQ0s8L2xpdGVyYWw+IGNvbnN0cmFpbnQKKyAgICAgIDwvcGFyYT48 L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgIDwvdGJvZHk+CiAgICA8L3Rncm91cD4KICAg PC90YWJsZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMv c2dtbC9kZGwuc2dtbAppbmRleCAwNzVmZjMyOTkxLi45NGE4OTJjYTI5IDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBA IC0xMjYzLDYgKzEyNjMsNjQgQEAgQ1JFQVRFIFRBQkxFIGNpcmNsZXMgKAogICA8L3NlY3Qy PgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImRkbC1wZXJpb2RzIj4KKyAgPHRpdGxlPlBl cmlvZHM8L3RpdGxlPgorCisgIDxwYXJhPgorICAgUGVyaW9kcyBhcmUgZGVmaW5pdGlvbnMg b24gYSB0YWJsZSB0aGF0IGFzc29jaWF0ZSBhIHBlcmlvZCBuYW1lIHdpdGggYSBzdGFydAor ICAgY29sdW1uIGFuZCBhbiBlbmQgY29sdW1uLiAgQm90aCBjb2x1bW5zIG11c3QgYmUgb2Yg ZXhhY3RseSB0aGUgc2FtZSB0eXBlCisgICAoaW5jbHVkaW5nIGNvbGxhdGlvbiksIGhhdmUg YSBidHJlZSBvcGVyYXRvciBjbGFzcywgYW5kIHRoZSBzdGFydCBjb2x1bW4KKyAgIHZhbHVl IG11c3QgYmUgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgY29sdW1uIHZhbHVlLgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIHBlcmlvZHM6 IGFwcGxpY2F0aW9uIGFuZCBzeXN0ZW0uICBTeXN0ZW0gcGVyaW9kcyBhcmUKKyAgIGRpc3Rp bmd1aXNoZWQgYnkgdGhlaXIgbmFtZSB3aGljaCBtdXN0IGJlIDxsaXRlcmFsPlNZU1RFTV9U SU1FPC9saXRlcmFsPi4gIEFueQorICAgb3RoZXIgbmFtZSBpcyBhbiBhcHBsaWNhdGlvbiBw ZXJpb2QuCisgIDwvcGFyYT4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLWFwcGxpY2F0 aW9uLXBlcmlvZHMiPgorICA8dGl0bGU+QXBwbGljYXRpb24gUGVyaW9kczwvdGl0bGU+CisK KyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxz ZWNvbmRhcnk+YXBwbGljYXRpb248L3NlY29uZGFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisg ICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGFyZSBkZWZpbmVkIG9uIGEgdGFi bGUgdXNpbmcgdGhlIGZvbGxvd2luZyBzeW50YXg6CisgICA8L3BhcmE+CisKKzxwcm9ncmFt bGlzdGluZz4KK0NSRUFURSBUQUJMRSBiaWxsaW5nX2FkZHJlc3NlcyAoCisgIGN1c3RvbWVy X2lkIGludGVnZXIsCisgIGFkZHJlc3NfaWQgaW50ZWdlciwKKyAgdmFsaWRfZnJvbSBkYXRl LAorICB2YWxpZF90byBkYXRlLAorICA8ZW1waGFzaXM+UEVSSU9EIEZPUiB2YWxpZGl0eSAo dmFsaWRfZnJvbSwgdmFsaWRfdG8pPC9lbXBoYXNpcz4KKyk7Cis8L3Byb2dyYW1saXN0aW5n PgorCisgICA8cGFyYT4KKyAgICBBcHBsaWNhdGlvbiBwZXJpb2RzIGNhbiBiZSB1c2VkIHRv IGRlZmluZSB0ZW1wb3JhbCBwcmltYXJ5IGFuZCBmb3JlaWduIGtleXMuCisgICAgQW55IHRh YmxlIHdpdGggYSB0ZW1wb3JhbCBwcmltYXJ5IGtleSBpcyBhIHRlbXBvcmFsIHRhYmxlIGFu ZCBzdXBwb3J0cyB0ZW1wb3JhbCB1cGRhdGUgYW5kIGRlbGV0ZSBjb21tYW5kcy4KKyAgIDwv cGFyYT4KKyAgPC9zZWN0Mj4KKworICA8c2VjdDIgaWQ9ImRkbC1wZXJpb2RzLXN5c3RlbS1w ZXJpb2RzIj4KKyAgIDx0aXRsZT5TeXN0ZW0gUGVyaW9kczwvdGl0bGU+CisKKyAgIDxpbmRl eHRlcm0+CisgICAgPHByaW1hcnk+cGVyaW9kPC9wcmltYXJ5PgorICAgIDxzZWNvbmRhcnk+ c3lzdGVtPC9zZWNvbmRhcnk+CisgICA8L2luZGV4dGVybT4KKworICAgPHBhcmE+CisgICAg UGVyaW9kcyBmb3IgPGxpdGVyYWw+U1lTVEVNX1RJTUU8L2xpdGVyYWw+IGFyZSBjdXJyZW50 bHkgbm90IGltcGxlbWVudGVkLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgorIDwvc2VjdDE+ CisKICA8c2VjdDEgaWQ9ImRkbC1zeXN0ZW0tY29sdW1ucyI+CiAgIDx0aXRsZT5TeXN0ZW0g Q29sdW1uczwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlv bl9zY2hlbWEuc2dtbCBiL2RvYy9zcmMvc2dtbC9pbmZvcm1hdGlvbl9zY2hlbWEuc2dtbApp bmRleCBkNTdhMTMyMzQwLi44Y2M5NTJhMDg1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv aW5mb3JtYXRpb25fc2NoZW1hLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2luZm9ybWF0aW9u X3NjaGVtYS5zZ21sCkBAIC00MTYyLDYgKzQxNjIsNjkgQEAgT1JERVIgQlkgYy5vcmRpbmFs X3Bvc2l0aW9uOwogICA8L3RhYmxlPgogIDwvc2VjdDE+CiAKKyA8c2VjdDEgaWQ9ImluZm9z Y2hlbWEtcGVyaW9kcyI+CisgIDx0aXRsZT48bGl0ZXJhbD5wZXJpb2RzPC9saXRlcmFsPjwv dGl0bGU+CisKKyAgPHBhcmE+CisgICBUaGUgdmlldyA8bGl0ZXJhbD5wYXJhbWV0ZXJzPC9s aXRlcmFsPiBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgIHBlcmlvZHMgb2Yg YWxsIHRhYmxlcyBpbiB0aGUgY3VycmVudCBkYXRhYmFzZS4gIFRoZSBzdGFydCBhbmQgZW5k IGNvbHVtbgorICAgbmFtZXMgYXJlIG9ubHkgc2hvd24gaWYgdGhlIGN1cnJlbnQgdXNlciBo YXMgYWNjZXNzIHRvIHRoZW0gKGJ5IHdheSBvZiBiZWluZworICAgdGhlIG93bmVyIG9yIGhh dmluZyBzb21lIHByaXZpbGVnZSkuCisgIDwvcGFyYT4KKworICA8dGFibGU+CisgICA8dGl0 bGU+PGxpdGVyYWw+cGVyaW9kczwvbGl0ZXJhbD4gQ29sdW1uczwvdGl0bGU+CisKKyAgIDx0 Z3JvdXAgY29scz0iMyI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5 Pk5hbWU8L2VudHJ5PgorICAgICAgPGVudHJ5PkRhdGEgVHlwZTwvZW50cnk+CisgICAgICA8 ZW50cnk+RGVzY3JpcHRpb248L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgor CisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRlcmFsPnRhYmxl X2NhdGFsb2c8L2xpdGVyYWw+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT48dHlwZT5zcWxfaWRl bnRpZmllcjwvdHlwZT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk5hbWUgb2YgdGhlIGRhdGFi YXNlIGNvbnRhaW5pbmcgdGhlIHBlcmlvZCAoYWx3YXlzIHRoZSBjdXJyZW50IGRhdGFiYXNl KTwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp dGVyYWw+dGFibGVfc2NoZW1hPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5 cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9m IHRoZSBzY2hlbWEgY29udGFpbmluZyB0aGUgcGVyaW9kPC9lbnRyeT4KKyAgICAgPC9yb3c+ CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD50YWJsZV9uYW1lPC9saXRl cmFsPjwvZW50cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+ PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSB0YWJsZSBjb250YWluaW5nIHRo ZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5PjxsaXRlcmFsPnBlcmlvZF9uYW1lPC9saXRlcmFsPjwvZW50cnk+CisgICAgICA8ZW50 cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5O YW1lIG9mIHRoZSBwZXJpb2Q8L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5PjxsaXRlcmFsPnN0YXJ0X2NvbHVtbl9uYW1lPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICA8ZW50cnk+PHR5cGU+c3FsX2lkZW50aWZpZXI8L3R5cGU+PC9lbnRyeT4K KyAgICAgIDxlbnRyeT5OYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4gZm9yIHRoZSBwZXJpb2Q8 L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5PjxsaXRl cmFsPmVuZF9jb2x1bW5fbmFtZTwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pjx0 eXBlPnNxbF9pZGVudGlmaWVyPC90eXBlPjwvZW50cnk+CisgICAgICA8ZW50cnk+TmFtZSBv ZiB0aGUgZW5kIGNvbHVtbiBmb3IgdGhlIHBlcmlvZDwvZW50cnk+CisgICAgIDwvcm93Pgor ICAgIDwvdGJvZHk+CisgICA8L3Rncm91cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QxPgorCiAg PHNlY3QxIGlkPSJpbmZvc2NoZW1hLXJlZmVyZW50aWFsLWNvbnN0cmFpbnRzIj4KICAgPHRp dGxlPjxsaXRlcmFsPnJlZmVyZW50aWFsX2NvbnN0cmFpbnRzPC9saXRlcmFsPjwvdGl0bGU+ CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbAppbmRleCAyYzQxMzhlNGU5Li5hZWU5 ODZlZmQ1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCkBAIC02MCw2ICs2MCw4 IEBAIEFMVEVSIFRBQkxFIFsgSUYgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPgogICAgIEFMVEVSIENPTlNUUkFJTlQgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbnN0cmFpbnRfbmFtZTwvcmVwbGFjZWFibGU+ IFsgREVGRVJSQUJMRSB8IE5PVCBERUZFUlJBQkxFIF0gWyBJTklUSUFMTFkgREVGRVJSRUQg fCBJTklUSUFMTFkgSU1NRURJQVRFIF0KICAgICBWQUxJREFURSBDT05TVFJBSU5UIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxl PgogICAgIERST1AgQ09OU1RSQUlOVCBbIElGIEVYSVNUUyBdICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gWyBSRVNUUklD VCB8IENBU0NBREUgXQorICAgIEFERCBQRVJJT0QgRk9SIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnN0YXJ0X2NvbHVtbjwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX2NvbHVtbjwvcmVwbGFjZWFibGU+ICkgWyBXSVRI ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9vcHRpb248L3JlcGxh Y2VhYmxlPiA9IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFj ZWFibGU+IFssIC4uLiBdICkgXQorICAgIERST1AgUEVSSU9EIEZPUiA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPiBbIFJFU1RSSUNU IHwgQ0FTQ0FERSBdCiAgICAgRElTQUJMRSBUUklHR0VSIFsgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRyaWdnZXJfbmFtZTwvcmVwbGFjZWFibGU+IHwgQUxMIHwgVVNFUiBd CiAgICAgRU5BQkxFIFRSSUdHRVIgWyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dHJpZ2dlcl9uYW1lPC9yZXBsYWNlYWJsZT4gfCBBTEwgfCBVU0VSIF0KICAgICBFTkFCTEUg UkVQTElDQSBUUklHR0VSIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50cmlnZ2Vy X25hbWU8L3JlcGxhY2VhYmxlPgpAQCAtNTcxLDYgKzU3MywyOSBAQCBXSVRIICggTU9EVUxV UyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBs YWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWFsdGVydGFibGUtZGVzYy1hZGQtcGVyaW9kIj4K KyAgICA8dGVybT48bGl0ZXJhbD5BREQgUEVSSU9EIEZPUjwvbGl0ZXJhbD48L3Rlcm0+Cisg ICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBhZGRzIGEgbmV3 IHBlcmlvZCB0byBhIHRhYmxlIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhcworICAgICAgPHhy ZWYgbGlua2VuZD0ic3FsLWNyZWF0ZXRhYmxlIi8+LgorICAgICA8L3BhcmE+CisgICAgPC9s aXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5IGlkPSJz cWwtYWx0ZXJ0YWJsZS1kZXNjLWRyb3AtcGVyaW9kIj4KKyAgICA8dGVybT48bGl0ZXJhbD5E Uk9QIFBFUklPRCBGT1I8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAg PHBhcmE+CisgICAgICBUaGlzIGZvcm0gZHJvcHMgdGhlIHNwZWNpZmllZCBwZXJpb2Qgb24g YSB0YWJsZS4gIFRoZSBzdGFydCBhbmQgZW5kCisgICAgICBjb2x1bW5zIHdpbGwgbm90IGJl IGRyb3BwZWQgYnkgdGhpcyBjb21tYW5kIGJ1dCB0aGUKKyAgICAgIDxsaXRlcmFsPkNIRUNL PC9saXRlcmFsPiBjb25zdHJhaW50IHdpbGwgYmUuICBZb3Ugd2lsbCBuZWVkIHRvIHNheQor ICAgICAgPGxpdGVyYWw+Q0FTQ0FERTwvbGl0ZXJhbD4gaWYgYW55dGhpbmcgb3V0c2lkZSB0 aGUgdGFibGUgZGVwZW5kcyBvbiB0aGUKKyAgICAgIGNvbHVtbi4KKyAgICAgPC9wYXJhPgor ICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRy eSBpZD0ic3FsLWFsdGVydGFibGUtZGVzYy1kaXNhYmxlLWVuYWJsZS10cmlnZ2VyIj4KICAg ICA8dGVybT48bGl0ZXJhbD5ESVNBQkxFPC9saXRlcmFsPi88bGl0ZXJhbD5FTkFCTEUgWyBS RVBMSUNBIHwgQUxXQVlTIF0gVFJJR0dFUjwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3Rp dGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb21tZW50LnNnbWwgYi9kb2Mv c3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbAppbmRleCA1YjQzYzU2YjEzLi40OWMyZGY5OTQ0 IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL2NvbW1lbnQuc2dtbApAQCAtNDQsNiArNDQsNyBAQCBDT01NRU5UIE9O CiAgIE9QRVJBVE9SIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcl9u YW1lPC9yZXBsYWNlYWJsZT4gKDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sZWZ0 X3R5cGU8L3JlcGxhY2VhYmxlPiwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJp Z2h0X3R5cGU8L3JlcGxhY2VhYmxlPikgfAogICBPUEVSQVRPUiBDTEFTUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+b2JqZWN0X25hbWU8L3JlcGxhY2VhYmxlPiBVU0lORyA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJs ZT4gfAogICBPUEVSQVRPUiBGQU1JTFkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi Pm9iamVjdF9uYW1lPC9yZXBsYWNlYWJsZT4gVVNJTkcgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmluZGV4X21ldGhvZDwvcmVwbGFjZWFibGU+IHwKKyAgUEVSSU9EIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWxhdGlvbl9uYW1lPC9yZXBsYWNlYWJsZT4u PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBlcmlvZF9uYW1lPC9yZXBsYWNlYWJs ZT4gfAogICBQT0xJQ1kgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBvbGljeV9u YW1lPC9yZXBsYWNlYWJsZT4gT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX25hbWU8L3JlcGxhY2VhYmxlPiB8CiAgIFsgUFJPQ0VEVVJBTCBdIExBTkdVQUdFIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vYmplY3RfbmFtZTwvcmVwbGFjZWFibGU+ IHwKICAgUFJPQ0VEVVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wcm9jZWR1 cmVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCBbIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFyZ21vZGU8L3JlcGxhY2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmFyZ25hbWU8L3JlcGxhY2VhYmxlPiBdIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5hcmd0eXBlPC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdICkgXSB8CkBAIC0z NDEsNiArMzQyLDcgQEAgQ09NTUVOVCBPTiBPUEVSQVRPUiBeICh0ZXh0LCB0ZXh0KSBJUyAn UGVyZm9ybXMgaW50ZXJzZWN0aW9uIG9mIHR3byB0ZXh0cyc7CiBDT01NRU5UIE9OIE9QRVJB VE9SIC0gKE5PTkUsIGludGVnZXIpIElTICdVbmFyeSBtaW51cyc7CiBDT01NRU5UIE9OIE9Q RVJBVE9SIENMQVNTIGludDRvcHMgVVNJTkcgYnRyZWUgSVMgJzQgYnl0ZSBpbnRlZ2VyIG9w ZXJhdG9ycyBmb3IgYnRyZWVzJzsKIENPTU1FTlQgT04gT1BFUkFUT1IgRkFNSUxZIGludGVn ZXJfb3BzIFVTSU5HIGJ0cmVlIElTICdhbGwgaW50ZWdlciBvcGVyYXRvcnMgZm9yIGJ0cmVl cyc7CitDT01NRU5UIE9OIFBFUklPRCBteV90YWJsZS5teV9jb2x1bW4gSVMgJ1NhbGVzIHBy b21vdGlvbiB2YWxpZGl0eSc7CiBDT01NRU5UIE9OIFBPTElDWSBteV9wb2xpY3kgT04gbXl0 YWJsZSBJUyAnRmlsdGVyIHJvd3MgYnkgdXNlcnMnOwogQ09NTUVOVCBPTiBQUk9DRURVUkUg bXlfcHJvYyAoaW50ZWdlciwgaW50ZWdlcikgSVMgJ1J1bnMgYSByZXBvcnQnOwogQ09NTUVO VCBPTiBQVUJMSUNBVElPTiBhbGx0YWJsZXMgSVMgJ1B1Ymxpc2hlcyBhbGwgb3BlcmF0aW9u cyBvbiBhbGwgdGFibGVzJzsKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3RhYmxlLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCmluZGV4 IGZlYThmYzNjN2EuLmM0YTA4YjJjYTYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMjMsNiArMjMsNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KIDxzeW5v cHNpcz4KIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAg fSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RTIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiAoIFsKICAgeyA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGF0YV90eXBlPC9yZXBsYWNlYWJsZT4g WyBTVE9SQUdFIHsgUExBSU4gfCBFWFRFUk5BTCB8IEVYVEVOREVEIHwgTUFJTiB8IERFRkFV TFQgfSBdIFsgQ09NUFJFU1NJT04gPHJlcGxhY2VhYmxlPmNvbXByZXNzaW9uX21ldGhvZDwv cmVwbGFjZWFibGU+IF0gWyBDT0xMQVRFIDxyZXBsYWNlYWJsZT5jb2xsYXRpb248L3JlcGxh Y2VhYmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25z dHJhaW50PC9yZXBsYWNlYWJsZT4gWyAuLi4gXSBdCisgICAgfCA8cmVwbGFjZWFibGU+cGVy aW9kX2RlZmluaXRpb248L3JlcGxhY2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxlPnRhYmxl X2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPgogICAgIHwgTElLRSA8cmVwbGFjZWFibGU+c291 cmNlX3RhYmxlPC9yZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+bGlrZV9vcHRpb248L3Jl cGxhY2VhYmxlPiAuLi4gXSB9CiAgICAgWywgLi4uIF0KQEAgLTM3LDYgKzM4LDcgQEAgQ1JF QVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dH RUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKIENSRUFURSBbIFsgR0xPQkFMIHwgTE9DQUwgXSB7 IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBOT1QgRVhJU1RT IF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPgogICAgIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50eXBlX25hbWU8 L3JlcGxhY2VhYmxlPiBbICgKICAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbIFdJVEggT1BUSU9OUyBdIFsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNlYWJsZT4g WyAuLi4gXSBdCisgICAgfCA8cmVwbGFjZWFibGU+cGVyaW9kX2RlZmluaXRpb248L3JlcGxh Y2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxlPnRhYmxlX2NvbnN0cmFpbnQ8L3JlcGxhY2Vh YmxlPiB9CiAgICAgWywgLi4uIF0KICkgXQpAQCAtNDksNiArNTEsNyBAQCBDUkVBVEUgWyBb IEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JBUlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRB QkxFIFsgSUYgTk9UIEVYSQogQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9S QVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWElTVFMgXSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+CiAg ICAgUEFSVElUSU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXJlbnRf dGFibGU8L3JlcGxhY2VhYmxlPiBbICgKICAgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbIFdJVEggT1BUSU9OUyBdIFsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9jb25zdHJhaW50PC9yZXBsYWNl YWJsZT4gWyAuLi4gXSBdCisgICAgfCA8cmVwbGFjZWFibGU+cGVyaW9kX2RlZmluaXRpb248 L3JlcGxhY2VhYmxlPgogICAgIHwgPHJlcGxhY2VhYmxlPnRhYmxlX2NvbnN0cmFpbnQ8L3Jl cGxhY2VhYmxlPiB9CiAgICAgWywgLi4uIF0KICkgXSB7IEZPUiBWQUxVRVMgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhcnRpdGlvbl9ib3VuZF9zcGVjPC9yZXBsYWNlYWJs ZT4gfCBERUZBVUxUIH0KQEAgLTczLDYgKzc2LDExIEBAIENSRUFURSBbIFsgR0xPQkFMIHwg TE9DQUwgXSB7IFRFTVBPUkFSWSB8IFRFTVAgfSB8IFVOTE9HR0VEIF0gVEFCTEUgWyBJRiBO T1QgRVhJCiAgICAgWyBPTiBERUxFVEUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFibGU+IF0gWyBPTiBVUERBVEUgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmVyZW50aWFsX2FjdGlvbjwvcmVwbGFjZWFi bGU+IF0gfQogWyBERUZFUlJBQkxFIHwgTk9UIERFRkVSUkFCTEUgXSBbIElOSVRJQUxMWSBE RUZFUlJFRCB8IElOSVRJQUxMWSBJTU1FRElBVEUgXQogCis8cGhyYXNlPmFuZCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX2RlZmluaXRpb248L3JlcGxhY2VhYmxl PiBpczo8L3BocmFzZT4KKworUEVSSU9EIEZPUiB7IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5wZXJpb2RfbmFtZTwvcmVwbGFjZWFibGU+IHwgU1lTVEVNX1RJTUUgfSAoIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiApCitbIFdJVEggKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9k X29wdGlvbjwvcmVwbGFjZWFibGU+ID0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnZhbHVlPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisKIDxwaHJhc2U+YW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9jb25zdHJhaW50PC9yZXBsYWNlYWJs ZT4gaXM6PC9waHJhc2U+CiAKIFsgQ09OU1RSQUlOVCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNlYWJsZT4gXQpAQCAtMTQ0LDYgKzE1 MiwxNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgbmFtZSBhcyBhbnkgZXhp c3RpbmcgZGF0YSB0eXBlIGluIHRoZSBzYW1lIHNjaGVtYS4KICAgPC9wYXJhPgogCisgIDxw YXJhPgorICAgUGVyaW9kcyBteSBiZSBkZWZpbmVkIG9uIHRhYmxlcywgc3BlY2lmeWluZyB0 aGF0IHR3byBleGlzdGluZyBjb2x1bW5zCisgICByZXByZXNlbnQgc3RhcnQgYW5kIGVuZCB2 YWx1ZXMgZm9yIHRoZSBwZXJpb2QuICBQZXJpb2RzIG1heSBoYXZlIGFueSBuYW1lCisgICB0 aGF0IGRvZXNuJ3QgY29uZmxpY3Qgd2l0aCBhIGNvbHVtbiBuYW1lLCBidXQgdGhlIG5hbWUK KyAgIDxsaXRlcmFsPlNZU1RFTV9USU1FPC9saXRlcmFsPiBpcyBzcGVjaWFsLCB1c2VkIGZv ciB2ZXJzaW9uaW5nIHRhYmxlcy4KKyAgIFN5c3RlbSBwZXJpb2RzIGFyZSBub3QgeWV0IGlt cGxlbWVudGVkLiAgU2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1wZXJpb2RzIi8+IGZvciBtb3Jl IGRldGFpbHMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCBjb25z dHJhaW50IGNsYXVzZXMgc3BlY2lmeSBjb25zdHJhaW50cyAodGVzdHMpIHRoYXQKICAgIG5l dyBvciB1cGRhdGVkIHJvd3MgbXVzdCBzYXRpc2Z5IGZvciBhbiBpbnNlcnQgb3IgdXBkYXRl IG9wZXJhdGlvbgpAQCAtODA0LDYgKzgyMCwzMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4s IFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxp c3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLXBhcm1zLXBlcmlvZCI+CisgICAgPHRlcm0+ PGxpdGVyYWw+UEVSSU9EIEZPUiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVy aW9kX25hbWU8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiApIFsgV0lUSCAoIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5wZXJpb2Rfb3B0aW9uPC9yZXBsYWNlYWJsZT4gPSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dmFsdWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XSApIF08L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBhcmE+Cisg ICAgICBBIHBlcmlvZCBkZWZpbml0aW9uIGdpdmVzIHNlbWFudGljIG1lYW5pbmcgdG8gdHdv IGV4aXN0aW5nIGNvbHVtbnMgb2YKKyAgICAgIHRoZSB0YWJsZS4gIEl0IGRlZmluZXMgYSAi c3RhcnQgY29sdW1uIiBhbmQgYW4gImVuZCBjb2x1bW4iIHdoZXJlIHRoZQorICAgICAgc3Rh cnQgdmFsdWUgaXMgc3RyaWN0bHkgbGVzcyB0aGFuIHRoZSBlbmQgdmFsdWUuICBBCisgICAg ICA8bGl0ZXJhbD5DSEVDSzwvbGl0ZXJhbD4gY29uc3RyYWludCBpcyBhdXRvbWF0aWNhbGx5 IGNyZWF0ZWQgdG8gZW5mb3JjZQorICAgICAgdGhpcy4gWW91IGNhbiBzcGVjaWZ5IHRoZSBu YW1lIG9mIHRoYXQgY29uc3RyYWludCB3aXRoIHRoZQorICAgICAgPGxpdGVyYWw+Y2hlY2tf Y29uc3RyYWludF9uYW1lPC9saXRlcmFsPiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFibGU+LgorICAgICA8L3BhcmE+CisKKyAgICAg PHBhcmE+CisgICAgICBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIGV4YWN0bHkgdGhlIHNhbWUg dHlwZSBhbmQgbXVzdCBoYXZlIGEgcmFuZ2UgdHlwZQorICAgICAgZGVmaW5lZCBmcm9tIHRo ZWlyIGJhc2UgdHlwZS4gIElmIHRoZXJlIGFyZSBzZXZlcmFsIHJhbmdlIHR5cGVzIGZvciB0 aGF0CisgICAgICBiYXNlIHR5cGUsIHlvdSBtdXN0IHNwZWNpZnkgd2hpY2ggb25lIHlvdSB3 YW50IGJ5IHVzaW5nIHRoZQorICAgICAgPGxpdGVyYWw+cmFuZ2V0eXBlPC9saXRlcmFsPiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGVyaW9kX29wdGlvbjwvcmVwbGFjZWFi bGU+LgorICAgICAgQW55IGJhc2UgdHlwZSBpcyBhbGxvd2VkLCBhcyBsb25nIGFzIGl0IGhh cyBhIHJhbmdlIHR5cGUsIGFsdGhvdWdoIGl0IGlzCisgICAgICBleHBlY3RlZCB0aGF0IG1v c3QgcGVyaW9kcyB3aWxsIHVzZSB0ZW1wb3JhbCB0eXBlcyBsaWtlIDxsaXRlcmFsPnRpbWVz dGFtcHR6PC9saXRlcmFsPgorICAgICAgb3IgPGxpdGVyYWw+ZGF0ZTwvbGl0ZXJhbD4uCisg ICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAg IDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJtcy1jb25zdHJhaW50Ij4K ICAgICA8dGVybT48bGl0ZXJhbD5DT05TVFJBSU5UIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5jb25zdHJhaW50X25hbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+ CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvTWFrZWZpbGUKaW5kZXggM2U5OTk0NzkzZC4u NTAwYjgwZmQxOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9NYWtlZmlsZQor KysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL01ha2VmaWxlCkBAIC0zOSw2ICszOSw3IEBAIE9C SlMgPSBcCiAJcGdfbmFtZXNwYWNlLm8gXAogCXBnX29wZXJhdG9yLm8gXAogCXBnX3BhcmFt ZXRlcl9hY2wubyBcCisJcGdfcGVyaW9kLm8gXAogCXBnX3Byb2MubyBcCiAJcGdfcHVibGlj YXRpb24ubyBcCiAJcGdfcmFuZ2UubyBcCkBAIC0xMTEsNiArMTEyLDcgQEAgQ0FUQUxPR19I RUFERVJTIDo9IFwKIAlwZ19jb2xsYXRpb24uaCBcCiAJcGdfcGFyYW1ldGVyX2FjbC5oIFwK IAlwZ19wYXJ0aXRpb25lZF90YWJsZS5oIFwKKwlwZ19wZXJpb2QuaCBcCiAJcGdfcmFuZ2Uu aCBcCiAJcGdfdHJhbnNmb3JtLmggXAogCXBnX3NlcXVlbmNlLmggXApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY2F0YWxvZy9hY2xjaGsuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvYWNs Y2hrLmMKaW5kZXggZDFmNWRjZDhiZS4uYmQxM2YxNmI4NiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9hY2xjaGsuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2FjbGNo ay5jCkBAIC0yNzkxLDYgKzI3OTEsNyBAQCBhY2xjaGVja19lcnJvcihBY2xSZXN1bHQgYWNs ZXJyLCBPYmplY3RUeXBlIG9ianR5cGUsCiAJCQkJCWNhc2UgT0JKRUNUX0RFRkFVTFQ6CiAJ CQkJCWNhc2UgT0JKRUNUX0RFRkFDTDoKIAkJCQkJY2FzZSBPQkpFQ1RfRE9NQ09OU1RSQUlO VDoKKwkJCQkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQkJCQljYXNlIE9CSkVDVF9QVUJMSUNB VElPTl9OQU1FU1BBQ0U6CiAJCQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJ CQkJY2FzZSBPQkpFQ1RfUk9MRToKQEAgLTI5MzIsNiArMjkzMyw3IEBAIGFjbGNoZWNrX2Vy cm9yKEFjbFJlc3VsdCBhY2xlcnIsIE9iamVjdFR5cGUgb2JqdHlwZSwKIAkJCQkJY2FzZSBP QkpFQ1RfREVGQUNMOgogCQkJCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQkJCQlj YXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQkJCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJ CQkJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJCQkJY2FzZSBPQkpF Q1RfUFVCTElDQVRJT05fUkVMOgogCQkJCQljYXNlIE9CSkVDVF9ST0xFOgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9kZXBlbmRlbmN5LmMgYi9zcmMvYmFja2VuZC9jYXRh bG9nL2RlcGVuZGVuY3kuYwppbmRleCBmOGExMzZiYTBhLi4yMzJmNzdjOTZlIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL2RlcGVuZGVuY3kuYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL2RlcGVuZGVuY3kuYwpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BlcmF0b3IuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5Lmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wYXJhbWV0ZXJfYWNsLmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BvbGljeS5oIgogI2lu Y2x1ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcHVibGlj YXRpb24uaCIKQEAgLTE1NCw2ICsxNTUsNyBAQCBzdGF0aWMgY29uc3QgT2lkIG9iamVjdF9j bGFzc2VzW10gPSB7CiAJQ2FzdFJlbGF0aW9uSWQsCQkJCS8qIE9DTEFTU19DQVNUICovCiAJ Q29sbGF0aW9uUmVsYXRpb25JZCwJCS8qIE9DTEFTU19DT0xMQVRJT04gKi8KIAlDb25zdHJh aW50UmVsYXRpb25JZCwJCS8qIE9DTEFTU19DT05TVFJBSU5UICovCisJUGVyaW9kUmVsYXRp b25JZCwJCQkvKiBPQ0xBU1NfUEVSSU9EICovCiAJQ29udmVyc2lvblJlbGF0aW9uSWQsCQkv KiBPQ0xBU1NfQ09OVkVSU0lPTiAqLwogCUF0dHJEZWZhdWx0UmVsYXRpb25JZCwJCS8qIE9D TEFTU19ERUZBVUxUICovCiAJTGFuZ3VhZ2VSZWxhdGlvbklkLAkJCS8qIE9DTEFTU19MQU5H VUFHRSAqLwpAQCAtMTQ0Myw2ICsxNDQ1LDEwIEBAIGRvRGVsZXRpb24oY29uc3QgT2JqZWN0 QWRkcmVzcyAqb2JqZWN0LCBpbnQgZmxhZ3MpCiAJCQlSZW1vdmVDb25zdHJhaW50QnlJZChv YmplY3QtPm9iamVjdElkKTsKIAkJCWJyZWFrOwogCisJCWNhc2UgT0NMQVNTX1BFUklPRDoK KwkJCVJlbW92ZVBlcmlvZEJ5SWQob2JqZWN0LT5vYmplY3RJZCk7CisJCQlicmVhazsKKwog CQljYXNlIE9DTEFTU19ERUZBVUxUOgogCQkJUmVtb3ZlQXR0ckRlZmF1bHRCeUlkKG9iamVj dC0+b2JqZWN0SWQpOwogCQkJYnJlYWs7CkBAIC0yODYyLDYgKzI4NjgsOSBAQCBnZXRPYmpl Y3RDbGFzcyhjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QpCiAJCWNhc2UgQ29uc3RyYWlu dFJlbGF0aW9uSWQ6CiAJCQlyZXR1cm4gT0NMQVNTX0NPTlNUUkFJTlQ7CiAKKwkJY2FzZSBQ ZXJpb2RSZWxhdGlvbklkOgorCQkJcmV0dXJuIE9DTEFTU19QRVJJT0Q7CisKIAkJY2FzZSBD b252ZXJzaW9uUmVsYXRpb25JZDoKIAkJCXJldHVybiBPQ0xBU1NfQ09OVkVSU0lPTjsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9oZWFwLmMgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2hlYXAuYwppbmRleCA3MTQ4ZGQxNzg3Li5hZTdkYTBlODIxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jYXRhbG9nL2hlYXAuYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9n L2hlYXAuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbmFtZXNw YWNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19vcGNsYXNzLmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19wYXJ0aXRpb25lZF90YWJsZS5oIgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVy aW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdGF0aXN0aWMuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Rh Ymxlc3BhY2UuaCIKQEAgLTIwMzksNiArMjA0MCw4MSBAQCBTZXRBdHRyTWlzc2luZyhPaWQg cmVsaWQsIGNoYXIgKmF0dG5hbWUsIGNoYXIgKnZhbHVlKQogCXRhYmxlX2Nsb3NlKHRhYmxl cmVsLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIH0KIAorLyoKKyAqIFN0b3JlIGEgcGVyaW9k IG9mIHJlbGF0aW9uIHJlbC4KKyAqCisgKiBSZXR1cm5zIHRoZSBPSUQgb2YgdGhlIG5ldyBw Z19wZXJpb2QgdHVwbGUuCisgKi8KK09pZAorU3RvcmVQZXJpb2QoUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpwZXJpb2RuYW1lLCBBdHRyTnVtYmVyIHN0YXJ0bnVtLAorCQkJQXR0ck51 bWJlciBlbmRudW0sIEF0dHJOdW1iZXIgcmFuZ2VudW0sIE9pZCBjb25vaWQpCit7CisJRGF0 dW0JCXZhbHVlc1tOYXR0c19wZ19wZXJpb2RdOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3Bl cmlvZF07CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXBsZTsKKwlPaWQJ CQlvaWQ7CisJTmFtZURhdGEJcGVybmFtZTsKKwlPYmplY3RBZGRyZXNzCW15c2VsZiwgcmVm ZXJlbmNlZDsKKworCUFzc2VydChyYW5nZW51bSAhPSBJbnZhbGlkQXR0ck51bWJlcik7CisK KwluYW1lc3RyY3B5KCZwZXJuYW1lLCBwZXJpb2RuYW1lKTsKKworCU1lbVNldCh2YWx1ZXMs IDAsIHNpemVvZih2YWx1ZXMpKTsKKwlNZW1TZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVs bHMpKTsKKworCXBnX3BlcmlvZCA9IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CisKKwlvaWQgPSBHZXROZXdPaWRXaXRoSW5kZXgocGdfcGVyaW9k LCBBdHRyRGVmYXVsdE9pZEluZGV4SWQsIEFudW1fcGdfcGVyaW9kX29pZCk7CisJdmFsdWVz W0FudW1fcGdfcGVyaW9kX29pZCAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShvaWQpOworCXZh bHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJuYW1lIC0gMV0gPSBOYW1lR2V0RGF0dW0oJnBlcm5h bWUpOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJyZWxpZCAtIDFdID0gUmVsYXRpb25H ZXRSZWxpZChyZWwpOworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJzdGFydCAtIDFdID0g c3RhcnRudW07CisJdmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcmVuZCAtIDFdID0gZW5kbnVt OworCXZhbHVlc1tBbnVtX3BnX3BlcmlvZF9wZXJyYW5nZSAtIDFdID0gcmFuZ2VudW07CisJ dmFsdWVzW0FudW1fcGdfcGVyaW9kX3BlcmNvbnN0cmFpbnQgLSAxXSA9IGNvbm9pZDsKKwor CXR1cGxlID0gaGVhcF9mb3JtX3R1cGxlKFJlbGF0aW9uR2V0RGVzY3IocGdfcGVyaW9kKSwg dmFsdWVzLCBudWxscyk7CisJQ2F0YWxvZ1R1cGxlSW5zZXJ0KHBnX3BlcmlvZCwgdHVwbGUp OworCisJT2JqZWN0QWRkcmVzc1NldChteXNlbGYsIFBlcmlvZFJlbGF0aW9uSWQsIG9pZCk7 CisKKwkvKiBEcm9wIHRoZSBwZXJpb2Qgd2hlbiB0aGUgdGFibGUgaXMgZHJvcHBlZC4gKi8K KwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgUmVs YXRpb25HZXRSZWxpZChyZWwpKTsKKwlyZWNvcmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJl ZmVyZW5jZWQsIERFUEVOREVOQ1lfQVVUTyk7CisKKwkvKiBGb3JiaWQgZHJvcHBpbmcgdGhl IGNvbHVtbnMgb2YgdGhlIHBlcmlvZC4gKi8KKwlPYmplY3RBZGRyZXNzU3ViU2V0KHJlZmVy ZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWwpLCBzdGFy dG51bSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZteXNlbGYsICZyZWZlcmVuY2VkLCBERVBF TkRFTkNZX05PUk1BTCk7CisJT2JqZWN0QWRkcmVzc1N1YlNldChyZWZlcmVuY2VkLCBSZWxh dGlvblJlbGF0aW9uSWQsIFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgZW5kbnVtKTsKKwlyZWNv cmREZXBlbmRlbmN5T24oJm15c2VsZiwgJnJlZmVyZW5jZWQsIERFUEVOREVOQ1lfTk9STUFM KTsKKworCS8qCisJICogVGhlIHJhbmdlIGNvbHVtbiBpcyBhbiBpbXBsZW1lbnRhdGlvbiBk ZXRhaWwsCisJICogYnV0IHdlIGNhbid0IHVzZSBERVBFTkRFTkNZX0lOVEVSTkFMCisJICog YmVjYXVzZSBkcm9wcGluZyB0aGUgdGFibGUgd2lsbCBjaGVjayBmb3IgZGVwZW5kZW5jaWVz IG9uIGFsbCBzdWJvYmplY3RzIHRvbworCSAqIChpbiBmaW5kRGVwZW5kZW50T2JqZWN0cyku CisJICogQnV0IGlmIHdlIG1ha2UgYW4gQVVUTyBkZXBlbmRlbmN5IG9uZSB3YXkgd2Ugd2ls bCBhdXRvLWRyb3AgdGhlIGNvbHVtbgorCSAqIHdoZW4gd2UgZHJvcCB0aGUgUEVSSU9ELAor CSAqIGFuZCBhIE5PUk1BTCBkZXBlbmRlbmN5IHRoZSBvdGhlciB3YXkgd2Ugd2lsbCBmb3Ji aWQgZHJvcHBpbmcgdGhlIGNvbHVtbiBkaXJlY3RseS4KKwkgKi8KKwlPYmplY3RBZGRyZXNz U3ViU2V0KHJlZmVyZW5jZWQsIFJlbGF0aW9uUmVsYXRpb25JZCwgUmVsYXRpb25HZXRSZWxp ZChyZWwpLCByYW5nZW51bSk7CisJcmVjb3JkRGVwZW5kZW5jeU9uKCZyZWZlcmVuY2VkLCAm bXlzZWxmLCBERVBFTkRFTkNZX0FVVE8pOworCXJlY29yZERlcGVuZGVuY3lPbigmbXlzZWxm LCAmcmVmZXJlbmNlZCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJLyoKKwkgKiBUaGUgY29u c3RyYWludCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwsIHNvIHdlIG1hcmsgaXQgYXMg c3VjaC4KKwkgKiAoTm90ZSB0aGF0IG15c2VsZiBhbmQgcmVmZXJlbmNlZCBhcmUgcmV2ZXJz ZWQgZm9yIHRoaXMgb25lLikKKwkgKi8KKwlPYmplY3RBZGRyZXNzU2V0KHJlZmVyZW5jZWQs IENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25vaWQpOworCXJlY29yZERlcGVuZGVuY3lPbigm cmVmZXJlbmNlZCwgJm15c2VsZiwgREVQRU5ERU5DWV9JTlRFUk5BTCk7CisKKwl0YWJsZV9j bG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJuIG9pZDsKK30K KwogLyoKICAqIFN0b3JlIGEgY2hlY2stY29uc3RyYWludCBleHByZXNzaW9uIGZvciB0aGUg Z2l2ZW4gcmVsYXRpb24uCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9p bmZvcm1hdGlvbl9zY2hlbWEuc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9pbmZvcm1hdGlv bl9zY2hlbWEuc3FsCmluZGV4IGEwNmVjN2EwYTguLjY2ZjkyNGU5NzkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAorKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKQEAgLTEyMDAsNyArMTIw MCwyOCBAQCBHUkFOVCBTRUxFQ1QgT04gcGFyYW1ldGVycyBUTyBQVUJMSUM7CiAgKiBQRVJJ T0RTIHZpZXcKICAqLwogCi0tLSBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQKK0NSRUFURSBWSUVX IHBlcmlvZHMgQVMKKyAgICBTRUxFQ1QgY3VycmVudF9kYXRhYmFzZSgpOjppbmZvcm1hdGlv bl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgdGFibGVfY2F0YWxvZywKKyAgICAgICAgICAg bmMubnNwbmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlmaWVyIEFTIHRhYmxl X3NjaGVtYSwKKyAgICAgICAgICAgYy5yZWxuYW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3Fs X2lkZW50aWZpZXIgQVMgdGFibGVfbmFtZSwKKyAgICAgICAgICAgcC5wZXJuYW1lOjppbmZv cm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIgQVMgcGVyaW9kX25hbWUsCisgICAgICAg ICAgIENBU0UgV0hFTiBwZ19oYXNfcm9sZShjLnJlbG93bmVyLCAnVVNBR0UnKQorICAgICAg ICAgICAgICAgICAgT1IgaGFzX2NvbHVtbl9wcml2aWxlZ2Uoc2EuYXR0cmVsaWQsIHNhLmF0 dG51bSwgJ1NFTEVDVCwgSU5TRVJULCBVUERBVEUsIFJFRkVSRU5DRVMnKQorICAgICAgICAg ICAgICAgIFRIRU4gc2EuYXR0bmFtZTo6aW5mb3JtYXRpb25fc2NoZW1hLnNxbF9pZGVudGlm aWVyCisgICAgICAgICAgIEVORCBBUyBzdGFydF9jb2x1bW5fbmFtZSwKKyAgICAgICAgICAg Q0FTRSBXSEVOIHBnX2hhc19yb2xlKGMucmVsb3duZXIsICdVU0FHRScpCisgICAgICAgICAg ICAgICAgICBPUiBoYXNfY29sdW1uX3ByaXZpbGVnZShlYS5hdHRyZWxpZCwgZWEuYXR0bnVt LCAnU0VMRUNULCBJTlNFUlQsIFVQREFURSwgUkVGRVJFTkNFUycpCisgICAgICAgICAgICAg ICAgVEhFTiBlYS5hdHRuYW1lOjppbmZvcm1hdGlvbl9zY2hlbWEuc3FsX2lkZW50aWZpZXIK KyAgICAgICAgICAgRU5EIEFTIGVuZF9jb2x1bW5fbmFtZQorICAgIEZST00gcGdfcGVyaW9k IEFTIHAKKyAgICBKT0lOIHBnX2NsYXNzIEFTIGMgT04gYy5vaWQgPSBwLnBlcnJlbGlkCisg ICAgSk9JTiBwZ19uYW1lc3BhY2UgQVMgbmMgT04gbmMub2lkID0gYy5yZWxuYW1lc3BhY2UK KyAgICBKT0lOIHBnX2F0dHJpYnV0ZSBBUyBzYSBPTiAoc2EuYXR0cmVsaWQsIHNhLmF0dG51 bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJzdGFydCkKKyAgICBKT0lOIHBnX2F0dHJpYnV0ZSBB UyBlYSBPTiAoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSkgPSAocC5wZXJyZWxpZCwgcC5wZXJl bmQpCisgICAgV0hFUkUgTk9UIHBnX2lzX290aGVyX3RlbXBfc2NoZW1hKG5jLm9pZCkKKyAg ICAgIEFORCBjLnJlbGtpbmQgSU4gKCdyJywgJ3YnKTsKKworR1JBTlQgU0VMRUNUIE9OIHBl cmlvZHMgVE8gUFVCTElDOwogCiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRh bG9nL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9tZXNvbi5idWlsZAppbmRl eCBmYTY2MDllNTc3Li5jNDk5Y2QyZjVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRh bG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvbWVzb24uYnVpbGQK QEAgLTI2LDYgKzI2LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGdfbmFt ZXNwYWNlLmMnLAogICAncGdfb3BlcmF0b3IuYycsCiAgICdwZ19wYXJhbWV0ZXJfYWNsLmMn LAorICAncGdfcGVyaW9kLmMnLAogICAncGdfcHJvYy5jJywKICAgJ3BnX3B1YmxpY2F0aW9u LmMnLAogICAncGdfcmFuZ2UuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9n L29iamVjdGFkZHJlc3MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5j CmluZGV4IDcxNTIwMWY1YTIuLmY1Zjg4ZDVmZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NhdGFsb2cvb2JqZWN0YWRkcmVzcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvb2Jq ZWN0YWRkcmVzcy5jCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19v cGVyYXRvci5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1pbHkuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3BhcmFtZXRlcl9hY2wuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Bl cmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcG9saWN5LmgiCiAjaW5jbHVkZSAiY2F0 YWxvZy9wZ19wcm9jLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oIgpA QCAtNzM2LDYgKzczNywxMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamVjdF90eXBlX21h cAogCXsKIAkJImRvbWFpbiBjb25zdHJhaW50IiwgT0JKRUNUX0RPTUNPTlNUUkFJTlQKIAl9 LAorCS8qIE9DTEFTU19QRVJJT0QgKi8KKwl7CisJCSJwZXJpb2QiLCBPQkpFQ1RfUEVSSU9E CisJfSwKIAkvKiBPQ0xBU1NfQ09OVkVSU0lPTiAqLwogCXsKIAkJImNvbnZlcnNpb24iLCBP QkpFQ1RfQ09OVkVSU0lPTgpAQCAtMTAxNCw2ICsxMDE5LDcgQEAgZ2V0X29iamVjdF9hZGRy ZXNzKE9iamVjdFR5cGUgb2JqdHlwZSwgTm9kZSAqb2JqZWN0LAogCQkJY2FzZSBPQkpFQ1Rf VFJJR0dFUjoKIAkJCWNhc2UgT0JKRUNUX1RBQkNPTlNUUkFJTlQ6CiAJCQljYXNlIE9CSkVD VF9QT0xJQ1k6CisJCQljYXNlIE9CSkVDVF9QRVJJT0Q6CiAJCQkJYWRkcmVzcyA9IGdldF9v YmplY3RfYWRkcmVzc19yZWxvYmplY3Qob2JqdHlwZSwgY2FzdE5vZGUoTGlzdCwgb2JqZWN0 KSwKIAkJCQkJCQkJCQkJCQkgICAmcmVsYXRpb24sIG1pc3Npbmdfb2spOwogCQkJCWJyZWFr OwpAQCAtMTUxMiw2ICsxNTE4LDEzIEBAIGdldF9vYmplY3RfYWRkcmVzc19yZWxvYmplY3Qo T2JqZWN0VHlwZSBvYmp0eXBlLCBMaXN0ICpvYmplY3QsCiAJCQkJSW52YWxpZE9pZDsKIAkJ CWFkZHJlc3Mub2JqZWN0U3ViSWQgPSAwOwogCQkJYnJlYWs7CisJCWNhc2UgT0JKRUNUX1BF UklPRDoKKwkJCWFkZHJlc3MuY2xhc3NJZCA9IFBlcmlvZFJlbGF0aW9uSWQ7CisJCQlhZGRy ZXNzLm9iamVjdElkID0gcmVsYXRpb24gPworCQkJCWdldF9yZWxhdGlvbl9wZXJpb2Rfb2lk KHJlbG9pZCwgZGVwbmFtZSwgbWlzc2luZ19vaykgOgorCQkJCUludmFsaWRPaWQ7CisJCQlh ZGRyZXNzLm9iamVjdFN1YklkID0gMDsKKwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBvYmplY3QgdHlwZTogJWQiLCAoaW50KSBvYmp0eXBl KTsKIAl9CkBAIC0yMzI5LDYgKzIzNDIsNyBAQCBwZ19nZXRfb2JqZWN0X2FkZHJlc3MoUEdf RlVOQ1RJT05fQVJHUykKIAkJY2FzZSBPQkpFQ1RfUlVMRToKIAkJY2FzZSBPQkpFQ1RfVFJJ R0dFUjoKIAkJY2FzZSBPQkpFQ1RfVEFCQ09OU1RSQUlOVDoKKwkJY2FzZSBPQkpFQ1RfUEVS SU9EOgogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNlIE9CSkVDVF9PUEZBTUlMWToK IAkJCW9iam5vZGUgPSAoTm9kZSAqKSBuYW1lOwpAQCAtMjQzOSw2ICsyNDUzLDcgQEAgY2hl Y2tfb2JqZWN0X293bmVyc2hpcChPaWQgcm9sZWlkLCBPYmplY3RUeXBlIG9ianR5cGUsIE9i amVjdEFkZHJlc3MgYWRkcmVzcywKIAkJY2FzZSBPQkpFQ1RfVFJJR0dFUjoKIAkJY2FzZSBP QkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9UQUJDT05TVFJBSU5UOgorCQljYXNlIE9C SkVDVF9QRVJJT0Q6CiAJCQlpZiAoIW9iamVjdF9vd25lcmNoZWNrKFJlbGF0aW9uUmVsYXRp b25JZCwgUmVsYXRpb25HZXRSZWxpZChyZWxhdGlvbiksIHJvbGVpZCkpCiAJCQkJYWNsY2hl Y2tfZXJyb3IoQUNMQ0hFQ0tfTk9UX09XTkVSLCBvYmp0eXBlLAogCQkJCQkJCSAgIFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9uKSk7CkBAIC0zMDg3LDYgKzMxMDIsMzggQEAg Z2V0T2JqZWN0RGVzY3JpcHRpb24oY29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29s IG1pc3Npbmdfb2spCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBPQ0xBU1NfUEVSSU9E OgorCQkJeworCQkJCUhlYXBUdXBsZQlwZXJUdXA7CisJCQkJRm9ybV9wZ19wZXJpb2QgcGVy OworCisJCQkJcGVyVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBFUklPRE9JRCwKKwkJCQkJCQkJ CQkgT2JqZWN0SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFw VHVwbGVJc1ZhbGlkKHBlclR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAg ZmFpbGVkIGZvciBwZXJpb2QgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCQkJ CXBlciA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHBlclR1cCk7CisKKwkJCQlpZiAo T2lkSXNWYWxpZChwZXItPnBlcnJlbGlkKSkKKwkJCQl7CisJCQkJCVN0cmluZ0luZm9EYXRh IHJlbDsKKworCQkJCQlpbml0U3RyaW5nSW5mbygmcmVsKTsKKwkJCQkJZ2V0UmVsYXRpb25E ZXNjcmlwdGlvbigmcmVsLCBwZXItPnBlcnJlbGlkLCBmYWxzZSk7CisJCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZmZlciwgXygicGVyaW9kICVzIG9uICVzIiksCisJCQkJCQkJCQkgTmFt ZVN0cihwZXItPnBlcm5hbWUpLCByZWwuZGF0YSk7CisJCQkJCXBmcmVlKHJlbC5kYXRhKTsK KwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJYXBwZW5kU3RyaW5nSW5mbygmYnVmZmVy LCBfKCJwZXJpb2QgJXMiKSwKKwkJCQkJCQkJCSBOYW1lU3RyKHBlci0+cGVybmFtZSkpOwor CQkJCX0KKworCQkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXApOworCQkJCWJyZWFrOworCQkJ fQorCiAJCWNhc2UgT0NMQVNTX0NPTlZFUlNJT046CiAJCQl7CiAJCQkJSGVhcFR1cGxlCWNv blR1cDsKQEAgLTQ0NTEsNiArNDQ5OCwxMCBAQCBnZXRPYmplY3RUeXBlRGVzY3JpcHRpb24o Y29uc3QgT2JqZWN0QWRkcmVzcyAqb2JqZWN0LCBib29sIG1pc3Npbmdfb2spCiAJCQkJCQkJ CQkJIG1pc3Npbmdfb2spOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgor CQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmZmVyLCAicGVyaW9kIik7CisJCQlicmVh azsKKwogCQljYXNlIE9DTEFTU19DT05WRVJTSU9OOgogCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmYnVmZmVyLCAiY29udmVyc2lvbiIpOwogCQkJYnJlYWs7CkBAIC00OTU4LDYgKzUw MDksMjggQEAgZ2V0T2JqZWN0SWRlbnRpdHlQYXJ0cyhjb25zdCBPYmplY3RBZGRyZXNzICpv YmplY3QsCiAJCQkJYnJlYWs7CiAJCQl9CiAKKwkJY2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJ eworCQkJCUhlYXBUdXBsZQlwZXJUdXA7CisJCQkJRm9ybV9wZ19wZXJpb2QgcGVyOworCisJ CQkJcGVyVHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBFUklPRE9JRCwKKwkJCQkJCQkJCQkgT2Jq ZWN0SWRHZXREYXR1bShvYmplY3QtPm9iamVjdElkKSk7CisJCQkJaWYgKCFIZWFwVHVwbGVJ c1ZhbGlkKHBlclR1cCkpCisJCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVk IGZvciBwZXJpb2QgJXUiLAorCQkJCQkJIG9iamVjdC0+b2JqZWN0SWQpOworCQkJCXBlciA9 IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RSVUNUKHBlclR1cCk7CisKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKCZidWZmZXIsICIlcyBvbiAiLAorCQkJCQkJCQkgcXVvdGVfaWRlbnRpZmllcihO YW1lU3RyKHBlci0+cGVybmFtZSkpKTsKKwkJCQlnZXRSZWxhdGlvbklkZW50aXR5KCZidWZm ZXIsIHBlci0+cGVycmVsaWQsIG9iam5hbWUsIGZhbHNlKTsKKwkJCQlpZiAob2JqbmFtZSkK KwkJCQkJKm9iam5hbWUgPSBsYXBwZW5kKCpvYmpuYW1lLCBwc3RyZHVwKE5hbWVTdHIocGVy LT5wZXJuYW1lKSkpOworCisJCQkJUmVsZWFzZVN5c0NhY2hlKHBlclR1cCk7CisJCQkJYnJl YWs7CisJCQl9CisKIAkJY2FzZSBPQ0xBU1NfQ09OVkVSU0lPTjoKIAkJCXsKIAkJCQlIZWFw VHVwbGUJY29uVHVwOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJp b2QuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNDY1YjViNjc1ZQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcGVyaW9kLmMKQEAgLTAsMCArMSwxMzIgQEAKKy8q LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3BlcmlvZC5jCisgKgkgIHJvdXRpbmVz IHRvIHN1cHBvcnQgbWFuaXB1bGF0aW9uIG9mIHRoZSBwZ19wZXJpb2QgcmVsYXRpb24KKyAq CisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAg c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wZXJpb2QuYworICoKKyAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImFjY2Vzcy9n ZW5hbS5oIgorI2luY2x1ZGUgImFjY2Vzcy9oZWFwYW0uaCIKKyNpbmNsdWRlICJhY2Nlc3Mv aHR1cF9kZXRhaWxzLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9pbmRleGluZy5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCisjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIK KyNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIK KyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisKKy8qCisgKiBEZWxldGUgYSBzaW5n bGUgcGVyaW9kIHJlY29yZC4KKyAqLwordm9pZAorUmVtb3ZlUGVyaW9kQnlJZChPaWQgcGVy aW9kSWQpCit7CisJUmVsYXRpb24JcGdfcGVyaW9kOworCUhlYXBUdXBsZQl0dXA7CisKKwlw Z19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxv Y2spOworCisJdHVwID0gU2VhcmNoU3lzQ2FjaGUxKFBFUklPRE9JRCwgT2JqZWN0SWRHZXRE YXR1bShwZXJpb2RJZCkpOworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKSAvKiBzaG91 bGQgbm90IGhhcHBlbiAqLworCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3IgcGVyaW9kICV1IiwgcGVyaW9kSWQpOworCisJLyogRnJ5IHRoZSBwZXJpb2QgaXRzZWxm ICovCisJQ2F0YWxvZ1R1cGxlRGVsZXRlKHBnX3BlcmlvZCwgJnR1cC0+dF9zZWxmKTsKKwor CS8qIENsZWFuIHVwICovCisJUmVsZWFzZVN5c0NhY2hlKHR1cCk7CisJdGFibGVfY2xvc2Uo cGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKworLyoKKyAqIGdldF9yZWxhdGlv bl9wZXJpb2Rfb2lkCisgKgkJRmluZCBhIHBlcmlvZCBvbiB0aGUgc3BlY2lmaWVkIHJlbGF0 aW9uIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLgorICoJCVJldHVybnMgcGVyaW9kJ3MgT0lE LgorICovCitPaWQKK2dldF9yZWxhdGlvbl9wZXJpb2Rfb2lkKE9pZCByZWxpZCwgY29uc3Qg Y2hhciAqcGVybmFtZSwgYm9vbCBtaXNzaW5nX29rKQoreworCVJlbGF0aW9uCXBnX3Blcmlv ZDsKKwlIZWFwVHVwbGUJdHVwbGU7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0 YSBza2V5WzJdOworCU9pZAkJCXBlck9pZCA9IEludmFsaWRPaWQ7CisKKwkvKiBGZXRjaCB0 aGUgcGVyaW9kIHR1cGxlIGZyb20gcGdfcGVyaW9kLiAqLworCXBnX3BlcmlvZCA9IHRhYmxl X29wZW4oUGVyaW9kUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNjYW5LZXlJ bml0KCZza2V5WzBdLAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCUJURXF1 YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVtKHJlbGlk KSk7CisJU2NhbktleUluaXQoJnNrZXlbMV0sCisJCQkJQW51bV9wZ19wZXJpb2RfcGVybmFt ZSwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfTkFNRUVRLAorCQkJCUNTdHJpbmdH ZXREYXR1bShwZXJuYW1lKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3Bl cmlvZCwgUGVyaW9kUmVsaWROYW1lSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDIs IHNrZXkpOworCisJLyogVGhlcmUgY2FuIGJlIGF0IG1vc3Qgb25lIG1hdGNoaW5nIHJvdyAq LworCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlID0gc3lzdGFibGVfZ2V0bmV4dChzY2Fu KSkpCisJCXBlck9pZCA9ICgoRm9ybV9wZ19wZXJpb2QpIEdFVFNUUlVDVCh0dXBsZSkpLT5v aWQ7CisKKwlzeXN0YWJsZV9lbmRzY2FuKHNjYW4pOworCisJLyogSWYgbm8gc3VjaCBwZXJp b2QgZXhpc3RzLCBjb21wbGFpbiAqLworCWlmICghT2lkSXNWYWxpZChwZXJPaWQpICYmICFt aXNzaW5nX29rKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5E RUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygicGVyaW9kIFwiJXNcIiBmb3IgdGFibGUg XCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXBlcm5hbWUsIGdldF9yZWxfbmFtZShy ZWxpZCkpKSk7CisKKwl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9jayk7 CisKKwlyZXR1cm4gcGVyT2lkOworfQorCisvKgorICogZ2V0X3BlcmlvZF9hdHRub3MKKyAq CQlHZXQgdGhlIGF0dG5vIG9mIHRoZSBHRU5FUkFURUQgcmFuZ2V0eXBlIGNvbHVtbgorICoJ CWZvciBhbGwgUEVSSU9EcyBpbiB0aGlzIHRhYmxlLgorICovCitleHRlcm4gQml0bWFwc2V0 CisqZ2V0X3BlcmlvZF9hdHRub3MoT2lkIHJlbGlkKQoreworCUJpdG1hcHNldCAqYXR0bm9z ID0gTlVMTDsKKwlSZWxhdGlvbglwZ19wZXJpb2Q7CisJSGVhcFR1cGxlCXR1cGxlOworCVN5 c1NjYW5EZXNjIHNjYW47CisJU2NhbktleURhdGEgc2tleVsxXTsKKworCXBnX3BlcmlvZCA9 IHRhYmxlX29wZW4oUGVyaW9kUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCVNj YW5LZXlJbml0KCZza2V5WzBdLAorCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJ CUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERhdHVt KHJlbGlkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVy aW9kUmVsaWROYW1lSW5kZXhJZCwgdHJ1ZSwKKwkJCQkJCQkgIE5VTEwsIDEsIHNrZXkpOwor CisJd2hpbGUgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNj YW4pKSkKKwl7CisJCUZvcm1fcGdfcGVyaW9kIHBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkg R0VUU1RSVUNUKHR1cGxlKTsKKworCQlhdHRub3MgPSBibXNfYWRkX21lbWJlcihhdHRub3Ms IHBlcmlvZC0+cGVycmFuZ2UpOworCX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisJ dGFibGVfY2xvc2UocGdfcGVyaW9kLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIGF0 dG5vczsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVz LnR4dCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3FsX2ZlYXR1cmVzLnR4dAppbmRleCBiMzMw NjVkN2JmLi43NzUwOTBhNmVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3Nx bF9mZWF0dXJlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zcWxfZmVhdHVyZXMu dHh0CkBAIC00NDksNyArNDQ5LDcgQEAgVDE3NglTZXF1ZW5jZSBnZW5lcmF0b3Igc3VwcG9y dAkJCU5PCXN1cHBvcnRlZCBleGNlcHQgZm9yIE5FWFQgVkFMVUUgRk9SCiBUMTc3CVNlcXVl bmNlIGdlbmVyYXRvciBzdXBwb3J0OiBzaW1wbGUgcmVzdGFydCBvcHRpb24JCQlZRVMJCiBU MTc4CUlkZW50aXR5IGNvbHVtbnM6IHNpbXBsZSByZXN0YXJ0IG9wdGlvbgkJCVlFUwkKIFQx ODAJU3lzdGVtLXZlcnNpb25lZCB0YWJsZXMJCQlOTwkKLVQxODEJQXBwbGljYXRpb24tdGlt ZSBwZXJpb2QgdGFibGVzCQkJTk8JCitUMTgxCUFwcGxpY2F0aW9uLXRpbWUgcGVyaW9kIHRh YmxlcwkJCVlFUwkKIFQxOTEJUmVmZXJlbnRpYWwgYWN0aW9uIFJFU1RSSUNUCQkJWUVTCQog VDIwMAlUcmlnZ2VyIERETAkJCU5PCXNpbWlsYXIgYnV0IG5vdCBmdWxseSBjb21wYXRpYmxl CiBUMjAxCUNvbXBhcmFibGUgZGF0YSB0eXBlcyBmb3IgcmVmZXJlbnRpYWwgY29uc3RyYWlu dHMJCQlZRVMJCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvYWx0ZXIuYwppbmRleCBmZjhkMDAzODc2Li4yZWJlNDU4 NjQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9hbHRlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL2FsdGVyLmMKQEAgLTY2OSw2ICs2NjksNyBAQCBBbHRlck9i amVjdE5hbWVzcGFjZV9vaWQoT2lkIGNsYXNzSWQsIE9pZCBvYmppZCwgT2lkIG5zcE9pZCwK IAogCQljYXNlIE9DTEFTU19DQVNUOgogCQljYXNlIE9DTEFTU19DT05TVFJBSU5UOgorCQlj YXNlIE9DTEFTU19QRVJJT0Q6CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNhc2UgT0NM QVNTX0xBTkdVQUdFOgogCQljYXNlIE9DTEFTU19MQVJHRU9CSkVDVDoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvbW1lbnQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2NvbW1lbnQuYwppbmRleCAyNmM0ZDU5MjAyLi40NTJhZjFkNDEzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy9jb21tZW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29tbWVudC5jCkBAIC0xMDIsNiArMTAyLDE2IEBAIENvbW1lbnRPYmplY3QoQ29tbWVu dFN0bXQgKnN0bXQpCiAJCQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSksCiAJCQkJCQkgZXJyZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZChyZWxhdGlvbi0+ cmRfcmVsLT5yZWxraW5kKSkpOwogCQkJYnJlYWs7CisKKwkJY2FzZSBPQkpFQ1RfUEVSSU9E OgorCQkJLyogUGVyaW9kcyBjYW4gb25seSBnbyBvbiB0YWJsZXMgKi8KKwkJCWlmIChyZWxh dGlvbi0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04pCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAor CQkJCQkJIGVycm1zZygiXCIlc1wiIGlzIG5vdCBhIHRhYmxlIiwKKwkJCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pKSkpOworCQkJYnJlYWs7CisKIAkJZGVmYXVs dDoKIAkJCWJyZWFrOwogCX0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ry b3BjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9kcm9wY21kcy5jCmluZGV4IDQ2OWE2 YzJlZTkuLjFiOTc1NGU5OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2Ry b3BjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZHJvcGNtZHMuYwpAQCAtNTA5 LDYgKzUwOSw3IEBAIGRvZXNfbm90X2V4aXN0X3NraXBwaW5nKE9iamVjdFR5cGUgb2JqdHlw ZSwgTm9kZSAqb2JqZWN0KQogCQljYXNlIE9CSkVDVF9ET01DT05TVFJBSU5UOgogCQljYXNl IE9CSkVDVF9MQVJHRU9CSkVDVDoKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoKKwkJ Y2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QVUJMSUNBVElPTl9OQU1FU1BB Q0U6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX1JFTDoKIAkJY2FzZSBPQkpFQ1RfVEFC Q09OU1RSQUlOVDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3Ry aWdnZXIuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V2ZW50X3RyaWdnZXIuYwppbmRleCBk NGIwMGQxYTgyLi4xOWU2ZGZkMzdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5k cy9ldmVudF90cmlnZ2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXZlbnRfdHJp Z2dlci5jCkBAIC05NzAsNiArOTcwLDcgQEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RU eXBlKE9iamVjdFR5cGUgb2J0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQljYXNl IE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2UgT0JK RUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9QUk9D RURVUkU6CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OOgpAQCAtMTAyOCw2ICsxMDI5LDcg QEAgRXZlbnRUcmlnZ2VyU3VwcG9ydHNPYmplY3RDbGFzcyhPYmplY3RDbGFzcyBvYmpjbGFz cykKIAkJY2FzZSBPQ0xBU1NfQ0FTVDoKIAkJY2FzZSBPQ0xBU1NfQ09MTEFUSU9OOgogCQlj YXNlIE9DTEFTU19DT05TVFJBSU5UOgorCQljYXNlIE9DTEFTU19QRVJJT0Q6CiAJCWNhc2Ug T0NMQVNTX0NPTlZFUlNJT046CiAJCWNhc2UgT0NMQVNTX0RFRkFVTFQ6CiAJCWNhc2UgT0NM QVNTX0xBTkdVQUdFOgpAQCAtMjA2OSw2ICsyMDcxLDcgQEAgc3RyaW5naWZ5X2dyYW50X29i anR5cGUoT2JqZWN0VHlwZSBvYmp0eXBlKQogCQljYXNlIE9CSkVDVF9PUENMQVNTOgogCQlj YXNlIE9CSkVDVF9PUEVSQVRPUjoKIAkJY2FzZSBPQkpFQ1RfT1BGQU1JTFk6CisJCWNhc2Ug T0JKRUNUX1BFUklPRDoKIAkJY2FzZSBPQkpFQ1RfUE9MSUNZOgogCQljYXNlIE9CSkVDVF9Q VUJMSUNBVElPTjoKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJT05fTkFNRVNQQUNFOgpAQCAt MjE1Myw2ICsyMTU2LDcgQEAgc3RyaW5naWZ5X2FkZWZwcml2c19vYmp0eXBlKE9iamVjdFR5 cGUgb2JqdHlwZSkKIAkJY2FzZSBPQkpFQ1RfT1BFUkFUT1I6CiAJCWNhc2UgT0JKRUNUX09Q RkFNSUxZOgogCQljYXNlIE9CSkVDVF9QQVJBTUVURVJfQUNMOgorCQljYXNlIE9CSkVDVF9Q RVJJT0Q6CiAJCWNhc2UgT0JKRUNUX1BPTElDWToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJ T046CiAJCWNhc2UgT0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy9zZWNsYWJlbC5jCmluZGV4IDdmZjE2ZTMyNzYuLjNkZGM5OTU4MWEgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlY2xhYmVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc2VjbGFiZWwuYwpAQCAtNzksNiArNzksNyBAQCBTZWNMYWJlbFN1cHBvcnRzT2Jq ZWN0VHlwZShPYmplY3RUeXBlIG9ianR5cGUpCiAJCWNhc2UgT0JKRUNUX09QRVJBVE9SOgog CQljYXNlIE9CSkVDVF9PUEZBTUlMWToKIAkJY2FzZSBPQkpFQ1RfUEFSQU1FVEVSX0FDTDoK KwkJY2FzZSBPQkpFQ1RfUEVSSU9EOgogCQljYXNlIE9CSkVDVF9QT0xJQ1k6CiAJCWNhc2Ug T0JKRUNUX1BVQkxJQ0FUSU9OX05BTUVTUEFDRToKIAkJY2FzZSBPQkpFQ1RfUFVCTElDQVRJ T05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBlMjMwZGZjNTY5Li4w ZDY5ZjkzNzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtNDMsNiArNDMs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfbGFyZ2VvYmplY3QuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BjbGFzcy5o IgorI2luY2x1ZGUgImNhdGFsb2cvcGdfcGVyaW9kLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19zdGF0aXN0aWNfZXh0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190YWJsZXNwYWNlLmgi CiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190cmlnZ2VyLmgiCkBAIC0xNDksMTMgKzE1MCwxOCBA QCBzdGF0aWMgTGlzdCAqb25fY29tbWl0cyA9IE5JTDsKICNkZWZpbmUgQVRfUEFTU19PTERf Q09OU1RSCQkzCS8qIHJlLWFkZCBleGlzdGluZyBjb25zdHJhaW50cyAqLwogLyogV2UgY291 bGQgc3VwcG9ydCBhIFJFTkFNRSBDT0xVTU4gcGFzcyBoZXJlLCBidXQgbm90IGN1cnJlbnRs eSB1c2VkICovCiAjZGVmaW5lIEFUX1BBU1NfQUREX0NPTAkJCTQJLyogQUREIENPTFVNTiAq LwotI2RlZmluZSBBVF9QQVNTX0FERF9DT05TVFIJCTUJLyogQUREIGNvbnN0cmFpbnRzIChp bml0aWFsIGV4YW1pbmF0aW9uKSAqLwotI2RlZmluZSBBVF9QQVNTX0NPTF9BVFRSUwkJNgkv KiBzZXQgY29sdW1uIGF0dHJpYnV0ZXMsIGVnIE5PVCBOVUxMICovCi0jZGVmaW5lIEFUX1BB U1NfQUREX0lOREVYQ09OU1RSCTcJLyogQUREIGluZGV4LWJhc2VkIGNvbnN0cmFpbnRzICov Ci0jZGVmaW5lIEFUX1BBU1NfQUREX0lOREVYCQk4CS8qIEFERCBpbmRleGVzICovCi0jZGVm aW5lIEFUX1BBU1NfQUREX09USEVSQ09OU1RSCTkJLyogQUREIG90aGVyIGNvbnN0cmFpbnRz LCBkZWZhdWx0cyAqLwotI2RlZmluZSBBVF9QQVNTX01JU0MJCQkxMAkvKiBvdGhlciBzdHVm ZiAqLwotI2RlZmluZSBBVF9OVU1fUEFTU0VTCQkJMTEKKy8qCisgKiBXZSBtdXN0IGFkZCBQ RVJJT0RzIGFmdGVyIGNvbHVtbnMsIGluIGNhc2UgdGhleSByZWZlcmVuY2UgYSBuZXdseS1h ZGRlZCBjb2x1bW4sCisgKiBhbmQgYmVmb3JlIGNvbnN0cmFpbnRzLCBpbiBjYXNlIGEgbmV3 bHktYWRkZWQgUEsvRksgcmVmZXJlbmNlcyB0aGVtLgorICovCisjZGVmaW5lIEFUX1BBU1Nf QUREX1BFUklPRAkJNQkvKiBBREQgUEVSSU9EICovCisjZGVmaW5lIEFUX1BBU1NfQUREX0NP TlNUUgkJNgkvKiBBREQgY29uc3RyYWludHMgKGluaXRpYWwgZXhhbWluYXRpb24pICovCisj ZGVmaW5lIEFUX1BBU1NfQ09MX0FUVFJTCQk3CS8qIHNldCBjb2x1bW4gYXR0cmlidXRlcywg ZWcgTk9UIE5VTEwgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfSU5ERVhDT05TVFIJOAkvKiBB REQgaW5kZXgtYmFzZWQgY29uc3RyYWludHMgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfSU5E RVgJCTkJLyogQUREIGluZGV4ZXMgKi8KKyNkZWZpbmUgQVRfUEFTU19BRERfT1RIRVJDT05T VFIJMTAJLyogQUREIG90aGVyIGNvbnN0cmFpbnRzLCBkZWZhdWx0cyAqLworI2RlZmluZSBB VF9QQVNTX01JU0MJCQkxMQkvKiBvdGhlciBzdHVmZiAqLworI2RlZmluZSBBVF9OVU1fUEFT U0VTCQkJMTIKIAogdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJlZFRhYmxlSW5mbwogewpAQCAtMzU0 LDYgKzM2MCw3IEBAIHN0YXRpYyB2b2lkIFJhbmdlVmFyQ2FsbGJhY2tGb3JUcnVuY2F0ZShj b25zdCBSYW5nZVZhciAqcmVsYXRpb24sCiBzdGF0aWMgTGlzdCAqTWVyZ2VBdHRyaWJ1dGVz KExpc3QgKnNjaGVtYSwgTGlzdCAqc3VwZXJzLCBjaGFyIHJlbHBlcnNpc3RlbmNlLAogCQkJ CQkJCSBib29sIGlzX3BhcnRpdGlvbiwgTGlzdCAqKnN1cGNvbnN0ciwKIAkJCQkJCQkgTGlz dCAqKnN1cG5vdG51bGxzKTsKK3N0YXRpYyBMaXN0ICpNZXJnZVBlcmlvZHMoY2hhciAqcmVs bmFtZSwgTGlzdCAqcGVyaW9kcywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpzdXBlcnMpOwog c3RhdGljIGJvb2wgTWVyZ2VDaGVja0NvbnN0cmFpbnQoTGlzdCAqY29uc3RyYWludHMsIGNo YXIgKm5hbWUsIE5vZGUgKmV4cHIpOwogc3RhdGljIHZvaWQgTWVyZ2VBdHRyaWJ1dGVzSW50 b0V4aXN0aW5nKFJlbGF0aW9uIGNoaWxkX3JlbCwgUmVsYXRpb24gcGFyZW50X3JlbCk7CiBz dGF0aWMgdm9pZCBNZXJnZUNvbnN0cmFpbnRzSW50b0V4aXN0aW5nKFJlbGF0aW9uIGNoaWxk X3JlbCwgUmVsYXRpb24gcGFyZW50X3JlbCk7CkBAIC00MzQsNiArNDQxLDggQEAgc3RhdGlj IE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpOwogc3RhdGljIGJvb2wgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJCQkJCWJvb2wgaWZf bm90X2V4aXN0cyk7CitzdGF0aWMgYm9vbCBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlz aW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVybmFtZSwKKwkJCQkJCQkJCQkJYm9v bCBpZl9ub3RfZXhpc3RzKTsKIHN0YXRpYyB2b2lkIGFkZF9jb2x1bW5fZGF0YXR5cGVfZGVw ZW5kZW5jeShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIHR5cGlkKTsKIHN0YXRpYyB2 b2lkIGFkZF9jb2x1bW5fY29sbGF0aW9uX2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBh dHRudW0sIE9pZCBjb2xsaWQpOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjRHJvcE5v dE51bGwoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLCBib29sIHJlY3Vyc2Us CkBAIC00NTMsNiArNDYyLDEyIEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0NvbHVt bkRlZmF1bHQoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCQkJCQkJCQkJ CSBOb2RlICpuZXdEZWZhdWx0LCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBzdGF0aWMgT2JqZWN0 QWRkcmVzcyBBVEV4ZWNDb29rZWRDb2x1bW5EZWZhdWx0KFJlbGF0aW9uIHJlbCwgQXR0ck51 bWJlciBhdHRudW0sCiAJCQkJCQkJCQkJCSAgIE5vZGUgKm5ld0RlZmF1bHQpOworc3RhdGlj IE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVm ICpwZXJpb2QsCisJCQkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0 KTsKK3N0YXRpYyB2b2lkIEFURXhlY0Ryb3BQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBj aGFyICpwZXJpb2ROYW1lLAorCQkJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3IsCisJCQkJ CQkJIGJvb2wgcmVjdXJzZSwgYm9vbCByZWN1cnNpbmcsCisJCQkJCQkJIGJvb2wgbWlzc2lu Z19vayk7CiBzdGF0aWMgT2JqZWN0QWRkcmVzcyBBVEV4ZWNBZGRJZGVudGl0eShSZWxhdGlv biByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJCQkJCQkgICBOb2RlICpkZWYsIExP Q0tNT0RFIGxvY2ttb2RlKTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY1NldElkZW50 aXR5KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKQEAgLTY2Miw2ICs2Nzcs MTAgQEAgc3RhdGljIExpc3QgKkdldFBhcmVudGVkRm9yZWlnbktleVJlZnMoUmVsYXRpb24g cGFydGl0aW9uKTsKIHN0YXRpYyB2b2lkIEFURGV0YWNoQ2hlY2tOb0ZvcmVpZ25LZXlSZWZz KFJlbGF0aW9uIHBhcnRpdGlvbik7CiBzdGF0aWMgY2hhciBHZXRBdHRyaWJ1dGVDb21wcmVz c2lvbihPaWQgYXR0dHlwaWQsIGNvbnN0IGNoYXIgKmNvbXByZXNzaW9uKTsKIHN0YXRpYyBj aGFyIEdldEF0dHJpYnV0ZVN0b3JhZ2UoT2lkIGF0dHR5cGlkLCBjb25zdCBjaGFyICpzdG9y YWdlbW9kZSk7CitzdGF0aWMgdm9pZCBBZGRSZWxhdGlvbk5ld1BlcmlvZChSZWxhdGlvbiBy ZWwsIFBlcmlvZERlZiAqcGVyaW9kKTsKK3N0YXRpYyB2b2lkIFZhbGlkYXRlUGVyaW9kKFJl bGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QpOworc3RhdGljIENvbnN0cmFpbnQgKm1h a2VfY29uc3RyYWludF9mb3JfcGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJp b2QpOworc3RhdGljIENvbHVtbkRlZiAqbWFrZV9yYW5nZV9jb2x1bW5fZm9yX3BlcmlvZChQ ZXJpb2REZWYgKnBlcmlvZCk7CiAKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtODkwLDYgKzkwOSwy NiBAQCBEZWZpbmVSZWxhdGlvbihDcmVhdGVTdG10ICpzdG10LCBjaGFyIHJlbGtpbmQsIE9p ZCBvd25lcklkLAogCQkJCQkJc3RtdC0+cGFydGJvdW5kICE9IE5VTEwsCiAJCQkJCQkmb2xk X2NvbnN0cmFpbnRzLCAmb2xkX25vdG51bGxzKTsKIAorCS8qCisJICogVXNpbmcgdGhlIGNv bHVtbiBsaXN0IChpbmNsdWRpbmcgaW5oZXJpdGVkIGNvbHVtbnMpLAorCSAqIGZpbmQgdGhl IHN0YXJ0L2VuZCBjb2x1bW5zIGZvciBlYWNoIHBlcmlvZC4KKwkgKiBQRVJJT0RzIHNob3Vs ZCBiZSBpbmhlcml0ZWQgdG9vIChidXQgYXJlbid0IHlldCkuCisJICovCisJc3RtdC0+cGVy aW9kcyA9IE1lcmdlUGVyaW9kcyhyZWxuYW1lLCBzdG10LT5wZXJpb2RzLCBzdG10LT50YWJs ZUVsdHMsIGluaGVyaXRPaWRzKTsKKworCS8qCisJICogRm9yIGVhY2ggUEVSSU9EIHdlIG5l ZWQgdG8gY3JlYXRlIGEgR0VORVJBVEVEIGNvbHVtbiwKKwkgKiBzbyBhZGQgdGhvc2UgdG8g dGFibGVFbHRzLgorCSAqIFRoZXNlIGNvbHVtbnMgYXJlIG5vdCBpbmhlcml0ZWQsCisJICog c28gd2UgZG9uJ3Qgd29ycnkgYWJvdXQgY29uZmxpY3RzIGluIHRhYmxlRWx0cy4KKwkgKi8K Kwlmb3JlYWNoKGxpc3RwdHIsIHN0bXQtPnBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBl cmlvZCA9IChQZXJpb2REZWYgKikgbGZpcnN0KGxpc3RwdHIpOworCQlDb2x1bW5EZWYgKmNv bCA9IG1ha2VfcmFuZ2VfY29sdW1uX2Zvcl9wZXJpb2QocGVyaW9kKTsKKwkJc3RtdC0+dGFi bGVFbHRzID0gbGFwcGVuZChzdG10LT50YWJsZUVsdHMsIGNvbCk7CisJfQorCiAJLyoKIAkg KiBDcmVhdGUgYSB0dXBsZSBkZXNjcmlwdG9yIGZyb20gdGhlIHJlbGF0aW9uIHNjaGVtYS4g IE5vdGUgdGhhdCB0aGlzCiAJICogZGVhbHMgd2l0aCBjb2x1bW4gbmFtZXMsIHR5cGVzLCBh bmQgaW4tZGVzY3JpcHRvciBOT1QgTlVMTCBmbGFncywgYnV0CkBAIC0xMjgxLDYgKzEzMjAs MjEgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRlU3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBP aWQgb3duZXJJZCwKIAlmb3JlYWNoKGxpc3RwdHIsIG5uY29scykKIAkJc2V0X2F0dG5vdG51 bGwoTlVMTCwgcmVsLCBsZmlyc3RfaW50KGxpc3RwdHIpLCBmYWxzZSwgTm9Mb2NrKTsKIAor CS8qCisJICogQ3JlYXRlIHBlcmlvZHMgZm9yIHRoZSB0YWJsZS4gVGhpcyBtdXN0IGNvbWUg YWZ0ZXIgd2UgY3JlYXRlIGNvbHVtbnMKKwkgKiBhbmQgYmVmb3JlIHdlIGNyZWF0ZSBpbmRl eCBjb25zdHJhaW50cy4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZQorCSAqIGEgQ0hF Q0sgY29uc3RyYWludCBmb3IgdGhlIHBlcmlvZC4KKwkgKi8KKwlmb3JlYWNoKGxpc3RwdHIs IHN0bXQtPnBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBlcmlvZCA9IChQZXJpb2REZWYg KikgbGZpcnN0KGxpc3RwdHIpOworCisJCS8qIERvbid0IHVwZGF0ZSB0aGUgY291bnQgb2Yg Y2hlY2sgY29uc3RyYWludHMgdHdpY2UgKi8KKwkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQo KTsKKworCQlBZGRSZWxhdGlvbk5ld1BlcmlvZChyZWwsIHBlcmlvZCk7CisJfQorCiAJT2Jq ZWN0QWRkcmVzc1NldChhZGRyZXNzLCBSZWxhdGlvblJlbGF0aW9uSWQsIHJlbGF0aW9uSWQp OwogCiAJLyoKQEAgLTEyOTIsNiArMTM0NiwyNjQgQEAgRGVmaW5lUmVsYXRpb24oQ3JlYXRl U3RtdCAqc3RtdCwgY2hhciByZWxraW5kLCBPaWQgb3duZXJJZCwKIAlyZXR1cm4gYWRkcmVz czsKIH0KIAorLyoKKyAqIG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kCisgKgorICogQnVp bGRzIGEgQ0hFQ0sgQ29uc3RyYWludCB0byBlbnN1cmUgc3RhcnQgPCBlbmQuCisgKiBSZXR1 cm5zIHRoZSBDSEVDSyBDb25zdHJhaW50LgorICogQWxzbyBmaWxscyBpbiBwZXJpb2QtPmNv bnN0cmFpbnRuYW1lIGlmIG5lZWRlZC4KKyAqLworc3RhdGljIENvbnN0cmFpbnQgKgorbWFr ZV9jb25zdHJhaW50X2Zvcl9wZXJpb2QoUmVsYXRpb24gcmVsLCBQZXJpb2REZWYgKnBlcmlv ZCkKK3sKKwlDb2x1bW5SZWYgICpzY29sLCAqZWNvbDsKKwlDb25zdHJhaW50ICpjb25zdHI7 CisJVHlwZUNhY2hlRW50cnkgKnR5cGU7CisKKwlpZiAocGVyaW9kLT5jb25zdHJhaW50bmFt ZSA9PSBOVUxMKQorCQlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0gQ2hvb3NlQ29uc3RyYWlu dE5hbWUoUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJCQkJCQkgIHBl cmlvZC0+cGVyaW9kbmFtZSwKKwkJCQkJCQkJCQkJCQkgICJjaGVjayIsCisJCQkJCQkJCQkJ CQkJICBSZWxhdGlvbkdldE5hbWVzcGFjZShyZWwpLAorCQkJCQkJCQkJCQkJCSAgTklMKTsK KwlzY29sID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwlzY29sLT5maWVsZHMgPSBsaXN0X21h a2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2QtPnN0YXJ0Y29sbmFtZSkpKTsKKwlzY29s LT5sb2NhdGlvbiA9IDA7CisKKwllY29sID0gbWFrZU5vZGUoQ29sdW1uUmVmKTsKKwllY29s LT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJpb2QtPmVuZGNv bG5hbWUpKSk7CisJZWNvbC0+bG9jYXRpb24gPSAwOworCisJdHlwZSA9IGxvb2t1cF90eXBl X2NhY2hlKHBlcmlvZC0+Y29sdHlwaWQsIFRZUEVDQUNIRV9MVF9PUFIpOworCWlmICh0eXBl LT5sdF9vcHIgPT0gSW52YWxpZE9pZCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJIGVycm1zZygiY29sdW1u IFwiJXNcIiBjYW5ub3QgYmUgdXNlZCBpbiBhIFBFUklPRCBiZWNhdXNlIGl0cyB0eXBlICVz IGhhcyBubyBsZXNzIHRoYW4gb3BlcmF0b3IiLAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5h bWUsIGZvcm1hdF90eXBlX2JlKHBlcmlvZC0+Y29sdHlwaWQpKSkpOworCisJY29uc3RyID0g bWFrZU5vZGUoQ29uc3RyYWludCk7CisJY29uc3RyLT5jb250eXBlID0gQ09OU1RSX0NIRUNL OworCWNvbnN0ci0+Y29ubmFtZSA9IHBlcmlvZC0+Y29uc3RyYWludG5hbWU7CisJY29uc3Ry LT5kZWZlcnJhYmxlID0gZmFsc2U7CisJY29uc3RyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsK Kwljb25zdHItPmxvY2F0aW9uID0gLTE7CisJY29uc3RyLT5pc19ub19pbmhlcml0ID0gZmFs c2U7CisJY29uc3RyLT5yYXdfZXhwciA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVY UFJfT1AsCisJCQkJCQkJCQkJCQkgZ2V0X29wbmFtZSh0eXBlLT5sdF9vcHIpLAorCQkJCQkJ CQkJCQkJIChOb2RlICopIHNjb2wsCisJCQkJCQkJCQkJCQkgKE5vZGUgKikgZWNvbCwKKwkJ CQkJCQkJCQkJCSAwKTsKKwljb25zdHItPmNvb2tlZF9leHByID0gTlVMTDsKKwljb25zdHIt PnNraXBfdmFsaWRhdGlvbiA9IGZhbHNlOworCWNvbnN0ci0+aW5pdGlhbGx5X3ZhbGlkID0g dHJ1ZTsKKworCXJldHVybiBjb25zdHI7Cit9CisKKy8qCisgKiBtYWtlX3JhbmdlX2NvbHVt bl9mb3JfcGVyaW9kCisgKgorICogQnVpbGRzIGEgR0VORVJBVEVEIEFMV0FZUyByYW5nZSBj b2x1bW4gYmFzZWQgb24gdGhlIFBFUklPRAorICogc3RhcnQvZW5kIGNvbHVtbnMuIFJldHVy bnMgdGhlIENvbHVtbkRlZi4KKyAqLworQ29sdW1uRGVmICoKK21ha2VfcmFuZ2VfY29sdW1u X2Zvcl9wZXJpb2QoUGVyaW9kRGVmICpwZXJpb2QpCit7CisJY2hhciAqcmFuZ2VfdHlwZV9u YW1lc3BhY2U7CisJY2hhciAqcmFuZ2VfdHlwZV9uYW1lOworCUNvbHVtbkRlZiAqY29sID0g bWFrZU5vZGUoQ29sdW1uRGVmKTsKKwlDb2x1bW5SZWYgKnN0YXJ0dmFyLCAqZW5kdmFyOwor CUV4cHIgKnJhbmdlQ29uc3RydWN0b3I7CisKKwlpZiAoIWdldF90eXBuYW1lX2FuZF9uYW1l c3BhY2UocGVyaW9kLT5ybmd0eXBpZCwgJnJhbmdlX3R5cGVfbmFtZSwgJnJhbmdlX3R5cGVf bmFtZXNwYWNlKSkKKwkJZWxvZyhFUlJPUiwgIm1pc3NpbmcgcmFuZ2UgdHlwZSAlZCIsIHBl cmlvZC0+cm5ndHlwaWQpOworCisJc3RhcnR2YXIgPSBtYWtlTm9kZShDb2x1bW5SZWYpOwor CXN0YXJ0dmFyLT5maWVsZHMgPSBsaXN0X21ha2UxKG1ha2VTdHJpbmcocHN0cmR1cChwZXJp b2QtPnN0YXJ0Y29sbmFtZSkpKTsKKwllbmR2YXIgPSBtYWtlTm9kZShDb2x1bW5SZWYpOwor CWVuZHZhci0+ZmllbGRzID0gbGlzdF9tYWtlMShtYWtlU3RyaW5nKHBzdHJkdXAocGVyaW9k LT5lbmRjb2xuYW1lKSkpOworCXJhbmdlQ29uc3RydWN0b3IgPSAoRXhwciAqKSBtYWtlRnVu Y0NhbGwoCisJCQlsaXN0X21ha2UyKG1ha2VTdHJpbmcocmFuZ2VfdHlwZV9uYW1lc3BhY2Up LCBtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZSkpLAorCQkJbGlzdF9tYWtlMihzdGFydHZh ciwgZW5kdmFyKSwKKwkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAorCQkJcGVyaW9kLT5sb2Nh dGlvbik7CisKKwljb2wtPmNvbG5hbWUgPSBwc3RyZHVwKHBlcmlvZC0+cGVyaW9kbmFtZSk7 CisJY29sLT50eXBlTmFtZSA9IG1ha2VUeXBlTmFtZShyYW5nZV90eXBlX25hbWUpOworCWNv bC0+Y29tcHJlc3Npb24gPSBOVUxMOworCWNvbC0+aW5oY291bnQgPSAwOworCWNvbC0+aXNf bG9jYWwgPSB0cnVlOworCWNvbC0+aXNfbm90X251bGwgPSB0cnVlOworCWNvbC0+aXNfZnJv bV90eXBlID0gZmFsc2U7CisJY29sLT5zdG9yYWdlID0gMDsKKwljb2wtPnN0b3JhZ2VfbmFt ZSA9IE5VTEw7CisJY29sLT5yYXdfZGVmYXVsdCA9IChOb2RlICopIHJhbmdlQ29uc3RydWN0 b3I7CisJY29sLT5jb29rZWRfZGVmYXVsdCA9IE5VTEw7CisJY29sLT5pZGVudGl0eSA9IDA7 CisJY29sLT5nZW5lcmF0ZWQgPSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRDsKKwljb2wt PmNvbGxDbGF1c2UgPSBOVUxMOworCWNvbC0+Y29sbE9pZCA9IEludmFsaWRPaWQ7CisJY29s LT5mZHdvcHRpb25zID0gTklMOworCWNvbC0+bG9jYXRpb24gPSBwZXJpb2QtPmxvY2F0aW9u OworCisJcmV0dXJuIGNvbDsKK30KKworLyoKKyAqIFZhbGlkYXRlUGVyaW9kCisgKgorICog TG9vayB1cCB0aGUgYXR0cmlidXRlcyB1c2VkIGJ5IHRoZSBQRVJJT0QsCisgKiBtYWtlIHN1 cmUgdGhleSBleGlzdCwgYXJlIG5vdCBzeXN0ZW0gY29sdW1ucywKKyAqIGFuZCBoYXZlIHRo ZSBzYW1lIHR5cGUgYW5kIGNvbGxhdGlvbi4KKyAqCisgKiBZb3UgbXVzdCBoYXZlIGEgUm93 RXhjbHVzaXZlTG9jayBvbiBwZ19hdHRyaWJ1dGUKKyAqIGJlZm9yZSBjYWxsaW5nIHRoaXMg ZnVuY3Rpb24uCisgKgorICogQWRkIG91ciBmaW5kaW5ncyB0byB0aGVzZSBQZXJpb2REZWYg ZmllbGRzOgorICoKKyAqIGNvbHR5cGlkIC0gdGhlIHR5cGUgb2YgUEVSSU9EIGNvbHVtbnMu CisgKiBzdGFydGF0dG51bSAtIHRoZSBhdHRudW0gb2YgdGhlIHN0YXJ0IGNvbHVtbi4KKyAq IGVuZGF0dG51bSAtIHRoZSBhdHRudW0gb2YgdGhlIGVuZCBjb2x1bW4uCisgKi8KK3N0YXRp YyB2b2lkCitWYWxpZGF0ZVBlcmlvZChSZWxhdGlvbiByZWwsIFBlcmlvZERlZiAqcGVyaW9k KQoreworCUhlYXBUdXBsZSBzdGFydHR1cGxlOworCUhlYXBUdXBsZSBlbmR0dXBsZTsKKwlG b3JtX3BnX2F0dHJpYnV0ZQlhdHR0dXBsZTsKKwlPaWQJYXR0Y29sbGF0aW9uOworCisJLyog RmluZCB0aGUgc3RhcnQgY29sdW1uICovCisJc3RhcnR0dXBsZSA9IFNlYXJjaFN5c0NhY2hl Q29weUF0dE5hbWUoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBwZXJpb2QtPnN0YXJ0Y29sbmFt ZSk7CisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHN0YXJ0dHVwbGUpKQorCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX0NPTFVNTiksCisJCQkJIGVy cm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhpc3Qi LAorCQkJCQkJcGVyaW9kLT5zdGFydGNvbG5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1l KHJlbCkpKSk7CisJYXR0dHVwbGUgPSAoRm9ybV9wZ19hdHRyaWJ1dGUpIEdFVFNUUlVDVChz dGFydHR1cGxlKTsKKwlwZXJpb2QtPmNvbHR5cGlkID0gYXR0dHVwbGUtPmF0dHR5cGlkOwor CWF0dGNvbGxhdGlvbiA9IGF0dHR1cGxlLT5hdHRjb2xsYXRpb247CisJcGVyaW9kLT5zdGFy dGF0dG51bSA9IGF0dHR1cGxlLT5hdHRudW07CisKKwkvKiBNYWtlIHN1cmUgaXQncyBub3Qg YSBzeXN0ZW0gY29sdW1uICovCisJaWYgKHBlcmlvZC0+c3RhcnRhdHRudW0gPD0gMCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfT0JKRUNUX0RF RklOSVRJT04pLAorCQkJCSBlcnJtc2coImNhbm5vdCB1c2Ugc3lzdGVtIGNvbHVtbiBcIiVz XCIgaW4gcGVyaW9kIiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lKSkpOworCisJLyog RmluZCB0aGUgZW5kIGNvbHVtbiAqLworCWVuZHR1cGxlID0gU2VhcmNoU3lzQ2FjaGVDb3B5 QXR0TmFtZShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+ZW5kY29sbmFtZSk7CisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGVuZHR1cGxlKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJ CQkoZXJyY29kZShFUlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNv bHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJ CXBlcmlvZC0+ZW5kY29sbmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsK KwlhdHR0dXBsZSA9IChGb3JtX3BnX2F0dHJpYnV0ZSkgR0VUU1RSVUNUKGVuZHR1cGxlKTsK KwlwZXJpb2QtPmVuZGF0dG51bSA9IGF0dHR1cGxlLT5hdHRudW07CisKKwkvKiBNYWtlIHN1 cmUgaXQncyBub3QgYSBzeXN0ZW0gY29sdW1uICovCisJaWYgKHBlcmlvZC0+ZW5kYXR0bnVt IDw9IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElE X09CSkVDVF9ERUZJTklUSU9OKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIHN5c3RlbSBj b2x1bW4gXCIlc1wiIGluIHBlcmlvZCIsCisJCQkJCQlwZXJpb2QtPmVuZGNvbG5hbWUpKSk7 CisKKwkvKiBCb3RoIGNvbHVtbnMgbXVzdCBiZSBvZiBzYW1lIHR5cGUgKi8KKwlpZiAocGVy aW9kLT5jb2x0eXBpZCAhPSBhdHR0dXBsZS0+YXR0dHlwaWQpCisJCWVyZXBvcnQoRVJST1Is CisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1z Zygic3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0IGJlIG9mIHNhbWUgdHlw ZSIpKSk7CisKKwkvKiBCb3RoIGNvbHVtbnMgbXVzdCBoYXZlIHRoZSBzYW1lIGNvbGxhdGlv biAqLworCWlmIChhdHRjb2xsYXRpb24gIT0gYXR0dHVwbGUtPmF0dGNvbGxhdGlvbikKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0NPTExBVElPTl9NSVNNQVRD SCksCisJCQkJIGVycm1zZygic3RhcnQgYW5kIGVuZCBjb2x1bW5zIG9mIHBlcmlvZCBtdXN0 IGhhdmUgc2FtZSBjb2xsYXRpb24iKSkpOworCisJaGVhcF9mcmVldHVwbGUoc3RhcnR0dXBs ZSk7CisJaGVhcF9mcmVldHVwbGUoZW5kdHVwbGUpOworfQorCisvKgorICogY2hvb3NlX3Jh bmdldHlwZV9mb3JfcGVyaW9kCisgKgorICogRmluZCBhIHN1aXRhYmxlIHJhbmdlIHR5cGUg Zm9yIG9wZXJhdGlvbnMgaW52b2x2aW5nIHRoaXMgcGVyaW9kLgorICogVXNlIHRoZSByYW5n ZXR5cGUgb3B0aW9uIGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgdHJ5IHRvIGZpbmQgYQorICog bm9uLWFtYmlndW91cyBleGlzdGluZyB0eXBlLgorICovCisvLyBUT0RPOiBUaGlzIGNvdWxk IGJlIHN0YXRpYyBub3cKK09pZAorY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKFBlcmlv ZERlZiAqcGVyaW9kKQoreworCU9pZAlybmd0eXBpZDsKKworCWlmIChwZXJpb2QtPnJhbmdl dHlwZW5hbWUgIT0gTlVMTCkKKwl7CisJCS8qIE1ha2Ugc3VyZSBpdCBleGlzdHMgKi8KKwkJ cm5ndHlwaWQgPSBUeXBlbmFtZUdldFR5cGlkRXh0ZW5kZWQocGVyaW9kLT5yYW5nZXR5cGVu YW1lLCBmYWxzZSk7CisJCWlmIChybmd0eXBpZCA9PSBJbnZhbGlkT2lkKQorCQkJZXJlcG9y dChFUlJPUiwgKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfT0JKRUNUKSwKKwkJCQkJIGVy cm1zZygiUmFuZ2UgdHlwZSAlcyBub3QgZm91bmQiLCBwZXJpb2QtPnJhbmdldHlwZW5hbWUp KSk7CisKKwkJLyogTWFrZSBzdXJlIGl0IGlzIGEgcmFuZ2UgdHlwZSAqLworCQlpZiAoIXR5 cGVfaXNfcmFuZ2Uocm5ndHlwaWQpKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coIlR5cGUgJXMg aXMgbm90IGEgcmFuZ2UgdHlwZSIsIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSkpKTsKKworCQkv KiBNYWtlIHN1cmUgaXQgbWF0Y2hlcyB0aGUgY29sdW1uIHR5cGUgKi8KKwkJaWYgKGdldF9y YW5nZV9zdWJ0eXBlKHJuZ3R5cGlkKSAhPSBwZXJpb2QtPmNvbHR5cGlkKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJ CQkJCSBlcnJtc2coIlJhbmdlIHR5cGUgJXMgZG9lcyBub3QgbWF0Y2ggY29sdW1uIHR5cGUg JXMiLAorCQkJCQkJIHBlcmlvZC0+cmFuZ2V0eXBlbmFtZSwKKwkJCQkJCSBmb3JtYXRfdHlw ZV9iZShwZXJpb2QtPmNvbHR5cGlkKSkpKTsKKwl9CisJZWxzZQorCXsKKwkJcm5ndHlwaWQg PSBnZXRfc3VidHlwZV9yYW5nZShwZXJpb2QtPmNvbHR5cGlkKTsKKwkJaWYgKHJuZ3R5cGlk ID09IEludmFsaWRPaWQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJubyByYW5nZSB0eXBlIGZv ciAlcyBmb3VuZCBmb3IgcGVyaW9kICVzIiwKKwkJCQkJCQlmb3JtYXRfdHlwZV9iZShwZXJp b2QtPmNvbHR5cGlkKSwKKwkJCQkJCQlwZXJpb2QtPnBlcmlvZG5hbWUpLAorCQkJCQkgZXJy aGludCgiWW91IGNhbiBkZWZpbmUgYSBjdXN0b20gcmFuZ2UgdHlwZSB3aXRoIENSRUFURSBU WVBFIikpKTsKKworCX0KKworCXJldHVybiBybmd0eXBpZDsKK30KKworc3RhdGljIHZvaWQK K0FkZFJlbGF0aW9uTmV3UGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2Qp Cit7CisJUmVsYXRpb24JYXR0cmVsYXRpb247CisJT2lkCQkJY29ub2lkOworCUNvbnN0cmFp bnQgKmNvbnN0cjsKKwlMaXN0CSAgICpuZXdjb25zdHJzOworCisJYXR0cmVsYXRpb24gPSB0 YWJsZV9vcGVuKEF0dHJpYnV0ZVJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJ LyogRmluZCB0aGUgR0VORVJBVEVEIHJhbmdlIGNvbHVtbiAqLworCisJcGVyaW9kLT5ybmdh dHRudW0gPSBnZXRfYXR0bnVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSwgcGVyaW9kLT5wZXJp b2RuYW1lKTsKKwlpZiAocGVyaW9kLT5ybmdhdHRudW0gPT0gSW52YWxpZEF0dHJOdW1iZXIp CisJCWVsb2coRVJST1IsICJtaXNzaW5nIGF0dHJpYnV0ZSAlcyIsIHBlcmlvZC0+cGVyaW9k bmFtZSk7CisKKwkvKiBUaGUgcGFyc2VyIGhhcyBhbHJlYWR5IGZvdW5kIHBlcmlvZC0+Y29s dHlwaWQgKi8KKworCWNvbnN0ciA9IG1ha2VfY29uc3RyYWludF9mb3JfcGVyaW9kKHJlbCwg cGVyaW9kKTsKKwluZXdjb25zdHJzID0gQWRkUmVsYXRpb25OZXdDb25zdHJhaW50cyhyZWws IE5JTCwgbGlzdF9tYWtlMShjb25zdHIpLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgTlVMTCk7CisJ Y29ub2lkID0gKChDb29rZWRDb25zdHJhaW50ICopIGxpbml0aWFsKG5ld2NvbnN0cnMpKS0+ Y29ub2lkOworCisJLyogU2F2ZSBpdCAqLworCVN0b3JlUGVyaW9kKHJlbCwgcGVyaW9kLT5w ZXJpb2RuYW1lLCBwZXJpb2QtPnN0YXJ0YXR0bnVtLCBwZXJpb2QtPmVuZGF0dG51bSwgcGVy aW9kLT5ybmdhdHRudW0sIGNvbm9pZCk7CisKKwl0YWJsZV9jbG9zZShhdHRyZWxhdGlvbiwg Um93RXhjbHVzaXZlTG9jayk7Cit9CisKIC8qCiAgKiBFbWl0IHRoZSByaWdodCBlcnJvciBv ciB3YXJuaW5nIG1lc3NhZ2UgZm9yIGEgIkRST1AiIGNvbW1hbmQgaXNzdWVkIG9uIGEKICAq IG5vbi1leGlzdGVudCByZWxhdGlvbgpAQCAtMzI4MSw2ICszNTkzLDE2OCBAQCBNZXJnZUF0 dHJpYnV0ZXMoTGlzdCAqc2NoZW1hLCBMaXN0ICpzdXBlcnMsIGNoYXIgcmVscGVyc2lzdGVu Y2UsCiB9CiAKIAorLyotLS0tLS0tLS0tCisgKiBNZXJnZVBlcmlvZHMKKyAqCQlSZXR1cm5z IG5ldyBwZXJpb2QgbGlzdCBnaXZlbiBpbml0aWFsIHBlcmlvZHMgYW5kIHN1cGVyY2xhc3Nl cy4KKyAqCisgKiBGb3Igbm93IHdlIGRvbid0IHN1cHBvcnQgaW5oZXJpdGVuY2Ugd2l0aCBQ RVJJT0RzLAorICogYnV0IHdlIG1pZ2h0IG1ha2UgaXQgd29yayBldmVudHVhbGx5LgorICoK KyAqIFdlIGNhbiBvbWl0IGxvdHMgb2YgY2hlY2tzIGhlcmUgYW5kIGFzc3VtZSBNZXJnZUF0 dHJpYnV0ZXMgYWxyZWFkeSBkaWQgdGhlbSwKKyAqIGZvciBleGFtcGxlIHRoYXQgY2hpbGQg JiBwYXJlbnRzIGFyZSBub3QgYSBtaXggb2YgcGVybWFuZW50IGFuZCB0ZW1wLgorICovCitz dGF0aWMgTGlzdCAqCitNZXJnZVBlcmlvZHMoY2hhciAqcmVsbmFtZSwgTGlzdCAqcGVyaW9k cywgTGlzdCAqdGFibGVFbHRzLCBMaXN0ICpzdXBlcnMpCit7CisJTGlzdENlbGwgICAqZW50 cnk7CisKKwkvKiBJZiB3ZSBoYXZlIGEgUEVSSU9EIHRoZW4gc3VwZXJzIG11c3QgYmUgZW1w dHkuICovCisKKwlpZiAobGlzdF9sZW5ndGgocGVyaW9kcykgPiAwICYmIGxpc3RfbGVuZ3Ro KHN1cGVycykgPiAwKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJybXNnKCJJbmhlcml0aW5nIGlzIG5v dCBzdXBwb3J0ZWQgd2hlbiBhIHRhYmxlIGhhcyBhIFBFUklPRCIpKSk7CisKKwkvKiBJZiBh bnkgcGFyZW50IHRhYmxlIGhhcyBhIFBFUklPRCwgdGhlbiBmYWlsLiAqLworCisJZm9yZWFj aChlbnRyeSwgc3VwZXJzKQorCXsKKwkJT2lkCQkJcGFyZW50ID0gbGZpcnN0X29pZChlbnRy eSk7CisJCVJlbGF0aW9uCXJlbGF0aW9uOworCQlSZWxhdGlvbglwZ19wZXJpb2Q7CisJCVN5 c1NjYW5EZXNjIHNjYW47CisJCVNjYW5LZXlEYXRhIHNrZXlbMV07CisJCUhlYXBUdXBsZQl0 dXBsZTsKKworCQkvKiBjYWxsZXIgYWxyZWFkeSBnb3QgbG9jayAqLworCQlyZWxhdGlvbiA9 IHRhYmxlX29wZW4ocGFyZW50LCBOb0xvY2spOworCQlwZ19wZXJpb2QgPSB0YWJsZV9vcGVu KFBlcmlvZFJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkJU2NhbktleUluaXQo JnNrZXlbMF0sCisJCQkJCUFudW1fcGdfcGVyaW9kX3BlcnJlbGlkLAorCQkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJCU9iamVjdElkR2V0RGF0dW0ocGFyZW50 KSk7CisKKwkJc2NhbiA9IHN5c3RhYmxlX2JlZ2luc2NhbihwZ19wZXJpb2QsIFBlcmlvZFJl bGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJCSAgTlVMTCwgMSwgc2tleSk7CisKKwkJ aWYgKEhlYXBUdXBsZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkJIGVycm1zZygiSW5oZXJpdGluZyBmcm9tIGEgdGFibGUgd2l0 aCBhIFBFUklPRCBpcyBub3Qgc3VwcG9ydGVkIikpKTsKKworCQlzeXN0YWJsZV9lbmRzY2Fu KHNjYW4pOworCQl0YWJsZV9jbG9zZShwZ19wZXJpb2QsIEFjY2Vzc1NoYXJlTG9jayk7CisJ CXRhYmxlX2Nsb3NlKHJlbGF0aW9uLCBOb0xvY2spOworCX0KKworCS8qCisJICogRmluZCB0 aGUgc3RhcnQgJiBlbmQgY29sdW1ucyBhbmQgZ2V0IHRoZWlyIGF0dG5vIGFuZCB0eXBlLgor CSAqIEluIHRoZSBzYW1lIHBhc3MsIG1ha2Ugc3VyZSB0aGUgcGVyaW9kIGRvZXNuJ3QgY29u ZmxpY3Qgd2l0aCBhbnkgY29sdW1uIG5hbWVzLgorCSAqIEFsc28gbWFrZSBzdXJlIHRoZSBz YW1lIHBlcmlvZCBuYW1lIGlzbid0IHVzZWQgbW9yZSB0aGFuIG9uY2UuCisJICovCisJZm9y ZWFjaCAoZW50cnksIHBlcmlvZHMpCisJeworCQlQZXJpb2REZWYgKnBlcmlvZCA9IGxmaXJz dChlbnRyeSk7CisJCUxpc3RDZWxsICplbnRyeTI7CisJCWludCBpID0gMTsKKwkJT2lkIHN0 YXJ0Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCQlPaWQgZW5kY29sdHlwaWQgPSBJbnZhbGlk T2lkOworCQlPaWQJc3RhcnRjb2xjb2xsYXRpb24gPSBJbnZhbGlkT2lkOworCQlPaWQJZW5k Y29sY29sbGF0aW9uID0gSW52YWxpZE9pZDsKKworCQlwZXJpb2QtPnN0YXJ0YXR0bnVtID0g SW52YWxpZEF0dHJOdW1iZXI7CisJCXBlcmlvZC0+ZW5kYXR0bnVtID0gSW52YWxpZEF0dHJO dW1iZXI7CisKKwkJaWYgKFN5c3RlbUF0dHJpYnV0ZUJ5TmFtZShwZXJpb2QtPnBlcmlvZG5h bWUpICE9IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X0RVUExJQ0FURV9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgbmFtZSBcIiVzXCIg Y29uZmxpY3RzIHdpdGggYSBzeXN0ZW0gY29sdW1uIG5hbWUiLAorCQkJCQkJCXBlcmlvZC0+ cGVyaW9kbmFtZSkpKTsKKworCQlmb3JlYWNoIChlbnRyeTIsIHBlcmlvZHMpCisJCXsKKwkJ CVBlcmlvZERlZiAqcGVyaW9kMiA9IGxmaXJzdChlbnRyeTIpOworCisJCQlpZiAocGVyaW9k ICE9IHBlcmlvZDIgJiYgc3RyY21wKHBlcmlvZC0+cGVyaW9kbmFtZSwgcGVyaW9kMi0+cGVy aW9kbmFtZSkgPT0gMCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9EVVBMSUNBVEVfT0JKRUNUKSwKKwkJCQkJCSBlcnJtc2coInBlcmlvZCBuYW1lIFwi JXNcIiBzcGVjaWZpZWQgbW9yZSB0aGFuIG9uY2UiLAorCQkJCQkJCQlwZXJpb2QtPnBlcmlv ZG5hbWUpKSk7CisJCX0KKworCQlmb3JlYWNoIChlbnRyeTIsIHRhYmxlRWx0cykKKwkJewor CQkJQ29sdW1uRGVmICpjb2wgPSBsZmlyc3QoZW50cnkyKTsKKwkJCWludDMyCWF0dHR5cG1v ZDsKKwkJCUFjbFJlc3VsdCBhY2xyZXN1bHQ7CisKKwkJCWlmIChzdHJjbXAocGVyaW9kLT5w ZXJpb2RuYW1lLCBjb2wtPmNvbG5hbWUpID09IDApCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJCQkgZXJybXNn KCJwZXJpb2QgbmFtZSBcIiVzXCIgY29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZSIsCisJ CQkJCQkJCXBlcmlvZC0+cGVyaW9kbmFtZSkpKTsKKworCQkJaWYgKHN0cmNtcChwZXJpb2Qt PnN0YXJ0Y29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBlcmlvZC0+ c3RhcnRhdHRudW0gPSBpOworCisJCQkJdHlwZW5hbWVUeXBlSWRBbmRNb2QoTlVMTCwgY29s LT50eXBlTmFtZSwgJnN0YXJ0Y29sdHlwaWQsICZhdHR0eXBtb2QpOworCisJCQkJYWNscmVz dWx0ID0gb2JqZWN0X2FjbGNoZWNrKFR5cGVSZWxhdGlvbklkLCBzdGFydGNvbHR5cGlkLCBH ZXRVc2VySWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNL X09LKQorCQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgc3RhcnRjb2x0eXBp ZCk7CisKKwkJCQlzdGFydGNvbGNvbGxhdGlvbiA9IEdldENvbHVtbkRlZkNvbGxhdGlvbihO VUxMLCBjb2wsIHN0YXJ0Y29sdHlwaWQpOworCQkJfQorCisJCQlpZiAoc3RyY21wKHBlcmlv ZC0+ZW5kY29sbmFtZSwgY29sLT5jb2xuYW1lKSA9PSAwKQorCQkJeworCQkJCXBlcmlvZC0+ ZW5kYXR0bnVtID0gaTsKKworCQkJCXR5cGVuYW1lVHlwZUlkQW5kTW9kKE5VTEwsIGNvbC0+ dHlwZU5hbWUsICZlbmRjb2x0eXBpZCwgJmF0dHR5cG1vZCk7CisKKwkJCQlhY2xyZXN1bHQg PSBvYmplY3RfYWNsY2hlY2soVHlwZVJlbGF0aW9uSWQsIGVuZGNvbHR5cGlkLCBHZXRVc2Vy SWQoKSwgQUNMX1VTQUdFKTsKKwkJCQlpZiAoYWNscmVzdWx0ICE9IEFDTENIRUNLX09LKQor CQkJCQlhY2xjaGVja19lcnJvcl90eXBlKGFjbHJlc3VsdCwgZW5kY29sdHlwaWQpOworCisJ CQkJZW5kY29sY29sbGF0aW9uID0gR2V0Q29sdW1uRGVmQ29sbGF0aW9uKE5VTEwsIGNvbCwg ZW5kY29sdHlwaWQpOworCQkJfQorCisJCQlpKys7CisJCX0KKworCQkvKiBEaWQgd2UgZmlu ZCB0aGUgY29sdW1ucz8gKi8KKwkJaWYgKHBlcmlvZC0+c3RhcnRhdHRudW0gPT0gSW52YWxp ZEF0dHJOdW1iZXIpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJl bGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9kLT5zdGFydGNv bG5hbWUsIHJlbG5hbWUpKSk7CisJCWlmIChwZXJpb2QtPmVuZGF0dG51bSA9PSBJbnZhbGlk QXR0ck51bWJlcikKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVf VU5ERUZJTkVEX0NPTFVNTiksCisJCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVs YXRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCQlwZXJpb2QtPmVuZGNvbG5h bWUsIHJlbG5hbWUpKSk7CisKKwkJLyogQm90aCBjb2x1bW5zIG11c3QgYmUgb2Ygc2FtZSB0 eXBlICovCisJCWlmIChzdGFydGNvbHR5cGlkICE9IGVuZGNvbHR5cGlkKQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJ CQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBvZiBwZXJpb2QgbXVzdCBiZSBv ZiBzYW1lIHR5cGUiKSkpOworCisJCS8qIEJvdGggY29sdW1ucyBtdXN0IGhhdmUgdGhlIHNh bWUgY29sbGF0aW9uICovCisJCWlmIChzdGFydGNvbGNvbGxhdGlvbiAhPSBlbmRjb2xjb2xs YXRpb24pCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTExB VElPTl9NSVNNQVRDSCksCisJCQkJCSBlcnJtc2coInN0YXJ0IGFuZCBlbmQgY29sdW1ucyBv ZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uIikpKTsKKworCQlwZXJpb2QtPmNv bHR5cGlkID0gc3RhcnRjb2x0eXBpZDsKKwkJcGVyaW9kLT5ybmd0eXBpZCA9IGNob29zZV9y YW5nZXR5cGVfZm9yX3BlcmlvZChwZXJpb2QpOworCX0KKworCXJldHVybiBwZXJpb2RzOwor fQorCiAvKgogICogTWVyZ2VDaGVja0NvbnN0cmFpbnQKICAqCQlUcnkgdG8gbWVyZ2UgYW4g aW5oZXJpdGVkIENIRUNLIGNvbnN0cmFpbnQgd2l0aCBwcmV2aW91cyBvbmVzCkBAIC00MzI2 LDEyICs0ODAwLDEyIEBAIEFsdGVyVGFibGUoQWx0ZXJUYWJsZVN0bXQgKnN0bXQsIExPQ0tN T0RFIGxvY2ttb2RlLAogICogZXhpc3RpbmcgcXVlcnkgcGxhbnMuICBPbiB0aGUgYXNzdW1w dGlvbiBpdCdzIG5vdCB1c2VkIGZvciBzdWNoLCB3ZQogICogZG9uJ3QgaGF2ZSB0byByZWpl Y3QgcGVuZGluZyBBRlRFUiB0cmlnZ2VycywgZWl0aGVyLgogICoKLSAqIEFsc28sIHNpbmNl IHdlIGRvbid0IGhhdmUgYW4gQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0LCB0aGlzIGNhbm5v dCBiZQorICogQWxzbywgaWYgeW91IGRvbid0IHBhc3MgYW4gQWx0ZXJUYWJsZVV0aWxpdHlD b250ZXh0LCB0aGlzIGNhbm5vdCBiZQogICogdXNlZCBmb3IgYW55IHN1YmNvbW1hbmQgdHlw ZXMgdGhhdCByZXF1aXJlIHBhcnNlIHRyYW5zZm9ybWF0aW9uIG9yCiAgKiBjb3VsZCBnZW5l cmF0ZSBzdWJjb21tYW5kcyB0aGF0IGhhdmUgdG8gYmUgcGFzc2VkIHRvIFByb2Nlc3NVdGls aXR5LgogICovCiB2b2lkCi1BbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpj bWRzLCBib29sIHJlY3Vyc2UpCitBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0 ICpjbWRzLCBib29sIHJlY3Vyc2UsIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4 dCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJTE9DS01PREUJbG9ja21vZGUgPSBBbHRlclRhYmxl R2V0TG9ja0xldmVsKGNtZHMpOwpAQCAtNDM0MCw3ICs0ODE0LDcgQEAgQWx0ZXJUYWJsZUlu dGVybmFsKE9pZCByZWxpZCwgTGlzdCAqY21kcywgYm9vbCByZWN1cnNlKQogCiAJRXZlbnRU cmlnZ2VyQWx0ZXJUYWJsZVJlbGlkKHJlbGlkKTsKIAotCUFUQ29udHJvbGxlcihOVUxMLCBy ZWwsIGNtZHMsIHJlY3Vyc2UsIGxvY2ttb2RlLCBOVUxMKTsKKwlBVENvbnRyb2xsZXIoTlVM TCwgcmVsLCBjbWRzLCByZWN1cnNlLCBsb2NrbW9kZSwgY29udGV4dCk7CiB9CiAKIC8qCkBA IC00NDMzLDYgKzQ5MDcsOCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExpc3QgKmNtZHMp CiAJCQljYXNlIEFUX0VuYWJsZVJlcGxpY2FSdWxlOgkvKiBtYXkgY2hhbmdlIFNFTEVDVCBy dWxlcyAqLwogCQkJY2FzZSBBVF9FbmFibGVSdWxlOiAvKiBtYXkgY2hhbmdlIFNFTEVDVCBy dWxlcyAqLwogCQkJY2FzZSBBVF9EaXNhYmxlUnVsZToJLyogbWF5IGNoYW5nZSBTRUxFQ1Qg cnVsZXMgKi8KKwkJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBzaGFyZXMgbmFtZXNwYWNlIHdp dGggY29sdW1ucywgYWRkcyBjb25zdHJhaW50ICovCisJCQljYXNlIEFUX0Ryb3BQZXJpb2Q6 CiAJCQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsK IApAQCAtNDc0OCw2ICs1MjI0LDE0IEBAIEFUUHJlcENtZChMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiByZWwsIEFsdGVyVGFibGVDbWQgKmNtZCwKIAkJCS8qIFRoaXMgY29tbWFuZCBuZXZl ciByZWN1cnNlcyAqLwogCQkJcGFzcyA9IEFUX1BBU1NfQUREX09USEVSQ09OU1RSOwogCQkJ YnJlYWs7CisJCWNhc2UgQVRfQWRkUGVyaW9kOiAvKiBBTFRFUiBUQUJMRSAuLi4gQUREIFBF UklPRCBGT1IgbmFtZSAoc3RhcnQsIGVuZCkgKi8KKwkJCUFUU2ltcGxlUGVybWlzc2lvbnMo Y21kLT5zdWJ0eXBlLCByZWwsIEFUVF9UQUJMRSk7CisJCQlwYXNzID0gQVRfUEFTU19BRERf UEVSSU9EOworCQkJYnJlYWs7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDogLyogQUxURVIgVEFC TEUgLi4uIERST1AgUEVSSU9EIEZPUiBuYW1lICovCisJCQlBVFNpbXBsZVBlcm1pc3Npb25z KGNtZC0+c3VidHlwZSwgcmVsLCBBVFRfVEFCTEUpOworCQkJcGFzcyA9IEFUX1BBU1NfRFJP UDsKKwkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElkZW50aXR5OgogCQkJQVRTaW1wbGVQZXJt aXNzaW9ucyhjbWQtPnN1YnR5cGUsIHJlbCwgQVRUX1RBQkxFIHwgQVRUX1ZJRVcgfCBBVFRf Rk9SRUlHTl9UQUJMRSk7CiAJCQkvKiBUaGlzIGNvbW1hbmQgbmV2ZXIgcmVjdXJzZXMgKi8K QEAgLTUxNDUsNiArNTYyOSwxNCBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJl ZFRhYmxlSW5mbyAqdGFiLAogCQljYXNlIEFUX0Nvb2tlZENvbHVtbkRlZmF1bHQ6CS8qIGFk ZCBhIHByZS1jb29rZWQgZGVmYXVsdCAqLwogCQkJYWRkcmVzcyA9IEFURXhlY0Nvb2tlZENv bHVtbkRlZmF1bHQocmVsLCBjbWQtPm51bSwgY21kLT5kZWYpOwogCQkJYnJlYWs7CisJCWNh c2UgQVRfQWRkUGVyaW9kOgorCQkJYWRkcmVzcyA9IEFURXhlY0FkZFBlcmlvZChyZWwsIChQ ZXJpb2REZWYgKikgY21kLT5kZWYsIGNvbnRleHQpOworCQkJYnJlYWs7CisJCWNhc2UgQVRf RHJvcFBlcmlvZDoKKwkJCUFURXhlY0Ryb3BQZXJpb2QocmVsLCBjbWQtPm5hbWUsIGNtZC0+ YmVoYXZpb3IsCisJCQkJCQkJCSBmYWxzZSwgZmFsc2UsCisJCQkJCQkJCSBjbWQtPm1pc3Np bmdfb2spOworCQkJYnJlYWs7CiAJCWNhc2UgQVRfQWRkSWRlbnRpdHk6CiAJCQljbWQgPSBB VFBhcnNlVHJhbnNmb3JtQ21kKHdxdWV1ZSwgdGFiLCByZWwsIGNtZCwgZmFsc2UsIGxvY2tt b2RlLAogCQkJCQkJCQkJICBjdXJfcGFzcywgY29udGV4dCk7CkBAIC02Mjg5LDYgKzY3ODEs OCBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBl KQogCQljYXNlIEFUX0FkZENvbHVtbjoKIAkJY2FzZSBBVF9BZGRDb2x1bW5Ub1ZpZXc6CiAJ CQlyZXR1cm4gIkFERCBDT0xVTU4iOworCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCXJldHVy biAiQUREIFBFUklPRCI7CiAJCWNhc2UgQVRfQ29sdW1uRGVmYXVsdDoKIAkJY2FzZSBBVF9D b29rZWRDb2x1bW5EZWZhdWx0OgogCQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIFNFVCBE RUZBVUxUIjsKQEAgLTYzMTIsNiArNjgwNiw4IEBAIGFsdGVyX3RhYmxlX3R5cGVfdG9fc3Ry aW5nKEFsdGVyVGFibGVUeXBlIGNtZHR5cGUpCiAJCQlyZXR1cm4gIkFMVEVSIENPTFVNTiAu Li4gU0VUIENPTVBSRVNTSU9OIjsKIAkJY2FzZSBBVF9Ecm9wQ29sdW1uOgogCQkJcmV0dXJu ICJEUk9QIENPTFVNTiI7CisJCWNhc2UgQVRfRHJvcFBlcmlvZDoKKwkJCXJldHVybiAiRFJP UCBQRVJJT0QiOwogCQljYXNlIEFUX0FkZEluZGV4OgogCQljYXNlIEFUX1JlQWRkSW5kZXg6 CiAJCQlyZXR1cm4gTlVMTDsJCS8qIG5vdCByZWFsIGdyYW1tYXIgKi8KQEAgLTczMTcsMTQg Kzc4MTMsMjkgQEAgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogLyoKICAqIElmIGEgbmV3IG9yIHJlbmFtZWQg Y29sdW1uIHdpbGwgY29sbGlkZSB3aXRoIHRoZSBuYW1lIG9mIGFuIGV4aXN0aW5nCiAgKiBj b2x1bW4gYW5kIGlmX25vdF9leGlzdHMgaXMgZmFsc2UgdGhlbiBlcnJvciBvdXQsIGVsc2Ug ZG8gbm90aGluZy4KKyAqCisgKiBTZWUgYWxzbyBjaGVja19mb3JfcGVyaW9kX25hbWVfY29s bGlzaW9uLgogICovCiBzdGF0aWMgYm9vbAogY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxp c2lvbihSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJCWJvb2wg aWZfbm90X2V4aXN0cykKIHsKLQlIZWFwVHVwbGUJYXR0VHVwbGU7CisJSGVhcFR1cGxlCWF0 dFR1cGxlLCBwZXJUdXBsZTsKIAlpbnQJCQlhdHRudW07CiAKKwkvKiBJZiB0aGUgbmFtZSBl eGlzdHMgYXMgYSBwZXJpb2QsIHdlJ3JlIGRvbmUuICovCisJcGVyVHVwbGUgPSBTZWFyY2hT eXNDYWNoZTIoUEVSSU9ETkFNRSwKKwkJCQkJCQkgICBPYmplY3RJZEdldERhdHVtKFJlbGF0 aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9pbnRlckdldERhdHVtKGNvbG5hbWUp KTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChwZXJUdXBsZSkpCisJeworCQlSZWxlYXNlU3lz Q2FjaGUocGVyVHVwbGUpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJIGVycm1zZygiY29sdW1uIG5hbWUgXCIlc1wi IGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUiLAorCQkJCQkJY29sbmFtZSkpKTsKKwl9 CisKIAkvKgogCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0dGlzZHJvcHBl ZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCiAJICogYWRkIGEgY29sdW1uIG1hdGNo aW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFueXdheS4KQEAg LTczNjgsNiArNzg3OSw3OCBAQCBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uKFJl bGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sbmFtZSwKIAlyZXR1cm4gdHJ1ZTsKIH0KIAor LyoKKyAqIElmIGEgbmV3IHBlcmlvZCBuYW1lIHdpbGwgY29sbGlkZSB3aXRoIHRoZSBuYW1l IG9mIGFuIGV4aXN0aW5nIGNvbHVtbiBvcgorICogcGVyaW9kIFthbmQgaWZfbm90X2V4aXN0 cyBpcyBmYWxzZV0gdGhlbiBlcnJvciBvdXQsIGVsc2UgZG8gbm90aGluZy4KKyAqCisgKiBT ZWUgYWxzbyBjaGVja19mb3JfY29sdW1uX25hbWVfY29sbGlzaW9uLgorICovCitzdGF0aWMg Ym9vbAorY2hlY2tfZm9yX3BlcmlvZF9uYW1lX2NvbGxpc2lvbihSZWxhdGlvbiByZWwsIGNv bnN0IGNoYXIgKnBlcm5hbWUsCisJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cykKK3sKKwlI ZWFwVHVwbGUJYXR0VHVwbGUsIHBlclR1cGxlOworCWludAkJCWF0dG51bTsKKworCS8qIFRP RE86IGltcGxlbWVudCBJRiBbTk9UXSBFWElTVFMgZm9yIHBlcmlvZHMgKi8KKwlBc3NlcnQo IWlmX25vdF9leGlzdHMpOworCisJLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIHBlcmlvZCB3 aXRoIHRoaXMgbmFtZSwgdGhlbiB3ZSdyZSBkb25lLiAqLworCXBlclR1cGxlID0gU2VhcmNo U3lzQ2FjaGUyKFBFUklPRE5BTUUsCisJCQkJCQkJICAgT2JqZWN0SWRHZXREYXR1bShSZWxh dGlvbkdldFJlbGlkKHJlbCkpLAorCQkJCQkJCSAgIFBvaW50ZXJHZXREYXR1bShwZXJuYW1l KSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQocGVyVHVwbGUpKQorCXsKKwkJaWYgKGlmX25v dF9leGlzdHMpCisJCXsKKwkJCVJlbGVhc2VTeXNDYWNoZShwZXJUdXBsZSk7CisKKwkJCWVy ZXBvcnQoTk9USUNFLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4p LAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBhbHJl YWR5IGV4aXN0cywgc2tpcHBpbmciLAorCQkJCQkJCXBlcm5hbWUsIFJlbGF0aW9uR2V0UmVs YXRpb25OYW1lKHJlbCkpKSk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKworCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElDQVRFX0NPTFVNTiksCisJCQkJ IGVycm1zZygicGVyaW9kIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgYWxyZWFkeSBleGlz dHMiLAorCQkJCQkJcGVybmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsK Kwl9CisKKwkvKgorCSAqIHRoaXMgdGVzdCBpcyBkZWxpYmVyYXRlbHkgbm90IGF0dGlzZHJv cHBlZC1hd2FyZSwgc2luY2UgaWYgb25lIHRyaWVzIHRvCisJICogYWRkIGEgY29sdW1uIG1h dGNoaW5nIGEgZHJvcHBlZCBjb2x1bW4gbmFtZSwgaXQncyBnb25uYSBmYWlsIGFueXdheS4K KwkgKgorCSAqIFhYWDogRG9lcyB0aGlzIGhvbGQgZm9yIHBlcmlvZHM/CisJICovCisJYXR0 VHVwbGUgPSBTZWFyY2hTeXNDYWNoZTIoQVRUTkFNRSwKKwkJCQkJCQkgICBPYmplY3RJZEdl dERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSksCisJCQkJCQkJICAgUG9pbnRlckdldERh dHVtKHBlcm5hbWUpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZChhdHRUdXBsZSkpCisJewor CQlhdHRudW0gPSAoKEZvcm1fcGdfYXR0cmlidXRlKSBHRVRTVFJVQ1QoYXR0VHVwbGUpKS0+ YXR0bnVtOworCQlSZWxlYXNlU3lzQ2FjaGUoYXR0VHVwbGUpOworCisJCS8qCisJCSAqIFdl IHRocm93IGEgZGlmZmVyZW50IGVycm9yIG1lc3NhZ2UgZm9yIGNvbmZsaWN0cyB3aXRoIHN5 c3RlbSBjb2x1bW4KKwkJICogbmFtZXMsIHNpbmNlIHRoZXkgYXJlIG5vcm1hbGx5IG5vdCBz aG93biBhbmQgdGhlIHVzZXIgbWlnaHQgb3RoZXJ3aXNlCisJCSAqIGJlIGNvbmZ1c2VkIGFi b3V0IHRoZSByZWFzb24gZm9yIHRoZSBjb25mbGljdC4KKwkJICovCisJCWlmIChhdHRudW0g PD0gMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfRFVQTElD QVRFX0NPTFVNTiksCisJCQkJCSBlcnJtc2coInBlcmlvZCBuYW1lIFwiJXNcIiBjb25mbGlj dHMgd2l0aCBhIHN5c3RlbSBjb2x1bW4gbmFtZSIsCisJCQkJCQkJcGVybmFtZSkpKTsKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RVUExJQ0FURV9DT0xVTU4p LAorCQkJCSBlcnJtc2coInBlcmlvZCBuYW1lIFwiJXNcIiBjb25mbGljdHMgd2l0aCBhIGNv bHVtbiBuYW1lIiwKKwkJCQkJCXBlcm5hbWUpKSk7CisJfQorCisJcmV0dXJuIHRydWU7Cit9 CisKIC8qCiAgKiBJbnN0YWxsIGEgY29sdW1uJ3MgZGVwZW5kZW5jeSBvbiBpdHMgZGF0YXR5 cGUuCiAgKi8KQEAgLTgwMDgsNiArODU5MSwxNTUgQEAgQVRFeGVjQ29va2VkQ29sdW1uRGVm YXVsdChSZWxhdGlvbiByZWwsIEF0dHJOdW1iZXIgYXR0bnVtLAogCXJldHVybiBhZGRyZXNz OwogfQogCisvKgorICogQUxURVIgVEFCTEUgQUREIFBFUklPRAorICoKKyAqIFJldHVybiB0 aGUgYWRkcmVzcyBvZiB0aGUgcGVyaW9kLgorICovCitzdGF0aWMgT2JqZWN0QWRkcmVzcwor QVRFeGVjQWRkUGVyaW9kKFJlbGF0aW9uIHJlbCwgUGVyaW9kRGVmICpwZXJpb2QsIEFsdGVy VGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCkKK3sKKwlSZWxhdGlvbgkJYXR0cmVsYXRp b247CisJT2JqZWN0QWRkcmVzcwlhZGRyZXNzID0gSW52YWxpZE9iamVjdEFkZHJlc3M7CisJ Q29uc3RyYWludAkgICAqY29uc3RyOworCUNvbHVtbkRlZgkgICAqcmFuZ2Vjb2w7CisJT2lk CQkJCWNvbm9pZCwgcGVyaW9kb2lkOworCUxpc3QJCSAgICpjbWRzID0gTklMOworCUFsdGVy VGFibGVDbWQgICpjbWQ7CisKKwkvKgorCSAqIFBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMg bm90IHlldCBpbXBsZW1lbnRlZCwgYnV0IG1ha2Ugc3VyZSBubyBvbmUgdXNlcworCSAqIHRo ZSBuYW1lLgorCSAqLworCWlmIChzdHJjbXAocGVyaW9kLT5wZXJpb2RuYW1lLCAic3lzdGVt X3RpbWUiKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09E RV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCQkgZXJybXNnKCJQRVJJT0QgRk9SIFNZ U1RFTV9USU1FIGlzIG5vdCBzdXBwb3J0ZWQiKSkpOworCisJLyogVGhlIHBlcmlvZCBuYW1l IG11c3Qgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkodm9pZCkgY2hlY2tfZm9yX3BlcmlvZF9u YW1lX2NvbGxpc2lvbihyZWwsIHBlcmlvZC0+cGVyaW9kbmFtZSwgZmFsc2UpOworCisJLyog UGFyc2Ugb3B0aW9ucyAqLworCXRyYW5zZm9ybVBlcmlvZE9wdGlvbnMocGVyaW9kKTsKKwor CWF0dHJlbGF0aW9uID0gdGFibGVfb3BlbihBdHRyaWJ1dGVSZWxhdGlvbklkLCBSb3dFeGNs dXNpdmVMb2NrKTsKKwlWYWxpZGF0ZVBlcmlvZChyZWwsIHBlcmlvZCk7CisKKwlwZXJpb2Qt PnJuZ3R5cGlkID0gY2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKHBlcmlvZCk7CisKKwkv KiBNYWtlIHRoZSBDSEVDSyBjb25zdHJhaW50ICovCisJY29uc3RyID0gbWFrZV9jb25zdHJh aW50X2Zvcl9wZXJpb2QocmVsLCBwZXJpb2QpOworCWNtZCA9IG1ha2VOb2RlKEFsdGVyVGFi bGVDbWQpOworCWNtZC0+c3VidHlwZSA9IEFUX0FkZENvbnN0cmFpbnQ7CisJY21kLT5kZWYg PSAoTm9kZSAqKSBjb25zdHI7CisJY21kcyA9IGxhcHBlbmQoY21kcywgY21kKTsKKwlBbHRl clRhYmxlSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBjbWRzLCB0cnVlLCBjb250 ZXh0KTsKKwljb25vaWQgPSBnZXRfcmVsYXRpb25fY29uc3RyYWludF9vaWQoUmVsYXRpb25H ZXRSZWxpZChyZWwpLCBwZXJpb2QtPmNvbnN0cmFpbnRuYW1lLCBmYWxzZSk7CisKKwkvKiBN YWtlIHRoZSByYW5nZSBjb2x1bW4gKi8KKwlyYW5nZWNvbCA9IG1ha2VfcmFuZ2VfY29sdW1u X2Zvcl9wZXJpb2QocGVyaW9kKTsKKwljbWQgPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsK KwljbWQtPnN1YnR5cGUgPSBBVF9BZGRDb2x1bW47CisJY21kLT5kZWYgPSAoTm9kZSAqKSBy YW5nZWNvbDsKKwljbWQtPm5hbWUgPSBwZXJpb2QtPnBlcmlvZG5hbWU7CisJY21kLT5yZWN1 cnNlID0gZmFsc2U7IC8qIG5vLCBsZXQgdGhlIFBFUklPRCByZWN1cnNlIGluc3RlYWQgKi8K KwlBbHRlclRhYmxlSW50ZXJuYWwoUmVsYXRpb25HZXRSZWxpZChyZWwpLCBsaXN0X21ha2Ux KGNtZCksIHRydWUsIGNvbnRleHQpOworCXBlcmlvZC0+cm5nYXR0bnVtID0gZ2V0X2F0dG51 bShSZWxhdGlvbkdldFJlbGlkKHJlbCksIHBlcmlvZC0+cGVyaW9kbmFtZSk7CisJaWYgKHBl cmlvZC0+cm5nYXR0bnVtID09IEludmFsaWRBdHRyTnVtYmVyKQorCQllbG9nKEVSUk9SLCAi bWlzc2luZyBhdHRyaWJ1dGUgJXMiLCBwZXJpb2QtPnBlcmlvZG5hbWUpOworCisJLyogU2F2 ZSB0aGUgUGVyaW9kICovCisJcGVyaW9kb2lkID0gU3RvcmVQZXJpb2QocmVsLCBwZXJpb2Qt PnBlcmlvZG5hbWUsIHBlcmlvZC0+c3RhcnRhdHRudW0sIHBlcmlvZC0+ZW5kYXR0bnVtLCBw ZXJpb2QtPnJuZ2F0dG51bSwgY29ub2lkKTsKKworCU9iamVjdEFkZHJlc3NTZXQoYWRkcmVz cywgUGVyaW9kUmVsYXRpb25JZCwgcGVyaW9kb2lkKTsKKworCXRhYmxlX2Nsb3NlKGF0dHJl bGF0aW9uLCBSb3dFeGNsdXNpdmVMb2NrKTsKKworCXJldHVybiBhZGRyZXNzOworfQorCisv KgorICogQUxURVIgVEFCTEUgRFJPUCBQRVJJT0QKKyAqCisgKiBMaWtlIERST1AgQ09MVU1O LCB3ZSBjYW4ndCB1c2UgdGhlIG5vcm1hbCBBTFRFUiBUQUJMRSByZWN1cnNpb24gbWVjaGFu aXNtLgorICovCitzdGF0aWMgdm9pZAorQVRFeGVjRHJvcFBlcmlvZChSZWxhdGlvbiByZWws IGNvbnN0IGNoYXIgKnBlcmlvZE5hbWUsCisJCQkJCSBEcm9wQmVoYXZpb3IgYmVoYXZpb3Is CisJCQkJCSBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAorCQkJCQkgYm9vbCBtaXNz aW5nX29rKQoreworCVJlbGF0aW9uCXBnX3BlcmlvZDsKKwlGb3JtX3BnX3BlcmlvZCBwZXJp b2Q7CisJU3lzU2NhbkRlc2Mgc2NhbjsKKwlTY2FuS2V5RGF0YSBrZXk7CisJSGVhcFR1cGxl CXR1cGxlOworCWJvb2wJCWZvdW5kID0gZmFsc2U7CisKKwkvKiBBdCB0b3AgbGV2ZWwsIHBl cm1pc3Npb24gY2hlY2sgd2FzIGRvbmUgaW4gQVRQcmVwQ21kLCBlbHNlIGRvIGl0ICovCisJ aWYgKHJlY3Vyc2luZykKKwkJQVRTaW1wbGVQZXJtaXNzaW9ucyhBVF9Ecm9wUGVyaW9kLCBy ZWwsIEFUVF9UQUJMRSk7CisKKwlwZ19wZXJpb2QgPSB0YWJsZV9vcGVuKFBlcmlvZFJlbGF0 aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJLyoKKwkgKiBGaW5kIGFuZCBkcm9wIHRo ZSB0YXJnZXQgcGVyaW9kCisJICovCisJU2NhbktleUluaXQoJmtleSwKKwkJCQlBbnVtX3Bn X3BlcmlvZF9wZXJyZWxpZCwKKwkJCQlCVEVxdWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEs CisJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpKTsKKwlzY2Fu ID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX3BlcmlvZCwgUGVyaW9kUmVsaWROYW1lSW5kZXhJ ZCwKKwkJCQkJCQkgIHRydWUsIE5VTEwsIDEsICZrZXkpOworCisJd2hpbGUgKEhlYXBUdXBs ZUlzVmFsaWQodHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNjYW4pKSkKKwl7CisJCU9iamVj dEFkZHJlc3MgcGVyb2JqOworCisJCXBlcmlvZCA9IChGb3JtX3BnX3BlcmlvZCkgR0VUU1RS VUNUKHR1cGxlKTsKKworCQlpZiAoc3RyY21wKE5hbWVTdHIocGVyaW9kLT5wZXJuYW1lKSwg cGVyaW9kTmFtZSkgIT0gMCkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFBlcmZvcm0g dGhlIGFjdHVhbCBwZXJpb2QgZGVsZXRpb24KKwkJICovCisJCXBlcm9iai5jbGFzc0lkID0g UGVyaW9kUmVsYXRpb25JZDsKKwkJcGVyb2JqLm9iamVjdElkID0gcGVyaW9kLT5vaWQ7CisJ CXBlcm9iai5vYmplY3RTdWJJZCA9IDA7CisKKwkJcGVyZm9ybURlbGV0aW9uKCZwZXJvYmos IGJlaGF2aW9yLCAwKTsKKworCQlmb3VuZCA9IHRydWU7CisKKwkJLyogcGVyaW9kIGZvdW5k IGFuZCBkcm9wcGVkIC0tIG5vIG5lZWQgdG8ga2VlcCBsb29waW5nICovCisJCWJyZWFrOwor CX0KKworCXN5c3RhYmxlX2VuZHNjYW4oc2Nhbik7CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJ aWYgKCFtaXNzaW5nX29rKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX1VOREVGSU5FRF9PQkpFQ1QpLAorCQkJCQkgZXJybXNnKCJwZXJpb2QgXCIl c1wiIG9uIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQkJcGVyaW9k TmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCWVyZXBvcnQoTk9USUNFLAorCQkJCQkoZXJybXNnKCJwZXJpb2QgXCIlc1wiIG9u IHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCwgc2tpcHBpbmciLAorCQkJCQkJCXBl cmlvZE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCkpKSk7CisJCQl0YWJsZV9j bG9zZShwZ19wZXJpb2QsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQkJcmV0dXJuOworCQl9CisJ fQorCisJdGFibGVfY2xvc2UocGdfcGVyaW9kLCBSb3dFeGNsdXNpdmVMb2NrKTsKK30KKwog LyoKICAqIEFMVEVSIFRBQkxFIEFMVEVSIENPTFVNTiBBREQgSURFTlRJVFkKICAqCkBAIC0x MzQ5MCw2ICsxNDIyMiwxNSBAQCBBVEV4ZWNBbHRlckNvbHVtblR5cGUoQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJUmVtZW1iZXJDb25zdHJhaW50Rm9yUmVi dWlsZGluZyhmb3VuZE9iamVjdC5vYmplY3RJZCwgdGFiKTsKIAkJCQlicmVhazsKIAorCQkJ Y2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJjYW5u b3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kIiksCisJCQkJCQkg ZXJyZGV0YWlsKCIlcyBkZXBlbmRzIG9uIGNvbHVtbiBcIiVzXCIiLAorCQkJCQkJCQkgICBn ZXRPYmplY3REZXNjcmlwdGlvbigmZm91bmRPYmplY3QsIGZhbHNlKSwKKwkJCQkJCQkJICAg Y29sTmFtZSkpKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBPQ0xBU1NfUkVXUklURToKIAkJ CQkvKiBYWFggc29tZWRheSBzZWUgaWYgd2UgY2FuIGNvcGUgd2l0aCByZXZpc2luZyB2aWV3 cyAqLwogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTU1MSw3ICsxNjI5Miw3IEBAIEFsdGVy VGFibGVNb3ZlQWxsKEFsdGVyVGFibGVNb3ZlQWxsU3RtdCAqc3RtdCkKIAogCQlFdmVudFRy aWdnZXJBbHRlclRhYmxlU3RhcnQoKE5vZGUgKikgc3RtdCk7CiAJCS8qIE9JRCBpcyBzZXQg YnkgQWx0ZXJUYWJsZUludGVybmFsICovCi0JCUFsdGVyVGFibGVJbnRlcm5hbChsZmlyc3Rf b2lkKGwpLCBjbWRzLCBmYWxzZSk7CisJCUFsdGVyVGFibGVJbnRlcm5hbChsZmlyc3Rfb2lk KGwpLCBjbWRzLCBmYWxzZSwgTlVMTCk7CiAJCUV2ZW50VHJpZ2dlckFsdGVyVGFibGVFbmQo KTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYwppbmRleCA5YmQ3NzU0NmI5Li5iZTQ2MzcyODdm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMKKysrIGIvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmlldy5jCkBAIC0xNjksNyArMTY5LDcgQEAgRGVmaW5lVmlydHVh bFJlbGF0aW9uKFJhbmdlVmFyICpyZWxhdGlvbiwgTGlzdCAqdGxpc3QsIGJvb2wgcmVwbGFj ZSwKIAkJCX0KIAogCQkJLyogRXZlbnRUcmlnZ2VyQWx0ZXJUYWJsZVN0YXJ0IGNhbGxlZCBi eSBQcm9jZXNzVXRpbGl0eVNsb3cgKi8KLQkJCUFsdGVyVGFibGVJbnRlcm5hbCh2aWV3T2lk LCBhdGNtZHMsIHRydWUpOworCQkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21k cywgdHJ1ZSwgTlVMTCk7CiAKIAkJCS8qIE1ha2UgdGhlIG5ldyB2aWV3IGNvbHVtbnMgdmlz aWJsZSAqLwogCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKQEAgLTIwMSw3ICsyMDEs NyBAQCBEZWZpbmVWaXJ0dWFsUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBMaXN0ICp0 bGlzdCwgYm9vbCByZXBsYWNlLAogCQlhdGNtZHMgPSBsaXN0X21ha2UxKGF0Y21kKTsKIAog CQkvKiBFdmVudFRyaWdnZXJBbHRlclRhYmxlU3RhcnQgY2FsbGVkIGJ5IFByb2Nlc3NVdGls aXR5U2xvdyAqLwotCQlBbHRlclRhYmxlSW50ZXJuYWwodmlld09pZCwgYXRjbWRzLCB0cnVl KTsKKwkJQWx0ZXJUYWJsZUludGVybmFsKHZpZXdPaWQsIGF0Y21kcywgdHJ1ZSwgTlVMTCk7 CiAKIAkJLyoKIAkJICogVGhlcmUgaXMgdmVyeSBsaXR0bGUgdG8gZG8gaGVyZSB0byB1cGRh dGUgdGhlIHZpZXcncyBkZXBlbmRlbmNpZXMuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9ub2RlRnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCmluZGV4 IDYyY2NiZjlkM2MuLmEwYzA2OWZjNWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVz L25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCkBAIC0x NjM5LDYgKzE2MzksOSBAQCBleHByTG9jYXRpb24oY29uc3QgTm9kZSAqZXhwcikKIAkJY2Fz ZSBUX0NvbnN0cmFpbnQ6CiAJCQlsb2MgPSAoKGNvbnN0IENvbnN0cmFpbnQgKikgZXhwcikt PmxvY2F0aW9uOwogCQkJYnJlYWs7CisJCWNhc2UgVF9QZXJpb2REZWY6CisJCQlsb2MgPSAo KGNvbnN0IFBlcmlvZERlZiAqKSBleHByKS0+bG9jYXRpb247CisJCQlicmVhazsKIAkJY2Fz ZSBUX0Z1bmN0aW9uUGFyYW1ldGVyOgogCQkJLyoganVzdCB1c2UgdHlwZW5hbWUncyBsb2Nh dGlvbiAqLwogCQkJbG9jID0gZXhwckxvY2F0aW9uKChOb2RlICopICgoY29uc3QgRnVuY3Rp b25QYXJhbWV0ZXIgKikgZXhwciktPmFyZ1R5cGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNDky ZjMwZmY2OS4uODg4NTAyODRlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01OTUsNyArNTk1LDcg QEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxrZXl3b3JkPiBjb2xfbmFt ZV9rZXl3b3JkIHJlc2VydmVkX2tleXdvcmQKICV0eXBlIDxrZXl3b3JkPiBiYXJlX2xhYmVs X2tleXdvcmQKIAotJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3RyYWludCBUYWJsZUxpa2VDbGF1 c2UKKyV0eXBlIDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNlIFRhYmxl UGVyaW9kCiAldHlwZSA8aXZhbD4JVGFibGVMaWtlT3B0aW9uTGlzdCBUYWJsZUxpa2VPcHRp b24KICV0eXBlIDxzdHI+CQljb2x1bW5fY29tcHJlc3Npb24gb3B0X2NvbHVtbl9jb21wcmVz c2lvbiBjb2x1bW5fc3RvcmFnZSBvcHRfY29sdW1uX3N0b3JhZ2UKICV0eXBlIDxsaXN0PglD b2xRdWFsTGlzdApAQCAtMjYwMSw2ICsyNjAxLDI0IEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJ CQkJbi0+ZGVmID0gKE5vZGUgKikgJDQ7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9 CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gQUREIFBFUklPRCBGT1IgPG5hbWU+ICg8bmFt ZT4sIDxuYW1lPikgKi8KKwkJCXwgQUREX1AgVGFibGVQZXJpb2QKKwkJCQl7CisJCQkJCUFs dGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3Vi dHlwZSA9IEFUX0FkZFBlcmlvZDsKKwkJCQkJbi0+ZGVmID0gJDI7CisJCQkJCSQkID0gKE5v ZGUgKiluOworCQkJCX0KKwkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBEUk9QIFBFUklPRCBG T1IgPG5hbWU+IFtSRVNUUklDVHxDQVNDQURFXSAqLworCQkJfCBEUk9QIFBFUklPRCBGT1Ig bmFtZSBvcHRfZHJvcF9iZWhhdmlvcgorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9 IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfRHJvcFBl cmlvZDsKKwkJCQkJbi0+bmFtZSA9ICQ0OworCQkJCQluLT5iZWhhdmlvciA9ICQ1OworCQkJ CQluLT5taXNzaW5nX29rID0gZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0K IAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBBREQgQ09OU1RSQUlOVCAuLi4gKi8KIAkJCXwg QUREX1AgVGFibGVDb25zdHJhaW50CiAJCQkJewpAQCAtMzcxMiw4ICszNzMwLDEwIEBAIFRh YmxlRWxlbWVudDoKIAkJCWNvbHVtbkRlZgkJCQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFi bGVMaWtlQ2xhdXNlCQkJCQl7ICQkID0gJDE7IH0KIAkJCXwgVGFibGVDb25zdHJhaW50CQkJ CQl7ICQkID0gJDE7IH0KKwkJCXwgVGFibGVQZXJpb2QJCQkJCQl7ICQkID0gJDE7IH0KIAkJ OwogCisKIFR5cGVkVGFibGVFbGVtZW50OgogCQkJY29sdW1uT3B0aW9ucwkJCQkJCXsgJCQg PSAkMTsgfQogCQkJfCBUYWJsZUNvbnN0cmFpbnQJCQkJCXsgJCQgPSAkMTsgfQpAQCAtNDA2 Niw2ICs0MDg2LDE5IEBAIFRhYmxlTGlrZU9wdGlvbjoKIAkJOwogCiAKK1RhYmxlUGVyaW9k OgorCQkJUEVSSU9EIEZPUiBuYW1lICcoJyBuYW1lICcsJyBuYW1lICcpJyBvcHRfZGVmaW5p dGlvbgorCQkJCXsKKwkJCQkJUGVyaW9kRGVmICpuID0gbWFrZU5vZGUoUGVyaW9kRGVmKTsK KwkJCQkJbi0+cGVyaW9kbmFtZSA9ICQzOworCQkJCQluLT5zdGFydGNvbG5hbWUgPSAkNTsK KwkJCQkJbi0+ZW5kY29sbmFtZSA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDk7CisJCQkJ CW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsK KwogLyogQ29uc3RyYWludEVsZW0gc3BlY2lmaWVzIGNvbnN0cmFpbnQgc3ludGF4IHdoaWNo IGlzIG5vdCBlbWJlZGRlZCBpbnRvCiAgKglhIGNvbHVtbiBkZWZpbml0aW9uLiBDb2xDb25z dHJhaW50RWxlbSBzcGVjaWZpZXMgdGhlIGVtYmVkZGVkIGZvcm0uCiAgKiAtIHRob21hcyAx OTk3LTEyLTAzCkBAIC03MDk4LDYgKzcxMzEsMTQgQEAgQ29tbWVudFN0bXQ6CiAJCQkJCW4t PmNvbW1lbnQgPSAkOTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KKwkJCXwgQ09N TUVOVCBPTiBQRVJJT0QgYW55X25hbWUgSVMgY29tbWVudF90ZXh0CisJCQkJeworCQkJCQlD b21tZW50U3RtdCAqbiA9IG1ha2VOb2RlKENvbW1lbnRTdG10KTsKKwkJCQkJbi0+b2JqdHlw ZSA9IE9CSkVDVF9QRVJJT0Q7CisJCQkJCW4tPm9iamVjdCA9IChOb2RlICopICQ0OworCQkJ CQluLT5jb21tZW50ID0gJDY7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CiAJCQl8 IENPTU1FTlQgT04gTEFSR0VfUCBPQkpFQ1RfUCBOdW1lcmljT25seSBJUyBjb21tZW50X3Rl eHQKIAkJCQl7CiAJCQkJCUNvbW1lbnRTdG10ICpuID0gbWFrZU5vZGUoQ29tbWVudFN0bXQp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3JlbGF0aW9uLmMgYi9z cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwppbmRleCA4NjRlYTliMGQ1Li5m YmJhZGU1MTQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRp b24uYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcmVsYXRpb24uYwpAQCAtMjIs NiArMjIsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy90YWJsZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvaGVhcC5oIgogI2luY2x1ZGUgImNhdGFsb2cvbmFtZXNwYWNlLmgiCisjaW5jbHVkZSAi Y2F0YWxvZy9wZ19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIKICNp bmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibm9kZXMvbWFrZWZ1bmNzLmgiCkBAIC0z MTg5LDYgKzMxOTAsNyBAQCBleHBhbmROU0l0ZW1BdHRycyhQYXJzZVN0YXRlICpwc3RhdGUs IFBhcnNlTmFtZXNwYWNlSXRlbSAqbnNpdGVtLAogCQkJCSAgaW50IHN1YmxldmVsc191cCwg Ym9vbCByZXF1aXJlX2NvbF9wcml2cywgaW50IGxvY2F0aW9uKQogewogCVJhbmdlVGJsRW50 cnkgKnJ0ZSA9IG5zaXRlbS0+cF9ydGU7CisJQml0bWFwc2V0ICAqcGVyaW9kYXR0cyA9IE5V TEw7CiAJUlRFUGVybWlzc2lvbkluZm8gKnBlcm1pbmZvID0gbnNpdGVtLT5wX3Blcm1pbmZv OwogCUxpc3QJICAgKm5hbWVzLAogCQkJICAgKnZhcnM7CkBAIC0zMjEyLDEyICszMjE0LDIw IEBAIGV4cGFuZE5TSXRlbUF0dHJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUGFyc2VOYW1lc3Bh Y2VJdGVtICpuc2l0ZW0sCiAJCXBlcm1pbmZvLT5yZXF1aXJlZFBlcm1zIHw9IEFDTF9TRUxF Q1Q7CiAJfQogCisJLyogR2V0IFBFUklPRCBjb2x1bW5zIHRvIGV4Y2x1ZGUgKi8KKwlpZiAo cnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTikKKwkJcGVyaW9kYXR0cyA9IGdldF9wZXJp b2RfYXR0bm9zKHJ0ZS0+cmVsaWQpOworCiAJZm9yYm90aChuYW1lLCBuYW1lcywgdmFyLCB2 YXJzKQogCXsKIAkJY2hhcgkgICAqbGFiZWwgPSBzdHJWYWwobGZpcnN0KG5hbWUpKTsKIAkJ VmFyCQkgICAqdmFybm9kZSA9IChWYXIgKikgbGZpcnN0KHZhcik7CiAJCVRhcmdldEVudHJ5 ICp0ZTsKIAorCQkvKiBJZiB0aGlzIGNvbHVtbiBpcyBmcm9tIGEgUEVSSU9ELCBza2lwIGl0 ICovCisJCWlmIChibXNfaXNfbWVtYmVyKHBzdGF0ZS0+cF9uZXh0X3Jlc25vLCBwZXJpb2Rh dHRzKSkKKwkJCQljb250aW51ZTsKKwogCQl0ZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAq KSB2YXJub2RlLAogCQkJCQkJCSAoQXR0ck51bWJlcikgcHN0YXRlLT5wX25leHRfcmVzbm8r KywKIAkJCQkJCQkgbGFiZWwsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFy c2VfdXRpbGNtZC5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRl eCA2NzIzYTc0ZjJmLi5jYmFmZjY5MjM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGls Y21kLmMKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX2NvbnN0cmFp bnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wY2xhc3MuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX29wZXJhdG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19wZXJpb2QuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BnX3N0YXRpc3RpY19leHQuaCIKICNpbmNsdWRlICJjYXRhbG9n L3BnX3R5cGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9jb21tZW50LmgiCkBAIC04MCw2ICs4 MSw3IEBAIHR5cGVkZWYgc3RydWN0CiAJYm9vbAkJaXNmb3JlaWduOwkJLyogdHJ1ZSBpZiBD UkVBVEUvQUxURVIgRk9SRUlHTiBUQUJMRSAqLwogCWJvb2wJCWlzYWx0ZXI7CQkvKiB0cnVl IGlmIGFsdGVyaW5nIGV4aXN0aW5nIHRhYmxlICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8q IENvbHVtbkRlZiBpdGVtcyAqLworCUxpc3QJICAgKnBlcmlvZHM7CQkvKiBQZXJpb2REZWYg aXRlbXMgKi8KIAlMaXN0CSAgICpja2NvbnN0cmFpbnRzOwkvKiBDSEVDSyBjb25zdHJhaW50 cyAqLwogCUxpc3QJICAgKm5uY29uc3RyYWludHM7CS8qIE5PVCBOVUxMIGNvbnN0cmFpbnRz ICovCiAJTGlzdAkgICAqZmtjb25zdHJhaW50czsJLyogRk9SRUlHTiBLRVkgY29uc3RyYWlu dHMgKi8KQEAgLTExMSw2ICsxMTMsOCBAQCB0eXBlZGVmIHN0cnVjdAogCiBzdGF0aWMgdm9p ZCB0cmFuc2Zvcm1Db2x1bW5EZWZpbml0aW9uKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCiAJ CQkJCQkJCQkgIENvbHVtbkRlZiAqY29sdW1uKTsKK3N0YXRpYyB2b2lkIHRyYW5zZm9ybVRh YmxlUGVyaW9kKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsCisJCQkJCQkJCSBQZXJpb2REZWYg KnBlcmlvZCk7CiBzdGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQoQ3JlYXRl U3RtdENvbnRleHQgKmN4dCwKIAkJCQkJCQkJCSBDb25zdHJhaW50ICpjb25zdHJhaW50KTsK IHN0YXRpYyB2b2lkIHRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4 dCAqY3h0LApAQCAtMjQyLDYgKzI0Niw3IEBAIHRyYW5zZm9ybUNyZWF0ZVN0bXQoQ3JlYXRl U3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAJY3h0LmluaFJlbGF0aW9u cyA9IHN0bXQtPmluaFJlbGF0aW9uczsKIAljeHQuaXNhbHRlciA9IGZhbHNlOwogCWN4dC5j b2x1bW5zID0gTklMOworCWN4dC5wZXJpb2RzID0gTklMOwogCWN4dC5ja2NvbnN0cmFpbnRz ID0gTklMOwogCWN4dC5ubmNvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRz ID0gTklMOwpAQCAtMjgyLDYgKzI4NywxMCBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0 ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCQkJCXRyYW5zZm9ybUNv bHVtbkRlZmluaXRpb24oJmN4dCwgKENvbHVtbkRlZiAqKSBlbGVtZW50KTsKIAkJCQlicmVh azsKIAorCQkJY2FzZSBUX1BlcmlvZERlZjoKKwkJCQl0cmFuc2Zvcm1UYWJsZVBlcmlvZCgm Y3h0LCAoUGVyaW9kRGVmICopIGVsZW1lbnQpOworCQkJCWJyZWFrOworCiAJCQljYXNlIFRf Q29uc3RyYWludDoKIAkJCQl0cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQoJmN4dCwgKENvbnN0 cmFpbnQgKikgZWxlbWVudCk7CiAJCQkJYnJlYWs7CkBAIC0zNDksNiArMzU4LDcgQEAgdHJh bnNmb3JtQ3JlYXRlU3RtdChDcmVhdGVTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0 cmluZykKIAkgKiBPdXRwdXQgcmVzdWx0cy4KIAkgKi8KIAlzdG10LT50YWJsZUVsdHMgPSBj eHQuY29sdW1uczsKKwlzdG10LT5wZXJpb2RzID0gY3h0LnBlcmlvZHM7CiAJc3RtdC0+Y29u c3RyYWludHMgPSBjeHQuY2tjb25zdHJhaW50czsKIAlzdG10LT5ubmNvbnN0cmFpbnRzID0g Y3h0Lm5uY29uc3RyYWludHM7CiAKQEAgLTkxNSw2ICs5MjUsMTEzIEBAIHRyYW5zZm9ybUNv bHVtbkRlZmluaXRpb24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1 bW4pCiAJfQogfQogCit2b2lkCit0cmFuc2Zvcm1QZXJpb2RPcHRpb25zKFBlcmlvZERlZiAq cGVyaW9kKQoreworCUxpc3RDZWxsICAgKm9wdGlvbjsKKwlEZWZFbGVtCSAgICpkY29uc3Ry YWludG5hbWUgPSBOVUxMOworCURlZkVsZW0JICAgKmRyYW5nZXR5cGVuYW1lID0gTlVMTDsK KworCWZvcmVhY2gob3B0aW9uLCBwZXJpb2QtPm9wdGlvbnMpCisJeworCQlEZWZFbGVtICAg ICpkZWZlbCA9IChEZWZFbGVtICopIGxmaXJzdChvcHRpb24pOworCisJCWlmIChzdHJjbXAo ZGVmZWwtPmRlZm5hbWUsICJjaGVja19jb25zdHJhaW50X25hbWUiKSA9PSAwKQorCQl7CisJ CQlpZiAoZGNvbnN0cmFpbnRuYW1lKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkgZXJybXNnKCJjb25mbGljdGlu ZyBvciByZWR1bmRhbnQgb3B0aW9ucyIpKSk7CisJCQlkY29uc3RyYWludG5hbWUgPSBkZWZl bDsKKwkJfQorCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJyYW5nZXR5cGUi KSA9PSAwKQorCQl7CisJCQlpZiAoZHJhbmdldHlwZW5hbWUpCisJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCSBlcnJt c2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRpb25zIikpKTsKKwkJCWRyYW5nZXR5 cGVuYW1lID0gZGVmZWw7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkgZXJybXNnKCJvcHRpb24g XCIlc1wiIG5vdCByZWNvZ25pemVkIiwgZGVmZWwtPmRlZm5hbWUpKSk7CisJfQorCisJaWYg KGRjb25zdHJhaW50bmFtZSAhPSBOVUxMKQorCQlwZXJpb2QtPmNvbnN0cmFpbnRuYW1lID0g ZGVmR2V0U3RyaW5nKGRjb25zdHJhaW50bmFtZSk7CisJZWxzZQorCQlwZXJpb2QtPmNvbnN0 cmFpbnRuYW1lID0gTlVMTDsKKworCWlmIChkcmFuZ2V0eXBlbmFtZSAhPSBOVUxMKQorCQlw ZXJpb2QtPnJhbmdldHlwZW5hbWUgPSBkZWZHZXRTdHJpbmcoZHJhbmdldHlwZW5hbWUpOwor CWVsc2UKKwkJcGVyaW9kLT5yYW5nZXR5cGVuYW1lID0gTlVMTDsKK30KKworLyoKKyAqIHRy YW5zZm9ybVRhYmxlUGVyaW9kCisgKgkJdHJhbnNmb3JtIGEgUGVyaW9kRGVmIG5vZGUgd2l0 aGluIENSRUFURSBUQUJMRSBvciBBTFRFUiBUQUJMRQorICoJCVRPRE86IERvZXMgQUxURVIg VEFCTEUgcmVhbGx5IGNhbGwgdXM/PyBJdCBkb2Vzbid0IHNlZW0gbGlrZSBpdCBkb2VzLiBN YXliZSBpdCBzaG91bGQuIERpZCBpdCBpbiBWaWsncyBvcmlnaW5hbCBwYXRjaD8KKyAqLwor c3RhdGljIHZvaWQKK3RyYW5zZm9ybVRhYmxlUGVyaW9kKENyZWF0ZVN0bXRDb250ZXh0ICpj eHQsIFBlcmlvZERlZiAqcGVyaW9kKQoreworCS8vIE9pZAkJCWNvbHR5cGlkOworCS8vIENv bHVtbkRlZiAgKmNvbDsKKwkvLyBMaXN0Q2VsbCAgICpjb2x1bW5zOworCisJaWYgKHN0cmNt cChwZXJpb2QtPnBlcmlvZG5hbWUsICJzeXN0ZW1fdGltZSIpID09IDApCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CisJCQkJCSBlcnJtc2coIlBFUklPRCBGT1IgU1lTVEVNX1RJTUUgaXMgbm90IHN1cHBvcnRl ZCIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKGN4dC0+cHN0YXRlLAorCQkJCQkJCQkJ CXBlcmlvZC0+bG9jYXRpb24pKSk7CisKKwlpZiAoc3RyY21wKHBlcmlvZC0+c3RhcnRjb2xu YW1lLCBwZXJpb2QtPmVuZGNvbG5hbWUpID09IDApCisJCWVyZXBvcnQoRVJST1IsIChlcnJt c2coImNvbHVtbiBcIiVzXCIgY2FuJ3QgYmUgdGhlIHN0YXJ0IGFuZCBlbmQgY29sdW1uIGZv ciBwZXJpb2QgXCIlc1wiIiwKKwkJCQkJICAgIHBlcmlvZC0+c3RhcnRjb2xuYW1lLCBwZXJp b2QtPnBlcmlvZG5hbWUpKSk7CisKKwkvKgorCSAqIERldGVybWluZSB0aGUgY29sdW1uIGlu Zm8gYW5kIHJhbmdlIHR5cGUgc28gdGhhdCB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzCisJ ICoga25vd3MgaG93IHRvIGNyZWF0ZSBQUklNQVJZIEtFWS9VTklRVUUgY29uc3RyYWludHMg dXNpbmcgdGhpcyBQRVJJT0QuCisJICovCisJdHJhbnNmb3JtUGVyaW9kT3B0aW9ucyhwZXJp b2QpOworCisJLyoKKwkgKiBGaW5kIGEgc3VpdGFibGUgcmFuZ2UgdHlwZSBmb3Igb3BlcmF0 aW9ucyBpbnZvbHZpbmcgdGhpcyBwZXJpb2QuCisJICogVXNlIHRoZSByYW5nZXR5cGUgb3B0 aW9uIGlmIHByb3ZpZGVkLCBvdGhlcndpc2UgdHJ5IHRvIGZpbmQgYQorCSAqIG5vbi1hbWJp Z3VvdXMgZXhpc3RpbmcgdHlwZS4KKwkgKi8KKworI2lmZGVmIGFzZHNkZmEKKwkvKiBGaXJz dCBmaW5kIG91dCB0aGUgdHlwZSBvZiB0aGUgcGVyaW9kJ3MgY29sdW1ucyAqLworCS8vIFRP RE86IEknbSBkb2luZyB0aGlzIGluIERlZmluZVJlbGF0aW9uIG5vdywKKwkvLyB3aGljaCBz ZWVtcyBsaWtlIGEgYmV0dGVyIHBsYWNlIHNpbmNlIGl0IGtub3dzIGFib3V0IGluaGVyaXRl ZCBjb2x1bW5zLgorCXBlcmlvZC0+Y29sdHlwaWQgPSBJbnZhbGlkT2lkOworCXBlcmlvZC0+ cm5ndHlwaWQgPSBJbnZhbGlkT2lkOworCWZvcmVhY2ggKGNvbHVtbnMsIGN4dC0+Y29sdW1u cykKKwl7CisJCWNvbCA9IChDb2x1bW5EZWYgKikgbGZpcnN0KGNvbHVtbnMpOworCQlpZiAo c3RyY21wKGNvbC0+Y29sbmFtZSwgcGVyaW9kLT5zdGFydGNvbG5hbWUpID09IDApCisJCXsK KwkJCWNvbHR5cGlkID0gdHlwZW5hbWVUeXBlSWQoY3h0LT5wc3RhdGUsIGNvbC0+dHlwZU5h bWUpOworCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKGNvbHR5cGlkID09IEludmFsaWRPaWQp CisJCWVyZXBvcnQoRVJST1IsIChlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24g XCIlc1wiIGRvZXMgbm90IGV4aXN0IiwKKwkJCQkJCXBlcmlvZC0+c3RhcnRjb2xuYW1lLCBj eHQtPnJlbGF0aW9uLT5yZWxuYW1lKSkpOworCisJcGVyaW9kLT5jb2x0eXBpZCA9IGNvbHR5 cGlkOworCisJLyogTm93IG1ha2Ugc3VyZSBpdCBtYXRjaGVzIHJhbmdldHlwZW5hbWUgb3Ig d2UgY2FuIGZpbmQgYSBtYXRjaGluZyByYW5nZSAqLworCXBlcmlvZC0+cm5ndHlwaWQgPSBj aG9vc2VfcmFuZ2V0eXBlX2Zvcl9wZXJpb2QocGVyaW9kKTsKKyNlbmRpZgorCisJY3h0LT5w ZXJpb2RzID0gbGFwcGVuZChjeHQtPnBlcmlvZHMsIHBlcmlvZCk7Cit9CisKIC8qCiAgKiB0 cmFuc2Zvcm1UYWJsZUNvbnN0cmFpbnQKICAqCQl0cmFuc2Zvcm0gYSBDb25zdHJhaW50IG5v ZGUgd2l0aGluIENSRUFURSBUQUJMRSBvciBBTFRFUiBUQUJMRQpAQCAtMTAwNSw2ICsxMTIy LDcgQEAgdHJhbnNmb3JtVGFibGVMaWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQs IFRhYmxlTGlrZUNsYXVzZSAqdGFibGVfbGlrZV9jbGEKIAlBdHRyTnVtYmVyCXBhcmVudF9h dHRubzsKIAlSZWxhdGlvbglyZWxhdGlvbjsKIAlUdXBsZURlc2MJdHVwbGVEZXNjOworCUJp dG1hcHNldCAgKnBlcmlvZGF0dHM7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAljaGFyCSAg ICpjb21tZW50OwogCVBhcnNlQ2FsbGJhY2tTdGF0ZSBwY2JzdGF0ZTsKQEAgLTEwNTcsNiAr MTE3NSw3IEBAIHRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZShDcmVhdGVTdG10Q29udGV4dCAq Y3h0LCBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhCiAJfQogCiAJdHVwbGVEZXNj ID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJcGVyaW9kYXR0cyA9IGdldF9wZXJp b2RfYXR0bm9zKFJlbGF0aW9uR2V0UmVsaWQocmVsYXRpb24pKTsKIAogCS8qCiAJICogSW5z ZXJ0IHRoZSBjb3BpZWQgYXR0cmlidXRlcyBpbnRvIHRoZSBjeHQgZm9yIHRoZSBuZXcgdGFi bGUgZGVmaW5pdGlvbi4KQEAgLTEwNjYsMTAgKzExODUsMTggQEAgdHJhbnNmb3JtVGFibGVM aWtlQ2xhdXNlKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQsIFRhYmxlTGlrZUNsYXVzZSAqdGFi bGVfbGlrZV9jbGEKIAlmb3IgKHBhcmVudF9hdHRubyA9IDE7IHBhcmVudF9hdHRubyA8PSB0 dXBsZURlc2MtPm5hdHRzOwogCQkgcGFyZW50X2F0dG5vKyspCiAJewotCQlGb3JtX3BnX2F0 dHJpYnV0ZSBhdHRyaWJ1dGUgPSBUdXBsZURlc2NBdHRyKHR1cGxlRGVzYywKLQkJCQkJCQkJ CQkJCQlwYXJlbnRfYXR0bm8gLSAxKTsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0cmlidXRl OwogCQlDb2x1bW5EZWYgICpkZWY7CiAKKwkJLyoKKwkJICogSWYgdGhpcyBjb2x1bW4gaXMg ZnJvbSBhIFBFUklPRCwgc2tpcCBpdAorCQkgKiAoc2luY2UgTElLRSBuZXZlciBjb3BpZXMg UEVSSU9EcykuCisJCSAqLworCQlpZiAoYm1zX2lzX21lbWJlcihwYXJlbnRfYXR0bm8sIHBl cmlvZGF0dHMpKQorCQkJY29udGludWU7CisKKwkJYXR0cmlidXRlID0gVHVwbGVEZXNjQXR0 cih0dXBsZURlc2MsIHBhcmVudF9hdHRubyAtIDEpOworCiAJCS8qCiAJCSAqIElnbm9yZSBk cm9wcGVkIGNvbHVtbnMgaW4gdGhlIHBhcmVudC4KIAkJICovCkBAIC0xNjc2LDYgKzE4MDMs NyBAQCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRp b24gc291cmNlX2lkeCwKIAlPaWQJCQlrZXljb2x0eXBlOwogCURhdHVtCQlkYXR1bTsKIAli b29sCQlpc251bGw7CisJUGVyaW9kRGVmICAqcGVyaW9kOwogCiAJaWYgKGNvbnN0cmFpbnRP aWQpCiAJCSpjb25zdHJhaW50T2lkID0gSW52YWxpZE9pZDsKQEAgLTE3MzMsNiArMTg2MSwx MSBAQCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRp b24gc291cmNlX2lkeCwKIAlpbmRleC0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOwogCWluZGV4 LT5yZXNldF9kZWZhdWx0X3RibHNwYyA9IGZhbHNlOwogCisJLyogQ29weSB0aGUgcGVyaW9k ICovCisJcGVyaW9kID0gbWFrZU5vZGUoUGVyaW9kRGVmKTsKKwlwZXJpb2QtPm9pZCA9IGlk eHJlYy0+aW5kcGVyaW9kOworCWluZGV4LT5wZXJpb2QgPSBwZXJpb2Q7CisKIAkvKgogCSAq IFdlIGRvbid0IHRyeSB0byBwcmVzZXJ2ZSB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGluZGV4 OyBpbnN0ZWFkLCBqdXN0CiAJICogbGV0IERlZmluZUluZGV4KCkgY2hvb3NlIGEgcmVhc29u YWJsZSBuYW1lLiAgKElmIHdlIHRyaWVkIHRvIHByZXNlcnZlCkBAIC0zMTEzLDYgKzMyNDYs MTAgQEAgdHJhbnNmb3JtSW5kZXhTdG10KE9pZCByZWxpZCwgSW5kZXhTdG10ICpzdG10LCBj b25zdCBjaGFyICpxdWVyeVN0cmluZykKIAkJfQogCX0KIAorCS8qIHRha2UgY2FyZSBvZiB0 aGUgcGVyaW9kICovCisJaWYgKHN0bXQtPnBlcmlvZCkKKwkJc3RtdC0+cGVyaW9kLT5vaWQg PSBnZXRfcGVyaW9kX29pZChyZWxpZCwgc3RtdC0+cGVyaW9kLT5wZXJpb2RuYW1lLCBmYWxz ZSk7CisKIAkvKgogCSAqIENoZWNrIHRoYXQgb25seSB0aGUgYmFzZSByZWwgaXMgbWVudGlv bmVkLiAgKFRoaXMgc2hvdWxkIGJlIGRlYWQgY29kZQogCSAqIG5vdyB0aGF0IGFkZF9taXNz aW5nX2Zyb20gaXMgaGlzdG9yeS4pCkBAIC0zNTcwLDYgKzM3MDcsNyBAQCB0cmFuc2Zvcm1B bHRlclRhYmxlU3RtdChPaWQgcmVsaWQsIEFsdGVyVGFibGVTdG10ICpzdG10LAogCWN4dC5p bmhSZWxhdGlvbnMgPSBOSUw7CiAJY3h0LmlzYWx0ZXIgPSB0cnVlOwogCWN4dC5jb2x1bW5z ID0gTklMOworCWN4dC5wZXJpb2RzID0gTklMOwogCWN4dC5ja2NvbnN0cmFpbnRzID0gTklM OwogCWN4dC5ubmNvbnN0cmFpbnRzID0gTklMOwogCWN4dC5ma2NvbnN0cmFpbnRzID0gTklM OwpAQCAtMzYzMiw2ICszNzcwLDE1IEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCBy ZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJCQkgKGludCkgbm9kZVRhZyhjbWQt PmRlZikpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQl7CisJ CQkJCW5ld2NtZHMgPSBsYXBwZW5kKG5ld2NtZHMsIGNtZCk7CisJCQkJCS8vIFdoeSBub3Qg Y2FsbCB0cmFuc2Zvcm1UYWJsZVBlcmlvZCBoZXJlPworCQkJCQkvLyBBaCBiZWNhdXNlIGl0 IGxvb2tzIGF0IGN4dC0+Y29sdW1ucworCQkJCQkvLyBhbmQgaW4gYW4gQUxURVIgc3RhdGVt ZW50IHRoZSBjb2x1bW5zIG1pZ2h0IGFscmVhZHkgZXhpc3QgKG9yIG5vdCkuCisJCQkJCWJy ZWFrOworCQkJCX0KKwogCQkJY2FzZSBBVF9BbHRlckNvbHVtblR5cGU6CiAJCQkJewogCQkJ CQlDb2x1bW5EZWYgICpkZWYgPSBjYXN0Tm9kZShDb2x1bW5EZWYsIGNtZC0+ZGVmKTsKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKaW5kZXggMzkxNzYyZjMwOC4uNGMyOTY1 YzE1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5c2NhY2hlLmMKQEAgLTMwLDYgKzMw LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNh dGFsb2cvcGdfb3BjbGFzcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BlcmF0b3IuaCIK KyNpbmNsdWRlICJjYXRhbG9nL3BnX3BlcmlvZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdf cHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfcmFuZ2UuaCIKICNpbmNsdWRlICJjYXRh bG9nL3BnX3N0YXRpc3RpYy5oIgpAQCAtMTAyMSw2ICsxMDIyLDY4IEBAIGdldF9hdHRvcHRp b25zKE9pZCByZWxpZCwgaW50MTYgYXR0bnVtKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8q CQkJCS0tLS0tLS0tLS0gUEdfUEVSSU9EIENBQ0hFIC0tLS0tLS0tLS0JCQkJICovCisKKy8q CisgKiBnZXRfcGVyaW9kbmFtZSAtIGdpdmVuIGl0cyBPSUQsIGxvb2sgdXAgYSBwZXJpb2QK KyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZhbHNlLCB0aHJvdyBhbiBlcnJvciBpZiB0aGUg cGVyaW9kIGlzIG5vdCBmb3VuZC4KKyAqIElmIHRydWUsIGp1c3QgcmV0dXJuIEludmFsaWRP aWQuCisgKi8KK2NoYXIgKgorZ2V0X3BlcmlvZG5hbWUoT2lkIHBlcmlvZGlkLCBib29sIG1p c3Npbmdfb2spCit7CisJSGVhcFR1cGxlCXRwOworCisJdHAgPSBTZWFyY2hTeXNDYWNoZTEo UEVSSU9ET0lELAorCQkJCQkJIE9iamVjdElkR2V0RGF0dW0ocGVyaW9kaWQpKTsKKwlpZiAo SGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBwZXJpb2RfdHVw ID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHApOworCQljaGFyCSAgICpyZXN1bHQ7 CisKKwkJcmVzdWx0ID0gcHN0cmR1cChOYW1lU3RyKHBlcmlvZF90dXAtPnBlcm5hbWUpKTsK KwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlpZiAo IW1pc3Npbmdfb2spCisJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBw ZXJpb2QgJWQiLAorCQkJIHBlcmlvZGlkKTsKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAq IGdldF9wZXJpb2Rfb2lkIC0gZ2V0cyBpdHMgcmVsYXRpb24gYW5kIG5hbWUsIGxvb2sgdXAg YSBwZXJpb2QKKyAqCisgKiBJZiBtaXNzaW5nX29rIGlzIGZhbHNlLCB0aHJvdyBhbiBlcnJv ciBpZiB0aGUgY2FzdCBpcyBub3QgZm91bmQuICBJZgorICogdHJ1ZSwganVzdCByZXR1cm4g SW52YWxpZE9pZC4KKyAqLworT2lkCitnZXRfcGVyaW9kX29pZChPaWQgcmVsaWQsIGNvbnN0 IGNoYXIgKnBlcmlvZG5hbWUsIGJvb2wgbWlzc2luZ19vaykKK3sKKwlIZWFwVHVwbGUJdHA7 CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMihQRVJJT0ROQU1FLAorCQkJCQkJIE9iamVjdElk R2V0RGF0dW0ocmVsaWQpLAorCQkJCQkJIFBvaW50ZXJHZXREYXR1bShwZXJpb2RuYW1lKSk7 CisKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0cCkpCisJeworCQlGb3JtX3BnX3BlcmlvZCBw ZXJpb2RfdHVwID0gKEZvcm1fcGdfcGVyaW9kKSBHRVRTVFJVQ1QodHApOworCQlPaWQgcmVz dWx0OworCisJCXJlc3VsdCA9IHBlcmlvZF90dXAtPm9pZDsKKwkJUmVsZWFzZVN5c0NhY2hl KHRwKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlpZiAoIW1pc3Npbmdfb2spCisJCWVs b2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVkIGZvciBwZXJpb2QgJXMiLAorCQkJIHBl cmlvZG5hbWUpOworCXJldHVybiBJbnZhbGlkT2lkOworfQorCiAvKgkJCQktLS0tLS0tLS0t IFBHX0NBU1QgQ0FDSEUgLS0tLS0tLS0tLQkJCQkJICovCiAKIC8qCkBAIC0zNTMyLDYgKzM1 OTUsMzAgQEAgZ2V0X211bHRpcmFuZ2VfcmFuZ2UoT2lkIG11bHRpcmFuZ2VPaWQpCiAJCXJl dHVybiBJbnZhbGlkT2lkOwogfQogCitPaWQKK2dldF9zdWJ0eXBlX3JhbmdlKE9pZCBzdWJ0 eXBlT2lkKQoreworCUNhdENMaXN0ICpjYXRsaXN0OworCU9pZAlyZXN1bHQgPSBJbnZhbGlk T2lkOworCisJY2F0bGlzdCA9IFNlYXJjaFN5c0NhY2hlTGlzdDEoUkFOR0VTVUJUWVBFLCBP YmplY3RJZEdldERhdHVtKHN1YnR5cGVPaWQpKTsKKworCWlmIChjYXRsaXN0LT5uX21lbWJl cnMgPT0gMSkKKwl7CisJCUhlYXBUdXBsZQl0dXBsZSA9ICZjYXRsaXN0LT5tZW1iZXJzWzBd LT50dXBsZTsKKwkJRm9ybV9wZ19yYW5nZSBybmd0dXAgPSAoRm9ybV9wZ19yYW5nZSkgR0VU U1RSVUNUKHR1cGxlKTsKKwkJcmVzdWx0ID0gcm5ndHVwLT5ybmd0eXBpZDsKKwkJUmVsZWFz ZUNhdENhY2hlTGlzdChjYXRsaXN0KTsKKwl9CisJZWxzZSBpZiAoY2F0bGlzdC0+bl9tZW1i ZXJzID4gMSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVU RVJNSU5BVEVfREFUQVRZUEUpLAorCQkJCSBlcnJtc2coImFtYmlndW91cyByYW5nZSBmb3Ig dHlwZSAlcyIsCisJCQkJCQlmb3JtYXRfdHlwZV9iZShzdWJ0eXBlT2lkKSkpKTsKKworCXJl dHVybiByZXN1bHQ7Cit9CisKIC8qCQkJCS0tLS0tLS0tLS0gUEdfSU5ERVggQ0FDSEUgLS0t LS0tLS0tLQkJCQkgKi8KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3N5c2NhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9zeXNjYWNoZS5jCmlu ZGV4IDhkYmRhMDAyNGYuLjQ0ZTYzNmU1YmUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL3N5c2NhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvc3lz Y2FjaGUuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfb3BmYW1p bHkuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3BhcmFtZXRlcl9hY2wuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX3BhcnRpdGlvbmVkX3RhYmxlLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9w Z19wZXJpb2QuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJj YXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNh dGlvbl9uYW1lc3BhY2UuaCIKQEAgLTQyMiw2ICs0MjMsMTkgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCUtFWShBbnVtX3BnX3BhcnRpdGlv bmVkX3RhYmxlX3BhcnRyZWxpZCksCiAJCTMyCiAJfSwKKwlbUEVSSU9ETkFNRV0gPSB7CisJ CVBlcmlvZFJlbGF0aW9uSWQsCisJCVBlcmlvZFJlbGlkTmFtZUluZGV4SWQsCisJCUtFWShB bnVtX3BnX3BlcmlvZF9wZXJyZWxpZCwKKwkJCUFudW1fcGdfcGVyaW9kX3Blcm5hbWUpLAor CQkzMgorCX0sCisJW1BFUklPRE9JRF0gPSB7CisJCVBlcmlvZFJlbGF0aW9uSWQsCisJCVBl cmlvZE9iamVjdEluZGV4SWQsCisJCUtFWShBbnVtX3BnX3BlcmlvZF9vaWQpLAorCQkzMgor CX0sCiAJW1BST0NOQU1FQVJHU05TUF0gPSB7CiAJCVByb2NlZHVyZVJlbGF0aW9uSWQsCiAJ CVByb2NlZHVyZU5hbWVBcmdzTnNwSW5kZXhJZCwKQEAgLTQ4MCw2ICs0OTQsMTMgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBjYWNoZWRlc2MgY2FjaGVpbmZvW10gPSB7CiAJCUtFWShBbnVt X3BnX3JhbmdlX3JuZ211bHRpdHlwaWQpLAogCQk0CiAJfSwKKwlbUkFOR0VTVUJUWVBFXSA9 IHsKKwkJUmFuZ2VSZWxhdGlvbklkLAorCQlSYW5nZVN1YlR5cGlkVHlwaWRJbmRleElkLAor CQlLRVkoQW51bV9wZ19yYW5nZV9ybmdzdWJ0eXBlLAorCQkJQW51bV9wZ19yYW5nZV9ybmd0 eXBpZCksCisJCTQKKwl9LAogCVtSQU5HRVRZUEVdID0gewogCQlSYW5nZVJlbGF0aW9uSWQs CiAJCVJhbmdlVHlwaWRJbmRleElkLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3Bn X2JhY2t1cF9hcmNoaXZlci5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2JhY2t1cF9hcmNoaXZl ci5jCmluZGV4IDM5ZWJjZmVjMzIuLjE5MWViYTE5OTAgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2FyY2hpdmVyLmMKQEAgLTM1MTcsNiArMzUxNyw3IEBAIF9nZXRPYmplY3REZXNj cmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IFRvY0VudHJ5ICp0ZSkKIAkJCSBzdHJj bXAodHlwZSwgIkRBVEFCQVNFIFBST1BFUlRJRVMiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5 cGUsICJERUZBVUxUIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiRksgQ09OU1RSQUlO VCIpID09IDAgfHwKKwkJCSBzdHJjbXAodHlwZSwgIlBFUklPRCIpID09IDAgfHwKIAkJCSBz dHJjbXAodHlwZSwgIklOREVYIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiUlVMRSIp ID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlRSSUdHRVIiKSA9PSAwIHx8CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwppbmRleCA4ZmQ1MWU5ZjlmLi42MDc2YTc5NTJkIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAg LTYzMjUsNiArNjMyNSw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRh YmxlcykKIAlpbnQJCQlpX3JlbHR5cGU7CiAJaW50CQkJaV9yZWxvd25lcjsKIAlpbnQJCQlp X3JlbGNoZWNrczsKKwlpbnQJCQlpX25wZXJpb2Q7CiAJaW50CQkJaV9yZWxoYXNpbmRleDsK IAlpbnQJCQlpX3JlbGhhc3J1bGVzOwogCWludAkJCWlfcmVscGFnZXM7CkBAIC02NDAyLDYg KzY0MDMsMTQgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaGFzb2lkcywg Iik7CiAKKwkvKiBJbiBQRzE2IHVwd2FyZHMgd2UgaGF2ZSBQRVJJT0RzLiAqLworCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCisJCQkJCQkJICIoU0VMRUNUIGNvdW50KCopIEZST00gcGdfcGVyaW9kIFdIRVJF IHBlcnJlbGlkID0gYy5vaWQpIEFTIG5wZXJpb2RzLCAiKTsKKwllbHNlCisJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiMCBBUyBucGVyaW9kcywgIik7CisKIAlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSA5MDMwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksCiAJCQkJCQkJICJjLnJlbGlzcG9wdWxhdGVkLCAiKTsKQEAgLTY1MzksNiAr NjU0OCw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAlp X3JlbHR5cGUgPSBQUWZudW1iZXIocmVzLCAicmVsdHlwZSIpOwogCWlfcmVsb3duZXIgPSBQ UWZudW1iZXIocmVzLCAicmVsb3duZXIiKTsKIAlpX3JlbGNoZWNrcyA9IFBRZm51bWJlcihy ZXMsICJyZWxjaGVja3MiKTsKKwlpX25wZXJpb2QgPSBQUWZudW1iZXIocmVzLCAibnBlcmlv ZHMiKTsKIAlpX3JlbGhhc2luZGV4ID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc2luZGV4Iik7 CiAJaV9yZWxoYXNydWxlcyA9IFBRZm51bWJlcihyZXMsICJyZWxoYXNydWxlcyIpOwogCWlf cmVscGFnZXMgPSBQUWZudW1iZXIocmVzLCAicmVscGFnZXMiKTsKQEAgLTY2MjIsNiArNjYz Miw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJfQog CQl0YmxpbmZvW2ldLnJlbHRhYmxlc3BhY2UgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMs IGksIGlfcmVsdGFibGVzcGFjZSkpOwogCQl0YmxpbmZvW2ldLmhhc29pZHMgPSAoc3RyY21w KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbGhhc29pZHMpLCAidCIpID09IDApOworCQl0Ymxp bmZvW2ldLm5wZXJpb2QgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBpLCBpX25wZXJpb2QpKTsK IAkJdGJsaW5mb1tpXS5oYXN0cmlnZ2VycyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGks IGlfcmVsaGFzdHJpZ2dlcnMpLCAidCIpID09IDApOwogCQl0YmxpbmZvW2ldLnJlbHBlcnNp c3RlbmNlID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxwZXJzaXN0ZW5jZSkpOwogCQl0 YmxpbmZvW2ldLnJlbGlzcG9wdWxhdGVkID0gKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwg aV9yZWxpc3BvcHVsYXRlZCksICJ0IikgPT0gMCk7CkBAIC04MzU2LDcgKzgzNjcsNyBAQCBn ZXRUcmFuc2Zvcm1zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVHJhbnNmb3JtcykKIC8qCiAg KiBnZXRUYWJsZUF0dHJzIC0KICAqCSAgZm9yIGVhY2ggaW50ZXJlc3RpbmcgdGFibGUsIHJl YWQgaW5mbyBhYm91dCBpdHMgYXR0cmlidXRlcwotICoJICAobmFtZXMsIHR5cGVzLCBkZWZh dWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMsIGV0YykKKyAqCSAgKG5hbWVzLCB0eXBl cywgZGVmYXVsdCB2YWx1ZXMsIENIRUNLIGNvbnN0cmFpbnRzLCBQRVJJT0RzLCBldGMpCiAg KgogICoJbW9kaWZpZXMgdGJsaW5mbwogICovCkBAIC04NDA5LDYgKzg0MjAsOCBAQCBnZXRU YWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcykKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bVRhYmxlczsgaSsrKQogCXsKIAkJVGFi bGVJbmZvICAqdGJpbmZvID0gJnRibGluZm9baV07CisJCWludAkJCW5kdW1wYWJsZWNoZWNr czsJLyogbnVtYmVyIG9mIENIRUNLIGNvbnN0cmFpbnRzIHRoYXQgZG8KKwkJCQkJCQkJCQkg ICBub3QgYmVsb25nIHRvIGEgcGVyaW9kICovCiAKIAkJLyogRG9uJ3QgYm90aGVyIHRvIGNv bGxlY3QgaW5mbyBmb3Igc2VxdWVuY2VzICovCiAJCWlmICh0YmluZm8tPnJlbGtpbmQgPT0g UkVMS0lORF9TRVFVRU5DRSkKQEAgLTg0MjMsNyArODQzNiw4IEBAIGdldFRhYmxlQXR0cnMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJ YXBwZW5kUFFFeHBCdWZmZXJDaGFyKHRibG9pZHMsICcsJyk7CiAJCWFwcGVuZFBRRXhwQnVm ZmVyKHRibG9pZHMsICIldSIsIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOwogCi0JCWlmICh0 YmluZm8tPm5jaGVjayA+IDApCisJCW5kdW1wYWJsZWNoZWNrcyA9IHRiaW5mby0+bmNoZWNr IC0gdGJpbmZvLT5ucGVyaW9kOworCQlpZiAobmR1bXBhYmxlY2hlY2tzID4gMCkKIAkJewog CQkJLyogQWxzbyBtYWtlIGEgbGlzdCBvZiB0aGUgb25lcyB3aXRoIGNoZWNrIGNvbnN0cmFp bnRzICovCiAJCQlpZiAoY2hlY2tvaWRzLT5sZW4gPiAxKSAvKiBkbyB3ZSBoYXZlIG1vcmUg dGhhbiB0aGUgJ3snPyAqLwpAQCAtODk1OSwxNSArODk3MywzNiBAQCBnZXRUYWJsZUF0dHJz KEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJ cGdfbG9nX2luZm8oImZpbmRpbmcgdGFibGUgY2hlY2sgY29uc3RyYWludHMiKTsKIAogCQly ZXNldFBRRXhwQnVmZmVyKHEpOwotCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAotCQkJCQkJICAi U0VMRUNUIGMudGFibGVvaWQsIGMub2lkLCBjb25yZWxpZCwgY29ubmFtZSwgIgotCQkJCQkJ ICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3RyYWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAi Ci0JCQkJCQkgICJjb25pc2xvY2FsLCBjb252YWxpZGF0ZWQgIgotCQkJCQkJICAiRlJPTSB1 bm5lc3QoJyVzJzo6cGdfY2F0YWxvZy5vaWRbXSkgQVMgc3JjKHRibG9pZClcbiIKLQkJCQkJ CSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBj LmNvbnJlbGlkKVxuIgotCQkJCQkJICAiV0hFUkUgY29udHlwZSA9ICdjJyAiCi0JCQkJCQkg ICJPUkRFUiBCWSBjLmNvbnJlbGlkLCBjLmNvbm5hbWUiLAotCQkJCQkJICBjaGVja29pZHMt PmRhdGEpOworCQlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNjAwMDApCisJCXsKKwkJ CS8qCisJCQkgKiBQRVJJT0RzIHdlcmUgYWRkZWQgaW4gdjE3IGFuZCB3ZSBkb24ndCBkdW1w IENIRUNLCisJCQkgKiBjb25zdHJhaW50cyBmb3IgdGhlbS4KKwkJCSAqLworCQkJYXBwZW5k UFFFeHBCdWZmZXIocSwKKwkJCQkJCQkgICJTRUxFQ1QgYy50YWJsZW9pZCwgYy5vaWQsIGNv bnJlbGlkLCBjb25uYW1lLCAiCisJCQkJCQkJICAicGdfY2F0YWxvZy5wZ19nZXRfY29uc3Ry YWludGRlZihjLm9pZCkgQVMgY29uc3JjLCAiCisJCQkJCQkJICAiY29uaXNsb2NhbCwgY29u dmFsaWRhdGVkICIKKwkJCQkJCQkgICJGUk9NIHVubmVzdCgnJXMnOjpwZ19jYXRhbG9nLm9p ZFtdKSBBUyBzcmModGJsb2lkKVxuIgorCQkJCQkJCSAgIkpPSU4gcGdfY2F0YWxvZy5wZ19j b25zdHJhaW50IGMgT04gKHNyYy50YmxvaWQgPSBjLmNvbnJlbGlkKVxuIgorCQkJCQkJCSAg IldIRVJFIGNvbnR5cGUgPSAnYycgIgorCQkJCQkJCSAgIiAgIEFORCBOT1QgRVhJU1RTIChT RUxFQ1QgRlJPTSBwZ19wZXJpb2QgIgorCQkJCQkJCSAgIiAgICAgICAgICAgICAgICAgICBX SEVSRSAocGVycmVsaWQsIHBlcmNvbnN0cmFpbnQpID0gKGNvbnJlbGlkLCBjLm9pZCkpICIK KwkJCQkJCQkgICJPUkRFUiBCWSBjLmNvbnJlbGlkLCBjLmNvbm5hbWUiLAorCQkJCQkJCSAg Y2hlY2tvaWRzLT5kYXRhKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWFwcGVuZFBRRXhwQnVm ZmVyKHEsCisJCQkJCQkJICAiU0VMRUNUIGMudGFibGVvaWQsIGMub2lkLCBjb25yZWxpZCwg Y29ubmFtZSwgIgorCQkJCQkJCSAgInBnX2NhdGFsb2cucGdfZ2V0X2NvbnN0cmFpbnRkZWYo Yy5vaWQpIEFTIGNvbnNyYywgIgorCQkJCQkJCSAgImNvbmlzbG9jYWwsIGNvbnZhbGlkYXRl ZCAiCisJCQkJCQkJICAiRlJPTSB1bm5lc3QoJyVzJzo6cGdfY2F0YWxvZy5vaWRbXSkgQVMg c3JjKHRibG9pZClcbiIKKwkJCQkJCQkgICJKT0lOIHBnX2NhdGFsb2cucGdfY29uc3RyYWlu dCBjIE9OIChzcmMudGJsb2lkID0gYy5jb25yZWxpZClcbiIKKwkJCQkJCQkgICJXSEVSRSBj b250eXBlID0gJ2MnICIKKwkJCQkJCQkgICJPUkRFUiBCWSBjLmNvbnJlbGlkLCBjLmNvbm5h bWUiLAorCQkJCQkJCSAgY2hlY2tvaWRzLT5kYXRhKTsKKwkJfQogCiAJCXJlcyA9IEV4ZWN1 dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwogCkBAIC04OTg5 LDYgKzkwMjQsNyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAq dGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCU9pZAkJCWNvbnJlbGlkID0gYXRvb2lkKFBR Z2V0dmFsdWUocmVzLCBqLCBpX2NvbnJlbGlkKSk7CiAJCQlUYWJsZUluZm8gICp0YmluZm8g PSBOVUxMOwogCQkJaW50CQkJbnVtY29uczsKKwkJCWludAkJCW5kdW1wYWJsZWNoZWNrczsK IAogCQkJLyogQ291bnQgcm93cyBmb3IgdGhpcyB0YWJsZSAqLwogCQkJZm9yIChudW1jb25z ID0gMTsgbnVtY29ucyA8IG51bUNvbnN0cnMgLSBqOyBudW1jb25zKyspCkBAIC05MDA4LDEy ICs5MDQ0LDEzIEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0 YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJaWYgKGN1cnRibGluZHggPj0gbnVtVGFibGVz KQogCQkJCXBnX2ZhdGFsKCJ1bnJlY29nbml6ZWQgdGFibGUgT0lEICV1IiwgY29ucmVsaWQp OwogCi0JCQlpZiAobnVtY29ucyAhPSB0YmluZm8tPm5jaGVjaykKKwkJCW5kdW1wYWJsZWNo ZWNrcyA9IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOworCQkJaWYgKG51bWNv bnMgIT0gbmR1bXBhYmxlY2hlY2tzKQogCQkJewogCQkJCXBnX2xvZ19lcnJvcihuZ2V0dGV4 dCgiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZv dW5kICVkIiwKIAkJCQkJCQkJCSAgImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnRzIG9u IHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAotCQkJCQkJCQkJICB0YmluZm8tPm5jaGVj ayksCi0JCQkJCQkJIHRiaW5mby0+bmNoZWNrLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29u cyk7CisJCQkJCQkJCQkgIG5kdW1wYWJsZWNoZWNrcyksCisJCQkJCQkJIG5kdW1wYWJsZWNo ZWNrcywgdGJpbmZvLT5kb2JqLm5hbWUsIG51bWNvbnMpOwogCQkJCXBnX2xvZ19lcnJvcl9o aW50KCJUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4iKTsKIAkJCQll eGl0X25pY2VseSgxKTsKIAkJCX0KQEAgLTkwNzIsNiArOTEwOSw3OSBAQCBnZXRUYWJsZUF0 dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRhYmxlcykK IAkJUFFjbGVhcihyZXMpOwogCX0KIAorCWZvciAoaW50IGkgPSAwOyBpIDwgbnVtVGFibGVz OyBpKyspCisJeworCQlUYWJsZUluZm8gICp0YmluZm8gPSAmdGJsaW5mb1tpXTsKKworCQkv KgorCQkgKiBHZXQgaW5mbyBhYm91dCBQRVJJT0QgZGVmaW5pdGlvbnMKKwkJICovCisJCWlm ICh0YmluZm8tPm5wZXJpb2QgPiAwKQorCQl7CisJCQlQZXJpb2RJbmZvICpwZXJpb2RzOwor CQkJaW50CQkJbnVtUGVyaW9kczsKKwkJCWludAkJCWo7CisKKwkJCS8qIFdlIHNob3VsZG4n dCBoYXZlIGFueSBwZXJpb2RzIGJlZm9yZSB2MTcgKi8KKwkJCUFzc2VydChmb3V0LT5yZW1v dGVWZXJzaW9uID49IDE2MDAwMCk7CisKKwkJCXBnX2xvZ19pbmZvKCJmaW5kaW5nIHBlcmlv ZHMgZm9yIHRhYmxlIFwiJXMuJXNcIiIsCisJCQkJCQl0YmluZm8tPmRvYmoubmFtZXNwYWNl LT5kb2JqLm5hbWUsCisJCQkJCQl0YmluZm8tPmRvYmoubmFtZSk7CisKKwkJCXJlc2V0UFFF eHBCdWZmZXIocSk7CisJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLAorCQkJCSJTRUxFQ1QgcC50 YWJsZW9pZCwgcC5vaWQsIHAucGVybmFtZSwgIgorCQkJCSIgICAgICAgc2EuYXR0bmFtZSBB UyBwZXJzdGFydCwgZWEuYXR0bmFtZSBBUyBwZXJlbmQsICIKKwkJCQkiICAgICAgIHIudHlw bmFtZSBBUyBybmd0eXBlLCAiCisJCQkJIiAgICAgICBjLmNvbm5hbWUgQVMgY29ubmFtZSAi CisJCQkJIkZST00gcGdfY2F0YWxvZy5wZ19wZXJpb2QgQVMgcCAiCisJCQkJIkpPSU4gcGdf Y2F0YWxvZy5wZ19hdHRyaWJ1dGUgQVMgc2EgT04gKHNhLmF0dHJlbGlkLCBzYS5hdHRudW0p ID0gKHAucGVycmVsaWQsIHAucGVyc3RhcnQpICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBn X2F0dHJpYnV0ZSBBUyBlYSBPTiAoZWEuYXR0cmVsaWQsIGVhLmF0dG51bSkgPSAocC5wZXJy ZWxpZCwgcC5wZXJlbmQpICIKKwkJCQkiSk9JTiBwZ19jYXRhbG9nLnBnX3R5cGUgQVMgciBP TiByLm9pZCA9IHAucGVycm5ndHlwZSAiCisJCQkJIkpPSU4gcGdfY2F0YWxvZy5wZ19jb25z dHJhaW50IEFTIGMgT04gYy5vaWQgPSBwLnBlcmNvbnN0cmFpbnQgIgorCQkJCSJXSEVSRSBw LnBlcnJlbGlkID0gJyV1Jzo6cGdfY2F0YWxvZy5vaWQgIgorCQkJCSJPUkRFUiBCWSBwLnBl cm5hbWUiLAorCQkJCXRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOworCisJCQlyZXMgPSBFeGVj dXRlU3FsUXVlcnkoZm91dCwgcS0+ZGF0YSwgUEdSRVNfVFVQTEVTX09LKTsKKworCQkJLyoK KwkJCSAqIElmIHdlIGRpZG4ndCBnZXQgdGhlIG51bWJlciBvZiByb3dzIHdlIHRob3VnaHQg d2Ugd2VyZSBnb2luZyB0bywKKwkJCSAqIHRoZW4gdGhvc2UgSk9JTnMgZGlkbid0IHdvcmsu CisJCQkgKi8KKwkJCW51bVBlcmlvZHMgPSBQUW50dXBsZXMocmVzKTsKKwkJCWlmIChudW1Q ZXJpb2RzICE9IHRiaW5mby0+bnBlcmlvZCkKKwkJCXsKKwkJCQlwZ19sb2dfaW5mbyhuZ2V0 dGV4dCgiZXhwZWN0ZWQgJWQgcGVyaW9kIG9uIHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQi LAorCQkJCQkJCQkJICJleHBlY3RlZCAlZCBwZXJpb2RzIG9uIHRhYmxlIFwiJXNcIiBidXQg Zm91bmQgJWQiLAorCQkJCQkJCQkJIHRiaW5mby0+bnBlcmlvZCksCisJCQkJCQkJdGJpbmZv LT5ucGVyaW9kLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtUGVyaW9kcyk7CisJCQkJcGdfbG9n X2luZm8oIihUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4pIik7CisJ CQkJZXhpdF9uaWNlbHkoMSk7CisJCQl9CisKKwkJCXBlcmlvZHMgPSAoUGVyaW9kSW5mbyAq KSBwZ19tYWxsb2MobnVtUGVyaW9kcyAqIHNpemVvZihQZXJpb2RJbmZvKSk7CisJCQl0Ymlu Zm8tPnBlcmlvZHMgPSBwZXJpb2RzOworCisJCQlmb3IgKGogPSAwOyBqIDwgbnVtUGVyaW9k czsgaisrKQorCQkJeworCQkJCXBlcmlvZHNbal0uZG9iai5vYmpUeXBlID0gRE9fUEVSSU9E OworCQkJCXBlcmlvZHNbal0uZG9iai5jYXRJZC50YWJsZW9pZCA9IGF0b29pZChQUWdldHZh bHVlKHJlcywgaiwgMCkpOworCQkJCXBlcmlvZHNbal0uZG9iai5jYXRJZC5vaWQgPSBhdG9v aWQoUFFnZXR2YWx1ZShyZXMsIGosIDEpKTsKKwkJCQlBc3NpZ25EdW1wSWQoJnBlcmlvZHNb al0uZG9iaik7CisJCQkJcGVyaW9kc1tqXS5kb2JqLm5hbWUgPSBwZ19zdHJkdXAoUFFnZXR2 YWx1ZShyZXMsIGosIDIpKTsKKwkJCQlwZXJpb2RzW2pdLmRvYmoubmFtZXNwYWNlID0gdGJp bmZvLT5kb2JqLm5hbWVzcGFjZTsKKwkJCQlwZXJpb2RzW2pdLnBlcnRhYmxlID0gdGJpbmZv OworCQkJCXBlcmlvZHNbal0ucGVyc3RhcnQgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMs IGosIDMpKTsKKwkJCQlwZXJpb2RzW2pdLnBlcmVuZCA9IHBnX3N0cmR1cChQUWdldHZhbHVl KHJlcywgaiwgNCkpOworCQkJCXBlcmlvZHNbal0ucm5ndHlwZSA9IHBnX3N0cmR1cChQUWdl dHZhbHVlKHJlcywgaiwgNSkpOworCQkJCXBlcmlvZHNbal0uY29ubmFtZSA9IHBnX3N0cmR1 cChQUWdldHZhbHVlKHJlcywgaiwgNikpOworCQkJfQorCQkJUFFjbGVhcihyZXMpOworCQl9 CisJfQorCiAJZGVzdHJveVBRRXhwQnVmZmVyKHEpOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcih0 YmxvaWRzKTsKIAlkZXN0cm95UFFFeHBCdWZmZXIoY2hlY2tvaWRzKTsKQEAgLTEwMzQyLDYg KzEwNDUyLDggQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxl T2JqZWN0ICpkb2JqKQogCQljYXNlIERPX0ZLX0NPTlNUUkFJTlQ6CiAJCQlkdW1wQ29uc3Ry YWludChmb3V0LCAoY29uc3QgQ29uc3RyYWludEluZm8gKikgZG9iaik7CiAJCQlicmVhazsK KwkJY2FzZSBET19QRVJJT0Q6CisJCQlicmVhazsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJ CWR1bXBQcm9jTGFuZyhmb3V0LCAoY29uc3QgUHJvY0xhbmdJbmZvICopIGRvYmopOwogCQkJ YnJlYWs7CkBAIC0xNTg3Nyw2ICsxNTk4OSwzMiBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2 ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJfQogCQkJfQogCisJCQkv KgorCQkJICogQWRkIG5vbi1pbmhlcml0ZWQgUEVSSU9EIGRlZmluaXRpb25zLCBpZiBhbnku CisJCQkgKi8KKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5wZXJpb2Q7IGorKykKKwkJ CXsKKwkJCQlQZXJpb2RJbmZvICpwZXJpb2QgPSAmKHRiaW5mby0+cGVyaW9kc1tqXSk7CisK KwkJCQljaGFyCSAgICpuYW1lID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ZG9iai5uYW1l KSk7CisJCQkJY2hhcgkgICAqc3RhcnQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5wZXJz dGFydCkpOworCQkJCWNoYXIJICAgKmVuZCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBl cmVuZCkpOworCQkJCWNoYXIJICAgKnJuZ3R5cGUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9k LT5ybmd0eXBlKSk7CisJCQkJY2hhcgkgICAqY29ubmFtZSA9IHBnX3N0cmR1cChmbXRJZChw ZXJpb2QtPmNvbm5hbWUpKTsKKworCQkJCWlmIChhY3R1YWxfYXR0cyA9PSAwKQorCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIChcbiAgICAiKTsKKwkJCQllbHNlCisJCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsXG4gICAgIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxLCAiUEVSSU9EIEZPUiAlcyAoJXMsICVzKSAiCisJCQkJCQkiV0lUSCAocmFuZ2V0 eXBlID0gJXMsIGNoZWNrX2NvbnN0cmFpbnRfbmFtZSA9ICVzKSIsCisJCQkJCQkJCSAgbmFt ZSwgc3RhcnQsIGVuZCwKKwkJCQkJCQkJICBybmd0eXBlLCBjb25uYW1lKTsKKworCQkJCWFj dHVhbF9hdHRzKys7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBBZGQgbm9uLWluaGVyaXRlZCBD SEVDSyBjb25zdHJhaW50cywgaWYgYW55LgogCQkJICoKQEAgLTE1ODg1LDcgKzE2MDIzLDcg QEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJp bmZvKQogCQkJICogUEFSVElUSU9OIHRoYXQgd2UnbGwgZW1pdCBsYXRlciBleHBlY3RzIHRo ZSBjb25zdHJhaW50IHRvIGJlCiAJCQkgKiB0aGVyZS4gIChObyBuZWVkIHRvIGZpeCBjb25p c2xvY2FsOiBBVFRBQ0ggUEFSVElUSU9OIGRvZXMgdGhhdCkKIAkJCSAqLwotCQkJZm9yIChq ID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJCQlmb3IgKGogPSAwOyBqIDwgdGJp bmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7IGorKykKIAkJCXsKIAkJCQlDb25zdHJh aW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0pOwogCkBAIC0xNjEw Myw3ICsxNjI0MSw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBU YWJsZUluZm8gKnRiaW5mbykKIAkJCSAqIEZvciBwYXJ0aXRpb25zLCB0aGV5IHdlcmUgYWxy ZWFkeSBkdW1wZWQsIGFuZCBjb25pc2xvY2FsCiAJCQkgKiBkb2Vzbid0IG5lZWQgZml4aW5n LgogCQkJICovCi0JCQlmb3IgKGsgPSAwOyBrIDwgdGJpbmZvLT5uY2hlY2s7IGsrKykKKwkJ CWZvciAoayA9IDA7IGsgPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaysr KQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tl eHByc1trXSk7CiAKQEAgLTE2NDA1LDcgKzE2NTQzLDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQlkdW1wVGFibGVTZWNM YWJlbChmb3V0LCB0YmluZm8sIHJlbHR5cGVuYW1lKTsKIAogCS8qIER1bXAgY29tbWVudHMg b24gaW5saW5lZCB0YWJsZSBjb25zdHJhaW50cyAqLwotCWZvciAoaiA9IDA7IGogPCB0Ymlu Zm8tPm5jaGVjazsgaisrKQorCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRi aW5mby0+bnBlcmlvZDsgaisrKQogCXsKIAkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9ICYo dGJpbmZvLT5jaGVja2V4cHJzW2pdKTsKIApAQCAtMTg1MDEsNiArMTg2MzksNyBAQCBhZGRC b3VuZGFyeURlcGVuZGVuY2llcyhEdW1wYWJsZU9iamVjdCAqKmRvYmpzLCBpbnQgbnVtT2Jq cywKIAkJCWNhc2UgRE9fVFJJR0dFUjoKIAkJCWNhc2UgRE9fRVZFTlRfVFJJR0dFUjoKIAkJ CWNhc2UgRE9fREVGQVVMVF9BQ0w6CisJCQljYXNlIERPX1BFUklPRDoKIAkJCWNhc2UgRE9f UE9MSUNZOgogCQkJY2FzZSBET19QVUJMSUNBVElPTjoKIAkJCWNhc2UgRE9fUFVCTElDQVRJ T05fUkVMOgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaCBiL3NyYy9i aW4vcGdfZHVtcC9wZ19kdW1wLmgKaW5kZXggNzczYTJkZTE4Yi4uMTk5YjI1NTcxYiAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcC5oCkBAIC01OSw2ICs1OSw3IEBAIHR5cGVkZWYgZW51bQogCURPX1RSSUdH RVIsCiAJRE9fQ09OU1RSQUlOVCwKIAlET19GS19DT05TVFJBSU5ULAkJCS8qIHNlZSBub3Rl IGZvciBDb25zdHJhaW50SW5mbyAqLworCURPX1BFUklPRCwKIAlET19QUk9DTEFORywKIAlE T19DQVNULAogCURPX1RBQkxFX0RBVEEsCkBAIC0yOTksMTIgKzMwMCwxNCBAQCB0eXBlZGVm IHN0cnVjdCBfdGFibGVJbmZvCiAJYm9vbAkJcm93c2VjOwkJCS8qIGlzIHJvdyBzZWN1cml0 eSBlbmFibGVkPyAqLwogCWJvb2wJCWZvcmNlcm93c2VjOwkvKiBpcyByb3cgc2VjdXJpdHkg Zm9yY2VkPyAqLwogCWJvb2wJCWhhc29pZHM7CQkvKiBkb2VzIGl0IGhhdmUgT0lEcz8gKi8K Kwlib29sCQloYXNwZXJpb2RzOwkJLyogZG9lcyBpdCBoYXZlIGFueSBwZXJpb2RzPyAqLwog CXVpbnQzMgkJZnJvemVueGlkOwkJLyogdGFibGUncyByZWxmcm96ZW54aWQgKi8KIAl1aW50 MzIJCW1pbm14aWQ7CQkvKiB0YWJsZSdzIHJlbG1pbm14aWQgKi8KIAlPaWQJCQl0b2FzdF9v aWQ7CQkvKiB0b2FzdCB0YWJsZSdzIE9JRCwgb3IgMCBpZiBub25lICovCiAJdWludDMyCQl0 b2FzdF9mcm96ZW54aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVsZnJvemVueGlkLCBpZiBhbnkg Ki8KIAl1aW50MzIJCXRvYXN0X21pbm14aWQ7CS8qIHRvYXN0IHRhYmxlJ3MgcmVsbWlubXhp ZCAqLwogCWludAkJCW5jaGVjazsJCQkvKiAjIG9mIENIRUNLIGV4cHJlc3Npb25zICovCisJ aW50CQkJbnBlcmlvZDsJCS8qICMgb2YgUEVSSU9EIGRlZmluaXRpb25zICovCiAJT2lkCQkJ cmVsdHlwZTsJCS8qIE9JRCBvZiB0YWJsZSdzIGNvbXBvc2l0ZSB0eXBlLCBpZiBhbnkgKi8K IAlPaWQJCQlyZWxvZnR5cGU7CQkvKiB1bmRlcmx5aW5nIHR5cGUgZm9yIHR5cGVkIHRhYmxl ICovCiAJT2lkCQkJZm9yZWlnbl9zZXJ2ZXI7IC8qIGZvcmVpZ24gc2VydmVyIG9pZCwgaWYg YXBwbGljYWJsZSAqLwpAQCAtMzU0LDYgKzM1Nyw3IEBAIHR5cGVkZWYgc3RydWN0IF90YWJs ZUluZm8KIAlib29sCSAgICpub3RudWxsX2luaDsJLyogdHJ1ZSBpZiBOT1QgTlVMTCBoYXMg bm8gbG9jYWwgZGVmaW5pdGlvbiAqLwogCXN0cnVjdCBfYXR0ckRlZkluZm8gKiphdHRyZGVm czsgLyogREVGQVVMVCBleHByZXNzaW9ucyAqLwogCXN0cnVjdCBfY29uc3RyYWludEluZm8g KmNoZWNrZXhwcnM7IC8qIENIRUNLIGNvbnN0cmFpbnRzICovCisJc3RydWN0IF9wZXJpb2RJ bmZvICpwZXJpb2RzOwkvKiBQRVJJT0QgZGVmaW5pdGlvbnMgKi8KIAlib29sCQluZWVkc19v dmVycmlkZTsgLyogaGFzIEdFTkVSQVRFRCBBTFdBWVMgQVMgSURFTlRJVFkgKi8KIAljaGFy CSAgICphbW5hbWU7CQkJLyogcmVsYXRpb24gYWNjZXNzIG1ldGhvZCAqLwogCkBAIC00OTIs NiArNDk2LDE2IEBAIHR5cGVkZWYgc3RydWN0IF9jb25zdHJhaW50SW5mbwogCWJvb2wJCXdp dGhvdXRvdmVybGFwczsJLyogdHJ1ZSBpZiB0aGUgbGFzdCBlbGVtIGlzIFdJVEhPVVQgT1ZF UkxBUFMgKi8KIH0gQ29uc3RyYWludEluZm87CiAKK3R5cGVkZWYgc3RydWN0IF9wZXJpb2RJ bmZvCit7CisJRHVtcGFibGVPYmplY3QgZG9iajsKKwlUYWJsZUluZm8gICpwZXJ0YWJsZTsK KwljaGFyCSAgICpwZXJzdGFydDsJCS8qIHRoZSBuYW1lIG9mIHRoZSBzdGFydCBjb2x1bW4g Ki8KKwljaGFyCSAgICpwZXJlbmQ7CQkJLyogdGhlIG5hbWUgb2YgdGhlIGVuZCBjb2x1bW4g Ki8KKwljaGFyCSAgICpybmd0eXBlOwkJLyogdGhlIG5hbWUgb2YgdGhlIHJhbmdlIHR5cGUg Ki8KKwljaGFyCSAgICpjb25uYW1lOwkJLyogdGhlIG5hbWUgb2YgdGhlIENIRUNLIGNvbnN0 cmFpbnQgKi8KK30gUGVyaW9kSW5mbzsKKwogdHlwZWRlZiBzdHJ1Y3QgX3Byb2NMYW5nSW5m bwogewogCUR1bXBhYmxlT2JqZWN0IGRvYmo7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1 bXAvcGdfZHVtcF9zb3J0LmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcF9zb3J0LmMKaW5k ZXggNTIzYTE5YzE1NS4uNTVmMmI2OGQwZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXBfc29ydC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wX3NvcnQuYwpA QCAtODQsNiArODQsNyBAQCBlbnVtIGRiT2JqZWN0VHlwZVByaW9yaXRpZXMKIAlQUklPX0NP TlNUUkFJTlQsCiAJUFJJT19JTkRFWCwKIAlQUklPX0lOREVYX0FUVEFDSCwKKwlQUklPX1BF UklPRCwKIAlQUklPX1NUQVRTRVhULAogCVBSSU9fUlVMRSwKIAlQUklPX1RSSUdHRVIsCkBA IC0xMTgsNiArMTE5LDcgQEAgc3RhdGljIGNvbnN0IGludCBkYk9iamVjdFR5cGVQcmlvcml0 eVtdID0KIAlQUklPX0FUVFJERUYsCQkJCS8qIERPX0FUVFJERUYgKi8KIAlQUklPX0lOREVY LAkJCQkJLyogRE9fSU5ERVggKi8KIAlQUklPX0lOREVYX0FUVEFDSCwJCQkvKiBET19JTkRF WF9BVFRBQ0ggKi8KKwlQUklPX1BFUklPRCwJCQkJLyogRE9fUEVSSU9EICovCiAJUFJJT19T VEFUU0VYVCwJCQkJLyogRE9fU1RBVFNFWFQgKi8KIAlQUklPX1JVTEUsCQkJCQkvKiBET19S VUxFICovCiAJUFJJT19UUklHR0VSLAkJCQkvKiBET19UUklHR0VSICovCkBAIC0xNDM4LDYg KzE0NDAsMTEgQEAgZGVzY3JpYmVEdW1wYWJsZU9iamVjdChEdW1wYWJsZU9iamVjdCAqb2Jq LCBjaGFyICpidWYsIGludCBidWZzaXplKQogCQkJCQkgIkZLIENPTlNUUkFJTlQgJXMgIChJ RCAlZCBPSUQgJXUpIiwKIAkJCQkJIG9iai0+bmFtZSwgb2JqLT5kdW1wSWQsIG9iai0+Y2F0 SWQub2lkKTsKIAkJCXJldHVybjsKKwkJY2FzZSBET19QRVJJT0Q6CisJCQlzbnByaW50Zihi dWYsIGJ1ZnNpemUsCisJCQkJCSAiUEVSSU9EICVzICAoSUQgJWQgT0lEICV1KSIsCisJCQkJ CSBvYmotPm5hbWUsIG9iai0+ZHVtcElkLCBvYmotPmNhdElkLm9pZCk7CisJCQlyZXR1cm47 CiAJCWNhc2UgRE9fUFJPQ0xBTkc6CiAJCQlzbnByaW50ZihidWYsIGJ1ZnNpemUsCiAJCQkJ CSAiUFJPQ0VEVVJBTCBMQU5HVUFHRSAlcyAgKElEICVkIE9JRCAldSkiLApkaWZmIC0tZ2l0 IGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpp bmRleCA0ZmJmYzA3NDYwLi5lMzhiOWExYzNhIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwv ZGVzY3JpYmUuYworKysgYi9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYwpAQCAtMTk0OCw2ICsx OTQ4LDcgQEAgZGVzY3JpYmVPbmVUYWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFt ZSwKIAogCWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbkZST00gcGdfY2F0YWxvZy5w Z19hdHRyaWJ1dGUgYSIpOwogCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsICJcbldIRVJFIGEu YXR0cmVsaWQgPSAnJXMnIEFORCBhLmF0dG51bSA+IDAgQU5EIE5PVCBhLmF0dGlzZHJvcHBl ZCIsIG9pZCk7CisJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlxuQU5EIE5PVCBFWElTVFMg KFNFTEVDVCAxIEZST00gcGdfY2F0YWxvZy5wZ19wZXJpb2QgcCBXSEVSRSBwLnBlcnJlbGlk ID0gYS5hdHRyZWxpZCBBTkQgcC5wZXJyYW5nZSA9IGEuYXR0bnVtKSIpOwogCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZidWYsICJcbk9SREVSIEJZIGEuYXR0bnVtOyIpOwogCiAJcmVzID0g UFNRTGV4ZWMoYnVmLmRhdGEpOwpAQCAtMjM3MCw2ICsyMzcxLDQwIEBAIGRlc2NyaWJlT25l VGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCVBHcmVzdWx0ICAgKnJl c3VsdCA9IE5VTEw7CiAJCWludAkJCXR1cGxlcyA9IDA7CiAKKwkJLyogcHJpbnQgcGVyaW9k cyAqLworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCisJCXsKKwkJCXByaW50ZlBR RXhwQnVmZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHF1b3RlX2lkZW50KHAucGVybmFt ZSksIHF1b3RlX2lkZW50KHMuYXR0bmFtZSkgQVMgc3RhcnRhdHQsIHF1b3RlX2lkZW50KGUu YXR0bmFtZSkgQVMgZW5kYXR0XG4iCisJCQkJCQkJICAiRlJPTSBwZ19wZXJpb2QgQVMgcFxu IgorCQkJCQkJCSAgIkpPSU4gcGdfYXR0cmlidXRlIEFTIHMgT04gKHMuYXR0cmVsaWQsIHMu YXR0bnVtKSA9IChwLnBlcnJlbGlkLCBwLnBlcnN0YXJ0KVxuIgorCQkJCQkJCSAgIkpPSU4g cGdfYXR0cmlidXRlIEFTIGUgT04gKGUuYXR0cmVsaWQsIGUuYXR0bnVtKSA9IChwLnBlcnJl bGlkLCBwLnBlcmVuZClcbiIKKwkJCQkJCQkgICJXSEVSRSBwLnBlcnJlbGlkID0gJyVzJ1xu IgorCQkJCQkJCSAgIk9SREVSIEJZIDE7IiwKKwkJCQkJCQkgIG9pZCk7CisJCQlyZXN1bHQg PSBQU1FMZXhlYyhidWYuZGF0YSk7CisJCQlpZiAoIXJlc3VsdCkKKwkJCQlnb3RvIGVycm9y X3JldHVybjsKKwkJCWVsc2UKKwkJCQl0dXBsZXMgPSBQUW50dXBsZXMocmVzdWx0KTsKKwor CQkJaWYgKHR1cGxlcyA+IDApCisJCQl7CisJCQkJcHJpbnRUYWJsZUFkZEZvb3RlcigmY29u dCwgXygiUGVyaW9kczoiKSk7CisJCQkJZm9yIChpID0gMDsgaSA8IHR1cGxlczsgaSsrKQor CQkJCXsKKwkJCQkJLyogdW50cmFuc2xhdGVkIGNvbnN0cmFpbnQgbmFtZSBhbmQgZGVmICov CisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgJXMgKCVzLCAlcykiLAorCQkJ CQkJCQkJICBQUWdldHZhbHVlKHJlc3VsdCwgaSwgMCksCisJCQkJCQkJCQkgIFBRZ2V0dmFs dWUocmVzdWx0LCBpLCAxKSwKKwkJCQkJCQkJCSAgUFFnZXR2YWx1ZShyZXN1bHQsIGksIDIp KTsKKworCQkJCQlwcmludFRhYmxlQWRkRm9vdGVyKCZjb250LCBidWYuZGF0YSk7CisJCQkJ fQorCQkJfQorCQkJUFFjbGVhcihyZXN1bHQpOworCQl9CisKIAkJLyogcHJpbnQgaW5kZXhl cyAqLwogCQlpZiAodGFibGVpbmZvLmhhc2luZGV4KQogCQl7CmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL2RlcGVuZGVuY3kuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvZGVw ZW5kZW5jeS5oCmluZGV4IGZmZDVlOWRjODIuLjhmMDNiZjNkZTEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvZGVwZW5kZW5jeS5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvZGVwZW5kZW5jeS5oCkBAIC05Myw2ICs5Myw3IEBAIHR5cGVkZWYgZW51bSBPYmplY3RD bGFzcwogCU9DTEFTU19DQVNULAkJCQkvKiBwZ19jYXN0ICovCiAJT0NMQVNTX0NPTExBVElP TiwJCQkvKiBwZ19jb2xsYXRpb24gKi8KIAlPQ0xBU1NfQ09OU1RSQUlOVCwJCQkvKiBwZ19j b25zdHJhaW50ICovCisJT0NMQVNTX1BFUklPRCwJCQkJLyogcGdfcGVyaW9kICovCiAJT0NM QVNTX0NPTlZFUlNJT04sCQkJLyogcGdfY29udmVyc2lvbiAqLwogCU9DTEFTU19ERUZBVUxU LAkJCQkvKiBwZ19hdHRyZGVmICovCiAJT0NMQVNTX0xBTkdVQUdFLAkJCS8qIHBnX2xhbmd1 YWdlICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL2hlYXAuaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvaGVhcC5oCmluZGV4IDUxZjdiMTJhYTMuLjFmNjQ2ZjNkM2IgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaGVhcC5oCisrKyBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvaGVhcC5oCkBAIC0xMjEsNiArMTIxLDEwIEBAIGV4dGVybiBMaXN0ICpBZGRS ZWxhdGlvbk5vdE51bGxDb25zdHJhaW50cyhSZWxhdGlvbiByZWwsCiBleHRlcm4gdm9pZCBS ZWxhdGlvbkNsZWFyTWlzc2luZyhSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgU2V0QXR0 ck1pc3NpbmcoT2lkIHJlbGlkLCBjaGFyICphdHRuYW1lLCBjaGFyICp2YWx1ZSk7CiAKK2V4 dGVybiBPaWQgU3RvcmVQZXJpb2QoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpwZXJpb2Qs CisJCQkJCSAgIEF0dHJOdW1iZXIgc3RhcnRudW0sIEF0dHJOdW1iZXIgZW5kbnVtLAorCQkJ CQkgICBBdHRyTnVtYmVyIHJhbmdlbnVtLCBPaWQgY29ub2lkKTsKKwogZXh0ZXJuIE5vZGUg KmNvb2tEZWZhdWx0KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCSBOb2RlICpyYXdfZGVm YXVsdCwKIAkJCQkJCSBPaWQgYXR0dHlwaWQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9j YXRhbG9nL21lc29uLmJ1aWxkIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9tZXNvbi5idWlsZApp bmRleCBkY2IzYzVmNzY2Li4xOTQzNzI5MWE0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL21lc29uLmJ1aWxkCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvbWVzb24uYnVp bGQKQEAgLTYxLDYgKzYxLDcgQEAgY2F0YWxvZ19oZWFkZXJzID0gWwogICAncGdfY29sbGF0 aW9uLmgnLAogICAncGdfcGFyYW1ldGVyX2FjbC5oJywKICAgJ3BnX3BhcnRpdGlvbmVkX3Rh YmxlLmgnLAorICAncGdfcGVyaW9kLmgnLAogICAncGdfcmFuZ2UuaCcsCiAgICdwZ190cmFu c2Zvcm0uaCcsCiAgICdwZ19zZXF1ZW5jZS5oJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfaW5kZXguaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfaW5kZXguaApp bmRleCAzMjkzMDQxMWI2Li5hY2ZiZWY5ZTI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9j YXRhbG9nL3BnX2luZGV4LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19pbmRleC5o CkBAIC00NCwxMSArNDQsMTEgQEAgQ0FUQUxPRyhwZ19pbmRleCwyNjEwLEluZGV4UmVsYXRp b25JZCkgQktJX1NDSEVNQV9NQUNSTwogCWJvb2wJCWluZGlzcmVhZHk7CQkvKiBpcyB0aGlz IGluZGV4IHJlYWR5IGZvciBpbnNlcnRzPyAqLwogCWJvb2wJCWluZGlzbGl2ZTsJCS8qIGlz IHRoaXMgaW5kZXggYWxpdmUgYXQgYWxsPyAqLwogCWJvb2wJCWluZGlzcmVwbGlkZW50OyAv KiBpcyB0aGlzIGluZGV4IHRoZSBpZGVudGl0eSBmb3IgcmVwbGljYXRpb24/ICovCisJT2lk CQkJaW5kcGVyaW9kOwkJLyogdGhlIHBlcmlvZCBpdCBjb250YWlucywgaWYgYW55ICovCiAK IAkvKiB2YXJpYWJsZS1sZW5ndGggZmllbGRzIHN0YXJ0IGhlcmUsIGJ1dCB3ZSBhbGxvdyBk aXJlY3QgYWNjZXNzIHRvIGluZGtleSAqLwogCWludDJ2ZWN0b3IJaW5ka2V5IEJLSV9GT1JD RV9OT1RfTlVMTDsJLyogY29sdW1uIG51bWJlcnMgb2YgaW5kZXhlZCBjb2xzLAogCQkJCQkJ CQkJCQkgKiBvciAwICovCi0KICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgogCW9pZHZlY3Rvcglp bmRjb2xsYXRpb24gQktJX0xPT0tVUF9PUFQocGdfY29sbGF0aW9uKSBCS0lfRk9SQ0VfTk9U X05VTEw7CS8qIGNvbGxhdGlvbiBpZGVudGlmaWVycyAqLwogCW9pZHZlY3RvcglpbmRjbGFz cyBCS0lfTE9PS1VQKHBnX29wY2xhc3MpIEJLSV9GT1JDRV9OT1RfTlVMTDsgLyogb3BjbGFz cyBpZGVudGlmaWVycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w ZXJpb2QuaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDJjZmZhMDdiYwotLS0gL2Rldi9udWxsCisr KyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcGVyaW9kLmgKQEAgLTAsMCArMSw1NCBAQAor LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogcGdfcGVyaW9kLmgKKyAqCSAgZGVmaW5p dGlvbiBvZiB0aGUgInBlcmlvZCIgc3lzdGVtIGNhdGFsb2cgKHBnX3BlcmlvZCkKKyAqCisg KgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19w ZXJpb2QuaAorICoKKyAqIE5PVEVTCisgKgkgIFRoZSBDYXRhbG9nLnBtIG1vZHVsZSByZWFk cyB0aGlzIGZpbGUgYW5kIGRlcml2ZXMgc2NoZW1hCisgKgkgIGluZm9ybWF0aW9uLgorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1BFUklPRF9ICisjZGVm aW5lIFBHX1BFUklPRF9ICisKKyNpbmNsdWRlICJjYXRhbG9nL2dlbmJraS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcGVyaW9kX2QuaCIKKworLyogLS0tLS0tLS0tLS0tLS0tLQorICoJ CXBnX3BlcmlvZCBkZWZpbml0aW9uLiAgY3BwIHR1cm5zIHRoaXMgaW50bworICoJCXR5cGVk ZWYgc3RydWN0IEZvcm1EYXRhX3BnX3BlcmlvZAorICogLS0tLS0tLS0tLS0tLS0tLQorICov CitDQVRBTE9HKHBnX3BlcmlvZCw4MDAwLFBlcmlvZFJlbGF0aW9uSWQpCit7CisJT2lkCQkJ b2lkOwkJCS8qIE9JRCBvZiB0aGUgcGVyaW9kICovCisJTmFtZURhdGEJcGVybmFtZTsJCS8q IG5hbWUgb2YgcGVyaW9kICovCisJT2lkCQkJcGVycmVsaWQ7CQkvKiBPSUQgb2YgcmVsYXRp b24gY29udGFpbmluZyB0aGlzIHBlcmlvZCAqLworCWludDE2CQlwZXJzdGFydDsJCS8qIGNv bHVtbiBmb3Igc3RhcnQgdmFsdWUgKi8KKwlpbnQxNgkJcGVyZW5kOwkJCS8qIGNvbHVtbiBm b3IgZW5kIHZhbHVlICovCisJaW50MTYJCXBlcnJhbmdlOwkJLyogY29sdW1uIGZvciByYW5n ZSB2YWx1ZSAqLworCU9pZAkJCXBlcmNvbnN0cmFpbnQ7CS8qIE9JRCBvZiAoc3RhcnQgPCBl bmQpIGNvbnN0cmFpbnQgKi8KK30gRm9ybURhdGFfcGdfcGVyaW9kOworCisvKiAtLS0tLS0t LS0tLS0tLS0tCisgKgkJRm9ybV9wZ19wZXJpb2QgY29ycmVzcG9uZHMgdG8gYSBwb2ludGVy IHRvIGEgdHVwbGUgd2l0aAorICoJCXRoZSBmb3JtYXQgb2YgcGdfcGVyaW9kIHJlbGF0aW9u LgorICogLS0tLS0tLS0tLS0tLS0tLQorICovCit0eXBlZGVmIEZvcm1EYXRhX3BnX3Blcmlv ZCAqRm9ybV9wZ19wZXJpb2Q7CisKK0RFQ0xBUkVfVU5JUVVFX0lOREVYX1BLRVkocGdfcGVy aW9kX29pZF9pbmRleCwgODAwMSwgUGVyaW9kT2JqZWN0SW5kZXhJZCwgcGdfcGVyaW9kLCBi dHJlZShvaWQgb2lkX29wcykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcGVyaW9kX3Bl cnJlbGlkX3Blcm5hbWVfaW5kZXgsIDgwMDIsIFBlcmlvZFJlbGlkTmFtZUluZGV4SWQsIHBn X3BlcmlvZCwgYnRyZWUocGVycmVsaWQgb2lkX29wcywgcGVybmFtZSBuYW1lX29wcykpOwor CitleHRlcm4gdm9pZCBSZW1vdmVQZXJpb2RCeUlkKE9pZCBwZXJpb2RJZCk7CisKK2V4dGVy biBPaWQgZ2V0X3JlbGF0aW9uX3BlcmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpw ZXJuYW1lLCBib29sIG1pc3Npbmdfb2spOworZXh0ZXJuIEJpdG1hcHNldCAqZ2V0X3Blcmlv ZF9hdHRub3MoT2lkIHJlbGlkKTsKKworI2VuZGlmCQkJCQkJCS8qIFBHX1BFUklPRF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3JhbmdlLmggYi9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3JhbmdlLmgKaW5kZXggMTI0N2ZhN2M3Ny4uN2VkMDE0YjcxZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19yYW5nZS5oCisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcmFuZ2UuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIEZv cm1EYXRhX3BnX3JhbmdlICpGb3JtX3BnX3JhbmdlOwogCiBERUNMQVJFX1VOSVFVRV9JTkRF WF9QS0VZKHBnX3JhbmdlX3JuZ3R5cGlkX2luZGV4LCAzNTQyLCBSYW5nZVR5cGlkSW5kZXhJ ZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ3R5cGlkIG9pZF9vcHMpKTsKIERFQ0xBUkVfVU5JUVVF X0lOREVYKHBnX3JhbmdlX3JuZ211bHRpdHlwaWRfaW5kZXgsIDIyMjgsIFJhbmdlTXVsdGly YW5nZVR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0cmVlKHJuZ211bHRpdHlwaWQgb2lkX29w cykpOworREVDTEFSRV9VTklRVUVfSU5ERVgocGdfcmFuZ2Vfcm5nc3VidHlwZV9ybmd0eXBp ZF9pbmRleCwgODAwMywgUmFuZ2VTdWJUeXBpZFR5cGlkSW5kZXhJZCwgcGdfcmFuZ2UsIGJ0 cmVlKHJuZ3N1YnR5cGUgb2lkX29wcywgcm5ndHlwaWQgb2lkX29wcykpOwogCiAvKgogICog cHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHBnX3JhbmdlLmMKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL3RhYmxlY21kcy5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMv dGFibGVjbWRzLmgKaW5kZXggMTZiNjEyNjY2OS4uZTkxOGQ5YTYzMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbWFuZHMvdGFibGVjbWRzLmgKKysrIGIvc3JjL2luY2x1ZGUvY29t bWFuZHMvdGFibGVjbWRzLmgKQEAgLTM4LDcgKzM4LDggQEAgZXh0ZXJuIExPQ0tNT0RFIEFs dGVyVGFibGVHZXRMb2NrTGV2ZWwoTGlzdCAqY21kcyk7CiAKIGV4dGVybiB2b2lkIEFURXhl Y0NoYW5nZU93bmVyKE9pZCByZWxhdGlvbk9pZCwgT2lkIG5ld093bmVySWQsIGJvb2wgcmVj dXJzaW5nLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKLWV4dGVybiB2b2lkIEFsdGVyVGFibGVJ bnRlcm5hbChPaWQgcmVsaWQsIExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSk7CitleHRlcm4g dm9pZCBBbHRlclRhYmxlSW50ZXJuYWwoT2lkIHJlbGlkLCBMaXN0ICpjbWRzLCBib29sIHJl Y3Vyc2UsCisJCQkJCQkJICAgc3RydWN0IEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29u dGV4dCk7CiAKIGV4dGVybiBPaWQJQWx0ZXJUYWJsZU1vdmVBbGwoQWx0ZXJUYWJsZU1vdmVB bGxTdG10ICpzdG10KTsKIApAQCAtMTAzLDUgKzEwNCw2IEBAIGV4dGVybiB2b2lkIFJhbmdl VmFyQ2FsbGJhY2tPd25zUmVsYXRpb24oY29uc3QgUmFuZ2VWYXIgKnJlbGF0aW9uLAogCQkJ CQkJCQkJCSBPaWQgcmVsSWQsIE9pZCBvbGRSZWxJZCwgdm9pZCAqYXJnKTsKIGV4dGVybiBi b29sIFBhcnRDb25zdHJhaW50SW1wbGllZEJ5UmVsQ29uc3RyYWludChSZWxhdGlvbiBzY2Fu cmVsLAogCQkJCQkJCQkJCQkJIExpc3QgKnBhcnRDb25zdHJhaW50KTsKK2V4dGVybiBPaWQg Y2hvb3NlX3JhbmdldHlwZV9mb3JfcGVyaW9kKFBlcmlvZERlZiAqcGVyaW9kKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIFRBQkxFQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5k ZXggMTc3ZGY5NmM4Ni4uNTJkZTYxOGQxZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApA QCAtMjE2Myw2ICsyMTYzLDcgQEAgdHlwZWRlZiBlbnVtIE9iamVjdFR5cGUKIAlPQkpFQ1Rf T1BFUkFUT1IsCiAJT0JKRUNUX09QRkFNSUxZLAogCU9CSkVDVF9QQVJBTUVURVJfQUNMLAor CU9CSkVDVF9QRVJJT0QsCiAJT0JKRUNUX1BPTElDWSwKIAlPQkpFQ1RfUFJPQ0VEVVJFLAog CU9CSkVDVF9QVUJMSUNBVElPTiwKQEAgLTIyNTAsNiArMjI1MSw4IEBAIHR5cGVkZWYgZW51 bSBBbHRlclRhYmxlVHlwZQogCUFUX1ZhbGlkYXRlQ29uc3RyYWludCwJCS8qIHZhbGlkYXRl IGNvbnN0cmFpbnQgKi8KIAlBVF9BZGRJbmRleENvbnN0cmFpbnQsCQkvKiBhZGQgY29uc3Ry YWludCB1c2luZyBleGlzdGluZyBpbmRleCAqLwogCUFUX0Ryb3BDb25zdHJhaW50LAkJCS8q IGRyb3AgY29uc3RyYWludCAqLworCUFUX0FkZFBlcmlvZCwJCQkJLyogQUREIFBFUklPRCAq LworCUFUX0Ryb3BQZXJpb2QsCQkJCS8qIERST1AgUEVSSU9EICovCiAJQVRfUmVBZGRDb21t ZW50LAkJCS8qIGludGVybmFsIHRvIGNvbW1hbmRzL3RhYmxlY21kcy5jICovCiAJQVRfQWx0 ZXJDb2x1bW5UeXBlLAkJCS8qIGFsdGVyIGNvbHVtbiB0eXBlICovCiAJQVRfQWx0ZXJDb2x1 bW5HZW5lcmljT3B0aW9ucywJLyogYWx0ZXIgY29sdW1uIE9QVElPTlMgKC4uLikgKi8KQEAg LTI1MTYsMTEgKzI1MTksMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFyaWFibGVTaG93U3RtdAog LyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUNyZWF0ZSBUYWJsZSBTdGF0ZW1lbnQK ICAqCi0gKiBOT1RFOiBpbiB0aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiBhbmQg Q29uc3RyYWludCBub2RlcyBhcmUKLSAqIGludGVybWl4ZWQgaW4gdGFibGVFbHRzLCBhbmQg Y29uc3RyYWludHMgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4gIEFmdGVyCi0gKiBwYXJz ZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgbm5jb25z dHJhaW50cyBjb250YWlucwotICogQ29uc3RyYWludCBub2RlcyBvZiBDT05TVFJfTk9UTlVM TCB0eXBlIGZyb20gdmFyaW91cyBzb3VyY2VzLCBhbmQKLSAqIGNvbnN0cmFpbnRzIGNvbnRh aW5zIGp1c3QgQ09OU1RSX0NIRUNLIENvbnN0cmFpbnQgbm9kZXMuCisgKiBOT1RFOiBpbiB0 aGUgcmF3IGdyYW0ueSBvdXRwdXQsIENvbHVtbkRlZiwgUGVyaW9kRGVmLCBhbmQgQ29uc3Ry YWludCBub2RlcyBhcmUKKyAqIGludGVybWl4ZWQgaW4gdGFibGVFbHRzOyBwZXJpb2RzLCBj b25zdHJhaW50cywgYW5kIG5uY29uc3RyYWludHMgYXJlIE5JTC4gIEFmdGVyCisgKiBwYXJz ZSBhbmFseXNpcywgdGFibGVFbHRzIGNvbnRhaW5zIGp1c3QgQ29sdW1uRGVmcywgcGVyaW9k cyBjb250YWlucyBqdXN0IFBlcmlvZERlZnMsCisgKiBubmNvbnN0cmFpbnRzIGNvbnRhaW5z IENvbnN0cmFpbnQgbm9kZXMgb2YgQ09OU1RSX05PVE5VTEwgdHlwZSBmcm9tIHZhcmlvdXMg c291cmNlcywKKyAqIGFuZCBjb25zdHJhaW50cyBjb250YWlucyBqdXN0IENPTlNUUl9DSEVD SyBDb25zdHJhaW50IG5vZGVzLgogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCiAK QEAgLTI1MjksNiArMjUzMiw3IEBAIHR5cGVkZWYgc3RydWN0IENyZWF0ZVN0bXQKIAlOb2Rl VGFnCQl0eXBlOwogCVJhbmdlVmFyICAgKnJlbGF0aW9uOwkJLyogcmVsYXRpb24gdG8gY3Jl YXRlICovCiAJTGlzdAkgICAqdGFibGVFbHRzOwkJLyogY29sdW1uIGRlZmluaXRpb25zIChs aXN0IG9mIENvbHVtbkRlZikgKi8KKwlMaXN0CSAgICpwZXJpb2RzOwkJLyogcGVyaW9kcyAo bGlzdCBvZiBQZXJpb2REZWYgbm9kZXMpICovCiAJTGlzdAkgICAqaW5oUmVsYXRpb25zOwkv KiByZWxhdGlvbnMgdG8gaW5oZXJpdCBmcm9tIChsaXN0IG9mCiAJCQkJCQkJCSAqIFJhbmdl VmFyKSAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJvdW5kOwkvKiBGT1IgVkFMVUVT IGNsYXVzZSAqLwpAQCAtMjU0Myw2ICsyNTQ3LDMwIEBAIHR5cGVkZWYgc3RydWN0IENyZWF0 ZVN0bXQKIAlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRvIG5vdGhpbmcgaWYgaXQg YWxyZWFkeSBleGlzdHM/ICovCiB9IENyZWF0ZVN0bXQ7CiAKKworLyogLS0tLS0tLS0tLQor ICogRGVmaW5pdGlvbnMgZm9yIHBlcmlvZHMgaW4gQ3JlYXRlU3RtdAorICogLS0tLS0tLS0t LQorICovCisKK3R5cGVkZWYgc3RydWN0IFBlcmlvZERlZgoreworCU5vZGVUYWcJCXR5cGU7 CisJT2lkCQkJb2lkOwkJCS8qIHBlcmlvZCBvaWQsIG9uY2UgaXQncyB0cmFuc2Zvcm1lZCAq LworCWNoYXIJICAgKnBlcmlvZG5hbWU7CQkvKiBwZXJpb2QgbmFtZSAqLworCWNoYXIJICAg KnN0YXJ0Y29sbmFtZTsJLyogbmFtZSBvZiBzdGFydCBjb2x1bW4gKi8KKwljaGFyCSAgICpl bmRjb2xuYW1lOwkJLyogbmFtZSBvZiBlbmQgY29sdW1uICovCisJQXR0ck51bWJlcglzdGFy dGF0dG51bTsJLyogYXR0bnVtIG9mIHRoZSBzdGFydCBjb2x1bW4gKi8KKwlBdHRyTnVtYmVy CWVuZGF0dG51bTsJCS8qIGF0dG51bSBvZiB0aGUgZW5kIGNvbHVtbiAqLworCUF0dHJOdW1i ZXIJcm5nYXR0bnVtOwkJLyogYXR0bnVtIG9mIHRoZSBHRU5FUkFURUQgcmFuZ2UgY29sdW1u ICovCisJTGlzdAkgICAqb3B0aW9uczsJCS8qIG9wdGlvbnMgZnJvbSBXSVRIIGNsYXVzZSAq LworCWNoYXIJICAgKmNvbnN0cmFpbnRuYW1lOwkvKiBuYW1lIG9mIHRoZSBDSEVDSyBjb25z dHJhaW50ICovCisJY2hhcgkgICAqcmFuZ2V0eXBlbmFtZTsJLyogbmFtZSBvZiB0aGUgcmFu Z2UgdHlwZSAqLworCU9pZAkJCWNvbHR5cGlkOwkJLyogdGhlIHN0YXJ0L2VuZCBjb2wgdHlw ZSAqLworCU9pZAkJCXJuZ3R5cGlkOwkJLyogdGhlIHJhbmdlIHR5cGUgdG8gdXNlICovCisJ aW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAq LworfSBQZXJpb2REZWY7CisKIC8qIC0tLS0tLS0tLS0KICAqIERlZmluaXRpb25zIGZvciBj b25zdHJhaW50cyBpbiBDcmVhdGVTdG10CiAgKgpAQCAtMzI1Miw2ICszMjgwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgSW5kZXhTdG10CiAJTGlzdAkgICAqaW5kZXhQYXJhbXM7CS8qIGNvbHVt bnMgdG8gaW5kZXg6IGEgbGlzdCBvZiBJbmRleEVsZW0gKi8KIAlMaXN0CSAgICppbmRleElu Y2x1ZGluZ1BhcmFtczsJLyogYWRkaXRpb25hbCBjb2x1bW5zIHRvIGluZGV4OiBhIGxpc3QK IAkJCQkJCQkJCQkgKiBvZiBJbmRleEVsZW0gKi8KKwlQZXJpb2REZWYgICpwZXJpb2Q7CQkJ LyogVGhlIHBlcmlvZCBpbmNsdWRlZCBpbiB0aGUgaW5kZXggKi8KIAlMaXN0CSAgICpvcHRp b25zOwkJLyogV0lUSCBjbGF1c2Ugb3B0aW9uczogYSBsaXN0IG9mIERlZkVsZW0gKi8KIAlO b2RlCSAgICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbiAocGFydGlhbC1pbmRleCBw cmVkaWNhdGUpICovCiAJTGlzdAkgICAqZXhjbHVkZU9wTmFtZXM7IC8qIGV4Y2x1c2lvbiBv cGVyYXRvciBuYW1lcywgb3IgTklMIGlmIG5vbmUgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf dXRpbGNtZC5oCmluZGV4IDJiNDBhMGI1YjEuLmZlYjZjMjYwMDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFy c2VyL3BhcnNlX3V0aWxjbWQuaApAQCAtNDAsNSArNDAsNiBAQCBleHRlcm4gSW5kZXhTdG10 ICpnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwKIAkJCQkJCQkJ CQkgIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJCQkJCQkJCQkJICBjb25zdCBzdHJ1Y3QgQXR0 ck1hcCAqYXR0bWFwLAogCQkJCQkJCQkJCSAgT2lkICpjb25zdHJhaW50T2lkKTsKK2V4dGVy biB2b2lkIHRyYW5zZm9ybVBlcmlvZE9wdGlvbnMoUGVyaW9kRGVmICpwZXJpb2QpOwogCiAj ZW5kaWYJCQkJCQkJLyogUEFSU0VfVVRJTENNRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9sc3lzY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CmluZGV4IGExMTc1MjdkOGEuLmYwMTViNTFjODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3V0aWxzL2xzeXNjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CkBAIC05Niw2ICs5Niw4IEBAIGV4dGVybiBPaWQJZ2V0X2F0dHR5cGUoT2lkIHJlbGlkLCBB dHRyTnVtYmVyIGF0dG51bSk7CiBleHRlcm4gdm9pZCBnZXRfYXR0dHlwZXR5cG1vZGNvbGwo T2lkIHJlbGlkLCBBdHRyTnVtYmVyIGF0dG51bSwKIAkJCQkJCQkJICBPaWQgKnR5cGlkLCBp bnQzMiAqdHlwbW9kLCBPaWQgKmNvbGxpZCk7CiBleHRlcm4gRGF0dW0gZ2V0X2F0dG9wdGlv bnMoT2lkIHJlbGlkLCBpbnQxNiBhdHRudW0pOworZXh0ZXJuIGNoYXIgKmdldF9wZXJpb2Ru YW1lKE9pZCBwZXJpb2RpZCwgYm9vbCBtaXNzaW5nX29rKTsKK2V4dGVybiBPaWQJZ2V0X3Bl cmlvZF9vaWQoT2lkIHJlbGlkLCBjb25zdCBjaGFyICpwZXJpb2RuYW1lLCBib29sIG1pc3Np bmdfb2spOwogZXh0ZXJuIE9pZAlnZXRfY2FzdF9vaWQoT2lkIHNvdXJjZXR5cGVpZCwgT2lk IHRhcmdldHR5cGVpZCwgYm9vbCBtaXNzaW5nX29rKTsKIGV4dGVybiBjaGFyICpnZXRfY29s bGF0aW9uX25hbWUoT2lkIGNvbGxvaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X2NvbGxhdGlvbl9p c2RldGVybWluaXN0aWMoT2lkIGNvbGxvaWQpOwpAQCAtMTk3LDYgKzE5OSw3IEBAIGV4dGVy biBPaWQJZ2V0X3JhbmdlX3N1YnR5cGUoT2lkIHJhbmdlT2lkKTsKIGV4dGVybiBPaWQJZ2V0 X3JhbmdlX2NvbGxhdGlvbihPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfcmFuZ2Vf bXVsdGlyYW5nZShPaWQgcmFuZ2VPaWQpOwogZXh0ZXJuIE9pZAlnZXRfbXVsdGlyYW5nZV9y YW5nZShPaWQgbXVsdGlyYW5nZU9pZCk7CitleHRlcm4gT2lkCWdldF9zdWJ0eXBlX3Jhbmdl KE9pZCBzdWJ0eXBlT2lkKTsKIGV4dGVybiBPaWQJZ2V0X2luZGV4X2NvbHVtbl9vcGNsYXNz KE9pZCBpbmRleF9vaWQsIGludCBhdHRubyk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhfaXNy ZXBsaWRlbnQoT2lkIGluZGV4X29pZCk7CiBleHRlcm4gYm9vbCBnZXRfaW5kZXhfaXN2YWxp ZChPaWQgaW5kZXhfb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2Nh Y2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy9zeXNjYWNoZS5oCmluZGV4IDY3ZWE2ZTQ5NDUu LjMzYmFiNDA2MWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3N5c2NhY2hlLmgK KysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc3lzY2FjaGUuaApAQCAtNzUsNiArNzUsOCBAQCBl bnVtIFN5c0NhY2hlSWRlbnRpZmllcgogCVBBUkFNRVRFUkFDTE5BTUUsCiAJUEFSQU1FVEVS QUNMT0lELAogCVBBUlRSRUxJRCwKKwlQRVJJT0ROQU1FLAorCVBFUklPRE9JRCwKIAlQUk9D TkFNRUFSR1NOU1AsCiAJUFJPQ09JRCwKIAlQVUJMSUNBVElPTk5BTUUsCkBAIC04NCw2ICs4 Niw3IEBAIGVudW0gU3lzQ2FjaGVJZGVudGlmaWVyCiAJUFVCTElDQVRJT05SRUwsCiAJUFVC TElDQVRJT05SRUxNQVAsCiAJUkFOR0VNVUxUSVJBTkdFLAorCVJBTkdFU1VCVFlQRSwKIAlS QU5HRVRZUEUsCiAJUkVMTkFNRU5TUCwKIAlSRUxPSUQsCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jIGIvc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X2RkbF9kZXBhcnNlL3Rlc3RfZGRsX2RlcGFyc2UuYwppbmRleCAw MzAyZjc5YmI3Li4wNWY5NzgwZWNmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfZGRsX2RlcGFyc2UvdGVzdF9kZGxfZGVwYXJzZS5jCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9kZGxfZGVwYXJzZS90ZXN0X2RkbF9kZXBhcnNlLmMKQEAgLTE4MCw2ICsxODAs MTIgQEAgZ2V0X2FsdGVydGFibGVfc3ViY21kaW5mbyhQR19GVU5DVElPTl9BUkdTKQogCQkJ Y2FzZSBBVF9Ecm9wQ29uc3RyYWludDoKIAkJCQlzdHJ0eXBlID0gIkRST1AgQ09OU1RSQUlO VCI7CiAJCQkJYnJlYWs7CisJCQljYXNlIEFUX0FkZFBlcmlvZDoKKwkJCQlzdHJ0eXBlID0g IkFERCBQRVJJT0QiOworCQkJCWJyZWFrOworCQkJY2FzZSBBVF9Ecm9wUGVyaW9kOgorCQkJ CXN0cnR5cGUgPSAiRFJPUCBQRVJJT0QiOworCQkJCWJyZWFrOwogCQkJY2FzZSBBVF9SZUFk ZENvbW1lbnQ6CiAJCQkJc3RydHlwZSA9ICIocmUpIEFERCBDT01NRU5UIjsKIAkJCQlicmVh azsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGVyaW9kcy5vdXQg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBmMmIyZDQ1M2QKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BlcmlvZHMub3V0CkBAIC0wLDAgKzEsMTcz IEBACisvKiBTeXN0ZW0gcGVyaW9kcyBhcmUgbm90IGltcGxlbWVudGVkICovCitjcmVhdGUg dGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Igc3lz dGVtX3RpbWUgKGRzLCBkZSkpOworRVJST1I6ICBQRVJJT0QgRk9SIFNZU1RFTV9USU1FIGlz IG5vdCBzdXBwb3J0ZWQKK0xJTkUgMjogY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHN5Li4uCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLyogUGVyaW9kcyBtdXN0 IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK0VSUk9S OiAgY29sdW1uICJib2d1cyIgb2YgcmVsYXRpb24gInB0IiBkb2VzIG5vdCBleGlzdAorY3Jl YXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9y IHAgKGRzLCBib2d1cykpOworRVJST1I6ICBjb2x1bW4gImJvZ3VzIiBvZiByZWxhdGlvbiAi cHQiIGRvZXMgbm90IGV4aXN0CisvKiBEYXRhIHR5cGVzIG11c3QgbWF0Y2ggZXhhY3RseSAq LworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSB0aW1lc3RhbXAs IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1u cyBvZiBwZXJpb2QgbXVzdCBiZSBvZiBzYW1lIHR5cGUKK2NyZWF0ZSB0YWJsZSBwdCAoaWQg aW50ZWdlciwgZHMgdGV4dCBjb2xsYXRlICJDIiwgZGUgdGV4dCBjb2xsYXRlICJQT1NJWCIs IHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitFUlJPUjogIHN0YXJ0IGFuZCBlbmQgY29sdW1u cyBvZiBwZXJpb2QgbXVzdCBoYXZlIHNhbWUgY29sbGF0aW9uCisvKiBQZXJpb2RzIG11c3Qg aGF2ZSBhIGRlZmF1bHQgQlRyZWUgb3BlcmF0b3IgY2xhc3MgKi8KK2NyZWF0ZSB0YWJsZSBw dCAoaWQgaW50ZWdlciwgZHMgeG1sLCBkZSB4bWwsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7 CitFUlJPUjogIG5vIHJhbmdlIHR5cGUgZm9yIHhtbCBmb3VuZCBmb3IgcGVyaW9kIHAKK0hJ TlQ6ICBZb3UgY2FuIGRlZmluZSBhIGN1c3RvbSByYW5nZSB0eXBlIHdpdGggQ1JFQVRFIFRZ UEUKKy8qIFBlcmlvZCBhbmQgY29sdW1uIG5hbWVzIGFyZSBpbiB0aGUgc2FtZSBuYW1lc3Bh Y2UgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwg cGVyaW9kIGZvciBjdGlkIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9kIG5hbWUgImN0aWQi IGNvbmZsaWN0cyB3aXRoIGEgc3lzdGVtIGNvbHVtbiBuYW1lCitjcmVhdGUgdGFibGUgcHQg KGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkp OworRVJST1I6ICBwZXJpb2QgbmFtZSAiaWQiIGNvbmZsaWN0cyB3aXRoIGEgY29sdW1uIG5h bWUKKy8qIFBlcmlvZCBuYW1lIGNhbid0IGJlIGdpdmVuIG1vcmUgdGhhbiBvbmNlICovCitj cmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoZHMsIGRlKSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKK0VSUk9SOiAgcGVyaW9k IG5hbWUgInAiIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZQorLyogTm93IG1ha2Ugb25lIHRo YXQgd29ya3MgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpKTsKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVzIHRo ZSBQRVJJT0QgKi8KK2luc2VydCBpbnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEnLCAn MjAwMS0wMS0wMScpOworc2VsZWN0ICogZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAgfCAg ICAgZGUgICAgIAorLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCAwMS0w MS0yMDAwIHwgMDEtMDEtMjAwMQorKDEgcm93KQorCisvKiBZb3UgY2FuIGdldCBpdCBpZiB5 b3Ugd2FudCAqLworc2VsZWN0ICosIHAgZnJvbSBwdDsKKyBpZCB8ICAgICBkcyAgICAgfCAg ICAgZGUgICAgIHwgICAgICAgICAgICBwICAgICAgICAgICAgCistLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAxIHwgMDEtMDEt MjAwMCB8IDAxLTAxLTIwMDEgfCBbMDEtMDEtMjAwMCwwMS0wMS0yMDAxKQorKDEgcm93KQor CisvKiBUd28gYXJlIG9rYXkgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVnZXIsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcDEgKGRzLCBkZSksIHBlcmlvZCBmb3IgcDIg KGRzLCBkZSkpOworZHJvcCB0YWJsZSBwdDI7CisvKgorICogQUxURVIgVEFCTEUgdGVzdHMK KyAqLworYWx0ZXIgdGFibGUgcHQgZHJvcCBwZXJpb2QgZm9yIHA7CithbHRlciB0YWJsZSBw dCBhZGQgcGVyaW9kIGZvciBzeXN0ZW1fdGltZSAoZHMsIGRlKTsKK0VSUk9SOiAgUEVSSU9E IEZPUiBTWVNURU1fVElNRSBpcyBub3Qgc3VwcG9ydGVkCithbHRlciB0YWJsZSBwdCBhZGQg cGVyaW9kIGZvciBwIChkcywgZGUpOworLyogQWRkaW5nIGEgc2Vjb25kIG9uZSAqLworY3Jl YXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwMSAoZHMsIGRlKSk7CithbHRlciB0YWJsZSBwdDIgYWRkIHBlcmlvZCBmb3IgcDIgKGRz LCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKy8qIENhbid0IGRyb3AgaXRzIGNvbHVtbnMgKi8K K2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRzOworRVJST1I6ICBjYW5ub3QgZHJvcCBj b2x1bW4gZHMgb2YgdGFibGUgcHQgYmVjYXVzZSBvdGhlciBvYmplY3RzIGRlcGVuZCBvbiBp dAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5kcyBvbiBjb2x1bW4gZHMg b2YgdGFibGUgcHQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBk ZXBlbmRlbnQgb2JqZWN0cyB0b28uCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVtbiBkZTsK K0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGRlIG9mIHRhYmxlIHB0IGJlY2F1c2Ugb3Ro ZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0 IGRlcGVuZHMgb24gY29sdW1uIGRlIG9mIHRhYmxlIHB0CitISU5UOiAgVXNlIERST1AgLi4u IENBU0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorLyogQ2FuJ3Qg Y2hhbmdlIHRoZSBkYXRhIHR5cGVzICovCithbHRlciB0YWJsZSBwdCBhbHRlciBjb2x1bW4g ZHMgdHlwZSB0aW1lc3RhbXA7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0eXBlIG9mIGEgY29s dW1uIHVzZWQgYnkgYSBwZXJpb2QKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0IGRl cGVuZHMgb24gY29sdW1uICJkcyIKK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0 eXBlIHRpbWVzdGFtcDsKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHR5cGUgb2YgYSBjb2x1bW4g dXNlZCBieSBhIHBlcmlvZAorREVUQUlMOiAgcGVyaW9kIHAgb24gdGFibGUgcHQgZGVwZW5k cyBvbiBjb2x1bW4gImRzIgorLyogY29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxpY3Rz ICovCithbHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdlcjsKK0VSUk9SOiAgY29s dW1uIG5hbWUgInAiIGNvbmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUKK2FsdGVyIHRhYmxl IHB0IHJlbmFtZSBjb2x1bW4gaWQgdG8gcDsKK0VSUk9SOiAgY29sdW1uIG5hbWUgInAiIGNv bmZsaWN0cyB3aXRoIGEgcGVyaW9kIG5hbWUKKy8qIGFkZGluZyBjb2x1bW5zIGFuZCB0aGUg cGVyaW9kIGF0IHRoZSBzYW1lIHRpbWUgKi8KK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludGVn ZXIpOworYWx0ZXIgdGFibGUgcHQyIGFkZCBjb2x1bW4gZHMgZGF0ZSwgYWRkIGNvbHVtbiBk ZSBkYXRlLCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworZHJvcCB0YWJsZSBwdDI7Cisv KiBBbWJpZ3VvdXMgcmFuZ2UgdHlwZXMgcmFpc2UgYW4gZXJyb3IgKi8KK2NyZWF0ZSB0eXBl IG15ZGF0ZXJhbmdlIGFzIHJhbmdlKHN1YnR5cGU9ZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQy IChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSk7CitF UlJPUjogIGFtYmlndW91cyByYW5nZSBmb3IgdHlwZSBkYXRlCisvKiBZb3UgY2FuIGdpdmUg YW4gZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50LCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0aCAocmFuZ2V0eXBl ID0gJ215ZGF0ZXJhbmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlOworRVJST1I6ICBj YW5ub3QgZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBl bmQgb24gaXQKK0RFVEFJTDogIHBlcmlvZCBwIG9uIHRhYmxlIHB0MiBkZXBlbmRzIG9uIHR5 cGUgbXlkYXRlcmFuZ2UKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRo ZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCitkcm9wIHR5cGUgbXlkYXRlcmFuZ2UgY2FzY2Fk ZTsKK05PVElDRTogIGRyb3AgY2FzY2FkZXMgdG8gcGVyaW9kIHAgb24gdGFibGUgcHQyCitk cm9wIHRhYmxlIHB0MjsKK2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUg ZGF0ZSwgcGVyaW9kIGZvciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRlcmFu Z2UnKSk7CisvKiBSYW5nZSB0eXBlIGlzIG5vdCBmb3VuZCAqLworY3JlYXRlIHRhYmxlIHB0 MyAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkgd2l0 aCAocmFuZ2V0eXBlID0gJ25vdGFyYW5nZScpKTsKK0VSUk9SOiAgUmFuZ2UgdHlwZSBub3Rh cmFuZ2Ugbm90IGZvdW5kCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBlICovCitj cmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3Ig cCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOworRVJST1I6ICBS YW5nZSB0eXBlIHRzdHpyYW5nZSBkb2VzIG5vdCBtYXRjaCBjb2x1bW4gdHlwZSBkYXRlCitk cm9wIHRhYmxlIHB0MjsKKy8qIENSRUFURSBUQUJMRSAoTElLRSAuLi4pICovCisvKiBQZXJp b2RzIGFyZSBub3QgY29waWVkIGJ5IExJS0UsIHNvIHRoZWlyIGNvbHVtbnMgYXJlbid0IGVp dGhlciAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBwdCk7CitcZCBwdDIKKyAgICAgICAg ICAgICAgICBUYWJsZSAicHVibGljLnB0MiIKKyBDb2x1bW4gfCAgVHlwZSAgIHwgQ29sbGF0 aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgIHwgaW50ZWdlciB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCisgZHMgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAg ICAgIHwgCisgZGUgICAgIHwgZGF0ZSAgICB8ICAgICAgICAgICB8ICAgICAgICAgIHwgCisK K2Ryb3AgdGFibGUgcHQyOworLyogQ2FuIGFkZCBhIHBlcmlvZCByZWZlcnJpbmcgdG8gTElL RSdkIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBub3RfcCAoaWQgaW50ZWdlciwgZHMgZGF0 ZSwgZGUgZGF0ZSk7CitjcmVhdGUgdGFibGUgcHQyIChsaWtlIG5vdF9wLCBwZXJpb2QgZm9y IHAgKGRzLCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5w dDIiCisgQ29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVs dCAKKy0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0t LQorIGlkICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAg ICB8IGRhdGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUg ICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywgZGUp CitDaGVjayBjb25zdHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8IGRl KQorCitkcm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCB0aGUgc2Ft ZSBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAgKGRz LCBkZSkpOworXGQgcHQyCisgICAgICAgICAgICAgICAgVGFibGUgInB1YmxpYy5wdDIiCisg Q29sdW1uIHwgIFR5cGUgICB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlk ICAgICB8IGludGVnZXIgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRzICAgICB8IGRh dGUgICAgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorIGRlICAgICB8IGRhdGUgICAgfCAg ICAgICAgICAgfCAgICAgICAgICB8IAorUGVyaW9kczoKKyAgICBwIChkcywgZGUpCitDaGVj ayBjb25zdHJhaW50czoKKyAgICAicHQyX3BfY2hlY2siIENIRUNLIChkcyA8IGRlKQorCitk cm9wIHRhYmxlIHB0MjsKKy8qIENhbiBhZGQgYSBwZXJpb2Qgd2l0aCBhIGRpZmZlcmVudCBu YW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJpb2QgZm9yIHAyIChkcywg ZGUpKTsKK1xkIHB0MgorICAgICAgICAgICAgICAgIFRhYmxlICJwdWJsaWMucHQyIgorIENv bHVtbiB8ICBUeXBlICAgfCBDb2xsYXRpb24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZCAg ICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkcyAgICAgfCBkYXRl ICAgIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKyBkZSAgICAgfCBkYXRlICAgIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKK1BlcmlvZHM6CisgICAgcDIgKGRzLCBkZSkKK0NoZWNr IGNvbnN0cmFpbnRzOgorICAgICJwdDJfcDJfY2hlY2siIENIRUNLIChkcyA8IGRlKQorCitk cm9wIHRhYmxlIHB0MjsKKy8qIENhbid0IGFkZCBhIHBlcmlvZCB3aG9zZSBuYW1lIGNvbmZs aWN0cyB3aXRoIGEgTElLRSdkIGNvbHVtbiAqLworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBw dCwgcGVyaW9kIGZvciBpZCAoZHMsIGRlKSk7CitFUlJPUjogIHBlcmlvZCBuYW1lICJpZCIg Y29uZmxpY3RzIHdpdGggYSBjb2x1bW4gbmFtZQorLyogQ1JFQVRFIFRBTEJFIElOSEVSSVRT ICovCisvKiBDYW4ndCBpbmhlcml0IGZyb20gYSB0YWJsZSB3aXRoIGEgcGVyaW9kICovCitj cmVhdGUgdGFibGUgcHQyIChuYW1lIHRleHQpIGluaGVyaXRzIChwdCk7CitFUlJPUjogIElu aGVyaXRpbmcgZnJvbSBhIHRhYmxlIHdpdGggYSBQRVJJT0QgaXMgbm90IHN1cHBvcnRlZAor LyogQ2FuJ3QgaW5oZXJpdCB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQyIChk MnMgZGF0ZSwgZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZDJzLCBkMmUpKSBpbmhlcml0cyAo bm90X3ApOworRVJST1I6ICBJbmhlcml0aW5nIGlzIG5vdCBzdXBwb3J0ZWQgd2hlbiBhIHRh YmxlIGhhcyBhIFBFUklPRAorZHJvcCB0YWJsZSBub3RfcDsKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCmluZGV4IDk5Y2Y2ZjE4ZDYuLjI1MTY3NzEyYzkgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVn cmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtNDMsNyArNDMsNyBAQCB0ZXN0OiBjb3B5IGNv cHlzZWxlY3QgY29weWRtbCBpbnNlcnQgaW5zZXJ0X2NvbmZsaWN0CiAjIE5vdGU6IG1hbnkg b2YgdGhlIHRlc3RzIGluIGxhdGVyIGdyb3VwcyBkZXBlbmQgb24gY3JlYXRlX2luZGV4CiAj IC0tLS0tLS0tLS0KIHRlc3Q6IGNyZWF0ZV9mdW5jdGlvbl9jIGNyZWF0ZV9taXNjIGNyZWF0 ZV9vcGVyYXRvciBjcmVhdGVfcHJvY2VkdXJlIGNyZWF0ZV90YWJsZSBjcmVhdGVfdHlwZSBj cmVhdGVfc2NoZW1hCi10ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRlX2luZGV4X3NwZ2lzdCBj cmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVkaW5nX2dpc3QKK3Rlc3Q6 IGNyZWF0ZV9pbmRleCBjcmVhdGVfaW5kZXhfc3BnaXN0IGNyZWF0ZV92aWV3IGluZGV4X2lu Y2x1ZGluZyBpbmRleF9pbmNsdWRpbmdfZ2lzdCBwZXJpb2RzCiAKICMgLS0tLS0tLS0tLQog IyBBbm90aGVyIGdyb3VwIG9mIHBhcmFsbGVsIHRlc3RzCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Blcmlv ZHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjUxNmYxY2Vm OWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wZXJpb2RzLnNx bApAQCAtMCwwICsxLDExNyBAQAorLyogU3lzdGVtIHBlcmlvZHMgYXJlIG5vdCBpbXBsZW1l bnRlZCAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBkcyBkYXRlLCBkZSBkYXRl LCBwZXJpb2QgZm9yIHN5c3RlbV90aW1lIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0 IHNwZWNpZnkgYWN0dWFsIGNvbHVtbnMgKi8KK2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdl ciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwIChib2d1cywgZGUpKTsKK2NyZWF0 ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBw IChkcywgYm9ndXMpKTsKKworLyogRGF0YSB0eXBlcyBtdXN0IG1hdGNoIGV4YWN0bHkgKi8K K2NyZWF0ZSB0YWJsZSBwdCAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgdGltZXN0YW1wLCBw ZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyB0ZXh0IGNvbGxhdGUgIkMiLCBkZSB0ZXh0IGNvbGxhdGUgIlBPU0lYIiwgcGVyaW9kIGZv ciBwIChkcywgZGUpKTsKKworLyogUGVyaW9kcyBtdXN0IGhhdmUgYSBkZWZhdWx0IEJUcmVl IG9wZXJhdG9yIGNsYXNzICovCitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIHht bCwgZGUgeG1sLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgYW5kIGNv bHVtbiBuYW1lcyBhcmUgaW4gdGhlIHNhbWUgbmFtZXNwYWNlICovCitjcmVhdGUgdGFibGUg cHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgY3RpZCAoZHMs IGRlKSk7CitjcmVhdGUgdGFibGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUs IHBlcmlvZCBmb3IgaWQgKGRzLCBkZSkpOworCisvKiBQZXJpb2QgbmFtZSBjYW4ndCBiZSBn aXZlbiBtb3JlIHRoYW4gb25jZSAqLworY3JlYXRlIHRhYmxlIHB0IChpZCBpbnRlZ2VyLCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSksIHBlcmlvZCBmb3IgcCAo ZHMsIGRlKSk7CisKKy8qIE5vdyBtYWtlIG9uZSB0aGF0IHdvcmtzICovCitjcmVhdGUgdGFi bGUgcHQgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMs IGRlKSk7CisKKy8qIFNFTEVDVCAqIGV4Y2x1ZGVzIHRoZSBQRVJJT0QgKi8KK2luc2VydCBp bnRvIHB0IHZhbHVlcyAoMSwgJzIwMDAtMDEtMDEnLCAnMjAwMS0wMS0wMScpOworc2VsZWN0 ICogZnJvbSBwdDsKKworLyogWW91IGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgKi8KK3NlbGVj dCAqLCBwIGZyb20gcHQ7CisKKy8qIFR3byBhcmUgb2theSAqLworY3JlYXRlIHRhYmxlIHB0 MiAoaWQgaW50ZWdlciwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZvciBwMSAoZHMsIGRl KSwgcGVyaW9kIGZvciBwMiAoZHMsIGRlKSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyoKKyAq IEFMVEVSIFRBQkxFIHRlc3RzCisgKi8KK2FsdGVyIHRhYmxlIHB0IGRyb3AgcGVyaW9kIGZv ciBwOworYWx0ZXIgdGFibGUgcHQgYWRkIHBlcmlvZCBmb3Igc3lzdGVtX3RpbWUgKGRzLCBk ZSk7CithbHRlciB0YWJsZSBwdCBhZGQgcGVyaW9kIGZvciBwIChkcywgZGUpOworCisvKiBB ZGRpbmcgYSBzZWNvbmQgb25lICovCitjcmVhdGUgdGFibGUgcHQyIChpZCBpbnRlZ2VyLCBk cyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAxIChkcywgZGUpKTsKK2FsdGVyIHRhYmxl IHB0MiBhZGQgcGVyaW9kIGZvciBwMiAoZHMsIGRlKTsKK2Ryb3AgdGFibGUgcHQyOworCisv KiBDYW4ndCBkcm9wIGl0cyBjb2x1bW5zICovCithbHRlciB0YWJsZSBwdCBkcm9wIGNvbHVt biBkczsKK2FsdGVyIHRhYmxlIHB0IGRyb3AgY29sdW1uIGRlOworCisvKiBDYW4ndCBjaGFu Z2UgdGhlIGRhdGEgdHlwZXMgKi8KK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0 eXBlIHRpbWVzdGFtcDsKK2FsdGVyIHRhYmxlIHB0IGFsdGVyIGNvbHVtbiBkcyB0eXBlIHRp bWVzdGFtcDsKKworLyogY29sdW1uL3BlcmlvZCBuYW1lc3BhY2UgY29uZmxpY3RzICovCith bHRlciB0YWJsZSBwdCBhZGQgY29sdW1uIHAgaW50ZWdlcjsKK2FsdGVyIHRhYmxlIHB0IHJl bmFtZSBjb2x1bW4gaWQgdG8gcDsKKworLyogYWRkaW5nIGNvbHVtbnMgYW5kIHRoZSBwZXJp b2QgYXQgdGhlIHNhbWUgdGltZSAqLworY3JlYXRlIHRhYmxlIHB0MiAoaWQgaW50ZWdlcik7 CithbHRlciB0YWJsZSBwdDIgYWRkIGNvbHVtbiBkcyBkYXRlLCBhZGQgY29sdW1uIGRlIGRh dGUsIGFkZCBwZXJpb2QgZm9yIHAgKGRzLCBkZSk7Citkcm9wIHRhYmxlIHB0MjsKKworLyog QW1iaWd1b3VzIHJhbmdlIHR5cGVzIHJhaXNlIGFuIGVycm9yICovCitjcmVhdGUgdHlwZSBt eWRhdGVyYW5nZSBhcyByYW5nZShzdWJ0eXBlPWRhdGUpOworY3JlYXRlIHRhYmxlIHB0MiAo aWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkpOworCisv KiBZb3UgY2FuIGdpdmUgYW4gZXhwbGljaXQgcmFuZ2UgdHlwZSAqLworY3JlYXRlIHRhYmxl IHB0MiAoaWQgaW50LCBkcyBkYXRlLCBkZSBkYXRlLCBwZXJpb2QgZm9yIHAgKGRzLCBkZSkg d2l0aCAocmFuZ2V0eXBlID0gJ215ZGF0ZXJhbmdlJykpOworZHJvcCB0eXBlIG15ZGF0ZXJh bmdlOworZHJvcCB0eXBlIG15ZGF0ZXJhbmdlIGNhc2NhZGU7Citkcm9wIHRhYmxlIHB0MjsK K2NyZWF0ZSB0YWJsZSBwdDIgKGlkIGludCwgZHMgZGF0ZSwgZGUgZGF0ZSwgcGVyaW9kIGZv ciBwIChkcywgZGUpIHdpdGggKHJhbmdldHlwZSA9ICdkYXRlcmFuZ2UnKSk7CisKKy8qIFJh bmdlIHR5cGUgaXMgbm90IGZvdW5kICovCitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRz IGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUg PSAnbm90YXJhbmdlJykpOworCisvKiBSYW5nZSB0eXBlIGlzIHRoZSB3cm9uZyB0eXBlICov CitjcmVhdGUgdGFibGUgcHQzIChpZCBpbnQsIGRzIGRhdGUsIGRlIGRhdGUsIHBlcmlvZCBm b3IgcCAoZHMsIGRlKSB3aXRoIChyYW5nZXR5cGUgPSAndHN0enJhbmdlJykpOworZHJvcCB0 YWJsZSBwdDI7CisKKy8qIENSRUFURSBUQUJMRSAoTElLRSAuLi4pICovCisKKy8qIFBlcmlv ZHMgYXJlIG5vdCBjb3BpZWQgYnkgTElLRSwgc28gdGhlaXIgY29sdW1ucyBhcmVuJ3QgZWl0 aGVyICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0KTsKK1xkIHB0MgorZHJvcCB0YWJs ZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJpb2QgcmVmZXJyaW5nIHRvIExJS0UnZCBjb2x1 bW5zICovCitjcmVhdGUgdGFibGUgbm90X3AgKGlkIGludGVnZXIsIGRzIGRhdGUsIGRlIGRh dGUpOworY3JlYXRlIHRhYmxlIHB0MiAobGlrZSBub3RfcCwgcGVyaW9kIGZvciBwIChkcywg ZGUpKTsKK1xkIHB0MgorZHJvcCB0YWJsZSBwdDI7CisKKy8qIENhbiBhZGQgYSBwZXJpb2Qg d2l0aCB0aGUgc2FtZSBuYW1lICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBwZXJp b2QgZm9yIHAgKGRzLCBkZSkpOworXGQgcHQyCitkcm9wIHRhYmxlIHB0MjsKKworLyogQ2Fu IGFkZCBhIHBlcmlvZCB3aXRoIGEgZGlmZmVyZW50IG5hbWUgKi8KK2NyZWF0ZSB0YWJsZSBw dDIgKGxpa2UgcHQsIHBlcmlvZCBmb3IgcDIgKGRzLCBkZSkpOworXGQgcHQyCitkcm9wIHRh YmxlIHB0MjsKKworLyogQ2FuJ3QgYWRkIGEgcGVyaW9kIHdob3NlIG5hbWUgY29uZmxpY3Rz IHdpdGggYSBMSUtFJ2QgY29sdW1uICovCitjcmVhdGUgdGFibGUgcHQyIChsaWtlIHB0LCBw ZXJpb2QgZm9yIGlkIChkcywgZGUpKTsKKworLyogQ1JFQVRFIFRBTEJFIElOSEVSSVRTICov CisKKy8qIENhbid0IGluaGVyaXQgZnJvbSBhIHRhYmxlIHdpdGggYSBwZXJpb2QgKi8KK2Ny ZWF0ZSB0YWJsZSBwdDIgKG5hbWUgdGV4dCkgaW5oZXJpdHMgKHB0KTsKKworLyogQ2FuJ3Qg aW5oZXJpdCB3aXRoIGEgcGVyaW9kICovCitjcmVhdGUgdGFibGUgcHQyIChkMnMgZGF0ZSwg ZDJlIGRhdGUsIHBlcmlvZCBmb3IgcCAoZDJzLCBkMmUpKSBpbmhlcml0cyAobm90X3ApOwor Citkcm9wIHRhYmxlIG5vdF9wOwotLSAKMi4yNS4xCgo= --------------XDFSGX0v4ADvwDYCFM5gI4Qr--