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 1qgow9-00HW7K-B2 for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Sep 2023 16:11:26 +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 1qgow7-009SdS-O3 for pgsql-hackers@arkaria.postgresql.org; Thu, 14 Sep 2023 16:11:23 +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 1qgow6-009Scq-5j for pgsql-hackers@lists.postgresql.org; Thu, 14 Sep 2023 16:11:22 +0000 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qgovq-004YDh-U3 for pgsql-hackers@lists.postgresql.org; Thu, 14 Sep 2023 16:11:20 +0000 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-1bf57366ccdso16899665ad.1 for ; Thu, 14 Sep 2023 09:11:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1694707866; x=1695312666; 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=8Y8+HKYr+Yk+oUpGjeXdrV9jWtjipLcCWxZ0iyIeAX8=; b=YSgxOcT0kEraVkKOpF0NuQD0EZPkG64GtlGf+SIPi08zSFawzLjW0/qC2xRZNB3lWh 1D0dz6MIC7jIf2wbEk1CzWuJ0EPiTYpc3MtrfPbdo3alGIO/NohtYJKyhdd9nAlkqix3 H67cYfReYxooWJUQAli/Cn98aSltRp1L4w/FHlGQXbRHkdW/xvSj0pa1+BSRa4ma2pHh i9sw78h2N1YIvnt1fHF9nKxd1EFY/ELHOOtXPslX7Xx6rs6Utg4M/B2HsGtgHg0k5zbg Ea29uR5UT1Fy4YyTOVV40pyOmbgfwbWiWWZrcAsGPOKhcGAiKCLVVHCpc6K4C9A5G2oq av0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694707866; x=1695312666; 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=8Y8+HKYr+Yk+oUpGjeXdrV9jWtjipLcCWxZ0iyIeAX8=; b=TpJvWbvvGy/6zy7wBHhdBQ/E31eqZSXU1K/Mj55MFWkQIL/2VzYuQ18HxtPmVqw/Uw a5Q/4JaSvNrQmJ14ceVrNy1Irob+CYbv4yz/lRFQ/yi/jzu1S7HYyoiX3QIbrB6/ST35 Z4BB9qIhAxTRRoOeLI7so6dgOwAiKvRBUOCpiFzgq8iqDBsZbxvDFFCRKthsQyu8olhs Eao15PRvbJFll9niY5vBo9bQCL0ZY6dSZA1bcAQBpt/KCdnuINVr0wjgw3OZN+iJcY1k 3TLYnT+dJNMzauS2nDoMXw7Pf/i39SLIX14ALGkS+pP9oyBQS2j/DPsa5fJ/3gfnA9vn 4S5A== X-Gm-Message-State: AOJu0YzN7H0RCTEzR7WWv5wx8UgxntJgZQ6ymh+0b1d904YEh/mmJUFW UGVMwa5f97ToQRPNe0Hod1FQwQ== X-Google-Smtp-Source: AGHT+IFWDb6qz4U7OdkABXOUHGRTsgfun9C+6DxFBKc+oT2RP9c2r2lHFP0/eFGyWba/ncUaC3IjGQ== X-Received: by 2002:a17:902:ab53:b0:1c1:f3f7:50bc with SMTP id ij19-20020a170902ab5300b001c1f3f750bcmr2796255plb.26.1694707865242; Thu, 14 Sep 2023 09:11:05 -0700 (PDT) Received: from [192.168.2.139] ([50.53.98.191]) by smtp.googlemail.com with ESMTPSA id z16-20020a170903019000b001ab2b4105ddsm1765647plg.60.2023.09.14.09.11.02 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 14 Sep 2023 09:11:04 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------1Pz4yQrPlGKyiycfBE07F79X" Message-ID: <5157e85a-6007-27a7-853a-5601d9c3722f@illuminatedcomputing.com> Date: Thu, 14 Sep 2023 09:11:02 -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: jian he Cc: PostgreSQL Hackers References: <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> <6f010a6e-8e20-658b-dc05-dc9033a694da@eisentraut.org> <7d44dade-ff31-5eef-80ac-78ed838066f6@postgresfriends.org> <88dadcc1-6652-ff7d-264d-73906a53dee9@illuminatedcomputing.com> From: Paul Jungwirth In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------1Pz4yQrPlGKyiycfBE07F79X Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Thanks for the thorough review and testing! Here is a v14 patch with the segfault and incorrect handling of NO ACTION and RESTRICT fixed (and reproductions added to the test suite). A few more comments below on feedback from you and Peter: On 9/12/23 02:01, jian he wrote: > hi. some trivial issue: > > in src/backend/catalog/index.c > /* * System attributes are never null, so no need to check. */ > if (attnum <= 0) > > since you already checked attnum == 0 > so here you can just attnum < 0? I fixed the "/* *" typo here. I'm reluctant to change the attnum comparison since that's not a line I touched. (It was just part of the context around the updated comment.) Your suggestion does make sense though, so perhaps it should be a separate commit? > ERROR: column "valid_at" named in WITHOUT OVERLAPS is not a range type > > IMHO, "named" is unnecessary. Changed. > doc/src/sgml/catalogs.sgml > pg_constraint adds another attribute (column): contemporal, seems no doc entry. Added. > also the temporal in oxford definition is "relating to time", here we > can deal with range. > So maybe "temporal" is not that accurate? I agree if we allow multiple WITHOUT OVERLAPS/etc clauses, we should change the terminology. I'll include that with the multiple-range-keys change discussed upthread. On 9/1/23 02:30, Peter Eisentraut wrote: > * There is a lot of talk about "temporal" in this patch, but this > functionality is more general than temporal. I would prefer to change > this to more neutral terms like "overlaps". Okay, sounds like several of us agree on this. > * The field ii_Temporal in IndexInfo doesn't seem necessary and could > be handled via local variables. See [0] for a similar discussion: > > [0]: > https://www.postgresql.org/message-id/flat/f84640e3-00d3-5abd-3f41-e6a19d33c40b@eisentraut.org Done. > * In gram.y, change withoutOverlapsClause -> without_overlaps_clause > for consistency with the surrounding code. Done. > * No-op assignments like n->without_overlaps = NULL; can be omitted. > (Or you should put them everywhere. But only in some places seems > inconsistent and confusing.) Changed. That makes sense since newNode uses palloc0fast. FWIW there is quite a lot of other code in gram.y that sets NULL fields though, including in ConstraintElem, and it seems like it does improve the clarity a little. By "everywhere" I think you mean wherever the file calls makeNode(Constraint)? I might go back and do it that way later. I'll keep working on a patch to support multiple range keys, but I wanted to work through the rest of the feedback first. Also there is some fixing to do with partitions I believe, and then I'll finish the PERIOD support. So this v14 patch is just some minor fixes & tweaks from September feedback. Yours, -- Paul ~{:-) pj@illuminatedcomputing.com --------------1Pz4yQrPlGKyiycfBE07F79X Content-Type: text/x-patch; charset=UTF-8; name="v14-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.patch" Content-Disposition: attachment; filename*0="v14-0001-Add-temporal-PRIMARY-KEY-and-UNIQUE-constraints.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA1MzE2OWI0OTA5YzFlMDZjZjgzYTYyY2Q3YjM1YmYyMmY5ZDViMzNlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IE1vbiwgMjggSnVuIDIwMjEgMTc6MzM6MjcgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNCAxLzVdIEFkZCB0ZW1wb3JhbCBQUklNQVJZIEtFWSBh bmQgVU5JUVVFIGNvbnN0cmFpbnRzCgotIEFkZGVkIFdJVEhPVVQgT1ZFUkxBUFMgdG8gdGhl IGJpc29uIGdyYW1tYXIuIFdlIHBlcm1pdCBvbmx5IHJhbmdlCiAgY29sdW1ucywgbm90IHll dCBQRVJJT0RzICh3aGljaCB3ZSdsbCBhZGQgc29vbikuCi0gVGVtcG9yYWwgUFJJTUFSWSBL RVlzIGFuZCBVTklRVUUgY29uc3RyYWludHMgYXJlIGJhY2tlZCBieSBHaVNUCiAgaW5kZXhl cyBpbnN0ZWFkIG9mIEItdHJlZSBpbmRleGVzLCBzaW5jZSB0aGV5IGFyZSBlc3NlbnRpYWxs eQogIGV4Y2x1c2lvbiBjb25zdHJhaW50cyB3aXRoID0gZm9yIHRoZSBzY2FsYXIgcGFydHMg b2YgdGhlIGtleSBhbmQgJiYKICBmb3IgdGhlIHRlbXBvcmFsIHBhcnQuCi0gQWRkZWQgcGdf Y29uc3RyYWludC5jb250ZW1wb3JhbCB0byBzYXkgd2hldGhlciBhIGNvbnN0cmFpbnQgaXMg YQogIHRlbXBvcmFsIGNvbnN0cmFpbnQuCi0gQWRkZWQgZG9jcyBhbmQgdGVzdHMuCi0gQWRk ZWQgcGdfZHVtcCBzdXBwb3J0LgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAg ICAgICAgICAgICAgICAgICB8ICAxMiArCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sICAgICAgICAgICAgfCAgMzggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5j ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4 LmMgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdf Y29uc3RyYWludC5jICAgICAgICAgICB8ICAgMiArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9p bmRleGNtZHMuYyAgICAgICAgICAgICAgfCAxNTUgKysrKysrKy0KIHNyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgICAgICB8ICAxNCArLQogc3JjL2JhY2tlbmQv Y29tbWFuZHMvdHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5k L2NvbW1hbmRzL3R5cGVjbWRzLmMgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgICAgICAgfCAgMzAgKy0KIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMgICAgICAgICAgICB8IDEyNCArKysrKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyAgICAgICAgICAgICB8ICAyOSArLQog c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyAgICAgICAgICAgIHwgIDEwICst CiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgfCAgMzUg Ky0KIHNyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggICAgICAgICAgICAgICAgICAgICB8ICAg MSArCiBzcmMvYmluL3BnX2R1bXAvdC8wMDJfcGdfZHVtcC5wbCAgICAgICAgICAgICAgfCAg NDYgKysrCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAg fCAgMTIgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXguaCAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAg ICAgfCAgIDkgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2RlZnJlbS5oICAgICAgICAgICAg ICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg ICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAg ICAgICAgICB8ICAgNCArCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBz Lm91dCAgICAgfCAzNTkgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3Bh cmFsbGVsX3NjaGVkdWxlICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsICAgICB8IDI2MiArKysrKysrKysrKysrCiAyNSBm aWxlcyBjaGFuZ2VkLCAxMTAxIGluc2VydGlvbnMoKyksIDYwIGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVy bGFwcy5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbAoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggZDE3ZmY1MWUyOC4uMTlj MmUxYzgyNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTI3MDksNiArMjcwOSwxOCBAQCBTQ1JB TS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFj ZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwv cm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9l bnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3Rm aWVsZD5jb250ZW1wb3JhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUaGlzIGNvbnN0cmFpbnQgaXMgYSBh cHBsaWNhdGlvbi10aW1lIHRlbXBvcmFsIGNvbnN0cmFpbnQsCisgICAgICAgZGVmaW5lZCB3 aXRoIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IChmb3IgcHJpbWFyeQor ICAgICAgIGtleSBhbmQgdW5pcXVlIGNvbnN0cmFpbnRzKSBvciA8bGl0ZXJhbD5QRVJJT0Q8 L2xpdGVyYWw+IChmb3IKKyAgICAgICBmb3JlaWduIGtleXMpLgorICAgICAgPC9wYXJhPjwv ZW50cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgog ICAgICAgIDxzdHJ1Y3RmaWVsZD5jb25rZXk8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnQyW108 L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCBlMDRhMDY5MmM0 Li44N2YwYWFiMTNiIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTc4 LDggKzc4LDggQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9SQVJZIHwg VEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKIFsgQ09OU1RSQUlOVCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29uc3RyYWludF9uYW1lPC9yZXBsYWNl YWJsZT4gXQogeyBDSEVDSyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBbIE5PIElOSEVSSVQgXSB8CiAgIE5PVCBOVUxMIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+ IFsgTk8gSU5IRVJJVCBdIHwKLSAgVU5JUVVFIFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBd ICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNl YWJsZT4gWywgLi4uIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhf cGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwKLSAgUFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4g XSApIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9y ZXBsYWNlYWJsZT4gfAorICBVTklRVUUgWyBOVUxMUyBbIE5PVCBdIERJU1RJTkNUIF0gKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGVtcG9yYWxf aW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJMQVBTIF0gKSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVyczwvcmVwbGFjZWFibGU+IHwK KyAgUFJJTUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1u X25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9WRVJM QVBTIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFyYW1ldGVy czwvcmVwbGFjZWFibGU+IHwKICAgRVhDTFVERSBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5pbmRleF9tZXRob2Q8L3JlcGxhY2VhYmxlPiBdICggPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2x1ZGVfZWxlbWVudDwvcmVwbGFjZWFibGU+IFdJ VEggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wZXJhdG9yPC9yZXBsYWNlYWJs ZT4gWywgLi4uIF0gKSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfcGFy YW1ldGVyczwvcmVwbGFjZWFibGU+IFsgV0hFUkUgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+cHJlZGljYXRlPC9yZXBsYWNlYWJsZT4gKSBdIHwKICAgRk9SRUlHTiBLRVkg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi4gXSApIFJFRkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnJlZnRhYmxlPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yZWZjb2x1bW48L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApIF0KICAgICBbIE1B VENIIEZVTEwgfCBNQVRDSCBQQVJUSUFMIHwgTUFUQ0ggU0lNUExFIF0gWyBPTiBERUxFVEUg PHJlcGxhY2VhYmxlCkBAIC0xMDcsNiArMTA3LDEwIEBAIFdJVEggKCBNT0RVTFVTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxl PiwgUkVNCiAKIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1l PC9yZXBsYWNlYWJsZT4gfCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHBy ZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSB9IFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPm9wY2xhc3M8L3JlcGxhY2VhYmxlPiBdIFsgQVNDIHwgREVTQyBdIFsgTlVMTFMgeyBG SVJTVCB8IExBU1QgfSBdCiAKKzxwaHJhc2U+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gaW4gYSA8bGl0ZXJhbD5QUklN QVJZIEtFWTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlVOSVFVRTwvbGl0ZXJhbD4sIG9yIDxsaXRl cmFsPkZPUkVJR04gS0VZPC9saXRlcmFsPiBjb25zdHJhaW50IGlzOjwvcGhyYXNlPgorCis8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2VfY29sdW1uX25hbWU8L3JlcGxh Y2VhYmxlPgorCiA8cGhyYXNlPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZl cmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBpbiBhIDxsaXRlcmFsPkZPUkVJR04gS0VZ PC9saXRlcmFsPi88bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBjb25zdHJhaW50IGlz OjwvcGhyYXNlPgogCiB7IE5PIEFDVElPTiB8IFJFU1RSSUNUIHwgQ0FTQ0FERSB8IFNFVCBO VUxMIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gfCBTRVQgREVGQVVMVCBbICggPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0g KSBdIH0KQEAgLTEwMDEsNyArMTAwNSwxMCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJF TQogCiAgICAgIDxwYXJhPgogICAgICAgQWRkaW5nIGEgdW5pcXVlIGNvbnN0cmFpbnQgd2ls bCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHVuaXF1ZSBidHJlZQotICAgICAgaW5kZXggb24g dGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlIGNvbnN0cmFpbnQu CisgICAgICBpbmRleCBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mIGNvbHVtbnMgdXNlZCBp biB0aGUgY29uc3RyYWludC4gQnV0IGlmCisgICAgICB0aGUgY29uc3RyYWludCBpbmNsdWRl cyBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IGNsYXVzZSwKKyAgICAg IGl0IHdpbGwgdXNlIGEgR2lTVCBpbmRleCBhbmQgYmVoYXZlIGxpa2UgYSB0ZW1wb3JhbCA8 bGl0ZXJhbD5QUklNQVJZCisgICAgICBLRVk8L2xpdGVyYWw+OiBwcmV2ZW50aW5nIGR1cGxp Y2F0ZXMgb25seSBpbiBvdmVybGFwcGluZyB0aW1lIHBlcmlvZHMuCiAgICAgIDwvcGFyYT4K IAogICAgICA8cGFyYT4KQEAgLTEwMTksNyArMTAyNiw4IEBAIFdJVEggKCBNT0RVTFVTIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2Vh YmxlPiwgUkVNCiAKICAgIDx2YXJsaXN0ZW50cnkgaWQ9InNxbC1jcmVhdGV0YWJsZS1wYXJt cy1wcmltYXJ5LWtleSI+CiAgICAgPHRlcm0+PGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVy YWw+IChjb2x1bW4gY29uc3RyYWludCk8L3Rlcm0+Ci0gICAgPHRlcm0+PGxpdGVyYWw+UFJJ TUFSWSBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8 L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSApPC9saXRlcmFsPgorICAgIDx0ZXJtPjxsaXRlcmFs PlBSSU1BUlkgS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9u YW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KKyAgICBbLCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBXSVRIT1VUIE9W RVJMQVBTIF0gKTwvbGl0ZXJhbD4KICAgICA8b3B0aW9uYWw+IDxsaXRlcmFsPklOQ0xVREUg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbLCAuLi5dKTwvbGl0ZXJhbD4gPC9vcHRpb25hbD4gKHRhYmxlIGNvbnN0cmFpbnQp PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+CkBAIC0xMDUzLDggKzEwNjEs OCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVt ZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogCiAgICAgIDxwYXJhPgogICAgICAg QWRkaW5nIGEgPGxpdGVyYWw+UFJJTUFSWSBLRVk8L2xpdGVyYWw+IGNvbnN0cmFpbnQgd2ls bCBhdXRvbWF0aWNhbGx5Ci0gICAgICBjcmVhdGUgYSB1bmlxdWUgYnRyZWUgaW5kZXggb24g dGhlIGNvbHVtbiBvciBncm91cCBvZiBjb2x1bW5zIHVzZWQgaW4gdGhlCi0gICAgICBjb25z dHJhaW50LgorICAgICAgY3JlYXRlIGEgdW5pcXVlIGJ0cmVlIGluZGV4IChvciBHaVNUIGlm IHRlbXBvcmFsKSBvbiB0aGUgY29sdW1uIG9yIGdyb3VwIG9mCisgICAgICBjb2x1bW5zIHVz ZWQgaW4gdGhlIGNvbnN0cmFpbnQuCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4KQEAg LTEwNjcsNiArMTA3NSwyNCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAg KGUuZy4sIDxsaXRlcmFsPkRST1AgQ09MVU1OPC9saXRlcmFsPikgY2FuIGNhdXNlIGNhc2Nh ZGVkIGNvbnN0cmFpbnQgYW5kCiAgICAgICBpbmRleCBkZWxldGlvbi4KICAgICAgPC9wYXJh PgorCisgICAgIDxwYXJhPgorICAgICAgQSA8bGl0ZXJhbD5QUklNQVJZIEtFWTwvbGl0ZXJh bD4gd2l0aCBhIDxsaXRlcmFsPldJVEhPVVQgT1ZFUkxBUFM8L2xpdGVyYWw+IG9wdGlvbgor ICAgICAgaXMgYSA8ZW1waGFzaXM+dGVtcG9yYWw8L2VtcGhhc2lzPiBwcmltYXJ5IGtleS4K KyAgICAgIFRoZSA8bGl0ZXJhbD5XSVRIT1VUIE9WRVJMQVBTPC9saXRlcmFsPiB2YWx1ZQor ICAgICAgbXVzdCBiZSBhIHJhbmdlIHR5cGUgYW5kIGlzIHVzZWQgdG8gY29uc3RyYWluIHRo ZSByZWNvcmQncyBhcHBsaWNhYmlsaXR5CisgICAgICB0byBqdXN0IHRoYXQgaW50ZXJ2YWwg KHVzdWFsbHkgYSByYW5nZSBvZiBkYXRlcyBvciB0aW1lc3RhbXBzKS4KKyAgICAgIFRoZSBt YWluIHBhcnQgb2YgdGhlIHByaW1hcnkga2V5IG1heSBiZSByZXBlYXRlZCBpbiBvdGhlciBy b3dzIG9mIHRoZSB0YWJsZSwKKyAgICAgIGFzIGxvbmcgYXMgcmVjb3JkcyB3aXRoIHRoZSBz YW1lIGtleSBkb24ndCBvdmVybGFwIGluIHRoZQorICAgICAgPGxpdGVyYWw+V0lUSE9VVCBP VkVSTEFQUzwvbGl0ZXJhbD4gY29sdW1uLgorICAgICA8L3BhcmE+CisKKyAgICAgPHBhcmE+ CisgICAgICBBIHRlbXBvcmFsIDxsaXRlcmFsPlBSSU1BUlkgS0VZPC9saXRlcmFsPiBpcyBl bmZvcmNlZCB3aXRoIGFuCisgICAgICA8bGl0ZXJhbD5FWENMVURFPC9saXRlcmFsPiBjb25z dHJhaW50IHJhdGhlciB0aGFuIGEgPGxpdGVyYWw+VU5JUVVFPC9saXRlcmFsPgorICAgICAg Y29uc3RyYWludCwgYmFja2VkIGJ5IGEgR2lTVCBpbmRleC4gWW91IG1heSBuZWVkIHRvIGlu c3RhbGwgdGhlCisgICAgICA8eHJlZiBsaW5rZW5kPSJidHJlZS1naXN0Ii8+IGV4dGVuc2lv biB0byBjcmVhdGUgdGVtcG9yYWwgcHJpbWFyeSBrZXlzLgorICAgICA8L3BhcmE+CiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jYXRhbG9nL2hlYXAuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCmluZGV4 IGI0MjcxMWY1NzQuLjcxNDhkZDE3ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFs b2cvaGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaGVhcC5jCkBAIC0yMTQwLDYg KzIxNDAsNyBAQCBTdG9yZVJlbENoZWNrKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY2Nu YW1lLCBOb2RlICpleHByLAogCQkJCQkJCSAgaXNfbG9jYWwsIC8qIGNvbmlzbG9jYWwgKi8K IAkJCQkJCQkgIGluaGNvdW50LCAvKiBjb25pbmhjb3VudCAqLwogCQkJCQkJCSAgaXNfbm9f aW5oZXJpdCwJLyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29udGVt cG9yYWwgKi8KIAkJCQkJCQkgIGlzX2ludGVybmFsKTsgLyogaW50ZXJuYWxseSBjb25zdHJ1 Y3RlZD8gKi8KIAogCXBmcmVlKGNjYmluKTsKQEAgLTIxOTAsNiArMjE5MSw3IEBAIFN0b3Jl UmVsTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKm5ubmFtZSwgQXR0ck51bWJl ciBhdHRudW0sCiAJCQkJCQkJICBpc19sb2NhbCwKIAkJCQkJCQkgIGluaGNvdW50LAogCQkJ CQkJCSAgaXNfbm9faW5oZXJpdCwKKwkJCQkJCQkgIGZhbHNlLAkvKiBjb250ZW1wb3JhbCAq LwogCQkJCQkJCSAgZmFsc2UpOwogCXJldHVybiBjb25zdHJPaWQ7CiB9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL2lu ZGV4LmMKaW5kZXggNzJmNDc2YjUxZC4uMWE2MTdiMDQyZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY2F0YWxvZy9pbmRleC5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXgu YwpAQCAtMjU1LDggKzI1NSw4IEBAIGluZGV4X2NoZWNrX3ByaW1hcnlfa2V5KFJlbGF0aW9u IGhlYXBSZWwsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVE KSwKIAkJCQkJIGVycm1zZygicHJpbWFyeSBrZXlzIGNhbm5vdCBiZSBleHByZXNzaW9ucyIp KSk7CiAKLQkJLyogU3lzdGVtIGF0dHJpYnV0ZXMgYXJlIG5ldmVyIG51bGwsIHNvIG5vIG5l ZWQgdG8gY2hlY2sgKi8KLQkJaWYgKGF0dG51bSA8IDApCisJCS8qIFN5c3RlbSBhdHRyaWJ1 dGVzIGFyZSBuZXZlciBudWxsLCBzbyBubyBuZWVkIHRvIGNoZWNrLiAqLworCQlpZiAoYXR0 bnVtIDw9IDApCiAJCQljb250aW51ZTsKIAogCQlhdHR0dXBsZSA9IFNlYXJjaFN5c0NhY2hl MihBVFROVU0sCkBAIC0xODk3LDYgKzE4OTcsNyBAQCBpbmRleF9jb25jdXJyZW50bHlfc2V0 X2RlYWQoT2lkIGhlYXBJZCwgT2lkIGluZGV4SWQpCiAgKgkJSU5ERVhfQ09OU1RSX0NSRUFU RV9VUERBVEVfSU5ERVg6IHVwZGF0ZSB0aGUgcGdfaW5kZXggcm93CiAgKgkJSU5ERVhfQ09O U1RSX0NSRUFURV9SRU1PVkVfT0xEX0RFUFM6IHJlbW92ZSBleGlzdGluZyBkZXBlbmRlbmNp ZXMKICAqCQkJb2YgaW5kZXggb24gdGFibGUncyBjb2x1bW5zCisgKgkJSU5ERVhfQ09OU1RS X0NSRUFURV9URU1QT1JBTDogY29uc3RyYWludCBpcyBmb3IgYSB0ZW1wb3JhbCBwcmltYXJ5 IGtleQogICogYWxsb3dfc3lzdGVtX3RhYmxlX21vZHM6IGFsbG93IHRhYmxlIHRvIGJlIGEg c3lzdGVtIGNhdGFsb2cKICAqIGlzX2ludGVybmFsOiBpbmRleCBpcyBjb25zdHJ1Y3RlZCBk dWUgdG8gaW50ZXJuYWwgcHJvY2VzcwogICovCkBAIC0xOTIwLDExICsxOTIxLDEzIEBAIGlu ZGV4X2NvbnN0cmFpbnRfY3JlYXRlKFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKIAlib29sCQlt YXJrX2FzX3ByaW1hcnk7CiAJYm9vbAkJaXNsb2NhbDsKIAlib29sCQlub2luaGVyaXQ7CisJ Ym9vbAkJaXNfdGVtcG9yYWw7CiAJaW50CQkJaW5oY291bnQ7CiAKIAlkZWZlcnJhYmxlID0g KGNvbnN0cl9mbGFncyAmIElOREVYX0NPTlNUUl9DUkVBVEVfREVGRVJSQUJMRSkgIT0gMDsK IAlpbml0ZGVmZXJyZWQgPSAoY29uc3RyX2ZsYWdzICYgSU5ERVhfQ09OU1RSX0NSRUFURV9J TklUX0RFRkVSUkVEKSAhPSAwOwogCW1hcmtfYXNfcHJpbWFyeSA9IChjb25zdHJfZmxhZ3Mg JiBJTkRFWF9DT05TVFJfQ1JFQVRFX01BUktfQVNfUFJJTUFSWSkgIT0gMDsKKwlpc190ZW1w b3JhbCA9IChjb25zdHJfZmxhZ3MgJiBJTkRFWF9DT05TVFJfQ1JFQVRFX1RFTVBPUkFMKSAh PSAwOwogCiAJLyogY29uc3RyYWludCBjcmVhdGlvbiBzdXBwb3J0IGRvZXNuJ3Qgd29yayB3 aGlsZSBib290c3RyYXBwaW5nICovCiAJQXNzZXJ0KCFJc0Jvb3RzdHJhcFByb2Nlc3NpbmdN b2RlKCkpOwpAQCAtMjAwMSw2ICsyMDA0LDcgQEAgaW5kZXhfY29uc3RyYWludF9jcmVhdGUo UmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJCQkJCQkgICBpc2xvY2FsLAogCQkJCQkJCQkg ICBpbmhjb3VudCwKIAkJCQkJCQkJICAgbm9pbmhlcml0LAorCQkJCQkJCQkgICBpc190ZW1w b3JhbCwJLyogY29udGVtcG9yYWwgKi8KIAkJCQkJCQkJICAgaXNfaW50ZXJuYWwpOwogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfY29uc3RyYWludC5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKaW5kZXggZTlkNGQ2MDA2ZS4u ZDUzMjljYThjOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJh aW50LmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19jb25zdHJhaW50LmMKQEAgLTc4 LDYgKzc4LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNvbnN0cmFp bnROYW1lLAogCQkJCQkgIGJvb2wgY29uSXNMb2NhbCwKIAkJCQkJICBpbnQgY29uSW5oQ291 bnQsCiAJCQkJCSAgYm9vbCBjb25Ob0luaGVyaXQsCisJCQkJCSAgYm9vbCBjb25UZW1wb3Jh bCwKIAkJCQkJICBib29sIGlzX2ludGVybmFsKQogewogCVJlbGF0aW9uCWNvbkRlc2M7CkBA IC0xOTMsNiArMTk0LDcgQEAgQ3JlYXRlQ29uc3RyYWludEVudHJ5KGNvbnN0IGNoYXIgKmNv bnN0cmFpbnROYW1lLAogCXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29uaXNsb2NhbCAt IDFdID0gQm9vbEdldERhdHVtKGNvbklzTG9jYWwpOwogCXZhbHVlc1tBbnVtX3BnX2NvbnN0 cmFpbnRfY29uaW5oY291bnQgLSAxXSA9IEludDE2R2V0RGF0dW0oY29uSW5oQ291bnQpOwog CXZhbHVlc1tBbnVtX3BnX2NvbnN0cmFpbnRfY29ubm9pbmhlcml0IC0gMV0gPSBCb29sR2V0 RGF0dW0oY29uTm9Jbmhlcml0KTsKKwl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbnRl bXBvcmFsIC0gMV0gPSBCb29sR2V0RGF0dW0oY29uVGVtcG9yYWwpOwogCiAJaWYgKGNvbmtl eUFycmF5KQogCQl2YWx1ZXNbQW51bV9wZ19jb25zdHJhaW50X2NvbmtleSAtIDFdID0gUG9p bnRlckdldERhdHVtKGNvbmtleUFycmF5KTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2luZGV4Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhjbWRzLmMK aW5kZXggYWI4YjgxYjMwMi4uNzk0YmRlMTkwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvaW5kZXhjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvaW5kZXhj bWRzLmMKQEAgLTczLDYgKzczLDExIEBACiAvKiBub24tZXhwb3J0IGZ1bmN0aW9uIHByb3Rv dHlwZXMgKi8KIHN0YXRpYyBib29sIENvbXBhcmVPcGNsYXNzT3B0aW9ucyhjb25zdCBEYXR1 bSAqb3B0czEsIGNvbnN0IERhdHVtICpvcHRzMiwgaW50IG5hdHRzKTsKIHN0YXRpYyB2b2lk IENoZWNrUHJlZGljYXRlKEV4cHIgKnByZWRpY2F0ZSk7CitzdGF0aWMgdm9pZCBnZXRfaW5k ZXhfYXR0cl90ZW1wb3JhbF9vcGVyYXRvcihPaWQgb3BjbGFzcywKKwkJCQkJCQkJCQkJIE9p ZCBhdHR0eXBlLAorCQkJCQkJCQkJCQkgYm9vbCBpc292ZXJsYXBzLAorCQkJCQkJCQkJCQkg T2lkICpvcGlkLAorCQkJCQkJCQkJCQkgaW50ICpzdHJhdCk7CiBzdGF0aWMgdm9pZCBDb21w dXRlSW5kZXhBdHRycyhJbmRleEluZm8gKmluZGV4SW5mbywKIAkJCQkJCQkgIE9pZCAqdHlw ZU9pZHMsCiAJCQkJCQkJICBPaWQgKmNvbGxhdGlvbk9pZHMsCkBAIC04NSw2ICs5MCw3IEBA IHN0YXRpYyB2b2lkIENvbXB1dGVJbmRleEF0dHJzKEluZGV4SW5mbyAqaW5kZXhJbmZvLAog CQkJCQkJCSAgT2lkIGFjY2Vzc01ldGhvZElkLAogCQkJCQkJCSAgYm9vbCBhbWNhbm9yZGVy LAogCQkJCQkJCSAgYm9vbCBpc2NvbnN0cmFpbnQsCisJCQkJCQkJICBib29sIGlzdGVtcG9y YWwsCiAJCQkJCQkJICBPaWQgZGRsX3VzZXJpZCwKIAkJCQkJCQkgIGludCBkZGxfc2VjX2Nv bnRleHQsCiAJCQkJCQkJICBpbnQgKmRkbF9zYXZlX25lc3RsZXZlbCk7CkBAIC0xNDIsNiAr MTQ4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVpbmRleEVycm9ySW5mbwogICoJCXRvIGluZGV4 IG9uLgogICogJ2V4Y2x1c2lvbk9wTmFtZXMnOiBsaXN0IG9mIG5hbWVzIG9mIGV4Y2x1c2lv bi1jb25zdHJhaW50IG9wZXJhdG9ycywKICAqCQlvciBOSUwgaWYgbm90IGFuIGV4Y2x1c2lv biBjb25zdHJhaW50LgorICogJ2lzdGVtcG9yYWwnOiB0cnVlIGlmZiB0aGlzIGluZGV4IGhh cyBhIFdJVEhPVVQgT1ZFUkxBUFMgY2xhdXNlLgogICoKICAqIFRoaXMgaXMgdGFpbG9yZWQg dG8gdGhlIG5lZWRzIG9mIEFMVEVSIFRBQkxFIEFMVEVSIFRZUEUsIHdoaWNoIHJlY3JlYXRl cwogICogYW55IGluZGV4ZXMgdGhhdCBkZXBlbmRlZCBvbiBhIGNoYW5naW5nIGNvbHVtbiBm cm9tIHRoZWlyIHBnX2dldF9pbmRleGRlZgpAQCAtMTcxLDcgKzE3OCw4IEBAIGJvb2wKIENo ZWNrSW5kZXhDb21wYXRpYmxlKE9pZCBvbGRJZCwKIAkJCQkJIGNvbnN0IGNoYXIgKmFjY2Vz c01ldGhvZE5hbWUsCiAJCQkJCSBjb25zdCBMaXN0ICphdHRyaWJ1dGVMaXN0LAotCQkJCQkg Y29uc3QgTGlzdCAqZXhjbHVzaW9uT3BOYW1lcykKKwkJCQkJIGNvbnN0IExpc3QgKmV4Y2x1 c2lvbk9wTmFtZXMsCisJCQkJCSBib29sIGlzdGVtcG9yYWwpCiB7CiAJYm9vbAkJaXNjb25z dHJhaW50OwogCU9pZAkJICAgKnR5cGVJZHM7CkBAIC0yNDQsOCArMjUyLDggQEAgQ2hlY2tJ bmRleENvbXBhdGlibGUoT2lkIG9sZElkLAogCQkJCQkgIGNvbG9wdGlvbnMsIGF0dHJpYnV0 ZUxpc3QsCiAJCQkJCSAgZXhjbHVzaW9uT3BOYW1lcywgcmVsYXRpb25JZCwKIAkJCQkJICBh Y2Nlc3NNZXRob2ROYW1lLCBhY2Nlc3NNZXRob2RJZCwKLQkJCQkJICBhbWNhbm9yZGVyLCBp c2NvbnN0cmFpbnQsIEludmFsaWRPaWQsIDAsIE5VTEwpOwotCisJCQkJCSAgYW1jYW5vcmRl ciwgaXNjb25zdHJhaW50LCBpc3RlbXBvcmFsLCBJbnZhbGlkT2lkLAorCQkJCQkgIDAsIE5V TEwpOwogCiAJLyogR2V0IHRoZSBzb29uLW9ic29sZXRlIHBnX2luZGV4IHR1cGxlLiAqLwog CXR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKElOREVYUkVMSUQsIE9iamVjdElkR2V0RGF0dW0o b2xkSWQpKTsKQEAgLTU1Myw2ICs1NjEsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwK IAlib29sCQlhbWNhbm9yZGVyOwogCWJvb2wJCWFtaXNzdW1tYXJpemluZzsKIAlhbW9wdGlv bnNfZnVuY3Rpb24gYW1vcHRpb25zOworCWJvb2wJCWV4Y2x1c2lvbjsKIAlib29sCQlwYXJ0 aXRpb25lZDsKIAlib29sCQlzYWZlX2luZGV4OwogCURhdHVtCQlyZWxvcHRpb25zOwpAQCAt NjcxLDYgKzY4MCwxMiBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAogCW5hbWVzcGFj ZUlkID0gUmVsYXRpb25HZXROYW1lc3BhY2UocmVsKTsKIAorCS8qCisJICogSXQgaGFzIGV4 Y2x1c2lvbiBjb25zdHJhaW50IGJlaGF2aW9yIGlmIGl0J3MgYW4gRVhDTFVERSBjb25zdHJh aW50CisJICogb3IgYSB0ZW1wb3JhbCBQUklNQVJZIEtFWS9VTklRVUUgY29uc3RyYWludAor CSAqLworCWV4Y2x1c2lvbiA9IHN0bXQtPmV4Y2x1ZGVPcE5hbWVzIHx8IHN0bXQtPmlzdGVt cG9yYWw7CisKIAkvKiBFbnN1cmUgdGhhdCBpdCBtYWtlcyBzZW5zZSB0byBpbmRleCB0aGlz IGtpbmQgb2YgcmVsYXRpb24gKi8KIAlzd2l0Y2ggKHJlbC0+cmRfcmVsLT5yZWxraW5kKQog CXsKQEAgLTgzOSw3ICs4NTQsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAlwZ3N0 YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dSRVNTX0NSRUFURUlEWF9BQ0NFU1NfTUVU SE9EX09JRCwKIAkJCQkJCQkJIGFjY2Vzc01ldGhvZElkKTsKIAotCWlmIChzdG10LT51bmlx dWUgJiYgIWFtUm91dGluZS0+YW1jYW51bmlxdWUpCisJaWYgKHN0bXQtPnVuaXF1ZSAmJiAh c3RtdC0+aXN0ZW1wb3JhbCAmJiAhYW1Sb3V0aW5lLT5hbWNhbnVuaXF1ZSkKIAkJZXJlcG9y dChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCks CiAJCQkJIGVycm1zZygiYWNjZXNzIG1ldGhvZCBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCB1 bmlxdWUgaW5kZXhlcyIsCkBAIC04NTQsNyArODY5LDcgQEAgRGVmaW5lSW5kZXgoT2lkIHRh YmxlSWQsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAog CQkJCSBlcnJtc2coImFjY2VzcyBtZXRob2QgXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgbXVs dGljb2x1bW4gaW5kZXhlcyIsCiAJCQkJCQlhY2Nlc3NNZXRob2ROYW1lKSkpOwotCWlmIChz dG10LT5leGNsdWRlT3BOYW1lcyAmJiBhbVJvdXRpbmUtPmFtZ2V0dHVwbGUgPT0gTlVMTCkK KwlpZiAoZXhjbHVzaW9uICYmIGFtUm91dGluZS0+YW1nZXR0dXBsZSA9PSBOVUxMKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKIAkJCQkgZXJybXNnKCJhY2Nlc3MgbWV0aG9kIFwiJXNcIiBkb2VzIG5vdCBzdXBw b3J0IGV4Y2x1c2lvbiBjb25zdHJhaW50cyIsCkBAIC05MDYsOCArOTIxLDkgQEAgRGVmaW5l SW5kZXgoT2lkIHRhYmxlSWQsCiAJCQkJCSAgY29sb3B0aW9ucywgYWxsSW5kZXhQYXJhbXMs CiAJCQkJCSAgc3RtdC0+ZXhjbHVkZU9wTmFtZXMsIHRhYmxlSWQsCiAJCQkJCSAgYWNjZXNz TWV0aG9kTmFtZSwgYWNjZXNzTWV0aG9kSWQsCi0JCQkJCSAgYW1jYW5vcmRlciwgc3RtdC0+ aXNjb25zdHJhaW50LCByb290X3NhdmVfdXNlcmlkLAotCQkJCQkgIHJvb3Rfc2F2ZV9zZWNf Y29udGV4dCwgJnJvb3Rfc2F2ZV9uZXN0bGV2ZWwpOworCQkJCQkgIGFtY2Fub3JkZXIsIHN0 bXQtPmlzY29uc3RyYWludCwgc3RtdC0+aXN0ZW1wb3JhbCwKKwkJCQkJICByb290X3NhdmVf dXNlcmlkLCByb290X3NhdmVfc2VjX2NvbnRleHQsCisJCQkJCSAgJnJvb3Rfc2F2ZV9uZXN0 bGV2ZWwpOwogCiAJLyoKIAkgKiBFeHRyYSBjaGVja3Mgd2hlbiBjcmVhdGluZyBhIFBSSU1B UlkgS0VZIGluZGV4LgpAQCAtOTI1LDcgKzk0MSw3IEBAIERlZmluZUluZGV4KE9pZCB0YWJs ZUlkLAogCSAqIFdlIGNvdWxkIGxpZnQgdGhpcyBsaW1pdGF0aW9uIGlmIHdlIGhhZCBnbG9i YWwgaW5kZXhlcywgYnV0IHRob3NlIGhhdmUKIAkgKiB0aGVpciBvd24gcHJvYmxlbXMsIHNv IHRoaXMgaXMgYSB1c2VmdWwgZmVhdHVyZSBjb21iaW5hdGlvbi4KIAkgKi8KLQlpZiAocGFy dGl0aW9uZWQgJiYgKHN0bXQtPnVuaXF1ZSB8fCBzdG10LT5leGNsdWRlT3BOYW1lcykpCisJ aWYgKHBhcnRpdGlvbmVkICYmIChzdG10LT51bmlxdWUgfHwgZXhjbHVzaW9uKSkKIAl7CiAJ CVBhcnRpdGlvbktleSBrZXkgPSBSZWxhdGlvbkdldFBhcnRpdGlvbktleShyZWwpOwogCQlj b25zdCBjaGFyICpjb25zdHJhaW50X3R5cGU7CkBAIC05MzMsNiArOTQ5LDggQEAgRGVmaW5l SW5kZXgoT2lkIHRhYmxlSWQsCiAKIAkJaWYgKHN0bXQtPnByaW1hcnkpCiAJCQljb25zdHJh aW50X3R5cGUgPSAiUFJJTUFSWSBLRVkiOworCQllbHNlIGlmIChzdG10LT51bmlxdWUgJiYg c3RtdC0+aXN0ZW1wb3JhbCkKKwkJCWNvbnN0cmFpbnRfdHlwZSA9ICJ0ZW1wb3JhbCBVTklR VUUiOwogCQllbHNlIGlmIChzdG10LT51bmlxdWUpCiAJCQljb25zdHJhaW50X3R5cGUgPSAi VU5JUVVFIjsKIAkJZWxzZSBpZiAoc3RtdC0+ZXhjbHVkZU9wTmFtZXMpCkBAIC05NzksMTAg Kzk5NywxMCBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJCSAqIGFzc29jaWF0ZWQg d2l0aCBpbmRleCBjb2x1bW5zLCB0b28uICBXZSBrbm93IHdoYXQgdG8gZG8gd2l0aAogCQkJ ICogYnRyZWUgb3BjbGFzc2VzOyBpZiB0aGVyZSBhcmUgZXZlciBhbnkgb3RoZXIgaW5kZXgg dHlwZXMgdGhhdAogCQkJICogc3VwcG9ydCB1bmlxdWUgaW5kZXhlcywgdGhpcyBsb2dpYyB3 aWxsIG5lZWQgZXh0ZW5zaW9uLiBCdXQgaWYKLQkJCSAqIHdlIGhhdmUgYW4gZXhjbHVzaW9u IGNvbnN0cmFpbnQsIGl0IGFscmVhZHkga25vd3MgdGhlCi0JCQkgKiBvcGVyYXRvcnMsIHNv IHdlIGRvbid0IGhhdmUgdG8gaW5mZXIgdGhlbS4KKwkJCSAqIHdlIGhhdmUgYW4gZXhjbHVz aW9uIGNvbnN0cmFpbnQgKG9yIGEgdGVtcG9yYWwgUEspLCBpdCBhbHJlYWR5CisJCQkgKiBr bm93cyB0aGUgb3BlcmF0b3JzLCBzbyB3ZSBkb24ndCBoYXZlIHRvIGluZmVyIHRoZW0uCiAJ CQkgKi8KLQkJCWlmIChzdG10LT51bmlxdWUgJiYgYWNjZXNzTWV0aG9kSWQgIT0gQlRSRUVf QU1fT0lEKQorCQkJaWYgKHN0bXQtPnVuaXF1ZSAmJiAhc3RtdC0+aXN0ZW1wb3JhbCAmJiBh Y2Nlc3NNZXRob2RJZCAhPSBCVFJFRV9BTV9PSUQpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJCSBl cnJtc2coImNhbm5vdCBtYXRjaCBwYXJ0aXRpb24ga2V5IHRvIGFuIGluZGV4IHVzaW5nIGFj Y2VzcyBtZXRob2QgXCIlc1wiIiwKQEAgLTEwMTUsMTIgKzEwMzMsMTIgQEAgRGVmaW5lSW5k ZXgoT2lkIHRhYmxlSWQsCiAJCQkJCXsKIAkJCQkJCU9pZAkJCWlkeF9lcW9wID0gSW52YWxp ZE9pZDsKIAotCQkJCQkJaWYgKHN0bXQtPnVuaXF1ZSkKKwkJCQkJCWlmIChzdG10LT51bmlx dWUgJiYgIXN0bXQtPmlzdGVtcG9yYWwpCiAJCQkJCQkJaWR4X2Vxb3AgPSBnZXRfb3BmYW1p bHlfbWVtYmVyKGlkeF9vcGZhbWlseSwKIAkJCQkJCQkJCQkJCQkJICAgaWR4X29wY2ludHlw ZSwKIAkJCQkJCQkJCQkJCQkJICAgaWR4X29wY2ludHlwZSwKIAkJCQkJCQkJCQkJCQkJICAg QlRFcXVhbFN0cmF0ZWd5TnVtYmVyKTsKLQkJCQkJCWVsc2UgaWYgKHN0bXQtPmV4Y2x1ZGVP cE5hbWVzKQorCQkJCQkJZWxzZSBpZiAoZXhjbHVzaW9uKQogCQkJCQkJCWlkeF9lcW9wID0g aW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHNbal07CiAJCQkJCQlBc3NlcnQoaWR4X2Vxb3Ap OwogCkBAIC0xMDI5LDcgKzEwNDcsNyBAQCBEZWZpbmVJbmRleChPaWQgdGFibGVJZCwKIAkJ CQkJCQlmb3VuZCA9IHRydWU7CiAJCQkJCQkJYnJlYWs7CiAJCQkJCQl9Ci0JCQkJCQllbHNl IGlmIChzdG10LT5leGNsdWRlT3BOYW1lcykKKwkJCQkJCWVsc2UgaWYgKGV4Y2x1c2lvbikK IAkJCQkJCXsKIAkJCQkJCQkvKgogCQkJCQkJCSAqIFdlIGZvdW5kIGEgbWF0Y2gsIGJ1dCBp dCdzIG5vdCBhbiBlcXVhbGl0eQpAQCAtMTE3Myw2ICsxMTkxLDggQEAgRGVmaW5lSW5kZXgo T2lkIHRhYmxlSWQsCiAJCWNvbnN0cl9mbGFncyB8PSBJTkRFWF9DT05TVFJfQ1JFQVRFX0RF RkVSUkFCTEU7CiAJaWYgKHN0bXQtPmluaXRkZWZlcnJlZCkKIAkJY29uc3RyX2ZsYWdzIHw9 IElOREVYX0NPTlNUUl9DUkVBVEVfSU5JVF9ERUZFUlJFRDsKKwlpZiAoc3RtdC0+aXN0ZW1w b3JhbCkKKwkJY29uc3RyX2ZsYWdzIHw9IElOREVYX0NPTlNUUl9DUkVBVEVfVEVNUE9SQUw7 CiAKIAlpbmRleFJlbGF0aW9uSWQgPQogCQlpbmRleF9jcmVhdGUocmVsLCBpbmRleFJlbGF0 aW9uTmFtZSwgaW5kZXhSZWxhdGlvbklkLCBwYXJlbnRJbmRleElkLApAQCAtMTg0MSw2ICsx ODYxLDkxIEBAIENoZWNrUHJlZGljYXRlKEV4cHIgKnByZWRpY2F0ZSkKIAkJCQkgZXJybXNn KCJmdW5jdGlvbnMgaW4gaW5kZXggcHJlZGljYXRlIG11c3QgYmUgbWFya2VkIElNTVVUQUJM RSIpKSk7CiB9CiAKKy8qCisgKiBnZXRfaW5kZXhfYXR0cl90ZW1wb3JhbF9vcGVyYXRvcgor ICoKKyAqIEZpbmRzIGFuIG9wZXJhdG9yIGZvciBhIHRlbXBvcmFsIGluZGV4IGF0dHJpYnV0 ZS4KKyAqIFdlIG5lZWQgYW4gZXF1YWxpdHkgb3BlcmF0b3IgZm9yIG5vcm1hbCBrZXlzCisg KiBhbmQgYW4gb3ZlcmxhcHMgb3BlcmF0b3IgZm9yIHRoZSByYW5nZS4KKyAqIFJldHVybnMg dGhlIG9wZXJhdG9yIG9pZCBhbmQgc3RyYXRlZ3kgaW4gb3BpZCBhbmQgc3RyYXQsCisgKiBy ZXNwZWN0aXZlbHkuCisgKi8KK3N0YXRpYyB2b2lkCitnZXRfaW5kZXhfYXR0cl90ZW1wb3Jh bF9vcGVyYXRvcihPaWQgb3BjbGFzcywKKwkJCQkJCQkJIE9pZCBhdHR0eXBlLAorCQkJCQkJ CQkgYm9vbCBpc292ZXJsYXBzLAorCQkJCQkJCQkgT2lkICpvcGlkLAorCQkJCQkJCQkgaW50 ICpzdHJhdCkKK3sKKwlPaWQgb3BmYW1pbHk7CisJY29uc3QgY2hhciAqb3BuYW1lOworCisJ b3BmYW1pbHkgPSBnZXRfb3BjbGFzc19mYW1pbHkob3BjbGFzcyk7CisJLyoKKwkgKiBJZiB3 ZSBoYXZlIGEgcmFuZ2UgdHlwZSwgZmFsbCBiYWNrIG9uIGFueXJhbmdlLgorCSAqIFRoaXMg c2VlbXMgbGlrZSBhIGhhY2sKKwkgKiBidXQgSSBjYW4ndCBmaW5kIGFueSBleGlzdGluZyBs b29rdXAgZnVuY3Rpb24KKwkgKiB0aGF0IGtub3dzIGFib3V0IHBzZXVkb3R5cGVzLgorCSAq IGNvbXBhdGlibGVfb3BlciBpcyBjbG9zZSBidXQgd2FudHMgYSAqbmFtZSosCisJICogYW5k IHRoZSBwb2ludCBoZXJlIGlzIHRvIGF2b2lkIGhhcmRjb2RpbmcgYSBuYW1lCisJICogKGFs dGhvdWdoIGl0IHNob3VsZCBhbHdheXMgYmUgPSBhbmQgJiYpLgorCSAqCisJICogSW4gYWRk aXRpb24gZm9yIHRoZSBub3JtYWwga2V5IGVsZW1lbnRzCisJICogdHJ5IGJvdGggUlRFcXVh bFN0cmF0ZWd5TnVtYmVyIGFuZCBCVEVxdWFsU3RyYXRlZ3lOdW1iZXIuCisJICogSWYgeW91 J3JlIHVzaW5nIGJ0cmVlX2dpc3QgdGhlbiB5b3UnbGwgbmVlZCB0aGUgbGF0dGVyLgorCSAq LworCWlmIChpc292ZXJsYXBzKQorCXsKKwkJKnN0cmF0ID0gUlRPdmVybGFwU3RyYXRlZ3lO dW1iZXI7CisJCW9wbmFtZSA9ICJvdmVybGFwcyI7CisJCSpvcGlkID0gZ2V0X29wZmFtaWx5 X21lbWJlcihvcGZhbWlseSwgYXR0dHlwZSwgYXR0dHlwZSwgKnN0cmF0KTsKKwkJaWYgKCFP aWRJc1ZhbGlkKCpvcGlkKSAmJiB0eXBlX2lzX3JhbmdlKGF0dHR5cGUpKQorCQkJKm9waWQg PSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBBTllSQU5HRU9JRCwgQU5ZUkFOR0VP SUQsICpzdHJhdCk7CisJfQorCWVsc2UKKwl7CisJCSpzdHJhdCA9IFJURXF1YWxTdHJhdGVn eU51bWJlcjsKKwkJb3BuYW1lID0gImVxdWFsaXR5IjsKKwkJKm9waWQgPSBnZXRfb3BmYW1p bHlfbWVtYmVyKG9wZmFtaWx5LCBhdHR0eXBlLCBhdHR0eXBlLCAqc3RyYXQpOworCQlpZiAo IU9pZElzVmFsaWQoKm9waWQpICYmIHR5cGVfaXNfcmFuZ2UoYXR0dHlwZSkpCisJCQkqb3Bp ZCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIEFOWVJBTkdFT0lELCBBTllSQU5H RU9JRCwgKnN0cmF0KTsKKworCQlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQorCQl7CisJCQkq c3RyYXQgPSBCVEVxdWFsU3RyYXRlZ3lOdW1iZXI7CisJCQkqb3BpZCA9IGdldF9vcGZhbWls eV9tZW1iZXIob3BmYW1pbHksIGF0dHR5cGUsIGF0dHR5cGUsICpzdHJhdCk7CisJCQlpZiAo IU9pZElzVmFsaWQoKm9waWQpICYmIHR5cGVfaXNfcmFuZ2UoYXR0dHlwZSkpCisJCQkJKm9w aWQgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBBTllSQU5HRU9JRCwgQU5ZUkFO R0VPSUQsICpzdHJhdCk7CisJCX0KKwl9CisKKwlpZiAoIU9pZElzVmFsaWQoKm9waWQpKQor CXsKKwkJSGVhcFR1cGxlCW9wZnR1cGxlOworCQlGb3JtX3BnX29wZmFtaWx5IG9wZmZvcm07 CisKKwkJLyoKKwkJICogYXR0cmlidXRlLT5vcGNsYXNzIG1pZ2h0IG5vdCBleHBsaWNpdGx5 IG5hbWUgdGhlIG9wZmFtaWx5LAorCQkgKiBzbyBmZXRjaCB0aGUgbmFtZSBvZiB0aGUgc2Vs ZWN0ZWQgb3BmYW1pbHkgZm9yIHVzZSBpbiB0aGUKKwkJICogZXJyb3IgbWVzc2FnZS4KKwkJ ICovCisJCW9wZnR1cGxlID0gU2VhcmNoU3lzQ2FjaGUxKE9QRkFNSUxZT0lELAorCQkJCQkJ CQkgICBPYmplY3RJZEdldERhdHVtKG9wZmFtaWx5KSk7CisJCWlmICghSGVhcFR1cGxlSXNW YWxpZChvcGZ0dXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBm b3Igb3BmYW1pbHkgJXUiLAorCQkJCSBvcGZhbWlseSk7CisJCW9wZmZvcm0gPSAoRm9ybV9w Z19vcGZhbWlseSkgR0VUU1RSVUNUKG9wZnR1cGxlKTsKKworCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfVU5ERUZJTkVEX09CSkVDVCksCisJCQkJIGVycm1zZygi bm8gJXMgb3BlcmF0b3IgZm91bmQgZm9yIFdJVEhPVVQgT1ZFUkxBUFMgY29uc3RyYWludCIs IG9wbmFtZSksCisJCQkJIGVycmRldGFpbCgiVGhlcmUgbXVzdCBiZSBhbiAlcyBvcGVyYXRv ciB3aXRoaW4gb3BmYW1pbHkgXCIlc1wiIGZvciB0eXBlIFwiJXNcIi4iLAorCQkJCQkJICAg b3BuYW1lLAorCQkJCQkJICAgTmFtZVN0cihvcGZmb3JtLT5vcGZuYW1lKSwKKwkJCQkJCSAg IGZvcm1hdF90eXBlX2JlKGF0dHR5cGUpKSkpOworCX0KK30KKwogLyoKICAqIENvbXB1dGUg cGVyLWluZGV4LWNvbHVtbiBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIGluZGV4ZWQgY29sdW1u IG51bWJlcnMKICAqIG9yIGluZGV4IGV4cHJlc3Npb25zLCBvcGNsYXNzZXMgYW5kIHRoZWly IG9wdGlvbnMuIE5vdGUsIGFsbCBvdXRwdXQgdmVjdG9ycwpAQCAtMTg2Myw2ICsxOTY4LDcg QEAgQ29tcHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQkJICBPaWQg YWNjZXNzTWV0aG9kSWQsCiAJCQkJICBib29sIGFtY2Fub3JkZXIsCiAJCQkJICBib29sIGlz Y29uc3RyYWludCwKKwkJCQkgIGJvb2wgaXN0ZW1wb3JhbCwKIAkJCQkgIE9pZCBkZGxfdXNl cmlkLAogCQkJCSAgaW50IGRkbF9zZWNfY29udGV4dCwKIAkJCQkgIGludCAqZGRsX3NhdmVf bmVzdGxldmVsKQpAQCAtMTg4Niw2ICsxOTkyLDE0IEBAIENvbXB1dGVJbmRleEF0dHJzKElu ZGV4SW5mbyAqaW5kZXhJbmZvLAogCWVsc2UKIAkJbmV4dEV4Y2xPcCA9IE5VTEw7CiAKKwkv KiBleGNsdXNpb25PcE5hbWVzIGNhbiBiZSBub24tTklMIGlmIHdlIGFyZSBjcmVhdGluZyBh IHBhcnRpdGlvbiAqLworCWlmIChpc3RlbXBvcmFsICYmIGV4Y2x1c2lvbk9wTmFtZXMgPT0g TklMKQorCXsKKwkJaW5kZXhJbmZvLT5paV9FeGNsdXNpb25PcHMgPSBwYWxsb2NfYXJyYXko T2lkLCBua2V5Y29scyk7CisJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uUHJvY3MgPSBwYWxs b2NfYXJyYXkoT2lkLCBua2V5Y29scyk7CisJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3Ry YXRzID0gcGFsbG9jX2FycmF5KHVpbnQxNiwgbmtleWNvbHMpOworCX0KKwogCWlmIChPaWRJ c1ZhbGlkKGRkbF91c2VyaWQpKQogCQlHZXRVc2VySWRBbmRTZWNDb250ZXh0KCZzYXZlX3Vz ZXJpZCwgJnNhdmVfc2VjX2NvbnRleHQpOwogCkBAIC0yMTYxLDYgKzIyNzUsMTkgQEAgQ29t cHV0ZUluZGV4QXR0cnMoSW5kZXhJbmZvICppbmRleEluZm8sCiAJCQlpbmRleEluZm8tPmlp X0V4Y2x1c2lvblN0cmF0c1thdHRuXSA9IHN0cmF0OwogCQkJbmV4dEV4Y2xPcCA9IGxuZXh0 KGV4Y2x1c2lvbk9wTmFtZXMsIG5leHRFeGNsT3ApOwogCQl9CisJCWVsc2UgaWYgKGlzdGVt cG9yYWwpCisJCXsKKwkJCWludCBzdHJhdDsKKwkJCU9pZCBvcGlkOworCQkJZ2V0X2luZGV4 X2F0dHJfdGVtcG9yYWxfb3BlcmF0b3Iob3BjbGFzc09pZHNbYXR0bl0sCisJCQkJCQkJCQkJ CSBhdHR0eXBlLAorCQkJCQkJCQkJCQkgYXR0biA9PSBua2V5Y29scyAtIDEsCS8qIFRPRE86 IERvbid0IGFzc3VtZSBpdCdzIGxhc3Q/ICovCisJCQkJCQkJCQkJCSAmb3BpZCwKKwkJCQkJ CQkJCQkJICZzdHJhdCk7CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvbk9wc1thdHRuXSA9 IG9waWQ7CisJCQlpbmRleEluZm8tPmlpX0V4Y2x1c2lvblByb2NzW2F0dG5dID0gZ2V0X29w Y29kZShvcGlkKTsKKwkJCWluZGV4SW5mby0+aWlfRXhjbHVzaW9uU3RyYXRzW2F0dG5dID0g c3RyYXQ7CisJCX0KIAogCQkvKgogCQkgKiBTZXQgdXAgdGhlIHBlci1jb2x1bW4gb3B0aW9u cyAoaW5kb3B0aW9uIGZpZWxkKS4gIEZvciBub3csIHRoaXMgaXMKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKaW5kZXggOGEyYzY3MWI2Ni4uYmEyYTg5MTRlNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMKQEAgLTIwOCw2ICsyMDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBO ZXdDb25zdHJhaW50CiAJT2lkCQkJcmVmcmVsaWQ7CQkvKiBQSyByZWwsIGlmIEZPUkVJR04g Ki8KIAlPaWQJCQlyZWZpbmRpZDsJCS8qIE9JRCBvZiBQSydzIGluZGV4LCBpZiBGT1JFSUdO ICovCiAJT2lkCQkJY29uaWQ7CQkJLyogT0lEIG9mIHBnX2NvbnN0cmFpbnQgZW50cnksIGlm IEZPUkVJR04gKi8KKwlib29sCQljb250ZW1wb3JhbDsJLyogV2hldGhlciB0aGUgbmV3IGNv bnN0cmFpbnQgaXMgdGVtcG9yYWwgKi8KIAlOb2RlCSAgICpxdWFsOwkJCS8qIENoZWNrIGV4 cHIgb3IgQ09OU1RSX0ZPUkVJR04gQ29uc3RyYWludCAqLwogCUV4cHJTdGF0ZSAgKnF1YWxz dGF0ZTsJCS8qIEV4ZWN1dGlvbiBzdGF0ZSBmb3IgQ0hFQ0sgZXhwciAqLwogfSBOZXdDb25z dHJhaW50OwpAQCAtMTAwMDMsNiArMTAwMDQsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2Vk KExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVs LAogCQkJCQkJCQkJICBjb25pc2xvY2FsLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCQkgIGNv bmluaGNvdW50LAkvKiBpbmhjb3VudCAqLwogCQkJCQkJCQkJICBjb25ub2luaGVyaXQsIC8q IGNvbk5vSW5oZXJpdCAqLworCQkJCQkJCQkJICBmYWxzZSwJLyogY29uVGVtcG9yYWwgKi8K IAkJCQkJCQkJCSAgZmFsc2UpOwkvKiBpc19pbnRlcm5hbCAqLwogCiAJT2JqZWN0QWRkcmVz c1NldChhZGRyZXNzLCBDb25zdHJhaW50UmVsYXRpb25JZCwgY29uc3RyT2lkKTsKQEAgLTEw MzAxLDYgKzEwMzAzLDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1 ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQkg IGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJCSAg ZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCiAJCQkJCQkJCQkgIGZhbHNlKTsKIAogCQkJLyoK QEAgLTEwODA2LDYgKzEwODA5LDcgQEAgQ2xvbmVGa1JlZmVyZW5jaW5nKExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHBhcmVudFJlbCwgUmVsYXRpb24gcGFydFJlbCkKIAkJCQkJCQkJICBm YWxzZSwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkgIDEsCS8qIGluaGNvdW50ICovCiAJCQkJ CQkJCSAgZmFsc2UsCS8qIGNvbk5vSW5oZXJpdCAqLworCQkJCQkJCQkgIGZhbHNlLAkvKiBj b25UZW1wb3JhbCAqLwogCQkJCQkJCQkgIHRydWUpOwogCiAJCS8qIFNldCB1cCBwYXJ0aXRp b24gZGVwZW5kZW5jaWVzIGZvciB0aGUgbmV3IGNvbnN0cmFpbnQgKi8KQEAgLTExNDgwLDYg KzExNDg0LDcgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVldWUsIFJl bGF0aW9uIHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAkJCW5ld2Nvbi0+cmVmcmVsaWQgPSBj b24tPmNvbmZyZWxpZDsKIAkJCW5ld2Nvbi0+cmVmaW5kaWQgPSBjb24tPmNvbmluZGlkOwog CQkJbmV3Y29uLT5jb25pZCA9IGNvbi0+b2lkOworCQkJbmV3Y29uLT5jb250ZW1wb3JhbCA9 IGNvbi0+Y29udGVtcG9yYWw7CiAJCQluZXdjb24tPnF1YWwgPSAoTm9kZSAqKSBma2NvbnN0 cmFpbnQ7CiAKIAkJCS8qIEZpbmQgb3IgY3JlYXRlIHdvcmsgcXVldWUgZW50cnkgZm9yIHRo aXMgdGFibGUgKi8KQEAgLTExNjQ2LDEwICsxMTY1MSwxMiBAQCB0cmFuc2Zvcm1Db2x1bW5O YW1lTGlzdChPaWQgcmVsSWQsIExpc3QgKmNvbExpc3QsCiAgKgogICoJTG9vayB1cCB0aGUg bmFtZXMsIGF0dG51bXMsIGFuZCB0eXBlcyBvZiB0aGUgcHJpbWFyeSBrZXkgYXR0cmlidXRl cwogICoJZm9yIHRoZSBwa3JlbC4gIEFsc28gcmV0dXJuIHRoZSBpbmRleCBPSUQgYW5kIGlu ZGV4IG9wY2xhc3NlcyBvZiB0aGUKLSAqCWluZGV4IHN1cHBvcnRpbmcgdGhlIHByaW1hcnkg a2V5LgorICoJaW5kZXggc3VwcG9ydGluZyB0aGUgcHJpbWFyeSBrZXkuICBJZiB0aGlzIGlz IGEgdGVtcG9yYWwgcHJpbWFyeSBrZXksCisgKglhbHNvIHNldCB0aGUgV0lUSE9VVCBPVkVS TEFQUyBhdHRyaWJ1dGUgbmFtZSwgYXR0bnVtLCBhbmQgYXR0dHlwaWQuCiAgKgogICoJQWxs IHBhcmFtZXRlcnMgZXhjZXB0IHBrcmVsIGFyZSBvdXRwdXQgcGFyYW1ldGVycy4gIEFsc28s IHRoZSBmdW5jdGlvbgotICoJcmV0dXJuIHZhbHVlIGlzIHRoZSBudW1iZXIgb2YgYXR0cmli dXRlcyBpbiB0aGUgcHJpbWFyeSBrZXkuCisgKglyZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJl ciBvZiBhdHRyaWJ1dGVzIGluIHRoZSBwcmltYXJ5IGtleSwKKyAqCW5vdCBpbmNsdWRpbmcg dGhlIFdJVEhPVVQgT1ZFUkxBUFMgaWYgYW55LgogICoKICAqCVVzZWQgd2hlbiB0aGUgY29s dW1uIGxpc3QgaW4gdGhlIFJFRkVSRU5DRVMgc3BlY2lmaWNhdGlvbiBpcyBvbWl0dGVkLgog ICovCkBAIC0xNDE5MSw3ICsxNDE5OCw4IEBAIFRyeVJldXNlSW5kZXgoT2lkIG9sZElkLCBJ bmRleFN0bXQgKnN0bXQpCiAJaWYgKENoZWNrSW5kZXhDb21wYXRpYmxlKG9sZElkLAogCQkJ CQkJCSBzdG10LT5hY2Nlc3NNZXRob2QsCiAJCQkJCQkJIHN0bXQtPmluZGV4UGFyYW1zLAot CQkJCQkJCSBzdG10LT5leGNsdWRlT3BOYW1lcykpCisJCQkJCQkJIHN0bXQtPmV4Y2x1ZGVP cE5hbWVzLAorCQkJCQkJCSBzdG10LT5pc3RlbXBvcmFsKSkKIAl7CiAJCVJlbGF0aW9uCWly ZWwgPSBpbmRleF9vcGVuKG9sZElkLCBOb0xvY2spOwogCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90cmlnZ2VyLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2Vy LmMKaW5kZXggNTIxNzc3NTlhYi4uMDU3N2I2MDQxNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvY29tbWFuZHMvdHJpZ2dlci5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdn ZXIuYwpAQCAtODQxLDYgKzg0MSw3IEBAIENyZWF0ZVRyaWdnZXJGaXJpbmdPbihDcmVhdGVU cmlnU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJCQkJCQkJCQkJCSAg dHJ1ZSwgLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJ CQkJCQkJCQkJCSAgdHJ1ZSwgLyogbm9pbmhlcml0ICovCisJCQkJCQkJCQkJCSAgZmFsc2Us IC8qIGNvbnRlbXBvcmFsICovCiAJCQkJCQkJCQkJCSAgaXNJbnRlcm5hbCk7CS8qIGlzX2lu dGVybmFsICovCiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHlwZWNtZHMuYwppbmRleCA1ZTk3NjA2 NzkzLi42ZDBlOTQ2Njg0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90eXBl Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3R5cGVjbWRzLmMKQEAgLTM1NDQs NiArMzU0NCw3IEBAIGRvbWFpbkFkZENvbnN0cmFpbnQoT2lkIGRvbWFpbk9pZCwgT2lkIGRv bWFpbk5hbWVzcGFjZSwgT2lkIGJhc2VUeXBlT2lkLAogCQkJCQkJCSAgdHJ1ZSwgLyogaXMg bG9jYWwgKi8KIAkJCQkJCQkgIDAsCS8qIGluaGNvdW50ICovCiAJCQkJCQkJICBmYWxzZSwJ LyogY29ubm9pbmhlcml0ICovCisJCQkJCQkJICBmYWxzZSwJLyogY29udGVtcG9yYWwgKi8K IAkJCQkJCQkgIGZhbHNlKTsJLyogaXNfaW50ZXJuYWwgKi8KIAlpZiAoY29uc3RyQWRkcikK IAkJT2JqZWN0QWRkcmVzc1NldCgqY29uc3RyQWRkciwgQ29uc3RyYWludFJlbGF0aW9uSWQs IGNjb2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IDdkMjAzMjg4NWUuLjNlYTRhY2I3NGQgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQv cGFyc2VyL2dyYW0ueQpAQCAtNTIzLDcgKzUyMyw4IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAldHlwZSA8bm9kZT4JVGFibGVFbGVtZW50IFR5cGVkVGFibGVFbGVtZW50IENv bnN0cmFpbnRFbGVtIFRhYmxlRnVuY0VsZW1lbnQKICV0eXBlIDxub2RlPgljb2x1bW5EZWYg Y29sdW1uT3B0aW9ucwogJXR5cGUgPGRlZmVsdD4JZGVmX2VsZW0gcmVsb3B0aW9uX2VsZW0g b2xkX2FnZ3JfZWxlbSBvcGVyYXRvcl9kZWZfZWxlbQotJXR5cGUgPG5vZGU+CWRlZl9hcmcg Y29sdW1uRWxlbSB3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKKyV0eXBl IDxub2RlPglkZWZfYXJnIGNvbHVtbkVsZW0gd2l0aG91dF9vdmVybGFwc19jbGF1c2UKKwkJ CQl3aGVyZV9jbGF1c2Ugd2hlcmVfb3JfY3VycmVudF9jbGF1c2UKIAkJCQlhX2V4cHIgYl9l eHByIGNfZXhwciBBZXhwckNvbnN0IGluZGlyZWN0aW9uX2VsIG9wdF9zbGljZV9ib3VuZAog CQkJCWNvbHVtbnJlZiBpbl9leHByIGhhdmluZ19jbGF1c2UgZnVuY190YWJsZSB4bWx0YWJs ZSBhcnJheV9leHByCiAJCQkJT3B0V2hlcmVDbGF1c2Ugb3BlcmF0b3JfZGVmX2FyZwpAQCAt NDA5Niw3ICs0MDk3LDcgQEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmluaXRpYWxseV92 YWxpZCA9IHRydWU7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsKIAkJCQl9Ci0JCQl8IFVOSVFV RSBvcHRfdW5pcXVlX251bGxfdHJlYXRtZW50ICcoJyBjb2x1bW5MaXN0ICcpJyBvcHRfY19p bmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJsZVNwYWNlCisJCQl8IFVOSVFVRSBv cHRfdW5pcXVlX251bGxfdHJlYXRtZW50ICcoJyBjb2x1bW5MaXN0IHdpdGhvdXRfb3Zlcmxh cHNfY2xhdXNlICcpJyBvcHRfY19pbmNsdWRlIG9wdF9kZWZpbml0aW9uIE9wdENvbnNUYWJs ZVNwYWNlCiAJCQkJQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKIAkJCQl7CiAJCQkJCUNvbnN0 cmFpbnQgKm4gPSBtYWtlTm9kZShDb25zdHJhaW50KTsKQEAgLTQxMDUsMTEgKzQxMDYsMTIg QEAgQ29uc3RyYWludEVsZW06CiAJCQkJCW4tPmxvY2F0aW9uID0gQDE7CiAJCQkJCW4tPm51 bGxzX25vdF9kaXN0aW5jdCA9ICEkMjsKIAkJCQkJbi0+a2V5cyA9ICQ0OwotCQkJCQluLT5p bmNsdWRpbmcgPSAkNjsKLQkJCQkJbi0+b3B0aW9ucyA9ICQ3OworCQkJCQluLT53aXRob3V0 X292ZXJsYXBzID0gJDU7CisJCQkJCW4tPmluY2x1ZGluZyA9ICQ3OworCQkJCQluLT5vcHRp b25zID0gJDg7CiAJCQkJCW4tPmluZGV4bmFtZSA9IE5VTEw7Ci0JCQkJCW4tPmluZGV4c3Bh Y2UgPSAkODsKLQkJCQkJcHJvY2Vzc0NBU2JpdHMoJDksIEA5LCAiVU5JUVVFIiwKKwkJCQkJ bi0+aW5kZXhzcGFjZSA9ICQ5OworCQkJCQlwcm9jZXNzQ0FTYml0cygkMTAsIEAxMCwgIlVO SVFVRSIsCiAJCQkJCQkJCSAgICZuLT5kZWZlcnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCBO VUxMLAogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICop IG47CkBAIC00MTMwLDcgKzQxMzIsNyBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJCQkJICAg TlVMTCwgeXlzY2FubmVyKTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KLQkJCXwg UFJJTUFSWSBLRVkgJygnIGNvbHVtbkxpc3QgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmlu aXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKKwkJCXwgUFJJTUFSWSBLRVkgJygnIGNvbHVtbkxp c3Qgd2l0aG91dF9vdmVybGFwc19jbGF1c2UgJyknIG9wdF9jX2luY2x1ZGUgb3B0X2RlZmlu aXRpb24gT3B0Q29uc1RhYmxlU3BhY2UKIAkJCQlDb25zdHJhaW50QXR0cmlidXRlU3BlYwog CQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwpAQCAt NDEzOCwxMSArNDE0MCwxMiBAQCBDb25zdHJhaW50RWxlbToKIAkJCQkJbi0+Y29udHlwZSA9 IENPTlNUUl9QUklNQVJZOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwogCQkJCQluLT5rZXlz ID0gJDQ7Ci0JCQkJCW4tPmluY2x1ZGluZyA9ICQ2OwotCQkJCQluLT5vcHRpb25zID0gJDc7 CisJCQkJCW4tPndpdGhvdXRfb3ZlcmxhcHMgPSAkNTsKKwkJCQkJbi0+aW5jbHVkaW5nID0g JDc7CisJCQkJCW4tPm9wdGlvbnMgPSAkODsKIAkJCQkJbi0+aW5kZXhuYW1lID0gTlVMTDsK LQkJCQkJbi0+aW5kZXhzcGFjZSA9ICQ4OwotCQkJCQlwcm9jZXNzQ0FTYml0cygkOSwgQDks ICJQUklNQVJZIEtFWSIsCisJCQkJCW4tPmluZGV4c3BhY2UgPSAkOTsKKwkJCQkJcHJvY2Vz c0NBU2JpdHMoJDEwLCBAMTAsICJQUklNQVJZIEtFWSIsCiAJCQkJCQkJCSAgICZuLT5kZWZl cnJhYmxlLCAmbi0+aW5pdGRlZmVycmVkLCBOVUxMLAogCQkJCQkJCQkgICBOVUxMLCB5eXNj YW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC00MjIwLDYgKzQyMjMsMTEgQEAg Y29sdW1uTGlzdDoKIAkJCXwgY29sdW1uTGlzdCAnLCcgY29sdW1uRWxlbQkJCQl7ICQkID0g bGFwcGVuZCgkMSwgJDMpOyB9CiAJCTsKIAord2l0aG91dF9vdmVybGFwc19jbGF1c2U6CisJ CQknLCcgY29sdW1uRWxlbSBXSVRIT1VUIE9WRVJMQVBTIHsgJCQgPSAkMjsgfQorCQkJfCAv KkVNUFRZKi8gICAgICAgICAgICAgICB7ICQkID0gTlVMTDsgfQorCTsKKwogY29sdW1uRWxl bTogQ29sSWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYwppbmRleCA1NWMzMTVmMGUyLi5lMTk1NDEw YzIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMKQEAgLTEyNCw2ICsxMjQs OCBAQCBzdGF0aWMgTGlzdCAqZ2V0X29wY2xhc3MoT2lkIG9wY2xhc3MsIE9pZCBhY3R1YWxf ZGF0YXR5cGUpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50cyhDcmVh dGVTdG10Q29udGV4dCAqY3h0KTsKIHN0YXRpYyBJbmRleFN0bXQgKnRyYW5zZm9ybUluZGV4 Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LAogCQkJCQkJCQkJCSAgIENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQpOworc3RhdGljIGJvb2wgZmluZE5ld09yT2xkQ29sdW1uKENy ZWF0ZVN0bXRDb250ZXh0ICpjeHQsIGNoYXIgKmNvbG5hbWUsIGNoYXIgKip0eXBuYW1lLAor CQkJCQkJCSAgIE9pZCAqdHlwaWQpOwogc3RhdGljIHZvaWQgdHJhbnNmb3JtRXh0ZW5kZWRT dGF0aXN0aWNzKENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpOwogc3RhdGljIHZvaWQgdHJhbnNm b3JtRktDb25zdHJhaW50cyhDcmVhdGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCQkgICBi b29sIHNraXBWYWxpZGF0aW9uLApAQCAtMTcyNSw2ICsxNzI3LDcgQEAgZ2VuZXJhdGVDbG9u ZWRJbmRleFN0bXQoUmFuZ2VWYXIgKmhlYXBSZWwsIFJlbGF0aW9uIHNvdXJjZV9pZHgsCiAJ aW5kZXgtPnVuaXF1ZSA9IGlkeHJlYy0+aW5kaXN1bmlxdWU7CiAJaW5kZXgtPm51bGxzX25v dF9kaXN0aW5jdCA9IGlkeHJlYy0+aW5kbnVsbHNub3RkaXN0aW5jdDsKIAlpbmRleC0+cHJp bWFyeSA9IGlkeHJlYy0+aW5kaXNwcmltYXJ5OworCWluZGV4LT5pc3RlbXBvcmFsID0gKGlk eHJlYy0+aW5kaXNwcmltYXJ5IHx8IGlkeHJlYy0+aW5kaXN1bmlxdWUpICYmIGlkeHJlYy0+ aW5kaXNleGNsdXNpb247CiAJaW5kZXgtPnRyYW5zZm9ybWVkID0gdHJ1ZTsJLyogZG9uJ3Qg bmVlZCB0cmFuc2Zvcm1JbmRleFN0bXQgKi8KIAlpbmRleC0+Y29uY3VycmVudCA9IGZhbHNl OwogCWluZGV4LT5pZl9ub3RfZXhpc3RzID0gZmFsc2U7CkBAIC0xNzc0LDcgKzE3NzcsOSBA QCBnZW5lcmF0ZUNsb25lZEluZGV4U3RtdChSYW5nZVZhciAqaGVhcFJlbCwgUmVsYXRpb24g c291cmNlX2lkeCwKIAkJCQlpbnQJCQluRWxlbXM7CiAJCQkJaW50CQkJaTsKIAotCQkJCUFz c2VydChjb25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9FWENMVVNJT04pOworCQkJCUFz c2VydChjb25yZWMtPmNvbnR5cGUgPT0gQ09OU1RSQUlOVF9FWENMVVNJT04gfHwKKwkJCQkJ CShpbmRleC0+aXN0ZW1wb3JhbCAmJgorCQkJCQkJIChjb25yZWMtPmNvbnR5cGUgPT0gQ09O U1RSQUlOVF9QUklNQVJZIHx8IGNvbnJlYy0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1VOSVFV RSkpKTsKIAkJCQkvKiBFeHRyYWN0IG9wZXJhdG9yIE9JRHMgZnJvbSB0aGUgcGdfY29uc3Ry YWludCB0dXBsZSAqLwogCQkJCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05T VFJPSUQsIGh0X2NvbnN0ciwKIAkJCQkJCQkJCQkJICAgQW51bV9wZ19jb25zdHJhaW50X2Nv bmV4Y2xvcCk7CkBAIC0yMzE0LDYgKzIzMTksNyBAQCB0cmFuc2Zvcm1JbmRleENvbnN0cmFp bnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENvbnRleHQgKmN4dCkKIAl9 CiAJaW5kZXgtPm51bGxzX25vdF9kaXN0aW5jdCA9IGNvbnN0cmFpbnQtPm51bGxzX25vdF9k aXN0aW5jdDsKIAlpbmRleC0+aXNjb25zdHJhaW50ID0gdHJ1ZTsKKwlpbmRleC0+aXN0ZW1w b3JhbCA9IGNvbnN0cmFpbnQtPndpdGhvdXRfb3ZlcmxhcHMgIT0gTlVMTDsKIAlpbmRleC0+ ZGVmZXJyYWJsZSA9IGNvbnN0cmFpbnQtPmRlZmVycmFibGU7CiAJaW5kZXgtPmluaXRkZWZl cnJlZCA9IGNvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKIApAQCAtMjQwNiw2ICsyNDEyLDEx IEBAIHRyYW5zZm9ybUluZGV4Q29uc3RyYWludChDb25zdHJhaW50ICpjb25zdHJhaW50LCBD cmVhdGVTdG10Q29udGV4dCAqY3h0KQogCQkJCQkgZXJybXNnKCJpbmRleCBcIiVzXCIgaXMg bm90IHZhbGlkIiwgaW5kZXhfbmFtZSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24oY3h0 LT5wc3RhdGUsIGNvbnN0cmFpbnQtPmxvY2F0aW9uKSkpOwogCisJCS8qCisJCSAqIFRvZGF5 IHdlIGZvcmJpZCBub24tdW5pcXVlIGluZGV4ZXMsIGJ1dCB3ZSBjb3VsZCBwZXJtaXQgR2lT VAorCQkgKiBpbmRleGVzIHdob3NlIGxhc3QgZW50cnkgaXMgYSByYW5nZSB0eXBlIGFuZCB1 c2UgdGhhdCB0byBjcmVhdGUgYQorCQkgKiBXSVRIT1VUIE9WRVJMQVBTIGNvbnN0cmFpbnQg KGkuZS4gYSB0ZW1wb3JhbCBjb25zdHJhaW50KS4KKwkJICovCiAJCWlmICghaW5kZXhfZm9y bS0+aW5kaXN1bmlxdWUpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJD T0RFX1dST05HX09CSkVDVF9UWVBFKSwKQEAgLTI2ODIsNiArMjY5Myw2NSBAQCB0cmFuc2Zv cm1JbmRleENvbnN0cmFpbnQoQ29uc3RyYWludCAqY29uc3RyYWludCwgQ3JlYXRlU3RtdENv bnRleHQgKmN4dCkKIAkJCQlub3RudWxsY21kcyA9IGxhcHBlbmQobm90bnVsbGNtZHMsIG5v dG51bGxjbWQpOwogCQkJfQogCQl9CisKKwkJLyoKKwkJICogQW55dGhpbmcgaW4gd2l0aG91 dF9vdmVybGFwcyBzaG91bGQgYmUgaW5jbHVkZWQsCisJCSAqIGJ1dCB3aXRoIHRoZSBvdmVy bGFwcyBvcGVyYXRvciAoJiYpIGluc3RlYWQgb2YgZXF1YWxpdHkuCisJCSAqLworCQlpZiAo Y29uc3RyYWludC0+d2l0aG91dF9vdmVybGFwcyAhPSBOVUxMKSB7CisJCQljaGFyICp3aXRo b3V0X292ZXJsYXBzX3N0ciA9IHN0clZhbChjb25zdHJhaW50LT53aXRob3V0X292ZXJsYXBz KTsKKwkJCUluZGV4RWxlbSAqaXBhcmFtID0gbWFrZU5vZGUoSW5kZXhFbGVtKTsKKwkJCWNo YXIgICAqdHlwbmFtZTsKKwkJCU9pZAkJdHlwaWQ7CisKKwkJCS8qCisJCQkgKiBJdGVyYXRl IHRocm91Z2ggdGhlIHRhYmxlJ3MgY29sdW1ucworCQkJICogKGxpa2UganVzdCBhIGxpdHRs ZSBiaXQgYWJvdmUpLgorCQkJICogSWYgd2UgZmluZCBvbmUgd2hvc2UgbmFtZSBpcyB0aGUg c2FtZSBhcyB3aXRob3V0X292ZXJsYXBzLAorCQkJICogdmFsaWRhdGUgdGhhdCBpdCdzIGEg cmFuZ2UgdHlwZS4KKwkJCSAqCisJCQkgKiBPdGhlcndpc2UgcmVwb3J0IGFuIGVycm9yLgor CQkJICovCisKKwkJCWlmIChmaW5kTmV3T3JPbGRDb2x1bW4oY3h0LCB3aXRob3V0X292ZXJs YXBzX3N0ciwgJnR5cG5hbWUsICZ0eXBpZCkpCisJCQl7CisJCQkJaWYgKCF0eXBlX2lzX3Jh bmdlKHR5cGlkKSkKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkoZXJyY29kZShFUlJD T0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IGluIFdJVEhPVVQgT1ZFUkxBUFMgaXMgbm90IGEgcmFuZ2UgdHlwZSIsCisJCQkJCQkJCQl3 aXRob3V0X292ZXJsYXBzX3N0cikpKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQllcmVwb3J0KEVS Uk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9VTkRFRklORURfQ09MVU1OKSwKKwkJCQkJ CSBlcnJtc2coInJhbmdlIG9yIFBFUklPRCBcIiVzXCIgaW4gV0lUSE9VVCBPVkVSTEFQUyBk b2VzIG5vdCBleGlzdCIsCisJCQkJCQkJCXdpdGhvdXRfb3ZlcmxhcHNfc3RyKSkpOworCisJ CQlpcGFyYW0tPm5hbWUgPSBwc3RyZHVwKHdpdGhvdXRfb3ZlcmxhcHNfc3RyKTsKKwkJCWlw YXJhbS0+ZXhwciA9IE5VTEw7CisJCQlpcGFyYW0tPmluZGV4Y29sbmFtZSA9IE5VTEw7CisJ CQlpcGFyYW0tPmNvbGxhdGlvbiA9IE5JTDsKKwkJCWlwYXJhbS0+b3BjbGFzcyA9IE5JTDsK KwkJCWlwYXJhbS0+b3BjbGFzc29wdHMgPSBOSUw7CisJCQlpcGFyYW0tPm9yZGVyaW5nID0g U09SVEJZX0RFRkFVTFQ7CisJCQlpcGFyYW0tPm51bGxzX29yZGVyaW5nID0gU09SVEJZX05V TExTX0RFRkFVTFQ7CisJCQlpbmRleC0+aW5kZXhQYXJhbXMgPSBsYXBwZW5kKGluZGV4LT5p bmRleFBhcmFtcywgaXBhcmFtKTsKKworCQkJaW5kZXgtPmFjY2Vzc01ldGhvZCA9ICJnaXN0 IjsKKwkJCWNvbnN0cmFpbnQtPmFjY2Vzc19tZXRob2QgPSAiZ2lzdCI7CisKKwkJCWlmIChj b25zdHJhaW50LT5jb250eXBlID09IENPTlNUUl9QUklNQVJZKQorCQkJeworCQkJCS8qCisJ CQkJICogRm9yY2UgdGhlIGNvbHVtbiB0byBOT1QgTlVMTCBzaW5jZSBpdCBpcyBwYXJ0IG9m IHRoZSBwcmltYXJ5IGtleS4KKwkJCQkgKi8KKwkJCQlBbHRlclRhYmxlQ21kICpub3RudWxs Y21kID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisKKwkJCQlub3RudWxsY21kLT5zdWJ0 eXBlID0gQVRfU2V0QXR0Tm90TnVsbDsKKwkJCQlub3RudWxsY21kLT5uYW1lID0gcHN0cmR1 cCh3aXRob3V0X292ZXJsYXBzX3N0cik7CisJCQkJbm90bnVsbGNtZHMgPSBsYXBwZW5kKG5v dG51bGxjbWRzLCBub3RudWxsY21kKTsKKwkJCX0KKwkJfQogCX0KIAogCS8qCkBAIC0yODAx LDYgKzI4NzEsNTggQEAgdHJhbnNmb3JtSW5kZXhDb25zdHJhaW50KENvbnN0cmFpbnQgKmNv bnN0cmFpbnQsIENyZWF0ZVN0bXRDb250ZXh0ICpjeHQpCiAJcmV0dXJuIGluZGV4OwogfQog CisvKgorICogVHJpZXMgdG8gZmluZCBhIGNvbHVtbiBieSBuYW1lIGFtb25nIHRoZSBleGlz dGluZyBvbmVzIChpZiBpdCdzIGFuIEFMVEVSIFRBQkxFKQorICogYW5kIHRoZSBuZXcgb25l cy4gU2V0cyB0eXBuYW1lIGFuZCB0eXBpZCBpZiBvbmUgaXMgZm91bmQuIFJldHVybnMgZmFs c2UgaWYgd2UKKyAqIGNvdWxkbid0IGZpbmQgYSBtYXRjaC4KKyAqLworc3RhdGljIGJvb2wK K2ZpbmROZXdPck9sZENvbHVtbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LCBjaGFyICpjb2xu YW1lLCBjaGFyICoqdHlwbmFtZSwgT2lkICp0eXBpZCkKK3sKKwkvKiBDaGVjayB0aGUgbmV3 IGNvbHVtbnMgZmlyc3QgaW4gY2FzZSB0aGVpciB0eXBlIGlzIGNoYW5naW5nLiAqLworCisJ Q29sdW1uRGVmICAqY29sdW1uID0gTlVMTDsKKwlMaXN0Q2VsbCAgICpjb2x1bW5zOworCisJ Zm9yZWFjaChjb2x1bW5zLCBjeHQtPmNvbHVtbnMpCisJeworCQljb2x1bW4gPSBsZmlyc3Rf bm9kZShDb2x1bW5EZWYsIGNvbHVtbnMpOworCQlpZiAoc3RyY21wKGNvbHVtbi0+Y29sbmFt ZSwgY29sbmFtZSkgPT0gMCkKKwkJeworCQkJKnR5cGlkID0gdHlwZW5hbWVUeXBlSWQoTlVM TCwgY29sdW1uLT50eXBlTmFtZSk7CisJCQkqdHlwbmFtZSA9IFR5cGVOYW1lVG9TdHJpbmco Y29sdW1uLT50eXBlTmFtZSk7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCX0KKworCS8qIExv b2sgdXAgY29sdW1ucyBvbiBleGlzdGluZyB0YWJsZS4gKi8KKworCWlmIChjeHQtPmlzYWx0 ZXIpCisJeworCQlSZWxhdGlvbiByZWwgPSBjeHQtPnJlbDsKKwkJZm9yIChpbnQgaSA9IDA7 IGkgPCByZWwtPnJkX2F0dC0+bmF0dHM7IGkrKykKKwkJeworCQkJRm9ybV9wZ19hdHRyaWJ1 dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIocmVsLT5yZF9hdHQsIGkpOworCQkJY29uc3QgY2hh ciAqYXR0bmFtZTsKKworCQkJaWYgKGF0dHItPmF0dGlzZHJvcHBlZCkKKwkJCQljb250aW51 ZTsKKworCQkJYXR0bmFtZSA9IE5hbWVTdHIoYXR0ci0+YXR0bmFtZSk7CisJCQlpZiAoc3Ry Y21wKGF0dG5hbWUsIGNvbG5hbWUpID09IDApCisJCQl7CisJCQkJVHlwZSB0eXBlID0gdHlw ZWlkVHlwZShhdHRyLT5hdHR0eXBpZCk7CisJCQkJKnR5cGlkID0gYXR0ci0+YXR0dHlwaWQ7 CisJCQkJKnR5cG5hbWUgPSBwc3RyZHVwKHR5cGVUeXBlTmFtZSh0eXBlKSk7CisJCQkJUmVs ZWFzZVN5c0NhY2hlKHR5cGUpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJfQor CisJcmV0dXJuIGZhbHNlOworfQorCiAvKgogICogdHJhbnNmb3JtRXh0ZW5kZWRTdGF0aXN0 aWNzCiAgKiAgICAgSGFuZGxlIGV4dGVuZGVkIHN0YXRpc3RpYyBvYmplY3RzCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMKaW5kZXggOTdiMGVmMjJhYy4uNzc4ZDNlMDMzNCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCisrKyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtMzM4LDggKzMzOCw4IEBAIHN0YXRp YyBjaGFyICpkZXBhcnNlX2V4cHJlc3Npb25fcHJldHR5KE5vZGUgKmV4cHIsIExpc3QgKmRw Y29udGV4dCwKIHN0YXRpYyBjaGFyICpwZ19nZXRfdmlld2RlZl93b3JrZXIoT2lkIHZpZXdv aWQsCiAJCQkJCQkJCSAgIGludCBwcmV0dHlGbGFncywgaW50IHdyYXBDb2x1bW4pOwogc3Rh dGljIGNoYXIgKnBnX2dldF90cmlnZ2VyZGVmX3dvcmtlcihPaWQgdHJpZ2lkLCBib29sIHBy ZXR0eSk7Ci1zdGF0aWMgaW50CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkoRGF0dW0g Y29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsCi0JCQkJCQkJCQkJIFN0cmluZ0luZm8g YnVmKTsKK3N0YXRpYyBpbnQJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheShEYXR1bSBj b2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQsCisJCQkJCQkJCQkJ IGJvb2wgd2l0aG91dE92ZXJsYXBzLCBTdHJpbmdJbmZvIGJ1Zik7CiBzdGF0aWMgY2hhciAq cGdfZ2V0X3J1bGVkZWZfd29ya2VyKE9pZCBydWxlb2lkLCBpbnQgcHJldHR5RmxhZ3MpOwog c3RhdGljIGNoYXIgKnBnX2dldF9pbmRleGRlZl93b3JrZXIoT2lkIGluZGV4cmVsaWQsIGlu dCBjb2xubywKIAkJCQkJCQkJCWNvbnN0IE9pZCAqZXhjbHVkZU9wcywKQEAgLTIyNDcsNyAr MjI0Nyw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElk LCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZhbCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwo Q09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJCSBBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5 KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5j b25yZWxpZCwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWws IGNvbkZvcm0tPmNvbnJlbGlkLCBjb25Gb3JtLT5jb25pbmRpZCwgZmFsc2UsICZidWYpOwog CiAJCQkJLyogYWRkIGZvcmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0cmlu Z0luZm8oJmJ1ZiwgIikgUkVGRVJFTkNFUyAlcygiLApAQCAtMjI1OCw3ICsyMjU4LDcgQEAg cGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVs bENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQs IHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25ma2V5KTsKIAotCQkJ CWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVsaWQs ICZidWYpOworCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3Jt LT5jb25mcmVsaWQsIGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CiAKIAkJCQlh cHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwogCkBAIC0yMzQ0LDcgKzIzNDQsNyBA QCBwZ19nZXRfY29uc3RyYWludGRlZl93b3JrZXIoT2lkIGNvbnN0cmFpbnRJZCwgYm9vbCBm dWxsQ29tbWFuZCwKIAkJCQlpZiAoIWlzbnVsbCkKIAkJCQl7CiAJCQkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoJmJ1ZiwgIiAoIik7Ci0JCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9j b2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgSW52YWxpZE9pZCwg ZmFsc2UsICZidWYpOwogCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmYnVmLCAnKScpOwog CQkJCX0KIApAQCAtMjM1Nyw2ICsyMzU3LDcgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29y a2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJT2lkCQkJaW5k ZXhJZDsKIAkJCQlpbnQJCQlrZXlhdHRzOwogCQkJCUhlYXBUdXBsZQlpbmR0dXA7CisJCQkJ Ym9vbAkJaXNudWxsOwogCiAJCQkJLyogU3RhcnQgb2ZmIHRoZSBjb25zdHJhaW50IGRlZmlu aXRpb24gKi8KIAkJCQlpZiAoY29uRm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1BSSU1B UlkpCkBAIC0yMzc5LDcgKzIzODAsMTQgQEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2Vy KE9pZCBjb25zdHJhaW50SWQsIGJvb2wgZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2Fj aGVHZXRBdHRyTm90TnVsbChDT05TVFJPSUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdf Y29uc3RyYWludF9jb25rZXkpOwogCi0JCQkJa2V5YXR0cyA9IGRlY29tcGlsZV9jb2x1bW5f aW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgJmJ1Zik7CisJCQkJLyoKKwkJ CQkgKiBJZiBpdCBoYXMgZXhjbHVzaW9uLXN0eWxlIG9wZXJhdG9yIE9JRHMKKwkJCQkgKiB0 aGVuIGl0IHVzZXMgV0lUSE9VVCBPVkVSTEFQUy4KKwkJCQkgKi8KKwkJCQlpbmRleElkID0g Y29uRm9ybS0+Y29uaW5kaWQ7CisJCQkJU3lzQ2FjaGVHZXRBdHRyKENPTlNUUk9JRCwgdHVw LAorCQkJCQkJICBBbnVtX3BnX2NvbnN0cmFpbnRfY29uZXhjbG9wLCAmaXNudWxsKTsKKwkJ CQlrZXlhdHRzID0gZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0t PmNvbnJlbGlkLCBpbmRleElkLCAhaXNudWxsLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmlu Z0luZm9DaGFyKCZidWYsICcpJyk7CiAKQEAgLTI1NzQsOCArMjU4Miw4IEBAIHBnX2dldF9j b25zdHJhaW50ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5k LAogICogb2Yga2V5cy4KICAqLwogc3RhdGljIGludAotZGVjb21waWxlX2NvbHVtbl9pbmRl eF9hcnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwKLQkJCQkJCQkg U3RyaW5nSW5mbyBidWYpCitkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNv bHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLCBPaWQgaW5kZXhJZCwKKwkJCQkJCQkgYm9v bCB3aXRob3V0T3ZlcmxhcHMsIFN0cmluZ0luZm8gYnVmKQogewogCURhdHVtCSAgICprZXlz OwogCWludAkJCW5LZXlzOwpAQCAtMjU4OCwxMSArMjU5NiwxNCBAQCBkZWNvbXBpbGVfY29s dW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRleF9hcnJheSwgT2lkIHJlbElkLAog CWZvciAoaiA9IDA7IGogPCBuS2V5czsgaisrKQogCXsKIAkJY2hhcgkgICAqY29sTmFtZTsK KwkJaW50CQkJY29saWQgPSBEYXR1bUdldEludDE2KGtleXNbal0pOwogCi0JCWNvbE5hbWUg PSBnZXRfYXR0bmFtZShyZWxJZCwgRGF0dW1HZXRJbnQxNihrZXlzW2pdKSwgZmFsc2UpOwor CQljb2xOYW1lID0gZ2V0X2F0dG5hbWUocmVsSWQsIGNvbGlkLCBmYWxzZSk7CiAKIAkJaWYg KGogPT0gMCkKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlm aWVyKGNvbE5hbWUpKTsKKwkJZWxzZSBpZiAod2l0aG91dE92ZXJsYXBzICYmIGogPT0gbktl eXMgLSAxKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsICVzIFdJVEhPVVQgT1ZFUkxB UFMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsKIAkJZWxzZQogCQkJYXBwZW5kU3Ry aW5nSW5mbyhidWYsICIsICVzIiwgcXVvdGVfaWRlbnRpZmllcihjb2xOYW1lKSk7CiAJfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggNzIzNGNiM2RhNi4uNzdhNWIy NTg4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwor KysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01NTM2LDggKzU1 MzYsOSBAQCBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKFJlbGF0aW9uIHJlbGF0aW9u KQogICogUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvIC0tIGdldCBpbmZvIGFib3V0IGluZGV4 J3MgZXhjbHVzaW9uIGNvbnN0cmFpbnQKICAqCiAgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQg b25seSBmb3IgYW4gaW5kZXggdGhhdCBpcyBrbm93biB0byBoYXZlIGFuCi0gKiBhc3NvY2lh dGVkIGV4Y2x1c2lvbiBjb25zdHJhaW50LiAgSXQgcmV0dXJucyBhcnJheXMgKHBhbGxvYydk IGluIGNhbGxlcidzCi0gKiBjb250ZXh0KSBvZiB0aGUgZXhjbHVzaW9uIG9wZXJhdG9yIE9J RHMsIHRoZWlyIHVuZGVybHlpbmcgZnVuY3Rpb25zJworICogYXNzb2NpYXRlZCBleGNsdXNp b24gY29uc3RyYWludCBvciB0ZW1wb3JhbCBwcmltYXJ5IGtleS91bmlxdWUKKyAqIGNvbnN0 cmFpbnQuIEl0IHJldHVybnMgYXJyYXlzIChwYWxsb2MnZCBpbiBjYWxsZXIncyBjb250ZXh0 KQorICogb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvciBPSURzLCB0aGVpciB1bmRlcmx5aW5n IGZ1bmN0aW9ucycKICAqIE9JRHMsIGFuZCB0aGVpciBzdHJhdGVneSBudW1iZXJzIGluIHRo ZSBpbmRleCdzIG9wY2xhc3Nlcy4gIFdlIGNhY2hlCiAgKiBhbGwgdGhpcyBpbmZvcm1hdGlv biBzaW5jZSBpdCByZXF1aXJlcyBhIGZhaXIgYW1vdW50IG9mIHdvcmsgdG8gZ2V0LgogICov CkBAIC01NjAzLDcgKzU2MDQsMTAgQEAgUmVsYXRpb25HZXRFeGNsdXNpb25JbmZvKFJlbGF0 aW9uIGluZGV4UmVsYXRpb24sCiAJCWludAkJCW5lbGVtOwogCiAJCS8qIFdlIHdhbnQgdGhl IGV4Y2x1c2lvbiBjb25zdHJhaW50IG93bmluZyB0aGUgaW5kZXggKi8KLQkJaWYgKGNvbmZv cm0tPmNvbnR5cGUgIT0gQ09OU1RSQUlOVF9FWENMVVNJT04gfHwKKwkJaWYgKChjb25mb3Jt LT5jb250eXBlICE9IENPTlNUUkFJTlRfRVhDTFVTSU9OICYmCisJCQkJCSEoY29uZm9ybS0+ Y29udGVtcG9yYWwgJiYgKAorCQkJCQkJCWNvbmZvcm0tPmNvbnR5cGUgPT0gQ09OU1RSQUlO VF9QUklNQVJZCisJCQkJCQkJfHwgY29uZm9ybS0+Y29udHlwZSA9PSBDT05TVFJBSU5UX1VO SVFVRSkpKSB8fAogCQkJY29uZm9ybS0+Y29uaW5kaWQgIT0gUmVsYXRpb25HZXRSZWxpZChp bmRleFJlbGF0aW9uKSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBmN2I2 MTc2NjkyLi5lZmU4ZDcyYjMyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTY5NzIsNyArNjk3Miw4 IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvIHRibGluZm9bXSwgaW50 IG51bVRhYmxlcykKIAkJCQlpX3RhYmxlc3BhY2UsCiAJCQkJaV9pbmRyZWxvcHRpb25zLAog CQkJCWlfaW5kc3RhdGNvbHMsCi0JCQkJaV9pbmRzdGF0dmFsczsKKwkJCQlpX2luZHN0YXR2 YWxzLAorCQkJCWlfd2l0aG91dG92ZXJsYXBzOwogCiAJLyoKIAkgKiBXZSB3YW50IHRvIHBl cmZvcm0ganVzdCBvbmUgcXVlcnkgYWdhaW5zdCBwZ19pbmRleC4gIEhvd2V2ZXIsIHdlCkBA IC03MDQ3LDEwICs3MDQ4LDE3IEBAIGdldEluZGV4ZXMoQXJjaGl2ZSAqZm91dCwgVGFibGVJ bmZvIHRibGluZm9bXSwgaW50IG51bVRhYmxlcykKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJz aW9uID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJCQkJ ICJpLmluZG51bGxzbm90ZGlzdGluY3QgIik7CisJCQkJCQkJICJpLmluZG51bGxzbm90ZGlz dGluY3QsICIpOwogCWVsc2UKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCi0JCQkJ CQkJICJmYWxzZSBBUyBpbmRudWxsc25vdGRpc3RpbmN0ICIpOworCQkJCQkJCSAiZmFsc2Ug QVMgaW5kbnVsbHNub3RkaXN0aW5jdCwgIik7CisKKwlpZiAoZm91dC0+cmVtb3RlVmVyc2lv biA+PSAxNzAwMDApCisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAi Yy5jb25leGNsb3AgSVMgTk9UIE5VTEwgQVMgd2l0aG91dG92ZXJsYXBzICIpOworCWVsc2UK KwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCisJCQkJCQkJICJudWxsIEFTIHdpdGhv dXRvdmVybGFwcyAiKTsKIAogCS8qCiAJICogVGhlIHBvaW50IG9mIHRoZSBtZXNzeS1sb29r aW5nIG91dGVyIGpvaW4gaXMgdG8gZmluZCBhIGNvbnN0cmFpbnQgdGhhdApAQCAtNzEyNSw2 ICs3MTMzLDcgQEAgZ2V0SW5kZXhlcyhBcmNoaXZlICpmb3V0LCBUYWJsZUluZm8gdGJsaW5m b1tdLCBpbnQgbnVtVGFibGVzKQogCWlfaW5kcmVsb3B0aW9ucyA9IFBRZm51bWJlcihyZXMs ICJpbmRyZWxvcHRpb25zIik7CiAJaV9pbmRzdGF0Y29scyA9IFBRZm51bWJlcihyZXMsICJp bmRzdGF0Y29scyIpOwogCWlfaW5kc3RhdHZhbHMgPSBQUWZudW1iZXIocmVzLCAiaW5kc3Rh dHZhbHMiKTsKKwlpX3dpdGhvdXRvdmVybGFwcyA9IFBRZm51bWJlcihyZXMsICJ3aXRob3V0 b3ZlcmxhcHMiKTsKIAogCWluZHhpbmZvID0gKEluZHhJbmZvICopIHBnX21hbGxvYyhudHVw cyAqIHNpemVvZihJbmR4SW5mbykpOwogCkBAIC03MjI3LDYgKzcyMzYsNyBAQCBnZXRJbmRl eGVzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyB0YmxpbmZvW10sIGludCBudW1UYWJsZXMp CiAJCQkJY29uc3RyaW5mby0+Y29uZGVmZXJyZWQgPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBp X2NvbmRlZmVycmVkKSkgPT0gJ3QnOwogCQkJCWNvbnN0cmluZm8tPmNvbmlzbG9jYWwgPSB0 cnVlOwogCQkJCWNvbnN0cmluZm8tPnNlcGFyYXRlID0gdHJ1ZTsKKwkJCQljb25zdHJpbmZv LT53aXRob3V0b3ZlcmxhcHMgPSAqKFBRZ2V0dmFsdWUocmVzLCBqLCBpX3dpdGhvdXRvdmVy bGFwcykpID09ICd0JzsKIAogCQkJCWluZHhpbmZvW2pdLmluZGV4Y29uc3RyYWludCA9IGNv bnN0cmluZm8tPmRvYmouZHVtcElkOwogCQkJfQpAQCAtMTY5MjIsOSArMTY5MzIsMjIgQEAg ZHVtcENvbnN0cmFpbnQoQXJjaGl2ZSAqZm91dCwgY29uc3QgQ29uc3RyYWludEluZm8gKmNv bmluZm8pCiAJCQkJCWJyZWFrOwogCQkJCWF0dG5hbWUgPSBnZXRBdHRyTmFtZShpbmRrZXks IHRiaW5mbyk7CiAKLQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiJXMlcyIsCi0JCQkJCQkJ CSAgKGsgPT0gMCkgPyAiIiA6ICIsICIsCi0JCQkJCQkJCSAgZm10SWQoYXR0bmFtZSkpOwor CQkJCWlmIChrID09IDApCisJCQkJeworCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiJXMi LAorCQkJCQkJCQkJCWZtdElkKGF0dG5hbWUpKTsKKwkJCQl9CisJCQkJZWxzZSBpZiAoayA9 PSBpbmR4aW5mby0+aW5kbmtleWF0dHJzIC0gMSAmJgorCQkJCQkJY29uaW5mby0+d2l0aG91 dG92ZXJsYXBzKQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiwgJXMgV0lU SE9VVCBPVkVSTEFQUyIsCisJCQkJCQkJCQkgIGZtdElkKGF0dG5hbWUpKTsKKwkJCQl9CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiwgJXMiLAorCQkJ CQkJCQkJCWZtdElkKGF0dG5hbWUpKTsKKwkJCQl9CiAJCQl9CiAKIAkJCWlmIChpbmR4aW5m by0+aW5kbmtleWF0dHJzIDwgaW5keGluZm8tPmluZG5hdHRycykKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5oCmlu ZGV4IDkwMzZiMTNmNmEuLjc3M2EyZGUxOGIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaApAQCAtNDg5LDYg KzQ4OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9jb25zdHJhaW50SW5mbwogCWJvb2wJCWNvbmRl ZmVycmVkOwkvKiB0cnVlIGlmIGNvbnN0cmFpbnQgaXMgSU5JVElBTExZIERFRkVSUkVEICov CiAJYm9vbAkJY29uaXNsb2NhbDsJCS8qIHRydWUgaWYgY29uc3RyYWludCBoYXMgbG9jYWwg ZGVmaW5pdGlvbiAqLwogCWJvb2wJCXNlcGFyYXRlOwkJLyogdHJ1ZSBpZiBtdXN0IGR1bXAg YXMgc2VwYXJhdGUgaXRlbSAqLworCWJvb2wJCXdpdGhvdXRvdmVybGFwczsJLyogdHJ1ZSBp ZiB0aGUgbGFzdCBlbGVtIGlzIFdJVEhPVVQgT1ZFUkxBUFMgKi8KIH0gQ29uc3RyYWludElu Zm87CiAKIHR5cGVkZWYgc3RydWN0IF9wcm9jTGFuZ0luZm8KZGlmZiAtLWdpdCBhL3NyYy9i aW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBsIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3Bn X2R1bXAucGwKaW5kZXggMDc1OGZlNWVhMC4uMjJhYTg3ZDNkYyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3Qv MDAyX3BnX2R1bXAucGwKQEAgLTEwMTUsNiArMTAxNSw1MiBAQCBteSAldGVzdHMgPSAoCiAJ CX0sCiAJfSwKIAorCSdBTFRFUiBUQUJMRSBPTkxZIHRlc3RfdGFibGVfdHBrIEFERCBDT05T VFJBSU5UIC4uLiBQUklNQVJZIEtFWSAoLi4uLCAuLi4gV0lUSE9VVCBPVkVSTEFQUyknID0+ IHsKKwkJY3JlYXRlX3NxbCAgPT4gJ0NSRUFURSBUQUJMRSBkdW1wX3Rlc3QudGVzdF90YWJs ZV90cGsgKAorCQkJCQkJCWNvbDEgaW50NHJhbmdlLAorCQkJCQkJCWNvbDIgdHN0enJhbmdl LAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtleSBQUklNQVJZIEtFWQor CQkJCQkJCQkoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKSk7JywKKwkJcmVnZXhwID0+ IHFyL14KKwkJCVxRQUxURVIgVEFCTEUgT05MWSBkdW1wX3Rlc3QudGVzdF90YWJsZV90cGtc RSBcbl5ccysKKwkJCVxRQUREIENPTlNUUkFJTlQgdGVzdF90YWJsZV90cGtfcGtleSBQUklN QVJZIEtFWSAoY29sMSwgY29sMiBXSVRIT1VUIE9WRVJMQVBTKTtcRQorCQkJL3htLAorCQls aWtlID0+IHsKKwkJCSVmdWxsX3J1bnMsCisJCQklZHVtcF90ZXN0X3NjaGVtYV9ydW5zLAor CQkJc2VjdGlvbl9wb3N0X2RhdGEgID0+IDEsCisJCQlleGNsdWRlX3Rlc3RfdGFibGUgPT4g MSwKKwkJfSwKKwkJdW5saWtlID0+IHsKKwkJCW9ubHlfZHVtcF90ZXN0X3RhYmxlICAgICA9 PiAxLAorCQkJZXhjbHVkZV9kdW1wX3Rlc3Rfc2NoZW1hID0+IDEsCisJCQlvbmx5X2R1bXBf bWVhc3VyZW1lbnQgICAgPT4gMSwKKwkJfSwKKwl9LAorCisJJ0FMVEVSIFRBQkxFIE9OTFkg dGVzdF90YWJsZV90dXEgQUREIENPTlNUUkFJTlQgLi4uIFVOSVFVRSAoLi4uLCAuLi4gV0lU SE9VVCBPVkVSTEFQUyknID0+IHsKKwkJY3JlYXRlX3NxbCAgPT4gJ0NSRUFURSBUQUJMRSBk dW1wX3Rlc3QudGVzdF90YWJsZV90dXEgKAorCQkJCQkJCWNvbDEgaW50NHJhbmdlLAorCQkJ CQkJCWNvbDIgdHN0enJhbmdlLAorCQkJCQkJCUNPTlNUUkFJTlQgdGVzdF90YWJsZV90dXFf dXEgVU5JUVVFCisJCQkJCQkJCShjb2wxLCBjb2wyIFdJVEhPVVQgT1ZFUkxBUFMpKTsnLAor CQlyZWdleHAgPT4gcXIvXgorCQkJXFFBTFRFUiBUQUJMRSBPTkxZIGR1bXBfdGVzdC50ZXN0 X3RhYmxlX3R1cVxFIFxuXlxzKworCQkJXFFBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmxlX3R1 cV91cSBVTklRVUUgKGNvbDEsIGNvbDIgV0lUSE9VVCBPVkVSTEFQUyk7XEUKKwkJCS94bSwK KwkJbGlrZSA9PiB7CisJCQklZnVsbF9ydW5zLAorCQkJJWR1bXBfdGVzdF9zY2hlbWFfcnVu cywKKwkJCXNlY3Rpb25fcG9zdF9kYXRhICA9PiAxLAorCQkJZXhjbHVkZV90ZXN0X3RhYmxl ID0+IDEsCisJCX0sCisJCXVubGlrZSA9PiB7CisJCQlvbmx5X2R1bXBfdGVzdF90YWJsZSAg ICAgPT4gMSwKKwkJCWV4Y2x1ZGVfZHVtcF90ZXN0X3NjaGVtYSA9PiAxLAorCQkJb25seV9k dW1wX21lYXN1cmVtZW50ICAgID0+IDEsCisJCX0sCisJfSwKKwogCSdBTFRFUiBUQUJMRSAo cGFydGl0aW9uZWQpIEFERCBDT05TVFJBSU5UIC4uLiBGT1JFSUdOIEtFWScgPT4gewogCQlj cmVhdGVfb3JkZXIgPT4gNCwKIAkJY3JlYXRlX3NxbCA9PiAnQ1JFQVRFIFRBQkxFIGR1bXBf dGVzdC50ZXN0X3RhYmxlX2ZrICgKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmli ZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5kZXggYmFjOTRhMzM4Yy4uNGZiZmMw NzQ2MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTIzODQsNiArMjM4NCwxMCBAQCBkZXNjcmliZU9uZVRh YmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hlbWFuYW1lLAogCQkJZWxzZQogCQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICIsIGZhbHNlIEFTIGluZGlzcmVwbGlkZW50Iik7CiAJ CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiLCBjMi5yZWx0YWJsZXNwYWNlIik7CisJ CQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJCQkJYXBwZW5kUFFFeHBCdWZmZXJT dHIoJmJ1ZiwgIiwgY29uLmNvbnRlbXBvcmFsIik7CisJCQllbHNlCisJCQkJYXBwZW5kUFFF eHBCdWZmZXJTdHIoJmJ1ZiwgIiwgZmFsc2UgQVMgY29udGVtcG9yYWwiKTsKIAkJCWFwcGVu ZFBRRXhwQnVmZmVyKCZidWYsCiAJCQkJCQkJICAiXG5GUk9NIHBnX2NhdGFsb2cucGdfY2xh c3MgYywgcGdfY2F0YWxvZy5wZ19jbGFzcyBjMiwgcGdfY2F0YWxvZy5wZ19pbmRleCBpXG4i CiAJCQkJCQkJICAiICBMRUZUIEpPSU4gcGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGNvbiBP TiAoY29ucmVsaWQgPSBpLmluZHJlbGlkIEFORCBjb25pbmRpZCA9IGkuaW5kZXhyZWxpZCBB TkQgY29udHlwZSBJTiAoJ3AnLCd1JywneCcpKVxuIgpAQCAtMjQwNSw4ICsyNDA5LDEyIEBA IGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQkJ CXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIgICAgXCIlc1wiIiwKIAkJCQkJCQkJCSAgUFFn ZXR2YWx1ZShyZXN1bHQsIGksIDApKTsKIAotCQkJCQkvKiBJZiBleGNsdXNpb24gY29uc3Ry YWludCwgcHJpbnQgdGhlIGNvbnN0cmFpbnRkZWYgKi8KLQkJCQkJaWYgKHN0cmNtcChQUWdl dHZhbHVlKHJlc3VsdCwgaSwgNyksICJ4IikgPT0gMCkKKwkJCQkJLyoKKwkJCQkJICogSWYg ZXhjbHVzaW9uIGNvbnN0cmFpbnQgb3IgdGVtcG9yYWwgUEsvVU5JUVVFIGNvbnN0cmFpbnQs CisJCQkJCSAqIHByaW50IHRoZSBjb25zdHJhaW50ZGVmCisJCQkJCSAqLworCQkJCQlpZiAo c3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCA3KSwgIngiKSA9PSAwIHx8CisJCQkJCQkJ c3RyY21wKFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAxMiksICJ0IikgPT0gMCkKIAkJCQkJewog CQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIiAlcyIsCiAJCQkJCQkJCQkJICBQUWdl dHZhbHVlKHJlc3VsdCwgaSwgNikpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxv Zy9pbmRleC5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9pbmRleC5oCmluZGV4IDRkOGJhODFm OTAuLmE2MDQ1NDZmNDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvaW5kZXgu aAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2luZGV4LmgKQEAgLTkxLDYgKzkxLDcgQEAg ZXh0ZXJuIE9pZAlpbmRleF9jcmVhdGUoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogI2RlZmlu ZQlJTkRFWF9DT05TVFJfQ1JFQVRFX0lOSVRfREVGRVJSRUQJKDEgPDwgMikKICNkZWZpbmUJ SU5ERVhfQ09OU1RSX0NSRUFURV9VUERBVEVfSU5ERVgJKDEgPDwgMykKICNkZWZpbmUJSU5E RVhfQ09OU1RSX0NSRUFURV9SRU1PVkVfT0xEX0RFUFMJKDEgPDwgNCkKKyNkZWZpbmUJSU5E RVhfQ09OU1RSX0NSRUFURV9URU1QT1JBTAkJKDEgPDwgNSkKIAogZXh0ZXJuIE9pZAlpbmRl eF9jb25jdXJyZW50bHlfY3JlYXRlX2NvcHkoUmVsYXRpb24gaGVhcFJlbGF0aW9uLAogCQkJ CQkJCQkJCSAgIE9pZCBvbGRJbmRleElkLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0 YWxvZy9wZ19jb25zdHJhaW50LmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFp bnQuaAppbmRleCA5YjlkOGZhZjM1Li43ODZhOWNhOTA0IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX2NvbnN0cmFpbnQuaApAQCAtMTA3LDYgKzEwNywxMiBAQCBDQVRBTE9HKHBnX2NvbnN0 cmFpbnQsMjYwNixDb25zdHJhaW50UmVsYXRpb25JZCkKIAkvKiBIYXMgYSBsb2NhbCBkZWZp bml0aW9uIGFuZCBjYW5ub3QgYmUgaW5oZXJpdGVkICovCiAJYm9vbAkJY29ubm9pbmhlcml0 OwogCisJLyoKKwkgKiBGb3IgcHJpbWFyeSBhbmQgZm9yZWlnbiBrZXlzLCBzaWduaWZpZXMg dGhlIGxhc3QgY29sdW1uIGlzIGEgcmFuZ2UKKwkgKiBhbmQgc2hvdWxkIHVzZSBvdmVybGFw cyBpbnN0ZWFkIG9mIGVxdWFscy4KKwkgKi8KKwlib29sCQljb250ZW1wb3JhbDsKKwogI2lm ZGVmIENBVEFMT0dfVkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBo ZXJlICovCiAKIAkvKgpAQCAtMTQ2LDcgKzE1Miw3IEBAIENBVEFMT0cocGdfY29uc3RyYWlu dCwyNjA2LENvbnN0cmFpbnRSZWxhdGlvbklkKQogCiAJLyoKIAkgKiBJZiBhbiBleGNsdXNp b24gY29uc3RyYWludCwgdGhlIE9JRHMgb2YgdGhlIGV4Y2x1c2lvbiBvcGVyYXRvcnMgZm9y Ci0JICogZWFjaCBjb2x1bW4gb2YgdGhlIGNvbnN0cmFpbnQKKwkgKiBlYWNoIGNvbHVtbiBv ZiB0aGUgY29uc3RyYWludC4gQWxzbyBzZXQgZm9yIHRlbXBvcmFsIHByaW1hcnkga2V5cy4K IAkgKi8KIAlPaWQJCQljb25leGNsb3BbMV0gQktJX0xPT0tVUChwZ19vcGVyYXRvcik7CiAK QEAgLTIzNiw2ICsyNDIsNyBAQCBleHRlcm4gT2lkCUNyZWF0ZUNvbnN0cmFpbnRFbnRyeShj b25zdCBjaGFyICpjb25zdHJhaW50TmFtZSwKIAkJCQkJCQkJICBib29sIGNvbklzTG9jYWws CiAJCQkJCQkJCSAgaW50IGNvbkluaENvdW50LAogCQkJCQkJCQkgIGJvb2wgY29uTm9Jbmhl cml0LAorCQkJCQkJCQkgIGJvb2wgY29uVGVtcG9yYWwsCiAJCQkJCQkJCSAgYm9vbCBpc19p bnRlcm5hbCk7CiAKIGV4dGVybiBib29sIENvbnN0cmFpbnROYW1lSXNVc2VkKENvbnN0cmFp bnRDYXRlZ29yeSBjb25DYXQsIE9pZCBvYmpJZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NvbW1hbmRzL2RlZnJlbS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKaW5k ZXggMTc5ZWI5OTAxZi4uZjEwODg2ZjZjYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvZGVmcmVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZGVmcmVtLmgKQEAg LTQ0LDcgKzQ0LDggQEAgZXh0ZXJuIGNoYXIgKkNob29zZVJlbGF0aW9uTmFtZShjb25zdCBj aGFyICpuYW1lMSwgY29uc3QgY2hhciAqbmFtZTIsCiBleHRlcm4gYm9vbCBDaGVja0luZGV4 Q29tcGF0aWJsZShPaWQgb2xkSWQsCiAJCQkJCQkJCSBjb25zdCBjaGFyICphY2Nlc3NNZXRo b2ROYW1lLAogCQkJCQkJCQkgY29uc3QgTGlzdCAqYXR0cmlidXRlTGlzdCwKLQkJCQkJCQkJ IGNvbnN0IExpc3QgKmV4Y2x1c2lvbk9wTmFtZXMpOworCQkJCQkJCQkgY29uc3QgTGlzdCAq ZXhjbHVzaW9uT3BOYW1lcywKKwkJCQkJCQkJIGJvb2wgaXN0ZW1wb3JhbCk7CiBleHRlcm4g T2lkCUdldERlZmF1bHRPcENsYXNzKE9pZCB0eXBlX2lkLCBPaWQgYW1faWQpOwogZXh0ZXJu IE9pZAlSZXNvbHZlT3BDbGFzcyhjb25zdCBMaXN0ICpvcGNsYXNzLCBPaWQgYXR0clR5cGUs CiAJCQkJCQkgICBjb25zdCBjaGFyICphY2Nlc3NNZXRob2ROYW1lLCBPaWQgYWNjZXNzTWV0 aG9kSWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBjYjcxNGY0YTE5Li4zNWMyMmMz N2M3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMTU1LDYgKzE1NSw3IEBAIHR5cGVk ZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCVVuaXF1ZVByb2NzCiAgKgkJVW5pcXVlU3RyYXRz CiAgKgkJVW5pcXVlCQkJCWlzIGl0IGEgdW5pcXVlIGluZGV4PworICoJCVRlbXBvcmFsCQkJ aXMgaXQgZm9yIGEgdGVtcG9yYWwgY29uc3RyYWludD8KICAqCQlPcGNsYXNzT3B0aW9ucwkJ b3BjbGFzcy1zcGVjaWZpYyBvcHRpb25zLCBvciBOVUxMIGlmIG5vbmUKICAqCQlSZWFkeUZv ckluc2VydHMJCWlzIGl0IHZhbGlkIGZvciBpbnNlcnRzPwogICoJCUNoZWNrZWRVbmNoYW5n ZWQJSW5kZXhVbmNoYW5nZWQgc3RhdHVzIGRldGVybWluZWQgeWV0PwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCmluZGV4IGZlZjRjNzE0YjguLjA3NDdiNTRiMjYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKQEAgLTI2NDEsNiArMjY0MSw5IEBAIHR5cGVkZWYgc3RydWN0IENvbnN0 cmFpbnQKIAlPaWQJCQlvbGRfcGt0YWJsZV9vaWQ7CS8qIHBnX2NvbnN0cmFpbnQuY29uZnJl bGlkIG9mIG15IGZvcm1lcgogCQkJCQkJCQkJICogc2VsZiAqLwogCisJLyogRmllbGRzIHVz ZWQgZm9yIHRlbXBvcmFsIFBSSU1BUlkgS0VZIGFuZCBGT1JFSUdOIEtFWSBjb25zdHJhaW50 czogKi8KKwlOb2RlCSAgICp3aXRob3V0X292ZXJsYXBzOyAvKiBTdHJpbmcgbm9kZSBuYW1p bmcgcmFuZ2UgY29sdW1uICovCisKIAkvKiBGaWVsZHMgdXNlZCBmb3IgY29uc3RyYWludHMg dGhhdCBhbGxvdyBhIE5PVCBWQUxJRCBzcGVjaWZpY2F0aW9uICovCiAJYm9vbAkJc2tpcF92 YWxpZGF0aW9uOwkvKiBza2lwIHZhbGlkYXRpb24gb2YgZXhpc3Rpbmcgcm93cz8gKi8KIAli b29sCQlpbml0aWFsbHlfdmFsaWQ7CS8qIG1hcmsgdGhlIG5ldyBjb25zdHJhaW50IGFzIHZh bGlkPyAqLwpAQCAtMzI0Miw2ICszMjQ1LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSW5kZXhTdG10 CiAJYm9vbAkJbnVsbHNfbm90X2Rpc3RpbmN0OyAvKiBudWxsIHRyZWF0bWVudCBmb3IgVU5J UVVFIGNvbnN0cmFpbnRzICovCiAJYm9vbAkJcHJpbWFyeTsJCS8qIGlzIGluZGV4IGEgcHJp bWFyeSBrZXk/ICovCiAJYm9vbAkJaXNjb25zdHJhaW50OwkvKiBpcyBpdCBmb3IgYSBwa2V5 L3VuaXF1ZSBjb25zdHJhaW50PyAqLworCWJvb2wJCWlzdGVtcG9yYWw7CQkvKiBpcyBpdCBm b3IgYSB0ZW1wb3JhbCBwa2V5PyAqLwogCWJvb2wJCWRlZmVycmFibGU7CQkvKiBpcyB0aGUg Y29uc3RyYWludCBERUZFUlJBQkxFPyAqLwogCWJvb2wJCWluaXRkZWZlcnJlZDsJLyogaXMg dGhlIGNvbnN0cmFpbnQgSU5JVElBTExZIERFRkVSUkVEPyAqLwogCWJvb2wJCXRyYW5zZm9y bWVkOwkvKiB0cnVlIHdoZW4gdHJhbnNmb3JtSW5kZXhTdG10IGlzIGZpbmlzaGVkICovCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMu b3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi41ZTEyNmRmMDcxCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJs YXBzLm91dApAQCAtMCwwICsxLDM1OSBAQAorLS0gVGVzdHMgZm9yIFdJVEhPVVQgT1ZFUkxB UFMuCistLQorLS0gV2UgbGVhdmUgYmVoaW5kIHNldmVyYWwgdGFibGVzIHRvIHRlc3QgcGdf ZHVtcCBldGM6CistLSB0ZW1wb3JhbF9ybmcsIHRlbXBvcmFsX3JuZzIsCistLSB0ZW1wb3Jh bF9ma19ybmcycm5nLgorLS0KKy0tIHRlc3QgaW5wdXQgcGFyc2VyCistLQorLS0gUEsgd2l0 aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9ybmcgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9y bmdfcGsgUFJJTUFSWSBLRVkgKHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJS T1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiV0lUSE9VVCIKK0xJTkUgMzogIENPTlNU UkFJTlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZICh2YWxpZF9hdCBXSVRIT1VUIE9W Li4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gUEsgd2l0aCBhIHJhbmdlIGNvbHVtbi9QRVJJT0QgdGhhdCBpc24n dCB0aGVyZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIElOVEVHRVIsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBX SVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAgcmFuZ2Ugb3IgUEVSSU9EICJ2YWxpZF9h dCIgaW4gV0lUSE9VVCBPVkVSTEFQUyBkb2VzIG5vdCBleGlzdAorLS0gUEsgd2l0aCBhIG5v bi1yYW5nZSBjb2x1bW46CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBJTlRF R0VSLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VSUk9SOiAg Y29sdW1uICJ2YWxpZF9hdCIgaW4gV0lUSE9VVCBPVkVSTEFQUyBpcyBub3QgYSByYW5nZSB0 eXBlCistLSBQSyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxF IHRlbXBvcmFsX3JuZyAoCisJLS0gU2luY2Ugd2UgY2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBi dHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGludDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGlu dC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVzc2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUg dHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcKKyAgICAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZW1wb3JhbF9ybmciCisgIENvbHVtbiAgfCAgIFR5cGUgICAgfCBDb2xsYXRpb24g fCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tCisgaWQgICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAg ICAgICAgfCBub3QgbnVsbCB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAgICAg IHwgbm90IG51bGwgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZ19wayIgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0 X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9 ICd0ZW1wb3JhbF9ybmdfcGsnOworICAgICAgICAgICAgcGdfZ2V0X2NvbnN0cmFpbnRkZWYg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiso MSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZS T00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg Q1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmdfcGsgT04gdGVtcG9yYWxfcm5nIFVT SU5HIGdpc3QgKGlkLCB2YWxpZF9hdCkKKygxIHJvdykKKworLS0gUEsgd2l0aCB0d28gY29s dW1ucyBwbHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQx IGludDRyYW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09O U1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3BrIFBSSU1BUlkgS0VZIChpZDEsIGlkMiwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcyCisgICAgICAgICAg ICAgVGFibGUgInB1YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4gIHwgICBUeXBlICAg IHwgQ29sbGF0aW9uIHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkMSAgICAgIHwgaW50 NHJhbmdlIHwgICAgICAgICAgIHwgbm90IG51bGwgfCAKKyBpZDIgICAgICB8IGludDRyYW5n ZSB8ICAgICAgICAgICB8IG5vdCBudWxsIHwgCisgdmFsaWRfYXQgfCB0c3JhbmdlICAgfCAg ICAgICAgICAgfCBub3QgbnVsbCB8IAorSW5kZXhlczoKKyAgICAidGVtcG9yYWxfcm5nMl9w ayIgUFJJTUFSWSBLRVkgKGlkMSwgaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQor CitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAgICAgICAgICAgIHBn X2dldF9jb25zdHJhaW50ZGVmICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgUFJJTUFSWSBLRVkgKGlkMSwg aWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1QgcGdf Z2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hF UkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JF QVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3BrIE9OIHRlbXBvcmFsX3JuZzIgVVNJ TkcgZ2lzdCAoaWQxLCBpZDIsIHZhbGlkX2F0KQorKDEgcm93KQorCitEUk9QIFRBQkxFIHRl bXBvcmFsX3JuZzI7CistLSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUg VFlQRSB0ZXh0cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIp OworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0ZXh0cmFuZ2UyLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUg dGVtcG9yYWxfcm5nMiBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wazsKK0RST1Ag VEFCTEUgdGVtcG9yYWxfcm5nMjsKK0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworLS0gVU5JUVVF IHdpdGggbm8gY29sdW1ucyBqdXN0IFdJVEhPVVQgT1ZFUkxBUFM6CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcm5nMiAoCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX3JuZzJfdXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK0VS Uk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIldJVEhPVVQiCitMSU5FIDM6ICBDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFICh2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gVU5JUVVFIHdpdGggYSByYW5nZSBjb2x1bW4vUEVSSU9EIHRoYXQgaXNu J3QgdGhlcmU6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQgSU5URUdFUiwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CitFUlJPUjogIHJhbmdlIG9yIFBFUklPRCAidmFsaWRfYXQi IGluIFdJVEhPVVQgT1ZFUkxBUFMgZG9lcyBub3QgZXhpc3QKKy0tIFVOSVFVRSB3aXRoIGEg bm9uLXJhbmdlIGNvbHVtbjoKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcyICgKKwlpZCBJ TlRFR0VSLAorCXZhbGlkX2F0IFRFWFQsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmcyX3Vx IFVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworRVJST1I6ICBj b2x1bW4gInZhbGlkX2F0IiBpbiBXSVRIT1VUIE9WRVJMQVBTIGlzIG5vdCBhIHJhbmdlIHR5 cGUKKy0tIFVOSVFVRSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRB QkxFIHRlbXBvcmFsX3JuZzIgKAorCS0tIFNpbmNlIHdlIGNhbid0IGRlcGVuZCBvbiBoYXZp bmcgYnRyZWVfZ2lzdCBoZXJlLAorCS0tIHVzZSBhbiBpbnQ0cmFuZ2UgaW5zdGVhZCBvZiBh biBpbnQuCisJLS0gKFRoZSByYW5nZXR5cGVzIHJlZ3Jlc3Npb24gdGVzdCB1c2VzIHRoZSBz YW1lIHRyaWNrLikKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmcyCisgICAgICAgICAgICAgVGFibGUgInB1 YmxpYy50ZW1wb3JhbF9ybmcyIgorICBDb2x1bW4gIHwgICBUeXBlICAgIHwgQ29sbGF0aW9u IHwgTnVsbGFibGUgfCBEZWZhdWx0IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQorIGlkICAgICAgIHwgaW50NHJhbmdlIHwgICAg ICAgICAgIHwgICAgICAgICAgfCAKKyB2YWxpZF9hdCB8IHRzcmFuZ2UgICB8ICAgICAgICAg ICB8ICAgICAgICAgIHwgCitJbmRleGVzOgorICAgICJ0ZW1wb3JhbF9ybmcyX3VxIiBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorCitTRUxFQ1QgcGdfZ2V0X2Nv bnN0cmFpbnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0 ZW1wb3JhbF9ybmcyX3VxJzsKKyAgICAgICAgICBwZ19nZXRfY29uc3RyYWludGRlZiAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBVTklR VUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKDEgcm93KQorCitTRUxFQ1Qg cGdfZ2V0X2luZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQg V0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3VxJzsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBnX2dldF9pbmRleGRlZiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQ1JFQVRFIFVOSVFV RSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3VxIE9OIHRlbXBvcmFsX3JuZzIgVVNJTkcgZ2lzdCAo aWQsIHZhbGlkX2F0KQorKDEgcm93KQorCistLSBVTklRVUUgd2l0aCB0d28gY29sdW1ucyBw bHVzIGEgcmFuZ2U6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCisJaWQxIGludDRy YW5nZSwKKwlpZDIgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ybmczX3VxIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5nMworICAgICAgICAgICAgIFRhYmxlICJw dWJsaWMudGVtcG9yYWxfcm5nMyIKKyAgQ29sdW1uICB8ICAgVHlwZSAgICB8IENvbGxhdGlv biB8IE51bGxhYmxlIHwgRGVmYXVsdCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBpZDEgICAgICB8IGludDRyYW5nZSB8ICAg ICAgICAgICB8ICAgICAgICAgIHwgCisgaWQyICAgICAgfCBpbnQ0cmFuZ2UgfCAgICAgICAg ICAgfCAgICAgICAgICB8IAorIHZhbGlkX2F0IHwgdHNyYW5nZSAgIHwgICAgICAgICAgIHwg ICAgICAgICAgfCAKK0luZGV4ZXM6CisgICAgInRlbXBvcmFsX3JuZzNfdXEiIFVOSVFVRSAo aWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisKK1NFTEVDVCBwZ19nZXRf Y29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0g J3RlbXBvcmFsX3JuZzNfdXEnOworICAgICAgICAgICAgIHBnX2dldF9jb25zdHJhaW50ZGVm ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFVOSVFVRSAoaWQxLCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CisoMSByb3cpCisKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEn OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X2luZGV4ZGVm ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBDUkVBVEUgVU5JUVVFIElOREVYIHRlbXBvcmFsX3JuZzNf dXEgT04gdGVtcG9yYWxfcm5nMyBVU0lORyBnaXN0IChpZDEsIGlkMiwgdmFsaWRfYXQpCiso MSByb3cpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMzsKKy0tCistLSB0ZXN0IEFMVEVS IFRBQkxFIEFERCBDT05TVFJBSU5UCistLQorRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQg dHNyYW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3JuZ19waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUyk7CistLSBQSyB3aXRoIFVTSU5HIElOREVYIChub3QgcG9zc2libGUpOgorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFu Z2UKKyk7CitDUkVBVEUgSU5ERVggaWR4X3RlbXBvcmFsM191cSBPTiB0ZW1wb3JhbDMgVVNJ TkcgZ2lzdCAoaWQsIHZhbGlkX2F0KTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMworCUFERCBD T05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZIFVTSU5HIElOREVYIGlkeF90 ZW1wb3JhbDNfdXE7CitFUlJPUjogICJpZHhfdGVtcG9yYWwzX3VxIiBpcyBub3QgYSB1bmlx dWUgaW5kZXgKK0xJTkUgMjogIEFERCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworICAgICAg ICAgICAgIF4KK0RFVEFJTDogIENhbm5vdCBjcmVhdGUgYSBwcmltYXJ5IGtleSBvciB1bmlx dWUgY29uc3RyYWludCB1c2luZyBzdWNoIGFuIGluZGV4LgorRFJPUCBUQUJMRSB0ZW1wb3Jh bDM7CistLSBVTklRVUUgd2l0aCBVU0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3Jhbmdl CispOworQ1JFQVRFIElOREVYIGlkeF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVTSU5H IGdpc3QgKGlkLCB2YWxpZF9hdCk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09O U1RSQUlOVCB0ZW1wb3JhbDNfdXEKKwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFs M191cTsKK0VSUk9SOiAgImlkeF90ZW1wb3JhbDNfdXEiIGlzIG5vdCBhIHVuaXF1ZSBpbmRl eAorTElORSAyOiAgQUREIENPTlNUUkFJTlQgdGVtcG9yYWwzX3VxCisgICAgICAgICAgICAg XgorREVUQUlMOiAgQ2Fubm90IGNyZWF0ZSBhIHByaW1hcnkga2V5IG9yIHVuaXF1ZSBjb25z dHJhaW50IHVzaW5nIHN1Y2ggYW4gaW5kZXguCitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0t IEFkZCByYW5nZSBjb2x1bW4gYW5kIHRoZSBQSyBhdCB0aGUgc2FtZSB0aW1lCitDUkVBVEUg VEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UKKyk7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMKKwlBREQgQ09MVU1OIHZhbGlkX2F0IHRzcmFuZ2UsCisJQUREIENPTlNUUkFJTlQg dGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworLS0gQWRkIHJhbmdlIGNvbHVtbiBhbmQg VU5JUVVFIGNvbnN0cmFpbnQgYXQgdGhlIHNhbWUgdGltZQorQ1JFQVRFIFRBQkxFIHRlbXBv cmFsMyAoCisJaWQgaW50NHJhbmdlCispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQURE IENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsM191 cQorCVVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpOworRFJPUCBUQUJM RSB0ZW1wb3JhbDM7CistLQorLS0gdGVzdCBQSyBpbnNlcnRzCistLQorLS0gb2theToKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDMtMDMnLCAnMjAxOC0wNC0wNCcpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMywzXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCBOVUxMKSk7CistLSBzaG91bGQg ZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0VSUk9SOiAgY29uZmxpY3Rpbmcg a2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ybmdf cGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIk1vbiBKYW4gMDEg MDA6MDA6MDAgMjAxOCIsIkZyaSBKYW4gMDUgMDA6MDA6MDAgMjAxOCIpKSBjb25mbGljdHMg d2l0aCBleGlzdGluZyBrZXkgKGlkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIg MDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpKS4KK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKE5VTEwsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMS0wNScpKTsKK0VSUk9SOiAgbnVsbCB2YWx1ZSBpbiBjb2x1bW4gImlkIiBvZiBy ZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitE RVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlucyAobnVsbCwgWyJNb24gSmFuIDAxIDAwOjAw OjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgiKSkuCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMsM10nLCBOVUxMKTsKK0VSUk9SOiAgbnVsbCB2YWx1 ZSBpbiBjb2x1bW4gInZhbGlkX2F0IiBvZiByZWxhdGlvbiAidGVtcG9yYWxfcm5nIiB2aW9s YXRlcyBub3QtbnVsbCBjb25zdHJhaW50CitERVRBSUw6ICBGYWlsaW5nIHJvdyBjb250YWlu cyAoWzMsNCksIG51bGwpLgorLS0KKy0tIHRlc3QgYSByYW5nZSB3aXRoIGJvdGggYSBQSyBh bmQgYSBVTklRVUUgY29uc3RyYWludAorLS0KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAor ICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgaWQyIGludDhyYW5n ZSwKKyAgbmFtZSBURVhULAorICBDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtF WSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorICBDT05TVFJBSU5UIHRlbXBv cmFsM191bmlxIFVOSVFVRSAoaWQyLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZB TFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEn KSwgJ1s3LDddJywgJ2ZvbycpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAx JywgJzIwMTAtMDEtMDEnKSwgJ1s5LDldJywgJ2JhcicpCis7CitEUk9QIFRBQkxFIHRlbXBv cmFsMzsKKy0tCistLSB0ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVuY2llcworLS0K K0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMgQUxU RVIgQ09MVU1OIHZhbGlkX2F0IERST1AgTk9UIE5VTEw7CitFUlJPUjogIGNvbHVtbiAidmFs aWRfYXQiIGlzIGluIGEgcHJpbWFyeSBrZXkKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBBTFRF UiBDT0xVTU4gdmFsaWRfYXQgVFlQRSB0c3R6cmFuZ2UgVVNJTkcgdHN0enJhbmdlKGxvd2Vy KHZhbGlkX2F0KSwgdXBwZXIodmFsaWRfYXQpKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBS RU5BTUUgQ09MVU1OIHZhbGlkX2F0IFRPIHZhbGlkX3RocnU7CitBTFRFUiBUQUJMRSB0ZW1w b3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfdGhydTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOwor LS0KKy0tIHRlc3QgUEFSVElUSU9OIEJZIGZvciByYW5nZXMKKy0tCistLSB0ZW1wb3JhbCBQ UklNQVJZIEtFWToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNU UkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUg VEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVT IElOICgnWzEsMV0nLCAnWzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgn WzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyks CisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAn dGhyZWUnKTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1l ICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikg fCBbMDEtMDEtMjAwMCwwMi0wMS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAyLTAxLTIwMDAs MDMtMDEtMjAwMCkgfCBvbmUKKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwg dGhyZWUKKygzIHJvd3MpCisKK1NFTEVDVCAqIEZST00gdHAxIE9SREVSIEJZIGlkLCB2YWxp ZF9hdDsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0y MDAwLDAyLTAxLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAw KSB8IG9uZQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZh bGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzMsNCkgfCBbMDEt MDEtMjAwMCwwMS0wMS0yMDEwKSB8IHRocmVlCisoMSByb3cpCisKK0RST1AgVEFCTEUgdGVt cG9yYWxfcGFydGl0aW9uZWQ7CistLSB0ZW1wb3JhbCBVTklRVUU6CitDUkVBVEUgVEFCTEUg dGVtcG9yYWxfcGFydGl0aW9uZWQgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRl cmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRf dXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9O IEJZIExJU1QgKGlkKTsKK0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFs X3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMiwyXScpOworQ1JFQVRF IFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZBTFVF UyBJTiAoJ1szLDNdJywgJ1s0LDRdJyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAw LTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMi0wMScs ICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAwMC0w MS0wMScsICcyMDEwLTAxLTAxJyksICd0aHJlZScpOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAg dmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMS0yMDAwLDAyLTAxLTIwMDApIHwgb25l CisgWzEsMikgfCBbMDItMDEtMjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFszLDQpIHwgWzAx LTAxLTIwMDAsMDEtMDEtMjAxMCkgfCB0aHJlZQorKDMgcm93cykKKworU0VMRUNUICogRlJP TSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0 ICAgICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLQorIFsxLDIpIHwgWzAxLTAxLTIwMDAsMDItMDEtMjAwMCkgfCBvbmUKKyBbMSwyKSB8 IFswMi0wMS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisoMiByb3dzKQorCitTRUxFQ1QgKiBG Uk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRf YXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0KKyBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwgdGhyZWUKKygx IHJvdykKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCmluZGV4IDRkZjlkODUwM2IuLjY2Yjc1ZmExMmYgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQpAQCAtMjgsNyArMjgsNyBAQCB0ZXN0OiBz dHJpbmdzIG1kNSBudW1lcm9sb2d5IHBvaW50IGxzZWcgbGluZSBib3ggcGF0aCBwb2x5Z29u IGNpcmNsZSBkYXRlIHRpbWUgdAogIyBnZW9tZXRyeSBkZXBlbmRzIG9uIHBvaW50LCBsc2Vn LCBsaW5lLCBib3gsIHBhdGgsIHBvbHlnb24sIGNpcmNsZQogIyBob3JvbG9neSBkZXBlbmRz IG9uIGRhdGUsIHRpbWUsIHRpbWV0eiwgdGltZXN0YW1wLCB0aW1lc3RhbXB0eiwgaW50ZXJ2 YWwKICMgLS0tLS0tLS0tLQotdGVzdDogZ2VvbWV0cnkgaG9yb2xvZ3kgdHN0eXBlcyByZWdl eCB0eXBlX3Nhbml0eSBvcHJfc2FuaXR5IG1pc2Nfc2FuaXR5IGNvbW1lbnRzIGV4cHJlc3Np b25zIHVuaWNvZGUgeGlkIG12Y2MKK3Rlc3Q6IGdlb21ldHJ5IGhvcm9sb2d5IHRzdHlwZXMg cmVnZXggdHlwZV9zYW5pdHkgb3ByX3Nhbml0eSBtaXNjX3Nhbml0eSBjb21tZW50cyBleHBy ZXNzaW9ucyB1bmljb2RlIHhpZCBtdmNjIHdpdGhvdXRfb3ZlcmxhcHMKIAogIyAtLS0tLS0t LS0tCiAjIExvYWQgaHVnZSBhbW91bnRzIG9mIGRhdGEKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9z cWwvd2l0aG91dF9vdmVybGFwcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uM2MzMjM2NjE4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0wLDAgKzEsMjYyIEBACistLSBUZXN0 cyBmb3IgV0lUSE9VVCBPVkVSTEFQUy4KKy0tCistLSBXZSBsZWF2ZSBiZWhpbmQgc2V2ZXJh bCB0YWJsZXMgdG8gdGVzdCBwZ19kdW1wIGV0YzoKKy0tIHRlbXBvcmFsX3JuZywgdGVtcG9y YWxfcm5nMiwKKy0tIHRlbXBvcmFsX2ZrX3JuZzJybmcuCisKKy0tCistLSB0ZXN0IGlucHV0 IHBhcnNlcgorLS0KKworLS0gUEsgd2l0aCBubyBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVS TEFQUzoKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3JuZyAoCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQUklNQVJZIEtFWSAodmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFBLIHdpdGggYSByYW5nZSBjb2x1bW4vUEVS SU9EIHRoYXQgaXNuJ3QgdGhlcmU6CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAor CWlkIElOVEVHRVIsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkg KGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworLS0gUEsgd2l0aCBhIG5v bi1yYW5nZSBjb2x1bW46CisKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmcgKAorCWlkIElO VEVHRVIsCisJdmFsaWRfYXQgVEVYVCwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZ19wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworCistLSBQ SyB3aXRoIG9uZSBjb2x1bW4gcGx1cyBhIHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcm5nICgKKwktLSBTaW5jZSB3ZSBjYW4ndCBkZXBlbmQgb24gaGF2aW5nIGJ0cmVlX2dp c3QgaGVyZSwKKwktLSB1c2UgYW4gaW50NHJhbmdlIGluc3RlYWQgb2YgYW4gaW50LgorCS0t IChUaGUgcmFuZ2V0eXBlcyByZWdyZXNzaW9uIHRlc3QgdXNlcyB0aGUgc2FtZSB0cmljay4p CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBT KQorKTsKK1xkIHRlbXBvcmFsX3JuZworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nX3Br JzsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdf Y29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZ19wayc7CisKKy0tIFBL IHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzIgKAorCWlkMSBpbnQ0cmFuZ2UsCisJaWQyIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0 c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAoaWQx LCBpZDIsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworXGQgdGVtcG9yYWxfcm5n MgorU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50 IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfcm5nMl9wayc7CitTRUxFQ1QgcGdfZ2V0X2lu ZGV4ZGVmKGNvbmluZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29u bmFtZSA9ICd0ZW1wb3JhbF9ybmcyX3BrJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsK KworCistLSBQSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGU6CitDUkVBVEUgVFlQRSB0ZXh0 cmFuZ2UyIEFTIHJhbmdlIChzdWJ0eXBlPXRleHQsIGNvbGxhdGlvbj0iQyIpOworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0ZXh0 cmFuZ2UyLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wayBQUklNQVJZIEtFWSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQUxURVIgVEFCTEUgdGVtcG9yYWxf cm5nMiBEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl9wazsKK0RST1AgVEFCTEUgdGVt cG9yYWxfcm5nMjsKK0RST1AgVFlQRSB0ZXh0cmFuZ2UyOworCistLSBVTklRVUUgd2l0aCBu byBjb2x1bW5zIGp1c3QgV0lUSE9VVCBPVkVSTEFQUzoKKworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3JuZzIgKAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9y bmcyX3VxIFVOSVFVRSAodmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVO SVFVRSB3aXRoIGEgcmFuZ2UgY29sdW1uL1BFUklPRCB0aGF0IGlzbid0IHRoZXJlOgorCitD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQgSU5URUdFUiwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CisKKy0tIFVOSVFVRSB3aXRoIGEgbm9uLXJhbmdlIGNvbHVtbjoKKworQ1JFQVRF IFRBQkxFIHRlbXBvcmFsX3JuZzIgKAorCWlkIElOVEVHRVIsCisJdmFsaWRfYXQgVEVYVCwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX3JuZzJfdXEgVU5JUVVFIChpZCwgdmFsaWRfYXQgV0lU SE9VVCBPVkVSTEFQUykKKyk7CisKKy0tIFVOSVFVRSB3aXRoIG9uZSBjb2x1bW4gcGx1cyBh IHJhbmdlOgorCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJLS0gU2luY2Ugd2Ug Y2FuJ3QgZGVwZW5kIG9uIGhhdmluZyBidHJlZV9naXN0IGhlcmUsCisJLS0gdXNlIGFuIGlu dDRyYW5nZSBpbnN0ZWFkIG9mIGFuIGludC4KKwktLSAoVGhlIHJhbmdldHlwZXMgcmVncmVz c2lvbiB0ZXN0IHVzZXMgdGhlIHNhbWUgdHJpY2suKQorCWlkIGludDRyYW5nZSwKKwl2YWxp ZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcm5nMl91cSBVTklRVUUgKGlk LCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKK1xkIHRlbXBvcmFsX3JuZzIKK1NF TEVDVCBwZ19nZXRfY29uc3RyYWludGRlZihvaWQpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzJfdXEnOworU0VMRUNUIHBnX2dldF9pbmRleGRl Zihjb25pbmRpZCwgMCwgdHJ1ZSkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUg PSAndGVtcG9yYWxfcm5nMl91cSc7CisKKy0tIFVOSVFVRSB3aXRoIHR3byBjb2x1bW5zIHBs dXMgYSByYW5nZToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9ybmczICgKKwlpZDEgaW50NHJh bmdlLAorCWlkMiBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5nZSwKKwlDT05TVFJBSU5U IHRlbXBvcmFsX3JuZzNfdXEgVU5JUVVFIChpZDEsIGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitcZCB0ZW1wb3JhbF9ybmczCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFp bnRkZWYob2lkKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3Jh bF9ybmczX3VxJzsKK1NFTEVDVCBwZ19nZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUp IEZST00gcGdfY29uc3RyYWludCBXSEVSRSBjb25uYW1lID0gJ3RlbXBvcmFsX3JuZzNfdXEn OworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmczOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJM RSBBREQgQ09OU1RSQUlOVAorLS0KKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ybmc7CitDUkVB VEUgVEFCTEUgdGVtcG9yYWxfcm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZQorKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3JuZworCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3JuZ19waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVS TEFQUyk7CisKKy0tIFBLIHdpdGggVVNJTkcgSU5ERVggKG5vdCBwb3NzaWJsZSk6CitDUkVB VEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZQorKTsKK0NSRUFURSBJTkRFWCBpZHhfdGVtcG9yYWwzX3VxIE9OIHRlbXBvcmFsMyBVU0lO RyBnaXN0IChpZCwgdmFsaWRfYXQpOworQUxURVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENP TlNUUkFJTlQgdGVtcG9yYWwzX3BrCisJUFJJTUFSWSBLRVkgVVNJTkcgSU5ERVggaWR4X3Rl bXBvcmFsM191cTsKK0RST1AgVEFCTEUgdGVtcG9yYWwzOworCistLSBVTklRVUUgd2l0aCBV U0lORyBJTkRFWCAobm90IHBvc3NpYmxlKToKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbDMgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlCispOworQ1JFQVRFIElOREVYIGlk eF90ZW1wb3JhbDNfdXEgT04gdGVtcG9yYWwzIFVTSU5HIGdpc3QgKGlkLCB2YWxpZF9hdCk7 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbDMKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfdXEK KwlVTklRVUUgVVNJTkcgSU5ERVggaWR4X3RlbXBvcmFsM191cTsKK0RST1AgVEFCTEUgdGVt cG9yYWwzOworCistLSBBZGQgcmFuZ2UgY29sdW1uIGFuZCB0aGUgUEsgYXQgdGhlIHNhbWUg dGltZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlCispOworQUxU RVIgVEFCTEUgdGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsM19waworCVBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQg V0lUSE9VVCBPVkVSTEFQUyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKworLS0gQWRkIHJh bmdlIGNvbHVtbiBhbmQgVU5JUVVFIGNvbnN0cmFpbnQgYXQgdGhlIHNhbWUgdGltZQorQ1JF QVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlCispOworQUxURVIgVEFCTEUg dGVtcG9yYWwzCisJQUREIENPTFVNTiB2YWxpZF9hdCB0c3JhbmdlLAorCUFERCBDT05TVFJB SU5UIHRlbXBvcmFsM191cQorCVVOSVFVRSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxB UFMpOworRFJPUCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tCistLSB0ZXN0IFBLIGluc2VydHMK Ky0tCisKKy0tIG9rYXk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEs MV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDItMDMnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcyMDE4LTAzLTAzJywg JzIwMTgtMDQtMDQnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIs Ml0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDEtMDUnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywg TlVMTCkpOworCistLSBzaG91bGQgZmFpbDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMS0wNScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKE5VTEwsIHRzcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMS0wNScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMywzXScsIE5VTEwpOworCistLQorLS0gdGVzdCBhIHJhbmdlIHdpdGggYm90aCBh IFBLIGFuZCBhIFVOSVFVRSBjb25zdHJhaW50CistLQorCitDUkVBVEUgVEFCTEUgdGVtcG9y YWwzICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIGlkMiBp bnQ4cmFuZ2UsCisgIG5hbWUgVEVYVCwKKyAgQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJ TUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKyAgQ09OU1RSQUlO VCB0ZW1wb3JhbDNfdW5pcSBVTklRVUUgKGlkMiwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQ UykKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2YWxpZF9hdCwgaWQyLCBuYW1l KQorICBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKKyAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQorOworRFJPUCBUQUJM RSB0ZW1wb3JhbDM7CisKKy0tCistLSB0ZXN0IGNoYW5naW5nIHRoZSBQSydzIGRlcGVuZGVu Y2llcworLS0KKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsMyAoCisJaWQgaW50NHJhbmdlLAor CXZhbGlkX2F0IHRzcmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbDNfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKTsKKworQUxURVIgVEFCTEUg dGVtcG9yYWwzIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBEUk9QIE5PVCBOVUxMOworQUxURVIg VEFCTEUgdGVtcG9yYWwzIEFMVEVSIENPTFVNTiB2YWxpZF9hdCBUWVBFIHRzdHpyYW5nZSBV U0lORyB0c3R6cmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBlcih2YWxpZF9hdCkpOworQUxU RVIgVEFCTEUgdGVtcG9yYWwzIFJFTkFNRSBDT0xVTU4gdmFsaWRfYXQgVE8gdmFsaWRfdGhy dTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsMyBEUk9QIENPTFVNTiB2YWxpZF90aHJ1OworRFJP UCBUQUJMRSB0ZW1wb3JhbDM7CisKKy0tCistLSB0ZXN0IFBBUlRJVElPTiBCWSBmb3IgcmFu Z2VzCistLQorCistLSB0ZW1wb3JhbCBQUklNQVJZIEtFWToKK0NSRUFURSBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5n ZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9wayBQ UklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElP TiBCWSBMSVNUIChpZCk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3Jh bF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzIsMl0nKTsKK0NSRUFU RSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxV RVMgSU4gKCdbMywzXScsICdbNCw0XScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWQgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAw MC0wMi0wMScpLCAnb25lJyksCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEn LCAnMjAwMC0wMy0wMScpLCAnb25lJyksCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAndGhyZWUnKTsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0 cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKKworLS0g dGVtcG9yYWwgVU5JUVVFOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgK KwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorICBuYW1lIHRleHQsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQsIHZhbGlkX2F0 IFdJVEhPVVQgT1ZFUkxBUFMpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitDUkVBVEUg VEFCTEUgdHAxIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVT IElOICgnWzEsMV0nLCAnWzIsMl0nKTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9G IHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbMywzXScsICdbNCw0XScp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWQgVkFMVUVTCisgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCisgICgn WzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyks CisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScpLCAn dGhyZWUnKTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkg aWQsIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSB0cDEgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworRFJPUCBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKLS0gCjIuMjUuMQoK --------------1Pz4yQrPlGKyiycfBE07F79X Content-Type: text/x-patch; charset=UTF-8; name="v14-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Disposition: attachment; filename="v14-0002-Add-temporal-FOREIGN-KEYs.patch" Content-Transfer-Encoding: base64 RnJvbSBhOGEyMjQ0MGYwOWRlOWI0NWE1OGYxMjJhOGUzZmFlZjVkMjc5MzYyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTI6NTg6NTEgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNCAyLzVdIEFkZCB0ZW1wb3JhbCBGT1JFSUdOIEtFWXMK Ci0gQWRkZWQgYmlzb24gc3VwcG9ydCBmb3IgdGVtcG9yYWwgRk9SRUlHTiBLRVlzLiBUaGV5 IHNob3VsZCBoYXZlIGEKICByYW5nZSBjb2x1bW4gZm9yIHRoZSB0ZW1wb3JhbCBjb21wb25l bnQuCi0gQWRkZWQgdGVtcG9yYWwgdHJpZ2dlciBmdW5jdGlvbnMgYWtpbiB0byBleGlzdGlu ZyBSSSB0cmlnZ2VyCiAgZnVuY3Rpb25zLgotIERvbid0IHlldCBzdXBwb3J0IE9OIHtVUERB VEUsREVMRVRFfSB7Q0FTQ0FERSxTRVQgTlVMTCxTRVQgREVGQVVMVH0uCi0gQWRkZWQgcGdf ZHVtcCBzdXBwb3J0LgotIFNob3cgdGhlIGNvcnJlY3Qgc3ludGF4IGluIHBzcWwgXGQgb3V0 cHV0IGZvciBmb3JlaWduIGtleXMuCi0gQWRkZWQgdGVzdHMgYW5kIGRvY3VtZW50YXRpb24u Ci0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCAgICAgICAgICAgIHwg IDQyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICAgICAg fCA3NTggKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAg ICAgICAgICAgICAgICAgICAgfCAgMzcgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90 cmlnZ2Vycy5jICAgICAgICAgICB8IDM0MSArKysrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3J1bGV1dGlscy5jICAgICAgICAgICAgIHwgIDE5ICstCiBzcmMvaW5jbHVkZS9jYXRh bG9nL3BnX2NvbnN0cmFpbnQuaCAgICAgICAgICAgfCAgIDggKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICAgICAgICAgICB8ICAyNCArCiBzcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9yZWdyZXNz L2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0ICAgICB8IDQ0NyArKysrKysrKysrKwog c3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwgICAgIHwgNDQ3ICsr KysrKysrKysrCiAxMSBmaWxlcyBjaGFuZ2VkLCAxNzgzIGluc2VydGlvbnMoKyksIDM0MyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJs ZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbAppbmRleCA4N2Yw YWFiMTNiLi5mZWE4ZmMzYzdhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwK QEAgLTgxLDcgKzgxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBMT0NBTCBdIHsgVEVNUE9S QVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBFWEkKICAgVU5JUVVF IFsgTlVMTFMgWyBOT1QgXSBESVNUSU5DVCBdICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4g V0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmlu ZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywg Li4uIF0gWywgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVy dmFsPC9yZXBsYWNlYWJsZT4gV0lUSE9VVCBPVkVSTEFQUyBdICkgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIEVY Q0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+aW5kZXhfbWV0 aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2VhYmxlPiBb IFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwvcmVw bGFjZWFibGU+ICkgXSB8Ci0gIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBSRUZFUkVO Q0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFi bGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBs YWNlYWJsZT4gWywgLi4uIF0gKSBdCisgIEZPUkVJR04gS0VZICggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywg UEVSSU9EIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZh bDwvcmVwbGFjZWFibGU+IF0gKSBSRUZFUkVOQ0VTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gWywgUEVSSU9E IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50ZW1wb3JhbF9pbnRlcnZhbDwvcmVw bGFjZWFibGU+IF0gKSBdCiAgICAgWyBNQVRDSCBGVUxMIHwgTUFUQ0ggUEFSVElBTCB8IE1B VENIIFNJTVBMRSBdIFsgT04gREVMRVRFIDxyZXBsYWNlYWJsZQogY2xhc3M9InBhcmFtZXRl ciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIE9OIFVQREFURSA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNl YWJsZT4gXSB9CiBbIERFRkVSUkFCTEUgfCBOT1QgREVGRVJSQUJMRSBdIFsgSU5JVElBTExZ IERFRkVSUkVEIHwgSU5JVElBTExZIElNTUVESUFURSBdCkBAIC0xMTQ5LDggKzExNDksOCBA QCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJp Y19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3Fs LWNyZWF0ZXRhYmxlLXBhcm1zLXJlZmVyZW5jZXMiPgogICAgIDx0ZXJtPjxsaXRlcmFsPlJF RkVSRU5DRVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZnRhYmxlPC9yZXBs YWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZjb2x1bW48 L3JlcGxhY2VhYmxlPiApIF0gWyBNQVRDSCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bWF0Y2h0eXBlPC9yZXBsYWNlYWJsZT4gXSBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXSBb IE9OIFVQREFURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmZXJlbnRpYWxf YWN0aW9uPC9yZXBsYWNlYWJsZT4gXTwvbGl0ZXJhbD4gKGNvbHVtbiBjb25zdHJhaW50KTwv dGVybT4KIAotICAgPHRlcm0+PGxpdGVyYWw+Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSAp Ci0gICAgUkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFi bGU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJl ZmNvbHVtbjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQorICAgPHRlcm0+PGxpdGVyYWw+ Rk9SRUlHTiBLRVkgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25h bWU8L3JlcGxhY2VhYmxlPiBbLCAuLi4gXSBbLCBQRVJJT0QgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRlbXBvcmFsX2ludGVydmFsPC9yZXBsYWNlYWJsZT4gXSApCisgICAg UkVGRVJFTkNFUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3Jl cGxhY2VhYmxlPiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJlZmNvbHVt bjwvcmVwbGFjZWFibGU+IFssIC4uLiBdIFssIFBFUklPRCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGVtcG9yYWxfaW50ZXJ2YWw8L3JlcGxhY2VhYmxlPiBdICkgXQogICAg IFsgTUFUQ0ggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1hdGNodHlwZTwvcmVw bGFjZWFibGU+IF0KICAgICBbIE9OIERFTEVURSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmVmZXJlbnRpYWxfYWN0aW9uPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgT04gVVBE QVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248 L3JlcGxhY2VhYmxlPiBdPC9saXRlcmFsPgpAQCAtMTE2MSwxMSArMTE2MSwyOSBAQCBXSVRI ICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRl cmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgICAgVGhlc2UgY2xhdXNlcyBzcGVjaWZ5IGEg Zm9yZWlnbiBrZXkgY29uc3RyYWludCwgd2hpY2ggcmVxdWlyZXMKICAgICAgIHRoYXQgYSBn cm91cCBvZiBvbmUgb3IgbW9yZSBjb2x1bW5zIG9mIHRoZSBuZXcgdGFibGUgbXVzdCBvbmx5 CiAgICAgICBjb250YWluIHZhbHVlcyB0aGF0IG1hdGNoIHZhbHVlcyBpbiB0aGUgcmVmZXJl bmNlZAotICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93IG9mIHRoZSByZWZlcmVuY2VkIHRh YmxlLiAgSWYgdGhlIDxyZXBsYWNlYWJsZQorICAgICAgY29sdW1uKHMpIG9mIHNvbWUgcm93 IG9mIHRoZSByZWZlcmVuY2VkIHRhYmxlLgorICAgICAgSWYgdGhlIDxyZXBsYWNlYWJsZQog ICAgICAgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gbGlzdCBp cyBvbWl0dGVkLCB0aGUKICAgICAgIHByaW1hcnkga2V5IG9mIHRoZSA8cmVwbGFjZWFibGUg Y2xhc3M9InBhcmFtZXRlciI+cmVmdGFibGU8L3JlcGxhY2VhYmxlPgogICAgICAgaXMgdXNl ZC4gIFRoZSByZWZlcmVuY2VkIGNvbHVtbnMgbXVzdCBiZSB0aGUgY29sdW1ucyBvZiBhIG5v bi1kZWZlcnJhYmxlCi0gICAgICB1bmlxdWUgb3IgcHJpbWFyeSBrZXkgY29uc3RyYWludCBp biB0aGUgcmVmZXJlbmNlZCB0YWJsZS4gIFRoZSB1c2VyCisgICAgICB1bmlxdWUgb3IgcHJp bWFyeSBrZXkgY29uc3RyYWludCBpbiB0aGUgcmVmZXJlbmNlZCB0YWJsZS4KKyAgICAgPC9w YXJhPgorCisgICAgIDxwYXJhPgorICAgICAgSWYgdGhlIGxhc3QgY29sdW1uIGlzIG1hcmtl ZCB3aXRoIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD4sCisgICAgICBpdCBtdXN0IGJlIGEg cGVyaW9kIG9yIHJhbmdlIGNvbHVtbiwgYW5kIHRoZSByZWZlcmVuY2VkIHRhYmxlCisgICAg ICBtdXN0IGhhdmUgYSB0ZW1wb3JhbCBwcmltYXJ5IGtleS4KKyAgICAgIFRoZSBub24tPGxp dGVyYWw+UEVSSU9EPC9saXRlcmFsPiBjb2x1bW5zIGFyZSB0cmVhdGVkIG5vcm1hbGx5Cisg ICAgICAoYW5kIHRoZXJlIG11c3QgYmUgYXQgbGVhc3Qgb25lIG9mIHRoZW0pLAorICAgICAg YnV0IHRoZSA8bGl0ZXJhbD5QRVJJT0Q8L2xpdGVyYWw+IGNvbHVtbiBpcyBub3QgY29tcGFy ZWQgZm9yIGVxdWFsaXR5LgorICAgICAgSW5zdGVhZCB0aGUgY29uc3RyYWludCBpcyBjb25z aWRlcmVkIHNhdGlzZmllZAorICAgICAgaWYgdGhlIHJlZmVyZW5jZWQgdGFibGUgaGFzIG1h dGNoaW5nIHJlY29yZHMgd2hvc2UgY29tYmluZWQgcmFuZ2VzIGNvbXBsZXRlbHkgY292ZXIK KyAgICAgIHRoZSByZWZlcmVuY2luZyByZWNvcmQuCisgICAgICBJbiBvdGhlciB3b3Jkcywg dGhlIHJlZmVyZW5jZSBtdXN0IGhhdmUgYSByZWZlcmVudCBmb3IgaXRzIGVudGlyZSBkdXJh dGlvbi4KKyAgICAgPC9wYXJhPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIHVzZXIKICAg ICAgIG11c3QgaGF2ZSA8bGl0ZXJhbD5SRUZFUkVOQ0VTPC9saXRlcmFsPiBwZXJtaXNzaW9u IG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlCiAgICAgICAoZWl0aGVyIHRoZSB3aG9sZSB0YWJs ZSwgb3IgdGhlIHNwZWNpZmljIHJlZmVyZW5jZWQgY29sdW1ucykuICBUaGUKICAgICAgIGFk ZGl0aW9uIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCByZXF1aXJlcyBhCkBAIC0xMjM3 LDcgKzEyNTUsMTAgQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICAgICAgIDxw YXJhPgogICAgICAgICAgIERlbGV0ZSBhbnkgcm93cyByZWZlcmVuY2luZyB0aGUgZGVsZXRl ZCByb3csIG9yIHVwZGF0ZSB0aGUKICAgICAgICAgICB2YWx1ZXMgb2YgdGhlIHJlZmVyZW5j aW5nIGNvbHVtbihzKSB0byB0aGUgbmV3IHZhbHVlcyBvZiB0aGUKLSAgICAgICAgICByZWZl cmVuY2VkIGNvbHVtbnMsIHJlc3BlY3RpdmVseS4KKyAgICAgICAgICByZWZlcmVuY2VkIGNv bHVtbnMsIHJlc3BlY3RpdmVseS4gSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwKKyAgICAg ICAgICB0aGUgZGVsZXRlIHdpbGwgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRl cmFsPiBzZW1hbnRpY3MKKyAgICAgICAgICB0byBjb25zdHJhaW4gdGhlIGVmZmVjdCB0byB0 aGUgYm91bmRzIG9mIHRoZSByZWZlcmVuY2VkIHJvdworICAgICAgICAgIGJlaW5nIGRlbGV0 ZWQuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92 YXJsaXN0ZW50cnk+CkBAIC0xMjUwLDYgKzEyNzEsMTIgQEAgV0lUSCAoIE1PRFVMVVMgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFi bGU+LCBSRU0KICAgICAgICAgICByZWZlcmVuY2luZyBjb2x1bW5zLCB0byBudWxsLiBBIHN1 YnNldCBvZiBjb2x1bW5zIGNhbiBvbmx5IGJlCiAgICAgICAgICAgc3BlY2lmaWVkIGZvciA8 bGl0ZXJhbD5PTiBERUxFVEU8L2xpdGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICA8L3BhcmE+ CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIEluIGEgdGVtcG9yYWwgZm9yZWlnbiBr ZXksIHRoZSBjaGFuZ2Ugd2lsbCB1c2UgPGxpdGVyYWw+Rk9SCisgICAgICAgICAgUE9SVElP TiBPRjwvbGl0ZXJhbD4gc2VtYW50aWNzIHRvIGNvbnN0cmFpbiB0aGUgZWZmZWN0IHRvIHRo ZSBib3VuZHMKKyAgICAgICAgICBvZiB0aGUgcmVmZXJlbmNlZCByb3cuCisgICAgICAgICA8 L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAK QEAgLTEyNjIsNiArMTI4OSw5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg ICAgICAgY2FuIG9ubHkgYmUgc3BlY2lmaWVkIGZvciA8bGl0ZXJhbD5PTiBERUxFVEU8L2xp dGVyYWw+IGFjdGlvbnMuCiAgICAgICAgICAgKFRoZXJlIG11c3QgYmUgYSByb3cgaW4gdGhl IHJlZmVyZW5jZWQgdGFibGUgbWF0Y2hpbmcgdGhlIGRlZmF1bHQKICAgICAgICAgICB2YWx1 ZXMsIGlmIHRoZXkgYXJlIG5vdCBudWxsLCBvciB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbC4p CisgICAgICAgICAgSW4gYSB0ZW1wb3JhbCBmb3JlaWduIGtleSwgdGhlIGNoYW5nZSB3aWxs IHVzZSA8bGl0ZXJhbD5GT1IgUE9SVElPTgorICAgICAgICAgIE9GPC9saXRlcmFsPiBzZW1h bnRpY3MgdG8gY29uc3RyYWluIHRoZSBlZmZlY3QgdG8gdGhlIGJvdW5kcyBvZiB0aGUKKyAg ICAgICAgICByZWZlcmVuY2VkIHJvdy4KICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVj bWRzLmMKaW5kZXggYmEyYTg5MTRlNC4uNWFmNzJlYTYyNyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKQEAgLTM4MCwxNyArMzgwLDIwIEBAIHN0YXRpYyBpbnQJdHJhbnNmb3Jt Q29sdW1uTmFtZUxpc3QoT2lkIHJlbElkLCBMaXN0ICpjb2xMaXN0LAogCQkJCQkJCQkJaW50 MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzKTsKIHN0YXRpYyBpbnQJdHJhbnNmb3JtRmtl eUdldFByaW1hcnlLZXkoUmVsYXRpb24gcGtyZWwsIE9pZCAqaW5kZXhPaWQsCiAJCQkJCQkJ CQkgICBMaXN0ICoqYXR0bmFtZWxpc3QsCisJCQkJCQkJCQkgICBOb2RlICoqcGtfcGVyaW9k LAogCQkJCQkJCQkJICAgaW50MTYgKmF0dG51bXMsIE9pZCAqYXR0dHlwaWRzLAorCQkJCQkJ CQkJICAgaW50MTYgKnBlcmlvZGF0dG51bXMsIE9pZCAqcGVyaW9kYXR0dHlwaWRzLAogCQkJ CQkJCQkJICAgT2lkICpvcGNsYXNzZXMpOwogc3RhdGljIE9pZAl0cmFuc2Zvcm1Ga2V5Q2hl Y2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkJCWludCBudW1hdHRycywgaW50MTYg KmF0dG51bXMsCisJCQkJCQkJCQlib29sIGlzX3RlbXBvcmFsLCBpbnQxNiBwZXJpb2RhdHRu dW0sCiAJCQkJCQkJCQlPaWQgKm9wY2xhc3Nlcyk7CiBzdGF0aWMgdm9pZCBjaGVja0ZrZXlQ ZXJtaXNzaW9ucyhSZWxhdGlvbiByZWwsIGludDE2ICphdHRudW1zLCBpbnQgbmF0dHMpOwog c3RhdGljIENvZXJjaW9uUGF0aFR5cGUgZmluZEZrZXlDYXN0KE9pZCB0YXJnZXRUeXBlSWQs IE9pZCBzb3VyY2VUeXBlSWQsCiAJCQkJCQkJCQkgT2lkICpmdW5jaWQpOwogc3RhdGljIHZv aWQgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpjb25uYW1lLAogCQkJCQkJ CQkJCSBSZWxhdGlvbiByZWwsIFJlbGF0aW9uIHBrcmVsLAotCQkJCQkJCQkJCSBPaWQgcGtp bmRPaWQsIE9pZCBjb25zdHJhaW50T2lkKTsKKwkJCQkJCQkJCQkgT2lkIHBraW5kT2lkLCBP aWQgY29uc3RyYWludE9pZCwgYm9vbCB0ZW1wb3JhbCk7CiBzdGF0aWMgdm9pZCBBVENvbnRy b2xsZXIoQWx0ZXJUYWJsZVN0bXQgKnBhcnNldHJlZSwKIAkJCQkJCSBSZWxhdGlvbiByZWws IExpc3QgKmNtZHMsIGJvb2wgcmVjdXJzZSwgTE9DS01PREUgbG9ja21vZGUsCiAJCQkJCQkg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKQEAgLTUwMCw3ICs1MDMsOCBA QCBzdGF0aWMgT2JqZWN0QWRkcmVzcyBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3 cXVldWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYQogCQkJCQkJCQkJCQlPaWQgKnBmZXFvcGVy YXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJCQkJ CQkJCQlpbnQgbnVtZmtkZWxzZXRjb2xzLCBpbnQxNiAqZmtkZWxzZXRjb2xzLAogCQkJCQkJ CQkJCQlib29sIG9sZF9jaGVja19vaywKLQkJCQkJCQkJCQkJT2lkIHBhcmVudERlbFRyaWdn ZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyKTsKKwkJCQkJCQkJCQkJT2lkIHBhcmVudERlbFRy aWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkJCQkJCQlib29sIGlzX3RlbXBv cmFsKTsKIHN0YXRpYyB2b2lkIHZhbGlkYXRlRmtPbkRlbGV0ZVNldENvbHVtbnMoaW50IG51 bWZrcywgY29uc3QgaW50MTYgKmZrYXR0bnVtcywKIAkJCQkJCQkJCQkgaW50IG51bWZrc2V0 Y29scywgY29uc3QgaW50MTYgKmZrc2V0Y29sc2F0dG51bXMsCiAJCQkJCQkJCQkJIExpc3Qg KmZrc2V0Y29scyk7CkBAIC01MTAsNyArNTE0LDkgQEAgc3RhdGljIHZvaWQgYWRkRmtSZWN1 cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50 LAogCQkJCQkJCQkJT2lkICpwZmVxb3BlcmF0b3JzLCBPaWQgKnBwZXFvcGVyYXRvcnMsIE9p ZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJCQkJCWludCBudW1ma2RlbHNldGNvbHMsIGludDE2 ICpma2RlbHNldGNvbHMsCiAJCQkJCQkJCQlib29sIG9sZF9jaGVja19vaywgTE9DS01PREUg bG9ja21vZGUsCi0JCQkJCQkJCQlPaWQgcGFyZW50SW5zVHJpZ2dlciwgT2lkIHBhcmVudFVw ZFRyaWdnZXIpOworCQkJCQkJCQkJT2lkIHBhcmVudEluc1RyaWdnZXIsIE9pZCBwYXJlbnRV cGRUcmlnZ2VyLAorCQkJCQkJCQkJYm9vbCBpc190ZW1wb3JhbCk7CisKIHN0YXRpYyB2b2lk IENsb25lRm9yZWlnbktleUNvbnN0cmFpbnRzKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHBh cmVudFJlbCwKIAkJCQkJCQkJCSAgIFJlbGF0aW9uIHBhcnRpdGlvblJlbCk7CiBzdGF0aWMg dm9pZCBDbG9uZUZrUmVmZXJlbmNlZChSZWxhdGlvbiBwYXJlbnRSZWwsIFJlbGF0aW9uIHBh cnRpdGlvblJlbCk7CkBAIC01NDIsNiArNTQ4LDEyIEBAIHN0YXRpYyB2b2lkIEdldEZvcmVp Z25LZXlDaGVja1RyaWdnZXJzKFJlbGF0aW9uIHRyaWdyZWwsCiAJCQkJCQkJCQkgICBPaWQg Y29ub2lkLCBPaWQgY29uZnJlbGlkLCBPaWQgY29ucmVsaWQsCiAJCQkJCQkJCQkgICBPaWQg Kmluc2VydFRyaWdnZXJPaWQsCiAJCQkJCQkJCQkgICBPaWQgKnVwZGF0ZVRyaWdnZXJPaWQp Oworc3RhdGljIHZvaWQgRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycyhDb25zdHJhaW50ICpm a2NvbnN0cmFpbnQsCisJCQkJCUFsdGVyZWRUYWJsZUluZm8gKnRhYiwgaW50IGksIGludDE2 ICpma2F0dG51bSwKKwkJCQkJYm9vbCAqb2xkX2NoZWNrX29rLCBMaXN0Q2VsbCAqKm9sZF9w ZmVxb3BfaXRlbSwKKwkJCQkJT2lkIHBrdHlwZSwgT2lkIGZrdHlwZSwgT2lkIG9wY2xhc3Ms CisJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGJvb2wgZm9yX292ZXJsYXBzLAorCQkJCQlPaWQg KnBmZXFvcE91dCwgT2lkICpwcGVxb3BPdXQsIE9pZCAqZmZlcW9wT3V0KTsKIHN0YXRpYyB2 b2lkIEFURXhlY0Ryb3BDb25zdHJhaW50KFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29u c3RyTmFtZSwKIAkJCQkJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwgYm9vbCByZWN1cnNl LAogCQkJCQkJCQkgYm9vbCBtaXNzaW5nX29rLCBMT0NLTU9ERSBsb2NrbW9kZSk7CkBAIC01 ODIyLDcgKzU4MzQsOCBAQCBBVFJld3JpdGVUYWJsZXMoQWx0ZXJUYWJsZVN0bXQgKnBhcnNl dHJlZSwgTGlzdCAqKndxdWV1ZSwgTE9DS01PREUgbG9ja21vZGUsCiAKIAkJCQl2YWxpZGF0 ZUZvcmVpZ25LZXlDb25zdHJhaW50KGZrY29uc3RyYWludC0+Y29ubmFtZSwgcmVsLCByZWZy ZWwsCiAJCQkJCQkJCQkJCSBjb24tPnJlZmluZGlkLAotCQkJCQkJCQkJCQkgY29uLT5jb25p ZCk7CisJCQkJCQkJCQkJCSBjb24tPmNvbmlkLAorCQkJCQkJCQkJCQkgY29uLT5jb250ZW1w b3JhbCk7CiAKIAkJCQkvKgogCQkJCSAqIE5vIG5lZWQgdG8gbWFyayB0aGUgY29uc3RyYWlu dCByb3cgYXMgdmFsaWRhdGVkLCB3ZSBkaWQKQEAgLTk0MzgsNiArOTQ1MSwxMSBAQCBBVEFk ZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8g KnRhYiwgUmVsYXRpb24gcmVsLAogCU9pZAkJCXBwZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tF WVNdID0gezB9OwogCU9pZAkJCWZmZXFvcGVyYXRvcnNbSU5ERVhfTUFYX0tFWVNdID0gezB9 OwogCWludDE2CQlma2RlbHNldGNvbHNbSU5ERVhfTUFYX0tFWVNdID0gezB9OworCWJvb2wJ CWlzX3RlbXBvcmFsID0gKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5VTEwpOworCWlu dDE2CQlwa3BlcmlvZGF0dG51bXNbMV0gPSB7MH07CisJaW50MTYJCWZrcGVyaW9kYXR0bnVt c1sxXSA9IHswfTsKKwlPaWQJCQlwa3BlcmlvZHR5cG9pZHNbMV0gPSB7MH07CisJT2lkCQkJ ZmtwZXJpb2R0eXBvaWRzWzFdID0gezB9OwogCWludAkJCWk7CiAJaW50CQkJbnVtZmtzLAog CQkJCW51bXBrcywKQEAgLTk1MzIsNiArOTU1MCwxMCBAQCBBVEFkZEZvcmVpZ25LZXlDb25z dHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24g cmVsLAogCW51bWZrcyA9IHRyYW5zZm9ybUNvbHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVs aWQocmVsKSwKIAkJCQkJCQkJCSBma2NvbnN0cmFpbnQtPmZrX2F0dHJzLAogCQkJCQkJCQkJ IGZrYXR0bnVtLCBma3R5cG9pZCk7CisJaWYgKGlzX3RlbXBvcmFsKQorCQl0cmFuc2Zvcm1D b2x1bW5OYW1lTGlzdChSZWxhdGlvbkdldFJlbGlkKHJlbCksCisJCQkJCQkJICBsaXN0X21h a2UxKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKSwKKwkJCQkJCQkgIGZrcGVyaW9kYXR0bnVt cywgZmtwZXJpb2R0eXBvaWRzKTsKIAogCW51bWZrZGVsc2V0Y29scyA9IHRyYW5zZm9ybUNv bHVtbk5hbWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocmVsKSwKIAkJCQkJCQkJCQkJICBma2Nv bnN0cmFpbnQtPmZrX2RlbF9zZXRfY29scywKQEAgLTk1NTAsNyArOTU3Miw5IEBAIEFUQWRk Rm9yZWlnbktleUNvbnN0cmFpbnQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAq dGFiLCBSZWxhdGlvbiByZWwsCiAJewogCQludW1wa3MgPSB0cmFuc2Zvcm1Ga2V5R2V0UHJp bWFyeUtleShwa3JlbCwgJmluZGV4T2lkLAogCQkJCQkJCQkJCQkmZmtjb25zdHJhaW50LT5w a19hdHRycywKKwkJCQkJCQkJCQkJJmZrY29uc3RyYWludC0+cGtfcGVyaW9kLAogCQkJCQkJ CQkJCQlwa2F0dG51bSwgcGt0eXBvaWQsCisJCQkJCQkJCQkJCXBrcGVyaW9kYXR0bnVtcywg cGtwZXJpb2R0eXBvaWRzLAogCQkJCQkJCQkJCQlvcGNsYXNzZXMpOwogCX0KIAllbHNlCkBA IC05NTU4LDggKzk1ODIsMTQgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJbnVtcGtz ID0gdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QoUmVsYXRpb25HZXRSZWxpZChwa3JlbCksCiAJ CQkJCQkJCQkJIGZrY29uc3RyYWludC0+cGtfYXR0cnMsCiAJCQkJCQkJCQkJIHBrYXR0bnVt LCBwa3R5cG9pZCk7CisJCWlmIChpc190ZW1wb3JhbCkKKwkJCXRyYW5zZm9ybUNvbHVtbk5h bWVMaXN0KFJlbGF0aW9uR2V0UmVsaWQocGtyZWwpLAorCQkJCQkJCQkJbGlzdF9tYWtlMShm a2NvbnN0cmFpbnQtPnBrX3BlcmlvZCksCisJCQkJCQkJCQlwa3BlcmlvZGF0dG51bXMsIHBr cGVyaW9kdHlwb2lkcyk7CisKIAkJLyogTG9vayBmb3IgYW4gaW5kZXggbWF0Y2hpbmcgdGhl IGNvbHVtbiBsaXN0ICovCiAJCWluZGV4T2lkID0gdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMo cGtyZWwsIG51bXBrcywgcGthdHRudW0sCisJCQkJCQkJCQkJICAgaXNfdGVtcG9yYWwsIHBr cGVyaW9kYXR0bnVtc1swXSwKIAkJCQkJCQkJCQkgICBvcGNsYXNzZXMpOwogCX0KIApAQCAt OTYxOCwxODcgKzk2NDgsMjcgQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoq d3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAogCWZvciAo aSA9IDA7IGkgPCBudW1wa3M7IGkrKykKIAl7Ci0JCU9pZAkJCXBrdHlwZSA9IHBrdHlwb2lk W2ldOwotCQlPaWQJCQlma3R5cGUgPSBma3R5cG9pZFtpXTsKLQkJT2lkCQkJZmt0eXBlZDsK LQkJSGVhcFR1cGxlCWNsYV9odDsKLQkJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7Ci0JCU9p ZAkJCWFtaWQ7Ci0JCU9pZAkJCW9wZmFtaWx5OwotCQlPaWQJCQlvcGNpbnR5cGU7Ci0JCU9p ZAkJCXBmZXFvcDsKLQkJT2lkCQkJcHBlcW9wOwotCQlPaWQJCQlmZmVxb3A7Ci0JCWludDE2 CQllcXN0cmF0ZWd5OwotCQlPaWQJCQlwZmVxb3BfcmlnaHQ7Ci0KLQkJLyogV2UgbmVlZCBz ZXZlcmFsIGZpZWxkcyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KLQkJY2xhX2h0 ID0gU2VhcmNoU3lzQ2FjaGUxKENMQU9JRCwgT2JqZWN0SWRHZXREYXR1bShvcGNsYXNzZXNb aV0pKTsKLQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKGNsYV9odCkpCi0JCQllbG9nKEVSUk9S LCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Igb3BjbGFzcyAldSIsIG9wY2xhc3Nlc1tpXSk7 Ci0JCWNsYV90dXAgPSAoRm9ybV9wZ19vcGNsYXNzKSBHRVRTVFJVQ1QoY2xhX2h0KTsKLQkJ YW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsKLQkJb3BmYW1pbHkgPSBjbGFfdHVwLT5vcGNm YW1pbHk7Ci0JCW9wY2ludHlwZSA9IGNsYV90dXAtPm9wY2ludHlwZTsKLQkJUmVsZWFzZVN5 c0NhY2hlKGNsYV9odCk7Ci0KLQkJLyoKLQkJICogQ2hlY2sgaXQncyBhIGJ0cmVlOyBjdXJy ZW50bHkgdGhpcyBjYW4gbmV2ZXIgZmFpbCBzaW5jZSBubyBvdGhlcgotCQkgKiBpbmRleCBB TXMgc3VwcG9ydCB1bmlxdWUgaW5kZXhlcy4gIElmIHdlIGV2ZXIgZGlkIGhhdmUgb3RoZXIg dHlwZXMKLQkJICogb2YgdW5pcXVlIGluZGV4ZXMsIHdlJ2QgbmVlZCBhIHdheSB0byBkZXRl cm1pbmUgd2hpY2ggb3BlcmF0b3IKLQkJICogc3RyYXRlZ3kgbnVtYmVyIGlzIGVxdWFsaXR5 LiAgKElzIGl0IHJlYXNvbmFibGUgdG8gaW5zaXN0IHRoYXQKLQkJICogZXZlcnkgc3VjaCBp bmRleCBBTSB1c2UgYnRyZWUncyBudW1iZXIgZm9yIGVxdWFsaXR5PykKLQkJICovCi0JCWlm IChhbWlkICE9IEJUUkVFX0FNX09JRCkKLQkJCWVsb2coRVJST1IsICJvbmx5IGItdHJlZSBp bmRleGVzIGFyZSBzdXBwb3J0ZWQgZm9yIGZvcmVpZ24ga2V5cyIpOwotCQllcXN0cmF0ZWd5 ID0gQlRFcXVhbFN0cmF0ZWd5TnVtYmVyOwotCi0JCS8qCi0JCSAqIFRoZXJlIGhhZCBiZXR0 ZXIgYmUgYSBwcmltYXJ5IGVxdWFsaXR5IG9wZXJhdG9yIGZvciB0aGUgaW5kZXguCi0JCSAq IFdlJ2xsIHVzZSBpdCBmb3IgUEsgPSBQSyBjb21wYXJpc29ucy4KLQkJICovCi0JCXBwZXFv cCA9IGdldF9vcGZhbWlseV9tZW1iZXIob3BmYW1pbHksIG9wY2ludHlwZSwgb3BjaW50eXBl LAotCQkJCQkJCQkJIGVxc3RyYXRlZ3kpOwotCi0JCWlmICghT2lkSXNWYWxpZChwcGVxb3Ap KQotCQkJZWxvZyhFUlJPUiwgIm1pc3Npbmcgb3BlcmF0b3IgJWQoJXUsJXUpIGluIG9wZmFt aWx5ICV1IiwKLQkJCQkgZXFzdHJhdGVneSwgb3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFt aWx5KTsKLQotCQkvKgotCQkgKiBBcmUgdGhlcmUgZXF1YWxpdHkgb3BlcmF0b3JzIHRoYXQg dGFrZSBleGFjdGx5IHRoZSBGSyB0eXBlPyBBc3N1bWUKLQkJICogd2Ugc2hvdWxkIGxvb2sg dGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCi0JCSAqLwotCQlma3R5cGVkID0gZ2V0QmFzZVR5 cGUoZmt0eXBlKTsKLQotCQlwZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5 LCBvcGNpbnR5cGUsIGZrdHlwZWQsCi0JCQkJCQkJCQkgZXFzdHJhdGVneSk7Ci0JCWlmIChP aWRJc1ZhbGlkKHBmZXFvcCkpCi0JCXsKLQkJCXBmZXFvcF9yaWdodCA9IGZrdHlwZWQ7Ci0J CQlmZmVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBma3R5cGVkLCBma3R5 cGVkLAotCQkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8q IGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KLQkJCXBmZXFvcF9yaWdodCA9IEludmFsaWRPaWQ7 Ci0JCQlmZmVxb3AgPSBJbnZhbGlkT2lkOwotCQl9Ci0KLQkJaWYgKCEoT2lkSXNWYWxpZChw ZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCi0JCXsKLQkJCS8qCi0JCQkgKiBPdGhl cndpc2UsIGxvb2sgZm9yIGFuIGltcGxpY2l0IGNhc3QgZnJvbSB0aGUgRksgdHlwZSB0byB0 aGUKLQkJCSAqIG9wY2ludHlwZSwgYW5kIGlmIGZvdW5kLCB1c2UgdGhlIHByaW1hcnkgZXF1 YWxpdHkgb3BlcmF0b3IuCi0JCQkgKiBUaGlzIGlzIGEgYml0IHRyaWNreSBiZWNhdXNlIG9w Y2ludHlwZSBtaWdodCBiZSBhIHBvbHltb3JwaGljCi0JCQkgKiB0eXBlIHN1Y2ggYXMgQU5Z QVJSQVkgb3IgQU5ZRU5VTTsgc28gd2hhdCB3ZSBoYXZlIHRvIHRlc3QgaXMKLQkJCSAqIHdo ZXRoZXIgdGhlIHR3byBhY3R1YWwgY29sdW1uIHR5cGVzIGNhbiBiZSBjb25jdXJyZW50bHkg Y2FzdCB0bwotCQkJICogdGhhdCB0eXBlLiAgKE90aGVyd2lzZSwgd2UnZCBmYWlsIHRvIHJl amVjdCBjb21iaW5hdGlvbnMgc3VjaAotCQkJICogYXMgaW50W10gYW5kIHBvaW50W10uKQot CQkJICovCi0JCQlPaWQJCQlpbnB1dF90eXBlaWRzWzJdOwotCQkJT2lkCQkJdGFyZ2V0X3R5 cGVpZHNbMl07Ci0KLQkJCWlucHV0X3R5cGVpZHNbMF0gPSBwa3R5cGU7Ci0JCQlpbnB1dF90 eXBlaWRzWzFdID0gZmt0eXBlOwotCQkJdGFyZ2V0X3R5cGVpZHNbMF0gPSBvcGNpbnR5cGU7 Ci0JCQl0YXJnZXRfdHlwZWlkc1sxXSA9IG9wY2ludHlwZTsKLQkJCWlmIChjYW5fY29lcmNl X3R5cGUoMiwgaW5wdXRfdHlwZWlkcywgdGFyZ2V0X3R5cGVpZHMsCi0JCQkJCQkJCUNPRVJD SU9OX0lNUExJQ0lUKSkKLQkJCXsKLQkJCQlwZmVxb3AgPSBmZmVxb3AgPSBwcGVxb3A7Ci0J CQkJcGZlcW9wX3JpZ2h0ID0gb3BjaW50eXBlOwotCQkJfQotCQl9Ci0KLQkJaWYgKCEoT2lk SXNWYWxpZChwZmVxb3ApICYmIE9pZElzVmFsaWQoZmZlcW9wKSkpCi0JCQllcmVwb3J0KEVS Uk9SLAotCQkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKLQkJCQkJ IGVycm1zZygiZm9yZWlnbiBrZXkgY29uc3RyYWludCBcIiVzXCIgY2Fubm90IGJlIGltcGxl bWVudGVkIiwKLQkJCQkJCQlma2NvbnN0cmFpbnQtPmNvbm5hbWUpLAotCQkJCQkgZXJyZGV0 YWlsKCJLZXkgY29sdW1ucyBcIiVzXCIgYW5kIFwiJXNcIiAiCi0JCQkJCQkJICAgImFyZSBv ZiBpbmNvbXBhdGlibGUgdHlwZXM6ICVzIGFuZCAlcy4iLAotCQkJCQkJCSAgIHN0clZhbChs aXN0X250aChma2NvbnN0cmFpbnQtPmZrX2F0dHJzLCBpKSksCi0JCQkJCQkJICAgc3RyVmFs KGxpc3RfbnRoKGZrY29uc3RyYWludC0+cGtfYXR0cnMsIGkpKSwKLQkJCQkJCQkgICBmb3Jt YXRfdHlwZV9iZShma3R5cGUpLAotCQkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKHBrdHlwZSkp KSk7Ci0KLQkJaWYgKG9sZF9jaGVja19vaykKLQkJewotCQkJLyoKLQkJCSAqIFdoZW4gYSBw ZmVxb3AgY2hhbmdlcywgcmV2YWxpZGF0ZSB0aGUgY29uc3RyYWludC4gIFdlIGNvdWxkCi0J CQkgKiBwZXJtaXQgaW50cmEtb3BmYW1pbHkgY2hhbmdlcywgYnV0IHRoYXQgYWRkcyBzdWJ0 bGUgY29tcGxleGl0eQotCQkJICogd2l0aG91dCBhbnkgY29uY3JldGUgYmVuZWZpdCBmb3Ig Y29yZSB0eXBlcy4gIFdlIG5lZWQgbm90Ci0JCQkgKiBhc3Nlc3MgcHBlcW9wIG9yIGZmZXFv cCwgd2hpY2ggUklfSW5pdGlhbF9DaGVjaygpIGRvZXMgbm90IHVzZS4KLQkJCSAqLwotCQkJ b2xkX2NoZWNrX29rID0gKHBmZXFvcCA9PSBsZmlyc3Rfb2lkKG9sZF9wZmVxb3BfaXRlbSkp OwotCQkJb2xkX3BmZXFvcF9pdGVtID0gbG5leHQoZmtjb25zdHJhaW50LT5vbGRfY29ucGZl cW9wLAotCQkJCQkJCQkJb2xkX3BmZXFvcF9pdGVtKTsKLQkJfQotCQlpZiAob2xkX2NoZWNr X29rKQotCQl7Ci0JCQlPaWQJCQlvbGRfZmt0eXBlOwotCQkJT2lkCQkJbmV3X2ZrdHlwZTsK LQkJCUNvZXJjaW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOwotCQkJQ29lcmNpb25QYXRoVHlw ZSBuZXdfcGF0aHR5cGU7Ci0JCQlPaWQJCQlvbGRfY2FzdGZ1bmM7Ci0JCQlPaWQJCQluZXdf Y2FzdGZ1bmM7Ci0JCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0 YWItPm9sZERlc2MsCi0JCQkJCQkJCQkJCQkgICBma2F0dG51bVtpXSAtIDEpOwotCi0JCQkv KgotCQkJICogSWRlbnRpZnkgY29lcmNpb24gcGF0aHdheXMgZnJvbSBlYWNoIG9mIHRoZSBv bGQgYW5kIG5ldyBGSy1zaWRlCi0JCQkgKiBjb2x1bW4gdHlwZXMgdG8gdGhlIHJpZ2h0IChm b3JlaWduKSBvcGVyYW5kIHR5cGUgb2YgdGhlIHBmZXFvcC4KLQkJCSAqIFdlIG1heSBhc3N1 bWUgdGhhdCBwZ19jb25zdHJhaW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCi0JCQkgKi8K LQkJCW9sZF9ma3R5cGUgPSBhdHRyLT5hdHR0eXBpZDsKLQkJCW5ld19ma3R5cGUgPSBma3R5 cGU7Ci0JCQlvbGRfcGF0aHR5cGUgPSBmaW5kRmtleUNhc3QocGZlcW9wX3JpZ2h0LCBvbGRf Zmt0eXBlLAotCQkJCQkJCQkJCSZvbGRfY2FzdGZ1bmMpOwotCQkJbmV3X3BhdGh0eXBlID0g ZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgbmV3X2ZrdHlwZSwKLQkJCQkJCQkJCQkmbmV3 X2Nhc3RmdW5jKTsKLQotCQkJLyoKLQkJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3Qg ZnJvbSB0aGUgRksgY29sdW1uIHRvIGl0cyBwZmVxb3AKLQkJCSAqIG9wZXJhbmQsIHJldmFs aWRhdGUgdGhlIGNvbnN0cmFpbnQuICBGb3IgdGhpcyBldmFsdWF0aW9uLCBhCi0JCQkgKiBi aW5hcnkgY29lcmNpb24gY2FzdCBpcyBlcXVpdmFsZW50IHRvIG5vIGNhc3QgYXQgYWxsLiAg V2hpbGUKLQkJCSAqIHR5cGUgaW1wbGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQg Y2FzdHMgd2l0aCBhbiBleWUKLQkJCSAqIHRvd2FyZCBjb25zaXN0ZW5jeSBvZiBvcGVyYXRp b25zIGxpa2UgZXF1YWxpdHksIHdlIGNhbm5vdAotCQkJICogYXNzdW1lIGhlcmUgdGhhdCB0 aGV5IGhhdmUgZG9uZSBzby4KLQkJCSAqCi0JCQkgKiBBIGZ1bmN0aW9uIHdpdGggYSBwb2x5 bW9ycGhpYyBhcmd1bWVudCBjb3VsZCBjaGFuZ2UgYmVoYXZpb3IKLQkJCSAqIGFyYml0cmFy aWx5IGluIHJlc3BvbnNlIHRvIGdldF9mbl9leHByX2FyZ3R5cGUoKS4gIFRoZXJlZm9yZSwK LQkJCSAqIHdoZW4gdGhlIGNhc3QgZGVzdGluYXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9u bHkgYXZvaWQKLQkJCSAqIHJldmFsaWRhdGlvbiBpZiB0aGUgaW5wdXQgdHlwZSBoYXMgbm90 IGNoYW5nZWQgYXQgYWxsLiAgR2l2ZW4KLQkJCSAqIGp1c3QgdGhlIGNvcmUgZGF0YSB0eXBl cyBhbmQgb3BlcmF0b3IgY2xhc3NlcywgdGhpcyByZXF1aXJlbWVudAotCQkJICogcHJldmVu dHMgbm8gd291bGQtYmUgb3B0aW1pemF0aW9ucy4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgY2Fz dCBjb252ZXJ0cyBmcm9tIGEgYmFzZSB0eXBlIHRvIGEgZG9tYWluIHRoZXJlb24sIHRoZW4K LQkJCSAqIHRoYXQgZG9tYWluIHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRoZSB1 bmlxdWUgaW5kZXguCi0JCQkgKiBOZWNlc3NhcmlseSwgdGhlIHByaW1hcnkga2V5IGNvbHVt biBtdXN0IHRoZW4gYmUgb2YgdGhlIGRvbWFpbgotCQkJICogdHlwZS4gIFNpbmNlIHRoZSBj b25zdHJhaW50IHdhcyBwcmV2aW91c2x5IHZhbGlkLCBhbGwgdmFsdWVzIG9uCi0JCQkgKiB0 aGUgZm9yZWlnbiBzaWRlIG5lY2Vzc2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUg YW5kIGluCi0JCQkgKiB0dXJuIGNvbmZvcm0gdG8gdGhlIGRvbWFpbi4gIENvbnNlcXVlbnRs eSwgd2UgbmVlZCBub3QgdHJlYXQKLQkJCSAqIGRvbWFpbnMgc3BlY2lhbGx5IGhlcmUuCi0J CQkgKgotCQkJICogU2luY2Ugd2UgcmVxdWlyZSB0aGF0IGFsbCBjb2xsYXRpb25zIHNoYXJl IHRoZSBzYW1lIG5vdGlvbiBvZgotCQkJICogZXF1YWxpdHkgKHdoaWNoIHRoZXkgZG8sIGJl Y2F1c2UgdGV4dGVxIHJlZHVjZXMgdG8gYml0d2lzZQotCQkJICogZXF1YWxpdHkpLCB3ZSBk b24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJlLgotCQkJICoKLQkJCSAqIFdlIG5lZWQgbm90 IGRpcmVjdGx5IGNvbnNpZGVyIHRoZSBQSyB0eXBlLiAgSXQncyBuZWNlc3NhcmlseQotCQkJ ICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5k ZXggY29sdW1uLAotCQkJICogYW5kIHJpX3RyaWdnZXJzLmMgd2lsbCBvbmx5IGRlYWwgd2l0 aCBQSyBkYXR1bXMgaW4gdGVybXMgb2YKLQkJCSAqIHRoYXQgb3BjaW50eXBlLiAgQ2hhbmdp bmcgdGhlIG9wY2ludHlwZSBhbHNvIGNoYW5nZXMgcGZlcW9wLgotCQkJICovCi0JCQlvbGRf Y2hlY2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9wYXRodHlwZSAmJgotCQkJCQkJCW5l d19jYXN0ZnVuYyA9PSBvbGRfY2FzdGZ1bmMgJiYKLQkJCQkJCQkoIUlzUG9seW1vcnBoaWNU eXBlKHBmZXFvcF9yaWdodCkgfHwKLQkJCQkJCQkgbmV3X2ZrdHlwZSA9PSBvbGRfZmt0eXBl KSk7Ci0JCX0KKwkJRmluZEZLQ29tcGFyaXNvbk9wZXJhdG9ycygKKwkJCQlma2NvbnN0cmFp bnQsIHRhYiwgaSwgZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3Bf aXRlbSwKKwkJCQlwa3R5cG9pZFtpXSwgZmt0eXBvaWRbaV0sIG9wY2xhc3Nlc1tpXSwKKwkJ CQlpc190ZW1wb3JhbCwgZmFsc2UsCisJCQkJJnBmZXFvcGVyYXRvcnNbaV0sICZwcGVxb3Bl cmF0b3JzW2ldLCAmZmZlcW9wZXJhdG9yc1tpXSk7CisJfQorCWlmIChpc190ZW1wb3JhbCkg eworCQlwa2F0dG51bVtudW1wa3NdID0gcGtwZXJpb2RhdHRudW1zWzBdOworCQlwa3R5cG9p ZFtudW1wa3NdID0gcGtwZXJpb2R0eXBvaWRzWzBdOworCQlma2F0dG51bVtudW1wa3NdID0g ZmtwZXJpb2RhdHRudW1zWzBdOworCQlma3R5cG9pZFtudW1wa3NdID0gZmtwZXJpb2R0eXBv aWRzWzBdOwogCi0JCXBmZXFvcGVyYXRvcnNbaV0gPSBwZmVxb3A7Ci0JCXBwZXFvcGVyYXRv cnNbaV0gPSBwcGVxb3A7Ci0JCWZmZXFvcGVyYXRvcnNbaV0gPSBmZmVxb3A7CisJCUZpbmRG S0NvbXBhcmlzb25PcGVyYXRvcnMoCisJCQkJZmtjb25zdHJhaW50LCB0YWIsIG51bXBrcywg ZmthdHRudW0sCisJCQkJJm9sZF9jaGVja19vaywgJm9sZF9wZmVxb3BfaXRlbSwKKwkJCQlw a3BlcmlvZHR5cG9pZHNbMF0sIGZrcGVyaW9kdHlwb2lkc1swXSwgb3BjbGFzc2VzW251bXBr c10sCisJCQkJaXNfdGVtcG9yYWwsIHRydWUsCisJCQkJJnBmZXFvcGVyYXRvcnNbbnVtcGtz XSwgJnBwZXFvcGVyYXRvcnNbbnVtcGtzXSwgJmZmZXFvcGVyYXRvcnNbbnVtcGtzXSk7CisJ CW51bWZrcyArPSAxOworCQludW1wa3MgKz0gMTsKIAl9CiAKIAkvKgpAQCAtOTgxNyw3ICs5 Njg3LDggQEAgQVRBZGRGb3JlaWduS2V5Q29uc3RyYWludChMaXN0ICoqd3F1ZXVlLCBBbHRl cmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCSBudW1ma2RlbHNl dGNvbHMsCiAJCQkJCQkJCQkgZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkJIG9sZF9jaGVja19v aywKLQkJCQkJCQkJCSBJbnZhbGlkT2lkLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCSBJbnZh bGlkT2lkLCBJbnZhbGlkT2lkLAorCQkJCQkJCQkJIGlzX3RlbXBvcmFsKTsKIAogCS8qIE5v dyBoYW5kbGUgdGhlIHJlZmVyZW5jaW5nIHNpZGUuICovCiAJYWRkRmtSZWN1cnNlUmVmZXJl bmNpbmcod3F1ZXVlLCBma2NvbnN0cmFpbnQsIHJlbCwgcGtyZWwsCkBAIC05ODMzLDcgKzk3 MDQsOCBAQCBBVEFkZEZvcmVpZ25LZXlDb25zdHJhaW50KExpc3QgKip3cXVldWUsIEFsdGVy ZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJCQkJCWZrZGVsc2V0Y29scywK IAkJCQkJCQlvbGRfY2hlY2tfb2ssCiAJCQkJCQkJbG9ja21vZGUsCi0JCQkJCQkJSW52YWxp ZE9pZCwgSW52YWxpZE9pZCk7CisJCQkJCQkJSW52YWxpZE9pZCwgSW52YWxpZE9pZCwKKwkJ CQkJCQlpc190ZW1wb3JhbCk7CiAKIAkvKgogCSAqIERvbmUuICBDbG9zZSBwayB0YWJsZSwg YnV0IGtlZXAgbG9jayB1bnRpbCB3ZSd2ZSBjb21taXR0ZWQuCkBAIC05OTE4LDcgKzk3OTAs OCBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2VkKExpc3QgKip3cXVldWUsIENvbnN0cmFpbnQg KmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkgICBPaWQgKnBwZXFvcGVyYXRv cnMsIE9pZCAqZmZlcW9wZXJhdG9ycywKIAkJCQkJICAgaW50IG51bWZrZGVsc2V0Y29scywg aW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJICAgYm9vbCBvbGRfY2hlY2tfb2ssCi0JCQkJ CSAgIE9pZCBwYXJlbnREZWxUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJ ICAgT2lkIHBhcmVudERlbFRyaWdnZXIsIE9pZCBwYXJlbnRVcGRUcmlnZ2VyLAorCQkJCQkg ICBib29sIGlzX3RlbXBvcmFsKQogewogCU9iamVjdEFkZHJlc3MgYWRkcmVzczsKIAlPaWQJ CQljb25zdHJPaWQ7CkBAIC0xMDAwNCw3ICs5ODc3LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJl bmNlZChMaXN0ICoqd3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9u IHJlbCwKIAkJCQkJCQkJCSAgY29uaXNsb2NhbCwJLyogaXNsb2NhbCAqLwogCQkJCQkJCQkJ ICBjb25pbmhjb3VudCwJLyogaW5oY291bnQgKi8KIAkJCQkJCQkJCSAgY29ubm9pbmhlcml0 LCAvKiBjb25Ob0luaGVyaXQgKi8KLQkJCQkJCQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFs ICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFsLAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJ CQkJICBmYWxzZSk7CS8qIGlzX2ludGVybmFsICovCiAKIAlPYmplY3RBZGRyZXNzU2V0KGFk ZHJlc3MsIENvbnN0cmFpbnRSZWxhdGlvbklkLCBjb25zdHJPaWQpOwpAQCAtMTAwODAsNyAr OTk1Myw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jZWQoTGlzdCAqKndxdWV1ZSwgQ29uc3Ry YWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJCSAgIHBmZXFvcGVy YXRvcnMsIHBwZXFvcGVyYXRvcnMsIGZmZXFvcGVyYXRvcnMsCiAJCQkJCQkJCSAgIG51bWZr ZGVsc2V0Y29scywgZmtkZWxzZXRjb2xzLAogCQkJCQkJCQkgICBvbGRfY2hlY2tfb2ssCi0J CQkJCQkJCSAgIGRlbGV0ZVRyaWdnZXJPaWQsIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJCQkJ CQkgICBkZWxldGVUcmlnZ2VyT2lkLCB1cGRhdGVUcmlnZ2VyT2lkLAorCQkJCQkJCQkgICBp c190ZW1wb3JhbCk7CiAKIAkJCS8qIERvbmUgLS0gY2xlYW4gdXAgKGJ1dCBrZWVwIHRoZSBs b2NrKSAqLwogCQkJdGFibGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKQEAgLTEwMTM4LDcg KzEwMDEyLDggQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAqKndxdWV1ZSwgQ29u c3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJCQlPaWQgKnBmZXFv cGVyYXRvcnMsIE9pZCAqcHBlcW9wZXJhdG9ycywgT2lkICpmZmVxb3BlcmF0b3JzLAogCQkJ CQkJaW50IG51bWZrZGVsc2V0Y29scywgaW50MTYgKmZrZGVsc2V0Y29scywKIAkJCQkJCWJv b2wgb2xkX2NoZWNrX29rLCBMT0NLTU9ERSBsb2NrbW9kZSwKLQkJCQkJCU9pZCBwYXJlbnRJ bnNUcmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlcikKKwkJCQkJCU9pZCBwYXJlbnRJbnNU cmlnZ2VyLCBPaWQgcGFyZW50VXBkVHJpZ2dlciwKKwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwp CiB7CiAJT2lkCQkJaW5zZXJ0VHJpZ2dlck9pZCwKIAkJCQl1cGRhdGVUcmlnZ2VyT2lkOwpA QCAtMTAxODYsNiArMTAwNjEsNyBAQCBhZGRGa1JlY3Vyc2VSZWZlcmVuY2luZyhMaXN0ICoq d3F1ZXVlLCBDb25zdHJhaW50ICpma2NvbnN0cmFpbnQsIFJlbGF0aW9uIHJlbCwKIAkJCW5l d2Nvbi0+cmVmcmVsaWQgPSBSZWxhdGlvbkdldFJlbGlkKHBrcmVsKTsKIAkJCW5ld2Nvbi0+ cmVmaW5kaWQgPSBpbmRleE9pZDsKIAkJCW5ld2Nvbi0+Y29uaWQgPSBwYXJlbnRDb25zdHI7 CisJCQluZXdjb24tPmNvbnRlbXBvcmFsID0gZmtjb25zdHJhaW50LT5ma19wZXJpb2QgIT0g TlVMTDsKIAkJCW5ld2Nvbi0+cXVhbCA9IChOb2RlICopIGZrY29uc3RyYWludDsKIAogCQkJ dGFiLT5jb25zdHJhaW50cyA9IGxhcHBlbmQodGFiLT5jb25zdHJhaW50cywgbmV3Y29uKTsK QEAgLTEwMzAzLDcgKzEwMTc5LDcgQEAgYWRkRmtSZWN1cnNlUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgQ29uc3RyYWludCAqZmtjb25zdHJhaW50LCBSZWxhdGlvbiByZWwsCiAJCQkJ CQkJCQkgIGZhbHNlLAogCQkJCQkJCQkJICAxLAogCQkJCQkJCQkJICBmYWxzZSwKLQkJCQkJ CQkJCSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCQkgIGlzX3RlbXBvcmFs LAkvKiBjb25UZW1wb3JhbCAqLwogCQkJCQkJCQkJICBmYWxzZSk7CiAKIAkJCS8qCkBAIC0x MDMzNCw3ICsxMDIxMCw4IEBAIGFkZEZrUmVjdXJzZVJlZmVyZW5jaW5nKExpc3QgKip3cXVl dWUsIENvbnN0cmFpbnQgKmZrY29uc3RyYWludCwgUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJ b2xkX2NoZWNrX29rLAogCQkJCQkJCQkJbG9ja21vZGUsCiAJCQkJCQkJCQlpbnNlcnRUcmln Z2VyT2lkLAotCQkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCk7CisJCQkJCQkJCQl1cGRhdGVU cmlnZ2VyT2lkLAorCQkJCQkJCQkJaXNfdGVtcG9yYWwpOwogCiAJCQl0YWJsZV9jbG9zZShw YXJ0aXRpb24sIE5vTG9jayk7CiAJCX0KQEAgLTEwNTcwLDcgKzEwNDQ3LDggQEAgQ2xvbmVG a1JlZmVyZW5jZWQoUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0aXRpb25SZWwp CiAJCQkJCQkJICAgY29uZmRlbHNldGNvbHMsCiAJCQkJCQkJICAgdHJ1ZSwKIAkJCQkJCQkg ICBkZWxldGVUcmlnZ2VyT2lkLAotCQkJCQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQpOworCQkJ CQkJCSAgIHVwZGF0ZVRyaWdnZXJPaWQsCisJCQkJCQkJICAgY29uc3RyRm9ybS0+Y29udGVt cG9yYWwpOwogCiAJCXRhYmxlX2Nsb3NlKGZrUmVsLCBOb0xvY2spOwogCQlSZWxlYXNlU3lz Q2FjaGUodHVwbGUpOwpAQCAtMTA4MDksNyArMTA2ODcsNyBAQCBDbG9uZUZrUmVmZXJlbmNp bmcoTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVs KQogCQkJCQkJCQkgIGZhbHNlLAkvKiBpc2xvY2FsICovCiAJCQkJCQkJCSAgMSwJLyogaW5o Y291bnQgKi8KIAkJCQkJCQkJICBmYWxzZSwJLyogY29uTm9Jbmhlcml0ICovCi0JCQkJCQkJ CSAgZmFsc2UsCS8qIGNvblRlbXBvcmFsICovCisJCQkJCQkJCSAgY29uc3RyRm9ybS0+Y29u dGVtcG9yYWwsCS8qIGNvblRlbXBvcmFsICovCiAJCQkJCQkJCSAgdHJ1ZSk7CiAKIAkJLyog U2V0IHVwIHBhcnRpdGlvbiBkZXBlbmRlbmNpZXMgZm9yIHRoZSBuZXcgY29uc3RyYWludCAq LwpAQCAtMTA4NDMsMTMgKzEwNzIxLDIzMiBAQCBDbG9uZUZrUmVmZXJlbmNpbmcoTGlzdCAq KndxdWV1ZSwgUmVsYXRpb24gcGFyZW50UmVsLCBSZWxhdGlvbiBwYXJ0UmVsKQogCQkJCQkJ CQlmYWxzZSwJLyogbm8gb2xkIGNoZWNrIGV4aXN0cyAqLwogCQkJCQkJCQlBY2Nlc3NFeGNs dXNpdmVMb2NrLAogCQkJCQkJCQlpbnNlcnRUcmlnZ2VyT2lkLAotCQkJCQkJCQl1cGRhdGVU cmlnZ2VyT2lkKTsKKwkJCQkJCQkJdXBkYXRlVHJpZ2dlck9pZCwKKwkJCQkJCQkJY29uc3Ry Rm9ybS0+Y29udGVtcG9yYWwpOwogCQl0YWJsZV9jbG9zZShwa3JlbCwgTm9Mb2NrKTsKIAl9 CiAKIAl0YWJsZV9jbG9zZSh0cmlncmVsLCBSb3dFeGNsdXNpdmVMb2NrKTsKIH0KIAorc3Rh dGljIHZvaWQKK0ZpbmRGS0NvbXBhcmlzb25PcGVyYXRvcnMoQ29uc3RyYWludCAqZmtjb25z dHJhaW50LAorCQlBbHRlcmVkVGFibGVJbmZvICp0YWIsCisJCWludCBpLAorCQlpbnQxNiAq ZmthdHRudW0sCisJCWJvb2wgKm9sZF9jaGVja19vaywKKwkJTGlzdENlbGwgKipvbGRfcGZl cW9wX2l0ZW0sCisJCU9pZCBwa3R5cGUsIE9pZCBma3R5cGUsIE9pZCBvcGNsYXNzLAorCQli b29sIGlzX3RlbXBvcmFsLCBib29sIGZvcl9vdmVybGFwcywKKwkJT2lkICpwZmVxb3BPdXQs IE9pZCAqcHBlcW9wT3V0LCBPaWQgKmZmZXFvcE91dCkKK3sKKwlPaWQJCQlma3R5cGVkOwor CUhlYXBUdXBsZQljbGFfaHQ7CisJRm9ybV9wZ19vcGNsYXNzIGNsYV90dXA7CisJT2lkCQkJ YW1pZDsKKwlPaWQJCQlvcGZhbWlseTsKKwlPaWQJCQlvcGNpbnR5cGU7CisJT2lkCQkJcGZl cW9wOworCU9pZAkJCXBwZXFvcDsKKwlPaWQJCQlmZmVxb3A7CisJaW50MTYJCWVxc3RyYXRl Z3k7CisJT2lkCQkJcGZlcW9wX3JpZ2h0OworCisJLyogV2UgbmVlZCBzZXZlcmFsIGZpZWxk cyBvdXQgb2YgdGhlIHBnX29wY2xhc3MgZW50cnkgKi8KKwljbGFfaHQgPSBTZWFyY2hTeXND YWNoZTEoQ0xBT0lELCBPYmplY3RJZEdldERhdHVtKG9wY2xhc3MpKTsKKwlpZiAoIUhlYXBU dXBsZUlzVmFsaWQoY2xhX2h0KSkKKwkJZWxvZyhFUlJPUiwgImNhY2hlIGxvb2t1cCBmYWls ZWQgZm9yIG9wY2xhc3MgJXUiLCBvcGNsYXNzKTsKKwljbGFfdHVwID0gKEZvcm1fcGdfb3Bj bGFzcykgR0VUU1RSVUNUKGNsYV9odCk7CisJYW1pZCA9IGNsYV90dXAtPm9wY21ldGhvZDsK KwlvcGZhbWlseSA9IGNsYV90dXAtPm9wY2ZhbWlseTsKKwlvcGNpbnR5cGUgPSBjbGFfdHVw LT5vcGNpbnR5cGU7CisJUmVsZWFzZVN5c0NhY2hlKGNsYV9odCk7CisKKwlpZiAoaXNfdGVt cG9yYWwpCisJeworCQlpZiAoYW1pZCAhPSBHSVNUX0FNX09JRCkKKwkJCWVsb2coRVJST1Is ICJvbmx5IEdpU1QgaW5kZXhlcyBhcmUgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWdu IGtleXMiKTsKKwkJZXFzdHJhdGVneSA9IGZvcl9vdmVybGFwcyA/IFJUT3ZlcmxhcFN0cmF0 ZWd5TnVtYmVyIDogUlRFcXVhbFN0cmF0ZWd5TnVtYmVyOworCX0KKwllbHNlCisJeworCQkv KgorCQkgKiBDaGVjayBpdCdzIGEgYnRyZWU7IGN1cnJlbnRseSB0aGlzIGNhbiBuZXZlciBm YWlsIHNpbmNlIG5vIG90aGVyCisJCSAqIGluZGV4IEFNcyBzdXBwb3J0IHVuaXF1ZSBpbmRl eGVzLiAgSWYgd2UgZXZlciBkaWQgaGF2ZSBvdGhlciB0eXBlcworCQkgKiBvZiB1bmlxdWUg aW5kZXhlcywgd2UnZCBuZWVkIGEgd2F5IHRvIGRldGVybWluZSB3aGljaCBvcGVyYXRvcgor CQkgKiBzdHJhdGVneSBudW1iZXIgaXMgZXF1YWxpdHkuICAoSXMgaXQgcmVhc29uYWJsZSB0 byBpbnNpc3QgdGhhdAorCQkgKiBldmVyeSBzdWNoIGluZGV4IEFNIHVzZSBidHJlZSdzIG51 bWJlciBmb3IgZXF1YWxpdHk/KQorCQkgKi8KKwkJaWYgKGFtaWQgIT0gQlRSRUVfQU1fT0lE KQorCQkJZWxvZyhFUlJPUiwgIm9ubHkgYi10cmVlIGluZGV4ZXMgYXJlIHN1cHBvcnRlZCBm b3IgZm9yZWlnbiBrZXlzIik7CisJCWVxc3RyYXRlZ3kgPSBCVEVxdWFsU3RyYXRlZ3lOdW1i ZXI7CisJfQorCisJLyoKKwkgKiBUaGVyZSBoYWQgYmV0dGVyIGJlIGEgcHJpbWFyeSBlcXVh bGl0eSBvcGVyYXRvciBmb3IgdGhlIGluZGV4LgorCSAqIFdlJ2xsIHVzZSBpdCBmb3IgUEsg PSBQSyBjb21wYXJpc29ucy4KKwkgKi8KKwlwcGVxb3AgPSBnZXRfb3BmYW1pbHlfbWVtYmVy KG9wZmFtaWx5LCBvcGNpbnR5cGUsIG9wY2ludHlwZSwKKwkJCQkJCQkJIGVxc3RyYXRlZ3kp OworCisJaWYgKCFPaWRJc1ZhbGlkKHBwZXFvcCkpCisJCWVsb2coRVJST1IsICJtaXNzaW5n IG9wZXJhdG9yICVkKCV1LCV1KSBpbiBvcGZhbWlseSAldSIsCisJCQkgZXFzdHJhdGVneSwg b3BjaW50eXBlLCBvcGNpbnR5cGUsIG9wZmFtaWx5KTsKKworCS8qCisJICogQXJlIHRoZXJl IGVxdWFsaXR5IG9wZXJhdG9ycyB0aGF0IHRha2UgZXhhY3RseSB0aGUgRksgdHlwZT8gQXNz dW1lCisJICogd2Ugc2hvdWxkIGxvb2sgdGhyb3VnaCBhbnkgZG9tYWluIGhlcmUuCisJICov CisJZmt0eXBlZCA9IGdldEJhc2VUeXBlKGZrdHlwZSk7CisKKwlwZmVxb3AgPSBnZXRfb3Bm YW1pbHlfbWVtYmVyKG9wZmFtaWx5LCBvcGNpbnR5cGUsIGZrdHlwZWQsCisJCQkJCQkJCSBl cXN0cmF0ZWd5KTsKKwlpZiAoT2lkSXNWYWxpZChwZmVxb3ApKQorCXsKKwkJcGZlcW9wX3Jp Z2h0ID0gZmt0eXBlZDsKKwkJZmZlcW9wID0gZ2V0X29wZmFtaWx5X21lbWJlcihvcGZhbWls eSwgZmt0eXBlZCwgZmt0eXBlZCwKKwkJCQkJCQkJCSBlcXN0cmF0ZWd5KTsKKwl9CisJZWxz ZQorCXsKKwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQlwZmVxb3BfcmlnaHQgPSBJ bnZhbGlkT2lkOworCQlmZmVxb3AgPSBJbnZhbGlkT2lkOworCX0KKworCWlmICghKE9pZElz VmFsaWQocGZlcW9wKSAmJiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQorCXsKKwkJLyoKKwkJICog T3RoZXJ3aXNlLCBsb29rIGZvciBhbiBpbXBsaWNpdCBjYXN0IGZyb20gdGhlIEZLIHR5cGUg dG8gdGhlCisJCSAqIG9wY2ludHlwZSwgYW5kIGlmIGZvdW5kLCB1c2UgdGhlIHByaW1hcnkg ZXF1YWxpdHkgb3BlcmF0b3IuCisJCSAqIFRoaXMgaXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ug b3BjaW50eXBlIG1pZ2h0IGJlIGEgcG9seW1vcnBoaWMKKwkJICogdHlwZSBzdWNoIGFzIEFO WUFSUkFZIG9yIEFOWUVOVU07IHNvIHdoYXQgd2UgaGF2ZSB0byB0ZXN0IGlzCisJCSAqIHdo ZXRoZXIgdGhlIHR3byBhY3R1YWwgY29sdW1uIHR5cGVzIGNhbiBiZSBjb25jdXJyZW50bHkg Y2FzdCB0bworCQkgKiB0aGF0IHR5cGUuICAoT3RoZXJ3aXNlLCB3ZSdkIGZhaWwgdG8gcmVq ZWN0IGNvbWJpbmF0aW9ucyBzdWNoCisJCSAqIGFzIGludFtdIGFuZCBwb2ludFtdLikKKwkJ ICovCisJCU9pZAkJCWlucHV0X3R5cGVpZHNbMl07CisJCU9pZAkJCXRhcmdldF90eXBlaWRz WzJdOworCisJCWlucHV0X3R5cGVpZHNbMF0gPSBwa3R5cGU7CisJCWlucHV0X3R5cGVpZHNb MV0gPSBma3R5cGU7CisJCXRhcmdldF90eXBlaWRzWzBdID0gb3BjaW50eXBlOworCQl0YXJn ZXRfdHlwZWlkc1sxXSA9IG9wY2ludHlwZTsKKwkJaWYgKGNhbl9jb2VyY2VfdHlwZSgyLCBp bnB1dF90eXBlaWRzLCB0YXJnZXRfdHlwZWlkcywKKwkJCQkJCQlDT0VSQ0lPTl9JTVBMSUNJ VCkpCisJCXsKKwkJCXBmZXFvcCA9IGZmZXFvcCA9IHBwZXFvcDsKKwkJCXBmZXFvcF9yaWdo dCA9IG9wY2ludHlwZTsKKwkJfQorCX0KKworCWlmICghKE9pZElzVmFsaWQocGZlcW9wKSAm JiBPaWRJc1ZhbGlkKGZmZXFvcCkpKQorCXsKKwkJY2hhciAqZmthdHRyX25hbWU7CisJCWNo YXIgKnBrYXR0cl9uYW1lOworCisJCWlmIChmb3Jfb3ZlcmxhcHMpCisJCXsKKwkJCWZrYXR0 cl9uYW1lID0gc3RyVmFsKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kKTsKKwkJCXBrYXR0cl9u YW1lID0gc3RyVmFsKGZrY29uc3RyYWludC0+cGtfcGVyaW9kKTsKKwkJfQorCQllbHNlCisJ CXsKKwkJCWZrYXR0cl9uYW1lID0gc3RyVmFsKGxpc3RfbnRoKGZrY29uc3RyYWludC0+Zmtf YXR0cnMsIGkpKTsKKwkJCXBrYXR0cl9uYW1lID0gc3RyVmFsKGxpc3RfbnRoKGZrY29uc3Ry YWludC0+cGtfYXR0cnMsIGkpKTsKKwkJfQorCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJIGVycm1zZygiZm9yZWln biBrZXkgY29uc3RyYWludCBcIiVzXCIgY2Fubm90IGJlIGltcGxlbWVudGVkIiwKKwkJCQkJ CWZrY29uc3RyYWludC0+Y29ubmFtZSksCisJCQkJIGVycmRldGFpbCgiS2V5IGNvbHVtbnMg XCIlc1wiIGFuZCBcIiVzXCIgIgorCQkJCQkJICAgImFyZSBvZiBpbmNvbXBhdGlibGUgdHlw ZXM6ICVzIGFuZCAlcy4iLAorCQkJCQkJICAgZmthdHRyX25hbWUsCisJCQkJCQkgICBwa2F0 dHJfbmFtZSwKKwkJCQkJCSAgIGZvcm1hdF90eXBlX2JlKGZrdHlwZSksCisJCQkJCQkgICBm b3JtYXRfdHlwZV9iZShwa3R5cGUpKSkpOworCX0KKworCWlmICgqb2xkX2NoZWNrX29rKQor CXsKKwkJLyoKKwkJICogV2hlbiBhIHBmZXFvcCBjaGFuZ2VzLCByZXZhbGlkYXRlIHRoZSBj b25zdHJhaW50LiAgV2UgY291bGQKKwkJICogcGVybWl0IGludHJhLW9wZmFtaWx5IGNoYW5n ZXMsIGJ1dCB0aGF0IGFkZHMgc3VidGxlIGNvbXBsZXhpdHkKKwkJICogd2l0aG91dCBhbnkg Y29uY3JldGUgYmVuZWZpdCBmb3IgY29yZSB0eXBlcy4gIFdlIG5lZWQgbm90CisJCSAqIGFz c2VzcyBwcGVxb3Agb3IgZmZlcW9wLCB3aGljaCBSSV9Jbml0aWFsX0NoZWNrKCkgZG9lcyBu b3QgdXNlLgorCQkgKi8KKwkJKm9sZF9jaGVja19vayA9IChwZmVxb3AgPT0gbGZpcnN0X29p ZCgqb2xkX3BmZXFvcF9pdGVtKSk7CisJCSpvbGRfcGZlcW9wX2l0ZW0gPSBsbmV4dChma2Nv bnN0cmFpbnQtPm9sZF9jb25wZmVxb3AsCisJCQkJCQkJCSpvbGRfcGZlcW9wX2l0ZW0pOwor CX0KKwlpZiAoKm9sZF9jaGVja19vaykKKwl7CisJCU9pZAkJCW9sZF9ma3R5cGU7CisJCU9p ZAkJCW5ld19ma3R5cGU7CisJCUNvZXJjaW9uUGF0aFR5cGUgb2xkX3BhdGh0eXBlOworCQlD b2VyY2lvblBhdGhUeXBlIG5ld19wYXRodHlwZTsKKwkJT2lkCQkJb2xkX2Nhc3RmdW5jOwor CQlPaWQJCQluZXdfY2FzdGZ1bmM7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dHIgPSBUdXBs ZURlc2NBdHRyKHRhYi0+b2xkRGVzYywKKwkJCQkJCQkJCQkJICAgZmthdHRudW1baV0gLSAx KTsKKworCQkvKgorCQkgKiBJZGVudGlmeSBjb2VyY2lvbiBwYXRod2F5cyBmcm9tIGVhY2gg b2YgdGhlIG9sZCBhbmQgbmV3IEZLLXNpZGUKKwkJICogY29sdW1uIHR5cGVzIHRvIHRoZSBy aWdodCAoZm9yZWlnbikgb3BlcmFuZCB0eXBlIG9mIHRoZSBwZmVxb3AuCisJCSAqIFdlIG1h eSBhc3N1bWUgdGhhdCBwZ19jb25zdHJhaW50LmNvbmtleSBpcyBub3QgY2hhbmdpbmcuCisJ CSAqLworCQlvbGRfZmt0eXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJCW5ld19ma3R5cGUgPSBm a3R5cGU7CisJCW9sZF9wYXRodHlwZSA9IGZpbmRGa2V5Q2FzdChwZmVxb3BfcmlnaHQsIG9s ZF9ma3R5cGUsCisJCQkJCQkJCQkmb2xkX2Nhc3RmdW5jKTsKKwkJbmV3X3BhdGh0eXBlID0g ZmluZEZrZXlDYXN0KHBmZXFvcF9yaWdodCwgbmV3X2ZrdHlwZSwKKwkJCQkJCQkJCSZuZXdf Y2FzdGZ1bmMpOworCisJCS8qCisJCSAqIFVwb24gYSBjaGFuZ2UgdG8gdGhlIGNhc3QgZnJv bSB0aGUgRksgY29sdW1uIHRvIGl0cyBwZmVxb3AKKwkJICogb3BlcmFuZCwgcmV2YWxpZGF0 ZSB0aGUgY29uc3RyYWludC4gIEZvciB0aGlzIGV2YWx1YXRpb24sIGEKKwkJICogYmluYXJ5 IGNvZXJjaW9uIGNhc3QgaXMgZXF1aXZhbGVudCB0byBubyBjYXN0IGF0IGFsbC4gIFdoaWxl CisJCSAqIHR5cGUgaW1wbGVtZW50b3JzIHNob3VsZCBkZXNpZ24gaW1wbGljaXQgY2FzdHMg d2l0aCBhbiBleWUKKwkJICogdG93YXJkIGNvbnNpc3RlbmN5IG9mIG9wZXJhdGlvbnMgbGlr ZSBlcXVhbGl0eSwgd2UgY2Fubm90CisJCSAqIGFzc3VtZSBoZXJlIHRoYXQgdGhleSBoYXZl IGRvbmUgc28uCisJCSAqCisJCSAqIEEgZnVuY3Rpb24gd2l0aCBhIHBvbHltb3JwaGljIGFy Z3VtZW50IGNvdWxkIGNoYW5nZSBiZWhhdmlvcgorCQkgKiBhcmJpdHJhcmlseSBpbiByZXNw b25zZSB0byBnZXRfZm5fZXhwcl9hcmd0eXBlKCkuICBUaGVyZWZvcmUsCisJCSAqIHdoZW4g dGhlIGNhc3QgZGVzdGluYXRpb24gaXMgcG9seW1vcnBoaWMsIHdlIG9ubHkgYXZvaWQKKwkJ ICogcmV2YWxpZGF0aW9uIGlmIHRoZSBpbnB1dCB0eXBlIGhhcyBub3QgY2hhbmdlZCBhdCBh bGwuICBHaXZlbgorCQkgKiBqdXN0IHRoZSBjb3JlIGRhdGEgdHlwZXMgYW5kIG9wZXJhdG9y IGNsYXNzZXMsIHRoaXMgcmVxdWlyZW1lbnQKKwkJICogcHJldmVudHMgbm8gd291bGQtYmUg b3B0aW1pemF0aW9ucy4KKwkJICoKKwkJICogSWYgdGhlIGNhc3QgY29udmVydHMgZnJvbSBh IGJhc2UgdHlwZSB0byBhIGRvbWFpbiB0aGVyZW9uLCB0aGVuCisJCSAqIHRoYXQgZG9tYWlu IHR5cGUgbXVzdCBiZSB0aGUgb3BjaW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXguCisJCSAq IE5lY2Vzc2FyaWx5LCB0aGUgcHJpbWFyeSBrZXkgY29sdW1uIG11c3QgdGhlbiBiZSBvZiB0 aGUgZG9tYWluCisJCSAqIHR5cGUuICBTaW5jZSB0aGUgY29uc3RyYWludCB3YXMgcHJldmlv dXNseSB2YWxpZCwgYWxsIHZhbHVlcyBvbgorCQkgKiB0aGUgZm9yZWlnbiBzaWRlIG5lY2Vz c2FyaWx5IGV4aXN0IG9uIHRoZSBwcmltYXJ5IHNpZGUgYW5kIGluCisJCSAqIHR1cm4gY29u Zm9ybSB0byB0aGUgZG9tYWluLiAgQ29uc2VxdWVudGx5LCB3ZSBuZWVkIG5vdCB0cmVhdAor CQkgKiBkb21haW5zIHNwZWNpYWxseSBoZXJlLgorCQkgKgorCQkgKiBTaW5jZSB3ZSByZXF1 aXJlIHRoYXQgYWxsIGNvbGxhdGlvbnMgc2hhcmUgdGhlIHNhbWUgbm90aW9uIG9mCisJCSAq IGVxdWFsaXR5ICh3aGljaCB0aGV5IGRvLCBiZWNhdXNlIHRleHRlcSByZWR1Y2VzIHRvIGJp dHdpc2UKKwkJICogZXF1YWxpdHkpLCB3ZSBkb24ndCBjb21wYXJlIGNvbGxhdGlvbiBoZXJl LgorCQkgKgorCQkgKiBXZSBuZWVkIG5vdCBkaXJlY3RseSBjb25zaWRlciB0aGUgUEsgdHlw ZS4gIEl0J3MgbmVjZXNzYXJpbHkKKwkJICogYmluYXJ5IGNvZXJjaWJsZSB0byB0aGUgb3Bj aW50eXBlIG9mIHRoZSB1bmlxdWUgaW5kZXggY29sdW1uLAorCQkgKiBhbmQgcmlfdHJpZ2dl cnMuYyB3aWxsIG9ubHkgZGVhbCB3aXRoIFBLIGRhdHVtcyBpbiB0ZXJtcyBvZgorCQkgKiB0 aGF0IG9wY2ludHlwZS4gIENoYW5naW5nIHRoZSBvcGNpbnR5cGUgYWxzbyBjaGFuZ2VzIHBm ZXFvcC4KKwkJICovCisJCSpvbGRfY2hlY2tfb2sgPSAobmV3X3BhdGh0eXBlID09IG9sZF9w YXRodHlwZSAmJgorCQkJCQkJbmV3X2Nhc3RmdW5jID09IG9sZF9jYXN0ZnVuYyAmJgorCQkJ CQkJKCFJc1BvbHltb3JwaGljVHlwZShwZmVxb3BfcmlnaHQpIHx8CisJCQkJCQkgbmV3X2Zr dHlwZSA9PSBvbGRfZmt0eXBlKSk7CisKKwl9CisKKwkqcGZlcW9wT3V0ID0gcGZlcW9wOwor CSpwcGVxb3BPdXQgPSBwcGVxb3A7CisJKmZmZXFvcE91dCA9IGZmZXFvcDsKK30KKwogLyoK ICAqIFdoZW4gdGhlIHBhcmVudCBvZiBhIHBhcnRpdGlvbiByZWNlaXZlcyBbdGhlIHJlZmVy ZW5jaW5nIHNpZGUgb2ZdIGEgZm9yZWlnbgogICoga2V5LCB3ZSBtdXN0IHByb3BhZ2F0ZSB0 aGF0IGZvcmVpZ24ga2V5IHRvIHRoZSBwYXJ0aXRpb24uICBIb3dldmVyLCB0aGUKQEAgLTEx NTk1LDcgKzExNjkyLDYgQEAgQVRFeGVjVmFsaWRhdGVDb25zdHJhaW50KExpc3QgKip3cXVl dWUsIFJlbGF0aW9uIHJlbCwgY2hhciAqY29uc3RyTmFtZSwKIAlyZXR1cm4gYWRkcmVzczsK IH0KIAotCiAvKgogICogdHJhbnNmb3JtQ29sdW1uTmFtZUxpc3QgLSB0cmFuc2Zvcm0gbGlz dCBvZiBjb2x1bW4gbmFtZXMKICAqCkBAIC0xMTY2Myw3ICsxMTc1OSw5IEBAIHRyYW5zZm9y bUNvbHVtbk5hbWVMaXN0KE9pZCByZWxJZCwgTGlzdCAqY29sTGlzdCwKIHN0YXRpYyBpbnQK IHRyYW5zZm9ybUZrZXlHZXRQcmltYXJ5S2V5KFJlbGF0aW9uIHBrcmVsLCBPaWQgKmluZGV4 T2lkLAogCQkJCQkJICAgTGlzdCAqKmF0dG5hbWVsaXN0LAorCQkJCQkJICAgTm9kZSAqKnBr X3BlcmlvZCwKIAkJCQkJCSAgIGludDE2ICphdHRudW1zLCBPaWQgKmF0dHR5cGlkcywKKwkJ CQkJCSAgIGludDE2ICpwZXJpb2RhdHRudW1zLCBPaWQgKnBlcmlvZGF0dHR5cGlkcywKIAkJ CQkJCSAgIE9pZCAqb3BjbGFzc2VzKQogewogCUxpc3QJICAgKmluZGV4b2lkbGlzdDsKQEAg LTExNzI4LDM2ICsxMTgyNiw1NSBAQCB0cmFuc2Zvcm1Ga2V5R2V0UHJpbWFyeUtleShSZWxh dGlvbiBwa3JlbCwgT2lkICppbmRleE9pZCwKIAogCS8qCiAJICogTm93IGJ1aWxkIHRoZSBs aXN0IG9mIFBLIGF0dHJpYnV0ZXMgZnJvbSB0aGUgaW5ka2V5IGRlZmluaXRpb24gKHdlCi0J ICogYXNzdW1lIGEgcHJpbWFyeSBrZXkgY2Fubm90IGhhdmUgZXhwcmVzc2lvbmFsIGVsZW1l bnRzKQorCSAqIGFzc3VtZSBhIHByaW1hcnkga2V5IGNhbm5vdCBoYXZlIGV4cHJlc3Npb25h bCBlbGVtZW50cywgdW5sZXNzIGl0CisJICogaGFzIGEgUEVSSU9EKQogCSAqLwogCSphdHRu YW1lbGlzdCA9IE5JTDsKIAlmb3IgKGkgPSAwOyBpIDwgaW5kZXhTdHJ1Y3QtPmluZG5rZXlh dHRzOyBpKyspCiAJewogCQlpbnQJCQlwa2F0dG5vID0gaW5kZXhTdHJ1Y3QtPmluZGtleS52 YWx1ZXNbaV07CiAKLQkJYXR0bnVtc1tpXSA9IHBrYXR0bm87Ci0JCWF0dHR5cGlkc1tpXSA9 IGF0dG51bVR5cGVJZChwa3JlbCwgcGthdHRubyk7Ci0JCW9wY2xhc3Nlc1tpXSA9IGluZGNs YXNzLT52YWx1ZXNbaV07Ci0JCSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0 LAotCQkJCQkJCSAgIG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1l KHBrcmVsLCBwa2F0dG5vKSkpKSk7CisJCWlmIChpID09IGluZGV4U3RydWN0LT5pbmRua2V5 YXR0cyAtIDEgJiYgaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKQorCQl7CisJCQkvKiB3 ZSBoYXZlIGEgcmFuZ2UgKi8KKwkJCS8qIFRoZSBjYWxsZXIgd2lsbCBzZXQgYXR0bnVtc1tp XSAqLworCQkJcGVyaW9kYXR0bnVtc1swXSA9IHBrYXR0bm87CisJCQlwZXJpb2RhdHR0eXBp ZHNbMF0gPSBhdHRudW1UeXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ld ID0gaW5kY2xhc3MtPnZhbHVlc1tpXTsKKworCQkJQXNzZXJ0KCpwa19wZXJpb2QgPT0gTlVM TCk7CisJCQkqcGtfcGVyaW9kID0gKE5vZGUgKikgbWFrZVN0cmluZyhwc3RyZHVwKE5hbWVT dHIoKmF0dG51bUF0dE5hbWUocGtyZWwsIHBrYXR0bm8pKSkpOworCQl9CisJCWVsc2UKKwkJ eworCQkJYXR0bnVtc1tpXSA9IHBrYXR0bm87CisJCQlhdHR0eXBpZHNbaV0gPSBhdHRudW1U eXBlSWQocGtyZWwsIHBrYXR0bm8pOworCQkJb3BjbGFzc2VzW2ldID0gaW5kY2xhc3MtPnZh bHVlc1tpXTsKKwkJCSphdHRuYW1lbGlzdCA9IGxhcHBlbmQoKmF0dG5hbWVsaXN0LAorCQkJ CQkJCQkgIG1ha2VTdHJpbmcocHN0cmR1cChOYW1lU3RyKCphdHRudW1BdHROYW1lKHBrcmVs LCBwa2F0dG5vKSkpKSk7CisJCX0KIAl9CiAKIAlSZWxlYXNlU3lzQ2FjaGUoaW5kZXhUdXBs ZSk7CiAKLQlyZXR1cm4gaTsKKwlpZiAoaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKSBy ZXR1cm4gaSAtIDE7CisJZWxzZSByZXR1cm4gaTsKIH0KIAogLyoKICAqIHRyYW5zZm9ybUZr ZXlDaGVja0F0dHJzIC0KICAqCiAgKglNYWtlIHN1cmUgdGhhdCB0aGUgYXR0cmlidXRlcyBv ZiBhIHJlZmVyZW5jZWQgdGFibGUgYmVsb25nIHRvIGEgdW5pcXVlCi0gKgkob3IgcHJpbWFy eSBrZXkpIGNvbnN0cmFpbnQuICBSZXR1cm4gdGhlIE9JRCBvZiB0aGUgaW5kZXggc3VwcG9y dGluZwotICoJdGhlIGNvbnN0cmFpbnQsIGFzIHdlbGwgYXMgdGhlIG9wY2xhc3NlcyBhc3Nv Y2lhdGVkIHdpdGggdGhlIGluZGV4CisgKgkob3IgcHJpbWFyeSBrZXkpIGNvbnN0cmFpbnQu ICBPciBpZiB0aGlzIGlzIGEgdGVtcG9yYWwgZm9yZWlnbiBrZXkKKyAqCXRoZSBwcmltYXJ5 IGtleSBzaG91bGQgYmUgYW4gZXhjbHVzaW9uIGNvbnN0cmFpbnQgaW5zdGVhZC4KKyAqCVJl dHVybiB0aGUgT0lEIG9mIHRoZSBpbmRleCBzdXBwb3J0aW5nIHRoZSBjb25zdHJhaW50LAor ICoJYXMgd2VsbCBhcyB0aGUgb3BjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5kZXgK ICAqCWNvbHVtbnMuCiAgKi8KIHN0YXRpYyBPaWQKIHRyYW5zZm9ybUZrZXlDaGVja0F0dHJz KFJlbGF0aW9uIHBrcmVsLAogCQkJCQkJaW50IG51bWF0dHJzLCBpbnQxNiAqYXR0bnVtcywK KwkJCQkJCWJvb2wgaXNfdGVtcG9yYWwsIGludDE2IHBlcmlvZGF0dG51bSwKIAkJCQkJCU9p ZCAqb3BjbGFzc2VzKSAvKiBvdXRwdXQgcGFyYW1ldGVyICovCiB7CiAJT2lkCQkJaW5kZXhv aWQgPSBJbnZhbGlkT2lkOwpAQCAtMTE3ODQsNiArMTE5MDEsMTAgQEAgdHJhbnNmb3JtRmtl eUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lO VkFMSURfRk9SRUlHTl9LRVkpLAogCQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgcmVmZXJl bmNlZC1jb2x1bW5zIGxpc3QgbXVzdCBub3QgY29udGFpbiBkdXBsaWNhdGVzIikpKTsKIAkJ fQorCQlpZiAoaXNfdGVtcG9yYWwgJiYgYXR0bnVtc1tpXSA9PSBwZXJpb2RhdHRudW0pCisJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlH Tl9LRVkpLAorCQkJCQkgZXJybXNnKCJmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMg bGlzdCBtdXN0IG5vdCBjb250YWluIGR1cGxpY2F0ZXMiKSkpOwogCX0KIAogCS8qCkBAIC0x MTgwNSwxMiArMTE5MjYsMTYgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24g cGtyZWwsCiAJCWluZGV4U3RydWN0ID0gKEZvcm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRl eFR1cGxlKTsKIAogCQkvKgotCQkgKiBNdXN0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBj b2x1bW5zOyBtdXN0IGJlIHVuaXF1ZSBhbmQgbm90IGEKLQkJICogcGFydGlhbCBpbmRleDsg Zm9yZ2V0IGl0IGlmIHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52YWxpZAot CQkgKiBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4KKwkJICogTXVzdCBoYXZlIHRoZSByaWdo dCBudW1iZXIgb2YgY29sdW1uczsgbXVzdCBiZSB1bmlxdWUKKwkJICogKG9yIGlmIHRlbXBv cmFsIHRoZW4gZXhjbHVzaW9uIGluc3RlYWQpIGFuZCBub3QgYQorCQkgKiBwYXJ0aWFsIGlu ZGV4OyBmb3JnZXQgaXQgaWYgdGhlcmUgYXJlIGFueSBleHByZXNzaW9ucywgdG9vLgorCQkg KiBJbnZhbGlkIGluZGV4ZXMgYXJlIG91dCBhcyB3ZWxsLgogCQkgKi8KLQkJaWYgKGluZGV4 U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1hdHRycyAmJgotCQkJaW5kZXhTdHJ1Y3QtPmlu ZGlzdW5pcXVlICYmCisJCWlmICgoaXNfdGVtcG9yYWwKKwkJCSAgPyAoaW5kZXhTdHJ1Y3Qt PmluZG5rZXlhdHRzID09IG51bWF0dHJzICsgMSAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5k aXNleGNsdXNpb24pCisJCQkgIDogKGluZGV4U3RydWN0LT5pbmRua2V5YXR0cyA9PSBudW1h dHRycyAmJgorCQkJCSBpbmRleFN0cnVjdC0+aW5kaXN1bmlxdWUpKSAmJgogCQkJaW5kZXhT dHJ1Y3QtPmluZGlzdmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUsIEFu dW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVMTCkgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4 VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQpAQCAtMTE4NDgsNiArMTE5 NzMsMTkgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJCQkJ aWYgKCFmb3VuZCkKIAkJCQkJYnJlYWs7CiAJCQl9CisJCQlpZiAoZm91bmQgJiYgaXNfdGVt cG9yYWwpCisJCQl7CisJCQkJZm91bmQgPSBmYWxzZTsKKwkJCQlmb3IgKGogPSAwOyBqIDwg bnVtYXR0cnMgKyAxOyBqKyspCisJCQkJeworCQkJCQlpZiAocGVyaW9kYXR0bnVtID09IGlu ZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2pdKQorCQkJCQl7CisJCQkJCQlvcGNsYXNzZXNb bnVtYXR0cnNdID0gaW5kY2xhc3MtPnZhbHVlc1tqXTsKKwkJCQkJCWZvdW5kID0gdHJ1ZTsK KwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJfQogCiAJCQkvKgogCQkJICogUmVm dXNlIHRvIHVzZSBhIGRlZmVycmFibGUgdW5pcXVlL3ByaW1hcnkga2V5LiAgVGhpcyBpcyBw ZXIgU1FMCkBAIC0xMTk1Nyw3ICsxMjA5NSw4IEBAIHZhbGlkYXRlRm9yZWlnbktleUNvbnN0 cmFpbnQoY2hhciAqY29ubmFtZSwKIAkJCQkJCQkgUmVsYXRpb24gcmVsLAogCQkJCQkJCSBS ZWxhdGlvbiBwa3JlbCwKIAkJCQkJCQkgT2lkIHBraW5kT2lkLAotCQkJCQkJCSBPaWQgY29u c3RyYWludE9pZCkKKwkJCQkJCQkgT2lkIGNvbnN0cmFpbnRPaWQsCisJCQkJCQkJIGJvb2wg dGVtcG9yYWwpCiB7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3Q7CiAJVGFibGVTY2FuRGVzYyBz Y2FuOwpAQCAtMTE5ODYsOCArMTIxMjUsMTAgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3Ry YWludChjaGFyICpjb25uYW1lLAogCS8qCiAJICogU2VlIGlmIHdlIGNhbiBkbyBpdCB3aXRo IGEgc2luZ2xlIExFRlQgSk9JTiBxdWVyeS4gIEEgZmFsc2UgcmVzdWx0CiAJICogaW5kaWNh dGVzIHdlIG11c3QgcHJvY2VlZCB3aXRoIHRoZSBmaXJlLXRoZS10cmlnZ2VyIG1ldGhvZC4K KwkgKiBXZSBjYW4ndCBkbyBhIExFRlQgSk9JTiBmb3IgdGVtcG9yYWwgRktzIHlldCwKKwkg KiBidXQgd2UgY2FuIG9uY2Ugd2Ugc3VwcG9ydCB0ZW1wb3JhbCBsZWZ0IGpvaW5zLgogCSAq LwotCWlmIChSSV9Jbml0aWFsX0NoZWNrKCZ0cmlnLCByZWwsIHBrcmVsKSkKKwlpZiAoIXRl bXBvcmFsICYmIFJJX0luaXRpYWxfQ2hlY2soJnRyaWcsIHJlbCwgcGtyZWwpKQogCQlyZXR1 cm47CiAKIAkvKgpAQCAtMTIwNTYsNiArMTIxOTcsNyBAQCBDcmVhdGVGS0NoZWNrVHJpZ2dl cihPaWQgbXlSZWxPaWQsIE9pZCByZWZSZWxPaWQsIENvbnN0cmFpbnQgKmZrY29uc3RyYWlu dCwKIHsKIAlPYmplY3RBZGRyZXNzIHRyaWdBZGRyZXNzOwogCUNyZWF0ZVRyaWdTdG10ICpm a190cmlnZ2VyOworCWJvb2wgaXNfdGVtcG9yYWwgPSBma2NvbnN0cmFpbnQtPmZrX3Blcmlv ZDsKIAogCS8qCiAJICogTm90ZTogZm9yIGEgc2VsZi1yZWZlcmVudGlhbCBGSyAocmVmZXJl bmNpbmcgYW5kIHJlZmVyZW5jZWQgdGFibGVzIGFyZQpAQCAtMTIwNzUsMTIgKzEyMjE3LDE4 IEBAIENyZWF0ZUZLQ2hlY2tUcmlnZ2VyKE9pZCBteVJlbE9pZCwgT2lkIHJlZlJlbE9pZCwg Q29uc3RyYWludCAqZmtjb25zdHJhaW50LAogCS8qIEVpdGhlciBPTiBJTlNFUlQgb3IgT04g VVBEQVRFICovCiAJaWYgKG9uX2luc2VydCkKIAl7Ci0JCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2hlY2tfaW5zIik7CisJCWlmIChpc190ZW1w b3JhbCkKKwkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9G S2V5X2NoZWNrX2lucyIpOworCQllbHNlCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5 c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX2lucyIpOwogCQlma190cmlnZ2VyLT5ldmVu dHMgPSBUUklHR0VSX1RZUEVfSU5TRVJUOwogCX0KIAllbHNlCiAJewotCQlma190cmlnZ2Vy LT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X2NoZWNrX3VwZCIpOworCQlp ZiAoaXNfdGVtcG9yYWwpCisJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJUUklfRktleV9jaGVja191cGQiKTsKKwkJZWxzZQorCQkJZmtfdHJpZ2dlci0+ZnVu Y25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jaGVja191cGQiKTsKIAkJZmtfdHJp Z2dlci0+ZXZlbnRzID0gVFJJR0dFUl9UWVBFX1VQREFURTsKIAl9CiAKQEAgLTEyMTM4LDM3 ICsxMjI4Niw2OCBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMoUmVsYXRpb24g cmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCWZrX3RyaWdnZXIt PndoZW5DbGF1c2UgPSBOVUxMOwogCWZrX3RyaWdnZXItPnRyYW5zaXRpb25SZWxzID0gTklM OwogCWZrX3RyaWdnZXItPmNvbnN0cnJlbCA9IE5VTEw7Ci0Jc3dpdGNoIChma2NvbnN0cmFp bnQtPmZrX2RlbF9hY3Rpb24pCisJaWYgKGZrY29uc3RyYWludC0+ZmtfcGVyaW9kICE9IE5V TEwpCiAJewotCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FDVElPTjoKLQkJCWZrX3RyaWdn ZXItPmRlZmVycmFibGUgPSBma2NvbnN0cmFpbnQtPmRlZmVycmFibGU7Ci0JCQlma190cmln Z2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmluaXRkZWZlcnJlZDsKLQkJCWZr X3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25f ZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fUkVTVFJJQ1Q6Ci0J CQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVu Y05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfZGVsIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NP TlNUUl9BQ1RJT05fQ0FTQ0FERToKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxz ZTsKLQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dl ci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9jYXNjYWRlX2RlbCIpOwot CQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6Ci0JCQlma190cmln Z2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQg PSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJ X0ZLZXlfc2V0bnVsbF9kZWwiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9TRVRERUZBVUxUOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJ ZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5j bmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7Ci0JCQli cmVhazsKLQkJZGVmYXVsdDoKLQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0 aW9uIHR5cGU6ICVkIiwKLQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9u KTsKLQkJCWJyZWFrOworCQkvKiBUZW1wb3JhbCBmb3JlaWduIGtleXMgKi8KKwkJc3dpdGNo IChma2NvbnN0cmFpbnQtPmZrX2RlbF9hY3Rpb24pCisJCXsKKwkJCWNhc2UgRktDT05TVFJf QUNUSU9OX05PQUNUSU9OOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBma2NvbnN0 cmFpbnQtPmRlZmVycmFibGU7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmtj b25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJ CQljYXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZl cnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7 CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlf cmVzdHJpY3RfZGVsIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9D QVNDQURFOgorCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUTlVMTDoKKwkJCWNhc2UgRktD T05TVFJfQUNUSU9OX1NFVERFRkFVTFQ6CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCSBlcnJtc2co ImFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMiKSkpOwor CQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IEZLIGFjdGlvbiB0eXBlOiAlZCIsCisJCQkJCSAoaW50KSBma2NvbnN0cmFpbnQtPmZrX2Rl bF9hY3Rpb24pOworCQkJCWJyZWFrOworCQl9CisJfQorCWVsc2UKKwl7CisJCXN3aXRjaCAo Zmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FD VElPTl9OT0FDVElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJh aW50LT5kZWZlcnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29u c3RyYWludC0+aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lz dGVtRnVuY05hbWUoIlJJX0ZLZXlfbm9hY3Rpb25fZGVsIik7CisJCQkJYnJlYWs7CisJCQlj YXNlIEZLQ09OU1RSX0FDVElPTl9SRVNUUklDVDoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJ CQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiUklfRktleV9yZXN0 cmljdF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX0NBU0NB REU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0g U3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV9kZWwiKTsKKwkJCQlicmVhazsKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0 bnVsbF9kZWwiKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVERF RkFVTFQ6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3Ry aWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwiKTsKKwkJCQlicmVh azsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rp b24gdHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma19kZWxfYWN0aW9u KTsKKwkJCQlicmVhazsKKwkJfQogCX0KIAogCXRyaWdBZGRyZXNzID0gQ3JlYXRlVHJpZ2dl cihma190cmlnZ2VyLCBOVUxMLCByZWZSZWxPaWQsCkBAIC0xMjE5OCwzNyArMTIzNzcsNjgg QEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRyaWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJl ZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25zdHIKIAlma190cmlnZ2VyLT53aGVuQ2xhdXNl ID0gTlVMTDsKIAlma190cmlnZ2VyLT50cmFuc2l0aW9uUmVscyA9IE5JTDsKIAlma190cmln Z2VyLT5jb25zdHJyZWwgPSBOVUxMOwotCXN3aXRjaCAoZmtjb25zdHJhaW50LT5ma191cGRf YWN0aW9uKQorCWlmIChma2NvbnN0cmFpbnQtPmZrX3BlcmlvZCAhPSBOVUxMKQogCXsKLQkJ Y2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJT046Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJh YmxlID0gZmtjb25zdHJhaW50LT5kZWZlcnJhYmxlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRl ZmVycmVkID0gZmtjb25zdHJhaW50LT5pbml0ZGVmZXJyZWQ7Ci0JCQlma190cmlnZ2VyLT5m dW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOwotCQkJ YnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9OX1JFU1RSSUNUOgotCQkJZmtfdHJpZ2dl ci0+ZGVmZXJyYWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0g ZmFsc2U7Ci0JCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9G S2V5X3Jlc3RyaWN0X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRktDT05TVFJfQUNUSU9O X0NBU0NBREU6Ci0JCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7Ci0JCQlma190 cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1l ID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKLQkJCWJyZWFrOwot CQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgotCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFsc2U7Ci0J CQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51 bGxfdXBkIik7Ci0JCQlicmVhazsKLQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fU0VUREVGQVVM VDoKLQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKLQkJCWZrX3RyaWdnZXIt PmluaXRkZWZlcnJlZCA9IGZhbHNlOwotCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0 ZW1GdW5jTmFtZSgiUklfRktleV9zZXRkZWZhdWx0X3VwZCIpOwotCQkJYnJlYWs7Ci0JCWRl ZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIEZLIGFjdGlvbiB0eXBlOiAl ZCIsCi0JCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7Ci0JCQlicmVh azsKKwkJLyogVGVtcG9yYWwgZm9yZWlnbiBrZXlzICovCisJCXN3aXRjaCAoZmtjb25zdHJh aW50LT5ma191cGRfYWN0aW9uKQorCQl7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9OT0FD VElPTjoKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmtjb25zdHJhaW50LT5kZWZl cnJhYmxlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZrY29uc3RyYWludC0+ aW5pdGRlZmVycmVkOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05h bWUoIlRSSV9GS2V5X25vYWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NP TlNUUl9BQ1RJT05fUkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZh bHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3Ry aWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3RyaWN0X3Vw ZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FERToKKwkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQljYXNlIEZLQ09OU1RSX0FDVElP Tl9TRVRERUZBVUxUOgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJD T0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90 IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlicmVhazsK KwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24g dHlwZTogJWQiLAorCQkJCQkgKGludCkgZmtjb25zdHJhaW50LT5ma191cGRfYWN0aW9uKTsK KwkJCQlicmVhazsKKwkJfQorCX0KKwllbHNlCisJeworCQlzd2l0Y2ggKGZrY29uc3RyYWlu dC0+ZmtfdXBkX2FjdGlvbikKKwkJeworCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fTk9BQ1RJ T046CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZrY29uc3RyYWludC0+ZGVmZXJy YWJsZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBma2NvbnN0cmFpbnQtPmlu aXRkZWZlcnJlZDsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1l KCJSSV9GS2V5X25vYWN0aW9uX3VwZCIpOworCQkJCWJyZWFrOworCQkJY2FzZSBGS0NPTlNU Ul9BQ1RJT05fUkVTVFJJQ1Q6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNl OworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdn ZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlJJX0ZLZXlfcmVzdHJpY3RfdXBkIik7 CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9DQVNDQURFOgorCQkJCWZr X3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVm ZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNO YW1lKCJSSV9GS2V5X2Nhc2NhZGVfdXBkIik7CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09O U1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxz ZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmln Z2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJSSV9GS2V5X3NldG51bGxfdXBkIik7 CisJCQkJYnJlYWs7CisJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRERUZBVUxUOgorCQkJ CWZrX3RyaWdnZXItPmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0 ZGVmZXJyZWQgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1 bmNOYW1lKCJSSV9GS2V5X3NldGRlZmF1bHRfdXBkIik7CisJCQkJYnJlYWs7CisJCQlkZWZh dWx0OgorCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVk IiwKKwkJCQkJIChpbnQpIGZrY29uc3RyYWludC0+ZmtfdXBkX2FjdGlvbik7CisJCQkJYnJl YWs7CisJCX0KIAl9CiAKIAl0cmlnQWRkcmVzcyA9IENyZWF0ZVRyaWdnZXIoZmtfdHJpZ2dl ciwgTlVMTCwgcmVmUmVsT2lkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggM2VhNGFjYjc0ZC4uN2Qy MjMxOWQ0MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC01MjMsMTEgKzUyMywxMiBAQCBzdGF0aWMg Tm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxp YXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CVRhYmxlRWxlbWVudCBUeXBlZFRh YmxlRWxlbWVudCBDb25zdHJhaW50RWxlbSBUYWJsZUZ1bmNFbGVtZW50CiAldHlwZSA8bm9k ZT4JY29sdW1uRGVmIGNvbHVtbk9wdGlvbnMKICV0eXBlIDxkZWZlbHQ+CWRlZl9lbGVtIHJl bG9wdGlvbl9lbGVtIG9sZF9hZ2dyX2VsZW0gb3BlcmF0b3JfZGVmX2VsZW0KLSV0eXBlIDxu b2RlPglkZWZfYXJnIGNvbHVtbkVsZW0gd2l0aG91dF9vdmVybGFwc19jbGF1c2UKKyV0eXBl IDxub2RlPglkZWZfYXJnIGNvbHVtbkVsZW0gd2l0aG91dF9vdmVybGFwc19jbGF1c2Ugb3B0 aW9uYWxQZXJpb2ROYW1lCiAJCQkJd2hlcmVfY2xhdXNlIHdoZXJlX29yX2N1cnJlbnRfY2xh dXNlCiAJCQkJYV9leHByIGJfZXhwciBjX2V4cHIgQWV4cHJDb25zdCBpbmRpcmVjdGlvbl9l bCBvcHRfc2xpY2VfYm91bmQKIAkJCQljb2x1bW5yZWYgaW5fZXhwciBoYXZpbmdfY2xhdXNl IGZ1bmNfdGFibGUgeG1sdGFibGUgYXJyYXlfZXhwcgogCQkJCU9wdFdoZXJlQ2xhdXNlIG9w ZXJhdG9yX2RlZl9hcmcKKyV0eXBlIDxsaXN0PglvcHRfY29sdW1uX2FuZF9wZXJpb2RfbGlz dAogJXR5cGUgPGxpc3Q+CXJvd3Nmcm9tX2l0ZW0gcm93c2Zyb21fbGlzdCBvcHRfY29sX2Rl Zl9saXN0CiAldHlwZSA8Ym9vbGVhbj4gb3B0X29yZGluYWxpdHkKICV0eXBlIDxsaXN0PglF eGNsdXNpb25Db25zdHJhaW50TGlzdCBFeGNsdXNpb25Db25zdHJhaW50RWxlbQpAQCAtNzQ1 LDcgKzc0Niw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFy ICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1ZFUiBPVkVSTEFQ UyBPVkVSTEFZIE9WRVJSSURJTkcgT1dORUQgT1dORVIKIAogCVBBUkFMTEVMIFBBUkFNRVRF UiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRAotCVBMQUNJTkcg UExBTlMgUE9MSUNZCisJUEVSSU9EIFBMQUNJTkcgUExBTlMgUE9MSUNZCiAJUE9TSVRJT04g UFJFQ0VESU5HIFBSRUNJU0lPTiBQUkVTRVJWRSBQUkVQQVJFIFBSRVBBUkVEIFBSSU1BUlkK IAlQUklPUiBQUklWSUxFR0VTIFBST0NFRFVSQUwgUFJPQ0VEVVJFIFBST0NFRFVSRVMgUFJP R1JBTSBQVUJMSUNBVElPTgogCkBAIC00MTg2LDIxICs0MTg3LDIzIEBAIENvbnN0cmFpbnRF bGVtOgogCQkJCQkJCQkgICBOVUxMLCB5eXNjYW5uZXIpOwogCQkJCQkkJCA9IChOb2RlICop IG47CiAJCQkJfQotCQkJfCBGT1JFSUdOIEtFWSAnKCcgY29sdW1uTGlzdCAnKScgUkVGRVJF TkNFUyBxdWFsaWZpZWRfbmFtZQotCQkJCW9wdF9jb2x1bW5fbGlzdCBrZXlfbWF0Y2gga2V5 X2FjdGlvbnMgQ29uc3RyYWludEF0dHJpYnV0ZVNwZWMKKwkJCXwgRk9SRUlHTiBLRVkgJygn IGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1lICcpJyBSRUZFUkVOQ0VTIHF1YWxpZmll ZF9uYW1lCisJCQkJb3B0X2NvbHVtbl9hbmRfcGVyaW9kX2xpc3Qga2V5X21hdGNoIGtleV9h Y3Rpb25zIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjCiAJCQkJewogCQkJCQlDb25zdHJhaW50 ICpuID0gbWFrZU5vZGUoQ29uc3RyYWludCk7CiAKIAkJCQkJbi0+Y29udHlwZSA9IENPTlNU Ul9GT1JFSUdOOwogCQkJCQluLT5sb2NhdGlvbiA9IEAxOwotCQkJCQluLT5wa3RhYmxlID0g JDc7CisJCQkJCW4tPnBrdGFibGUgPSAkODsKIAkJCQkJbi0+ZmtfYXR0cnMgPSAkNDsKLQkJ CQkJbi0+cGtfYXR0cnMgPSAkODsKLQkJCQkJbi0+ZmtfbWF0Y2h0eXBlID0gJDk7Ci0JCQkJ CW4tPmZrX3VwZF9hY3Rpb24gPSAoJDEwKS0+dXBkYXRlQWN0aW9uLT5hY3Rpb247Ci0JCQkJ CW4tPmZrX2RlbF9hY3Rpb24gPSAoJDEwKS0+ZGVsZXRlQWN0aW9uLT5hY3Rpb247Ci0JCQkJ CW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTApLT5kZWxldGVBY3Rpb24tPmNvbHM7Ci0JCQkJ CXByb2Nlc3NDQVNiaXRzKCQxMSwgQDExLCAiRk9SRUlHTiBLRVkiLAorCQkJCQluLT5ma19w ZXJpb2QgPSAkNTsKKwkJCQkJbi0+cGtfYXR0cnMgPSBsaW5pdGlhbCgkOSk7CisJCQkJCW4t PnBrX3BlcmlvZCA9IGxzZWNvbmQoJDkpOworCQkJCQluLT5ma19tYXRjaHR5cGUgPSAkMTA7 CisJCQkJCW4tPmZrX3VwZF9hY3Rpb24gPSAoJDExKS0+dXBkYXRlQWN0aW9uLT5hY3Rpb247 CisJCQkJCW4tPmZrX2RlbF9hY3Rpb24gPSAoJDExKS0+ZGVsZXRlQWN0aW9uLT5hY3Rpb247 CisJCQkJCW4tPmZrX2RlbF9zZXRfY29scyA9ICgkMTEpLT5kZWxldGVBY3Rpb24tPmNvbHM7 CisJCQkJCXByb2Nlc3NDQVNiaXRzKCQxMiwgQDEyLCAiRk9SRUlHTiBLRVkiLAogCQkJCQkJ CQkgICAmbi0+ZGVmZXJyYWJsZSwgJm4tPmluaXRkZWZlcnJlZCwKIAkJCQkJCQkJICAgJm4t PnNraXBfdmFsaWRhdGlvbiwgTlVMTCwKIAkJCQkJCQkJICAgeXlzY2FubmVyKTsKQEAgLTQy MjgsNiArNDIzMSwxNiBAQCB3aXRob3V0X292ZXJsYXBzX2NsYXVzZToKIAkJCXwgLypFTVBU WSovICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KIAk7CiAKK29wdGlvbmFsUGVyaW9k TmFtZToKKwkJCScsJyBQRVJJT0QgY29sdW1uRWxlbSB7ICQkID0gJDM7IH0KKwkJCXwgLypF TVBUWSovICAgICAgICAgICAgICAgeyAkJCA9IE5VTEw7IH0KKwk7CisKK29wdF9jb2x1bW5f YW5kX3BlcmlvZF9saXN0OgorCQkJJygnIGNvbHVtbkxpc3Qgb3B0aW9uYWxQZXJpb2ROYW1l ICcpJwkJCXsgJCQgPSBsaXN0X21ha2UyKCQyLCAkMyk7IH0KKwkJCXwgLypFTVBUWSovCQkJ CQkJCQl7ICQkID0gbGlzdF9tYWtlMihOSUwsIE5VTEwpOyB9CisJCTsKKwogY29sdW1uRWxl bTogQ29sSWQKIAkJCQl7CiAJCQkJCSQkID0gKE5vZGUgKikgbWFrZVN0cmluZygkMSk7CkBA IC0xNzUxNSw2ICsxNzUyOCw3IEBAIHJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IE9OTFkKIAkJ CXwgT1IKIAkJCXwgT1JERVIKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUFJJ TUFSWQogCQkJfCBSRUZFUkVOQ0VTCkBAIC0xNzgyNCw2ICsxNzgzOCw3IEBAIGJhcmVfbGFi ZWxfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dP UkQKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCmluZGV4IDY5NDVkOTliM2QuLjM2 NWI4NDRiZjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vy cy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9yaV90cmlnZ2Vycy5jCkBAIC0zMSw2 ICszMSw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jb2xsYXRpb24uaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZXJh dG9yLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19yYW5nZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRl ICJleGVjdXRvci9leGVjdXRvci5oIgpAQCAtNDgsNiArNDksNyBAQAogI2luY2x1ZGUgInV0 aWxzL2ludmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9yYW5nZXR5cGVzLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvcnVsZXV0aWxzLmgiCkBAIC0xMTgsNiArMTIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg UklfQ29uc3RyYWludEluZm8KIAlpbnQxNgkJY29uZmRlbHNldGNvbHNbUklfTUFYX05VTUtF WVNdOyAvKiBhdHRudW1zIG9mIGNvbHMgdG8gc2V0IG9uCiAJCQkJCQkJCQkJCQkgKiBkZWxl dGUgKi8KIAljaGFyCQljb25mbWF0Y2h0eXBlOwkvKiBmb3JlaWduIGtleSdzIG1hdGNoIHR5 cGUgKi8KKwlib29sCQl0ZW1wb3JhbDsJCS8qIGlmIHRoZSBmb3JlaWduIGtleSBpcyB0ZW1w b3JhbCAqLwogCWludAkJCW5rZXlzOwkJCS8qIG51bWJlciBvZiBrZXkgY29sdW1ucyAqLwog CWludDE2CQlwa19hdHRudW1zW1JJX01BWF9OVU1LRVlTXTsgLyogYXR0bnVtcyBvZiByZWZl cmVuY2VkIGNvbHMgKi8KIAlpbnQxNgkJZmtfYXR0bnVtc1tSSV9NQVhfTlVNS0VZU107IC8q IGF0dG51bXMgb2YgcmVmZXJlbmNpbmcgY29scyAqLwpAQCAtMjAwLDggKzIwMyw5IEBAIHN0 YXRpYyBpbnQJcmlfTnVsbENoZWNrKFR1cGxlRGVzYyB0dXBEZXNjLCBUdXBsZVRhYmxlU2xv dCAqc2xvdCwKIHN0YXRpYyB2b2lkIHJpX0J1aWxkUXVlcnlLZXkoUklfUXVlcnlLZXkgKmtl eSwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQkg aW50MzIgY29uc3RyX3F1ZXJ5bm8pOwotc3RhdGljIGJvb2wgcmlfS2V5c0VxdWFsKFJlbGF0 aW9uIHJlbCwgVHVwbGVUYWJsZVNsb3QgKm9sZHNsb3QsIFR1cGxlVGFibGVTbG90ICpuZXdz bG90LAorc3RhdGljIGJvb2wgcmlfS2V5c1N0YWJsZShSZWxhdGlvbiByZWwsIFR1cGxlVGFi bGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3c2xvdCwKIAkJCQkJCSBjb25z dCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvLCBib29sIHJlbF9pc19wayk7CitzdGF0aWMg Ym9vbCByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2soYm9vbCByZWxfaXNfcGssIERhdHVt IG9sZHZhbHVlLCBEYXR1bSBuZXd2YWx1ZSk7CiBzdGF0aWMgYm9vbCByaV9BdHRyaWJ1dGVz RXF1YWwoT2lkIGVxX29wciwgT2lkIHR5cGVpZCwKIAkJCQkJCQkgICBEYXR1bSBvbGR2YWx1 ZSwgRGF0dW0gbmV3dmFsdWUpOwogCkBAIC0zNjEsMjYgKzM2NSw1NyBAQCBSSV9GS2V5X2No ZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAogCQkvKiAtLS0tLS0tLS0tCiAJCSAqIFRo ZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKLQkJICoJU0VMRUNUIDEgRlJPTSBbT05MWV0gPHBr dGFibGU+IHggV0hFUkUgcGthdHQxID0gJDEgW0FORCAuLi5dCi0JCSAqCQkgICBGT1IgS0VZ IFNIQVJFIE9GIHgKKwkJICoJU0VMRUNUIDEKKwkJICoJRlJPTSBbT05MWV0gPHBrdGFibGU+ IHggV0hFUkUgcGthdHQxID0gJDEgW0FORCAuLi5dCisJCSAqCUZPUiBLRVkgU0hBUkUgT0Yg eAogCQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBv ZiB0aGUKIAkJICogY29ycmVzcG9uZGluZyBGSyBhdHRyaWJ1dGVzLgorCQkgKgorCQkgKiBC dXQgZm9yIHRlbXBvcmFsIEZLcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZQorCQkgKiB0aGUgRksn cyByYW5nZSBpcyBjb21wbGV0ZWx5IGNvdmVyZWQuCisJCSAqIFNvIHdlIHVzZSB0aGlzIHF1 ZXJ5IGluc3RlYWQ6CisJCSAqICBTRUxFQ1QgMQorCQkgKglGUk9NCSgKKwkJICoJCVNFTEVD VCBwa3BlcmlvZGF0dCBBUyByCisJCSAqCQlGUk9NICAgW09OTFldIHBrdGFibGUgeAorCQkg KgkJV0hFUkUgIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKgkJQU5EICAgIHBrcGVyaW9k YXR0ICYmICRuCisJCSAqCQlGT1IgS0VZIFNIQVJFIE9GIHgKKwkJICoJKSB4MQorCQkgKiAg SEFWSU5HICRuIDxAIHJhbmdlX2FnZyh4MS5yKQorCQkgKiBOb3RlIGlmIEZPUiBLRVkgU0hB UkUgZXZlciBhbGxvd3MgR1JPVVAgQlkgYW5kIEhBVklORworCQkgKiB3ZSBjYW4gbWFrZSB0 aGlzIGEgYml0IHNpbXBsZXIuCiAJCSAqIC0tLS0tLS0tLS0KIAkJICovCiAJCWluaXRTdHJp bmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBwa19yZWwtPnJkX3JlbC0+cmVsa2lu ZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJCSIiIDogIk9OTFkgIjsKIAkJ cXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwpOwotCQlhcHBlbmRTdHJpbmdJ bmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4IiwKLQkJCQkJCSBwa19vbmx5 LCBwa3JlbG5hbWUpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJeworCQkJcXVvdGVP bmVOYW1lKGF0dG5hbWUsCisJCQkJCVJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0 bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQkJYXBwZW5kU3RyaW5nSW5mbygmcXVl cnlidWYsCisJCQkJCSJTRUxFQ1QgMSBGUk9NIChTRUxFQ1QgJXMgQVMgciBGUk9NICVzJXMg eCIsCisJCQkJCWF0dG5hbWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJCX0KKwkJZWxzZSB7 CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4 IiwKKwkJCQkJCQkgcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQogCQlxdWVyeXNlcCA9ICJX SEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrKQogCQl7 Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRu dW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8t PmZrX2F0dG51bXNbaV0pOworCQkJT2lkCXBrX3R5cGU7CisJCQlPaWQJZmtfdHlwZTsKIAor CQkJcGtfdHlwZSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSk7 CiAJCQlxdW90ZU9uZU5hbWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUocGtfcmVsLCBy aWluZm8tPnBrX2F0dG51bXNbaV0pKTsKKworCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShma19y ZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKIAkJCXNwcmludGYocGFyYW1uYW1lLCAi JCVkIiwgaSArIDEpOwogCQkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1ZiwgcXVlcnlzZXAs CiAJCQkJCQkJYXR0bmFtZSwgcGtfdHlwZSwKQEAgLTM5MCw2ICs0MjUsOCBAQCBSSV9GS2V5 X2NoZWNrKFRyaWdnZXJEYXRhICp0cmlnZGF0YSkKIAkJCXF1ZXJ5b2lkc1tpXSA9IGZrX3R5 cGU7CiAJCX0KIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmcXVlcnlidWYsICIgRk9SIEtF WSBTSEFSRSBPRiB4Iik7CisJCWlmIChyaWluZm8tPnRlbXBvcmFsKQorCQkJYXBwZW5kU3Ry aW5nSW5mbygmcXVlcnlidWYsICIpIHgxIEhBVklORyAkJWQgPEAgcGdfY2F0YWxvZy5yYW5n ZV9hZ2coeDEucikiLCByaWluZm8tPm5rZXlzKTsKIAogCQkvKiBQcmVwYXJlIGFuZCBzYXZl IHRoZSBwbGFuICovCiAJCXFwbGFuID0gcmlfUGxhbkNoZWNrKHF1ZXJ5YnVmLmRhdGEsIHJp aW5mby0+bmtleXMsIHF1ZXJ5b2lkcywKQEAgLTQ5NywyMSArNTM0LDQ5IEBAIHJpX0NoZWNr X1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkgKgkJICAg Rk9SIEtFWSBTSEFSRSBPRiB4CiAJCSAqIFRoZSB0eXBlIGlkJ3MgZm9yIHRoZSAkIHBhcmFt ZXRlcnMgYXJlIHRob3NlIG9mIHRoZQogCQkgKiBQSyBhdHRyaWJ1dGVzIHRoZW1zZWx2ZXMu CisJCSAqIEJ1dCBmb3IgdGVtcG9yYWwgRktzIHdlIG5lZWQgdG8gbWFrZSBzdXJlCisJCSAq IHRoZSBGSydzIHJhbmdlIGlzIGNvbXBsZXRlbHkgY292ZXJlZC4KKwkJICogU28gd2UgdXNl IHRoaXMgcXVlcnkgaW5zdGVhZDoKKwkJICogIFNFTEVDVCAxCisJCSAqICBGUk9NICAgICgK KwkJICoJICBTRUxFQ1QgcGtwZXJpb2RhdHQgQVMgcgorCQkgKgkgIEZST00gICBbT05MWV0g cGt0YWJsZSB4CisJCSAqCSAgV0hFUkUgIHBrYXR0MSA9ICQxIFtBTkQgLi4uXQorCQkgKgkg IEFORCAgICBwa3BlcmlvZGF0dCAmJiAkbgorCQkgKgkgIEZPUiBLRVkgU0hBUkUgT0YgeAor CQkgKiAgKSB4MQorCQkgKiAgSEFWSU5HICRuIDxAIHJhbmdlX2FnZyh4MS5yKQorCQkgKiBO b3RlIGlmIEZPUiBLRVkgU0hBUkUgZXZlciBhbGxvd3MgR1JPVVAgQlkgYW5kIEhBVklORwor CQkgKiB3ZSBjYW4gbWFrZSB0aGlzIGEgYml0IHNpbXBsZXIuCiAJCSAqIC0tLS0tLS0tLS0K IAkJICovCiAJCWluaXRTdHJpbmdJbmZvKCZxdWVyeWJ1Zik7CiAJCXBrX29ubHkgPSBwa19y ZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KIAkJ CSIiIDogIk9OTFkgIjsKIAkJcXVvdGVSZWxhdGlvbk5hbWUocGtyZWxuYW1lLCBwa19yZWwp OwotCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVDVCAxIEZST00gJXMlcyB4 IiwKLQkJCQkJCSBwa19vbmx5LCBwa3JlbG5hbWUpOworCQlpZiAocmlpbmZvLT50ZW1wb3Jh bCkKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJQXR0TmFtZShwa19yZWwsIHJp aW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pKTsKKworCQkJYXBwZW5kU3Ry aW5nSW5mbygmcXVlcnlidWYsCisJCQkJCSJTRUxFQ1QgMSBGUk9NIChTRUxFQ1QgJXMgQVMg ciBGUk9NICVzJXMgeCIsCisJCQkJCWF0dG5hbWUsIHBrX29ubHksIHBrcmVsbmFtZSk7CisJ CX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwgIlNFTEVD VCAxIEZST00gJXMlcyB4IiwKKwkJCQkJcGtfb25seSwgcGtyZWxuYW1lKTsKKwkJfQorCiAJ CXF1ZXJ5c2VwID0gIldIRVJFIjsKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5r ZXlzOyBpKyspCiAJCXsKLQkJCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCBy aWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCQlwa190eXBlOwogCisJCQlwa190eXBl ID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKIAkJCXF1b3Rl T25lTmFtZShhdHRuYW1lLAogCQkJCQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtf YXR0bnVtc1tpXSkpOworCiAJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGkgKyAxKTsK IAkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1ZXJ5c2VwLAogCQkJCQkJCWF0dG5h bWUsIHBrX3R5cGUsCkBAIC01MjEsNiArNTg2LDggQEAgcmlfQ2hlY2tfUGtfTWF0Y2goUmVs YXRpb24gcGtfcmVsLCBSZWxhdGlvbiBma19yZWwsCiAJCQlxdWVyeW9pZHNbaV0gPSBwa190 eXBlOwogCQl9CiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJnF1ZXJ5YnVmLCAiIEZPUiBL RVkgU0hBUkUgT0YgeCIpOworCQlpZiAocmlpbmZvLT50ZW1wb3JhbCkKKwkJCWFwcGVuZFN0 cmluZ0luZm8oJnF1ZXJ5YnVmLCAiKSB4MSBIQVZJTkcgJCVkIDxAIHBnX2NhdGFsb2cucmFu Z2VfYWdnKHgxLnIpIiwgcmlpbmZvLT5ua2V5cyk7CiAKIAkJLyogUHJlcGFyZSBhbmQgc2F2 ZSB0aGUgcGxhbiAqLwogCQlxcGxhbiA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCBy aWluZm8tPm5rZXlzLCBxdWVyeW9pZHMsCkBAIC02OTUsMTAgKzc2MiwxNiBAQCByaV9yZXN0 cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNfbm9fYWN0aW9uKQogCQlxdWVy eXNlcCA9ICJXSEVSRSI7CiAJCWZvciAoaW50IGkgPSAwOyBpIDwgcmlpbmZvLT5ua2V5czsg aSsrKQogCQl7Ci0JCQlPaWQJCQlwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZv LT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVs LCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwotCQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29s bGF0aW9uKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJCU9pZAkJCWZrX2Nv bGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJ CQlPaWQJCXBrX3R5cGU7CisJCQlPaWQJCWZrX3R5cGU7CisJCQlPaWQJCXBrX2NvbGw7CisJ CQlPaWQJCWZrX2NvbGw7CisKKwkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWlu Zm8tPnBrX2F0dG51bXNbaV0pOworCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKworCQkJZmtfdHlwZSA9IFJJQXR0VHlwZShm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJCQlma19jb2xsID0gUklBdHRDb2xs YXRpb24oZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbaV0pOwogCiAJCQlxdW90ZU9uZU5h bWUoYXR0bmFtZSwKIAkJCQkJCSBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51 bXNbaV0pKTsKQEAgLTEyMTMsNiArMTI4NiwxMjYgQEAgcmlfc2V0KFRyaWdnZXJEYXRhICp0 cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkKIAl9CiB9CiAKKy8qIC0t LS0tLS0tLS0KKyAqIFRSSV9GS2V5X2NoZWNrX2lucyAtCisgKgorICoJQ2hlY2sgdGVtcG9y YWwgZm9yZWlnbiBrZXkgZXhpc3RlbmNlIGF0IGluc2VydCBldmVudCBvbiBGSyB0YWJsZS4K KyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X2NoZWNrX2lucyhQR19GVU5D VElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQgdHJp Z2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4KKwkgKi8KKwlyaV9DaGVj a1RyaWdnZXIoZmNpbmZvLCAiUklfRktleV9jaGVja19pbnMiLCBSSV9UUklHVFlQRV9JTlNF UlQpOworCisJLyoKKwkgKiBTaGFyZSBjb2RlIHdpdGggVVBEQVRFIGNhc2UuCisJICovCisJ cmV0dXJuIFJJX0ZLZXlfY2hlY2soKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCk7 Cit9CisKKworLyogLS0tLS0tLS0tLQorICogVFJJX0ZLZXlfY2hlY2tfdXBkIC0KKyAqCisg KglDaGVjayB0ZW1wb3JhbCBmb3JlaWduIGtleSBleGlzdGVuY2UgYXQgdXBkYXRlIGV2ZW50 IG9uIEZLIHRhYmxlLgorICogLS0tLS0tLS0tLQorICovCitEYXR1bQorVFJJX0ZLZXlfY2hl Y2tfdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyoKKwkgKiBDaGVjayB0aGF0IHRoaXMg aXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50Lgor CSAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJSSV9GS2V5X2NoZWNrX3VwZCIsIFJJ X1RSSUdUWVBFX1VQREFURSk7CisKKwkvKgorCSAqIFNoYXJlIGNvZGUgd2l0aCBJTlNFUlQg Y2FzZS4KKwkgKi8KKwlyZXR1cm4gUklfRktleV9jaGVjaygoVHJpZ2dlckRhdGEgKikgZmNp bmZvLT5jb250ZXh0KTsKK30KKworCisvKiAtLS0tLS0tLS0tCisgKiBUUklfRktleV9ub2Fj dGlvbl9kZWwgLQorICoKKyAqCUdpdmUgYW4gZXJyb3IgYW5kIHJvbGwgYmFjayB0aGUgY3Vy cmVudCB0cmFuc2FjdGlvbiBpZiB0aGUKKyAqCWRlbGV0ZSBoYXMgcmVzdWx0ZWQgaW4gYSB2 aW9sYXRpb24gb2YgdGhlIGdpdmVuIHRlbXBvcmFsCisgKglyZWZlcmVudGlhbCBpbnRlZ3Jp dHkgY29uc3RyYWludC4KKyAqIC0tLS0tLS0tLS0KKyAqLworRGF0dW0KK1RSSV9GS2V5X25v YWN0aW9uX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qCisJICogQ2hlY2sgdGhhdCB0 aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVu dC4KKwkgKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfbm9hY3Rpb25f ZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qCisJICogU2hhcmUgY29kZSB3aXRo IFJFU1RSSUNUL1VQREFURSBjYXNlcy4KKwkgKi8KKwlyZXR1cm4gcmlfcmVzdHJpY3QoKFRy aWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgdHJ1ZSk7Cit9CisKKy8qCisgKiBUUklf RktleV9yZXN0cmljdF9kZWwgLQorICoKKyAqIFJlc3RyaWN0IGRlbGV0ZSBmcm9tIFBLIHRh YmxlIHRvIHJvd3MgdW5yZWZlcmVuY2VkIGJ5IGZvcmVpZ24ga2V5LgorICoKKyAqIFRoZSBT UUwgc3RhbmRhcmQgaW50ZW5kcyB0aGF0IHRoaXMgcmVmZXJlbnRpYWwgYWN0aW9uIG9jY3Vy IGV4YWN0bHkgd2hlbgorICogdGhlIGRlbGV0ZSBpcyBwZXJmb3JtZWQsIHJhdGhlciB0aGFu IGFmdGVyLiAgVGhpcyBhcHBlYXJzIHRvIGJlCisgKiB0aGUgb25seSBkaWZmZXJlbmNlIGJl dHdlZW4gIk5PIEFDVElPTiIgYW5kICJSRVNUUklDVCIuICBJbiBQb3N0Z3JlcworICogd2Ug c3RpbGwgaW1wbGVtZW50IHRoaXMgYXMgYW4gQUZURVIgdHJpZ2dlciwgYnV0IGl0J3Mgbm9u LWRlZmVycmFibGUuCisgKi8KK0RhdHVtCitUUklfRktleV9yZXN0cmljdF9kZWwoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2Vy IGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5kIGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dl cihmY2luZm8sICJUUklfRktleV9yZXN0cmljdF9kZWwiLCBSSV9UUklHVFlQRV9ERUxFVEUp OworCisJLyogU2hhcmUgY29kZSB3aXRoIE5PIEFDVElPTi9VUERBVEUgY2FzZXMuICovCisJ cmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQsIGZh bHNlKTsKK30KKworLyoKKyAqIFRSSV9GS2V5X25vYWN0aW9uX3VwZCAtCisgKgorICogR2l2 ZSBhbiBlcnJvciBhbmQgcm9sbCBiYWNrIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uIGlmIHRo ZQorICogdXBkYXRlIGhhcyByZXN1bHRlZCBpbiBhIHZpb2xhdGlvbiBvZiB0aGUgZ2l2ZW4g cmVmZXJlbnRpYWwKKyAqIGludGVncml0eSBjb25zdHJhaW50LgorICovCitEYXR1bQorVFJJ X0ZLZXlfbm9hY3Rpb25fdXBkKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJLyogQ2hlY2sgdGhh dCB0aGlzIGlzIGEgdmFsaWQgdHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBl dmVudC4gKi8KKwlyaV9DaGVja1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfbm9hY3Rpb25f dXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBSRVNU UklDVC9ERUxFVEUgY2FzZXMuICovCisJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0 YSAqKSBmY2luZm8tPmNvbnRleHQsIHRydWUpOworfQorCisvKgorICogVFJJX0ZLZXlfcmVz dHJpY3RfdXBkIC0KKyAqCisgKiBSZXN0cmljdCB1cGRhdGUgb2YgUEsgdG8gcm93cyB1bnJl ZmVyZW5jZWQgYnkgZm9yZWlnbiBrZXkuCisgKgorICogVGhlIFNRTCBzdGFuZGFyZCBpbnRl bmRzIHRoYXQgdGhpcyByZWZlcmVudGlhbCBhY3Rpb24gb2NjdXIgZXhhY3RseSB3aGVuCisg KiB0aGUgdXBkYXRlIGlzIHBlcmZvcm1lZCwgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGlzIGFw cGVhcnMgdG8gYmUKKyAqIHRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiAiTk8gQUNUSU9O IiBhbmQgIlJFU1RSSUNUIi4gIEluIFBvc3RncmVzCisgKiB3ZSBzdGlsbCBpbXBsZW1lbnQg dGhpcyBhcyBhbiBBRlRFUiB0cmlnZ2VyLCBidXQgaXQncyBub24tZGVmZXJyYWJsZS4KKyAq LworRGF0dW0KK1RSSV9GS2V5X3Jlc3RyaWN0X3VwZChQR19GVU5DVElPTl9BUkdTKQorewor CS8qIENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmln aHQgdGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9G S2V5X3Jlc3RyaWN0X3VwZCIsIFJJX1RSSUdUWVBFX1VQREFURSk7CisKKwkvKiBTaGFyZSBj b2RlIHdpdGggTk8gQUNUSU9OL0RFTEVURSBjYXNlcy4gKi8KKwlyZXR1cm4gcmlfcmVzdHJp Y3QoKFRyaWdnZXJEYXRhICopIGZjaW5mby0+Y29udGV4dCwgZmFsc2UpOworfQogCiAvKgog ICogUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQgLQpAQCAtMTI0MSw3ICsxNDM0LDcg QEAgUklfRktleV9wa191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dlciAqdHJpZ2dlciwgUmVs YXRpb24gcGtfcmVsLAogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBJZiBhbGwgb2xkIGFuZCBu ZXcga2V5IHZhbHVlcyBhcmUgZXF1YWwsIG5vIGNoZWNrIGlzIG5lZWRlZCAqLwotCWlmIChu ZXdzbG90ICYmIHJpX0tleXNFcXVhbChwa19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5m bywgdHJ1ZSkpCisJaWYgKG5ld3Nsb3QgJiYgcmlfS2V5c1N0YWJsZShwa19yZWwsIG9sZHNs b3QsIG5ld3Nsb3QsIHJpaW5mbywgdHJ1ZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIEVs c2Ugd2UgbmVlZCB0byBmaXJlIHRoZSB0cmlnZ2VyLiAqLwpAQCAtMTM0MCw3ICsxNTMzLDcg QEAgUklfRktleV9ma191cGRfY2hlY2tfcmVxdWlyZWQoVHJpZ2dlciAqdHJpZ2dlciwgUmVs YXRpb24gZmtfcmVsLAogCQlyZXR1cm4gdHJ1ZTsKIAogCS8qIElmIGFsbCBvbGQgYW5kIG5l dyBrZXkgdmFsdWVzIGFyZSBlcXVhbCwgbm8gY2hlY2sgaXMgbmVlZGVkICovCi0JaWYgKHJp X0tleXNFcXVhbChma19yZWwsIG9sZHNsb3QsIG5ld3Nsb3QsIHJpaW5mbywgZmFsc2UpKQor CWlmIChyaV9LZXlzU3RhYmxlKGZrX3JlbCwgb2xkc2xvdCwgbmV3c2xvdCwgcmlpbmZvLCBm YWxzZSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIEVsc2Ugd2UgbmVlZCB0byBmaXJlIHRo ZSB0cmlnZ2VyLiAqLwpAQCAtMTQ4OCwxNSArMTY4MSwxNyBAQCBSSV9Jbml0aWFsX0NoZWNr KFRyaWdnZXIgKnRyaWdnZXIsIFJlbGF0aW9uIGZrX3JlbCwgUmVsYXRpb24gcGtfcmVsKQog CXNlcCA9ICIoIjsKIAlmb3IgKGludCBpID0gMDsgaSA8IHJpaW5mby0+bmtleXM7IGkrKykK IAl7Ci0JCU9pZAkJCXBrX3R5cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0 dG51bXNbaV0pOwotCQlPaWQJCQlma190eXBlID0gUklBdHRUeXBlKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW2ldKTsKLQkJT2lkCQkJcGtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKHBr X3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKLQkJT2lkCQkJZmtfY29sbCA9IFJJQXR0 Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJT2lkCXBrX3R5 cGUgPSBSSUF0dFR5cGUocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQlPaWQJ ZmtfdHlwZSA9IFJJQXR0VHlwZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisJ CU9pZAlwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQlPaWQJZmtfY29sbCA9IFJJQXR0Q29sbGF0aW9uKGZrX3JlbCwgcmlpbmZv LT5ma19hdHRudW1zW2ldKTsKIAogCQlxdW90ZU9uZU5hbWUocGthdHRuYW1lICsgMywKIAkJ CQkJIFJJQXR0TmFtZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tpXSkpOworCiAJCXF1 b3RlT25lTmFtZShma2F0dG5hbWUgKyAzLAogCQkJCQkgUklBdHROYW1lKGZrX3JlbCwgcmlp bmZvLT5ma19hdHRudW1zW2ldKSk7CisKIAkJcmlfR2VuZXJhdGVRdWFsKCZxdWVyeWJ1Ziwg c2VwLAogCQkJCQkJcGthdHRuYW1lLCBwa190eXBlLAogCQkJCQkJcmlpbmZvLT5wZl9lcV9v cHJzW2ldLApAQCAtMjEzNyw2ICsyMzMyLDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9p ZCBjb25zdHJhaW50T2lkKQogCXJpaW5mbyA9IChSSV9Db25zdHJhaW50SW5mbyAqKSBoYXNo X3NlYXJjaChyaV9jb25zdHJhaW50X2NhY2hlLAogCQkJCQkJCQkJCQkgICAmY29uc3RyYWlu dE9pZCwKIAkJCQkJCQkJCQkJICAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwogCWlmICghZm91 bmQpCiAJCXJpaW5mby0+dmFsaWQgPSBmYWxzZTsKIAllbHNlIGlmIChyaWluZm8tPnZhbGlk KQpAQCAtMjE3MSw2ICsyMzY3LDcgQEAgcmlfTG9hZENvbnN0cmFpbnRJbmZvKE9pZCBjb25z dHJhaW50T2lkKQogCXJpaW5mby0+Y29uZnVwZHR5cGUgPSBjb25Gb3JtLT5jb25mdXBkdHlw ZTsKIAlyaWluZm8tPmNvbmZkZWx0eXBlID0gY29uRm9ybS0+Y29uZmRlbHR5cGU7CiAJcmlp bmZvLT5jb25mbWF0Y2h0eXBlID0gY29uRm9ybS0+Y29uZm1hdGNodHlwZTsKKwlyaWluZm8t PnRlbXBvcmFsID0gY29uRm9ybS0+Y29udGVtcG9yYWw7CiAKIAlEZWNvbnN0cnVjdEZrQ29u c3RyYWludFJvdyh0dXAsCiAJCQkJCQkJICAgJnJpaW5mby0+bmtleXMsCkBAIC0yNzkxLDkg KzI5ODgsMTIgQEAgcmlfSGFzaFByZXBhcmVkUGxhbihSSV9RdWVyeUtleSAqa2V5LCBTUElQ bGFuUHRyIHBsYW4pCiAKIAogLyoKLSAqIHJpX0tleXNFcXVhbCAtCisgKiByaV9LZXlzU3Rh YmxlIC0KICAqCi0gKiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBh cmUgZXF1YWwuCisgKiBDaGVjayBpZiBhbGwga2V5IHZhbHVlcyBpbiBPTEQgYW5kIE5FVyBh cmUgImVxdWl2YWxlbnQiOgorICogRm9yIG5vcm1hbCBGS3Mgd2UgY2hlY2sgZm9yIGVxdWFs aXR5LgorICogRm9yIHRlbXBvcmFsIEZLcyB3ZSBjaGVjayB0aGF0IHRoZSBQSyBzaWRlIGlz IGEgc3VwZXJzZXQgb2YgaXRzIG9sZCB2YWx1ZSwKKyAqIG9yIHRoZSBGSyBzaWRlIGlzIGEg c3Vic2V0LgogICoKICAqIE5vdGU6IGF0IHNvbWUgcG9pbnQgd2UgbWlnaHQgd2lzaCB0byBy ZWRlZmluZSB0aGlzIGFzIGNoZWNraW5nIGZvcgogICogIklTIE5PVCBESVNUSU5DVCIgcmF0 aGVyIHRoYW4gIj0iLCB0aGF0IGlzLCBhbGxvdyB0d28gbnVsbHMgdG8gYmUKQEAgLTI4MDEs NyArMzAwMSw3IEBAIHJpX0hhc2hQcmVwYXJlZFBsYW4oUklfUXVlcnlLZXkgKmtleSwgU1BJ UGxhblB0ciBwbGFuKQogICogcHJldmlvdXNseSBmb3VuZCBhdCBsZWFzdCBvbmUgb2YgdGhl IHJvd3MgdG8gY29udGFpbiBubyBudWxscy4KICAqLwogc3RhdGljIGJvb2wKLXJpX0tleXNF cXVhbChSZWxhdGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxl U2xvdCAqbmV3c2xvdCwKK3JpX0tleXNTdGFibGUoUmVsYXRpb24gcmVsLCBUdXBsZVRhYmxl U2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCiAJCQkgY29uc3QgUklf Q29uc3RyYWludEluZm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGspCiB7CiAJY29uc3QgaW50 MTYgKmF0dG51bXM7CkBAIC0yODM0LDM1ICszMDM0LDg2IEBAIHJpX0tleXNFcXVhbChSZWxh dGlvbiByZWwsIFR1cGxlVGFibGVTbG90ICpvbGRzbG90LCBUdXBsZVRhYmxlU2xvdCAqbmV3 c2xvdCwKIAogCQlpZiAocmVsX2lzX3BrKQogCQl7Ci0JCQkvKgotCQkJICogSWYgd2UgYXJl IGxvb2tpbmcgYXQgdGhlIFBLIHRhYmxlLCB0aGVuIGRvIGEgYnl0ZXdpc2UKLQkJCSAqIGNv bXBhcmlzb24uICBXZSBtdXN0IHByb3BhZ2F0ZSBQSyBjaGFuZ2VzIGlmIHRoZSB2YWx1ZSBp cwotCQkJICogY2hhbmdlZCB0byBvbmUgdGhhdCAibG9va3MiIGRpZmZlcmVudCBidXQgd291 bGQgY29tcGFyZSBhcwotCQkJICogZXF1YWwgdXNpbmcgdGhlIGVxdWFsaXR5IG9wZXJhdG9y LiAgVGhpcyBvbmx5IG1ha2VzIGEKLQkJCSAqIGRpZmZlcmVuY2UgZm9yIE9OIFVQREFURSBD QVNDQURFLCBidXQgZm9yIGNvbnNpc3RlbmN5IHdlIHRyZWF0Ci0JCQkgKiBhbGwgY2hhbmdl cyB0byB0aGUgUEsgdGhlIHNhbWUuCi0JCQkgKi8KLQkJCUZvcm1fcGdfYXR0cmlidXRlIGF0 dCA9IFR1cGxlRGVzY0F0dHIob2xkc2xvdC0+dHRzX3R1cGxlRGVzY3JpcHRvciwgYXR0bnVt c1tpXSAtIDEpOworCQkJaWYgKHJpaW5mby0+dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5r ZXlzIC0gMSkKKwkJCXsKKwkJCQlpZiAocmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKHRy dWUsIG9sZHZhbHVlLCBuZXd2YWx1ZSkpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQkvKgorCQkJCSAqIElmIHdlIGFyZSBsb29raW5nIGF0IHRoZSBQ SyB0YWJsZSwgdGhlbiBkbyBhIGJ5dGV3aXNlCisJCQkJICogY29tcGFyaXNvbi4gIFdlIG11 c3QgcHJvcGFnYXRlIFBLIGNoYW5nZXMgaWYgdGhlIHZhbHVlIGlzCisJCQkJICogY2hhbmdl ZCB0byBvbmUgdGhhdCAibG9va3MiIGRpZmZlcmVudCBidXQgd291bGQgY29tcGFyZSBhcwor CQkJCSAqIGVxdWFsIHVzaW5nIHRoZSBlcXVhbGl0eSBvcGVyYXRvci4gIFRoaXMgb25seSBt YWtlcyBhCisJCQkJICogZGlmZmVyZW5jZSBmb3IgT04gVVBEQVRFIENBU0NBREUsIGJ1dCBm b3IgY29uc2lzdGVuY3kgd2UgdHJlYXQKKwkJCQkgKiBhbGwgY2hhbmdlcyB0byB0aGUgUEsg dGhlIHNhbWUuCisJCQkJICovCisJCQkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVE ZXNjQXR0cihvbGRzbG90LT50dHNfdHVwbGVEZXNjcmlwdG9yLCBhdHRudW1zW2ldIC0gMSk7 CiAKLQkJCWlmICghZGF0dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0 dGJ5dmFsLCBhdHQtPmF0dGxlbikpCi0JCQkJcmV0dXJuIGZhbHNlOworCQkJCWlmICghZGF0 dW1faW1hZ2VfZXEob2xkdmFsdWUsIG5ld3ZhbHVlLCBhdHQtPmF0dGJ5dmFsLCBhdHQtPmF0 dGxlbikpCisJCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KIAkJfQogCQllbHNlCiAJCXsKLQkJ CS8qCi0JCQkgKiBGb3IgdGhlIEZLIHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFwcHJvcHJp YXRlIGVxdWFsaXR5Ci0JCQkgKiBvcGVyYXRvci4gIENoYW5nZXMgdGhhdCBjb21wYXJlIGVx dWFsIHdpbGwgc3RpbGwgc2F0aXNmeSB0aGUKLQkJCSAqIGNvbnN0cmFpbnQgYWZ0ZXIgdGhl IHVwZGF0ZS4KLQkJCSAqLwotCQkJaWYgKCFyaV9BdHRyaWJ1dGVzRXF1YWwocmlpbmZvLT5m Zl9lcV9vcHJzW2ldLCBSSUF0dFR5cGUocmVsLCBhdHRudW1zW2ldKSwKLQkJCQkJCQkJCW9s ZHZhbHVlLCBuZXd2YWx1ZSkpCi0JCQkJcmV0dXJuIGZhbHNlOworCQkJaWYgKHJpaW5mby0+ dGVtcG9yYWwgJiYgaSA9PSByaWluZm8tPm5rZXlzIC0gMSkKKwkJCXsKKwkJCQlpZiAocmlf UmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGZhbHNlLCBvbGR2YWx1ZSwgbmV3dmFsdWUpKQor CQkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyoKKwkJCQkg KiBGb3IgdGhlIEZLIHRhYmxlLCBjb21wYXJlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGVxdWFs aXR5CisJCQkJICogb3BlcmF0b3IuICBDaGFuZ2VzIHRoYXQgY29tcGFyZSBlcXVhbCB3aWxs IHN0aWxsIHNhdGlzZnkgdGhlCisJCQkJICogY29uc3RyYWludCBhZnRlciB0aGUgdXBkYXRl LgorCQkJCSAqLworCQkJCWlmICghcmlfQXR0cmlidXRlc0VxdWFsKHJpaW5mby0+ZmZfZXFf b3Byc1tpXSwgUklBdHRUeXBlKHJlbCwgYXR0bnVtc1tpXSksCisJCQkJCQkJCQkJb2xkdmFs dWUsIG5ld3ZhbHVlKSkKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJfQogCQl9CiAJfQogCiAJ cmV0dXJuIHRydWU7CiB9CiAKKy8qCisgKiByaV9SYW5nZUF0dHJpYnV0ZU5lZWRzQ2hlY2sg LQorICoKKyAqIENvbXBhcmUgb2xkIGFuZCBuZXcgdmFsdWVzLCBhbmQgcmV0dXJuIHRydWUg aWYgd2UgbmVlZCB0byBjaGVjayB0aGUgRksuCisgKgorICogTkI6IHdlIGhhdmUgYWxyZWFk eSBjaGVja2VkIHRoYXQgbmVpdGhlciB2YWx1ZSBpcyBudWxsLgorICovCitzdGF0aWMgYm9v bAorcmlfUmFuZ2VBdHRyaWJ1dGVOZWVkc0NoZWNrKGJvb2wgcmVsX2lzX3BrLCBEYXR1bSBv bGR2YWx1ZSwgRGF0dW0gbmV3dmFsdWUpCit7CisJUmFuZ2VUeXBlICpvbGRyYW5nZSwgKm5l d3JhbmdlOworCU9pZCBvbGRybmd0eXBlLCBuZXdybmd0eXBlOworCVR5cGVDYWNoZUVudHJ5 ICp0eXBjYWNoZTsKKworCW9sZHJhbmdlID0gRGF0dW1HZXRSYW5nZVR5cGVQKG9sZHZhbHVl KTsKKwluZXdyYW5nZSA9IERhdHVtR2V0UmFuZ2VUeXBlUChuZXd2YWx1ZSk7CisJb2xkcm5n dHlwZSA9IFJhbmdlVHlwZUdldE9pZChvbGRyYW5nZSk7CisJbmV3cm5ndHlwZSA9IFJhbmdl VHlwZUdldE9pZChuZXdyYW5nZSk7CisKKwlpZiAob2xkcm5ndHlwZSAhPSBuZXdybmd0eXBl KQorCQllbG9nKEVSUk9SLCAicmFuZ2UgdHlwZXMgYXJlIGluY29uc2lzdGVudCIpOworCisJ dHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShvbGRybmd0eXBlLCBUWVBFQ0FDSEVfUkFO R0VfSU5GTyk7CisJaWYgKHR5cGNhY2hlLT5ybmdlbGVtdHlwZSA9PSBOVUxMKQorCQllbG9n KEVSUk9SLCAidHlwZSAldSBpcyBub3QgYSByYW5nZSB0eXBlIiwgb2xkcm5ndHlwZSk7CisK KwlpZiAocmVsX2lzX3BrKQorCQkvKiBJZiB0aGUgUEsncyByYW5nZSBzaHJ1bmssIGEgY29u ZmxpY3QgaXMgcG9zc2libGUuICovCisJCXJldHVybiAhcmFuZ2VfZXFfaW50ZXJuYWwodHlw Y2FjaGUsIG9sZHJhbmdlLCBuZXdyYW5nZSkgJiYKKwkJCSFyYW5nZV9jb250YWluc19pbnRl cm5hbCh0eXBjYWNoZSwgbmV3cmFuZ2UsIG9sZHJhbmdlKTsKKwllbHNlCisJCS8qIElmIHRo ZSBGSydzIHJhbmdlIGdyZXcsIGEgY29uZmxpY3QgaXMgcG9zc2libGUuICovCisJCXJldHVy biAhcmFuZ2VfZXFfaW50ZXJuYWwodHlwY2FjaGUsIG9sZHJhbmdlLCBuZXdyYW5nZSkgJiYK KwkJCXJhbmdlX2NvbnRhaW5zX2ludGVybmFsKHR5cGNhY2hlLCBuZXdyYW5nZSwgb2xkcmFu Z2UpOworfQogCiAvKgogICogcmlfQXR0cmlidXRlc0VxdWFsIC0KQEAgLTMwMjEsMTAgKzMy NzIsMTYgQEAgUklfRktleV90cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAkJY2FzZSBGX1JJ X0ZLRVlfU0VUREVGQVVMVF9VUEQ6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX0RFTDoK IAkJY2FzZSBGX1JJX0ZLRVlfTk9BQ1RJT05fVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlfUkVT VFJJQ1RfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfUkVTVFJJQ1RfVVBEOgorCQljYXNlIEZf VFJJX0ZLRVlfTk9BQ1RJT05fREVMOgorCQljYXNlIEZfVFJJX0ZLRVlfTk9BQ1RJT05fVVBE OgogCQkJcmV0dXJuIFJJX1RSSUdHRVJfUEs7CiAKIAkJY2FzZSBGX1JJX0ZLRVlfQ0hFQ0tf SU5TOgogCQljYXNlIEZfUklfRktFWV9DSEVDS19VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9D SEVDS19JTlM6CisJCWNhc2UgRl9UUklfRktFWV9DSEVDS19VUEQ6CiAJCQlyZXR1cm4gUklf VFJJR0dFUl9GSzsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCA3 NzhkM2UwMzM0Li4xZGI1ZWQ1NTdiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5j CkBAIC0zMzksNyArMzM5LDcgQEAgc3RhdGljIGNoYXIgKnBnX2dldF92aWV3ZGVmX3dvcmtl cihPaWQgdmlld29pZCwKIAkJCQkJCQkJICAgaW50IHByZXR0eUZsYWdzLCBpbnQgd3JhcENv bHVtbik7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X3RyaWdnZXJkZWZfd29ya2VyKE9pZCB0cmln aWQsIGJvb2wgcHJldHR5KTsKIHN0YXRpYyBpbnQJZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheShEYXR1bSBjb2x1bW5faW5kZXhfYXJyYXksIE9pZCByZWxJZCwgT2lkIGluZGV4SWQs Ci0JCQkJCQkJCQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBTdHJpbmdJbmZvIGJ1Zik7CisJ CQkJCQkJCQkJIGJvb2wgd2l0aG91dE92ZXJsYXBzLCBib29sIHdpdGhQZXJpb2QsIFN0cmlu Z0luZm8gYnVmKTsKIHN0YXRpYyBjaGFyICpwZ19nZXRfcnVsZWRlZl93b3JrZXIoT2lkIHJ1 bGVvaWQsIGludCBwcmV0dHlGbGFncyk7CiBzdGF0aWMgY2hhciAqcGdfZ2V0X2luZGV4ZGVm X3dvcmtlcihPaWQgaW5kZXhyZWxpZCwgaW50IGNvbG5vLAogCQkJCQkJCQkJY29uc3QgT2lk ICpleGNsdWRlT3BzLApAQCAtMjI0Nyw3ICsyMjQ3LDEwIEBAIHBnX2dldF9jb25zdHJhaW50 ZGVmX3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCXZh bCA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoQ09OU1RST0lELCB0dXAsCiAJCQkJCQkJCQkJ CSBBbnVtX3BnX2NvbnN0cmFpbnRfY29ua2V5KTsKIAotCQkJCWRlY29tcGlsZV9jb2x1bW5f aW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgY29uRm9ybS0+Y29uaW5kaWQs IGZhbHNlLCAmYnVmKTsKKwkJCQkvKiBJZiBpdCBpcyBhIHRlbXBvcmFsIGZvcmVpZ24ga2V5 IHRoZW4gaXQgdXNlcyBQRVJJT0QuICovCisJCQkJZGVjb21waWxlX2NvbHVtbl9pbmRleF9h cnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLAorCQkJCQkJCQkJCQkgY29uRm9ybS0+Y29u aW5kaWQsIGZhbHNlLAorCQkJCQkJCQkJCQkgY29uRm9ybS0+Y29udGVtcG9yYWwsICZidWYp OwogCiAJCQkJLyogYWRkIGZvcmVpZ24gcmVsYXRpb24gbmFtZSAqLwogCQkJCWFwcGVuZFN0 cmluZ0luZm8oJmJ1ZiwgIikgUkVGRVJFTkNFUyAlcygiLApAQCAtMjI1OCw3ICsyMjYxLDkg QEAgcGdfZ2V0X2NvbnN0cmFpbnRkZWZfd29ya2VyKE9pZCBjb25zdHJhaW50SWQsIGJvb2wg ZnVsbENvbW1hbmQsCiAJCQkJdmFsID0gU3lzQ2FjaGVHZXRBdHRyTm90TnVsbChDT05TVFJP SUQsIHR1cCwKIAkJCQkJCQkJCQkJIEFudW1fcGdfY29uc3RyYWludF9jb25ma2V5KTsKIAot CQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhfYXJyYXkodmFsLCBjb25Gb3JtLT5jb25mcmVs aWQsIGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwgJmJ1Zik7CisJCQkJZGVjb21waWxlX2Nv bHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbmZyZWxpZCwKKwkJCQkJCQkJCQkJ IGNvbkZvcm0tPmNvbmluZGlkLCBmYWxzZSwKKwkJCQkJCQkJCQkJIGNvbkZvcm0tPmNvbnRl bXBvcmFsLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZidWYsICcpJyk7 CiAKQEAgLTIzNDQsNyArMjM0OSw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihP aWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCWlmICghaXNudWxsKQog CQkJCXsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZygmYnVmLCAiICgiKTsKLQkJCQkJ ZGVjb21waWxlX2NvbHVtbl9pbmRleF9hcnJheSh2YWwsIGNvbkZvcm0tPmNvbnJlbGlkLCBJ bnZhbGlkT2lkLCBmYWxzZSwgJmJ1Zik7CisJCQkJCWRlY29tcGlsZV9jb2x1bW5faW5kZXhf YXJyYXkodmFsLCBjb25Gb3JtLT5jb25yZWxpZCwgSW52YWxpZE9pZCwgZmFsc2UsIGZhbHNl LCAmYnVmKTsKIAkJCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJmJ1ZiwgJyknKTsKIAkJCQl9 CiAKQEAgLTIzODcsNyArMjM5Miw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVmX3dvcmtlcihP aWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogCQkJCWluZGV4SWQgPSBjb25G b3JtLT5jb25pbmRpZDsKIAkJCQlTeXNDYWNoZUdldEF0dHIoQ09OU1RST0lELCB0dXAsCiAJ CQkJCQkgIEFudW1fcGdfY29uc3RyYWludF9jb25leGNsb3AsICZpc251bGwpOwotCQkJCWtl eWF0dHMgPSBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29u cmVsaWQsIGluZGV4SWQsICFpc251bGwsICZidWYpOworCQkJCWtleWF0dHMgPSBkZWNvbXBp bGVfY29sdW1uX2luZGV4X2FycmF5KHZhbCwgY29uRm9ybS0+Y29ucmVsaWQsIGluZGV4SWQs ICFpc251bGwsIGZhbHNlLCAmYnVmKTsKIAogCQkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZi dWYsICcpJyk7CiAKQEAgLTI1ODMsNyArMjU4OCw3IEBAIHBnX2dldF9jb25zdHJhaW50ZGVm X3dvcmtlcihPaWQgY29uc3RyYWludElkLCBib29sIGZ1bGxDb21tYW5kLAogICovCiBzdGF0 aWMgaW50CiBkZWNvbXBpbGVfY29sdW1uX2luZGV4X2FycmF5KERhdHVtIGNvbHVtbl9pbmRl eF9hcnJheSwgT2lkIHJlbElkLCBPaWQgaW5kZXhJZCwKLQkJCQkJCQkgYm9vbCB3aXRob3V0 T3ZlcmxhcHMsIFN0cmluZ0luZm8gYnVmKQorCQkJCQkJCSBib29sIHdpdGhvdXRPdmVybGFw cywgYm9vbCB3aXRoUGVyaW9kLCBTdHJpbmdJbmZvIGJ1ZikKIHsKIAlEYXR1bQkgICAqa2V5 czsKIAlpbnQJCQluS2V5czsKQEAgLTI2MDQsNiArMjYwOSw4IEBAIGRlY29tcGlsZV9jb2x1 bW5faW5kZXhfYXJyYXkoRGF0dW0gY29sdW1uX2luZGV4X2FycmF5LCBPaWQgcmVsSWQsIE9p ZCBpbmRleElkLAogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50 aWZpZXIoY29sTmFtZSkpOwogCQllbHNlIGlmICh3aXRob3V0T3ZlcmxhcHMgJiYgaiA9PSBu S2V5cyAtIDEpCiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMgV0lUSE9VVCBPVkVS TEFQUyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOworCQllbHNlIGlmICh3aXRoUGVy aW9kICYmIGogPT0gbktleXMgLSAxKQorCQkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICIsIFBF UklPRCAlcyIsIHF1b3RlX2lkZW50aWZpZXIoY29sTmFtZSkpOwogCQllbHNlCiAJCQlhcHBl bmRTdHJpbmdJbmZvKGJ1ZiwgIiwgJXMiLCBxdW90ZV9pZGVudGlmaWVyKGNvbE5hbWUpKTsK IAl9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCBi L3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCmluZGV4IDc4NmE5Y2E5MDQu LjdjYTA1MzRiNDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3Ry YWludC5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfY29uc3RyYWludC5oCkBAIC0x MjcsMTkgKzEyNywxOSBAQCBDQVRBTE9HKHBnX2NvbnN0cmFpbnQsMjYwNixDb25zdHJhaW50 UmVsYXRpb25JZCkKIAlpbnQxNgkJY29uZmtleVsxXTsKIAogCS8qCi0JICogSWYgYSBmb3Jl aWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIFBLID0gRksgZXF1YWxpdHkgb3BlcmF0b3JzIGZv ciBlYWNoCisJICogSWYgYSBmb3JlaWduIGtleSwgdGhlIE9JRHMgb2YgdGhlIFBLID0gRksg Y29tcGFyaXNvbiBvcGVyYXRvcnMgZm9yIGVhY2gKIAkgKiBjb2x1bW4gb2YgdGhlIGNvbnN0 cmFpbnQKIAkgKi8KIAlPaWQJCQljb25wZmVxb3BbMV0gQktJX0xPT0tVUChwZ19vcGVyYXRv cik7CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBQSyA9 IFBLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElmIGEgZm9yZWlnbiBrZXks IHRoZSBPSURzIG9mIHRoZSBQSyA9IFBLIGNvbXBhcmlzb24gb3BlcmF0b3JzIGZvciBlYWNo CiAJICogY29sdW1uIG9mIHRoZSBjb25zdHJhaW50IChpLmUuLCBlcXVhbGl0eSBmb3IgdGhl IHJlZmVyZW5jZWQgY29sdW1ucykKIAkgKi8KIAlPaWQJCQljb25wcGVxb3BbMV0gQktJX0xP T0tVUChwZ19vcGVyYXRvcik7CiAKIAkvKgotCSAqIElmIGEgZm9yZWlnbiBrZXksIHRoZSBP SURzIG9mIHRoZSBGSyA9IEZLIGVxdWFsaXR5IG9wZXJhdG9ycyBmb3IgZWFjaAorCSAqIElm IGEgZm9yZWlnbiBrZXksIHRoZSBPSURzIG9mIHRoZSBGSyA9IEZLIGNvbXBhcmlzb24gb3Bl cmF0b3JzIGZvciBlYWNoCiAJICogY29sdW1uIG9mIHRoZSBjb25zdHJhaW50IChpLmUuLCBl cXVhbGl0eSBmb3IgdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMpCiAJICovCiAJT2lkCQkJY29u ZmZlcW9wWzFdIEJLSV9MT09LVVAocGdfb3BlcmF0b3IpOwpAQCAtMTgwLDcgKzE4MCw3IEBA IERFQ0xBUkVfSU5ERVgocGdfY29uc3RyYWludF9jb25wYXJlbnRpZF9pbmRleCwgMjU3OSwg Q29uc3RyYWludFBhcmVudEluZGV4SWQsIHBnCiAKIC8qIGNvbmtleSBjYW4gY29udGFpbiB6 ZXJvIChJbnZhbGlkQXR0ck51bWJlcikgaWYgYSB3aG9sZS1yb3cgVmFyIGlzIHVzZWQgKi8K IERFQ0xBUkVfQVJSQVlfRk9SRUlHTl9LRVlfT1BUKChjb25yZWxpZCwgY29ua2V5KSwgcGdf YXR0cmlidXRlLCAoYXR0cmVsaWQsIGF0dG51bSkpOwotREVDTEFSRV9BUlJBWV9GT1JFSUdO X0tFWSgoY29uZnJlbGlkLCBjb25ma2V5KSwgcGdfYXR0cmlidXRlLCAoYXR0cmVsaWQsIGF0 dG51bSkpOworREVDTEFSRV9BUlJBWV9GT1JFSUdOX0tFWV9PUFQoKGNvbmZyZWxpZCwgY29u ZmtleSksIHBnX2F0dHJpYnV0ZSwgKGF0dHJlbGlkLCBhdHRudW0pKTsKIAogI2lmZGVmIEVY UE9TRV9UT19DTElFTlRfQ09ERQogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCA5 ODA1YmM2MTE4Li4zMTMyNDY4YTljIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAg LTM5NDIsNiArMzk0MiwzMCBAQAogICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJn dHlwZXMgPT4gJycsCiAgIHByb3NyYyA9PiAnUklfRktleV9ub2FjdGlvbl91cGQnIH0sCiAK KyMgVGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IGNvbnN0cmFpbnQgdHJpZ2dlcnMK K3sgb2lkID0+ICc2MTIyJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVn cml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25hbWUgPT4gJ1RSSV9G S2V5X2NoZWNrX2lucycsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJp Z2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNr X2lucycgfSwKK3sgb2lkID0+ICc2MTIzJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50 aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4gUkVGRVJFTkNFUycsCisgIHByb25hbWUg PT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlw ZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9G S2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2MTI2JywgZGVzY3IgPT4gJ3RlbXBvcmFs IHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgUkVTVFJJQ1QnLAorICBwcm9uYW1l ID0+ICdUUklfRktleV9yZXN0cmljdF9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCisgIHBy b3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ ICdUUklfRktleV9yZXN0cmljdF9kZWwnIH0sCit7IG9pZCA9PiAnNjEyNycsIGRlc2NyID0+ ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gVVBEQVRFIFJFU1RSSUNUJywK KyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJywgcHJvdm9sYXRpbGUgPT4g J3YnLAorICBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywgcHJvYXJndHlwZXMgPT4gJycsCisg IHByb3NyYyA9PiAnVFJJX0ZLZXlfcmVzdHJpY3RfdXBkJyB9LAoreyBvaWQgPT4gJzYxMzIn LCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBO TyBBQ1RJT04nLAorICBwcm9uYW1lID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92 b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBl cyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnIH0sCit7IG9p ZCA9PiAnNjEzMycsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkg T04gVVBEQVRFIE5PIEFDVElPTicsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X25vYWN0aW9u X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcics IHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X25vYWN0aW9uX3Vw ZCcgfSwKKwogeyBvaWQgPT4gJzE2NjYnLAogICBwcm9uYW1lID0+ICd2YXJiaXRlcScsIHBy b2xlYWtwcm9vZiA9PiAndCcsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAogICBwcm9hcmd0eXBl cyA9PiAndmFyYml0IHZhcmJpdCcsIHByb3NyYyA9PiAnYml0ZXEnIH0sCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmgKaW5kZXggMDc0N2I1NGIyNi4uNDc5YjVmZmEzNSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaApAQCAtMjYzMiw3ICsyNjMyLDkgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29u c3RyYWludAogCS8qIEZpZWxkcyB1c2VkIGZvciBGT1JFSUdOIEtFWSBjb25zdHJhaW50czog Ki8KIAlSYW5nZVZhciAgICpwa3RhYmxlOwkJLyogUHJpbWFyeSBrZXkgdGFibGUgKi8KIAlM aXN0CSAgICpma19hdHRyczsJCS8qIEF0dHJpYnV0ZXMgb2YgZm9yZWlnbiBrZXkgKi8KKwlO b2RlCSAgICpma19wZXJpb2Q7CQkvKiBTdHJpbmcgbm9kZSBuYW1pbmcgUGVyaW9kIG9yIHJh bmdlIGNvbHVtbiAqLwogCUxpc3QJICAgKnBrX2F0dHJzOwkJLyogQ29ycmVzcG9uZGluZyBh dHRycyBpbiBQSyB0YWJsZSAqLworCU5vZGUJICAgKnBrX3BlcmlvZDsJCS8qIFN0cmluZyBu b2RlIG5hbWluZyBQZXJpb2Qgb3IgcmFuZ2UgY29sdW1uICovCiAJY2hhcgkJZmtfbWF0Y2h0 eXBlOwkvKiBGVUxMLCBQQVJUSUFMLCBTSU1QTEUgKi8KIAljaGFyCQlma191cGRfYWN0aW9u OwkvKiBPTiBVUERBVEUgYWN0aW9uICovCiAJY2hhcgkJZmtfZGVsX2FjdGlvbjsJLyogT04g REVMRVRFIGFjdGlvbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDU5ODRkY2ZhNGIuLmNj ZjViZjhhYTYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaAorKysg Yi9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKQEAgLTMyNiw2ICszMjYsNyBAQCBQR19L RVlXT1JEKCJwYXJ0aWFsIiwgUEFSVElBTCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lORywgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQiLCBQ QVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQorUEdfS0VZV09SRCgi cGVyaW9kIiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZ V09SRCgicGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv d2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhv dXRfb3ZlcmxhcHMub3V0CmluZGV4IDVlMTI2ZGYwNzEuLmUwYzM3YWM2MDEgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysr IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAt MzU3LDMgKzM1Nyw0NTAgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JERVIgQlkgaWQsIHZhbGlk X2F0OwogKDEgcm93KQogCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOworLS0K Ky0tIHRlc3QgRksgZGVwZW5kZW5jaWVzCistLQorLS0gY2FuJ3QgZHJvcCBhIHJhbmdlIHJl ZmVyZW5jZWQgYnkgYW4gRkssIHVubGVzcyB3aXRoIENBU0NBREUKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbDMgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNU UkFJTlQgdGVtcG9yYWwzX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBP VkVSTEFQUykKKyk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQg aW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwK KwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2 YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlS RUZFUkVOQ0VTIHRlbXBvcmFsMyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CitBTFRFUiBU QUJMRSB0ZW1wb3JhbDMgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitFUlJPUjogIGNhbm5vdCBk cm9wIGNvbHVtbiB2YWxpZF9hdCBvZiB0YWJsZSB0ZW1wb3JhbDMgYmVjYXVzZSBvdGhlciBv YmplY3RzIGRlcGVuZCBvbiBpdAorREVUQUlMOiAgY29uc3RyYWludCB0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIG9uIHRhYmxlIHRlbXBvcmFsX2ZrX3JuZzJybmcgZGVwZW5kcyBvbiBjb2x1 bW4gdmFsaWRfYXQgb2YgdGFibGUgdGVtcG9yYWwzCitISU5UOiAgVXNlIERST1AgLi4uIENB U0NBREUgdG8gZHJvcCB0aGUgZGVwZW5kZW50IG9iamVjdHMgdG9vLgorQUxURVIgVEFCTEUg dGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9w IGNhc2NhZGVzIHRvIGNvbnN0cmFpbnQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBvbiB0YWJs ZSB0ZW1wb3JhbF9ma19ybmcycm5nCitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7 CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKy0tCistLSB0ZXN0IEZPUkVJR04gS0VZLCByYW5n ZSByZWZlcmVuY2VzIHJhbmdlCistLQorLS0gQ2FuJ3QgY3JlYXRlIGEgRksgd2l0aCBhIG1p c21hdGNoZWQgcmFuZ2UgdHlwZQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcg KAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBpbnQ0cmFuZ2UsCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsyIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrMiBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0 KQorKTsKK0VSUk9SOiAgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5n MnJuZ19mazIiIGNhbm5vdCBiZSBpbXBsZW1lbnRlZAorREVUQUlMOiAgS2V5IGNvbHVtbnMg InZhbGlkX2F0IiBhbmQgInZhbGlkX2F0IiBhcmUgb2YgaW5jb21wYXRpYmxlIHR5cGVzOiBp bnQ0cmFuZ2UgYW5kIHRzcmFuZ2UuCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lkIGlu dDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBL RVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlk X2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkK Kyk7CitEUk9QIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSB3aXRoIGluZmVycmVk IFBLIG9uIHRoZSByZWZlcmVuY2VkIHRhYmxlOgorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVu dF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBS SU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKyk7CitEUk9QIFRBQkxF IHRlbXBvcmFsX2ZrX3JuZzJybmc7CistLSBzaG91bGQgZmFpbCBiZWNhdXNlIG9mIGR1cGxp Y2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IHRzcmFuZ2UsCisJcGFyZW50X2lk IGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfcGsgUFJJTUFS WSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKSwKKwlDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBh cmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcgKGlkLCBQRVJJT0QgaWQpCisp OworRVJST1I6ICBmb3JlaWduIGtleSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdCBtdXN0IG5v dCBjb250YWluIGR1cGxpY2F0ZXMKKy0tCistLSB0ZXN0IEFMVEVSIFRBQkxFIEFERCBDT05T VFJBSU5UCistLQorQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAorCWlkIGlu dDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFs aWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CistLSB3aXRoIGluZmVycmVkIFBLIG9u IHRoZSByZWZlcmVuY2VkIHRhYmxlLCBhbmQgd3JvbmcgY29sdW1uIHR5cGU6CitBTFRFUiBU QUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2Zr X3JuZzJybmdfZmssCisJQUxURVIgQ09MVU1OIHZhbGlkX2F0IFRZUEUgZGF0ZXJhbmdlIFVT SU5HIGRhdGVyYW5nZShsb3dlcih2YWxpZF9hdCk6OmRhdGUsIHVwcGVyKHZhbGlkX2F0KTo6 ZGF0ZSk7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBF UklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKK0VSUk9SOiAgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgY2Fubm90IGJl IGltcGxlbWVudGVkCitERVRBSUw6ICBLZXkgY29sdW1ucyAidmFsaWRfYXQiIGFuZCAidmFs aWRfYXQiIGFyZSBvZiBpbmNvbXBhdGlibGUgdHlwZXM6IGRhdGVyYW5nZSBhbmQgdHNyYW5n ZS4KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBTFRFUiBDT0xVTU4gdmFs aWRfYXQgVFlQRSB0c3JhbmdlIFVTSU5HIHRzcmFuZ2UobG93ZXIodmFsaWRfYXQpLCB1cHBl cih2YWxpZF9hdCkpOworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0 YWJsZToKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0gc2hvdWxkIGZh aWwgYmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFC TEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3Ju ZzJybmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkK KwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CitFUlJPUjogIGZv cmVpZ24ga2V5IHJlZmVyZW5jZWQtY29sdW1ucyBsaXN0IG11c3Qgbm90IGNvbnRhaW4gZHVw bGljYXRlcworLS0KKy0tIHRlc3Qgd2l0aCByb3dzIGFscmVhZHkKKy0tCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ma19ybmcycm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElO VE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgt MDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFs X2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMg dGVtcG9yYWxfcm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9y YWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAn MjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVG RVJFTkNFUyB0ZW1wb3JhbF9ybmc7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwg dmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTdW4gQXBy IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFs X3JuZyIuCistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZzsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworLS0KKy0tIHRlc3QgcGdf Z2V0X2NvbnN0cmFpbnRkZWYKKy0tCitTRUxFQ1QgcGdfZ2V0X2NvbnN0cmFpbnRkZWYob2lk KSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF9jb25z dHJhaW50ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KSBSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyhpZCwgUEVSSU9EIHZhbGlk X2F0KQorKDEgcm93KQorCistLQorLS0gdGVzdCBGSyBjaGlsZCBpbnNlcnRzCistLQorSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDInLCAnMjAxOC0wMi0wMScpLCAnWzEsMV0nKTsKKy0tIHNob3VsZCBmYWls OgorSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMiwyXScsIHRz cmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEsMV0nKTsKK0VSUk9SOiAg aW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIgdmlvbGF0 ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIKK0RF VEFJTDogIEtleSAocGFyZW50X2lkLCB2YWxpZF9hdCk9KFsxLDIpLCBbIlR1ZSBKYW4gMDIg MDA6MDA6MDAgMjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBub3QgcHJl c2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcm5nIi4KKy0tIG5vdyBpdCBzaG91bGQgd29yazoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIw MTgtMDItMDMnLCAnMjAxOC0wMy0wMycpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQt MDEnKSwgJ1sxLDFdJyk7CistLQorLS0gdGVzdCBGSyBjaGlsZCB1cGRhdGVzCistLQorVVBE QVRFIHRlbXBvcmFsX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0w MS0wMicsICcyMDE4LTAzLTAxJykgV0hFUkUgaWQgPSAnWzEsMV0nOworLS0gc2hvdWxkIGZh aWw6CitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAxLTAyJywgJzIwMTgtMDUtMDEnKSBXSEVSRSBpZCA9ICdbMSwxXSc7CitFUlJP UjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciIHZp b2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsi CitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMSwyKSwgWyJUdWUgSmFu IDAyIDAwOjAwOjAwIDIwMTgiLCJUdWUgTWF5IDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMgbm90 IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCitVUERBVEUgdGVtcG9yYWxfZmtf cm5nMnJuZyBTRVQgcGFyZW50X2lkID0gJ1s4LDhdJyBXSEVSRSBpZCA9ICdbMSwxXSc7CitF UlJPUjogIGluc2VydCBvciB1cGRhdGUgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmci IHZpb2xhdGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsiCitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbOCw5KSwgWyJUdWUg SmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAwOjAwOjAwIDIwMTgiKSkgaXMg bm90IHByZXNlbnQgaW4gdGFibGUgInRlbXBvcmFsX3JuZyIuCistLQorLS0gdGVzdCBGSyBw YXJlbnQgdXBkYXRlcyBOTyBBQ1RJT04KKy0tCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2Nl ZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0n OworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJp YyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1Jywg JzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVm ZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgn MjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIuCistLSBjaGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CitVUERBVEUgdGVt cG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFs aWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3Jl aWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAi dGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUs NiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAy MDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5n MnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhl IHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5n MnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CistLSBjbGVhbiB1cDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XSc7CistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBSRVNU UklDVAorLS0KK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNU UkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2Zr X3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVt cG9yYWxfcm5nCisJT04gREVMRVRFIFJFU1RSSUNUOworLS0gYSBQSyB1cGRhdGUgdGhhdCBz dWNjZWVkcyBiZWNhdXNlIHRoZSBudW1lcmljIGlkIGlzbid0IHJlZmVyZW5jZWQ6CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKSk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIGEgUEsgdXBkYXRlIHRoYXQgc3VjY2VlZHMgZXZlbiB0aG91Z2ggdGhlIG51 bWVyaWMgaWQgaXMgcmVmZXJlbmNlZCBiZWNhdXNlIHRoZSByYW5nZSBpc24ndDoKK0RFTEVU RSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0w NScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAx OC0wMy0wMScpOworLS0gYSBQSyB1cGRhdGUgdGhhdCBmYWlscyBiZWNhdXNlIGJvdGggYXJl IHJlZmVyZW5jZWQ6CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9 KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciLgorLS0gY2hhbmdpbmcgdGhlIHNjYWxhciBwYXJ0IGZhaWxzOgorVVBEQVRF IHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3JuZyIgdmlvbGF0ZXMg Zm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJuZ19mayIgb24gdGFi bGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9 KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBGZWIgMDEgMDA6MDA6 MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX2Zr X3JuZzJybmciLgorLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5k IHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQg dmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUg aWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAx OC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMg Tk8gQUNUSU9OCistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9y YWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsK KwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNF UyB0ZW1wb3JhbF9ybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2Ug dGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7Cist LSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlk IGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIw MTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0n LCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0w NScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAx JywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBi b3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgt MDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxf cm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcy cm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAo aWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1 IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJs ZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5n IEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgorREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgUkVTVFJJQ1QKKy0tCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAxOC0wMi0wMScpKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XSc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRo ZSBudW1lcmljIGlkIGlzIHJlZmVyZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMTgtMDItMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFp bHMgYmVjYXVzZSBib3RoIGFyZSByZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSB0aGVuIGRlbGV0ZSB0 aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRz OgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0KKy0tIHRl c3QgT04gVVBEQVRFL0RFTEVURSBvcHRpb25zCistLQorLS0gdGVzdCBGSyBwYXJlbnQgdXBk YXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzYsNl0n LCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrLAorCUFE RCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBh cmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZwor CQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK0VSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gdGVzdCBGSyBw YXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKK0FMVEVSIFRBQkxFIHRl bXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJu Z19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJ R04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1w b3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKK0VS Uk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cwor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorSU5TRVJUIElOVE8gdGVt cG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3JhbmdlKG51bGwsIG51bGwpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTIsMTJdJywgdHNyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworICBB TFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENP TlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBE RUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9uIG5vdCBzdXBw b3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gRksgYmV0d2VlbiBwYXJ0aXRp b25lZCB0YWJsZXMKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dCwKKwlD T05TVFJBSU5UIHRlbXBvcmFsX3Bhcml0aW9uZWRfcm5nX3BrIFBSSU1BUlkgS0VZIChpZCwg dmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKykgUEFSVElUSU9OIEJZIExJU1QgKGlkKTsK K0NSRUFURSBUQUJMRSB0cDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBGT1IgVkFMVUVTIElOICgnWzEsMV0nLCAnWzMsM10nLCAnWzUsNV0nLCAnWzcsN10nLCAn WzksOV0nLCAnWzExLDExXScpOworQ1JFQVRFIFRBQkxFIHRwMiBwYXJ0aXRpb24gT0YgdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMiwyXScsICdbNCw0XScs ICdbNiw2XScsICdbOCw4XScsICdbMTAsMTBdJywgJ1sxMiwxMl0nKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMKKyAgKCdbMSwxXScsIGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTAxJyksICdvbmUnKSwKKyAgKCdbMSwxXScsIGRh dGVyYW5nZSgnMjAwMC0wMi0wMScsICcyMDAwLTAzLTAxJyksICdvbmUnKSwKKyAgKCdbMiwy XScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICd0d28nKTsKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nICgKKwlpZCBpbnQ0 cmFuZ2UsCisJdmFsaWRfYXQgZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJ Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BrIFBSSU1BUlkg S0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQs IFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgKGlkLCBQRVJJT0QgdmFsaWRfYXQpCispIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CitD UkVBVEUgVEFCTEUgdGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3 LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgn WzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJd Jyk7CistLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCitJTlNFUlQgSU5UTyB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyksCisgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDEtMDEtMDEnLCAnMjAwMi0wMS0wMScpLCAnWzIsMl0nKSwKKyAg KCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTAyLTE1JyksICdbMSwx XScpOworLS0gc2hvdWxkIGZhaWw6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUworICAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDEwLTAxLTAx JywgJzIwMTAtMDItMTUnKSwgJ1sxLDFdJyk7CitFUlJPUjogIGluc2VydCBvciB1cGRhdGUg b24gdGFibGUgInRma3AxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrIgorREVUQUlMOiAgS2V5IChwYXJlbnRf aWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDEwLDAyLTE1LTIwMTApKSBpcyBub3Qg cHJlc2VudCBpbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIi4KK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgnWzMsM10n LCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAnWzMsM10nKTsKK0VS Uk9SOiAgaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGZrcDEiIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsi CitERVRBSUw6ICBLZXkgKHBhcmVudF9pZCwgdmFsaWRfYXQpPShbMyw0KSwgWzAxLTAxLTIw MDAsMDItMTUtMjAwMCkpIGlzIG5vdCBwcmVzZW50IGluIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmciLgorLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworVVBEQVRF IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJh bmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTMnKSBXSEVSRSBpZCA9ICdbMiwyXSc7Cist LSBtb3ZlIGEgcm93IGZyb20gdGhlIGZpcnN0IHBhcnRpdGlvbiB0byB0aGUgc2Vjb25kCitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgaWQgPSAnWzQsNF0n IFdIRVJFIGlkID0gJ1sxLDFdJzsKKy0tIG1vdmUgYSByb3cgZnJvbSB0aGUgc2Vjb25kIHBh cnRpdGlvbiB0byB0aGUgZmlyc3QKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIFNFVCBpZCA9ICdbMSwxXScgV0hFUkUgaWQgPSAnWzQsNF0nOworLS0gc2hvdWxk IGZhaWw6CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wNC0wMScpIFdIRVJFIGlk ID0gJ1sxLDFdJzsKK0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4 Y2x1c2lvbiBjb25zdHJhaW50ICJ0ZmtwMV9wa2V5IgorREVUQUlMOiAgS2V5IChpZCwgdmFs aWRfYXQpPShbMSwyKSwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkpIGNvbmZsaWN0cyB3aXRo IGV4aXN0aW5nIGtleSAoaWQsIHZhbGlkX2F0KT0oWzEsMiksIFswMS0wMS0yMDAwLDA0LTAx LTIwMDApKS4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIE5PIEFDVElPTgor SU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywg ZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElOVE8gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4 LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1 JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcyMDE2LTAz LTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgn MjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2 LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKK0VSUk9SOiAg dXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9m a2V5IiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0RFVEFJ TDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0wMS0yMDE4LDAyLTAxLTIwMTgp KSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmciLgorLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcy MDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4LTAx LTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDIt MDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9 IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJPUjogIHVwZGF0 ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3Ry YWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtleSIg b24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitERVRBSUw6ICBL ZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMg c3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIHBhcnRp dGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFJFU1RSSUNUCitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZworCU9OIERFTEVURSBS RVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykpOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wNScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEn LCAnMjAxNi0wMy0wMScpCisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6 CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0n IEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7 CitFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9y ZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19w YXJlbnRfaWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmciCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCww Mi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIi4KKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0n OworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1 LDVdJzsKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0w Mi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wNScs ICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2Uo JzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2 YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CitFUlJP UjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBr ZXkgY29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRf aWRfZmtleSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitE RVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0y MDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIi4KKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENB U0NBREUKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKKwlE Uk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maywKKwlB REQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrCisJCUZP UkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRF IENBU0NBREU7CitFUlJPUjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBm b3JlaWduIGtleXMKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nCisJCU9OIERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CitFUlJP UjogIGFjdGlvbiBub3Qgc3VwcG9ydGVkIGZvciB0ZW1wb3JhbCBmb3JlaWduIGtleXMKKy0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCistLSBwYXJ0aXRpb25l ZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVGQVVMVAorQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBE RUZBVUxUICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxp ZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKKwkJT04gREVM RVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKK0VSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworLS0gcGFydGl0aW9u ZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0RST1AgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbApp bmRleCAzYzMyMzY2MThjLi44YTAzYjE0OTYxIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC93aXRob3V0X292ZXJsYXBzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC93aXRob3V0X292ZXJsYXBzLnNxbApAQCAtMjYwLDMgKzI2MCw0NTAgQEAgU0VMRUNUICog RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxF Q1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRw MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOworCistLQorLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKKy0tCisKKy0tIGNhbid0IGRy b3AgYSByYW5nZSByZWZlcmVuY2VkIGJ5IGFuIEZLLCB1bmxlc3Mgd2l0aCBDQVNDQURFCitD UkVBVEUgVEFCTEUgdGVtcG9yYWwzICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNy YW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsM19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlk X2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9p ZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1B UlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbDMgKGlkLCBQRVJJT0QgdmFsaWRfYXQp CispOworQUxURVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0OworQUxU RVIgVEFCTEUgdGVtcG9yYWwzIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitEUk9Q IFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmc7CitEUk9QIFRBQkxFIHRlbXBvcmFsMzsKKwor LS0KKy0tIHRlc3QgRk9SRUlHTiBLRVksIHJhbmdlIHJlZmVyZW5jZXMgcmFuZ2UKKy0tCisK Ky0tIENhbid0IGNyZWF0ZSBhIEZLIHdpdGggYSBtaXNtYXRjaGVkIHJhbmdlIHR5cGUKK0NS RUFURSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFs aWRfYXQgaW50NHJhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0 ZW1wb3JhbF9ma19ybmcycm5nX3BrMiBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhP VVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mazIgRk9S RUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRl bXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCkKKyk7CisKK0NSRUFURSBUQUJMRSB0 ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRfYXQgdHNyYW5n ZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5n MnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAor CUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtFWSAocGFyZW50 X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nIChpZCwg UEVSSU9EIHZhbGlkX2F0KQorKTsKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZzsK KworLS0gd2l0aCBpbmZlcnJlZCBQSyBvbiB0aGUgcmVmZXJlbmNlZCB0YWJsZToKK0NSRUFU RSBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2UsCisJdmFsaWRf YXQgdHNyYW5nZSwKKwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9y YWxfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mayBGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxf cm5nCispOworRFJPUCBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nOworCistLSBzaG91bGQg ZmFpbCBiZWNhdXNlIG9mIGR1cGxpY2F0ZSByZWZlcmVuY2VkIGNvbHVtbnM6CitDUkVBVEUg VEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0 IHRzcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05TVFJBSU5UIHRlbXBvcmFs X2ZrX3JuZzJybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJM QVBTKSwKKwlDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkg KHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcgKGlkLCBQRVJJT0QgaWQpCispOworCistLQorLS0gdGVzdCBBTFRFUiBUQUJMRSBBREQg Q09OU1RSQUlOVAorLS0KKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcgKAor CWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCB0c3JhbmdlLAorCXBhcmVudF9pZCBpbnQ0cmFu Z2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChp ZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitBTFRFUiBUQUJMRSB0ZW1wb3Jh bF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19mawor CUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCB2YWxpZF9hdCk7CisKKy0tIHdpdGggaW5mZXJy ZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGUsIGFuZCB3cm9uZyBjb2x1bW4gdHlwZToK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maywKKwlBTFRFUiBDT0xVTU4gdmFsaWRfYXQgVFlQRSBkYXRl cmFuZ2UgVVNJTkcgZGF0ZXJhbmdlKGxvd2VyKHZhbGlkX2F0KTo6ZGF0ZSwgdXBwZXIodmFs aWRfYXQpOjpkYXRlKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFMVEVSIENPTFVNTiB2YWxpZF9hdCBU WVBFIHRzcmFuZ2UgVVNJTkcgdHNyYW5nZShsb3dlcih2YWxpZF9hdCksIHVwcGVyKHZhbGlk X2F0KSk7CisKKy0tIHdpdGggaW5mZXJyZWQgUEsgb24gdGhlIHJlZmVyZW5jZWQgdGFibGU6 CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJQUREIENPTlNUUkFJTlQgdGVt cG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2 YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzsKKworLS0gc2hvdWxkIGZhaWwg YmVjYXVzZSBvZiBkdXBsaWNhdGUgcmVmZXJlbmNlZCBjb2x1bW5zOgorQUxURVIgVEFCTEUg dGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJy bmdfZmsyCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHBhcmVudF9pZCkKKwlS RUZFUkVOQ0VTIHRlbXBvcmFsX3JuZyAoaWQsIFBFUklPRCBpZCk7CisKKy0tCistLSB0ZXN0 IHdpdGggcm93cyBhbHJlYWR5CistLQorCitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5n MnJuZyBWQUxVRVMgKCdbMSwxXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wMi0w MScpLCAnWzEsMV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQg Q09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMiwyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNC0wMScpLCAnWzEs MV0nKTsKKy0tIHNob3VsZCBmYWlsOgorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJu ZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtF WSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmc7CistLSBva2F5IGFnYWluOgorREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZzsK K0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlBREQgQ09OU1RSQUlOVCB0ZW1w b3JhbF9ma19ybmcycm5nX2ZrCisJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nOworCistLQorLS0gdGVzdCBwZ19n ZXRfY29uc3RyYWludGRlZgorLS0KKworU0VMRUNUIHBnX2dldF9jb25zdHJhaW50ZGVmKG9p ZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5hbWUgPSAndGVtcG9yYWxfZmtfcm5n MnJuZ19mayc7CisKKy0tCistLSB0ZXN0IEZLIGNoaWxkIGluc2VydHMKKy0tCisKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEsMV0nLCB0c3JhbmdlKCcy MDE4LTAxLTAyJywgJzIwMTgtMDItMDEnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzIsMl0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDQtMDEnKSwgJ1sxLDFdJyk7CistLSBub3cgaXQg c2hvdWxkIHdvcms6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzEsMV0n LCB0c3JhbmdlKCcyMDE4LTAyLTAzJywgJzIwMTgtMDMtMDMnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1syLDJdJywgdHNyYW5nZSgnMjAxOC0wMS0w MicsICcyMDE4LTA0LTAxJyksICdbMSwxXScpOworCistLQorLS0gdGVzdCBGSyBjaGlsZCB1 cGRhdGVzCistLQorCitVUERBVEUgdGVtcG9yYWxfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE4LTAxLTAyJywgJzIwMTgtMDMtMDEnKSBXSEVSRSBpZCA9ICdbMSwx XSc7CistLSBzaG91bGQgZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCB2 YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDInLCAnMjAxOC0wNS0wMScpIFdIRVJFIGlk ID0gJ1sxLDFdJzsKK1VQREFURSB0ZW1wb3JhbF9ma19ybmcycm5nIFNFVCBwYXJlbnRfaWQg PSAnWzgsOF0nIFdIRVJFIGlkID0gJ1sxLDFdJzsKKworLS0KKy0tIHRlc3QgRksgcGFyZW50 IHVwZGF0ZXMgTk8gQUNUSU9OCistLQorCistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRz IGJlY2F1c2UgdGhlIG51bWVyaWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAxOC0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOwor LS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNjZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBp ZCBpcyByZWZlcmVuY2VkIGJlY2F1c2UgdGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIw MTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9h dCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAx Jyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJl bmNlZDoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAx Ni0wMS0wMScsICcyMDE2LTAyLTAxJykKK1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5n IHRoZSBzY2FsYXIgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0g J1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGlu ZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1lIFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRl bXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYt MDItMDEnKQorV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworCistLQorLS0gdGVzdCBG SyBwYXJlbnQgdXBkYXRlcyBSRVNUUklDVAorLS0KKworQUxURVIgVEFCTEUgdGVtcG9yYWxf Zmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOwor QUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBv cmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFs aWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7 CistLSBhIFBLIHVwZGF0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVyaWMgaWQg aXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb NSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK1VQREFURSB0 ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2 LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworLS0gYSBQSyB1cGRhdGUgdGhhdCBzdWNj ZWVkcyBldmVuIHRob3VnaCB0aGUgbnVtZXJpYyBpZCBpcyByZWZlcmVuY2VkIGJlY2F1c2Ug dGhlIHJhbmdlIGlzbid0OgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0w My0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMs M10nLCB0c3JhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDItMDEn LCAnMjAxNi0wMy0wMScpCitXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBhIFBLIHVwZGF0ZSB0aGF0 IGZhaWxzIGJlY2F1c2UgYm90aCBhcmUgcmVmZXJlbmNlZDoKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykK K1dIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAx JywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIHRoZSBzY2FsYXIgcGFydCBmYWlsczoK K1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0gdGhlbiBkZWxldGUgdGhlIG9iamVjdGluZyBGSyByZWNvcmQgYW5kIHRoZSBzYW1l IFBLIHVwZGF0ZSBzdWNjZWVkczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzMsM10nOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgdmFsaWRfYXQg PSB0c3JhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorV0hFUkUgaWQgPSAnWzUs NV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScp OworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IHBhcmVudF9pZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworLS0KKy0tIHRlc3QgRksgcGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9O CistLQorQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlO VCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrOworQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5n MnJuZworCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdO IEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3Jh bF9ybmc7CistLSBhIFBLIGRlbGV0ZSB0aGF0IHN1Y2NlZWRzIGJlY2F1c2UgdGhlIG51bWVy aWMgaWQgaXNuJ3QgcmVmZXJlbmNlZDoKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRl bGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVy ZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSBy ZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CisKKy0tCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFJFU1RSSUNUCistLQor CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRl bXBvcmFsX2ZrX3JuZzJybmdfZms7CitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19ybmcycm5n CisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maworCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwlSRUZFUkVOQ0VTIHRlbXBvcmFsX3Ju ZworCU9OIERFTEVURSBSRVNUUklDVDsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbNSw1XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBhIFBLIGRl bGV0ZSB0aGF0IHN1Y2NlZWRzIGV2ZW4gdGhvdWdoIHRoZSBudW1lcmljIGlkIGlzIHJlZmVy ZW5jZWQgYmVjYXVzZSB0aGUgcmFuZ2UgaXNuJ3Q6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9y bmcgVkFMVUVTICgnWzUsNV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzUsNV0nLCB0c3Jhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9m a19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0wMS0wNScsICcyMDE4 LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgt MDMtMDEnKTsKKy0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSBy ZWZlcmVuY2VkOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK Ky0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyBkZWxldGUgc3VjY2VlZHM6CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CisKKy0tCistLSB0ZXN0IE9OIFVQREFURS9ERUxFVEUgb3B0aW9ucworLS0KKwor LS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ybmcgVkFMVUVTICgnWzYsNl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s0LDRd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOworQUxU RVIgVEFCTEUgdGVtcG9yYWxfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0ZW1wb3Jh bF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX2ZrX3JuZzJybmdf ZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZF UkVOQ0VTIHRlbXBvcmFsX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FT Q0FERTsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxV RVMgKCdbNiw2XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzks OV0nKTsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKKwlEUk9QIENPTlNUUkFJ TlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywKKwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9m a19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9h dCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKKwkJT04gREVMRVRFIFNFVCBOVUxMIE9O IFVQREFURSBTRVQgTlVMTDsKKworLS0gdGVzdCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgREVG QVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1stMSwtMV0nLCB0c3Jh bmdlKG51bGwsIG51bGwpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdb MTIsMTJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJU IElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzEyLDEyXScpOworQUxURVIgVEFCTEUgdGVt cG9yYWxfZmtfcm5nMnJuZworICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxU ICdbLTEsLTFdJywKKwlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfZmtfcm5nMnJuZ19maywK KwlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9ma19ybmcycm5nX2ZrCisJCUZPUkVJR04gS0VZ IChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKKwkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9y bmcKKwkJT04gREVMRVRFIFNFVCBERUZBVUxUIE9OIFVQREFURSBTRVQgREVGQVVMVDsKKwor LS0gRksgYmV0d2VlbiBwYXJ0aXRpb25lZCB0YWJsZXMKKworQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVy YW5nZSwKKyAgbmFtZSB0ZXh0LAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF9y bmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRIT1VUIE9WRVJMQVBTKQorKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRwMSBwYXJ0aXRpb24gT0Yg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwxXScsICdbMywz XScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitDUkVBVEUgVEFC TEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVF UyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAn WzEyLDEyXScpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UworICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwg J29uZScpLAorICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMt MDEnKSwgJ29uZScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIw MTAtMDEtMDEnKSwgJ3R3bycpOworCitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyAoCisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IGRhdGVyYW5nZSwK KwlwYXJlbnRfaWQgaW50NHJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZF UkxBUFMpLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQorKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7CitD UkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4 LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworCistLSBwYXJ0aXRpb25lZCBGSyBjaGls ZCBpbnNlcnRzCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTCisgICgnWzEsMV0nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0w Mi0xNScpLCAnWzEsMV0nKSwKKyAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMS0wMS0wMScs ICcyMDAyLTAxLTAxJyksICdbMiwyXScpLAorICAoJ1syLDJdJywgZGF0ZXJhbmdlKCcyMDAw LTAxLTAxJywgJzIwMDAtMDItMTUnKSwgJ1sxLDFdJyk7CistLSBzaG91bGQgZmFpbDoKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTCisgICgn WzMsM10nLCBkYXRlcmFuZ2UoJzIwMTAtMDEtMDEnLCAnMjAxMC0wMi0xNScpLCAnWzEsMV0n KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT CisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xNScpLCAn WzMsM10nKTsKKworLS0gcGFydGl0aW9uZWQgRksgY2hpbGQgdXBkYXRlcworCitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0xMycpIFdIRVJFIGlkID0gJ1syLDJdJzsKKy0t IG1vdmUgYSByb3cgZnJvbSB0aGUgZmlyc3QgcGFydGl0aW9uIHRvIHRoZSBzZWNvbmQKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCBpZCA9ICdbNCw0XScg V0hFUkUgaWQgPSAnWzEsMV0nOworLS0gbW92ZSBhIHJvdyBmcm9tIHRoZSBzZWNvbmQgcGFy dGl0aW9uIHRvIHRoZSBmaXJzdAorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgU0VUIGlkID0gJ1sxLDFdJyBXSEVSRSBpZCA9ICdbNCw0XSc7CistLSBzaG91bGQg ZmFpbDoKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFNFVCB2YWxp ZF9hdCA9IGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDAwLTA0LTAxJykgV0hFUkUgaWQg PSAnWzEsMV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBOTyBBQ1RJ T04KKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1 LDVdJywgZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKSk7CitVUERBVEUg dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDE4LTAyLTAxJykgV0hFUkUgaWQgPSAnWzUsNV0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdl KCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVdJyk7CitVUERBVEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFNFVCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxNi0wMi0wMScsICcy MDE2LTAzLTAxJykKKyAgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVy YW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAzLTAxJyk7CistLSBzaG91bGQgZmFpbDoKK1VQ REFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQorICBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0t IGNsZWFuIHVwOgorREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksg cGFyZW50IGRlbGV0ZXMgTk8gQUNUSU9OCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcy MDE4LTAyLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZB TFVFUyAoJ1s1LDVdJywgZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1szLDNdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtMTAnKSwgJ1s1LDVd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4LTAz LTAxJyk7CistLSBzaG91bGQgZmFpbDoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNsZWFuIHVwOgorREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBwYXJlbnRfaWQgPSAnWzUs NV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1s1LDVdJzsKKworLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IHVwZGF0ZXMgUkVTVFJJQ1QK KworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1Ag Q09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrOworQUxURVIg VEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCUFERCBDT05TVFJBSU5U IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwlGT1JFSUdOIEtFWSAocGFy ZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcKKwlPTiBERUxFVEUgUkVTVFJJQ1Q7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEn LCAnMjAxNi0wMi0wMScpKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VU IHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKSBXSEVS RSBpZCA9ICdbNSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScp KTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVT ICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDUnLCAnMjAxOC0wMS0xMCcpLCAnWzUs NV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIHZhbGlkX2F0ID0g ZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYtMDMtMDEnKQorICBXSEVSRSBpZCA9ICdb NSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKKy0tIHNob3VsZCBmYWlsOgorVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3Ju ZyBTRVQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScp CisgIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAxOC0wMi0wMScpOworLS0gY2xlYW4gdXA6CitERUxFVEUgRlJPTSB0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9ICdbNSw1XSc7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUs NV0nOworCistLSBwYXJ0aXRpb25lZCBGSyBwYXJlbnQgZGVsZXRlcyBSRVNUUklDVAorCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzUsNV0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNSw1XScsIGRhdGVyYW5nZSgnMjAx OC0wMi0wMScsICcyMDE4LTAzLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMywzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w NScsICcyMDE4LTAxLTEwJyksICdbNSw1XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFu Z2UoJzIwMTgtMDItMDEnLCAnMjAxOC0wMy0wMScpOworLS0gc2hvdWxkIGZhaWw6CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFO RCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CisK Ky0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKKworQUxURVIgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZworCURST1AgQ09OU1RSQUlOVCB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAorCUFERCBDT05TVFJBSU5UIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKKwkJRk9SRUlHTiBLRVkgKHBhcmVu dF9pZCwgUEVSSU9EIHZhbGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZworCQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKKworLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQorCistLSBwYXJ0aXRpb25l ZCBGSyBwYXJlbnQgdXBkYXRlcyBTRVQgTlVMTAorCitBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0Qg dmFsaWRfYXQpCisJCVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9O IERFTEVURSBTRVQgTlVMTCBPTiBVUERBVEUgU0VUIE5VTEw7CisKKy0tIHBhcnRpdGlvbmVk IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCisKKy0tIHBhcnRpdGlvbmVkIEZLIHBhcmVu dCB1cGRhdGVzIFNFVCBERUZBVUxUCisKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmcKKyAgQUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAn Wy0xLC0xXScsCisJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfZmssCisJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5n MnJuZ19maworCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCisJCU9OIERFTEVURSBTRVQg REVGQVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CisKKy0tIHBhcnRpdGlvbmVkIEZLIHBh cmVudCBkZWxldGVzIFNFVCBERUZBVUxUCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n OwotLSAKMi4yNS4xCgo= --------------1Pz4yQrPlGKyiycfBE07F79X Content-Type: text/x-patch; charset=UTF-8; name="v14-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v14-0003-Add-UPDATE-DELETE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 RnJvbSBkMmI3ZGE3ZmVjYWI5OTJhMGZiMjAzMzdkMDFlYTRmMTVmMTZhY2ViIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IEZyaSwgMjUgSnVuIDIwMjEgMTg6NTQ6MzUgLTA3 MDAKU3ViamVjdDogW1BBVENIIHYxNCAzLzVdIEFkZCBVUERBVEUvREVMRVRFIEZPUiBQT1JU SU9OIE9GCgotIEFkZGVkIGJpc29uIHN1cHBvcnQgZm9yIEZPUiBQT1JUSU9OIE9GIHN5bnRh eC4gVGhlIGJvdW5kcyBtdXN0IGJlCiAgY29uc3RhbnQsIHNvIHdlIGZvcmJpZCBjb2x1bW4g cmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLiBCdXQgd2UKICBwZXJtaXQgdGhlIG1hZ2lj IFVOQk9VTkRFRCBrZXl3b3JkIGFzIHRoZSBGUk9NIG9yIHRoZSBUTyAob3IgYm90aCkKICB0 byBwZXJmb3JtIGFuIHVuYm91bmRlZCB1cGRhdGUvZGVsZXRlLiBXZSBhbHNvIGFjY2VwdCBm dW5jdGlvbnMgbGlrZQogIE5PVygpLgotIEFkZGVkIGxvZ2ljIHRvIGV4ZWN1dG9yIHRvIGlu c2VydCBuZXcgcm93cyBmb3IgdGhlICJsZWZ0b3ZlciIgcGFydCBvZgogIGEgcmVjb3JkIHRv dWNoZWQgYnkgYSBGT1IgUE9SVElPTiBPRiBxdWVyeS4KLSBBZGRlZCB0Z190ZW1wb3JhbCBk ZXNjcmlwdG9yIHRvIHRoZSBUcmlnZ2VyRGF0YSBzdHJ1Y3QgdGhhdCB3ZSBwYXNzIHRvCiAg dHJpZ2dlciBmdW5jdGlvbnMuIE91ciB0cmlnZ2VycyB1c2UgdGhpcyB0byBsZWFybiB3aGF0 IGJvdW5kcyB3ZXJlCiAgZ2l2ZW4gaW4gdGhlIEZPUiBQT1JUSU9OIE9GIGNsYXVzZS4KLSBE b2N1bWVudGVkIEZPUiBQT1JUSU9OIE9GLgotIERvY3VtZW50ZWQgdGdfdGVtcG9yYWwgc3Ry dWN0LgotIEFkZGVkIHRlc3RzLgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvZGVsZXRlLnNnbWwg ICAgICAgICAgICAgICAgICB8ICA0NiArKwogZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dt bCAgICAgICAgICAgICAgICAgIHwgIDQ3ICsrCiBkb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21s ICAgICAgICAgICAgICAgICAgICAgfCAgNjAgKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZWNtZHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dHJpZ2dlci5jICAgICAgICAgICAgICAgIHwgIDQ5ICsrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0 b3Ivbm9kZU1vZGlmeVRhYmxlLmMgICAgICAgIHwgMjIyICsrKysrKysrLQogc3JjL2JhY2tl bmQvbm9kZXMvbm9kZUZ1bmNzLmMgICAgICAgICAgICAgICAgIHwgIDI0ICsKIHNyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyAgICAgICB8ICAgOCArLQogc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgICAgICAgIHwgICAxICsKIHNyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgICAgICAgICB8ICAgNCArLQogc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyAgICAgICAgICAgICAgICAgIHwgMjE0ICsrKysr KysrLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAgICAgICAgIHwg IDQ3ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAgICAgICAgICAgICAg fCAgMTAgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NvbGxhdGUuYyAgICAgICAgICAg IHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMgICAgICAgICAgICAg ICB8ICAgOCArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jICAgICAgICAgICAg ICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMgICAgICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgICAg ICAgICAgfCAgNDAgKysKIHNyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jICAgICAgICAgICAg ICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L01ha2VmaWxlICAgICAg ICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZXJpb2QuYyAgICAg ICAgICAgICAgICB8ICA1NiArKysKIHNyYy9iYWNrZW5kL3V0aWxzL2FkdC9yYW5nZXR5cGVz LmMgICAgICAgICAgICB8ICA0MiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdn ZXJzLmMgICAgICAgICAgIHwgIDc0ICsrKwogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvbHN5 c2NhY2hlLmMgICAgICAgICAgIHwgIDUyICsrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJp Z2dlci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNyArKwogc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oICAgICAgICAgICAgICAgIHwgIDQ0ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMv cGxhbm5vZGVzLmggICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVz L3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAgICB8ICAyNSArCiBzcmMvaW5jbHVkZS9vcHRp bWl6ZXIvcGF0aG5vZGUuaCAgICAgICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL3Bh cnNlci9hbmFseXplLmggICAgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oICAgICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmggICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVk ZS91dGlscy9sc3lzY2FjaGUuaCAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL2luY2x1 ZGUvdXRpbHMvcGVyaW9kLmggICAgICAgICAgICAgICAgICAgIHwgIDE5ICsKIHNyYy9pbmNs dWRlL3V0aWxzL3JhbmdldHlwZXMuaCAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91dCAgfCA0MzEgKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3ByaXZpbGVnZXMub3V0ICAg ICAgfCAgMTggKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91cGRhdGFibGVfdmlld3Mu b3V0IHwgIDMyICsrCiAuLi4vcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dCAgICAgfCAxMjkgKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl ICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9u X29mLnNxbCAgICAgICB8IDM0MCArKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcHJpdmlsZWdlcy5zcWwgICAgICAgICAgIHwgIDE4ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3VwZGF0YWJsZV92aWV3cy5zcWwgICAgICB8ICAxNCArCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC93aXRob3V0X292ZXJsYXBzLnNxbCAgICAgfCAgNzcgKysrLQogNDcgZmlsZXMgY2hh bmdlZCwgMjE1NyBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvZGVsZXRlLnNnbWwKaW5kZXggMWI4MWI0ZTdkNy4uYzA5MDNlYzM2MSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9kZWxldGUuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2RlbGV0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlv bgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KIERFTEVU RSBGUk9NIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9u YW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPmFsaWFzPC9yZXBsYWNlYWJsZT4gXQorICAgIFsgRk9SIFBPUlRJT04gT0Yg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9y ZXBsYWNlYWJsZT4gRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRf dGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l bmRfdGltZTwvcmVwbGFjZWFibGU+IF0KICAgICBbIFVTSU5HIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5mcm9tX2l0ZW08L3JlcGxhY2VhYmxlPiBbLCAuLi5dIF0KICAgICBb IFdIRVJFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb25kaXRpb248L3JlcGxh Y2VhYmxlPiB8IFdIRVJFIENVUlJFTlQgT0YgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPmN1cnNvcl9uYW1lPC9yZXBsYWNlYWJsZT4gXQogICAgIFsgUkVUVVJOSU5HICogfCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0X2V4cHJlc3Npb248L3JlcGxh Y2VhYmxlPiBbIFsgQVMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+b3V0cHV0 X25hbWU8L3JlcGxhY2VhYmxlPiBdIFssIC4uLl0gXQpAQCAtNTQsNiArNTUsMTUgQEAgREVM RVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxl X25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgIGNpcmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4K IAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBoYXMgYSA8bGluayBsaW5rZW5kPSJkZGwt cGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5yYW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRl cmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5b3UgbWF5IHN1cHBseSBhCisgICA8bGl0 ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4gY2xhdXNlLCBhbmQgeW91ciBkZWxldGUg d2lsbCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0IG92ZXJsYXAgdGhlIGdpdmVuIGludGVy dmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBzcGFuIGV4dGVuZHMgb3V0c2lkZQorICAg dGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMsIHRoZW4gbmV3 IHJvd3Mgc3Bhbm5pbmcgdGhlICJjdXQKKyAgIG9mZiIgZHVyYXRpb24gd2lsbCBiZSBpbnNl cnRlZCB0byBwcmVzZXJ2ZSB0aGUgb2xkIHZhbHVlcy4KKyAgPC9wYXJhPgorCiAgIDxwYXJh PgogICAgVGhlIG9wdGlvbmFsIDxsaXRlcmFsPlJFVFVSTklORzwvbGl0ZXJhbD4gY2xhdXNl IGNhdXNlcyA8Y29tbWFuZD5ERUxFVEU8L2NvbW1hbmQ+CiAgICB0byBjb21wdXRlIGFuZCBy ZXR1cm4gdmFsdWUocykgYmFzZWQgb24gZWFjaCByb3cgYWN0dWFsbHkgZGVsZXRlZC4KQEAg LTExNiw2ICsxMjYsNDIgQEAgREVMRVRFIEZST00gWyBPTkxZIF0gPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICoKICAgICA8L2xp c3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAg PHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9u YW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVyaW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1p bmcgYSB0ZW1wb3JhbCBkZWxldGUuIFRoaXMKKyAgICAgIG11c3QgbWF0Y2ggdGhlIHJhbmdl IG9yIHBlcmlvZCB1c2VkIGluIHRoZSB0YWJsZSdzIHRlbXBvcmFsIHByaW1hcnkga2V5Lgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCisg ICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVzdCB0aW1lIChpbmNsdXNpdmUpIHRvIGNo YW5nZSBpbiBhIHRlbXBvcmFsIGRlbGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVl IG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisg ICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25h bWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZh bHVlIDxsaXRlcmFsPk1JTlZBTFVFPC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3 aG9zZQorICAgICAgYmVnaW5uaW5nIGlzIHVuYm91bmRlZC4KKyAgICAgPC9wYXJhPgorICAg IDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4K KyAgICA8dGVybT48cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3Jl cGxhY2VhYmxlPjwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAg VGhlIGxhdGVzdCB0aW1lIChleGNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIGRl bGV0ZS4KKyAgICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5 cGUgb2YgdGhlIHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQg bWF5IGFsc28KKyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1BWFZBTFVF PC9saXRlcmFsPiB0byBpbmRpY2F0ZSBhIGRlbGV0ZSB3aG9zZQorICAgICAgZW5kIGlzIHVu Ym91bmRlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT48L3Rlcm0+CiAgICAgPGxp c3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvdXBkYXRlLnNnbWwKaW5kZXggMmFiMjRiMDUyMy4uMDY5Y2IzY2E1 YyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi91cGRhdGUuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL3VwZGF0ZS5zZ21sCkBAIC0yMyw2ICsyMyw3IEBAIFBvc3RncmVTUUwg ZG9jdW1lbnRhdGlvbgogPHN5bm9wc2lzPgogWyBXSVRIIFsgUkVDVVJTSVZFIF0gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPndpdGhfcXVlcnk8L3JlcGxhY2VhYmxlPiBbLCAu Li5dIF0KIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsgWyBBUyBdIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5hbGlhczwvcmVwbGFjZWFibGU+IF0KKyAgICBbIEZPUiBQT1JU SU9OIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yYW5nZV9vcl9wZXJpb2Rf bmFtZTwvcmVwbGFjZWFibGU+IEZST00gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PnN0YXJ0X3RpbWU8L3JlcGxhY2VhYmxlPiBUTyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPiBdCiAgICAgU0VUIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gPSB7IDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gfCBE RUZBVUxUIH0gfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gWyBST1cgXSAoIHsgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiB8 IERFRkFVTFQgfSBbLCAuLi5dICkgfAogICAgICAgICAgICggPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uXSApID0gKCA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3ViLVNFTEVDVDwvcmVwbGFjZWFibGU+ ICkKQEAgLTUxLDYgKzUyLDE2IEBAIFVQREFURSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdIFsKICAgIGNp cmN1bXN0YW5jZXMuCiAgIDwvcGFyYT4KIAorICA8cGFyYT4KKyAgIElmIHRoZSB0YWJsZSBo YXMgYSA8bGluayBsaW5rZW5kPSJkZGwtcGVyaW9kcy1hcHBsaWNhdGlvbi1wZXJpb2RzIj5y YW5nZSBjb2x1bW4KKyAgIG9yIDxsaXRlcmFsPlBFUklPRDwvbGl0ZXJhbD48L2xpbms+LCB5 b3UgbWF5IHN1cHBseSBhCisgICA8bGl0ZXJhbD5GT1IgUE9SVElPTiBPRjwvbGl0ZXJhbD4g Y2xhdXNlLCBhbmQgeW91ciB1cGRhdGUgd2lsbCBvbmx5IGFmZmVjdCByb3dzCisgICB0aGF0 IG92ZXJsYXAgdGhlIGdpdmVuIGludGVydmFsLiBGdXJ0aGVybW9yZSwgaWYgYSByb3cncyBz cGFuIGV4dGVuZHMgb3V0c2lkZQorICAgdGhlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9s aXRlcmFsPiBib3VuZHMsIHRoZW4gaXQgd2lsbCBiZSB0cnVuY2F0ZWQgdG8gZml0CisgICB3 aXRoaW4gdGhlIGJvdW5kcywgYW5kIG5ldyByb3dzIHNwYW5uaW5nIHRoZSAiY3V0IG9mZiIg ZHVyYXRpb24gd2lsbCBiZQorICAgaW5zZXJ0ZWQgdG8gcHJlc2VydmUgdGhlIG9sZCB2YWx1 ZXMuCisgIDwvcGFyYT4KKwogICA8cGFyYT4KICAgIFRoZSBvcHRpb25hbCA8bGl0ZXJhbD5S RVRVUk5JTkc8L2xpdGVyYWw+IGNsYXVzZSBjYXVzZXMgPGNvbW1hbmQ+VVBEQVRFPC9jb21t YW5kPgogICAgdG8gY29tcHV0ZSBhbmQgcmV0dXJuIHZhbHVlKHMpIGJhc2VkIG9uIGVhY2gg cm93IGFjdHVhbGx5IHVwZGF0ZWQuCkBAIC0xMTQsNiArMTI1LDQyIEBAIFVQREFURSBbIE9O TFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFj ZWFibGU+IFsgKiBdIFsKICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAK KyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnJhbmdlX29yX3BlcmlvZF9uYW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSByYW5nZSBjb2x1bW4gb3IgcGVy aW9kIHRvIHVzZSB3aGVuIHBlcmZvcm1pbmcgYSB0ZW1wb3JhbCB1cGRhdGUuIFRoaXMKKyAg ICAgIG11c3QgbWF0Y2ggdGhlIHJhbmdlIG9yIHBlcmlvZCB1c2VkIGluIHRoZSB0YWJsZSdz IHRlbXBvcmFsIHByaW1hcnkga2V5LgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4K KyAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT48 L3Rlcm0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBlYXJsaWVz dCB0aW1lIChpbmNsdXNpdmUpIHRvIGNoYW5nZSBpbiBhIHRlbXBvcmFsIHVwZGF0ZS4KKyAg ICAgIFRoaXMgbXVzdCBiZSBhIHZhbHVlIG1hdGNoaW5nIHRoZSBiYXNlIHR5cGUgb2YgdGhl IHJhbmdlIG9yIHBlcmlvZCBmcm9tCisgICAgICA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cmFuZ2Vfb3JfcGVyaW9kX25hbWU8L3JlcGxhY2VhYmxlPi4gSXQgbWF5IGFsc28K KyAgICAgIGJlIHRoZSBzcGVjaWFsIHZhbHVlIDxsaXRlcmFsPk1JTlZBTFVFPC9saXRlcmFs PiB0byBpbmRpY2F0ZSBhbiB1cGRhdGUgd2hvc2UKKyAgICAgIGJlZ2lubmluZyBpcyB1bmJv dW5kZWQuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50 cnk+CisKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmVuZF90aW1lPC9yZXBsYWNlYWJsZT48L3Rlcm0+CisgICAgPGxpc3Rp dGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBsYXRlc3QgdGltZSAoZXhjbHVzaXZlKSB0 byBjaGFuZ2UgaW4gYSB0ZW1wb3JhbCB1cGRhdGUuCisgICAgICBUaGlzIG11c3QgYmUgYSB2 YWx1ZSBtYXRjaGluZyB0aGUgYmFzZSB0eXBlIG9mIHRoZSByYW5nZSBvciBwZXJpb2QgZnJv bQorICAgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJhbmdlX29yX3Blcmlv ZF9uYW1lPC9yZXBsYWNlYWJsZT4uIEl0IG1heSBhbHNvCisgICAgICBiZSB0aGUgc3BlY2lh bCB2YWx1ZSA8bGl0ZXJhbD5NQVhWQUxVRTwvbGl0ZXJhbD4gdG8gaW5kaWNhdGUgYW4gdXBk YXRlIHdob3NlCisgICAgICBlbmQgaXMgdW5ib3VuZGVkLgorICAgICA8L3BhcmE+CisgICAg PC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8dmFybGlzdGVudHJ5Pgog ICAgIDx0ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fbmFtZTwv cmVwbGFjZWFibGU+PC90ZXJtPgogICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC90cmlnZ2VyLnNnbWwgYi9kb2Mvc3JjL3NnbWwvdHJpZ2dlci5zZ21sCmluZGV4 IDZlMWYzNzBiMjEuLmI1OGU2MzQ4YWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC90cmln Z2VyLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3RyaWdnZXIuc2dtbApAQCAtNTM3LDE3ICs1 MzcsMTggQEAgQ0FMTEVEX0FTX1RSSUdHRVIoZmNpbmZvKQogPHByb2dyYW1saXN0aW5nPgog dHlwZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIHsKLSAgICBOb2RlVGFnICAgICAgICAgIHR5 cGU7Ci0gICAgVHJpZ2dlckV2ZW50ICAgICB0Z19ldmVudDsKLSAgICBSZWxhdGlvbiAgICAg ICAgIHRnX3JlbGF0aW9uOwotICAgIEhlYXBUdXBsZSAgICAgICAgdGdfdHJpZ3R1cGxlOwot ICAgIEhlYXBUdXBsZSAgICAgICAgdGdfbmV3dHVwbGU7Ci0gICAgVHJpZ2dlciAgICAgICAg ICp0Z190cmlnZ2VyOwotICAgIFR1cGxlVGFibGVTbG90ICAqdGdfdHJpZ3Nsb3Q7Ci0gICAg VHVwbGVUYWJsZVNsb3QgICp0Z19uZXdzbG90OwotICAgIFR1cGxlc3RvcmVzdGF0ZSAqdGdf b2xkdGFibGU7Ci0gICAgVHVwbGVzdG9yZXN0YXRlICp0Z19uZXd0YWJsZTsKLSAgICBjb25z dCBCaXRtYXBzZXQgKnRnX3VwZGF0ZWRjb2xzOworICAgIE5vZGVUYWcgICAgICAgICAgICB0 eXBlOworICAgIFRyaWdnZXJFdmVudCAgICAgICB0Z19ldmVudDsKKyAgICBSZWxhdGlvbiAg ICAgICAgICAgdGdfcmVsYXRpb247CisgICAgSGVhcFR1cGxlICAgICAgICAgIHRnX3RyaWd0 dXBsZTsKKyAgICBIZWFwVHVwbGUgICAgICAgICAgdGdfbmV3dHVwbGU7CisgICAgVHJpZ2dl ciAgICAgICAgICAgKnRnX3RyaWdnZXI7CisgICAgVHVwbGVUYWJsZVNsb3QgICAgKnRnX3Ry aWdzbG90OworICAgIFR1cGxlVGFibGVTbG90ICAgICp0Z19uZXdzbG90OworICAgIFR1cGxl c3RvcmVzdGF0ZSAgICp0Z19vbGR0YWJsZTsKKyAgICBUdXBsZXN0b3Jlc3RhdGUgICAqdGdf bmV3dGFibGU7CisgICAgY29uc3QgQml0bWFwc2V0ICAgKnRnX3VwZGF0ZWRjb2xzOworICAg IEZvclBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbDsKIH0gVHJpZ2dlckRhdGE7CiA8L3By b2dyYW1saXN0aW5nPgogCkBAIC04MTUsNiArODE2LDQzIEBAIHR5cGVkZWYgc3RydWN0IFRy aWdnZXIKICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxp c3RlbnRyeT4KKworICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgPHRlcm0+PHN0cnVjdGZp ZWxkPnRnX3RlbXBvcmFsPC9zdHJ1Y3RmaWVsZD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+ CisgICAgICAgPHBhcmE+CisgICAgICAgIFNldCBmb3IgPGxpdGVyYWw+VVBEQVRFPC9saXRl cmFsPiBhbmQgPGxpdGVyYWw+REVMRVRFPC9saXRlcmFsPiBxdWVyaWVzCisgICAgICAgIHRo YXQgdXNlIDxsaXRlcmFsPkZPUiBQT1JUSU9OIE9GPC9saXRlcmFsPiwgb3RoZXJ3aXNlIDxz eW1ib2w+TlVMTDwvc3ltYm9sPi4KKyAgICAgICAgQ29udGFpbnMgYSBwb2ludGVyIHRvIGEg c3RydWN0dXJlIG9mIHR5cGUKKyAgICAgICAgPHN0cnVjdG5hbWU+Rm9yUG9ydGlvbk9mU3Rh dGU8L3N0cnVjdG5hbWU+LCBkZWZpbmVkIGluCisgICAgICAgIDxmaWxlbmFtZT5ub2Rlcy9l eGVjbm9kZXMuaDwvZmlsZW5hbWU+OgorCis8cHJvZ3JhbWxpc3Rpbmc+Cit0eXBlZGVmIHN0 cnVjdCBGb3JQb3J0aW9uT2ZTdGF0ZQoreworICAgIE5vZGVUYWcgdHlwZTsKKworICAgIGNo YXIgICAqZnBfcmFuZ2VOYW1lOyAgICAgICAvKiB0aGUgY29sdW1uL1BFUklPRCBuYW1lZCBp biBGT1IgUE9SVElPTiBPRiAqLworICAgIE9pZCAgICAgZnBfcmFuZ2VUeXBlOyAgICAgICAv KiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLworICAgIGJv b2wgICAgZnBfaGFzUGVyaW9kOyAgICAgICAvKiB0cnVlIGlmZiB0aGlzIGlzIGEgUEVSSU9E IG5vdCBhIHJhbmdlICovCisgICAgY2hhciAgICpmcF9wZXJpb2RTdGFydE5hbWU7IC8qIHRo ZSBQRVJJT0QncyBzdGFydCBjb2x1bW4gKi8KKyAgICBjaGFyICAgKmZwX3BlcmlvZEVuZE5h bWU7ICAgLyogdGhlIFBFUklPRCdzIGVuZCBjb2x1bW4gKi8KKyAgICBEYXR1bSAgIGZwX3Rh cmdldFJhbmdlOyAgICAgLyogdGhlIHJhbmdlIGZyb20gRk9SIFBPUlRJT04gT0YgKi8KK30g Rm9yUG9ydGlvbk9mU3RhdGU7Cis8L3Byb2dyYW1saXN0aW5nPgorCisgICAgICAgd2hlcmUg PHN0cnVjdGZpZWxkPmZwX3JhbmdlTmFtZTwvc3RydWN0ZmllbGQ+IGlzIHRoZSBwZXJpb2Qg b3IgcmFuZ2UKKyAgICAgICBjb2x1bW4gbmFtZWQgaW4gdGhlIDxsaXRlcmFsPkZPUiBQT1JU SU9OIE9GPC9saXRlcmFsPiBjbGF1c2UsCisgICAgICAgPHN0cnVjdGZpZWxkPmZwX3Jhbmdl VHlwZTwvc3RydWN0ZmllbGQ+IGlzIGl0cyByYW5nZSB0eXBlLAorICAgICAgIDxzdHJ1Y3Rm aWVsZD5mcF9oYXNQZXJpb2Q8L3N0cnVjdGZpZWxkPiBpbmRpY2F0ZXMgd2hldGhlciBhIHBl cmlvZCB3YXMgdXNlZAorICAgICAgIG9yIGEgcmFuZ2UgY29sdW1uLCA8c3RydWN0ZmllbGQ+ ZnBfcGVyaW9kU3RhcnROYW1lPC9zdHJ1Y3RmaWVsZD4gYW5kCisgICAgICAgPHN0cnVjdGZp ZWxkPmZwX3BlcmlvZEVuZE5hbWU8L3N0cnVjdGZpZWxkPiBhcmUgdGhlIG5hbWVzIG9mIHRo ZSBwZXJpb2QncworICAgICAgIHN0YXJ0IGFuZCBlbmQgY29sdW1ucyAob3IgPHN5bWJvbD5O VUxMPC9zeW1ib2w+IGlmIGEgcmFuZ2UgY29sdW1uIHdhcyB1c2VkKSwKKyAgICAgICBhbmQg PHN0cnVjdGZpZWxkPmZwX3RhcmdldFJhbmdlPC9zdHJ1Y3RmaWVsZD4gaXMgYSByYW5nZXR5 cGUgdmFsdWUgY3JlYXRlZAorICAgICAgIGJ5IGV2YWx1YXRpbmcgdGhlIDxsaXRlcmFsPkZP UiBQT1JUSU9OIE9GPC9saXRlcmFsPiBib3VuZHMuCisgICAgICAgPC9wYXJhPgorICAgICAg PC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+ CiAgICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKaW5kZXggNWFmNzJl YTYyNy4uNWE0ZDdmZjI3MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFi bGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTEy MTY4LDYgKzEyMTY4LDcgQEAgdmFsaWRhdGVGb3JlaWduS2V5Q29uc3RyYWludChjaGFyICpj b25uYW1lLAogCQl0cmlnZGF0YS50Z190cmlndHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1 cGxlKHNsb3QsIGZhbHNlLCBOVUxMKTsKIAkJdHJpZ2RhdGEudGdfdHJpZ3Nsb3QgPSBzbG90 OwogCQl0cmlnZGF0YS50Z190cmlnZ2VyID0gJnRyaWc7CisJCXRyaWdkYXRhLnRnX3RlbXBv cmFsID0gTlVMTDsKIAogCQlmY2luZm8tPmNvbnRleHQgPSAoTm9kZSAqKSAmdHJpZ2RhdGE7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYwppbmRleCAwNTc3YjYwNDE1Li4yZjA1NTU3YjM0 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVk ZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy9ieXRlYS5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAi dXRpbHMvZm1ncm9pZHMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNs dWRlICJ1dGlscy9pbnZhbC5oIgpAQCAtMjYzOCw2ICsyNjM5LDcgQEAgRXhlY0JTRGVsZXRl VHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlbGluZm8pCiAJTG9j VHJpZ2dlckRhdGEudGdfZXZlbnQgPSBUUklHR0VSX0VWRU5UX0RFTEVURSB8CiAJCVRSSUdH RVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5m by0+cmlfUmVsYXRpb25EZXNjOworCUxvY1RyaWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVs aW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCWZvciAoaSA9IDA7IGkgPCB0cmlnZGVzYy0+bnVt dHJpZ2dlcnM7IGkrKykKIAl7CiAJCVRyaWdnZXIgICAgKnRyaWdnZXIgPSAmdHJpZ2Rlc2Mt PnRyaWdnZXJzW2ldOwpAQCAtMjczNyw2ICsyNzM5LDcgQEAgRXhlY0JSRGVsZXRlVHJpZ2dl cnMoRVN0YXRlICplc3RhdGUsIEVQUVN0YXRlICplcHFzdGF0ZSwKIAkJVFJJR0dFUl9FVkVO VF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0JFRk9SRTsKIAlMb2NUcmlnZ2VyRGF0YS50Z19y ZWxhdGlvbiA9IHJlbGluZm8tPnJpX1JlbGF0aW9uRGVzYzsKKwlMb2NUcmlnZ2VyRGF0YS50 Z190ZW1wb3JhbCA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZjsKIAlmb3IgKGkgPSAwOyBp IDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCiAJewogCQlIZWFwVHVwbGUJbmV3dHVw bGU7CkBAIC0yODI4LDYgKzI4MzEsNyBAQCBFeGVjSVJEZWxldGVUcmlnZ2VycyhFU3RhdGUg KmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cg fAogCQlUUklHR0VSX0VWRU5UX0lOU1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRp b24gPSByZWxpbmZvLT5yaV9SZWxhdGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhl YXBUdXBsZSh0cmlndHVwbGUsIHNsb3QsIGZhbHNlKTsKIApAQCAtMjg5MSw2ICsyODk1LDcg QEAgRXhlY0JTVXBkYXRlVHJpZ2dlcnMoRVN0YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8g KnJlbGluZm8pCiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdnZXJEYXRhLnRn X3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOwogCUxvY1RyaWdnZXJEYXRh LnRnX3VwZGF0ZWRjb2xzID0gdXBkYXRlZENvbHM7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVt cG9yYWwgPSByZWxpbmZvLT5yaV9mb3JQb3J0aW9uT2Y7CiAJZm9yIChpID0gMDsgaSA8IHRy aWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQogCXsKIAkJVHJpZ2dlciAgICAqdHJpZ2dlciA9 ICZ0cmlnZGVzYy0+dHJpZ2dlcnNbaV07CkBAIC0zMDA4LDYgKzMwMTMsNyBAQCBFeGVjQlJV cGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgRVBRU3RhdGUgKmVwcXN0YXRlLAogCQlU UklHR0VSX0VWRU5UX1JPVyB8CiAJCVRSSUdHRVJfRVZFTlRfQkVGT1JFOwogCUxvY1RyaWdn ZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsaW5mby0+cmlfUmVsYXRpb25EZXNjOworCUxvY1Ry aWdnZXJEYXRhLnRnX3RlbXBvcmFsID0gcmVsaW5mby0+cmlfZm9yUG9ydGlvbk9mOwogCXVw ZGF0ZWRDb2xzID0gRXhlY0dldEFsbFVwZGF0ZWRDb2xzKHJlbGluZm8sIGVzdGF0ZSk7CiAJ TG9jVHJpZ2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSB1cGRhdGVkQ29sczsKIAlmb3IgKGkg PSAwOyBpIDwgdHJpZ2Rlc2MtPm51bXRyaWdnZXJzOyBpKyspCkBAIC0zMTU3LDYgKzMxNjMs NyBAQCBFeGVjSVJVcGRhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5m byAqcmVsaW5mbywKIAkJVFJJR0dFUl9FVkVOVF9ST1cgfAogCQlUUklHR0VSX0VWRU5UX0lO U1RFQUQ7CiAJTG9jVHJpZ2dlckRhdGEudGdfcmVsYXRpb24gPSByZWxpbmZvLT5yaV9SZWxh dGlvbkRlc2M7CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSByZWxpbmZvLT5yaV9m b3JQb3J0aW9uT2Y7CiAKIAlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZSh0cmlndHVwbGUsIG9s ZHNsb3QsIGZhbHNlKTsKIApAQCAtMzYyMyw2ICszNjMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg QWZ0ZXJUcmlnZ2VyU2hhcmVkRGF0YQogCU9pZAkJCWF0c190Z29pZDsJCS8qIHRoZSB0cmln Z2VyJ3MgSUQgKi8KIAlPaWQJCQlhdHNfcmVsaWQ7CQkvKiB0aGUgcmVsYXRpb24gaXQncyBv biAqLwogCUNvbW1hbmRJZAlhdHNfZmlyaW5nX2lkOwkvKiBJRCBmb3IgZmlyaW5nIGN5Y2xl ICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKmZvcl9wb3J0aW9uX29mOwkvKiB0aGUgRk9SIFBP UlRJT04gT0YgY2xhdXNlICovCiAJc3RydWN0IEFmdGVyVHJpZ2dlcnNUYWJsZURhdGEgKmF0 c190YWJsZTsJLyogdHJhbnNpdGlvbiB0YWJsZSBhY2Nlc3MgKi8KIAlCaXRtYXBzZXQgICph dHNfbW9kaWZpZWRjb2xzOwkvKiBtb2RpZmllZCBjb2x1bW5zICovCiB9IEFmdGVyVHJpZ2dl clNoYXJlZERhdGE7CkBAIC0zODk2LDYgKzM5MDQsNyBAQCBzdGF0aWMgU2V0Q29uc3RyYWlu dFN0YXRlIFNldENvbnN0cmFpbnRTdGF0ZUNyZWF0ZShpbnQgbnVtYWxsb2MpOwogc3RhdGlj IFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25zdHJhaW50U3RhdGVDb3B5KFNldENvbnN0cmFp bnRTdGF0ZSBvcmlnc3RhdGUpOwogc3RhdGljIFNldENvbnN0cmFpbnRTdGF0ZSBTZXRDb25z dHJhaW50U3RhdGVBZGRJdGVtKFNldENvbnN0cmFpbnRTdGF0ZSBzdGF0ZSwKIAkJCQkJCQkJ CQkJCQlPaWQgdGdvaWQsIGJvb2wgdGdpc2RlZmVycmVkKTsKK3N0YXRpYyBGb3JQb3J0aW9u T2ZTdGF0ZSAqQ29weUZvclBvcnRpb25PZlN0YXRlKEZvclBvcnRpb25PZlN0YXRlICpzcmMp Owogc3RhdGljIHZvaWQgY2FuY2VsX3ByaW9yX3N0bXRfdHJpZ2dlcnMoT2lkIHJlbGlkLCBD bWRUeXBlIGNtZFR5cGUsIGludCB0Z2V2ZW50KTsKIAogCkBAIC00MTA1LDYgKzQxMTQsNyBA QCBhZnRlclRyaWdnZXJBZGRFdmVudChBZnRlclRyaWdnZXJFdmVudExpc3QgKmV2ZW50cywK IAkJCW5ld3NoYXJlZC0+YXRzX3JlbGlkID09IGV2dHNoYXJlZC0+YXRzX3JlbGlkICYmCiAJ CQluZXdzaGFyZWQtPmF0c19ldmVudCA9PSBldnRzaGFyZWQtPmF0c19ldmVudCAmJgogCQkJ bmV3c2hhcmVkLT5hdHNfdGFibGUgPT0gZXZ0c2hhcmVkLT5hdHNfdGFibGUgJiYKKwkJCW5l d3NoYXJlZC0+Zm9yX3BvcnRpb25fb2YgPT0gZXZ0c2hhcmVkLT5mb3JfcG9ydGlvbl9vZiAm JgogCQkJbmV3c2hhcmVkLT5hdHNfZmlyaW5nX2lkID09IDApCiAJCQlicmVhazsKIAl9CkBA IC00NDY5LDYgKzQ0NzksNyBAQCBBZnRlclRyaWdnZXJFeGVjdXRlKEVTdGF0ZSAqZXN0YXRl LAogCUxvY1RyaWdnZXJEYXRhLnRnX3JlbGF0aW9uID0gcmVsOwogCWlmIChUUklHR0VSX0ZP Ul9VUERBVEUoTG9jVHJpZ2dlckRhdGEudGdfdHJpZ2dlci0+dGd0eXBlKSkKIAkJTG9jVHJp Z2dlckRhdGEudGdfdXBkYXRlZGNvbHMgPSBldnRzaGFyZWQtPmF0c19tb2RpZmllZGNvbHM7 CisJTG9jVHJpZ2dlckRhdGEudGdfdGVtcG9yYWwgPSBldnRzaGFyZWQtPmZvcl9wb3J0aW9u X29mOwogCiAJTWVtb3J5Q29udGV4dFJlc2V0KHBlcl90dXBsZV9jb250ZXh0KTsKIApAQCAt NjAwNSw2ICs2MDE2LDQzIEBAIEFmdGVyVHJpZ2dlclBlbmRpbmdPblJlbChPaWQgcmVsaWQp CiAJcmV0dXJuIGZhbHNlOwogfQogCisvKiAtLS0tLS0tLS0tCisgKiBGb3JQb3J0aW9uT2ZT dGF0ZSgpCisgKgorICogQ29waWVzIGEgRm9yUG9ydGlvbk9mU3RhdGUgaW50byB0aGUgY3Vy cmVudCBtZW1vcnkgY29udGV4dC4KKyAqLworc3RhdGljIEZvclBvcnRpb25PZlN0YXRlICoK K0NvcHlGb3JQb3J0aW9uT2ZTdGF0ZShGb3JQb3J0aW9uT2ZTdGF0ZSAqc3JjKQoreworCUZv clBvcnRpb25PZlN0YXRlICpkc3QgPSBOVUxMOworCWlmIChzcmMpIHsKKwkJTWVtb3J5Q29u dGV4dCBvbGRjdHg7CisJCVJhbmdlVHlwZSAqcjsKKwkJVHlwZUNhY2hlRW50cnkgKnR5cGNh Y2hlOworCisJCS8qCisJCSAqIE5lZWQgdG8gbGlmdCB0aGUgRk9SIFBPUlRJT04gT0YgZGV0 YWlscyBpbnRvIGEgaGlnaGVyIG1lbW9yeSBjb250ZXh0CisJCSAqIGJlY2F1c2UgY2FzY2Fk aW5nIGZvcmVpZ24ga2V5IHVwZGF0ZS9kZWxldGVzIGNhbiBjYXVzZSB0cmlnZ2VycyB0byBm aXJlCisJCSAqIHRyaWdnZXJzLCBhbmQgdGhlIEFmdGVyVHJpZ2dlckV2ZW50cyB3aWxsIG91 dGxpdmUgdGhlIEZQTworCQkgKiBkZXRhaWxzIG9mIHRoZSBvcmlnaW5hbCBxdWVyeS4KKwkJ ICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlvbkNv bnRleHQpOworCQlkc3QgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7CisJCWRzdC0+ ZnBfcmFuZ2VOYW1lID0gcHN0cmR1cChzcmMtPmZwX3JhbmdlTmFtZSk7CisJCWRzdC0+ZnBf cmFuZ2VUeXBlID0gc3JjLT5mcF9yYW5nZVR5cGU7CisJCWRzdC0+ZnBfaGFzUGVyaW9kID0g c3JjLT5mcF9oYXNQZXJpb2Q7CisJCWRzdC0+ZnBfcmFuZ2VBdHRubyA9IHNyYy0+ZnBfcmFu Z2VBdHRubzsKKwkJZHN0LT5mcF9wZXJpb2RTdGFydEF0dG5vID0gc3JjLT5mcF9wZXJpb2RT dGFydEF0dG5vOworCQlkc3QtPmZwX3BlcmlvZEVuZEF0dG5vID0gc3JjLT5mcF9wZXJpb2RF bmRBdHRubzsKKworCQlyID0gRGF0dW1HZXRSYW5nZVR5cGVQKHNyYy0+ZnBfdGFyZ2V0UmFu Z2UpOworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKFJhbmdlVHlwZUdldE9pZChy KSwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlkc3QtPmZwX3RhcmdldFJhbmdlID0gZGF0 dW1Db3B5KHNyYy0+ZnBfdGFyZ2V0UmFuZ2UsIHR5cGNhY2hlLT50eXBieXZhbCwgdHlwY2Fj aGUtPnR5cGxlbik7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KKwly ZXR1cm4gZHN0OworfQorCiAvKiAtLS0tLS0tLS0tCiAgKiBBZnRlclRyaWdnZXJTYXZlRXZl bnQoKQogICoKQEAgLTY0MjAsNiArNjQ2OCw3IEBAIEFmdGVyVHJpZ2dlclNhdmVFdmVudChF U3RhdGUgKmVzdGF0ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJZWxzZQogCQkJbmV3 X3NoYXJlZC5hdHNfdGFibGUgPSBOVUxMOwogCQluZXdfc2hhcmVkLmF0c19tb2RpZmllZGNv bHMgPSBhZnRlclRyaWdnZXJDb3B5Qml0bWFwKG1vZGlmaWVkQ29scyk7CisJCW5ld19zaGFy ZWQuZm9yX3BvcnRpb25fb2YgPSBDb3B5Rm9yUG9ydGlvbk9mU3RhdGUocmVsaW5mby0+cmlf Zm9yUG9ydGlvbk9mKTsKIAogCQlhZnRlclRyaWdnZXJBZGRFdmVudCgmYWZ0ZXJUcmlnZ2Vy cy5xdWVyeV9zdGFja1thZnRlclRyaWdnZXJzLnF1ZXJ5X2RlcHRoXS5ldmVudHMsCiAJCQkJ CQkJICZuZXdfZXZlbnQsICZuZXdfc2hhcmVkKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j CmluZGV4IDRjNWE3YmJmNjIuLjY5MDk2Y2JlZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYwpAQCAtMTI3NCw2ICsxMjc0LDcgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbywKIAlyZXN1bHRSZWxJbmZvLT5yaV9wcm9qZWN0UmV0dXJu aW5nID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9vbkNvbmZsaWN0QXJiaXRlckluZGV4 ZXMgPSBOSUw7CiAJcmVzdWx0UmVsSW5mby0+cmlfb25Db25mbGljdCA9IE5VTEw7CisJcmVz dWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5y aV9SZXR1cm5pbmdTbG90ID0gTlVMTDsKIAlyZXN1bHRSZWxJbmZvLT5yaV9UcmlnT2xkU2xv dCA9IE5VTEw7CiAJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ05ld1Nsb3QgPSBOVUxMOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCA1MDA1ZDhjMGQxLi45 MmQ2NjExZjUxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5 VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpA QCAtNjEsNiArNjEsOSBAQAogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1 ZGUgInV0aWxzL3BlcmlvZC5oIgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAog CkBAIC0xNDEsNiArMTQ0LDEwIEBAIHN0YXRpYyBib29sIEV4ZWNPbkNvbmZsaWN0VXBkYXRl KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJIFR1cGxlVGFibGVTbG90 ICpleGNsdWRlZFNsb3QsCiAJCQkJCQkJCSBib29sIGNhblNldFRhZywKIAkJCQkJCQkJIFR1 cGxlVGFibGVTbG90ICoqcmV0dXJuaW5nKTsKK3N0YXRpYyB2b2lkIEV4ZWNGb3JQb3J0aW9u T2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJCQkJICBF U3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJCSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKKwkJCQkJCQkJCSAgSXRlbVBvaW50ZXIgdHVwbGVpZCk7CiBzdGF0aWMgVHVwbGVUYWJs ZVNsb3QgKkV4ZWNQcmVwYXJlVHVwbGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3Rh dGUsCiAJCQkJCQkJCQkJCSAgIEVTdGF0ZSAqZXN0YXRlLAogCQkJCQkJCQkJCQkgICBQYXJ0 aXRpb25UdXBsZVJvdXRpbmcgKnByb3V0ZSwKQEAgLTEyMDUsNiArMTIxMiwxMzggQEAgRXhl Y0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJcmV0dXJuIHJlc3VsdDsK IH0KIAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCXNldF9sZWZ0b3Zlcl90dXBsZV9ib3VuZHMKKyAq CisgKgkJU2F2ZXMgdGhlIG5ldyBib3VuZHMgaW50byB0aGUgcmFuZ2UgYXR0cmlidXRlCisg KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyB2b2lkIHNldF9sZWZ0b3Zlcl90dXBsZV9ib3Vu ZHMoVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUsCisJCQkJCQkJCQkgIEZvclBvcnRp b25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkJCQkJCSAgVHlwZUNhY2hlRW50cnkgKnR5 cGNhY2hlLAorCQkJCQkJCQkJICBSYW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlKQorewor CS8qIFN0b3JlIHRoZSByYW5nZSBkaXJlY3RseSAqLworCisJbGVmdG92ZXJUdXBsZS0+dHRz X3ZhbHVlc1tmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52YXJhdHRubyAtIDFdID0gUmFuZ2VU eXBlUEdldERhdHVtKGxlZnRvdmVyUmFuZ2VUeXBlKTsKKwlsZWZ0b3ZlclR1cGxlLT50dHNf aXNudWxsW2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBmYWxzZTsK K30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMKKyAq CisgKgkJSW5zZXJ0IHR1cGxlcyBmb3IgdGhlIHVudG91Y2hlZCB0aW1lc3RhbXAgb2YgYSBy b3cgaW4gYSBGT1IKKyAqCQlQT1JUSU9OIE9GIFVQREFURS9ERUxFVEUKKyAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqLworc3RhdGljIHZvaWQKK0V4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5 VGFibGVDb250ZXh0ICpjb250ZXh0LAorCQkJCQkJICBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJ CSAgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKKwkJCQkJCSAgSXRlbVBvaW50ZXIg dHVwbGVpZCkKK3sKKwlNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29udGV4dC0+bXRz dGF0ZTsKKwlNb2RpZnlUYWJsZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRlLT5w cy5wbGFuOworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQb3J0aW9u T2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsKKwlEYXR1bSBvbGRSYW5nZTsKKwlSYW5n ZVR5cGUgKm9sZFJhbmdlVHlwZTsKKwlSYW5nZVR5cGUgKnRhcmdldFJhbmdlVHlwZTsKKwlS YW5nZVR5cGUgKmxlZnRvdmVyUmFuZ2VUeXBlMTsKKwlSYW5nZVR5cGUgKmxlZnRvdmVyUmFu Z2VUeXBlMjsKKwlPaWQgcmFuZ2VUeXBlT2lkID0gZm9yUG9ydGlvbk9mLT5yYW5nZVR5cGU7 CisJYm9vbCBpc051bGwgPSBmYWxzZTsKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGU7CisJ Rm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0YXRlID0gcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9y dGlvbk9mOworCVR1cGxlVGFibGVTbG90ICpvbGR0dXBsZVNsb3QgPSBmcG9TdGF0ZS0+ZnBf RXhpc3Rpbmc7CisJVHVwbGVUYWJsZVNsb3QgKmxlZnRvdmVyVHVwbGUxID0gZnBvU3RhdGUt PmZwX0xlZnRvdmVyMTsKKwlUdXBsZVRhYmxlU2xvdCAqbGVmdG92ZXJUdXBsZTIgPSBmcG9T dGF0ZS0+ZnBfTGVmdG92ZXIyOworCisJLyoKKwkgKiBHZXQgdGhlIHJhbmdlIG9mIHRoZSBv bGQgcHJlLVVQREFURS9ERUxFVEUgdHVwbGUsCisJICogc28gd2UgY2FuIGludGVyc2VjdCBp dCB3aXRoIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQKKwkgKiBhbmQgc2VlIGlmIHRoZXJl IGFyZSBhbnkgImxlZnRvdmVycyIgdG8gaW5zZXJ0LgorCSAqCisJICogV2UgaGF2ZSBhbHJl YWR5IGxvY2tlZCB0aGUgdHVwbGUgaW4gRXhlY1VwZGF0ZS9FeGVjRGVsZXRlCisJICogKFRP RE86IGlmIGl0IHdhcyAqbm90KiBjb25jdXJyZW50bHkgdXBkYXRlZCwgZG9lcyB0YWJsZV90 dXBsZV91cGRhdGUgbG9jayB0aGUgdHVwbGUgaXRzZWxmPworCSAqIEkgZG9uJ3QgZm91bmQg dGhlIGNvZGUgZm9yIHRoYXQgeWV0LCBhbmQgbWF5YmUgaXQgZGVwZW5kcyBvbiB0aGUgQU0/ KQorCSAqIGFuZCBpdCBoYXMgcGFzc2VkIEV2YWxQbGFuUXVhbC4KKwkgKiBNYWtlIHN1cmUg d2UncmUgbG9va2luZyBhdCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbi4KKwkgKiBPdGhlcndp c2UgY29uY3VycmVudCB1cGRhdGVzIG9mIHRoZSBzYW1lIHR1cGxlIGluIFJFQUQgQ09NTUlU VEVECisJICogY291bGQgaW5zZXJ0IGNvbmZsaWN0aW5nICJsZWZ0b3ZlcnMiLgorCSAqLwor CWlmICghdGFibGVfdHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjLCB0dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKKwkJ ZWxvZyhFUlJPUiwgImZhaWxlZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0Yi KTsKKworCW9sZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHR1cGxlU2xvdCwgZm9yUG9ydGlv bk9mLT5yYW5nZVZhci0+dmFyYXR0bm8sICZpc051bGwpOworCisJaWYgKGlzTnVsbCkKKwkJ ZWxvZyhFUlJPUiwgImZvdW5kIGEgTlVMTCByYW5nZSBpbiBhIHRlbXBvcmFsIHRhYmxlIik7 CisJb2xkUmFuZ2VUeXBlID0gRGF0dW1HZXRSYW5nZVR5cGVQKG9sZFJhbmdlKTsKKworCS8q IEdldCB0aGUgdGFyZ2V0IHJhbmdlLiAqLworCisJdGFyZ2V0UmFuZ2VUeXBlID0gRGF0dW1H ZXRSYW5nZVR5cGVQKGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZSk7CisKKwkvKgorCSAqIEdl dCB0aGUgcmFuZ2UncyB0eXBlIGNhY2hlIGVudHJ5LiBUaGlzIGlzIHdvcnRoIGNhY2hpbmcg Zm9yIHRoZSB3aG9sZSBVUERBVEUKKwkgKiBsaWtlIHJhbmdlIGZ1bmN0aW9ucyBkby4KKwkg Ki8KKworCXR5cGNhY2hlID0gZnBvU3RhdGUtPmZwX3JhbmdldHlwY2FjaGU7CisJaWYgKHR5 cGNhY2hlID09IE5VTEwpCisJeworCQl0eXBjYWNoZSA9IGxvb2t1cF90eXBlX2NhY2hlKHJh bmdlVHlwZU9pZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlpZiAodHlwY2FjaGUtPnJu Z2VsZW10eXBlID09IE5VTEwpCisJCQllbG9nKEVSUk9SLCAidHlwZSAldSBpcyBub3QgYSBy YW5nZSB0eXBlIiwgcmFuZ2VUeXBlT2lkKTsKKwkJZnBvU3RhdGUtPmZwX3JhbmdldHlwY2Fj aGUgPSB0eXBjYWNoZTsKKwl9CisKKwkvKiBHZXQgdGhlIHJhbmdlcyB0byB0aGUgbGVmdC9y aWdodCBvZiB0aGUgdGFyZ2V0ZWQgcmFuZ2UuICovCisKKwlyYW5nZV9sZWZ0b3Zlcl9pbnRl cm5hbCh0eXBjYWNoZSwgb2xkUmFuZ2VUeXBlLCB0YXJnZXRSYW5nZVR5cGUsICZsZWZ0b3Zl clJhbmdlVHlwZTEsCisJCQkmbGVmdG92ZXJSYW5nZVR5cGUyKTsKKworCS8qCisJICogSW5z ZXJ0IGEgY29weSBvZiB0aGUgdHVwbGUgd2l0aCB0aGUgbG93ZXIgbGVmdG92ZXIgcmFuZ2Uu CisJICogRXZlbiBpZiB0aGUgdGFibGUgaXMgcGFydGl0aW9uZWQsCisJICogb3VyIGluc2Vy dCB3b24ndCBleHRlbmQgcGFzdCB0aGUgY3VycmVudCByb3csIHNvIHdlIGRvbid0IG5lZWQg dG8gcmUtcm91dGUuCisJICogVE9ETzogUmVhbGx5PyBXaGF0IGlmIHlvdSB1cGRhdGUgdGhl IHBhcnRpdGlvbiBrZXk/CisJICovCisKKwlpZiAoIVJhbmdlSXNFbXB0eShsZWZ0b3ZlclJh bmdlVHlwZTEpKQorCXsKKwkJLy8gVE9ETzogYW55dGhpbmcgd2UgbmVlZCB0byBjbGVhciBo ZXJlPworCQkvLyBBcmUgd2UgaW4gdGhlIHJvdyBjb250ZXh0PworCQlIZWFwVHVwbGUgb2xk dHVwbGUgPSBFeGVjRmV0Y2hTbG90SGVhcFR1cGxlKG9sZHR1cGxlU2xvdCwgZmFsc2UsIE5V TEwpOworCQlFeGVjRm9yY2VTdG9yZUhlYXBUdXBsZShvbGR0dXBsZSwgbGVmdG92ZXJUdXBs ZTEsIGZhbHNlKTsKKworCQlzZXRfbGVmdG92ZXJfdHVwbGVfYm91bmRzKGxlZnRvdmVyVHVw bGUxLCBmb3JQb3J0aW9uT2YsIHR5cGNhY2hlLCBsZWZ0b3ZlclJhbmdlVHlwZTEpOworCQlF eGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyVHVwbGUxKTsKKworCQkvLyBUT0RPOiBOZWVk IHRvIHNhdmUgY29udGV4dC0+bXRzdGF0ZS0+bXRfdHJhbnNpdGlvbl9jYXB0dXJlPyAoU2Vl IGNvbW1lbnQgb24gRXhlY0luc2VydCkKKwkJRXhlY0luc2VydChjb250ZXh0LCByZXN1bHRS ZWxJbmZvLCBsZWZ0b3ZlclR1cGxlMSwgbm9kZS0+Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsK Kwl9CisKKwkvKgorCSAqIEluc2VydCBhIGNvcHkgb2YgdGhlIHR1cGxlIHdpdGggdGhlIHVw cGVyIGxlZnRvdmVyIHJhbmdlCisJICogRXZlbiBpZiB0aGUgdGFibGUgaXMgcGFydGl0aW9u ZWQsCisJICogb3VyIGluc2VydCB3b24ndCBleHRlbmQgcGFzdCB0aGUgY3VycmVudCByb3cs IHNvIHdlIGRvbid0IG5lZWQgdG8gcmUtcm91dGUuCisJICogVE9ETzogUmVhbGx5PyBXaGF0 IGlmIHlvdSB1cGRhdGUgdGhlIHBhcnRpdGlvbiBrZXk/CisJICovCisKKwlpZiAoIVJhbmdl SXNFbXB0eShsZWZ0b3ZlclJhbmdlVHlwZTIpKQorCXsKKwkJSGVhcFR1cGxlIG9sZHR1cGxl ID0gRXhlY0ZldGNoU2xvdEhlYXBUdXBsZShvbGR0dXBsZVNsb3QsIGZhbHNlLCBOVUxMKTsK KwkJRXhlY0ZvcmNlU3RvcmVIZWFwVHVwbGUob2xkdHVwbGUsIGxlZnRvdmVyVHVwbGUyLCBm YWxzZSk7CisKKwkJc2V0X2xlZnRvdmVyX3R1cGxlX2JvdW5kcyhsZWZ0b3ZlclR1cGxlMiwg Zm9yUG9ydGlvbk9mLCB0eXBjYWNoZSwgbGVmdG92ZXJSYW5nZVR5cGUyKTsKKwkJRXhlY01h dGVyaWFsaXplU2xvdChsZWZ0b3ZlclR1cGxlMik7CisKKwkJLy8gVE9ETzogTmVlZCB0byBz YXZlIGNvbnRleHQtPm10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZT8gKFNlZSBjb21t ZW50IG9uIEV4ZWNJbnNlcnQpCisJCUV4ZWNJbnNlcnQoY29udGV4dCwgcmVzdWx0UmVsSW5m bywgbGVmdG92ZXJUdXBsZTIsIG5vZGUtPmNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJfQor fQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0JhdGNoSW5zZXJ0CiAgKgpAQCAtMTM1Nyw3 ICsxNDk2LDggQEAgRXhlY0RlbGV0ZUFjdChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQs IFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAgKgogICogQ2xvc2luZyBzdGVwcyBv ZiB0dXBsZSBkZWxldGlvbjsgdGhpcyBpbnZva2VzIEFGVEVSIEZPUiBFQUNIIFJPVyB0cmln Z2VycywKICAqIGluY2x1ZGluZyB0aGUgVVBEQVRFIHRyaWdnZXJzIGlmIHRoZSBkZWxldGlv biBpcyBiZWluZyBkb25lIGFzIHBhcnQgb2YgYQotICogY3Jvc3MtcGFydGl0aW9uIHR1cGxl IG1vdmUuCisgKiBjcm9zcy1wYXJ0aXRpb24gdHVwbGUgbW92ZS4gSXQgYWxzbyBpbnNlcnRz IGxlZnRvdmVycyBmcm9tIGEgRk9SIFBPUlRJT04gT0YKKyAqIGRlbGV0ZS4KICAqLwogc3Rh dGljIHZvaWQKIEV4ZWNEZWxldGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRl eHQsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCkBAIC0xMzkwLDYgKzE1MzAsMTEg QEAgRXhlY0RlbGV0ZUVwaWxvZ3VlKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywKIAkJYXJfZGVsZXRlX3RyaWdfdGNzID0gTlVM TDsKIAl9CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElPTiBPRiAqLwor CS8vIFRPRE86IFNraXAgdGhpcyBmb3IgRkRXIGRlbGV0ZXM/CisJaWYgKCgoTW9kaWZ5VGFi bGUgKikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikKKwkJRXhl Y0ZvclBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBlc3RhdGUsIHJlc3VsdFJlbEluZm8s IHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIERFTEVURSBUcmlnZ2VycyAqLwogCUV4ZWNB UkRlbGV0ZVRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgdHVwbGVpZCwgb2xkdHVw bGUsCiAJCQkJCQkgYXJfZGVsZXRlX3RyaWdfdGNzLCBjaGFuZ2luZ1BhcnQpOwpAQCAtMjEz Myw2ICsyMjc4LDExIEBAIEV4ZWNVcGRhdGVFcGlsb2d1ZShNb2RpZnlUYWJsZUNvbnRleHQg KmNvbnRleHQsIFVwZGF0ZUNvbnRleHQgKnVwZGF0ZUN4dCwKIAkJCQkJCQkJCQkJICAgTlVM TCwgTklMLAogCQkJCQkJCQkJCQkgICAodXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzID09IFRV X1N1bW1hcml6aW5nKSk7CiAKKwkvKiBDb21wdXRlIGxlZnRvdmVycyBpbiBGT1IgUE9SVElP TiBPRiAqLworCS8vIFRPRE86IFNraXAgdGhpcyBmb3IgRkRXIHVwZGF0ZXM/CisJaWYgKCgo TW9kaWZ5VGFibGUgKikgY29udGV4dC0+bXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25P ZikKKwkJRXhlY0ZvclBvcnRpb25PZkxlZnRvdmVycyhjb250ZXh0LCBjb250ZXh0LT5lc3Rh dGUsIHJlc3VsdFJlbEluZm8sIHR1cGxlaWQpOworCiAJLyogQUZURVIgUk9XIFVQREFURSBU cmlnZ2VycyAqLwogCUV4ZWNBUlVwZGF0ZVRyaWdnZXJzKGNvbnRleHQtPmVzdGF0ZSwgcmVz dWx0UmVsSW5mbywKIAkJCQkJCSBOVUxMLCBOVUxMLApAQCAtMzYxMCw2ICszNzYwLDcgQEAg RXhlY01vZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQkgKiBSZXNldCBwZXItdHVw bGUgbWVtb3J5IGNvbnRleHQgdXNlZCBmb3IgcHJvY2Vzc2luZyBvbiBjb25mbGljdCBhbmQK IAkJICogcmV0dXJuaW5nIGNsYXVzZXMsIHRvIGZyZWUgYW55IGV4cHJlc3Npb24gZXZhbHVh dGlvbiBzdG9yYWdlCiAJCSAqIGFsbG9jYXRlZCBpbiB0aGUgcHJldmlvdXMgY3ljbGUuCisJ CSAqIFRPRE86IEl0IHNvdW5kcyBsaWtlIEZPUiBQT1JUSU9OIE9GIG1pZ2h0IG5lZWQgdG8g ZG8gc29tZXRoaW5nIGhlcmUgdG9vPwogCQkgKi8KIAkJaWYgKHBzdGF0ZS0+cHNfRXhwckNv bnRleHQpCiAJCQlSZXNldEV4cHJDb250ZXh0KHBzdGF0ZS0+cHNfRXhwckNvbnRleHQpOwpA QCAtNDI4Miw2ICs0NDMzLDc1IEBAIEV4ZWNJbml0TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUg Km5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQl9CiAJfQogCisJLyoKKwkg KiBJZiBuZWVkZWQsIGluaXRpYWxpemUgdGhlIHRhcmdldCByYW5nZSBmb3IgRk9SIFBPUlRJ T04gT0YuCisJICovCisJaWYgKG5vZGUtPmZvclBvcnRpb25PZikKKwl7CisJCVR1cGxlRGVz YyB0dXBEZXNjOworCQlGb3JQb3J0aW9uT2ZFeHByICpmb3JQb3J0aW9uT2Y7CisJCURhdHVt CXRhcmdldFJhbmdlOworCQlib29sCWlzTnVsbDsKKwkJRXhwckNvbnRleHQgKmVjb250ZXh0 OworCQlFeHByU3RhdGUgKmV4cHJTdGF0ZTsKKwkJRm9yUG9ydGlvbk9mU3RhdGUgKmZwb1N0 YXRlOworCisJCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOworCQl0 dXBEZXNjID0gcmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9hdHQ7CisJCWZv clBvcnRpb25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRpb25PZjsK KworCQkvKiBFdmFsIHRoZSBGT1IgUE9SVElPTiBPRiB0YXJnZXQgKi8KKwkJaWYgKG10c3Rh dGUtPnBzLnBzX0V4cHJDb250ZXh0ID09IE5VTEwpCisJCQlFeGVjQXNzaWduRXhwckNvbnRl eHQoZXN0YXRlLCAmbXRzdGF0ZS0+cHMpOworCQllY29udGV4dCA9IG10c3RhdGUtPnBzLnBz X0V4cHJDb250ZXh0OworCisJCWV4cHJTdGF0ZSA9IEV4ZWNQcmVwYXJlRXhwcigoRXhwciAq KSBmb3JQb3J0aW9uT2YtPnRhcmdldFJhbmdlLCBlc3RhdGUpOworCQl0YXJnZXRSYW5nZSA9 IEV4ZWNFdmFsRXhwcihleHByU3RhdGUsIGVjb250ZXh0LCAmaXNOdWxsKTsKKwkJaWYgKGlz TnVsbCkKKwkJCWVsb2coRVJST1IsICJHb3QgYSBOVUxMIEZPUiBQT1JUSU9OIE9GIHRhcmdl dCByYW5nZSIpOworCisJCS8qIENyZWF0ZSBzdGF0ZSBmb3IgRk9SIFBPUlRJT04gT0Ygb3Bl cmF0aW9uICovCisKKwkJZnBvU3RhdGUgPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZTdGF0ZSk7 CisJCWZwb1N0YXRlLT5mcF9yYW5nZU5hbWUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlX25hbWU7 CisJCWZwb1N0YXRlLT5mcF9yYW5nZVR5cGUgPSBmb3JQb3J0aW9uT2YtPnJhbmdlVHlwZTsK KwkJZnBvU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmb3JQb3J0aW9uT2YtPnJhbmdlVmFyLT52 YXJhdHRubzsKKwkJZnBvU3RhdGUtPmZwX3RhcmdldFJhbmdlID0gdGFyZ2V0UmFuZ2U7CisK KwkJLyogSW5pdGlhbGl6ZSBzbG90IGZvciB0aGUgZXhpc3RpbmcgdHVwbGUgKi8KKworCQlm cG9TdGF0ZS0+ZnBfRXhpc3RpbmcgPQorCQkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0UmVs SW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCSAgJm10c3RhdGUtPnBzLnN0YXRlLT5l c190dXBsZVRhYmxlKTsKKworCQkvKiBDcmVhdGUgdGhlIHR1cGxlIHNsb3RzIGZvciBJTlNF UlRpbmcgdGhlIGxlZnRvdmVycyAqLworCisJCWZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjEgPQor CQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0YXRlLT5wcy5zdGF0ZSwgdHVwRGVzYywg JlRUU09wc1ZpcnR1YWwpOworCQlmcG9TdGF0ZS0+ZnBfTGVmdG92ZXIyID0KKwkJCUV4ZWNJ bml0RXh0cmFUdXBsZVNsb3QobXRzdGF0ZS0+cHMuc3RhdGUsIHR1cERlc2MsICZUVFNPcHNW aXJ0dWFsKTsKKworCQkvKgorCQkgKiBXZSBtdXN0IGF0dGFjaCB0aGUgRm9yUG9ydGlvbk9m U3RhdGUgdG8gYWxsIHJlc3VsdCByZWxzLAorCQkgKiBpbiBjYXNlIG9mIGEgY3Jvc3MtcGFy dGl0aW9uIHVwZGF0ZSBvciB0cmlnZ2VycyBmaXJpbmcKKwkJICogb24gcGFydGl0aW9ucy4K KwkJICoKKwkJICogVGhleSBzaG91bGQgYWxsIGhhdmUgdGhlIHNhbWUgdHVwbGVkZXNjLCBz byBpdCdzIG9rYXkKKwkJICogdGhhdCBhbnkgb25lIG9mIHRoZW0gY2FuIHVzZSB0aGUgdHVw bGUgdGFibGUgc2xvdHMgdGhlcmUuCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbnJlbHM7 IGkrKykKKwkJeworCQkJcmVzdWx0UmVsSW5mbyA9ICZtdHN0YXRlLT5yZXN1bHRSZWxJbmZv W2ldOworCQkJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mID0gZnBvU3RhdGU7CisJ CX0KKworCQkvKiBNYWtlIHN1cmUgdGhlIHJvb3QgcmVsYXRpb24gaGFzIHRoZSBGT1IgUE9S VElPTiBPRiBjbGF1c2UgdG9vLiAqLworCQlpZiAobm9kZS0+cm9vdFJlbGF0aW9uID4gMCkK KwkJCW10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBmcG9T dGF0ZTsKKworCQkvKiBEb24ndCBmcmVlIHRoZSBFeHByQ29udGV4dCBoZXJlIGJlY2F1c2Ug dGhlIHJlc3VsdCBtdXN0IGxhc3QgZm9yIHRoZSB3aG9sZSBxdWVyeSAqLworCX0KKwogCS8q CiAJICogSWYgd2UgaGF2ZSBhbnkgc2Vjb25kYXJ5IHJlbGF0aW9ucyBpbiBhbiBVUERBVEUg b3IgREVMRVRFLCB0aGV5IG5lZWQgdG8KIAkgKiBiZSB0cmVhdGVkIGxpa2Ugbm9uLWxvY2tl ZCByZWxhdGlvbnMgaW4gU0VMRUNUIEZPUiBVUERBVEUsIGllLCB0aGUKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKaW5kZXggYzAzZjRmMjNlMi4uNjJjY2JmOWQzYyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvbm9k ZUZ1bmNzLmMKQEAgLTI0NDIsNiArMjQ0MiwxNCBAQCBleHByZXNzaW9uX3RyZWVfd2Fsa2Vy X2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQl9CiAJCQlicmVhazsK KwkJY2FzZSBUX0ZvclBvcnRpb25PZkV4cHI6CisJCQl7CisJCQkJRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mID0gKEZvclBvcnRpb25PZkV4cHIgKikgbm9kZTsKKworCQkJCWlm IChXQUxLKGZvclBvcnRpb25PZi0+dGFyZ2V0UmFuZ2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsK KwkJCX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7 CiAJCQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0 ZXBPcCAqKSBub2RlOwpAQCAtMjU4Miw2ICsyNTkwLDggQEAgcXVlcnlfdHJlZV93YWxrZXJf aW1wbChRdWVyeSAqcXVlcnksCiAJCXJldHVybiB0cnVlOwogCWlmIChXQUxLKHF1ZXJ5LT5t ZXJnZUFjdGlvbkxpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKKwlpZiAoV0FMSyhxdWVyeS0+Zm9y UG9ydGlvbk9mKSkKKwkJcmV0dXJuIHRydWU7CiAJaWYgKFdBTEsocXVlcnktPnJldHVybmlu Z0xpc3QpKQogCQlyZXR1cm4gdHJ1ZTsKIAlpZiAoV0FMSyhxdWVyeS0+am9pbnRyZWUpKQpA QCAtMzQyNSw2ICszNDM1LDE5IEBAIGV4cHJlc3Npb25fdHJlZV9tdXRhdG9yX2ltcGwoTm9k ZSAqbm9kZSwKIAkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKIAkJCX0KIAkJCWJyZWFr OworCQljYXNlIFRfRm9yUG9ydGlvbk9mRXhwcjoKKwkJCXsKKwkJCQlGb3JQb3J0aW9uT2ZF eHByICpmcG8gPSAoRm9yUG9ydGlvbk9mRXhwciAqKSBub2RlOworCQkJCUZvclBvcnRpb25P ZkV4cHIgKm5ld25vZGU7CisKKwkJCQlGTEFUQ09QWShuZXdub2RlLCBmcG8sIEZvclBvcnRp b25PZkV4cHIpOworCQkJCU1VVEFURShuZXdub2RlLT5yYW5nZVZhciwgZnBvLT5yYW5nZVZh ciwgVmFyICopOworCQkJCU1VVEFURShuZXdub2RlLT50YXJnZXRSYW5nZSwgZnBvLT50YXJn ZXRSYW5nZSwgTm9kZSAqKTsKKwkJCQlNVVRBVEUobmV3bm9kZS0+cmFuZ2VTZXQsIGZwby0+ cmFuZ2VTZXQsIExpc3QgKik7CisKKwkJCQlyZXR1cm4gKE5vZGUgKikgbmV3bm9kZTsKKwkJ CX0KKwkJCWJyZWFrOwogCQljYXNlIFRfUGFydGl0aW9uUHJ1bmVTdGVwT3A6CiAJCQl7CiAJ CQkJUGFydGl0aW9uUHJ1bmVTdGVwT3AgKm9wc3RlcCA9IChQYXJ0aXRpb25QcnVuZVN0ZXBP cCAqKSBub2RlOwpAQCAtMzYwMyw2ICszNjI2LDcgQEAgcXVlcnlfdHJlZV9tdXRhdG9yX2lt cGwoUXVlcnkgKnF1ZXJ5LAogCU1VVEFURShxdWVyeS0+d2l0aENoZWNrT3B0aW9ucywgcXVl cnktPndpdGhDaGVja09wdGlvbnMsIExpc3QgKik7CiAJTVVUQVRFKHF1ZXJ5LT5vbkNvbmZs aWN0LCBxdWVyeS0+b25Db25mbGljdCwgT25Db25mbGljdEV4cHIgKik7CiAJTVVUQVRFKHF1 ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIHF1ZXJ5LT5tZXJnZUFjdGlvbkxpc3QsIExpc3QgKik7 CisJTVVUQVRFKHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIHF1ZXJ5LT5mb3JQb3J0aW9uT2YsIEZv clBvcnRpb25PZkV4cHIgKik7CiAJTVVUQVRFKHF1ZXJ5LT5yZXR1cm5pbmdMaXN0LCBxdWVy eS0+cmV0dXJuaW5nTGlzdCwgTGlzdCAqKTsKIAlNVVRBVEUocXVlcnktPmpvaW50cmVlLCBx dWVyeS0+am9pbnRyZWUsIEZyb21FeHByICopOwogCU1VVEFURShxdWVyeS0+c2V0T3BlcmF0 aW9ucywgcXVlcnktPnNldE9wZXJhdGlvbnMsIE5vZGUgKik7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKaW5kZXggMzRjYTZkNGFjMi4uOTU0ZWI0ZGE4MyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMzExLDcg KzMxMSw4IEBAIHN0YXRpYyBNb2RpZnlUYWJsZSAqbWFrZV9tb2RpZnl0YWJsZShQbGFubmVy SW5mbyAqcm9vdCwgUGxhbiAqc3VicGxhbiwKIAkJCQkJCQkJCSBMaXN0ICp1cGRhdGVDb2xu b3NMaXN0cywKIAkJCQkJCQkJCSBMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlzdCAq cmV0dXJuaW5nTGlzdHMsCiAJCQkJCQkJCQkgTGlzdCAqcm93TWFya3MsIE9uQ29uZmxpY3RF eHByICpvbmNvbmZsaWN0LAotCQkJCQkJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGlu dCBlcHFQYXJhbSk7CisJCQkJCQkJCQkgTGlzdCAqbWVyZ2VBY3Rpb25MaXN0cywgRm9yUG9y dGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLAorCQkJCQkJCQkJIGludCBlcHFQYXJhbSk7CiBz dGF0aWMgR2F0aGVyTWVyZ2UgKmNyZWF0ZV9nYXRoZXJfbWVyZ2VfcGxhbihQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJIEdhdGhlck1lcmdlUGF0aCAqYmVzdF9wYXRoKTsKIApA QCAtMjgzNSw2ICsyODM2LDcgQEAgY3JlYXRlX21vZGlmeXRhYmxlX3BsYW4oUGxhbm5lcklu Zm8gKnJvb3QsIE1vZGlmeVRhYmxlUGF0aCAqYmVzdF9wYXRoKQogCQkJCQkJCWJlc3RfcGF0 aC0+cm93TWFya3MsCiAJCQkJCQkJYmVzdF9wYXRoLT5vbmNvbmZsaWN0LAogCQkJCQkJCWJl c3RfcGF0aC0+bWVyZ2VBY3Rpb25MaXN0cywKKwkJCQkJCQliZXN0X3BhdGgtPmZvclBvcnRp b25PZiwKIAkJCQkJCQliZXN0X3BhdGgtPmVwcVBhcmFtKTsKIAogCWNvcHlfZ2VuZXJpY19w YXRoX2luZm8oJnBsYW4tPnBsYW4sICZiZXN0X3BhdGgtPnBhdGgpOwpAQCAtNzAwNSw3ICs3 MDA3LDggQEAgbWFrZV9tb2RpZnl0YWJsZShQbGFubmVySW5mbyAqcm9vdCwgUGxhbiAqc3Vi cGxhbiwKIAkJCQkgTGlzdCAqdXBkYXRlQ29sbm9zTGlzdHMsCiAJCQkJIExpc3QgKndpdGhD aGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5pbmdMaXN0cywKIAkJCQkgTGlzdCAqcm93 TWFya3MsIE9uQ29uZmxpY3RFeHByICpvbmNvbmZsaWN0LAotCQkJCSBMaXN0ICptZXJnZUFj dGlvbkxpc3RzLCBpbnQgZXBxUGFyYW0pCisJCQkJIExpc3QgKm1lcmdlQWN0aW9uTGlzdHMs IEZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZiwKKwkJCQkgaW50IGVwcVBhcmFtKQog ewogCU1vZGlmeVRhYmxlICpub2RlID0gbWFrZU5vZGUoTW9kaWZ5VGFibGUpOwogCUxpc3QJ ICAgKmZkd19wcml2YXRlX2xpc3Q7CkBAIC03MDcxLDYgKzcwNzQsNyBAQCBtYWtlX21vZGlm eXRhYmxlKFBsYW5uZXJJbmZvICpyb290LCBQbGFuICpzdWJwbGFuLAogCQlub2RlLT5leGNs UmVsVGxpc3QgPSBvbmNvbmZsaWN0LT5leGNsUmVsVGxpc3Q7CiAJfQogCW5vZGUtPnVwZGF0 ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CisJbm9kZS0+Zm9yUG9ydGlvbk9m ID0gKE5vZGUgKikgZm9yUG9ydGlvbk9mOwogCW5vZGUtPndpdGhDaGVja09wdGlvbkxpc3Rz ID0gd2l0aENoZWNrT3B0aW9uTGlzdHM7CiAJbm9kZS0+cmV0dXJuaW5nTGlzdHMgPSByZXR1 cm5pbmdMaXN0czsKIAlub2RlLT5yb3dNYXJrcyA9IHJvd01hcmtzOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IDQ0ZWZiMWY0ZWIuLmIyZDhhNjdmNGMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTE5NjksNiArMTk2OSw3 IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9m cmFjdGlvbikKIAkJCQkJCQkJCQlyb3dNYXJrcywKIAkJCQkJCQkJCQlwYXJzZS0+b25Db25m bGljdCwKIAkJCQkJCQkJCQltZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJCQkJCXBhcnNlLT5m b3JQb3J0aW9uT2YsCiAJCQkJCQkJCQkJYXNzaWduX3NwZWNpYWxfZXhlY19wYXJhbShyb290 KSk7CiAJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0 aG5vZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKaW5kZXgg MjExYmE2NTM4OS4uODIzZDFmYmFiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGF0aG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w YXRobm9kZS5jCkBAIC0zNjcwLDcgKzM2NzAsOCBAQCBjcmVhdGVfbW9kaWZ5dGFibGVfcGF0 aChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJTGlzdCAqdXBk YXRlQ29sbm9zTGlzdHMsCiAJCQkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRpb25MaXN0cywgTGlz dCAqcmV0dXJuaW5nTGlzdHMsCiAJCQkJCQlMaXN0ICpyb3dNYXJrcywgT25Db25mbGljdEV4 cHIgKm9uY29uZmxpY3QsCi0JCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBpbnQgZXBx UGFyYW0pCisJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLCBGb3JQb3J0aW9uT2ZFeHBy ICpmb3JQb3J0aW9uT2YsCisJCQkJCQlpbnQgZXBxUGFyYW0pCiB7CiAJTW9kaWZ5VGFibGVQ YXRoICpwYXRobm9kZSA9IG1ha2VOb2RlKE1vZGlmeVRhYmxlUGF0aCk7CiAKQEAgLTM3MzYs NiArMzczNyw3IEBAIGNyZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICpyZWwsCiAJcGF0aG5vZGUtPnJldHVybmluZ0xpc3RzID0gcmV0dXJu aW5nTGlzdHM7CiAJcGF0aG5vZGUtPnJvd01hcmtzID0gcm93TWFya3M7CiAJcGF0aG5vZGUt Pm9uY29uZmxpY3QgPSBvbmNvbmZsaWN0OworCXBhdGhub2RlLT5mb3JQb3J0aW9uT2YgPSBm b3JQb3J0aW9uT2Y7CiAJcGF0aG5vZGUtPmVwcVBhcmFtID0gZXBxUGFyYW07CiAJcGF0aG5v ZGUtPm1lcmdlQWN0aW9uTGlzdHMgPSBtZXJnZUFjdGlvbkxpc3RzOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2Fu YWx5emUuYwppbmRleCA3YTFkZmI2MzY0Li5jNGI2ZDQ0M2NmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFs eXplLmMKQEAgLTQ3LDExICs0NywxMyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9yZWxh dGlvbi5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfdHlwZS5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKICNpbmNs dWRlICJwYXJzZXIvcGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFu aXAuaCIKICNpbmNsdWRlICJ1dGlscy9iYWNrZW5kX3N0YXR1cy5oIgogI2luY2x1ZGUgInV0 aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCisjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRp bHMvc3lzY2FjaGUuaCIKIApAQCAtNjAsMTAgKzYyLDE3IEBACiBwb3N0X3BhcnNlX2FuYWx5 emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rID0gTlVMTDsKIAogc3RhdGlj IFF1ZXJ5ICp0cmFuc2Zvcm1PcHRpb25hbFNlbGVjdEludG8oUGFyc2VTdGF0ZSAqcHN0YXRl LCBOb2RlICpwYXJzZVRyZWUpOworc3RhdGljIE5vZGUgKmFkZEZvclBvcnRpb25PZldoZXJl Q29uZGl0aW9ucyhRdWVyeSAqcXJ5LCBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25P ZiwKKwkJCQkJCQkJCQkJTm9kZSAqd2hlcmVDbGF1c2UpOwogc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRlU3RtdCAqc3RtdCk7 CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybUluc2VydFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRl LCBJbnNlcnRTdG10ICpzdG10KTsKIHN0YXRpYyBPbkNvbmZsaWN0RXhwciAqdHJhbnNmb3Jt T25Db25mbGljdENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCQkgT25D b25mbGljdENsYXVzZSAqb25Db25mbGljdENsYXVzZSk7CitzdGF0aWMgTm9kZSAqdHJhbnNm b3JtRm9yUG9ydGlvbk9mQm91bmQoTm9kZSAqbiwgYm9vbCBpc0xvd2VyQm91bmQpOworc3Rh dGljIEZvclBvcnRpb25PZkV4cHIgKnRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJCQkJCQkJIGludCBydGluZGV4LAorCQkJCQkJCQkJ CQkJCSBGb3JQb3J0aW9uT2ZDbGF1c2UgKmZvclBvcnRpb25PZkNsYXVzZSwKKwkJCQkJCQkJ CQkJCQkgYm9vbCBpc1VwZGF0ZSk7CiBzdGF0aWMgaW50CWNvdW50X3Jvd2V4cHJfY29sdW1u cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpOwogc3RhdGljIFF1ZXJ5ICp0cmFu c2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCk7 CiBzdGF0aWMgUXVlcnkgKnRyYW5zZm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3Rh dGUsIFNlbGVjdFN0bXQgKnN0bXQpOwpAQCAtNDc5LDYgKzQ4OCwyMCBAQCBzdG10X3JlcXVp cmVzX3BhcnNlX2FuYWx5c2lzKFJhd1N0bXQgKnBhcnNlVHJlZSkKIAlyZXR1cm4gcmVzdWx0 OwogfQogCitzdGF0aWMgTm9kZSAqCithZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMo UXVlcnkgKnFyeSwgRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsIE5vZGUgKndo ZXJlQ2xhdXNlKQoreworCWlmIChmb3JQb3J0aW9uT2YpCisJeworCQlpZiAod2hlcmVDbGF1 c2UpCisJCQlyZXR1cm4gKE5vZGUgKikgbWFrZUJvb2xFeHByKEFORF9FWFBSLCBsaXN0X21h a2UyKHFyeS0+Zm9yUG9ydGlvbk9mLT5vdmVybGFwc0V4cHIsIHdoZXJlQ2xhdXNlKSwgLTEp OworCQllbHNlCisJCQlyZXR1cm4gcXJ5LT5mb3JQb3J0aW9uT2YtPm92ZXJsYXBzRXhwcjsK Kwl9CisJZWxzZQorCQlyZXR1cm4gd2hlcmVDbGF1c2U7Cit9CisKIC8qCiAgKiBhbmFseXpl X3JlcXVpcmVzX3NuYXBzaG90CiAgKgkJUmV0dXJucyB0cnVlIGlmIGEgc25hcHNob3QgbXVz dCBiZSBzZXQgYmVmb3JlIGRvaW5nIHBhcnNlIGFuYWx5c2lzCkBAIC01MTIsNiArNTM1LDcg QEAgdHJhbnNmb3JtRGVsZXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIERlbGV0ZVN0bXQg KnN0bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5h bWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAg ICpxdWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9ERUxFVEU7CkBAIC01NTAsNyAr NTc0LDExIEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxl dGVTdG10ICpzdG10KQogCW5zaXRlbS0+cF9sYXRlcmFsX29ubHkgPSBmYWxzZTsKIAluc2l0 ZW0tPnBfbGF0ZXJhbF9vayA9IHRydWU7CiAKLQlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCBzdG10LT53aGVyZUNsYXVzZSwKKwlpZiAoc3RtdC0+Zm9yUG9ydGlvbk9m KQorCQlxcnktPmZvclBvcnRpb25PZiA9IHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShw c3RhdGUsIHFyeS0+cmVzdWx0UmVsYXRpb24sIHN0bXQtPmZvclBvcnRpb25PZiwgZmFsc2Up OworCisJd2hlcmVDbGF1c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5 LCBzdG10LT5mb3JQb3J0aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJh bnNmb3JtV2hlcmVDbGF1c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9L SU5EX1dIRVJFLCAiV0hFUkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9y bVJldHVybmluZ0xpc3QocHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTExNzMs NyArMTIwMSw3IEBAIHRyYW5zZm9ybU9uQ29uZmxpY3RDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkgKiBOb3cgdHJhbnNmb3JtIHRoZSBVUERBVEUgc3ViZXhwcmVzc2lvbnMuCiAJ CSAqLwogCQlvbkNvbmZsaWN0U2V0ID0KLQkJCXRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3Qo cHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0KTsKKwkJCXRyYW5zZm9ybVVw ZGF0ZVRhcmdldExpc3QocHN0YXRlLCBvbkNvbmZsaWN0Q2xhdXNlLT50YXJnZXRMaXN0LCBO VUxMKTsKIAogCQlvbkNvbmZsaWN0V2hlcmUgPSB0cmFuc2Zvcm1XaGVyZUNsYXVzZShwc3Rh dGUsCiAJCQkJCQkJCQkJCSAgIG9uQ29uZmxpY3RDbGF1c2UtPndoZXJlQ2xhdXNlLApAQCAt MTIwMyw2ICsxMjMxLDE2MSBAQCB0cmFuc2Zvcm1PbkNvbmZsaWN0Q2xhdXNlKFBhcnNlU3Rh dGUgKnBzdGF0ZSwKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKgorICogdHJhbnNmb3JtRm9y UG9ydGlvbk9mQm91bmQKKyAqICAgIHRyYW5zZm9ybXMgVU5CT1VOREVEIHBzZXVkby1jb2x1 bW4gcmVmZXJlbmNlcyB0byBOVUxMCisgKiAgICAod2hpY2ggcmVwcmVzZW50ICJ1bmJvdW5k ZWQiIGluIGEgcmFuZ2UgdHlwZSwgb3RoZXJ3aXNlIHJldHVybnMKKyAqICAgIGl0cyBpbnB1 dCB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBOb2RlICoKK3RyYW5zZm9ybUZvclBvcnRpb25P ZkJvdW5kKE5vZGUgKm4sIGJvb2wgaXNMb3dlckJvdW5kKQoreworCWlmIChub2RlVGFnKG4p ID09IFRfQ29sdW1uUmVmKQorCXsKKwkJQ29sdW1uUmVmICAqY3JlZiA9IChDb2x1bW5SZWYg KikgbjsKKwkJY2hhcgkgICAqY25hbWUgPSAiIjsKKwkJQV9Db25zdAkgICAqbjI7CisKKwkJ aWYgKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykgPT0gMSAmJgorCQkJSXNBKGxpbml0aWFs KGNyZWYtPmZpZWxkcyksIFN0cmluZykpCisJCQljbmFtZSA9IHN0clZhbChsaW5pdGlhbChj cmVmLT5maWVsZHMpKTsKKworCQlpZiAoc3RyY21wKCJ1bmJvdW5kZWQiLCBjbmFtZSkgIT0g MCkKKwkJCXJldHVybiBuOworCisJCW4yID0gbWFrZU5vZGUoQV9Db25zdCk7CisJCW4yLT5p c251bGwgPSB0cnVlOworCQluMi0+bG9jYXRpb24gPSAoKENvbHVtblJlZiAqKW4pLT5sb2Nh dGlvbjsKKworCQlyZXR1cm4gKE5vZGUgKiluMjsKKwl9CisJZWxzZQorCQlyZXR1cm4gbjsK K30KKworLyoKKyAqIHRyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZQorICoKKyAqCSAgVHJh bnNmb3JtcyBhIEZvclBvcnRpb25PZkNsYXVzZSBpbiBhbiBVUERBVEUvREVMRVRFIHN0YXRl bWVudC4KKyAqCisgKgkgIC0gTG9vayB1cCB0aGUgcmFuZ2UvcGVyaW9kIHJlcXVlc3RlZC4K KyAqCSAgLSBCdWlsZCBhIGNvbXBhdGlibGUgcmFuZ2UgdmFsdWUgZnJvbSB0aGUgRlJPTSBh bmQgVE8gZXhwcmVzc2lvbnMuCisgKgkgIC0gQnVpbGQgYW4gIm92ZXJsYXBzIiBleHByZXNz aW9uIGZvciBmaWx0ZXJpbmcuCisgKgkgIC0gRm9yIFVQREFURXMsIGJ1aWxkIGFuICJpbnRl cnNlY3RzIiBleHByZXNzaW9uIHRoZSByZXdyaXRlciBjYW4gYWRkCisgKgkgIC0gdG8gdGhl IHRhcmdldExpc3QgdG8gY2hhbmdlIHRoZSB0ZW1wb3JhbCBib3VuZHMuCisgKi8KK3N0YXRp YyBGb3JQb3J0aW9uT2ZFeHByICoKK3RyYW5zZm9ybUZvclBvcnRpb25PZkNsYXVzZShQYXJz ZVN0YXRlICpwc3RhdGUsCisJCQkJCQkJaW50IHJ0aW5kZXgsCisJCQkJCQkJRm9yUG9ydGlv bk9mQ2xhdXNlICpmb3JQb3J0aW9uT2YsCisJCQkJCQkJYm9vbCBpc1VwZGF0ZSkKK3sKKwlS ZWxhdGlvbiB0YXJnZXRyZWwgPSBwc3RhdGUtPnBfdGFyZ2V0X3JlbGF0aW9uOworCVJURVBl cm1pc3Npb25JbmZvICp0YXJnZXRfcGVybWluZm8gPSBwc3RhdGUtPnBfdGFyZ2V0X25zaXRl bS0+cF9wZXJtaW5mbzsKKwljaGFyICpyYW5nZV9uYW1lID0gZm9yUG9ydGlvbk9mLT5yYW5n ZV9uYW1lOworCWNoYXIgKnJhbmdlX3R5cGVfbmFtZXNwYWNlID0gTlVMTDsKKwljaGFyICpy YW5nZV90eXBlX25hbWUgPSBOVUxMOworCWludCByYW5nZV9hdHRubyA9IEludmFsaWRBdHRy TnVtYmVyOworCUZvcm1fcGdfYXR0cmlidXRlIGF0dHI7CisJRm9yUG9ydGlvbk9mRXhwciAq cmVzdWx0OworCUxpc3QgKnRhcmdldExpc3Q7CisJTm9kZSAqdGFyZ2V0X3N0YXJ0LCAqdGFy Z2V0X2VuZDsKKwlWYXIgKnJhbmdlVmFyOworCUZ1bmNDYWxsICpmYzsKKworCXJlc3VsdCA9 IG1ha2VOb2RlKEZvclBvcnRpb25PZkV4cHIpOworCisJLyogTG9vayB1cCB0aGUgRk9SIFBP UlRJT04gT0YgbmFtZSByZXF1ZXN0ZWQuICovCisJcmFuZ2VfYXR0bm8gPSBhdHRuYW1lQXR0 TnVtKHRhcmdldHJlbCwgcmFuZ2VfbmFtZSwgZmFsc2UpOworCWlmIChyYW5nZV9hdHRubyA9 PSBJbnZhbGlkQXR0ck51bWJlcikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX1VOREVGSU5FRF9DT0xVTU4pLAorCQkJCSBlcnJtc2coImNvbHVtbiBvciBwZXJp b2QgXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCisJCQkJCQly YW5nZV9uYW1lLAorCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUodGFyZ2V0cmVsKSks CisJCQkJIHBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbikpKTsKKwlhdHRyID0gVHVwbGVEZXNjQXR0cih0YXJnZXRyZWwtPnJk X2F0dCwgcmFuZ2VfYXR0bm8gLSAxKTsKKwkvLyBUT0RPOiBjaGVjayBhdHRyLT5hdHRpc2Ry b3BwZWQgKD8pLAorCS8vIGFuZCBmaWd1cmUgb3V0IGNvbmN1cnJlbmN5IGlzc3VlcyB3aXRo IHRoYXQgaW4gZ2VuZXJhbC4KKwkvLyBJdCBzaG91bGQgd29yayB0aGUgc2FtZSBhcyB1cGRh dGluZyBhbnkgb3RoZXIgY29sdW1uLgorCisJLyogTWFrZSBzdXJlIGl0J3MgYSByYW5nZSBj b2x1bW4gKi8KKwlpZiAoIXR5cGVfaXNfcmFuZ2UoYXR0ci0+YXR0dHlwaWQpKQorCQllcmVw b3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9DT0xVTU5fUkVGRVJF TkNFKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwiJXNcIiBp cyBub3QgYSByYW5nZSB0eXBlIiwKKwkJCQkJCXJhbmdlX25hbWUsCisJCQkJCQlSZWxhdGlv bkdldFJlbGF0aW9uTmFtZSh0YXJnZXRyZWwpKSwKKwkJCQkgcGFyc2VyX2VycnBvc2l0aW9u KHBzdGF0ZSwgZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKSkpOworCisJcmFu Z2VWYXIgPSBtYWtlVmFyKAorCQkJcnRpbmRleCwKKwkJCXJhbmdlX2F0dG5vLAorCQkJYXR0 ci0+YXR0dHlwaWQsCisJCQlhdHRyLT5hdHR0eXBtb2QsCisJCQlhdHRyLT5hdHRjb2xsYXRp b24sCisJCQkwKTsKKwlyYW5nZVZhci0+bG9jYXRpb24gPSBmb3JQb3J0aW9uT2YtPnJhbmdl X25hbWVfbG9jYXRpb247CisJcmVzdWx0LT5yYW5nZVZhciA9IHJhbmdlVmFyOworCXJlc3Vs dC0+cmFuZ2VUeXBlID0gYXR0ci0+YXR0dHlwaWQ7CisJaWYgKCFnZXRfdHlwbmFtZV9hbmRf bmFtZXNwYWNlKGF0dHItPmF0dHR5cGlkLCAmcmFuZ2VfdHlwZV9uYW1lLCAmcmFuZ2VfdHlw ZV9uYW1lc3BhY2UpKQorCQllbG9nKEVSUk9SLCAibWlzc2luZyByYW5nZSB0eXBlICVkIiwg YXR0ci0+YXR0dHlwaWQpOworCisKKwkvKgorCSAqIEJ1aWxkIGEgcmFuZ2UgZnJvbSB0aGUg RlJPTSAuLi4gVE8gLi4uLiBib3VuZHMuCisJICogVGhpcyBzaG91bGQgZ2l2ZSBhIGNvbnN0 YW50IHJlc3VsdCwgc28gd2UgYWNjZXB0IGZ1bmN0aW9ucyBsaWtlIE5PVygpCisJICogYnV0 IG5vdCBjb2x1bW4gcmVmZXJlbmNlcywgc3VicXVlcmllcywgZXRjLgorCSAqCisJICogSXQg YWxzbyBwZXJtaXRzIFVOQk9VTkRFRCBpbiBlaXRoZXIgcGxhY2UuCisJICovCisJdGFyZ2V0 X3N0YXJ0ID0gdHJhbnNmb3JtRm9yUG9ydGlvbk9mQm91bmQoZm9yUG9ydGlvbk9mLT50YXJn ZXRfc3RhcnQsIHRydWUpOworCXRhcmdldF9lbmQgICA9IHRyYW5zZm9ybUZvclBvcnRpb25P ZkJvdW5kKGZvclBvcnRpb25PZi0+dGFyZ2V0X2VuZCwgZmFsc2UpOworCWZjID0gbWFrZUZ1 bmNDYWxsKAorCQkJbGlzdF9tYWtlMihtYWtlU3RyaW5nKHJhbmdlX3R5cGVfbmFtZXNwYWNl KSwgbWFrZVN0cmluZyhyYW5nZV90eXBlX25hbWUpKSwKKwkJCWxpc3RfbWFrZTIodGFyZ2V0 X3N0YXJ0LCB0YXJnZXRfZW5kKSwKKwkJCUNPRVJDRV9FWFBMSUNJVF9DQUxMLAorCQkJZm9y UG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9uKTsKKwlyZXN1bHQtPnRhcmdldFJhbmdl ID0gdHJhbnNmb3JtRXhwcihwc3RhdGUsIChOb2RlICopIGZjLCBFWFBSX0tJTkRfVVBEQVRF X1BPUlRJT04pOworCisJLyogb3ZlcmxhcHNFeHByIGlzIHNvbWV0aGluZyB3ZSBjYW4gYWRk IHRvIHRoZSB3aGVyZUNsYXVzZSAqLworCXJlc3VsdC0+b3ZlcmxhcHNFeHByID0gKE5vZGUg KikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIiYmIiwKKwkJCShOb2RlICopIGNvcHlP YmplY3QocmFuZ2VWYXIpLCAoTm9kZSAqKSBmYywKKwkJCWZvclBvcnRpb25PZi0+cmFuZ2Vf bmFtZV9sb2NhdGlvbik7CisKKwlpZiAoaXNVcGRhdGUpCisJeworCQkvKgorCQkgKiBOb3cg bWFrZSBzdXJlIHdlIHVwZGF0ZSB0aGUgc3RhcnQvZW5kIHRpbWUgb2YgdGhlIHJlY29yZC4K KwkJICogRm9yIGEgcmFuZ2UgY29sIChyKSB0aGlzIGlzIGByID0gciAqIHRhcmdldFJhbmdl YC4KKwkJICovCisJCUV4cHIgKnJhbmdlU2V0RXhwciA9IChFeHByICopIG1ha2VTaW1wbGVB X0V4cHIoQUVYUFJfT1AsICIqIiwKKwkJCQkoTm9kZSAqKSBjb3B5T2JqZWN0KHJhbmdlVmFy KSwgKE5vZGUgKikgZmMsCisJCQkJZm9yUG9ydGlvbk9mLT5yYW5nZV9uYW1lX2xvY2F0aW9u KTsKKwkJVGFyZ2V0RW50cnkgKnRsZTsKKworCQl0YXJnZXRMaXN0ID0gTklMOworCQlyYW5n ZVNldEV4cHIgPSAoRXhwciAqKSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgKE5vZGUgKikgcmFu Z2VTZXRFeHByLCBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT04pOworCQl0bGUgPSBtYWtlVGFy Z2V0RW50cnkocmFuZ2VTZXRFeHByLAorCQkJCQkJCSAgcmFuZ2VfYXR0bm8sCisJCQkJCQkJ ICByYW5nZV9uYW1lLAorCQkJCQkJCSAgZmFsc2UpOworCisJCXRhcmdldExpc3QgPSBsYXBw ZW5kKHRhcmdldExpc3QsIHRsZSk7CisKKwkJLyogTWFyayB0aGUgcmFuZ2UgY29sdW1uIGFz IHJlcXVpcmluZyB1cGRhdGUgcGVybWlzc2lvbnMgKi8KKwkJdGFyZ2V0X3Blcm1pbmZvLT51 cGRhdGVkQ29scyA9IGJtc19hZGRfbWVtYmVyKHRhcmdldF9wZXJtaW5mby0+dXBkYXRlZENv bHMsCisJCQkJCQkJCQkJCQkJICByYW5nZV9hdHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIpOworCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSB0YXJnZXRMaXN0Owor CX0KKwllbHNlCisJCXJlc3VsdC0+cmFuZ2VTZXQgPSBOSUw7CisKKwlyZXN1bHQtPnJhbmdl X25hbWUgPSByYW5nZV9uYW1lOworCisJcmV0dXJuIHJlc3VsdDsKK30KIAogLyoKICAqIEJ1 aWxkT25Db25mbGljdEV4Y2x1ZGVkVGFyZ2V0bGlzdApAQCAtMjQwOSw2ICsyNTkyLDcgQEAg dHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0 bXQpCiB7CiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsKIAlQYXJzZU5hbWVz cGFjZUl0ZW0gKm5zaXRlbTsKKwlOb2RlCSAgICp3aGVyZUNsYXVzZTsKIAlOb2RlCSAgICpx dWFsOwogCiAJcXJ5LT5jb21tYW5kVHlwZSA9IENNRF9VUERBVEU7CkBAIC0yNDI2LDYgKzI2 MTAsMTAgQEAgdHJhbnNmb3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0 ZVN0bXQgKnN0bXQpCiAJCQkJCQkJCQkJIHN0bXQtPnJlbGF0aW9uLT5pbmgsCiAJCQkJCQkJ CQkJIHRydWUsCiAJCQkJCQkJCQkJIEFDTF9VUERBVEUpOworCisJaWYgKHN0bXQtPmZvclBv cnRpb25PZikKKwkJcXJ5LT5mb3JQb3J0aW9uT2YgPSB0cmFuc2Zvcm1Gb3JQb3J0aW9uT2ZD bGF1c2UocHN0YXRlLCBxcnktPnJlc3VsdFJlbGF0aW9uLCBzdG10LT5mb3JQb3J0aW9uT2Ys IHRydWUpOworCiAJbnNpdGVtID0gcHN0YXRlLT5wX3RhcmdldF9uc2l0ZW07CiAKIAkvKiBz dWJxdWVyaWVzIGluIEZST00gY2Fubm90IGFjY2VzcyB0aGUgcmVzdWx0IHJlbGF0aW9uICov CkBAIC0yNDQyLDcgKzI2MzAsOCBAQCB0cmFuc2Zvcm1VcGRhdGVTdG10KFBhcnNlU3RhdGUg KnBzdGF0ZSwgVXBkYXRlU3RtdCAqc3RtdCkKIAluc2l0ZW0tPnBfbGF0ZXJhbF9vbmx5ID0g ZmFsc2U7CiAJbnNpdGVtLT5wX2xhdGVyYWxfb2sgPSB0cnVlOwogCi0JcXVhbCA9IHRyYW5z Zm9ybVdoZXJlQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2hlcmVDbGF1c2UsCisJd2hlcmVDbGF1 c2UgPSBhZGRGb3JQb3J0aW9uT2ZXaGVyZUNvbmRpdGlvbnMocXJ5LCBzdG10LT5mb3JQb3J0 aW9uT2YsIHN0bXQtPndoZXJlQ2xhdXNlKTsKKwlxdWFsID0gdHJhbnNmb3JtV2hlcmVDbGF1 c2UocHN0YXRlLCB3aGVyZUNsYXVzZSwKIAkJCQkJCQkJRVhQUl9LSU5EX1dIRVJFLCAiV0hF UkUiKTsKIAogCXFyeS0+cmV0dXJuaW5nTGlzdCA9IHRyYW5zZm9ybVJldHVybmluZ0xpc3Qo cHN0YXRlLCBzdG10LT5yZXR1cm5pbmdMaXN0KTsKQEAgLTI0NTEsNyArMjY0MCw3IEBAIHRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KQogCSAqIE5vdyB3ZSBhcmUgZG9uZSB3aXRoIFNFTEVDVC1saWtlIHByb2Nlc3NpbmcsIGFu ZCBjYW4gZ2V0IG9uIHdpdGgKIAkgKiB0cmFuc2Zvcm1pbmcgdGhlIHRhcmdldCBsaXN0IHRv IG1hdGNoIHRoZSBVUERBVEUgdGFyZ2V0IGNvbHVtbnMuCiAJICovCi0JcXJ5LT50YXJnZXRM aXN0ID0gdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChwc3RhdGUsIHN0bXQtPnRhcmdldExp c3QpOworCXFyeS0+dGFyZ2V0TGlzdCA9IHRyYW5zZm9ybVVwZGF0ZVRhcmdldExpc3QocHN0 YXRlLCBzdG10LT50YXJnZXRMaXN0LCBxcnktPmZvclBvcnRpb25PZik7CiAKIAlxcnktPnJ0 YWJsZSA9IHBzdGF0ZS0+cF9ydGFibGU7CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUt PnBfcnRlcGVybWluZm9zOwpAQCAtMjQ3MCw3ICsyNjU5LDcgQEAgdHJhbnNmb3JtVXBkYXRl U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAgKgloYW5kbGUg U0VUIGNsYXVzZSBpbiBVUERBVEUvTUVSR0UvSU5TRVJUIC4uLiBPTiBDT05GTElDVCBVUERB VEUKICAqLwogTGlzdCAqCi10cmFuc2Zvcm1VcGRhdGVUYXJnZXRMaXN0KFBhcnNlU3RhdGUg KnBzdGF0ZSwgTGlzdCAqb3JpZ1RsaXN0KQordHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlzdCwgRm9yUG9ydGlvbk9mRXhwciAq Zm9yUG9ydGlvbk9mKQogewogCUxpc3QJICAgKnRsaXN0ID0gTklMOwogCVJURVBlcm1pc3Np b25JbmZvICp0YXJnZXRfcGVybWluZm87CkBAIC0yNTIwLDYgKzI3MDksMjEgQEAgdHJhbnNm b3JtVXBkYXRlVGFyZ2V0TGlzdChQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKm9yaWdUbGlz dCkKIAkJCQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShwc3RhdGUtPnBfdGFyZ2V0X3Jl bGF0aW9uKSksCiAJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0 LT5sb2NhdGlvbikpKTsKIAorCQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgRk9SIFBPUlRJT04g T0YgdXBkYXRlLAorCQkgKiBmb3JiaWQgZGlyZWN0bHkgc2V0dGluZyB0aGUgcmFuZ2UgY29s dW1uLAorCQkgKiBzaW5jZSB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIGltcGxpY2l0 IHVwZGF0ZXMuCisJCSAqLworCQlpZiAoZm9yUG9ydGlvbk9mICE9IE5VTEwpCisJCXsKKwkJ CWlmIChhdHRybm8gPT0gZm9yUG9ydGlvbk9mLT5yYW5nZVZhci0+dmFyYXR0bm8pCisJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCSBlcnJtc2coImNhbid0IGRpcmVjdGx5IGFzc2lnbiB0byBcIiVzXCIgaW4gYSBG T1IgUE9SVElPTiBPRiB1cGRhdGUiLAorCQkJCQkJCQlvcmlnVGFyZ2V0LT5uYW1lKSwKKwkJ CQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBvcmlnVGFyZ2V0LT5sb2NhdGlvbikp KTsKKwkJfQorCiAJCXVwZGF0ZVRhcmdldExpc3RFbnRyeShwc3RhdGUsIHRsZSwgb3JpZ1Rh cmdldC0+bmFtZSwKIAkJCQkJCQkgIGF0dHJubywKIAkJCQkJCQkgIG9yaWdUYXJnZXQtPmlu ZGlyZWN0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggN2QyMjMxOWQ0MC4uNWE0OWJhNmZhMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvZ3JhbS55CkBAIC0yNTgsNiArMjU4LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VS ZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUg KnF1ZXJ5KTsKIAlSYW5nZVZhciAgICpyYW5nZTsKIAlJbnRvQ2xhdXNlICppbnRvOwogCVdp dGhDbGF1c2UgKndpdGg7CisJRm9yUG9ydGlvbk9mQ2xhdXNlICpmb3Jwb3J0aW9ub2Y7CiAJ SW5mZXJDbGF1c2UJKmluZmVyOwogCU9uQ29uZmxpY3RDbGF1c2UgKm9uY29uZmxpY3Q7CiAJ QV9JbmRpY2VzICAqYWluZDsKQEAgLTU1MSw2ICs1NTIsNyBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9k ZSAqcXVlcnkpOwogJXR5cGUgPHJhbmdlPglyZWxhdGlvbl9leHByCiAldHlwZSA8cmFuZ2U+ CWV4dGVuZGVkX3JlbGF0aW9uX2V4cHIKICV0eXBlIDxyYW5nZT4JcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKyV0eXBlIDxmb3Jwb3J0aW9ub2Y+IGZvcl9wb3J0aW9uX29mX2NsYXVzZQog JXR5cGUgPG5vZGU+CXRhYmxlc2FtcGxlX2NsYXVzZSBvcHRfcmVwZWF0YWJsZV9jbGF1c2UK ICV0eXBlIDx0YXJnZXQ+CXRhcmdldF9lbCBzZXRfdGFyZ2V0IGluc2VydF9jb2x1bW5faXRl bQogCkBAIC03NDcsNyArNzQ5LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAog CVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFTU0lORyBQ QVNTV09SRAogCVBFUklPRCBQTEFDSU5HIFBMQU5TIFBPTElDWQotCVBPU0lUSU9OIFBSRUNF RElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJFUEFSRSBQUkVQQVJFRCBQUklNQVJZCisJUE9S VElPTiBQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJF UEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUg UFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCiAKIAlRVU9URQpAQCAtODI4LDYgKzgz MCwxNiBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVs bmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJW5vbmFzc29jCUtFWVMgT0JK RUNUX1AgU0NBTEFSIFZBTFVFX1AKICVub25hc3NvYwlXSVRIIFdJVEhPVVQKIAorLyoKKyAq IFdlIG5lZWQgdG8gaGFuZGxlIHRoaXMgc2hpZnQvcmVkdWNlIGNvbmZsaWN0OgorICogRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBJTlRFUlZBTCBZRUFSIFRPIE1PTlRIIFRPIGZv by4KKyAqIFRoaXMgaXMgYmFzaWNhbGx5IHRoZSBjbGFzc2ljICJkYW5nbGluZyBlbHNlIiBw cm9ibGVtLCBhbmQgd2Ugd2FudCBhCisgKiBzaW1pbGFyIHJlc29sdXRpb246IHRyZWF0IHRo ZSBUTyBhcyBwYXJ0IG9mIHRoZSBJTlRFUlZBTCwgbm90IGFzIHBhcnQgb2YKKyAqIHRoZSBG Uk9NIC4uLiBUTyAuLi4uIFVzZXJzIGNhbiBhZGQgcGFyZW50aGVzZXMgaWYgdGhhdCdzIGEg cHJvYmxlbS4KKyAqIFRPIGp1c3QgbmVlZHMgdG8gYmUgaGlnaGVyIHByZWNlZGVuY2UgdGhh biBZRUFSX1AgZXRjLgorICovCislbm9uYXNzb2MgWUVBUl9QIE1PTlRIX1AgREFZX1AgSE9V Ul9QIE1JTlVURV9QCislbm9uYXNzb2MgVE8KIC8qCiAgKiBUbyBzdXBwb3J0IHRhcmdldF9l bCB3aXRob3V0IEFTLCBpdCB1c2VkIHRvIGJlIG5lY2Vzc2FyeSB0byBhc3NpZ24gSURFTlQg YW4KICAqIGV4cGxpY2l0IHByZWNlZGVuY2UganVzdCBsZXNzIHRoYW4gT3AuICBXaGlsZSB0 aGF0J3Mgbm90IHJlYWxseSBuZWNlc3NhcnkKQEAgLTEyMTY2LDE0ICsxMjE3OCwxNiBAQCBy ZXR1cm5pbmdfY2xhdXNlOgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBEZWxldGVT dG10OiBvcHRfd2l0aF9jbGF1c2UgREVMRVRFX1AgRlJPTSByZWxhdGlvbl9leHByX29wdF9h bGlhcworCQkJZm9yX3BvcnRpb25fb2ZfY2xhdXNlCiAJCQl1c2luZ19jbGF1c2Ugd2hlcmVf b3JfY3VycmVudF9jbGF1c2UgcmV0dXJuaW5nX2NsYXVzZQogCQkJCXsKIAkJCQkJRGVsZXRl U3RtdCAqbiA9IG1ha2VOb2RlKERlbGV0ZVN0bXQpOwogCiAJCQkJCW4tPnJlbGF0aW9uID0g JDQ7Ci0JCQkJCW4tPnVzaW5nQ2xhdXNlID0gJDU7Ci0JCQkJCW4tPndoZXJlQ2xhdXNlID0g JDY7Ci0JCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkNzsKKwkJCQkJbi0+Zm9yUG9ydGlvbk9m ID0gJDU7CisJCQkJCW4tPnVzaW5nQ2xhdXNlID0gJDY7CisJCQkJCW4tPndoZXJlQ2xhdXNl ID0gJDc7CisJCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkODsKIAkJCQkJbi0+d2l0aENsYXVz ZSA9ICQxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQpAQCAtMTIyMzYsNiArMTIy NTAsNyBAQCBvcHRfbm93YWl0X29yX3NraXA6CiAgKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKIFVwZGF0ZVN0bXQ6IG9wdF93aXRoX2NsYXVzZSBVUERBVEUgcmVsYXRpb25fZXhwcl9v cHRfYWxpYXMKKwkJCWZvcl9wb3J0aW9uX29mX2NsYXVzZQogCQkJU0VUIHNldF9jbGF1c2Vf bGlzdAogCQkJZnJvbV9jbGF1c2UKIAkJCXdoZXJlX29yX2N1cnJlbnRfY2xhdXNlCkBAIC0x MjI0NCwxMCArMTIyNTksMTEgQEAgVXBkYXRlU3RtdDogb3B0X3dpdGhfY2xhdXNlIFVQREFU RSByZWxhdGlvbl9leHByX29wdF9hbGlhcwogCQkJCQlVcGRhdGVTdG10ICpuID0gbWFrZU5v ZGUoVXBkYXRlU3RtdCk7CiAKIAkJCQkJbi0+cmVsYXRpb24gPSAkMzsKLQkJCQkJbi0+dGFy Z2V0TGlzdCA9ICQ1OwotCQkJCQluLT5mcm9tQ2xhdXNlID0gJDY7Ci0JCQkJCW4tPndoZXJl Q2xhdXNlID0gJDc7Ci0JCQkJCW4tPnJldHVybmluZ0xpc3QgPSAkODsKKwkJCQkJbi0+Zm9y UG9ydGlvbk9mID0gJDQ7CisJCQkJCW4tPnRhcmdldExpc3QgPSAkNjsKKwkJCQkJbi0+ZnJv bUNsYXVzZSA9ICQ3OworCQkJCQluLT53aGVyZUNsYXVzZSA9ICQ4OworCQkJCQluLT5yZXR1 cm5pbmdMaXN0ID0gJDk7CiAJCQkJCW4tPndpdGhDbGF1c2UgPSAkMTsKIAkJCQkJJCQgPSAo Tm9kZSAqKSBuOwogCQkJCX0KQEAgLTEzNjgzLDYgKzEzNjk5LDE5IEBAIHJlbGF0aW9uX2V4 cHJfb3B0X2FsaWFzOiByZWxhdGlvbl9leHByCQkJCQklcHJlYyBVTUlOVVMKIAkJCQl9CiAJ CTsKIAorZm9yX3BvcnRpb25fb2ZfY2xhdXNlOgorCQkJRk9SIFBPUlRJT04gT0YgQ29sSWQg RlJPTSBhX2V4cHIgVE8gYV9leHByCisJCQkJeworCQkJCQlGb3JQb3J0aW9uT2ZDbGF1c2Ug Km4gPSBtYWtlTm9kZShGb3JQb3J0aW9uT2ZDbGF1c2UpOworCQkJCQluLT5yYW5nZV9uYW1l ID0gJDQ7CisJCQkJCW4tPnJhbmdlX25hbWVfbG9jYXRpb24gPSBANDsKKwkJCQkJbi0+dGFy Z2V0X3N0YXJ0ID0gJDY7CisJCQkJCW4tPnRhcmdldF9lbmQgPSAkODsKKwkJCQkJJCQgPSBu OworCQkJCX0KKwkJCXwgLypFTVBUWSovCQkJCQl7ICQkID0gTlVMTDsgfQorCQk7CisKIC8q CiAgKiBUQUJMRVNBTVBMRSBkZWNvcmF0aW9uIGluIGEgRlJPTSBpdGVtCiAgKi8KQEAgLTE3 MjM4LDYgKzE3MjY3LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVNTV09SRAog CQkJfCBQTEFOUwogCQkJfCBQT0xJQ1kKKwkJCXwgUE9SVElPTgogCQkJfCBQUkVDRURJTkcK IAkJCXwgUFJFUEFSRQogCQkJfCBQUkVQQVJFRApAQCAtMTc4NDIsNiArMTc4NzIsNyBAQCBi YXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9M SUNZCisJCQl8IFBPUlRJT04KIAkJCXwgUE9TSVRJT04KIAkJCXwgUFJFQ0VESU5HCiAJCQl8 IFBSRVBBUkUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYwppbmRleCA4NWNkNDdiN2FlLi5jZThl MGJlMDQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKKysr IGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC01NjMsNiArNTYzLDEzIEBA IGNoZWNrX2FnZ2xldmVsc19hbmRfY29uc3RyYWludHMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBO b2RlICpleHByKQogCQljYXNlIEVYUFJfS0lORF9DWUNMRV9NQVJLOgogCQkJZXJya2luZCA9 IHRydWU7CiAJCQlicmVhazsKKwkJY2FzZSBFWFBSX0tJTkRfVVBEQVRFX1BPUlRJT046CisJ CQlpZiAoaXNBZ2cpCisJCQkJZXJyID0gXygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90 IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKKwkJCWVsc2UKKwkJ CQllcnIgPSBfKCJncm91cGluZyBvcGVyYXRpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9ucyIpOworCisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAq IFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpAQCAtOTUzLDYgKzk2MCw5IEBAIHRyYW5zZm9ybVdpbmRvd0Z1bmNDYWxsKFBhcnNl U3RhdGUgKnBzdGF0ZSwgV2luZG93RnVuYyAqd2Z1bmMsCiAJCWNhc2UgRVhQUl9LSU5EX0NZ Q0xFX01BUks6CiAJCQllcnJraW5kID0gdHJ1ZTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJf S0lORF9VUERBVEVfUE9SVElPTjoKKwkJCWVyciA9IF8oIndpbmRvdyBmdW5jdGlvbnMgYXJl IG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQlicmVh azsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDog Y2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L3BhcnNlX2NvbGxhdGUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jb2xsYXRlLmMK aW5kZXggOWY2YWZjMzUxYy4uZDA5YjJkMmIxYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2NvbGxhdGUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf Y29sbGF0ZS5jCkBAIC00ODQsNiArNDg0LDcgQEAgYXNzaWduX2NvbGxhdGlvbnNfd2Fsa2Vy KE5vZGUgKm5vZGUsIGFzc2lnbl9jb2xsYXRpb25zX2NvbnRleHQgKmNvbnRleHQpCiAJCWNh c2UgVF9Kb2luRXhwcjoKIAkJY2FzZSBUX0Zyb21FeHByOgogCQljYXNlIFRfT25Db25mbGlj dEV4cHI6CisJCWNhc2UgVF9Gb3JQb3J0aW9uT2ZFeHByOgogCQljYXNlIFRfU29ydEdyb3Vw Q2xhdXNlOgogCQljYXNlIFRfTWVyZ2VBY3Rpb246CiAJCQkodm9pZCkgZXhwcmVzc2lvbl90 cmVlX3dhbGtlcihub2RlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggNjRjNTgy YzM0NC4uZmVlNmJkOTAyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2V4cHIuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCkBAIC01NjYs NiArNTY2LDkgQEAgdHJhbnNmb3JtQ29sdW1uUmVmKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ29s dW1uUmVmICpjcmVmKQogCQljYXNlIEVYUFJfS0lORF9QQVJUSVRJT05fQk9VTkQ6CiAJCQll cnIgPSBfKCJjYW5ub3QgdXNlIGNvbHVtbiByZWZlcmVuY2UgaW4gcGFydGl0aW9uIGJvdW5k IGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERBVEVfUE9S VElPTjoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1Ig UE9SVElPTiBPRiBleHByZXNzaW9uIik7CisJCQlicmVhazsKIAogCQkJLyoKIAkJCSAqIFRo ZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0IHRo ZQpAQCAtMTgxMyw2ICsxODE2LDkgQEAgdHJhbnNmb3JtU3ViTGluayhQYXJzZVN0YXRlICpw c3RhdGUsIFN1YkxpbmsgKnN1YmxpbmspCiAJCWNhc2UgRVhQUl9LSU5EX0dFTkVSQVRFRF9D T0xVTU46CiAJCQllcnIgPSBfKCJjYW5ub3QgdXNlIHN1YnF1ZXJ5IGluIGNvbHVtbiBnZW5l cmF0aW9uIGV4cHJlc3Npb24iKTsKIAkJCWJyZWFrOworCQljYXNlIEVYUFJfS0lORF9VUERB VEVfUE9SVElPTjoKKwkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBP UlRJT04gT0YgZXhwcmVzc2lvbiIpOworCQkJYnJlYWs7CiAKIAkJCS8qCiAJCQkgKiBUaGVy ZSBpcyBpbnRlbnRpb25hbGx5IG5vIGRlZmF1bHQ6IGNhc2UgaGVyZSwgc28gdGhhdCB0aGUK QEAgLTMxMDQsNiArMzExMCw4IEBAIFBhcnNlRXhwcktpbmROYW1lKFBhcnNlRXhwcktpbmQg ZXhwcktpbmQpCiAJCQlyZXR1cm4gIlVQREFURSI7CiAJCWNhc2UgRVhQUl9LSU5EX01FUkdF X1dIRU46CiAJCQlyZXR1cm4gIk1FUkdFIFdIRU4iOworCQljYXNlIEVYUFJfS0lORF9VUERB VEVfUE9SVElPTjoKKwkJCXJldHVybiAiRk9SIFBPUlRJT04gT0YiOwogCQljYXNlIEVYUFJf S0lORF9HUk9VUF9CWToKIAkJCXJldHVybiAiR1JPVVAgQlkiOwogCQljYXNlIEVYUFJfS0lO RF9PUkRFUl9CWToKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCmluZGV4IGIzZjBiNmExMzcu LjMxZWQwMWE4NGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5j LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYwpAQCAtMjY1Niw2ICsy NjU2LDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3RhdGUgKnBzdGF0ZSwg Tm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJTkRfQ1lDTEVf TUFSSzoKIAkJCWVycmtpbmQgPSB0cnVlOwogCQkJYnJlYWs7CisJCWNhc2UgRVhQUl9LSU5E X1VQREFURV9QT1JUSU9OOgorCQkJZXJyID0gXygic2V0LXJldHVybmluZyBmdW5jdGlvbnMg YXJlIG5vdCBhbGxvd2VkIGluIEZPUiBQT1JUSU9OIE9GIGV4cHJlc3Npb25zIik7CisJCQli cmVhazsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVs dDogY2FzZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX21lcmdlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVyZ2UuYwpp bmRleCA5MWIxMTU2ZDk5Li5jMDA4MDJhZTIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfbWVyZ2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfbWVy Z2UuYwpAQCAtMzcyLDcgKzM3Miw3IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIE1lcmdlU3RtdCAqc3RtdCkKIAkJCQkJcHN0YXRlLT5wX2lzX2luc2VydCA9 IGZhbHNlOwogCQkJCQlhY3Rpb24tPnRhcmdldExpc3QgPQogCQkJCQkJdHJhbnNmb3JtVXBk YXRlVGFyZ2V0TGlzdChwc3RhdGUsCi0JCQkJCQkJCQkJCQkgIG1lcmdlV2hlbkNsYXVzZS0+ dGFyZ2V0TGlzdCk7CisJCQkJCQkJCQkJCQkgIG1lcmdlV2hlbkNsYXVzZS0+dGFyZ2V0TGlz dCwgTlVMTCk7CiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSBDTURfREVMRVRFOgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jIGIvc3JjL2Jh Y2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCmluZGV4IGI0ODZhYjU1OWEuLjU3NmE5 OGUwZjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKQEAgLTM0NzMs NiArMzQ3MywzMCBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBSZWxh dGlvbiB2aWV3KQogCQkJCQkJCQkJICAmcGFyc2V0cmVlLT5oYXNTdWJMaW5rcyk7CiAJfQog CisJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmIHBhcnNldHJlZS0+Y29tbWFuZFR5 cGUgPT0gQ01EX1VQREFURSkKKwl7CisJCS8qCisJCSAqIExpa2UgdGhlIElOU0VSVC9VUERB VEUgY29kZSBhYm92ZSwgdXBkYXRlIHRoZSByZXNub3MgaW4gdGhlCisJCSAqIGF1eGlsaWFy eSBVUERBVEUgdGFyZ2V0bGlzdCB0byByZWZlciB0byBjb2x1bW5zIG9mIHRoZSBiYXNlCisJ CSAqIHJlbGF0aW9uLgorCQkgKi8KKwkJZm9yZWFjaChsYywgcGFyc2V0cmVlLT5mb3JQb3J0 aW9uT2YtPnJhbmdlU2V0KQorCQl7CisJCQlUYXJnZXRFbnRyeSAqdGxlID0gKFRhcmdldEVu dHJ5ICopIGxmaXJzdChsYyk7CisJCQlUYXJnZXRFbnRyeSAqdmlld190bGU7CisKKwkJCWlm ICh0bGUtPnJlc2p1bmspCisJCQkJY29udGludWU7CisKKwkJCXZpZXdfdGxlID0gZ2V0X3Rs ZV9ieV9yZXNubyh2aWV3X3RhcmdldGxpc3QsIHRsZS0+cmVzbm8pOworCQkJaWYgKHZpZXdf dGxlICE9IE5VTEwgJiYgIXZpZXdfdGxlLT5yZXNqdW5rICYmIElzQSh2aWV3X3RsZS0+ZXhw ciwgVmFyKSkKKwkJCQl0bGUtPnJlc25vID0gKChWYXIgKikgdmlld190bGUtPmV4cHIpLT52 YXJhdHRubzsKKwkJCWVsc2UKKwkJCQllbG9nKEVSUk9SLCAiYXR0cmlidXRlIG51bWJlciAl ZCBub3QgZm91bmQgaW4gdmlldyB0YXJnZXRsaXN0IiwKKwkJCQkJIHRsZS0+cmVzbm8pOwor CQl9CisJfQorCiAJLyoKIAkgKiBGb3IgVVBEQVRFL0RFTEVURSwgcHVsbCB1cCBhbnkgV0hF UkUgcXVhbHMgZnJvbSB0aGUgdmlldy4gIFdlIGtub3cgdGhhdAogCSAqIGFueSBWYXJzIGlu IHRoZSBxdWFscyBtdXN0IHJlZmVyZW5jZSB0aGUgb25lIGJhc2UgcmVsYXRpb24sIHNvIHdl IG5lZWQKQEAgLTM4MTEsNiArMzgzNSwyMiBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNl dHJlZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCkKIAkJZWxz ZSBpZiAoZXZlbnQgPT0gQ01EX1VQREFURSkKIAkJewogCQkJQXNzZXJ0KHBhcnNldHJlZS0+ b3ZlcnJpZGUgPT0gT1ZFUlJJRElOR19OT1RfU0VUKTsKKwkJCS8qCisJCQkgKiBVcGRhdGUg Rk9SIFBPUlRJT04gT0YgY29sdW1uKHMpIGF1dG9tYXRpY2FsbHkuIERvbid0CisJCQkgKiBk byB0aGlzIHVudGlsIHdlJ3JlIGRvbmUgcmV3cml0aW5nIGEgdmlldyB1cGRhdGUsIHNvCisJ CQkgKiB0aGF0IHdlIGRvbid0IGFkZCB0aGUgc2FtZSB1cGRhdGUgb24gdGhlIHJlY3Vyc2lv bi4KKwkJCSAqLworCQkJaWYgKHBhcnNldHJlZS0+Zm9yUG9ydGlvbk9mICYmCisJCQkJcnRf ZW50cnlfcmVsYXRpb24tPnJkX3JlbC0+cmVsa2luZCAhPSBSRUxLSU5EX1ZJRVcpCisJCQl7 CisJCQkJTGlzdENlbGwgKnRsOworCQkJCWZvcmVhY2godGwsIHBhcnNldHJlZS0+Zm9yUG9y dGlvbk9mLT5yYW5nZVNldCkKKwkJCQl7CisJCQkJCVRhcmdldEVudHJ5ICp0bGUgPSAoVGFy Z2V0RW50cnkgKikgbGZpcnN0KHRsKTsKKwkJCQkJcGFyc2V0cmVlLT50YXJnZXRMaXN0ID0g bGFwcGVuZChwYXJzZXRyZWUtPnRhcmdldExpc3QsIHRsZSk7CisJCQkJfQorCQkJfQorCiAJ CQlwYXJzZXRyZWUtPnRhcmdldExpc3QgPQogCQkJCXJld3JpdGVUYXJnZXRMaXN0SVUocGFy c2V0cmVlLT50YXJnZXRMaXN0LAogCQkJCQkJCQkJcGFyc2V0cmVlLT5jb21tYW5kVHlwZSwK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jIGIvc3JjL2JhY2tlbmQv dGNvcC91dGlsaXR5LmMKaW5kZXggZTNjY2Y2YzdmNy4uNjc4MWU1NTAyMCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvdGNvcC91dGlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC91 dGlsaXR5LmMKQEAgLTE1NjAsNyArMTU2MCw3IEBAIFByb2Nlc3NVdGlsaXR5U2xvdyhQYXJz ZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQl0cnVlLAkvKiBjaGVja19yaWdodHMgKi8KIAkJ CQkJCQkJCXRydWUsCS8qIGNoZWNrX25vdF9pbl91c2UgKi8KIAkJCQkJCQkJCWZhbHNlLAkv KiBza2lwX2J1aWxkICovCi0JCQkJCQkJCQlmYWxzZSk7IC8qIHF1aWV0ICovCisJCQkJCQkJ CQlmYWxzZSk7CS8qIHF1aWV0ICovCiAKIAkJCQkJLyoKIAkJCQkJICogQWRkIHRoZSBDUkVB VEUgSU5ERVggbm9kZSBpdHNlbGYgdG8gc3Rhc2ggcmlnaHQgYXdheTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9NYWtlZmlsZQppbmRleCAwZGUwYmJiMWI4Li5hNGYyMjZlYzhkIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L01ha2VmaWxlCkBAIC03OCw2ICs3OCw3IEBAIE9CSlMgPSBcCiAJb3JhY2xlX2NvbXBh dC5vIFwKIAlvcmRlcmVkc2V0YWdncy5vIFwKIAlwYXJ0aXRpb25mdW5jcy5vIFwKKwlwZXJp b2QubyBcCiAJcGdfbG9jYWxlLm8gXAogCXBnX2xzbi5vIFwKIAlwZ191cGdyYWRlX3N1cHBv cnQubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcGVyaW9kLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMC4uMGVkNDMwNGUxNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FkdC9wZXJpb2QuYwpAQCAtMCwwICsxLDU2IEBACisvKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqCisgKiBwZXJpb2QuYworICoJICBGdW5jdGlvbnMgdG8gc3VwcG9ydCBw ZXJpb2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMiwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHly aWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh CisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZXJpb2QuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaW5jbHVkZSAi cG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImV4ZWN1dG9yL3R1cHRhYmxlLmgiCisjaW5jbHVk ZSAiZm1nci5oIgorI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgorI2luY2x1ZGUgInV0 aWxzL2ZtZ3Jwcm90b3MuaCIKKyNpbmNsdWRlICJ1dGlscy9wZXJpb2QuaCIKKyNpbmNsdWRl ICJ1dGlscy9yYW5nZXR5cGVzLmgiCisKK0RhdHVtIHBlcmlvZF90b19yYW5nZShUdXBsZVRh YmxlU2xvdCAqc2xvdCwgaW50IHN0YXJ0YXR0bm8sIGludCBlbmRhdHRubywgT2lkIHJhbmdl dHlwZSkKK3sKKwlEYXR1bSBzdGFydHZhbHVlOworCURhdHVtIGVuZHZhbHVlOworCURhdHVt IHJlc3VsdDsKKwlib29sCXN0YXJ0aXNudWxsOworCWJvb2wJZW5kaXNudWxsOworCUxPQ0FM X0ZDSU5GTyhmY2luZm8sIDIpOworCUZtZ3JJbmZvCWZsaW5mbzsKKwlGdW5jRXhwciAgICpm OworCisJSW5pdEZ1bmN0aW9uQ2FsbEluZm9EYXRhKCpmY2luZm8sICZmbGluZm8sIDIsIElu dmFsaWRPaWQsIE5VTEwsIE5VTEwpOworCWYgPSBtYWtlTm9kZShGdW5jRXhwcik7CisJZi0+ ZnVuY3Jlc3VsdHR5cGUgPSByYW5nZXR5cGU7CisJZmxpbmZvLmZuX2V4cHIgPSAoTm9kZSAq KSBmOworCWZsaW5mby5mbl9leHRyYSA9IE5VTEw7CisKKwkvKiBjb21wdXRlIG9sZHZhbHVl ICovCisJc3RhcnR2YWx1ZSA9IHNsb3RfZ2V0YXR0cihzbG90LCBzdGFydGF0dG5vLCAmc3Rh cnRpc251bGwpOworCWVuZHZhbHVlID0gc2xvdF9nZXRhdHRyKHNsb3QsIGVuZGF0dG5vLCAm ZW5kaXNudWxsKTsKKworCWZjaW5mby0+YXJnc1swXS52YWx1ZSA9IHN0YXJ0dmFsdWU7CisJ ZmNpbmZvLT5hcmdzWzBdLmlzbnVsbCA9IHN0YXJ0aXNudWxsOworCWZjaW5mby0+YXJnc1sx XS52YWx1ZSA9IGVuZHZhbHVlOworCWZjaW5mby0+YXJnc1sxXS5pc251bGwgPSBlbmRpc251 bGw7CisKKwlyZXN1bHQgPSByYW5nZV9jb25zdHJ1Y3RvcjIoZmNpbmZvKTsKKwlpZiAoZmNp bmZvLT5pc251bGwpCisJCWVsb2coRVJST1IsICJmdW5jdGlvbiAldSByZXR1cm5lZCBOVUxM IiwgZmxpbmZvLmZuX29pZCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yYW5nZXR5cGVzLmMKaW5kZXggZDY1ZTU2MjVjNy4uZDRlMTczMjM3NyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JhbmdldHlwZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9hZHQvcmFuZ2V0eXBlcy5jCkBAIC0xMjA2LDYgKzEyMDYsNDggQEAgcmFu Z2Vfc3BsaXRfaW50ZXJuYWwoVHlwZUNhY2hlRW50cnkgKnR5cGNhY2hlLCBjb25zdCBSYW5n ZVR5cGUgKnIxLCBjb25zdCBSYW5nZVQKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBy YW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbCAtIFNldHMgb3V0cHV0MSBhbmQgb3V0cHV0MiB0byB0 aGUgcmVtYWluaW5nIHBhcnRzIG9mIHIxCisgKiBhZnRlciBzdWJ0cmFjdGluZyByMiwgb3Ig aWYgbm90aGluZyBpcyBsZWZ0IHRoZW4gdG8gdGhlIGVtcHR5IHJhbmdlLgorICogb3V0cHV0 MSB3aWxsIGFsd2F5cyBiZSAiYmVmb3JlIiByMiBhbmQgb3V0cHV0MiAiYWZ0ZXIiLgorICov Cit2b2lkCityYW5nZV9sZWZ0b3Zlcl9pbnRlcm5hbChUeXBlQ2FjaGVFbnRyeSAqdHlwY2Fj aGUsIGNvbnN0IFJhbmdlVHlwZSAqcjEsCisJCQkJCQljb25zdCBSYW5nZVR5cGUgKnIyLCBS YW5nZVR5cGUgKipvdXRwdXQxLCBSYW5nZVR5cGUgKipvdXRwdXQyKQoreworCVJhbmdlQm91 bmQJbG93ZXIxLAorCQkJCWxvd2VyMjsKKwlSYW5nZUJvdW5kCXVwcGVyMSwKKwkJCQl1cHBl cjI7CisJYm9vbAkJZW1wdHkxLAorCQkJCWVtcHR5MjsKKworCXJhbmdlX2Rlc2VyaWFsaXpl KHR5cGNhY2hlLCByMSwgJmxvd2VyMSwgJnVwcGVyMSwgJmVtcHR5MSk7CisJcmFuZ2VfZGVz ZXJpYWxpemUodHlwY2FjaGUsIHIyLCAmbG93ZXIyLCAmdXBwZXIyLCAmZW1wdHkyKTsKKwor CWlmIChyYW5nZV9jbXBfYm91bmRzKHR5cGNhY2hlLCAmbG93ZXIxLCAmbG93ZXIyKSA8IDAp CisJeworCQlsb3dlcjIuaW5jbHVzaXZlID0gIWxvd2VyMi5pbmNsdXNpdmU7CisJCWxvd2Vy Mi5sb3dlciA9IGZhbHNlOworCQkqb3V0cHV0MSA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZs b3dlcjEsICZsb3dlcjIsIGZhbHNlLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJKm91dHB1 dDEgPSBtYWtlX2VtcHR5X3JhbmdlKHR5cGNhY2hlKTsKKwl9CisKKwlpZiAocmFuZ2VfY21w X2JvdW5kcyh0eXBjYWNoZSwgJnVwcGVyMSwgJnVwcGVyMikgPiAwKQorCXsKKwkJdXBwZXIy LmluY2x1c2l2ZSA9ICF1cHBlcjIuaW5jbHVzaXZlOworCQl1cHBlcjIubG93ZXIgPSB0cnVl OworCQkqb3V0cHV0MiA9IG1ha2VfcmFuZ2UodHlwY2FjaGUsICZ1cHBlcjIsICZ1cHBlcjEs IGZhbHNlLCBOVUxMKTsKKwl9CisJZWxzZQorCXsKKwkJKm91dHB1dDIgPSBtYWtlX2VtcHR5 X3JhbmdlKHR5cGNhY2hlKTsKKwl9Cit9CisKIC8qIHJhbmdlIC0+IHJhbmdlIGFnZ3JlZ2F0 ZSBmdW5jdGlvbnMgKi8KIAogRGF0dW0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC9yaV90cmlnZ2Vycy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJz LmMKaW5kZXggMzY1Yjg0NGJmMy4uNDQ2ZTg5OGViNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0 L3JpX3RyaWdnZXJzLmMKQEAgLTIyNyw2ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCByaV9QZXJm b3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJCQkJCQlSSV9R dWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwKIAkJCQkJCQlSZWxhdGlvbiBma19y ZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdCwg VHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJCQkJaW50IGZvclBvcnRpb25PZlBhcmFt LCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJCQkJYm9vbCBkZXRlY3ROZXdSb3dzLCBpbnQg ZXhwZWN0X09LKTsKIHN0YXRpYyB2b2lkIHJpX0V4dHJhY3RWYWx1ZXMoUmVsYXRpb24gcmVs LCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJCQkgY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywgYm9vbCByZWxfaXNfcGssCkBAIC0yMzUsNiArMjM2LDExIEBAIHN0YXRp YyB2b2lkIHJpX1JlcG9ydFZpb2xhdGlvbihjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlp bmZvLAogCQkJCQkJCSAgIFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRpb24gZmtfcmVsLAogCQkJ CQkJCSAgIFR1cGxlVGFibGVTbG90ICp2aW9sYXRvcnNsb3QsIFR1cGxlRGVzYyB0dXBkZXNj LAogCQkJCQkJCSAgIGludCBxdWVyeW5vLCBib29sIHBhcnRnb25lKSBwZ19hdHRyaWJ1dGVf bm9yZXR1cm4oKTsKK3N0YXRpYyBib29sIGZwb190YXJnZXRzX3BrX3JhbmdlKGNvbnN0IEZv clBvcnRpb25PZlN0YXRlICp0Z190ZW1wb3JhbCwKKwkJCQkJCQkJIGNvbnN0IFJJX0NvbnN0 cmFpbnRJbmZvICpyaWluZm8pOworc3RhdGljIERhdHVtIHJlc3RyaWN0X2Nhc2NhZGluZ19y YW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsCisJCQkJCQkJCQkg IGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sCisJCQkJCQkJCQkgIFR1cGxlVGFi bGVTbG90ICpvbGRzbG90KTsKIAogCiAvKgpAQCAtNDQzLDYgKzQ0OSw3IEBAIFJJX0ZLZXlf Y2hlY2soVHJpZ2dlckRhdGEgKnRyaWdkYXRhKQogCXJpX1BlcmZvcm1DaGVjayhyaWluZm8s ICZxa2V5LCBxcGxhbiwKIAkJCQkJZmtfcmVsLCBwa19yZWwsCiAJCQkJCU5VTEwsIG5ld3Ns b3QsCisJCQkJCS0xLCAwLAogCQkJCQlwa19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxL SU5EX1BBUlRJVElPTkVEX1RBQkxFLAogCQkJCQlTUElfT0tfU0VMRUNUKTsKIApAQCAtNjAw LDYgKzYwNyw3IEBAIHJpX0NoZWNrX1BrX01hdGNoKFJlbGF0aW9uIHBrX3JlbCwgUmVsYXRp b24gZmtfcmVsLAogCXJlc3VsdCA9IHJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBx cGxhbiwKIAkJCQkJCQkgZmtfcmVsLCBwa19yZWwsCiAJCQkJCQkJIG9sZHNsb3QsIE5VTEws CisJCQkJCQkJIC0xLCAwLAogCQkJCQkJCSB0cnVlLAkvKiB0cmVhdCBsaWtlIHVwZGF0ZSAq LwogCQkJCQkJCSBTUElfT0tfU0VMRUNUKTsKIApAQCAtNjk5LDYgKzcwNyw4IEBAIHJpX3Jl c3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJVHVw bGVUYWJsZVNsb3QgKm9sZHNsb3Q7CiAJUklfUXVlcnlLZXkgcWtleTsKIAlTUElQbGFuUHRy CXFwbGFuOworCWludAkJCXRhcmdldFJhbmdlUGFyYW0gPSAtMTsKKwlEYXR1bQkJdGFyZ2V0 UmFuZ2UgPSAwOwogCiAJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0 YS0+dGdfdHJpZ2dlciwKIAkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7 CkBAIC03OTUsOSArODA1LDE2IEBAIHJpX3Jlc3RyaWN0KFRyaWdnZXJEYXRhICp0cmlnZGF0 YSwgYm9vbCBpc19ub19hY3Rpb24pCiAJLyoKIAkgKiBXZSBoYXZlIGEgcGxhbiBub3cuIFJ1 biBpdCB0byBjaGVjayBmb3IgZXhpc3RpbmcgcmVmZXJlbmNlcy4KIAkgKi8KKwlpZiAodHJp Z2RhdGEtPnRnX3RlbXBvcmFsKQorCXsKKwkJdGFyZ2V0UmFuZ2VQYXJhbSA9IHJpaW5mby0+ bmtleXMgLSAxOworCQl0YXJnZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0 cmlnZGF0YS0+dGdfdGVtcG9yYWwsIHJpaW5mbywgb2xkc2xvdCk7CisJfQorCiAJcmlfUGVy Zm9ybUNoZWNrKHJpaW5mbywgJnFrZXksIHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwK IAkJCQkJb2xkc2xvdCwgTlVMTCwKKwkJCQkJdGFyZ2V0UmFuZ2VQYXJhbSwgdGFyZ2V0UmFu Z2UsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwogCQkJCQlTUElf T0tfU0VMRUNUKTsKIApAQCAtOTA0LDYgKzkyMSw3IEBAIFJJX0ZLZXlfY2FzY2FkZV9kZWwo UEdfRlVOQ1RJT05fQVJHUykKIAlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBs YW4sCiAJCQkJCWZrX3JlbCwgcGtfcmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQkt MSwgMCwKIAkJCQkJdHJ1ZSwJCS8qIG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQ SV9PS19ERUxFVEUpOwogCkBAIC0xMDI1LDYgKzEwNDMsNyBAQCBSSV9GS2V5X2Nhc2NhZGVf dXBkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJcmlfUGVyZm9ybUNoZWNrKHJpaW5mbywgJnFrZXks IHFwbGFuLAogCQkJCQlma19yZWwsIHBrX3JlbCwKIAkJCQkJb2xkc2xvdCwgbmV3c2xvdCwK KwkJCQkJLTEsIDAsCiAJCQkJCXRydWUsCQkvKiBtdXN0IGRldGVjdCBuZXcgcm93cyAqLwog CQkJCQlTUElfT0tfVVBEQVRFKTsKIApAQCAtMTI1Nyw2ICsxMjc2LDcgQEAgcmlfc2V0KFRy aWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCkKIAly aV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwgcXBsYW4sCiAJCQkJCWZrX3JlbCwgcGtf cmVsLAogCQkJCQlvbGRzbG90LCBOVUxMLAorCQkJCQktMSwgMCwKIAkJCQkJdHJ1ZSwJCS8q IG11c3QgZGV0ZWN0IG5ldyByb3dzICovCiAJCQkJCVNQSV9PS19VUERBVEUpOwogCkBAIC0y NTE5LDYgKzI1MzksNyBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludElu Zm8gKnJpaW5mbywKIAkJCQlSSV9RdWVyeUtleSAqcWtleSwgU1BJUGxhblB0ciBxcGxhbiwK IAkJCQlSZWxhdGlvbiBma19yZWwsIFJlbGF0aW9uIHBrX3JlbCwKIAkJCQlUdXBsZVRhYmxl U2xvdCAqb2xkc2xvdCwgVHVwbGVUYWJsZVNsb3QgKm5ld3Nsb3QsCisJCQkJaW50IGZvclBv cnRpb25PZlBhcmFtLCBEYXR1bSBmb3JQb3J0aW9uT2YsCiAJCQkJYm9vbCBkZXRlY3ROZXdS b3dzLCBpbnQgZXhwZWN0X09LKQogewogCVJlbGF0aW9uCXF1ZXJ5X3JlbCwKQEAgLTI1NzQs NiArMjU5NSwxMiBAQCByaV9QZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8g KnJpaW5mbywKIAkJcmlfRXh0cmFjdFZhbHVlcyhzb3VyY2VfcmVsLCBvbGRzbG90LCByaWlu Zm8sIHNvdXJjZV9pc19waywKIAkJCQkJCSB2YWxzLCBudWxscyk7CiAJfQorCS8qIEFkZCBv bmUgbW9yZSBxdWVyeSBwYXJhbSBpZiB3ZSBhcmUgdXNpbmcgRk9SIFBPUlRJT04gT0YgKi8K KwlpZiAoZm9yUG9ydGlvbk9mKQorCXsKKwkJdmFsc1tmb3JQb3J0aW9uT2ZQYXJhbV0gPSBm b3JQb3J0aW9uT2Y7CisJCW51bGxzW2ZvclBvcnRpb25PZlBhcmFtXSA9ICcgJzsKKwl9CiAK IAkvKgogCSAqIEluIFJFQUQgQ09NTUlUVEVEIG1vZGUsIHdlIGp1c3QgbmVlZCB0byB1c2Ug YW4gdXAtdG8tZGF0ZSByZWd1bGFyCkBAIC0zMjg3LDMgKzMzMTQsNTAgQEAgUklfRktleV90 cmlnZ2VyX3R5cGUoT2lkIHRnZm9pZCkKIAogCXJldHVybiBSSV9UUklHR0VSX05PTkU7CiB9 CisKKy8qCisgKiBmcG9fdGFyZ2V0c19wa19yYW5nZQorICoKKyAqIFJldHVybnMgdHJ1ZSBp ZmYgdGhlIHByaW1hcnkga2V5IHJlZmVyZW5jZWQgYnkgcmlpbmZvIGluY2x1ZGVzIHRoZSBy YW5nZQorICogY29sdW1uIHRhcmdldGVkIGJ5IHRoZSBGT1IgUE9SVElPTiBPRiBjbGF1c2Ug KGFjY29yZGluZyB0byB0Z190ZW1wb3JhbCkuCisgKi8KK3N0YXRpYyBib29sCitmcG9fdGFy Z2V0c19wa19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWwsIGNv bnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8pCit7CisJaWYgKHRnX3RlbXBvcmFsID09 IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiByaWluZm8tPnBrX2F0dG51bXNb cmlpbmZvLT5ua2V5cyAtIDFdID09IHRnX3RlbXBvcmFsLT5mcF9yYW5nZUF0dG5vOworfQor CisvKgorICogcmVzdHJpY3RfY2FzY2FkaW5nX3JhbmdlIC0KKyAqCisgKiBSZXR1cm5zIGEg RGF0dW0gb2YgUmFuZ2VUeXBlUCBob2xkaW5nIHRoZSBhcHByb3ByaWF0ZSB0aW1lc3Bhbgor ICogdG8gdGFyZ2V0IGNoaWxkIHJlY29yZHMgd2hlbiB3ZSBDQVNDQURFL1NFVCBOVUxML1NF VCBERUZBVUxULgorICoKKyAqIEluIGEgbm9ybWFsIFVQREFURS9ERUxFVEUgdGhpcyBzaG91 bGQgYmUgdGhlIHBhcmVudCdzIG93biB2YWxpZCB0aW1lLAorICogYnV0IGlmIHRoZXJlIHdh cyBhIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSwgdGhlbiB3ZSBzaG91bGQgdXNlIHRoYXQgdG8K KyAqIHRyaW0gZG93biB0aGUgcGFyZW50J3Mgc3BhbiBmdXJ0aGVyLgorICovCitzdGF0aWMg RGF0dW0KK3Jlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZShjb25zdCBGb3JQb3J0aW9uT2ZTdGF0 ZSAqdGdfdGVtcG9yYWwsIGNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm8sIFR1cGxl VGFibGVTbG90ICpvbGRzbG90KQoreworCURhdHVtCXBrUmVjb3JkUmFuZ2U7CisJYm9vbAlp c251bGw7CisKKwlwa1JlY29yZFJhbmdlID0gc2xvdF9nZXRhdHRyKG9sZHNsb3QsIHJpaW5m by0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0sICZpc251bGwpOworCWlmIChpc251 bGwpCisJCWVsb2coRVJST1IsICJhcHBsaWNhdGlvbiB0aW1lIHNob3VsZCBub3QgYmUgbnVs bCIpOworCisJaWYgKGZwb190YXJnZXRzX3BrX3JhbmdlKHRnX3RlbXBvcmFsLCByaWluZm8p KQorCXsKKwkJUmFuZ2VUeXBlICpyMSA9IERhdHVtR2V0UmFuZ2VUeXBlUChwa1JlY29yZFJh bmdlKTsKKwkJUmFuZ2VUeXBlICpyMiA9IERhdHVtR2V0UmFuZ2VUeXBlUCh0Z190ZW1wb3Jh bC0+ZnBfdGFyZ2V0UmFuZ2UpOworCQlPaWQgcm5ndHlwaWQgPSBSYW5nZVR5cGVHZXRPaWQo cjEpOworCQlUeXBlQ2FjaGVFbnRyeSAqdHlwY2FjaGUgPSBsb29rdXBfdHlwZV9jYWNoZShy bmd0eXBpZCwgVFlQRUNBQ0hFX1JBTkdFX0lORk8pOworCQlyZXR1cm4gUmFuZ2VUeXBlUEdl dERhdHVtKHJhbmdlX2ludGVyc2VjdF9pbnRlcm5hbCh0eXBjYWNoZSwgcjEsIHIyKSk7CisJ fQorCWVsc2UKKwkJcmV0dXJuIHBrUmVjb3JkUmFuZ2U7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9sc3lzY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL2xzeXNjYWNoZS5jCmluZGV4IGZjNmQyNjdlNDQuLjM5MTc2MmYzMDggMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL2xzeXNjYWNoZS5jCkBAIC0yMTcwLDYgKzIxNzAsNTggQEAgZ2V0 X3R5cGlzZGVmaW5lZChPaWQgdHlwaWQpCiAJCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAq IGdldF90eXBuYW1lCisgKgorICoJICBSZXR1cm5zIHRoZSBuYW1lIG9mIGEgZ2l2ZW4gdHlw ZQorICoKKyAqIFJldHVybnMgYSBwYWxsb2MnZCBjb3B5IG9mIHRoZSBzdHJpbmcsIG9yIE5V TEwgaWYgbm8gc3VjaCB0eXBlLgorICovCitjaGFyICoKK2dldF90eXBuYW1lKE9pZCB0eXBp ZCkKK3sKKwlIZWFwVHVwbGUgICB0cDsKKworCXRwID0gU2VhcmNoU3lzQ2FjaGUxKFRZUEVP SUQsIE9iamVjdElkR2V0RGF0dW0odHlwaWQpKTsKKwlpZiAoSGVhcFR1cGxlSXNWYWxpZCh0 cCkpCisJeworCQlGb3JtX3BnX3R5cGUgdHlwdHVwID0gKEZvcm1fcGdfdHlwZSkgR0VUU1RS VUNUKHRwKTsKKwkJY2hhcgkgICAqcmVzdWx0OworCisJCXJlc3VsdCA9IHBzdHJkdXAoTmFt ZVN0cih0eXB0dXAtPnR5cG5hbWUpKTsKKwkJUmVsZWFzZVN5c0NhY2hlKHRwKTsKKwkJcmV0 dXJuIHJlc3VsdDsKKwl9CisJZWxzZQorCQlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIGdl dF90eXBuYW1lX2FuZF9uYW1lc3BhY2UKKyAqCisgKgkgIFJldHVybnMgdGhlIG5hbWUgYW5k IG5hbWVzcGFjZSBvZiBhIGdpdmVuIHR5cGUKKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgb25l IGZvdW5kLCBvciBmYWxzZSBpZiBub3QuCisgKi8KK2Jvb2wKK2dldF90eXBuYW1lX2FuZF9u YW1lc3BhY2UoT2lkIHR5cGlkLCBjaGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cG5hbWVzcGFj ZSkKK3sKKwlIZWFwVHVwbGUJdHA7CisKKwl0cCA9IFNlYXJjaFN5c0NhY2hlMShUWVBFT0lE LCBPYmplY3RJZEdldERhdHVtKHR5cGlkKSk7CisJaWYgKEhlYXBUdXBsZUlzVmFsaWQodHAp KQorCXsKKwkJRm9ybV9wZ190eXBlIHR5cHR1cCA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VCh0cCk7CisKKwkJKnR5cG5hbWUgPSBwc3RyZHVwKE5hbWVTdHIodHlwdHVwLT50eXBuYW1l KSk7CisJCSp0eXBuYW1lc3BhY2UgPSBnZXRfbmFtZXNwYWNlX25hbWUodHlwdHVwLT50eXBu YW1lc3BhY2UpOworCQlSZWxlYXNlU3lzQ2FjaGUodHApOworCQlyZXR1cm4gKnR5cG5hbWVz cGFjZTsKKwl9CisJZWxzZQorCQlyZXR1cm4gZmFsc2U7Cit9CisKIC8qCiAgKiBnZXRfdHlw bGVuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oIGIv c3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCmluZGV4IDQzMGUzY2E3ZGQuLmIzZDkw ZGVhYTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAorKysg Yi9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2VyLmgKQEAgLTQxLDYgKzQxLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgVHJpZ2dlckRhdGEKIAlUdXBsZXN0b3Jlc3RhdGUgKnRnX29sZHRhYmxl OwogCVR1cGxlc3RvcmVzdGF0ZSAqdGdfbmV3dGFibGU7CiAJY29uc3QgQml0bWFwc2V0ICp0 Z191cGRhdGVkY29sczsKKwlGb3JQb3J0aW9uT2ZTdGF0ZSAqdGdfdGVtcG9yYWw7CiB9IFRy aWdnZXJEYXRhOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCAzNWMyMmMzN2M3 Li5iNWEyYzIyNDg3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMu aAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNDEsMTIgKzQxLDE0 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRl ICJ1dGlscy9oc2VhcmNoLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnllbnZpcm9ubWVudC5o IgorI2luY2x1ZGUgInV0aWxzL3JhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yZWx0 cmlnZ2VyLmgiCiAjaW5jbHVkZSAidXRpbHMvc2hhcmVkdHVwbGVzdG9yZS5oIgogI2luY2x1 ZGUgInV0aWxzL3NuYXBzaG90LmgiCiAjaW5jbHVkZSAidXRpbHMvc29ydHN1cHBvcnQuaCIK ICNpbmNsdWRlICJ1dGlscy90dXBsZXNvcnQuaCIKICNpbmNsdWRlICJ1dGlscy90dXBsZXN0 b3JlLmgiCisjaW5jbHVkZSAidXRpbHMvdHlwY2FjaGUuaCIKIAogc3RydWN0IFBsYW5TdGF0 ZTsJCQkJLyogZm9yd2FyZCByZWZlcmVuY2VzIGluIHRoaXMgZmlsZSAqLwogc3RydWN0IFBh cmFsbGVsSGFzaEpvaW5TdGF0ZTsKQEAgLTQyMyw2ICs0MjUsMjggQEAgdHlwZWRlZiBzdHJ1 Y3QgTWVyZ2VBY3Rpb25TdGF0ZQogCUV4cHJTdGF0ZSAgKm1hc193aGVucXVhbDsJLyogV0hF TiBbTk9UXSBNQVRDSEVEIEFORCBjb25kaXRpb25zICovCiB9IE1lcmdlQWN0aW9uU3RhdGU7 CiAKKy8qCisgKiBGb3JQb3J0aW9uT2ZTdGF0ZQorICoKKyAqIEV4ZWN1dG9yIHN0YXRlIG9m IGEgRk9SIFBPUlRJT04gT0Ygb3BlcmF0aW9uLgorICovCit0eXBlZGVmIHN0cnVjdCBGb3JQ b3J0aW9uT2ZTdGF0ZQoreworCU5vZGVUYWcJCXR5cGU7CisKKwljaGFyICAgKmZwX3Jhbmdl TmFtZTsJCS8qIHRoZSBjb2x1bW4vUEVSSU9EIG5hbWVkIGluIEZPUiBQT1JUSU9OIE9GICov CisJT2lkCQlmcF9yYW5nZVR5cGU7CQkvKiB0aGUgdHlwZSBvZiB0aGUgRk9SIFBPUlRJT04g T0YgZXhwcmVzc2lvbiAqLworCWJvb2wJZnBfaGFzUGVyaW9kOwkJLyogdHJ1ZSBpZmYgdGhp cyBpcyBhIFBFUklPRCBub3QgYSByYW5nZSAqLworCWludAkJZnBfcmFuZ2VBdHRubzsJCS8q IHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uIChvciAwIGZvciBhIFBFUklPRCkgKi8K KwlpbnQJCWZwX3BlcmlvZFN0YXJ0QXR0bm87CS8qIHRoZSBhdHRubyBvZiB0aGUgUEVSSU9E IHN0YXJ0IGNvbHVtbiAob3IgMCBmb3IgYSByYW5nZSkgKi8KKwlpbnQJCWZwX3BlcmlvZEVu ZEF0dG5vOwkJLyogdGhlIGF0dG5vIG9mIHRoZSBQRVJJT0QgZW5kIGNvbHVtbiAob3IgMCBm b3IgYSByYW5nZSkgKi8KKwlEYXR1bQlmcF90YXJnZXRSYW5nZTsJCS8qIHRoZSByYW5nZSBm cm9tIEZPUiBQT1JUSU9OIE9GICovCisJVHlwZUNhY2hlRW50cnkgKmZwX3JhbmdldHlwY2Fj aGU7CS8qIHR5cGUgY2FjaGUgZW50cnkgb2YgdGhlIHJhbmdlICovCisJVHVwbGVUYWJsZVNs b3QgKmZwX0V4aXN0aW5nOwkJLyogc2xvdCB0byBzdG9yZSBleGlzdGluZyB0YXJnZXQgdHVw bGUgaW4gKi8KKwlUdXBsZVRhYmxlU2xvdCAqZnBfTGVmdG92ZXIxOwkJLyogc2xvdCB0byBz dG9yZSBsZWZ0b3ZlciBiZWxvdyB0aGUgdGFyZ2V0IHJhbmdlICovCisJVHVwbGVUYWJsZVNs b3QgKmZwX0xlZnRvdmVyMjsJCS8qIHNsb3QgdG8gc3RvcmUgbGVmdG92ZXIgYWJvdmUgdGhl IHRhcmdldCByYW5nZSAqLworfSBGb3JQb3J0aW9uT2ZTdGF0ZTsKKwogLyoKICAqIFJlc3Vs dFJlbEluZm8KICAqCkBAIC01NDMsNiArNTY3LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVzdWx0 UmVsSW5mbwogCUxpc3QJICAgKnJpX21hdGNoZWRNZXJnZUFjdGlvbjsKIAlMaXN0CSAgICpy aV9ub3RNYXRjaGVkTWVyZ2VBY3Rpb247CiAKKwkvKiBGT1IgUE9SVElPTiBPRiBldmFsdWF0 aW9uIHN0YXRlICovCisJRm9yUG9ydGlvbk9mU3RhdGUgKnJpX2ZvclBvcnRpb25PZjsKKwog CS8qIHBhcnRpdGlvbiBjaGVjayBleHByZXNzaW9uIHN0YXRlIChOVUxMIGlmIG5vdCBzZXQg dXAgeWV0KSAqLwogCUV4cHJTdGF0ZSAgKnJpX1BhcnRpdGlvbkNoZWNrRXhwcjsKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDQ3OWI1ZmZhMzUuLjE3N2RmOTZjODYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTE0OCw2ICsxNDgsOSBAQCB0eXBlZGVmIHN0cnVj dCBRdWVyeQogCSAqLwogCWludAkJCXJlc3VsdFJlbGF0aW9uIHBnX25vZGVfYXR0cihxdWVy eV9qdW1ibGVfaWdub3JlKTsKIAorCS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSBmb3IgVVBE QVRFL0RFTEVURSAqLworCUZvclBvcnRpb25PZkV4cHIgKmZvclBvcnRpb25PZjsKKwogCS8q IGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8KIAlib29sCQloYXNB Z2dzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAkvKiBoYXMgd2luZG93 IGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwpAQCAtMTUzNyw2ICsxNTQwLDE5IEBAIHR5cGVkZWYg c3RydWN0IFJvd01hcmtDbGF1c2UKIAlib29sCQlwdXNoZWREb3duOwkJLyogcHVzaGVkIGRv d24gZnJvbSBoaWdoZXIgcXVlcnkgbGV2ZWw/ICovCiB9IFJvd01hcmtDbGF1c2U7CiAKKy8q CisgKiBGb3JQb3J0aW9uT2ZDbGF1c2UKKyAqCQlyZXByZXNlbnRhdGlvbiBvZiBGT1IgUE9S VElPTiBPRiA8cGVyaW9kLW5hbWU+IEZST00gPHQxPiBUTyA8dDI+CisgKi8KK3R5cGVkZWYg c3RydWN0IEZvclBvcnRpb25PZkNsYXVzZQoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkg ICAqcmFuZ2VfbmFtZTsKKwlpbnQJCQlyYW5nZV9uYW1lX2xvY2F0aW9uOworCU5vZGUJICAg KnRhcmdldF9zdGFydDsKKwlOb2RlCSAgICp0YXJnZXRfZW5kOworfSBGb3JQb3J0aW9uT2ZD bGF1c2U7CisKIC8qCiAgKiBXaXRoQ2xhdXNlIC0KICAqCSAgIHJlcHJlc2VudGF0aW9uIG9m IFdJVEggY2xhdXNlCkBAIC0xOTE3LDEyICsxOTMzLDEzIEBAIHR5cGVkZWYgc3RydWN0IElu c2VydFN0bXQKICAqLwogdHlwZWRlZiBzdHJ1Y3QgRGVsZXRlU3RtdAogewotCU5vZGVUYWcJ CXR5cGU7Ci0JUmFuZ2VWYXIgICAqcmVsYXRpb247CQkvKiByZWxhdGlvbiB0byBkZWxldGUg ZnJvbSAqLwotCUxpc3QJICAgKnVzaW5nQ2xhdXNlOwkvKiBvcHRpb25hbCB1c2luZyBjbGF1 c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxp ZmljYXRpb25zICovCi0JTGlzdAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHBy ZXNzaW9ucyB0byByZXR1cm4gKi8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lU SCBjbGF1c2UgKi8KKwlOb2RlVGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlv bjsJCS8qIHJlbGF0aW9uIHRvIGRlbGV0ZSBmcm9tICovCisJRm9yUG9ydGlvbk9mQ2xhdXNl ICpmb3JQb3J0aW9uT2Y7CS8qIEZPUiBQT1JUSU9OIE9GIGNsYXVzZSAqLworCUxpc3QJCQkg ICAqdXNpbmdDbGF1c2U7CS8qIG9wdGlvbmFsIHVzaW5nIGNsYXVzZSBmb3IgbW9yZSB0YWJs ZXMgKi8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNlOwkvKiBxdWFsaWZpY2F0aW9ucyAqLwor CUxpc3QJCQkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byBy ZXR1cm4gKi8KKwlXaXRoQ2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNl ICovCiB9IERlbGV0ZVN0bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE5 MzEsMTMgKzE5NDgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgRGVsZXRlU3RtdAogICovCiB0eXBl ZGVmIHN0cnVjdCBVcGRhdGVTdG10CiB7Ci0JTm9kZVRhZwkJdHlwZTsKLQlSYW5nZVZhciAg ICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRvIHVwZGF0ZSAqLwotCUxpc3QJICAgKnRhcmdl dExpc3Q7CQkvKiB0aGUgdGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8KLQlOb2RlCSAg ICp3aGVyZUNsYXVzZTsJLyogcXVhbGlmaWNhdGlvbnMgKi8KLQlMaXN0CSAgICpmcm9tQ2xh dXNlOwkJLyogb3B0aW9uYWwgZnJvbSBjbGF1c2UgZm9yIG1vcmUgdGFibGVzICovCi0JTGlz dAkgICAqcmV0dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4g Ki8KLQlXaXRoQ2xhdXNlICp3aXRoQ2xhdXNlOwkJLyogV0lUSCBjbGF1c2UgKi8KKwlOb2Rl VGFnCQkJCXR5cGU7CisJUmFuZ2VWYXIJCSAgICpyZWxhdGlvbjsJCS8qIHJlbGF0aW9uIHRv IHVwZGF0ZSAqLworCUZvclBvcnRpb25PZkNsYXVzZSAqZm9yUG9ydGlvbk9mOwkvKiBGT1Ig UE9SVElPTiBPRiBjbGF1c2UgKi8KKwlMaXN0CQkJICAgKnRhcmdldExpc3Q7CQkvKiB0aGUg dGFyZ2V0IGxpc3QgKG9mIFJlc1RhcmdldCkgKi8KKwlOb2RlCQkJICAgKndoZXJlQ2xhdXNl OwkvKiBxdWFsaWZpY2F0aW9ucyAqLworCUxpc3QJCQkgICAqZnJvbUNsYXVzZTsJCS8qIG9w dGlvbmFsIGZyb20gY2xhdXNlIGZvciBtb3JlIHRhYmxlcyAqLworCUxpc3QJCQkgICAqcmV0 dXJuaW5nTGlzdDsJLyogbGlzdCBvZiBleHByZXNzaW9ucyB0byByZXR1cm4gKi8KKwlXaXRo Q2xhdXNlCQkgICAqd2l0aENsYXVzZTsJCS8qIFdJVEggY2xhdXNlICovCiB9IFVwZGF0ZVN0 bXQ7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK aW5kZXggNTcwMmZiYmE2MC4uZDJiZTdmMjZkMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK QEAgLTIzNTIsNiArMjM1Miw3IEBAIHR5cGVkZWYgc3RydWN0IE1vZGlmeVRhYmxlUGF0aAog CUxpc3QJICAgKnJldHVybmluZ0xpc3RzOyAvKiBwZXItdGFyZ2V0LXRhYmxlIFJFVFVSTklO RyB0bGlzdHMgKi8KIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9u LWxvY2tpbmcgb25seSkgKi8KIAlPbkNvbmZsaWN0RXhwciAqb25jb25mbGljdDsgLyogT04g Q09ORkxJQ1QgY2xhdXNlLCBvciBOVUxMICovCisJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9y dGlvbk9mOwkvKiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8K IAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFsUGxhblF1YWwgcmUt ZXZhbCAqLwogCUxpc3QJICAgKm1lcmdlQWN0aW9uTGlzdHM7CS8qIHBlci10YXJnZXQtdGFi bGUgbGlzdHMgb2YgYWN0aW9ucyBmb3IKIAkJCQkJCQkJCSAqIE1FUkdFICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCmluZGV4IDFiNzg3ZmUwMzEuLjJiY2E3MDg2ZTIgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVz L3BsYW5ub2Rlcy5oCkBAIC0yNDMsNiArMjQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5 VGFibGUKIAlMaXN0CSAgICpyb3dNYXJrczsJCS8qIFBsYW5Sb3dNYXJrcyAobm9uLWxvY2tp bmcgb25seSkgKi8KIAlpbnQJCQllcHFQYXJhbTsJCS8qIElEIG9mIFBhcmFtIGZvciBFdmFs UGxhblF1YWwgcmUtZXZhbCAqLwogCU9uQ29uZmxpY3RBY3Rpb24gb25Db25mbGljdEFjdGlv bjsJLyogT04gQ09ORkxJQ1QgYWN0aW9uICovCisJTm9kZQkgICAqZm9yUG9ydGlvbk9mOwkv KiBGT1IgUE9SVElPTiBPRiBjbGF1c2UgZm9yIFVQREFURS9ERUxFVEUgKi8KIAlMaXN0CSAg ICphcmJpdGVySW5kZXhlczsgLyogTGlzdCBvZiBPTiBDT05GTElDVCBhcmJpdGVyIGluZGV4 IE9JRHMgICovCiAJTGlzdAkgICAqb25Db25mbGljdFNldDsJLyogSU5TRVJUIE9OIENPTkZM SUNUIERPIFVQREFURSB0YXJnZXRsaXN0ICovCiAJTGlzdAkgICAqb25Db25mbGljdENvbHM7 IC8qIHRhcmdldCBjb2x1bW4gbnVtYmVycyBmb3Igb25Db25mbGljdFNldCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaAppbmRleCA2MGQ3MmE4NzZiLi5iM2M2ZjZjZWNmIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rl cy9wcmltbm9kZXMuaApAQCAtMjA0MSw0ICsyMDQxLDI5IEBAIHR5cGVkZWYgc3RydWN0IE9u Q29uZmxpY3RFeHByCiAJTGlzdAkgICAqZXhjbFJlbFRsaXN0OwkvKiB0bGlzdCBvZiB0aGUg RVhDTFVERUQgcHNldWRvIHJlbGF0aW9uICovCiB9IE9uQ29uZmxpY3RFeHByOwogCisvKi0t LS0tLS0tLS0KKyAqIEZvclBvcnRpb25PZkV4cHIgLSByZXByZXNlbnRzIGEgRk9SIFBPUlRJ T04gT0YgLi4uIGV4cHJlc3Npb24KKyAqCisgKiBXZSBzZXQgdXAgYW4gZXhwcmVzc2lvbiB0 byBtYWtlIGEgcmFuZ2UgZnJvbSB0aGUgRlJPTS9UTyBib3VuZHMsCisgKiBzbyB0aGF0IHdl IGNhbiB1c2UgcmFuZ2Ugb3BlcmF0b3JzIHdpdGggaXQuCisgKgorICogVGhlbiB3ZSBzZXQg dXAgYW4gb3ZlcmxhcHMgZXhwcmVzc2lvbiBiZXR3ZWVuIHRoYXQgYW5kIHRoZSByYW5nZSBj b2x1bW4sCisgKiBzbyB0aGF0IHdlIGNhbiBmaW5kIHRoZSByb3dzIHdlIG5lZWQgdG8gdXBk YXRlL2RlbGV0ZS4KKyAqCisgKiBJbiB0aGUgZXhlY3V0b3Igd2UnbGwgYWxzbyBidWlsZCBh biBpbnRlcnNlY3QgZXhwcmVzc2lvbiBiZXR3ZWVuIHRoZQorICogdGFyZ2V0ZWQgcmFuZ2Ug YW5kIHRoZSByYW5nZSBjb2x1bW4sIHNvIHRoYXQgd2UgY2FuIHVwZGF0ZSB0aGUgc3RhcnQv ZW5kCisgKiBib3VuZHMgb2YgdGhlIFVQREFURSdkIHJlY29yZC4KKyAqLS0tLS0tLS0tLQor ICovCit0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZFeHByCit7CisJTm9kZVRhZwkJdHlw ZTsKKwlWYXIJCSAgICpyYW5nZVZhcjsJCQkvKiBSYW5nZSBjb2x1bW4gKi8KKwljaGFyCSAg ICpyYW5nZV9uYW1lOwkJCS8qIFJhbmdlIG5hbWUgKi8KKwlOb2RlCSAgICp0YXJnZXRSYW5n ZTsJCS8qIEZPUiBQT1JUSU9OIE9GIGJvdW5kcyBhcyBhIHJhbmdlICovCisJT2lkCQkJcmFu Z2VUeXBlOwkJCS8qIHR5cGUgb2YgdGFyZ2V0UmFuZ2UgKi8KKwlOb2RlCSAgICpvdmVybGFw c0V4cHI7CQkvKiByYW5nZSAmJiB0YXJnZXRSYW5nZSAqLworCUxpc3QJICAgKnJhbmdlU2V0 OwkJCS8qIExpc3Qgb2YgVGFyZ2V0RW50cnlzIHRvIHNldCB0aGUgdGltZSBjb2x1bW4ocykg Ki8KK30gRm9yUG9ydGlvbk9mRXhwcjsKKwogI2VuZGlmCQkJCQkJCS8qIFBSSU1OT0RFU19I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3Ny Yy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCmluZGV4IDZlNTU3YmViYzQuLmM5MzJk MTIwNGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCisr KyBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRobm9kZS5oCkBAIC0yODMsNyArMjgzLDgg QEAgZXh0ZXJuIE1vZGlmeVRhYmxlUGF0aCAqY3JlYXRlX21vZGlmeXRhYmxlX3BhdGgoUGxh bm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0cywK IAkJCQkJCQkJCQkJCUxpc3QgKndpdGhDaGVja09wdGlvbkxpc3RzLCBMaXN0ICpyZXR1cm5p bmdMaXN0cywKIAkJCQkJCQkJCQkJCUxpc3QgKnJvd01hcmtzLCBPbkNvbmZsaWN0RXhwciAq b25jb25mbGljdCwKLQkJCQkJCQkJCQkJCUxpc3QgKm1lcmdlQWN0aW9uTGlzdHMsIGludCBl cHFQYXJhbSk7CisJCQkJCQkJCQkJCQlMaXN0ICptZXJnZUFjdGlvbkxpc3RzLAorCQkJCQkJ CQkJCQkJRm9yUG9ydGlvbk9mRXhwciAqZm9yUG9ydGlvbk9mLCBpbnQgZXBxUGFyYW0pOwog ZXh0ZXJuIExpbWl0UGF0aCAqY3JlYXRlX2xpbWl0X3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCVBhdGggKnN1YnBhdGgsCiAJCQkJCQkJCQlO b2RlICpsaW1pdE9mZnNldCwgTm9kZSAqbGltaXRDb3VudCwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3BhcnNlci9hbmFseXplLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5o CmluZGV4IGM5NjQ4M2FlNzguLmI2ZDUwNjVlMTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9hbmFseXplLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaApA QCAtNDMsNyArNDMsOCBAQCBleHRlcm4gTGlzdCAqdHJhbnNmb3JtSW5zZXJ0Um93KFBhcnNl U3RhdGUgKnBzdGF0ZSwgTGlzdCAqZXhwcmxpc3QsCiAJCQkJCQkJCUxpc3QgKnN0bXRjb2xz LCBMaXN0ICppY29sdW1ucywgTGlzdCAqYXR0cm5vcywKIAkJCQkJCQkJYm9vbCBzdHJpcF9p bmRpcmVjdGlvbik7CiBleHRlcm4gTGlzdCAqdHJhbnNmb3JtVXBkYXRlVGFyZ2V0TGlzdChQ YXJzZVN0YXRlICpwc3RhdGUsCi0JCQkJCQkJCQkgICBMaXN0ICpvcmlnVGxpc3QpOworCQkJ CQkJCQkJICAgTGlzdCAqb3JpZ1RsaXN0LAorCQkJCQkJCQkJICAgRm9yUG9ydGlvbk9mRXhw ciAqZm9yUG9ydGlvbk9mKTsKIGV4dGVybiBRdWVyeSAqdHJhbnNmb3JtVG9wTGV2ZWxTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmF3U3RtdCAqcGFyc2VUcmVlKTsKIGV4dGVybiBRdWVy eSAqdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKnBhcnNlVHJlZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9rd2xpc3QuaAppbmRleCBjY2Y1YmY4YWE2Li5jODljZWVhOWY2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUv cGFyc2VyL2t3bGlzdC5oCkBAIC0zMzAsNiArMzMwLDcgQEAgUEdfS0VZV09SRCgicGVyaW9k IiwgUEVSSU9ELCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi cGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19L RVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKK1BHX0tFWVdPUkQoInBvcnRpb24iLCBQT1JUSU9OLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb3NpdGlvbiIsIFBPU0lUSU9OLCBD T0xfTkFNRV9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicHJlY2VkaW5nIiwg UFJFQ0VESU5HLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwcmVjaXNpb24iLCBQUkVDSVNJT04sIENPTF9OQU1FX0tFWVdPUkQsIEFTX0xBQkVMKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaCBiL3NyYy9pbmNs dWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKaW5kZXggZjU4OTExMmQ1ZS4uMGQ2MDFmMzRhNSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaAorKysgYi9zcmMv aW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCkBAIC01Niw2ICs1Niw3IEBAIHR5cGVkZWYg ZW51bSBQYXJzZUV4cHJLaW5kCiAJRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UsCS8qIFVQREFU RSBhc3NpZ25tZW50IHNvdXJjZSBpdGVtICovCiAJRVhQUl9LSU5EX1VQREFURV9UQVJHRVQs CS8qIFVQREFURSBhc3NpZ25tZW50IHRhcmdldCBpdGVtICovCiAJRVhQUl9LSU5EX01FUkdF X1dIRU4sCQkvKiBNRVJHRSBXSEVOIFtOT1RdIE1BVENIRUQgY29uZGl0aW9uICovCisJRVhQ Ul9LSU5EX1VQREFURV9QT1JUSU9OLAkvKiBVUERBVEUgRk9SIFBPUlRJT04gT0YgaXRlbSAq LwogCUVYUFJfS0lORF9HUk9VUF9CWSwJCQkvKiBHUk9VUCBCWSAqLwogCUVYUFJfS0lORF9P UkRFUl9CWSwJCQkvKiBPUkRFUiBCWSAqLwogCUVYUFJfS0lORF9ESVNUSU5DVF9PTiwJCS8q IERJU1RJTkNUIE9OICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9sc3lzY2Fj aGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCmluZGV4IGY1ZmRiZmUxMTYu LmExMTc1MjdkOGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5o CisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2xzeXNjYWNoZS5oCkBAIC0xNDMsNiArMTQzLDgg QEAgZXh0ZXJuIGNoYXIgZ2V0X3JlbF9wZXJzaXN0ZW5jZShPaWQgcmVsaWQpOwogZXh0ZXJu IE9pZAlnZXRfdHJhbnNmb3JtX2Zyb21zcWwoT2lkIHR5cGlkLCBPaWQgbGFuZ2lkLCBMaXN0 ICp0cmZ0eXBlcyk7CiBleHRlcm4gT2lkCWdldF90cmFuc2Zvcm1fdG9zcWwoT2lkIHR5cGlk LCBPaWQgbGFuZ2lkLCBMaXN0ICp0cmZ0eXBlcyk7CiBleHRlcm4gYm9vbCBnZXRfdHlwaXNk ZWZpbmVkKE9pZCB0eXBpZCk7CitleHRlcm4gY2hhciAqZ2V0X3R5cG5hbWUoT2lkIHR5cGlk KTsKK2V4dGVybiBib29sIGdldF90eXBuYW1lX2FuZF9uYW1lc3BhY2UoT2lkIHR5cGlkLCBj aGFyICoqdHlwbmFtZSwgY2hhciAqKnR5cG5hbWVzcGFjZSk7CiBleHRlcm4gaW50MTYgZ2V0 X3R5cGxlbihPaWQgdHlwaWQpOwogZXh0ZXJuIGJvb2wgZ2V0X3R5cGJ5dmFsKE9pZCB0eXBp ZCk7CiBleHRlcm4gdm9pZCBnZXRfdHlwbGVuYnl2YWwoT2lkIHR5cGlkLCBpbnQxNiAqdHlw bGVuLCBib29sICp0eXBieXZhbCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9w ZXJpb2QuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3BlcmlvZC5oCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjBhOGFmM2VkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9wZXJpb2QuaApAQCAtMCwwICsxLDE5IEBACisvKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBwZXJpb2QuaAorICoJICBzdXBwb3J0IGZvciBQb3N0Z3Jl cyBwZXJpb2RzLgorICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAy MiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENv cHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9y bmlhCisgKgorICogc3JjL2luY2x1ZGUvdXRpbHMvcGVyaW9kLmgKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBQRVJJT0RfSAorI2RlZmluZSBQRVJJT0RfSAor CitleHRlcm4gRGF0dW0gcGVyaW9kX3RvX3JhbmdlKFR1cGxlVGFibGVTbG90ICpzbG90LCBp bnQgc3RhcnRhdHRubywgaW50IGVuZGF0dG5vLCBPaWQgcmFuZ2V0eXBlKTsKKworI2VuZGlm CQkJCQkJCS8qIFBFUklPRF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9y YW5nZXR5cGVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9yYW5nZXR5cGVzLmgKaW5kZXggNmI0 MjBhODYxOC4uNDhlZTJkZWJlZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcmFu Z2V0eXBlcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JhbmdldHlwZXMuaApAQCAtMTY0 LDUgKzE2NCw4IEBAIGV4dGVybiBSYW5nZVR5cGUgKm1ha2VfZW1wdHlfcmFuZ2UoVHlwZUNh Y2hlRW50cnkgKnR5cGNhY2hlKTsKIGV4dGVybiBib29sIHJhbmdlX3NwbGl0X2ludGVybmFs KFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwKIAkJCQkJ CQkJIGNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCiAJCQkJCQkJ CSBSYW5nZVR5cGUgKipvdXRwdXQyKTsKK2V4dGVybiB2b2lkIHJhbmdlX2xlZnRvdmVyX2lu dGVybmFsKFR5cGVDYWNoZUVudHJ5ICp0eXBjYWNoZSwgY29uc3QgUmFuZ2VUeXBlICpyMSwK KwkJCQkJCQkJCWNvbnN0IFJhbmdlVHlwZSAqcjIsIFJhbmdlVHlwZSAqKm91dHB1dDEsCisJ CQkJCQkJCQlSYW5nZVR5cGUgKipvdXRwdXQyKTsKIAogI2VuZGlmCQkJCQkJCS8qIFJBTkdF VFlQRVNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jf cG9ydGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9u X29mLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4zMDkxOWI1 NWU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3Jf cG9ydGlvbl9vZi5vdXQKQEAgLTAsMCArMSw0MzEgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUv REVMRVRFIEZPUiBQT1JUSU9OIE9GCistLSBXb3JrcyBvbiBub24tUEsgY29sdW1ucworQ1JF QVRFIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZh bGlkX2F0IHRzcmFuZ2UsCisgIG5hbWUgdGV4dCBOT1QgTlVMTAorKTsKK0lOU0VSVCBJTlRP IGZvcl9wb3J0aW9uX29mX3Rlc3QgVkFMVUVTCisoJ1sxLDIpJywgJ1syMDE4LTAxLTAyLDIw MjAtMDEtMDEpJywgJ29uZScpOworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE5LTAxLTAxJwor U0VUIG5hbWUgPSAnZm9vJzsKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9VTkRFRDsK K1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAg ICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1l IAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAg MjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwgZm9vCisgWzEsMikgfCBbIlR1 ZSBKYW4gMDIgMDA6MDA6MDAgMjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwg b25lCisgWzEsMikgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIlR1ZSBKYW4gMTUg MDA6MDA6MDAgMjAxOSIpIHwgb25lCisoMyByb3dzKQorCistLSBXb3JrcyBvbiBtb3JlIHRo YW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CitDUkVBVEUg VEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAgdmFsaWQx X2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1lIHRleHQgTk9UIE5V TEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZBTFVFUworKCdbMSwy KScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0wMSwyMDI1LTAxLTAx KScsICdvbmUnKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9 ICdmb28nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwg ICAgICAgICAgICAgICAgICAgICAgICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgfCBuYW1lIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAwIDIwMTgiKSB8IFsi VGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1Iikg fCBmb28KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAx NSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgb25lCisoMiByb3dzKQorCitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWQyX2F0IEZST00gJzIwMTgtMDEt MTUnIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAnYmFyJzsKK1NFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWQxX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkMl9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0KKyBbMSwyKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiU2F0 IEZlYiAwMyAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUg SmFuIDAxIDAwOjAwOjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IGZv bworIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDow MCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIlRodSBKYW4gMDEgMDA6 MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lCisoNCByb3dz KQorCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZDFfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZDFfYXQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgdmFsaWQyX2F0ICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLQorIFsxLDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgi LCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IFsiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDI1IikgfCBiYXIKKyBbMSwyKSB8IFsiVHVl IEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBb IlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIp IHwgb25lCisgWzEsMikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4g MjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJXZWQg SmFuIDAxIDAwOjAwOjAwIDIwMjUiKSB8IGJhcgorIFsxLDIpIHwgWyJNb24gSmFuIDE1IDAw OjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IFsiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBmb28KKyg0 IHJvd3MpCisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkMl9hdCBGUk9NICcyMDE4LTAxLTIwJyBUTyBVTkJPVU5ERUQ7CitTRUxFQ1Qg KiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3Q7CisgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkMV9hdCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZDJfYXQgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWUgCist LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tCisgWzEsMikgfCBbIlR1ZSBKYW4gMDIgMDA6MDA6MDAg MjAxOCIsIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIpIHwgWyJUaHUgSmFuIDAxIDAwOjAw OjAwIDIwMTUiLCJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiKSB8IG9uZQorIFsxLDIpIHwg WyJNb24gSmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgi KSB8IFsiVGh1IEphbiAwMSAwMDowMDowMCAyMDE1IiwiTW9uIEphbiAxNSAwMDowMDowMCAy MDE4IikgfCBmb28KKyBbMSwyKSB8IFsiVHVlIEphbiAwMiAwMDowMDowMCAyMDE4IiwiTW9u IEphbiAxNSAwMDowMDowMCAyMDE4IikgfCBbIk1vbiBKYW4gMTUgMDA6MDA6MDAgMjAxOCIs IlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgYmFyCisgWzEsMikgfCBbIk1vbiBKYW4g MTUgMDA6MDA6MDAgMjAxOCIsIlNhdCBKYW4gMjAgMDA6MDA6MDAgMjAxOCIpIHwgWyJNb24g SmFuIDE1IDAwOjAwOjAwIDIwMTgiLCJTYXQgSmFuIDIwIDAwOjAwOjAwIDIwMTgiKSB8IGJh cgorKDQgcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0OworQ1JFQVRF IFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QgKAorICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEws CisgIHZhbGlkX2F0IHRzcmFuZ2UgTk9UIE5VTEwsCisgIG5hbWUgdGV4dCBOT1QgTlVMTCwK KwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90 ZXN0CitWQUxVRVMKKygnWzEsMiknLCAnWzIwMTgtMDEtMDIsMjAxOC0wMi0wMyknLCAnb25l JyksCisoJ1sxLDIpJywgJ1syMDE4LTAyLTAzLDIwMTgtMDMtMDMpJywgJ29uZScpLAorKCdb MSwyKScsICdbMjAxOC0wMy0wMywyMDE4LTA0LTA0KScsICdvbmUnKSwKKygnWzIsMyknLCAn WzIwMTgtMDEtMDEsMjAxOC0wMS0wNSknLCAndHdvJyksCisoJ1szLDQpJywgJ1syMDE4LTAx LTAxLCknLCAndGhyZWUnKSwKKygnWzQsNSknLCAnKCwyMDE4LTA0LTAxKScsICdmb3VyJyks CisoJ1s1LDYpJywgJygsKScsICdmaXZlJykKKzsKKy0tCistLSBVUERBVEUgdGVzdHMKKy0t CistLSBTZXR0aW5nIHdpdGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFsaWRfYXQgRlJPTSAnMjAxOC0w Ni0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdmb28nCitXSEVSRSBpZCA9ICdbNSw2 KSc7CitFUlJPUjogIGNvbHVtbiBvciBwZXJpb2QgImludmFsaWRfYXQiIG9mIHJlbGF0aW9u ICJmb3JfcG9ydGlvbl9vZl90ZXN0IiBkb2VzIG5vdCBleGlzdAorTElORSAyOiBGT1IgUE9S VElPTiBPRiBpbnZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBTZXR0aW5nIHRoZSByYW5nZSBmYWlscworVVBE QVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTgtMDYtMDEnIFRPIFVOQk9VTkRFRAorU0VUIHZhbGlkX2F0ID0gJ1sxOTkwLTAxLTAx LDE5OTktMDEtMDEpJworV0hFUkUgaWQgPSAnWzUsNiknOworRVJST1I6ICBjYW4ndCBkaXJl Y3RseSBhc3NpZ24gdG8gInZhbGlkX2F0IiBpbiBhIEZPUiBQT1JUSU9OIE9GIHVwZGF0ZQor TElORSAzOiBTRVQgdmFsaWRfYXQgPSAnWzE5OTAtMDEtMDEsMTk5OS0wMS0wMSknCisgICAg ICAgICAgICBeCistLSBUaGUgd3JvbmcgdHlwZSBmYWlscworVVBEQVRFIGZvcl9wb3J0aW9u X29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMSBUTyA0CitTRVQgbmFt ZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICBmdW5jdGlvbiBwZ19j YXRhbG9nLnRzcmFuZ2UoaW50ZWdlciwgaW50ZWdlcikgZG9lcyBub3QgZXhpc3QKK0xJTkUg MjogRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAxIFRPIDQKKyAgICAgICAgICAgICAg ICAgICAgICAgXgorSElOVDogIE5vIGZ1bmN0aW9uIG1hdGNoZXMgdGhlIGdpdmVuIG5hbWUg YW5kIGFyZ3VtZW50IHR5cGVzLiBZb3UgbWlnaHQgbmVlZCB0byBhZGQgZXhwbGljaXQgdHlw ZSBjYXN0cy4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIHJldmVyc2VkIGZhaWxzCitV UERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitTRVQgbmFtZSA9ICd0aHJlZV4xJwor V0hFUkUgaWQgPSAnWzMsNCknOworRVJST1I6ICByYW5nZSBsb3dlciBib3VuZCBtdXN0IGJl IGxlc3MgdGhhbiBvciBlcXVhbCB0byByYW5nZSB1cHBlciBib3VuZAorLS0gU2V0dGluZyB3 aXRoIGEgc3VicXVlcnkgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEtMDEnKSBUTyAnMjAx OC0wNi0wMScKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CitFUlJP UjogIGNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbgor TElORSAyOiBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIChTRUxFQ1QgJzIwMTgtMDEt MDEnKSBUTyAnMjAxOC0uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBTZXR0aW5nIHdpdGggYSBjb2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0 KSBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7 CitFUlJPUjogIGNhbm5vdCB1c2UgY29sdW1uIHJlZmVyZW5jZSBpbiBGT1IgUE9SVElPTiBP RiBleHByZXNzaW9uCitMSU5FIDI6IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gbG93 ZXIodmFsaWRfYXQpIFRPIFVOQk9VTkRFRAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KKy0tIFNldHRpbmcgd2l0aCB0aW1lc3RhbXBzIGVxdWFsIGRv ZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9G IHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAxJworU0VUIG5hbWUg PSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIFVwZGF0aW5nIGEgZmluaXRl L29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3Bv cnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0w MScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICd0aHJlZV4xJworV0hFUkUgaWQgPSAnWzMs NCknOworLS0gVXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYW4gb3Blbi9m aW5pdGUgdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSBVTkJPVU5ERUQgVE8gJzIwMTgtMDMtMDEnCitTRVQgbmFtZSA9 ICd0aHJlZV4yJworV0hFUkUgaWQgPSAnWzMsNCknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9m aW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9w b3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVE IFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4xJworV0hFUkUgaWQgPSAnWzQs NSknOworLS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGEgZmluaXRl L29wZW4gdGFyZ2V0CitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9 ICdmb3VyXjInCitXSEVSRSBpZCA9ICdbNCw1KSc7CistLSBVcGRhdGluZyBhIGZpbml0ZS9m aW5pdGUgcG9ydGlvbiB3aXRoIGFuIGV4YWN0IGZpdAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTctMDEtMDEnIFRPICcy MDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91cl4zJworV0hFUkUgaWQgPSAnWzQsNSknOwor LS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3BhbgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRF RAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVSRSBpZCA9ICdbMiwzKSc7CistLSBVcGRhdGlu ZyBhbiBvcGVuL29wZW4gcG9ydGlvbiB3aXRoIGEgZmluaXRlL2Zpbml0ZSB0YXJnZXQKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDE4LTAxLTAxJyBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeMicKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKy0tIFVwZGF0aW5nIGFuIGVuY2xvc2VkIHNwYW4gd2l0aCBz ZXBhcmF0ZSBwcm90cnVkaW5nIHNwYW5zCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxNy0wMS0wMScgVE8gJzIwMjAtMDEt MDEnCitTRVQgbmFtZSA9ICdmaXZlXjMnCitXSEVSRSBpZCA9ICdbNSw2KSc7CistLSBVcGRh dGluZyBtdWx0aXBsZSBlbmNsb3NlZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFt ZSA9ICdvbmVeMicKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIFVwZGF0aW5nIHdpdGggYSBz aGlmdC9yZWR1Y2UgY29uZmxpY3QKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdAorICBGUk9NICcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzEnIEhPVVIgVE8gTUlOVVRFCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5h bWUgPSAnb25lXjMnCitXSEVSRSBpZCA9ICdbMSwyKSc7CitVUERBVEUgZm9yX3BvcnRpb25f b2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAnMjAxOC0wMy0wMScg QVQgVElNRSBaT05FIElOVEVSVkFMICcyJyBIT1VSCisgIFRPICcyMDE5LTAxLTAxJworU0VU IG5hbWUgPSAnb25lXjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CitFUlJPUjogIHN5bnRheCBl cnJvciBhdCBvciBuZWFyICInMjAxOS0wMS0wMSciCitMSU5FIDQ6ICAgVE8gJzIwMTktMDEt MDEnCisgICAgICAgICAgICAgXgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0CisgIEZST00gKCcyMDE4LTAzLTAxJyBBVCBUSU1FIFpPTkUg SU5URVJWQUwgJzInIEhPVVIpCisgIFRPICcyMDE5LTAxLTAxJworU0VUIG5hbWUgPSAnb25l XjQnCitXSEVSRSBpZCA9ICdbMSwyKSc7CistLSBVcGRhdGluZyB0aGUgbm9uLXJhbmdlIHBh cnQgb2YgdGhlIFBLOgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMTUnIFRPIE5VTEwKK1NFVCBpZCA9ICdbNiw3 KScKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJFIGNsYXVz ZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAnKic7CitT RUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgbmFtZSAgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsx LDIpIHwgWyJUdWUgSmFuIDAyIDAwOjAwOjAwIDIwMTgiLCJTYXQgRmViIDAzIDAwOjAwOjAw IDIwMTgiKSB8IG9uZV4yCisgWzEsMikgfCBbIlNhdCBGZWIgMDMgMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDow MCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFszLDQpIHwg WyJGcmkgSnVuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAi KSB8IHRocmVlXjEKKyBbMyw0KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIiwpICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB0aHJlZV4xKgorIFs0LDUpIHwgKCwiU3VuIEph biAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGZvdXJe MQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUgRmViIDAxIDAw OjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAxIDAwOjAwOjAw IDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgorIFs1LDYpIHwg KCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAw MDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBmaXZlXjMKKyBb NSw2KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDMwIikgfCBmaXZlCisgWzUsNikgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAzMCIsKSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZml2 ZSoKKyBbNiw3KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAw ODowMTowMCAyMDE4IikgfCBvbmVeMgorIFs2LDcpIHwgWyJUaHUgTWFyIDAxIDA4OjAxOjAw IDIwMTgiLCJUaHUgTWFyIDAxIDEwOjAwOjAwIDIwMTgiKSB8IG9uZV4zCisgWzYsNykgfCBb IlRodSBNYXIgMDEgMTA6MDA6MDAgMjAxOCIsIlNhdCBNYXIgMDMgMDA6MDA6MDAgMjAxOCIp IHwgb25lXjQKKyBbNiw3KSB8IFsiU2F0IE1hciAwMyAwMDowMDowMCAyMDE4IiwiV2VkIEFw ciAwNCAwMDowMDowMCAyMDE4IikgfCBvbmVeNAorKDIwIHJvd3MpCisKKy0tCistLSBERUxF VEUgdGVzdHMKKy0tCistLSBEZWxldGluZyB3aXRoIGEgbWlzc2luZyBjb2x1bW4gZmFpbHMK K0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIGludmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gTlVMTAorV0hFUkUgaWQgPSAnWzUsNiknOwor RVJST1I6ICBjb2x1bW4gb3IgcGVyaW9kICJpbnZhbGlkX2F0IiBvZiByZWxhdGlvbiAiZm9y X3BvcnRpb25fb2ZfdGVzdCIgZG9lcyBub3QgZXhpc3QKK0xJTkUgMjogRk9SIFBPUlRJT04g T0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBOVUxMCisgICAgICAgICAgICAg ICAgICAgICAgIF4KKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyByZXZlcnNlZCBmYWls cworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEnCitXSEVSRSBpZCA9ICdb Myw0KSc7CitFUlJPUjogIHJhbmdlIGxvd2VyIGJvdW5kIG11c3QgYmUgbGVzcyB0aGFuIG9y IGVxdWFsIHRvIHJhbmdlIHVwcGVyIGJvdW5kCistLSBEZWxldGluZyB3aXRoIHRpbWVzdGFt cHMgZXF1YWwgZG9lcyBub3RoaW5nCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyAnMjAxOC0w NC0wMScKK1dIRVJFIGlkID0gJ1szLDQpJzsKKy0tIERlbGV0aW5nIHdpdGggYSBjbG9zZWQv Y2xvc2VkIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBP UlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMjAtMDYtMDEnCitX SEVSRSBpZCA9ICdbNSw2KSc7CistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMyw0KSc7 CistLSBEZWxldGluZyB3aXRoIGFuIG9wZW4vY2xvc2VkIHRhcmdldAorREVMRVRFIEZST00g Zm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxM IFRPICcyMDE4LTAyLTA4JworV0hFUkUgaWQgPSAnWzEsMiknOworLS0gRGVsZXRpbmcgd2l0 aCBhbiBvcGVuL29wZW4gdGFyZ2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5VTEwgVE8gTlVMTAorV0hFUkUgaWQg PSAnWzYsNyknOworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDI1LTAxLTAxJyBUTyBOVUxMOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0 IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKyAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgbmFtZSAgIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tCisgWzEsMikgfCBbIlRodSBGZWIgMDggMDA6MDA6MDAgMjAxOCIs IlRodSBGZWIgMTUgMDA6MDA6MDAgMjAxOCIpIHwgb25lXjIKKyBbMiwzKSB8IFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEphbiAwNSAwMDowMDowMCAyMDE4IikgfCB0d29e MgorIFszLDQpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgTWFyIDAxIDAw OjAwOjAwIDIwMTgiKSB8IHRocmVlXjIKKyBbMyw0KSB8IFsiVGh1IE1hciAwMSAwMDowMDow MCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCB0aHJlZQorIFs0LDUpIHwg KCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGZvdXJeMQorIFs0LDUpIHwgWyJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMTciLCJUaHUg RmViIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMworIFs0LDUpIHwgWyJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiLCJTdW4gQXByIDAxIDAwOjAwOjAwIDIwMTgiKSB8IGZvdXJeMgor IFs1LDYpIHwgKCwiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IikgICAgICAgICAgICAgICAg ICAgICAgICAgICB8IGZpdmUKKyBbNSw2KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3 IiwiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IikgfCBmaXZlXjMKKyBbNSw2KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiRnJpIEp1biAwMSAwMDowMDowMCAyMDE4IikgfCBm aXZlXjMKKyBbNSw2KSB8IFsiTW9uIEp1biAwMSAwMDowMDowMCAyMDIwIiwiV2VkIEphbiAw MSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTEgcm93cykKKworLS0gVVBEQVRFIC4uLiBS RVRVUk5JTkcgcmV0dXJucyBvbmx5IHRoZSB1cGRhdGVkIHZhbHVlcyAobm90IHRoZSBpbnNl cnRlZCBzaWRlIHZhbHVlcykKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTAxJyBUTyAnMjAxOC0wMi0xNScKK1NF VCBuYW1lID0gJ3RocmVlXjMnCitXSEVSRSBpZCA9ICdbMyw0KScKK1JFVFVSTklORyAqOwor ICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAg ICAgICAgICAgICB8ICBuYW1lICAgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMyw0KSB8 IFsiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4 IikgfCB0aHJlZV4zCisoMSByb3cpCisKKy0tIHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMg b24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBhbmQgdGhlIElOU0VSVGVkIHJvd3MKK0NSRUFU RSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCkKK1JFVFVSTlMgdHJpZ2dlcgor QVMKKyQkCitCRUdJTgorICBSQUlTRSBOT1RJQ0UgJyUgJSAlIG9mICUnLCBUR19XSEVOLCBU R19PUCwgTkVXLnZhbGlkX2F0LCBPTEQudmFsaWRfYXQ7CisgIElGIFRHX09QID0gJ0RFTEVU RScgVEhFTgorICAgIFJFVFVSTiBPTEQ7CisgIEVMU0UKKyAgICBSRVRVUk4gTkVXOworICBF TkQgSUY7CitFTkQ7CiskJAorTEFOR1VBR0UgcGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIHRy Z19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfaW5zZXJ0CisgIEJFRk9SRSBJTlNFUlQgT04gZm9y X3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBm b3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRp b25fb2ZfYWZ0ZXJfaW5zZXJ0CisgIEFGVEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKTsKK0NSRUFURSBUUklHR0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVf dXBkYXRlCisgIEJFRk9SRSBVUERBVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1Ig RUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7 CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYWZ0ZXJfdXBkYXRlCisgIEFG VEVSIFVQREFURSBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBF WEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29mX3RyaWdnZXIoKTsKK0NSRUFURSBUUklH R0VSIHRyZ19mb3JfcG9ydGlvbl9vZl9iZWZvcmVfZGVsZXRlCisgIEJFRk9SRSBERUxFVEUg T04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5D VElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9y X3BvcnRpb25fb2ZfYWZ0ZXJfZGVsZXRlCisgIEFGVEVSIERFTEVURSBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVworICBFWEVDVVRFIEZVTkNUSU9OIGZvcl9wb3J0 aW9uX29mX3RyaWdnZXIoKTsKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NF VCBuYW1lID0gJ2ZpdmVeNCcKK1dIRVJFIGlkID0gJ1s1LDYpJzsKK05PVElDRTogIEJFRk9S RSBVUERBVEUgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAw OjAwIDIwMjIiKSBvZiBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIldlZCBKYW4gMDEg MDA6MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEp1biAwMSAw MDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgb2YgPE5VTEw+CitO T1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDowMDowMCAyMDIyIiwiV2Vk IEphbiAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNF UlQgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIw MjEiKSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIlNhdCBKYW4gMDEgMDA6 MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9U SUNFOiAgQUZURVIgVVBEQVRFIFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIiwiU2F0IEph biAwMSAwMDowMDowMCAyMDIyIikgb2YgWyJNb24gSnVuIDAxIDAwOjAwOjAwIDIwMjAiLCJX ZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjUiKQorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIw MjQtMDEtMDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CitOT1RJQ0U6ICBCRUZPUkUgREVMRVRF IDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIsIldlZCBKYW4gMDEgMDA6 MDA6MDAgMjAyNSIpCitOT1RJQ0U6ICBCRUZPUkUgSU5TRVJUIFsiU2F0IEphbiAwMSAwMDow MDowMCAyMDIyIiwiU3VuIEphbiAwMSAwMDowMDowMCAyMDIzIikgb2YgPE5VTEw+CitOT1RJ Q0U6ICBCRUZPUkUgSU5TRVJUIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1Iikgb2YgPE5VTEw+CitOT1RJQ0U6ICBBRlRFUiBJTlNFUlQg WyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMi KSBvZiA8TlVMTD4KK05PVElDRTogIEFGVEVSIElOU0VSVCBbIk1vbiBKYW4gMDEgMDA6MDA6 MDAgMjAyNCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpIG9mIDxOVUxMPgorTk9USUNF OiAgQUZURVIgREVMRVRFIDxOVUxMPiBvZiBbIlNhdCBKYW4gMDEgMDA6MDA6MDAgMjAyMiIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyNSIpCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgICAgICAg ICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBuYW1lICAg CistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KKyBbMSwyKSB8IFsiVGh1IEZlYiAwOCAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IikgfCBvbmVeMgorIFsyLDMpIHwg WyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJGcmkgSmFuIDA1IDAwOjAwOjAwIDIwMTgi KSB8IHR3b14yCisgWzMsNCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWVeMgorIFszLDQpIHwgWyJUaHUgRmViIDAx IDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDE1IDAwOjAwOjAwIDIwMTgiKSB8IHRocmVlXjMK KyBbMyw0KSB8IFsiVGh1IEZlYiAxNSAwMDowMDowMCAyMDE4IiwiVGh1IE1hciAwMSAwMDow MDowMCAyMDE4IikgfCB0aHJlZV4yCisgWzMsNCkgfCBbIlRodSBNYXIgMDEgMDA6MDA6MDAg MjAxOCIsIlN1biBBcHIgMDEgMDA6MDA6MDAgMjAxOCIpIHwgdGhyZWUKKyBbNCw1KSB8ICgs IlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBmb3VyXjEKKyBbNCw1KSB8IFsiU3VuIEphbiAwMSAwMDowMDowMCAyMDE3IiwiVGh1IEZl YiAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjMKKyBbNCw1KSB8IFsiVGh1IEZlYiAwMSAw MDowMDowMCAyMDE4IiwiU3VuIEFwciAwMSAwMDowMDowMCAyMDE4IikgfCBmb3VyXjIKKyBb NSw2KSB8ICgsIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIpICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCBmaXZlCisgWzUsNikgfCBbIlN1biBKYW4gMDEgMDA6MDA6MDAgMjAxNyIs Ik1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2ZV4zCisgWzUsNikgfCBbIk1vbiBK YW4gMDEgMDA6MDA6MDAgMjAxOCIsIkZyaSBKdW4gMDEgMDA6MDA6MDAgMjAxOCIpIHwgZml2 ZV4zCisgWzUsNikgfCBbIk1vbiBKdW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgZml2ZQorIFs1LDYpIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAw IDIwMjEiLCJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiKSB8IGZpdmVeNAorIFs1LDYpIHwg WyJTYXQgSmFuIDAxIDAwOjAwOjAwIDIwMjIiLCJTdW4gSmFuIDAxIDAwOjAwOjAwIDIwMjMi KSB8IGZpdmUKKyBbNSw2KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDI0IiwiV2VkIEph biAwMSAwMDowMDowMCAyMDI1IikgfCBmaXZlCisoMTYgcm93cykKKworLS0gVGVzdCB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdDIgKAor ICBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsCisgIHZhbGlkX2F0IG15ZGF0ZXJhbmdlIE5PVCBO VUxMLAorICBuYW1lIHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9v Zl90ZXN0Ml9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMp CispOworSU5TRVJUIElOVE8gZm9yX3BvcnRpb25fb2ZfdGVzdDIKK1ZBTFVFUworKCdbMSwx XScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIw MTgtMDItMDMsMjAxOC0wMy0wMyknLCAnb25lJyksCisoJ1sxLDFdJywgJ1syMDE4LTAzLTAz LDIwMTgtMDQtMDQpJywgJ29uZScpLAorKCdbMiwyXScsICdbMjAxOC0wMS0wMSwyMDE4LTA1 LTAxKScsICd0d28nKSwKKygnWzMsM10nLCAnWzIwMTgtMDEtMDEsKScsICd0aHJlZScpOwor OworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QyCitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTAxLTEwJyBUTyAnMjAxOC0wMi0xMCcKK1NFVCBuYW1lID0gJ29uZV4x JworV0hFUkUgaWQgPSAnWzEsMV0nOworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4 LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlv bl9vZl90ZXN0MiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFs aWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0wMi0yMDE4LDAxLTEwLTIwMTgpIHwgb25lCisg WzEsMikgfCBbMDEtMTAtMjAxOCwwMi0wMy0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDIt MDMtMjAxOCwwMi0xMC0yMDE4KSB8IG9uZV4xCisgWzEsMikgfCBbMDItMTAtMjAxOCwwMy0w My0yMDE4KSB8IG9uZQorIFsxLDIpIHwgWzAzLTAzLTIwMTgsMDQtMDQtMjAxOCkgfCBvbmUK KyBbMiwzKSB8IFswMS0wMS0yMDE4LDAxLTE1LTIwMTgpIHwgdHdvCisgWzIsMykgfCBbMDIt MTUtMjAxOCwwNS0wMS0yMDE4KSB8IHR3bworIFszLDQpIHwgWzAxLTAxLTIwMTgsKSAgICAg ICAgICAgfCB0aHJlZQorKDggcm93cykKKworRFJPUCBUQUJMRSBmb3JfcG9ydGlvbl9vZl90 ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3ByaXZpbGVnZXMub3V0CmluZGV4IGMxZTYxMGU2MmYuLmNmMmM3ZGY5MDAgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHJpdmlsZWdlcy5vdXQKKysrIGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wcml2aWxlZ2VzLm91dApAQCAtOTg1LDYgKzk4 NSwyNCBAQCBFUlJPUjogIG51bGwgdmFsdWUgaW4gY29sdW1uICJiIiBvZiByZWxhdGlvbiAi ZXJydHN0X3BhcnRfMiIgdmlvbGF0ZXMgbm90LW51bGwgYwogREVUQUlMOiAgRmFpbGluZyBy b3cgY29udGFpbnMgKGEsIGIsIGMpID0gKGFhYWEsIG51bGwsIGNjYykuCiBTRVQgU0VTU0lP TiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIERST1AgVEFCTEUgZXJydHN0 OworLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0aGUgcmFuZ2UvUEVSSU9E IHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVn cmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAgYzEgaW50NHJhbmdlLAor ICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQUklNQVJZIEtFWSAoYzEs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQgU0VMRUNUIE9OIHQxIFRP IHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0MSBUTyByZWdyZXNzX3By aXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyByZWdyZXNzX3ByaXZfdXNl cjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEgVE8gcmVncmVzc19wcml2 X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjI7 CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wMS0wMScg VE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitFUlJPUjogIHBlcm1pc3Npb24g ZGVuaWVkIGZvciB0YWJsZSB0MQorU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNz X3ByaXZfdXNlcjM7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQgU0VT U0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKK0RST1AgVEFCTEUgdDE7 CiAtLSB0ZXN0IGNvbHVtbi1sZXZlbCBwcml2aWxlZ2VzIHdoZW4gaW52b2x2ZWQgd2l0aCBE RUxFVEUKIFNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOwog QUxURVIgVEFCTEUgYXRlc3Q2IEFERCBDT0xVTU4gdGhyZWUgaW50ZWdlcjsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dCBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXBkYXRhYmxlX3ZpZXdzLm91dAppbmRleCAxOTUw ZTZmMjgxLi5mNGI4OGJjYzM4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3VwZGF0YWJsZV92aWV3cy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91cGRhdGFibGVfdmlld3Mub3V0CkBAIC0zMDIzLDYgKzMwMjMsMzggQEAgc2VsZWN0ICog ZnJvbSB1dl9pb2N1X3RhYjsKIAogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsKIGRyb3AgdGFi bGUgdXZfaW9jdV90YWI7CistLSBDaGVjayBVUERBVEUgRk9SIFBPUlRJT04gT0Ygd29ya3Mg Y29ycmVjdGx5CitjcmVhdGUgdGFibGUgdXZfZnBvX3RhYiAoaWQgaW50NHJhbmdlLCB2YWxp ZF9hdCB0c3JhbmdlLCBiIGZsb2F0LAorICAgIGNvbnN0cmFpbnQgcGtfdXZfZnBvX3RhYiBw cmltYXJ5IGtleSAoaWQsIHZhbGlkX2F0IHdpdGhvdXQgb3ZlcmxhcHMpKTsKK2luc2VydCBp bnRvIHV2X2Zwb190YWIgdmFsdWVzICgnWzEsMV0nLCAnWzIwMjAtMDEtMDEsIDIwMzAtMDEt MDEpJywgMCk7CitjcmVhdGUgdmlldyB1dl9mcG9fdmlldyBhcworICAgIHNlbGVjdCBiLCBi KzEgYXMgYywgdmFsaWRfYXQsIGlkLCAnMi4wJzo6dGV4dCBhcyB0d28gZnJvbSB1dl9mcG9f dGFiOworaW5zZXJ0IGludG8gdXZfZnBvX3ZpZXcgKGlkLCB2YWxpZF9hdCwgYikgdmFsdWVz ICgnWzEsMV0nLCAnWzIwMTAtMDEtMDEsIDIwMjAtMDEtMDEpJywgMSk7CitzZWxlY3QgKiBm cm9tIHV2X2Zwb192aWV3OworIGIgfCBjIHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxp ZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBpZCAgIHwgdHdvIAorLS0tKy0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLSstLS0tLQorIDAgfCAxIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAi LCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwgMi4wCisgMSB8IDIgfCBb IkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAxMCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgWzEsMikgfCAyLjAKKygyIHJvd3MpCisKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3IgcG9y dGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScgc2V0 IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3ZpZXc7 CisgYiB8IGMgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgIGlkICAgfCB0d28gCistLS0rLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t CisgMCB8IDEgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIlR1ZSBKYW4gMDEgMDA6 MDA6MDAgMjAzMCIpIHwgWzEsMikgfCAyLjAKKyAyIHwgMyB8IFsiVGh1IEphbiAwMSAwMDow MDowMCAyMDE1IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbMSwyKSB8IDIuMAor IDEgfCAyIHwgWyJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMTAiLCJUaHUgSmFuIDAxIDAwOjAw OjAwIDIwMTUiKSB8IFsxLDIpIHwgMi4wCisoMyByb3dzKQorCitkZWxldGUgZnJvbSB1dl9m cG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE3LTAxLTAxJyB0byAn MjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOworc2VsZWN0ICogZnJvbSB1dl9mcG9f dmlldzsKKyBiIHwgYyB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgaWQgICB8IHR3byAKKy0tLSstLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0KKyAxIHwgMiB8IFsiRnJpIEphbiAwMSAwMDowMDowMCAyMDEwIiwiVGh1IEphbiAw MSAwMDowMDowMCAyMDE1IikgfCBbMSwyKSB8IDIuMAorIDAgfCAxIHwgWyJTYXQgSmFuIDAx IDAwOjAwOjAwIDIwMjIiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMzAiKSB8IFsxLDIpIHwg Mi4wCisgMiB8IDMgfCBbIlRodSBKYW4gMDEgMDA6MDA6MDAgMjAxNSIsIlN1biBKYW4gMDEg MDA6MDA6MDAgMjAxNyIpIHwgWzEsMikgfCAyLjAKKygzIHJvd3MpCisKIC0tIFRlc3Qgd2hv bGUtcm93IHJlZmVyZW5jZXMgdG8gdGhlIHZpZXcKIGNyZWF0ZSB0YWJsZSB1dl9pb2N1X3Rh YiAoYSBpbnQgdW5pcXVlLCBiIHRleHQpOwogY3JlYXRlIHZpZXcgdXZfaW9jdV92aWV3IGFz CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3Zlcmxh cHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC93aXRob3V0X292ZXJsYXBzLm91 dAppbmRleCBlMGMzN2FjNjAxLi5mNGIxMjk3YWJkIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKQEAgLTI2OSw2ICsyNjksMzYg QEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRfYXQsIGlkMiwgbmFtZSkKICAg KCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbNyw3 XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEw LTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBEQVRFIHRlbXBvcmFsMyBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAxJyBUTyAnMjAwMC0wNy0wMScKKyAg U0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0ZW1wb3JhbDMgRk9SIFBPUlRJT04g T0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8gJzIwMDAtMDYtMDEnCisgIFNFVCBu YW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAnWzIsMl0nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCAgaWQyICAgfCBuYW1lICAKKy0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEtMjAwMCww NS0wMS0yMDAwKSB8IFs3LDgpICB8IGZvbworIFsxLDIpIHwgWzA1LTAxLTIwMDAsMDctMDEt MjAwMCkgfCBbNyw4KSAgfCBmb28xCisgWzEsMikgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEw KSB8IFs3LDgpICB8IGZvbworIFsyLDMpIHwgWzAxLTAxLTIwMDAsMDQtMDEtMjAwMCkgfCBb OSwxMCkgfCBiYXIKKyBbMiwzKSB8IFswNC0wMS0yMDAwLDA1LTAxLTIwMDApIHwgWzksMTAp IHwgYmFyMgorIFsyLDMpIHwgWzA1LTAxLTIwMDAsMDYtMDEtMjAwMCkgfCBbOSwxMCkgfCBi YXIxMgorIFsyLDMpIHwgWzA2LTAxLTIwMDAsMDctMDEtMjAwMCkgfCBbOSwxMCkgfCBiYXIx CisgWzIsMykgfCBbMDctMDEtMjAwMCwwMS0wMS0yMDEwKSB8IFs5LDEwKSB8IGJhcgorKDgg cm93cykKKworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFs MyAoaWQsIHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0 ZXJhbmdlKCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsK K0VSUk9SOiAgY29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25z dHJhaW50ICJ0ZW1wb3JhbDNfcGsiCitERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9hdCk9KFsx LDIpLCBbMDEtMDEtMjAwNSwwMS0wMS0yMDA2KSkgY29uZmxpY3RzIHdpdGggZXhpc3Rpbmcg a2V5IChpZCwgdmFsaWRfYXQpPShbMSwyKSwgWzA3LTAxLTIwMDAsMDEtMDEtMjAxMCkpLgor LS0gY29uZmxpY3RpbmcgaWQyIG9ubHk6CitJTlNFUlQgSU5UTyB0ZW1wb3JhbDMgKGlkLCB2 YWxpZF9hdCwgaWQyLCBuYW1lKQorICBWQUxVRVMKKyAgKCdbMywzXScsIGRhdGVyYW5nZSgn MjAwNS0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXIzJyk7CitFUlJPUjog IGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAi dGVtcG9yYWwzX3VuaXEiCitERVRBSUw6ICBLZXkgKGlkMiwgdmFsaWRfYXQpPShbOSwxMCks IFswMS0wMS0yMDA1LDAxLTAxLTIwMTApKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkg KGlkMiwgdmFsaWRfYXQpPShbOSwxMCksIFswNy0wMS0yMDAwLDAxLTAxLTIwMTApKS4KIERS T1AgVEFCTEUgdGVtcG9yYWwzOwogLS0KIC0tIHRlc3QgY2hhbmdpbmcgdGhlIFBLJ3MgZGVw ZW5kZW5jaWVzCkBAIC0zMjEsNiArMzUxLDM2IEBAIFNFTEVDVCAqIEZST00gdHAyIE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKICBbMyw0KSB8IFswMS0wMS0yMDAwLDAxLTAxLTIwMTApIHwg dGhyZWUKICgxIHJvdykKIAorVVBEQVRFICB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScK KyAgU0VUIG5hbWUgPSAnb25lMicKKyAgV0hFUkUgaWQgPSAnWzEsMV0nOworVVBEQVRFICB0 ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDAwLTAyLTIwJyBUTyAnMjAwMC0wMi0yNScKKyAgU0VUIGlkID0gJ1s0LDRdJworICBXSEVS RSBuYW1lID0gJ29uZSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDItMDEtMDEnIFRPICcyMDAzLTAxLTAxJwor ICBTRVQgaWQgPSAnWzIsMl0nCisgIFdIRVJFIG5hbWUgPSAndGhyZWUnOworREVMRVRFIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMS0xNScgVE8gJzIwMDAtMDItMTUnCisgIFdIRVJFIGlkID0gJ1szLDNdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlk X2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBuYW1lICAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgWzEsMikgfCBbMDEtMDEt MjAwMCwwMS0xNS0yMDAwKSB8IG9uZQorIFsxLDIpIHwgWzAxLTE1LTIwMDAsMDItMDEtMjAw MCkgfCBvbmUyCisgWzEsMikgfCBbMDItMDEtMjAwMCwwMi0xNS0yMDAwKSB8IG9uZTIKKyBb MSwyKSB8IFswMi0xNS0yMDAwLDAyLTIwLTIwMDApIHwgb25lCisgWzEsMikgfCBbMDItMjUt MjAwMCwwMy0wMS0yMDAwKSB8IG9uZQorIFsyLDMpIHwgWzAxLTAxLTIwMDIsMDEtMDEtMjAw MykgfCB0aHJlZQorIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMTUtMjAwMCkgfCB0aHJlZQor IFszLDQpIHwgWzAyLTE1LTIwMDAsMDEtMDEtMjAwMikgfCB0aHJlZQorIFszLDQpIHwgWzAx LTAxLTIwMDMsMDEtMDEtMjAxMCkgfCB0aHJlZQorIFs0LDUpIHwgWzAyLTIwLTIwMDAsMDIt MjUtMjAwMCkgfCBvbmUKKygxMCByb3dzKQorCiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkOwogLS0gdGVtcG9yYWwgVU5JUVVFOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkICgKQEAgLTM1Niw2ICs0MTYsMzYgQEAgU0VMRUNUICogRlJPTSB0cDIgT1JE RVIgQlkgaWQsIHZhbGlkX2F0OwogIFszLDQpIHwgWzAxLTAxLTIwMDAsMDEtMDEtMjAxMCkg fCB0aHJlZQogKDEgcm93KQogCitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1 JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUg IHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdI RVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEn CisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10n OworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgIAorLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBbMSwyKSB8IFswMS0w MS0yMDAwLDAxLTE1LTIwMDApIHwgb25lCisgWzEsMikgfCBbMDEtMTUtMjAwMCwwMi0wMS0y MDAwKSB8IG9uZTIKKyBbMSwyKSB8IFswMi0wMS0yMDAwLDAyLTE1LTIwMDApIHwgb25lMgor IFsxLDIpIHwgWzAyLTE1LTIwMDAsMDItMjAtMjAwMCkgfCBvbmUKKyBbMSwyKSB8IFswMi0y NS0yMDAwLDAzLTAxLTIwMDApIHwgb25lCisgWzIsMykgfCBbMDEtMDEtMjAwMiwwMS0wMS0y MDAzKSB8IHRocmVlCisgWzMsNCkgfCBbMDEtMDEtMjAwMCwwMS0xNS0yMDAwKSB8IHRocmVl CisgWzMsNCkgfCBbMDItMTUtMjAwMCwwMS0wMS0yMDAyKSB8IHRocmVlCisgWzMsNCkgfCBb MDEtMDEtMjAwMywwMS0wMS0yMDEwKSB8IHRocmVlCisgWzQsNSkgfCBbMDItMjAtMjAwMCww Mi0yNS0yMDAwKSB8IG9uZQorKDEwIHJvd3MpCisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWQ7CiAtLQogLS0gdGVzdCBGSyBkZXBlbmRlbmNpZXMKQEAgLTU0Miw2ICs2MzIs MTMgQEAgVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzcsN10nCiBXSEVSRSBpZCA9 ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAy LTAxJyk7CiBFUlJPUjogIHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRlbXBvcmFsX3Ju ZyIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29uc3RyYWludCAidGVtcG9yYWxfZmtfcm5nMnJu Z19mayIgb24gdGFibGUgInRlbXBvcmFsX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlRodSBG ZWIgMDEgMDA6MDA6MDAgMjAxOCIpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUg InRlbXBvcmFsX2ZrX3JuZzJybmciLgorLS0gY2hhbmdpbmcganVzdCBhIHBhcnQgZmFpbHM6 CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcKK1NFVCBpZCA9ICdbNyw3XScKK1dIRVJFIGlk ID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9y YWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19y bmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RFVEFJTDogIEtl eSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4Iiwi VGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0 YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0 aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRF IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUg dGVtcG9yYWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAx Ni0wMi0wMScpCkBAIC01NzksMTMgKzY3NiwyNSBAQCBVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25z dHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtf cm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9uIEph biAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0 aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCistLSBj aGFuZ2luZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorVVBEQVRFIHRlbXBvcmFs X3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wMicgVE8gJzIw MTgtMDEtMDMnCitTRVQgaWQgPSAnWzcsN10nCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBj aGFuZ2luZyBqdXN0IGEgcGFydCBmYWlsczoKK1VQREFURSB0ZW1wb3JhbF9ybmcKK0ZPUiBQ T1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDUnIFRPICcyMDE4LTAxLTEwJwor U0VUIGlkID0gJ1s3LDddJworV0hFUkUgaWQgPSAnWzUsNV0nOworRVJST1I6ICB1cGRhdGUg b3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVpZ24ga2V5 IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0ZW1wb3Jh bF9ma19ybmcycm5nIgorREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWyJX ZWQgSmFuIDAzIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIwMTgiKSkg aXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcycm5nIi4K IC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3RpbmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQ SyB1cGRhdGUgc3VjY2VlZHM6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdI RVJFIGlkID0gJ1szLDNdJzsKIFVQREFURSB0ZW1wb3JhbF9ybmcgU0VUIHZhbGlkX2F0ID0g dHNyYW5nZSgnMjAxNi0wMS0wMScsICcyMDE2LTAyLTAxJykKIFdIRVJFIGlkID0gJ1s1LDVd JyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsK IC0tIGNsZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBw YXJlbnRfaWQgPSAnWzUsNV0nOwotREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlk ID0gJ1s1LDVdJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCBJTiAoJ1s1 LDVdJywgJ1s3LDddJyk7CiAtLQogLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBOTyBBQ1RJ T04KIC0tCkBAIC02MDcsNiArNzE2LDEyIEBAIERFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMi0wMScs CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOwogRVJST1I6ICB1 cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0ZW1wb3JhbF9ybmciIHZpb2xhdGVzIGZvcmVp Z24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX2ZrX3JuZzJybmdfZmsiIG9uIHRhYmxlICJ0 ZW1wb3JhbF9ma19ybmcycm5nIgogREVUQUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2 KSwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUaHUgRmViIDAxIDAwOjAwOjAwIDIw MTgiKSkgaXMgc3RpbGwgcmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9ma19ybmcy cm5nIi4KKy0tIGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVt cG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBU TyAnMjAxOC0wMS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9y IGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBj b25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxf Zmtfcm5nMnJuZyIKK0RFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlz IHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAt LSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsg ZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMywzXSc7CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOwpAQCAtNjMxLDkgKzc0NiwxOSBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hF UkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEnLAog REVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRf YXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKIEVSUk9SOiAgdXBk YXRlIG9yIGRlbGV0ZSBvbiB0YWJsZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWdu IGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVt cG9yYWxfZmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiks IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4 IikpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJu ZyIuCistLSBkZWxldGluZyBhbiB1bnJlZmVyZW5jZWQgcGFydCBpcyBva2F5OgorREVMRVRF IEZST00gdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4 LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGRlbGV0 aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5nCitGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0wMS0xMCcK K1dIRVJFIGlkID0gJ1s1LDVdJzsKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidGVtcG9yYWxfcm5nIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9ma19ybmcycm5nX2ZrIiBvbiB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIKK0RF VEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFsiV2VkIEphbiAwMyAwMDowMDow MCAyMDE4IiwiVGh1IEZlYiAwMSAwMDowMDowMCAyMDE4IikpIGlzIHN0aWxsIHJlZmVyZW5j ZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfZmtfcm5nMnJuZyIuCiAtLSB0aGVuIGRlbGV0ZSB0 aGUgb2JqZWN0aW5nIEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRz OgogREVMRVRFIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7 Ci1ERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxp ZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZS T00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKIC0tCiAtLSB0ZXN0IE9OIFVQ REFURS9ERUxFVEUgb3B0aW9ucwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv cGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxl CmluZGV4IDY2Yjc1ZmExMmYuLjk5Y2Y2ZjE4ZDYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxl bF9zY2hlZHVsZQpAQCAtNDgsNyArNDgsNyBAQCB0ZXN0OiBjcmVhdGVfaW5kZXggY3JlYXRl X2luZGV4X3NwZ2lzdCBjcmVhdGVfdmlldyBpbmRleF9pbmNsdWRpbmcgaW5kZXhfaW5jbHVk aQogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMg LS0tLS0tLS0tLQotdGVzdDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3Fs IGNyZWF0ZV9jYXN0IGNvbnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVk X3RhYmxlIHZhY3V1bSBkcm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJp YnV0ZXMgY3JlYXRlX2FtIGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZQordGVz dDogY3JlYXRlX2FnZ3JlZ2F0ZSBjcmVhdGVfZnVuY3Rpb25fc3FsIGNyZWF0ZV9jYXN0IGNv bnN0cmFpbnRzIHRyaWdnZXJzIHNlbGVjdCBpbmhlcml0IHR5cGVkX3RhYmxlIHZhY3V1bSBk cm9wX2lmX2V4aXN0cyB1cGRhdGFibGVfdmlld3Mgcm9sZWF0dHJpYnV0ZXMgY3JlYXRlX2Ft IGhhc2hfZnVuYyBlcnJvcnMgaW5maW5pdGVfcmVjdXJzZSBmb3JfcG9ydGlvbl9vZgogCiAj IC0tLS0tLS0tLS0KICMgc2FuaXR5X2NoZWNrIGRvZXMgYSB2YWN1dW0sIGFmZmVjdGluZyB0 aGUgc29ydCBvcmRlciBvZiBTRUxFQ1QgKgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3Bv cnRpb25fb2Yuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmJm MmFiMDkzYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwKQEAgLTAsMCArMSwzNDAgQEAKKy0tIFRlc3RzIGZvciBVUERBVEUv REVMRVRFIEZPUiBQT1JUSU9OIE9GCisKKy0tIFdvcmtzIG9uIG5vbi1QSyBjb2x1bW5zCitD UkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5nZSwKKyAg dmFsaWRfYXQgdHNyYW5nZSwKKyAgbmFtZSB0ZXh0IE5PVCBOVUxMCispOworSU5TRVJUIElO VE8gZm9yX3BvcnRpb25fb2ZfdGVzdCBWQUxVRVMKKygnWzEsMiknLCAnWzIwMTgtMDEtMDIs MjAyMC0wMS0wMSknLCAnb25lJyk7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyAnMjAxOS0wMS0w MScKK1NFVCBuYW1lID0gJ2Zvbyc7CisKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMTUnIFRPIFVOQk9V TkRFRDsKKworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCistLSBXb3Jr cyBvbiBtb3JlIHRoYW4gb25lIHJhbmdlCitEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CitDUkVBVEUgVEFCTEUgZm9yX3BvcnRpb25fb2ZfdGVzdCAoCisgIGlkIGludDRyYW5n ZSwKKyAgdmFsaWQxX2F0IHRzcmFuZ2UsCisgIHZhbGlkMl9hdCB0c3JhbmdlLAorICBuYW1l IHRleHQgTk9UIE5VTEwKKyk7CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0IFZB TFVFUworKCdbMSwyKScsICdbMjAxOC0wMS0wMiwyMDE4LTAyLTAzKScsICdbMjAxNS0wMS0w MSwyMDI1LTAxLTAxKScsICdvbmUnKTsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkMV9hdCBGUk9NICcyMDE4LTAxLTE1JyBUTyBVTkJPVU5E RUQKK1NFVCBuYW1lID0gJ2Zvbyc7CitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9uX29mX3Rl c3Q7CisKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxp ZDJfYXQgRlJPTSAnMjAxOC0wMS0xNScgVE8gVU5CT1VOREVECitTRVQgbmFtZSA9ICdiYXIn OworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCitERUxFVEUgRlJPTSBm b3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZDFfYXQgRlJPTSAnMjAx OC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICogRlJPTSBmb3JfcG9ydGlvbl9vZl90 ZXN0OworCitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZDJfYXQgRlJPTSAnMjAxOC0wMS0yMCcgVE8gVU5CT1VOREVEOworU0VMRUNUICog RlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0OworCisKK0RST1AgVEFCTEUgZm9yX3BvcnRpb25f b2ZfdGVzdDsKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0ICgKKyAgaWQgaW50 NHJhbmdlIE5PVCBOVUxMLAorICB2YWxpZF9hdCB0c3JhbmdlIE5PVCBOVUxMLAorICBuYW1l IHRleHQgTk9UIE5VTEwsCisJQ09OU1RSQUlOVCBmb3JfcG9ydGlvbl9vZl9wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworSU5TRVJUIElOVE8g Zm9yX3BvcnRpb25fb2ZfdGVzdAorVkFMVUVTCisoJ1sxLDIpJywgJ1syMDE4LTAxLTAyLDIw MTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwyKScsICdbMjAxOC0wMi0wMywyMDE4LTAzLTAz KScsICdvbmUnKSwKKygnWzEsMiknLCAnWzIwMTgtMDMtMDMsMjAxOC0wNC0wNCknLCAnb25l JyksCisoJ1syLDMpJywgJ1syMDE4LTAxLTAxLDIwMTgtMDEtMDUpJywgJ3R3bycpLAorKCdb Myw0KScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyksCisoJ1s0LDUpJywgJygsMjAxOC0w NC0wMSknLCAnZm91cicpLAorKCdbNSw2KScsICcoLCknLCAnZml2ZScpCis7CisKKy0tCist LSBVUERBVEUgdGVzdHMKKy0tCisKKy0tIFNldHRpbmcgd2l0aCBhIG1pc3NpbmcgY29sdW1u IGZhaWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgaW52 YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2Zv bycKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gU2V0dGluZyB0aGUgcmFuZ2UgZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCB2YWxpZF9hdCA9ICdbMTk5MC0w MS0wMSwxOTk5LTAxLTAxKScKK1dIRVJFIGlkID0gJ1s1LDYpJzsKKworLS0gVGhlIHdyb25n IHR5cGUgZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIDEgVE8gNAorU0VUIG5hbWUgPSAnbm9wZScKK1dIRVJFIGlkID0g J1szLDQpJzsKKworLS0gU2V0dGluZyB3aXRoIHRpbWVzdGFtcHMgcmV2ZXJzZWQgZmFpbHMK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDE4LTA2LTAxJyBUTyAnMjAxOC0wMS0wMScKK1NFVCBuYW1lID0gJ3RocmVlXjEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCBhIHN1YnF1ZXJ5IGZh aWxzCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAoU0VMRUNUICcyMDE4LTAxLTAxJykgVE8gJzIwMTgtMDYtMDEnCitTRVQgbmFt ZSA9ICdub3BlJworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBTZXR0aW5nIHdpdGggYSBj b2x1bW4gZmFpbHMKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBP RiB2YWxpZF9hdCBGUk9NIGxvd2VyKHZhbGlkX2F0KSBUTyBVTkJPVU5ERUQKK1NFVCBuYW1l ID0gJ25vcGUnCitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFNldHRpbmcgd2l0aCB0aW1l c3RhbXBzIGVxdWFsIGRvZXMgbm90aGluZworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0 LTAxJworU0VUIG5hbWUgPSAndGhyZWVeMCcKK1dIRVJFIGlkID0gJ1szLDQpJzsKKworLS0g VXBkYXRpbmcgYSBmaW5pdGUvb3BlbiBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJn ZXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE4LTA2LTAxJyBUTyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ3RocmVlXjEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIFVwZGF0aW5nIGEgZmluaXRlL29wZW4gcG9y dGlvbiB3aXRoIGFuIG9wZW4vZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29m X3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4 LTAzLTAxJworU0VUIG5hbWUgPSAndGhyZWVeMicKK1dIRVJFIGlkID0gJ1szLDQpJzsKKwor LS0gVXBkYXRpbmcgYW4gb3Blbi9maW5pdGUgcG9ydGlvbiB3aXRoIGFuIG9wZW4vZmluaXRl IHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gVU5CT1VOREVEIFRPICcyMDE4LTAyLTAxJworU0VUIG5hbWUgPSAnZm91 cl4xJworV0hFUkUgaWQgPSAnWzQsNSknOworCistLSBVcGRhdGluZyBhbiBvcGVuL2Zpbml0 ZSBwb3J0aW9uIHdpdGggYSBmaW5pdGUvb3BlbiB0YXJnZXQKK1VQREFURSBmb3JfcG9ydGlv bl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE3LTAxLTAxJyBU TyBVTkJPVU5ERUQKK1NFVCBuYW1lID0gJ2ZvdXJeMicKK1dIRVJFIGlkID0gJ1s0LDUpJzsK KworLS0gVXBkYXRpbmcgYSBmaW5pdGUvZmluaXRlIHBvcnRpb24gd2l0aCBhbiBleGFjdCBm aXQKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9h dCBGUk9NICcyMDE3LTAxLTAxJyBUTyAnMjAxOC0wMi0wMScKK1NFVCBuYW1lID0gJ2ZvdXJe MycKK1dIRVJFIGlkID0gJ1s0LDUpJzsKKworLS0gVXBkYXRpbmcgYW4gZW5jbG9zZWQgc3Bh bgorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gVU5CT1VOREVEIFRPIFVOQk9VTkRFRAorU0VUIG5hbWUgPSAndHdvXjInCitXSEVS RSBpZCA9ICdbMiwzKSc7CisKKy0tIFVwZGF0aW5nIGFuIG9wZW4vb3BlbiBwb3J0aW9uIHdp dGggYSBmaW5pdGUvZmluaXRlIHRhcmdldAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QK K0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMDEnIFRPICcyMDE5LTAx LTAxJworU0VUIG5hbWUgPSAnZml2ZV4yJworV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBV cGRhdGluZyBhbiBlbmNsb3NlZCBzcGFuIHdpdGggc2VwYXJhdGUgcHJvdHJ1ZGluZyBzcGFu cworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTctMDEtMDEnIFRPICcyMDIwLTAxLTAxJworU0VUIG5hbWUgPSAnZml2ZV4z JworV0hFUkUgaWQgPSAnWzUsNiknOworCistLSBVcGRhdGluZyBtdWx0aXBsZSBlbmNsb3Nl ZCBzcGFucworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gTlVMTCBUTyBOVUxMCitTRVQgbmFtZSA9ICdvbmVeMicKK1dIRVJFIGlk ID0gJ1sxLDIpJzsKKworLS0gVXBkYXRpbmcgd2l0aCBhIHNoaWZ0L3JlZHVjZSBjb25mbGlj dAorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRFUlZBTCAnMScgSE9VUiBU TyBNSU5VVEUKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdvbmVeMycKK1dIRVJF IGlkID0gJ1sxLDIpJzsKKworVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0CisgIEZST00gJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9ORSBJTlRF UlZBTCAnMicgSE9VUgorICBUTyAnMjAxOS0wMS0wMScKK1NFVCBuYW1lID0gJ29uZV40Jwor V0hFUkUgaWQgPSAnWzEsMiknOworCitVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQKKyAgRlJPTSAoJzIwMTgtMDMtMDEnIEFUIFRJTUUgWk9O RSBJTlRFUlZBTCAnMicgSE9VUikKKyAgVE8gJzIwMTktMDEtMDEnCitTRVQgbmFtZSA9ICdv bmVeNCcKK1dIRVJFIGlkID0gJ1sxLDIpJzsKKworLS0gVXBkYXRpbmcgdGhlIG5vbi1yYW5n ZSBwYXJ0IG9mIHRoZSBQSzoKK1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAyLTE1JyBUTyBOVUxMCitTRVQgaWQgPSAn WzYsNyknCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIFVQREFURSB3aXRoIG5vIFdIRVJF IGNsYXVzZQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMzAtMDEtMDEnIFRPIE5VTEwKK1NFVCBuYW1lID0gbmFtZSB8fCAn Kic7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdCBPUkRFUiBCWSBpZCwg dmFsaWRfYXQ7CisKKy0tCistLSBERUxFVEUgdGVzdHMKKy0tCisKKy0tIERlbGV0aW5nIHdp dGggYSBtaXNzaW5nIGNvbHVtbiBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgaW52YWxpZF9hdCBGUk9NICcyMDE4LTA2LTAxJyBUTyBO VUxMCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1w cyByZXZlcnNlZCBmYWlscworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAorRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNi0wMScgVE8gJzIwMTgtMDEtMDEn CitXSEVSRSBpZCA9ICdbMyw0KSc7CisKKy0tIERlbGV0aW5nIHdpdGggdGltZXN0YW1wcyBl cXVhbCBkb2VzIG5vdGhpbmcKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZP UiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTA0LTAx JworV0hFUkUgaWQgPSAnWzMsNCknOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL2Ns b3NlZCB0YXJnZXQKK0RFTEVURSBGUk9NIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDYtMDEnIFRPICcyMDIwLTA2LTAxJworV0hF UkUgaWQgPSAnWzUsNiknOworCistLSBEZWxldGluZyB3aXRoIGEgY2xvc2VkL29wZW4gdGFy Z2V0CitERUxFVEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTA0LTAxJyBUTyBOVUxMCitXSEVSRSBpZCA9ICdbMyw0KSc7 CisKKy0tIERlbGV0aW5nIHdpdGggYW4gb3Blbi9jbG9zZWQgdGFyZ2V0CitERUxFVEUgRlJP TSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIE5V TEwgVE8gJzIwMTgtMDItMDgnCitXSEVSRSBpZCA9ICdbMSwyKSc7CisKKy0tIERlbGV0aW5n IHdpdGggYW4gb3Blbi9vcGVuIHRhcmdldAorREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2Zf dGVzdAorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSBOVUxMIFRPIE5VTEwKK1dIRVJF IGlkID0gJ1s2LDcpJzsKKworLS0gREVMRVRFIHdpdGggbm8gV0hFUkUgY2xhdXNlCitERUxF VEUgRlJPTSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBG Uk9NICcyMDI1LTAxLTAxJyBUTyBOVUxMOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0aW9u X29mX3Rlc3QgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworCistLSBVUERBVEUgLi4uIFJFVFVS TklORyByZXR1cm5zIG9ubHkgdGhlIHVwZGF0ZWQgdmFsdWVzIChub3QgdGhlIGluc2VydGVk IHNpZGUgdmFsdWVzKQorVVBEQVRFIGZvcl9wb3J0aW9uX29mX3Rlc3QKK0ZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDItMDEnIFRPICcyMDE4LTAyLTE1JworU0VUIG5h bWUgPSAndGhyZWVeMycKK1dIRVJFIGlkID0gJ1szLDQpJworUkVUVVJOSU5HICo7CisKKy0t IHRlc3QgdGhhdCB3ZSBydW4gdHJpZ2dlcnMgb24gdGhlIFVQREFURS9ERUxFVEVkIHJvdyBh bmQgdGhlIElOU0VSVGVkIHJvd3MKKworQ1JFQVRFIEZVTkNUSU9OIGZvcl9wb3J0aW9uX29m X3RyaWdnZXIoKQorUkVUVVJOUyB0cmlnZ2VyCitBUworJCQKK0JFR0lOCisgIFJBSVNFIE5P VElDRSAnJSAlICUgb2YgJScsIFRHX1dIRU4sIFRHX09QLCBORVcudmFsaWRfYXQsIE9MRC52 YWxpZF9hdDsKKyAgSUYgVEdfT1AgPSAnREVMRVRFJyBUSEVOCisgICAgUkVUVVJOIE9MRDsK KyAgRUxTRQorICAgIFJFVFVSTiBORVc7CisgIEVORCBJRjsKK0VORDsKKyQkCitMQU5HVUFH RSBwbHBnc3FsOworCitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3Jl X2luc2VydAorICBCRUZPUkUgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9S IEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigp OworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2luc2VydAorICBB RlRFUiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAg RVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJ R0dFUiB0cmdfZm9yX3BvcnRpb25fb2ZfYmVmb3JlX3VwZGF0ZQorICBCRUZPUkUgVVBEQVRF IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVO Q1RJT04gZm9yX3BvcnRpb25fb2ZfdHJpZ2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zv cl9wb3J0aW9uX29mX2FmdGVyX3VwZGF0ZQorICBBRlRFUiBVUERBVEUgT04gZm9yX3BvcnRp b25fb2ZfdGVzdAorICBGT1IgRUFDSCBST1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9y dGlvbl9vZl90cmlnZ2VyKCk7CitDUkVBVEUgVFJJR0dFUiB0cmdfZm9yX3BvcnRpb25fb2Zf YmVmb3JlX2RlbGV0ZQorICBCRUZPUkUgREVMRVRFIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QK KyAgRk9SIEVBQ0ggUk9XCisgIEVYRUNVVEUgRlVOQ1RJT04gZm9yX3BvcnRpb25fb2ZfdHJp Z2dlcigpOworQ1JFQVRFIFRSSUdHRVIgdHJnX2Zvcl9wb3J0aW9uX29mX2FmdGVyX2RlbGV0 ZQorICBBRlRFUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBS T1cKKyAgRVhFQ1VURSBGVU5DVElPTiBmb3JfcG9ydGlvbl9vZl90cmlnZ2VyKCk7CisKK1VQ REFURSBmb3JfcG9ydGlvbl9vZl90ZXN0CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDIxLTAxLTAxJyBUTyAnMjAyMi0wMS0wMScKK1NFVCBuYW1lID0gJ2ZpdmVeNCcKK1dI RVJFIGlkID0gJ1s1LDYpJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVzdAor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyMy0wMS0wMScgVE8gJzIwMjQtMDEt MDEnCitXSEVSRSBpZCA9ICdbNSw2KSc7CisKK1NFTEVDVCAqIEZST00gZm9yX3BvcnRpb25f b2ZfdGVzdCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CisKKy0tIFRlc3Qgd2l0aCBhIGN1c3Rv bSByYW5nZSB0eXBlCisKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdlKHN1YnR5 cGU9ZGF0ZSk7CisKK0NSRUFURSBUQUJMRSBmb3JfcG9ydGlvbl9vZl90ZXN0MiAoCisgIGlk IGludDRyYW5nZSBOT1QgTlVMTCwKKyAgdmFsaWRfYXQgbXlkYXRlcmFuZ2UgTk9UIE5VTEws CisgIG5hbWUgdGV4dCBOT1QgTlVMTCwKKwlDT05TVFJBSU5UIGZvcl9wb3J0aW9uX29mX3Rl c3QyX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRfYXQgV0lUSE9VVCBPVkVSTEFQUykKKyk7 CitJTlNFUlQgSU5UTyBmb3JfcG9ydGlvbl9vZl90ZXN0MgorVkFMVUVTCisoJ1sxLDFdJywg J1syMDE4LTAxLTAyLDIwMTgtMDItMDMpJywgJ29uZScpLAorKCdbMSwxXScsICdbMjAxOC0w Mi0wMywyMDE4LTAzLTAzKScsICdvbmUnKSwKKygnWzEsMV0nLCAnWzIwMTgtMDMtMDMsMjAx OC0wNC0wNCknLCAnb25lJyksCisoJ1syLDJdJywgJ1syMDE4LTAxLTAxLDIwMTgtMDUtMDEp JywgJ3R3bycpLAorKCdbMywzXScsICdbMjAxOC0wMS0wMSwpJywgJ3RocmVlJyk7Cis7CisK K1VQREFURSBmb3JfcG9ydGlvbl9vZl90ZXN0MgorRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOC0wMS0xMCcgVE8gJzIwMTgtMDItMTAnCitTRVQgbmFtZSA9ICdvbmVeMScK K1dIRVJFIGlkID0gJ1sxLDFdJzsKKworREVMRVRFIEZST00gZm9yX3BvcnRpb25fb2ZfdGVz dDIKK0ZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDEtMTUnIFRPICcyMDE4 LTAyLTE1JworV0hFUkUgaWQgPSAnWzIsMl0nOworCitTRUxFQ1QgKiBGUk9NIGZvcl9wb3J0 aW9uX29mX3Rlc3QyIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSBmb3Jf cG9ydGlvbl9vZl90ZXN0MjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3ByaXZpbGVnZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHJpdmlsZWdlcy5zcWwKaW5kZXggYmYwMDM1ZDk2ZC4uMzY2YmU5OWEyNyAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcHJpdmlsZWdlcy5zcWwKQEAgLTcxMyw2ICs3MTMsMjQgQEAg VVBEQVRFIGVycnRzdCBTRVQgYSA9ICdhYWFhJywgYiA9IE5VTEwgV0hFUkUgYSA9ICdhYWEn OwogU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdyZXNzX3ByaXZfdXNlcjE7CiBEUk9Q IFRBQkxFIGVycnRzdDsKIAorLS0gdGVzdCBjb2x1bW4tbGV2ZWwgcHJpdmlsZWdlcyBvbiB0 aGUgcmFuZ2UvUEVSSU9EIHVzZWQgaW4gRk9SIFBPUlRJT04gT0YKK1NFVCBTRVNTSU9OIEFV VEhPUklaQVRJT04gcmVncmVzc19wcml2X3VzZXIxOworQ1JFQVRFIFRBQkxFIHQxICgKKyAg YzEgaW50NHJhbmdlLAorICB2YWxpZF9hdCB0c3JhbmdlLAorCUNPTlNUUkFJTlQgdDFwayBQ UklNQVJZIEtFWSAoYzEsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCispOworR1JBTlQg U0VMRUNUIE9OIHQxIFRPIHJlZ3Jlc3NfcHJpdl91c2VyMjsKK0dSQU5UIFNFTEVDVCBPTiB0 MSBUTyByZWdyZXNzX3ByaXZfdXNlcjM7CitHUkFOVCBVUERBVEUgKGMxKSBPTiB0MSBUTyBy ZWdyZXNzX3ByaXZfdXNlcjI7CitHUkFOVCBVUERBVEUgKGMxLCB2YWxpZF9hdCkgT04gdDEg VE8gcmVncmVzc19wcml2X3VzZXIzOworU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTiByZWdy ZXNzX3ByaXZfdXNlcjI7CitVUERBVEUgdDEgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAwMC0wMS0wMScgVE8gJzIwMDEtMDEtMDEnIFNFVCBjMSA9ICdbMiwzKSc7CitTRVQg U0VTU0lPTiBBVVRIT1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMzsKK1VQREFURSB0MSBG T1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTAxJyBUTyAnMjAwMS0wMS0w MScgU0VUIGMxID0gJ1syLDMpJzsKK1NFVCBTRVNTSU9OIEFVVEhPUklaQVRJT04gcmVncmVz c19wcml2X3VzZXIxOworRFJPUCBUQUJMRSB0MTsKKwogLS0gdGVzdCBjb2x1bW4tbGV2ZWwg cHJpdmlsZWdlcyB3aGVuIGludm9sdmVkIHdpdGggREVMRVRFCiBTRVQgU0VTU0lPTiBBVVRI T1JJWkFUSU9OIHJlZ3Jlc3NfcHJpdl91c2VyMTsKIEFMVEVSIFRBQkxFIGF0ZXN0NiBBREQg Q09MVU1OIHRocmVlIGludGVnZXI7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC91cGRhdGFibGVfdmlld3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdXBkYXRhYmxl X3ZpZXdzLnNxbAppbmRleCBlYWVlMGI3ZTFkLi5mODE0NzAxYTQzIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC91cGRhdGFibGVfdmlld3Muc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3VwZGF0YWJsZV92aWV3cy5zcWwKQEAgLTE1NDEsNiArMTU0MSwyMCBA QCBzZWxlY3QgKiBmcm9tIHV2X2lvY3VfdGFiOwogZHJvcCB2aWV3IHV2X2lvY3VfdmlldzsK IGRyb3AgdGFibGUgdXZfaW9jdV90YWI7CiAKKy0tIENoZWNrIFVQREFURSBGT1IgUE9SVElP TiBPRiB3b3JrcyBjb3JyZWN0bHkKK2NyZWF0ZSB0YWJsZSB1dl9mcG9fdGFiIChpZCBpbnQ0 cmFuZ2UsIHZhbGlkX2F0IHRzcmFuZ2UsIGIgZmxvYXQsCisgICAgY29uc3RyYWludCBwa191 dl9mcG9fdGFiIHByaW1hcnkga2V5IChpZCwgdmFsaWRfYXQgd2l0aG91dCBvdmVybGFwcykp OworaW5zZXJ0IGludG8gdXZfZnBvX3RhYiB2YWx1ZXMgKCdbMSwxXScsICdbMjAyMC0wMS0w MSwgMjAzMC0wMS0wMSknLCAwKTsKK2NyZWF0ZSB2aWV3IHV2X2Zwb192aWV3IGFzCisgICAg c2VsZWN0IGIsIGIrMSBhcyBjLCB2YWxpZF9hdCwgaWQsICcyLjAnOjp0ZXh0IGFzIHR3byBm cm9tIHV2X2Zwb190YWI7CisKK2luc2VydCBpbnRvIHV2X2Zwb192aWV3IChpZCwgdmFsaWRf YXQsIGIpIHZhbHVlcyAoJ1sxLDFdJywgJ1syMDEwLTAxLTAxLCAyMDIwLTAxLTAxKScsIDEp Oworc2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKK3VwZGF0ZSB1dl9mcG9fdmlldyBmb3Ig cG9ydGlvbiBvZiB2YWxpZF9hdCBmcm9tICcyMDE1LTAxLTAxJyB0byAnMjAyMC0wMS0wMScg c2V0IGIgPSAyIHdoZXJlIGlkID0gJ1sxLDFdJzsKK3NlbGVjdCAqIGZyb20gdXZfZnBvX3Zp ZXc7CitkZWxldGUgZnJvbSB1dl9mcG9fdmlldyBmb3IgcG9ydGlvbiBvZiB2YWxpZF9hdCBm cm9tICcyMDE3LTAxLTAxJyB0byAnMjAyMi0wMS0wMScgd2hlcmUgaWQgPSAnWzEsMV0nOwor c2VsZWN0ICogZnJvbSB1dl9mcG9fdmlldzsKKwogLS0gVGVzdCB3aG9sZS1yb3cgcmVmZXJl bmNlcyB0byB0aGUgdmlldwogY3JlYXRlIHRhYmxlIHV2X2lvY3VfdGFiIChhIGludCB1bmlx dWUsIGIgdGV4dCk7CiBjcmVhdGUgdmlldyB1dl9pb2N1X3ZpZXcgYXMKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5zcWwKaW5kZXggOGEwM2IxNDk2MS4uNmQ5 ZWQ4NzgxZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVy bGFwcy5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvd2l0aG91dF9vdmVybGFwcy5z cWwKQEAgLTIwMyw2ICsyMDMsMjAgQEAgSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFs aWRfYXQsIGlkMiwgbmFtZSkKICAgKCdbMSwxXScsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScs ICcyMDEwLTAxLTAxJyksICdbNyw3XScsICdmb28nKSwKICAgKCdbMiwyXScsIGRhdGVyYW5n ZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdbOSw5XScsICdiYXInKQogOworVVBE QVRFIHRlbXBvcmFsMyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA1LTAx JyBUTyAnMjAwMC0wNy0wMScKKyAgU0VUIG5hbWUgPSBuYW1lIHx8ICcxJzsKK1VQREFURSB0 ZW1wb3JhbDMgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMC0wNC0wMScgVE8g JzIwMDAtMDYtMDEnCisgIFNFVCBuYW1lID0gbmFtZSB8fCAnMicKKyAgV0hFUkUgaWQgPSAn WzIsMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbDMgT1JERVIgQlkgaWQsIHZhbGlkX2F0 OworLS0gY29uZmxpY3RpbmcgaWQgb25seToKK0lOU0VSVCBJTlRPIHRlbXBvcmFsMyAoaWQs IHZhbGlkX2F0LCBpZDIsIG5hbWUpCisgIFZBTFVFUworICAoJ1sxLDFdJywgZGF0ZXJhbmdl KCcyMDA1LTAxLTAxJywgJzIwMDYtMDEtMDEnKSwgJ1s4LDhdJywgJ2ZvbzMnKTsKKy0tIGNv bmZsaWN0aW5nIGlkMiBvbmx5OgorSU5TRVJUIElOVE8gdGVtcG9yYWwzIChpZCwgdmFsaWRf YXQsIGlkMiwgbmFtZSkKKyAgVkFMVUVTCisgICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIwMDUt MDEtMDEnLCAnMjAxMC0wMS0wMScpLCAnWzksOV0nLCAnYmFyMycpOwogRFJPUCBUQUJMRSB0 ZW1wb3JhbDM7CiAKIC0tCkBAIC0yNDEsNiArMjU1LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkIFZBTFVFUwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRp b25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBC WSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRf YXQ7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDEtMTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9 ICdvbmUyJworICBXSEVSRSBpZCA9ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRp dGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRP ICcyMDAwLTAyLTI1JworICBTRVQgaWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25l JzsKK1VQREFURSAgdGVtcG9yYWxfcGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMi0wMS0wMScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdb MiwyXScKKyAgV0hFUkUgbmFtZSA9ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9w YXJ0aXRpb25lZAorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1 JyBUTyAnMjAwMC0wMi0xNScKKyAgV0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJP TSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCiAtLSB0ZW1wb3JhbCBVTklRVUU6CkBAIC0y NTksNiArMjg5LDIyIEBAIElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIFZBTFVF UwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBpZCwgdmFs aWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRwMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxF Q1QgKiBGUk9NIHRwMiBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CitVUERBVEUgIHRlbXBvcmFs X3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDEt MTUnIFRPICcyMDAwLTAyLTE1JworICBTRVQgbmFtZSA9ICdvbmUyJworICBXSEVSRSBpZCA9 ICdbMSwxXSc7CitVUERBVEUgIHRlbXBvcmFsX3BhcnRpdGlvbmVkCisgIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMDAtMDItMjAnIFRPICcyMDAwLTAyLTI1JworICBTRVQg aWQgPSAnWzQsNF0nCisgIFdIRVJFIG5hbWUgPSAnb25lJzsKK1VQREFURSAgdGVtcG9yYWxf cGFydGl0aW9uZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAwMi0wMS0w MScgVE8gJzIwMDMtMDEtMDEnCisgIFNFVCBpZCA9ICdbMiwyXScKKyAgV0hFUkUgbmFtZSA9 ICd0aHJlZSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZAorICBGT1IgUE9S VElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTAxLTE1JyBUTyAnMjAwMC0wMi0xNScKKyAg V0hFUkUgaWQgPSAnWzMsM10nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZCBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBEUk9QIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlv bmVkOwogCiAtLQpAQCAtNDQwLDYgKzQ4NiwxMSBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5E IHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBj aGFuZ2luZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNF VCBpZCA9ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGp1c3QgYSBw YXJ0IGZhaWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10n CitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZL IHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00g dGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9y YWxfcm5nIFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0w MScpCkBAIC00NzUsMTMgKzUyNiwyMyBAQCBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlk X2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CiAtLSBjaGFuZ2lu ZyB0aGUgc2NhbGFyIHBhcnQgZmFpbHM6CiBVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9 ICdbNyw3XScKIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0tIGNoYW5naW5nIGFuIHVucmVmZXJlbmNl ZCBwYXJ0IGlzIG9rYXk6CitVUERBVEUgdGVtcG9yYWxfcm5nCitGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE4LTAxLTAyJyBUTyAnMjAxOC0wMS0wMycKK1NFVCBpZCA9ICdb Nyw3XScKK1dIRVJFIGlkID0gJ1s1LDVdJzsKKy0tIGNoYW5naW5nIGp1c3QgYSBwYXJ0IGZh aWxzOgorVVBEQVRFIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJP TSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEtMTAnCitTRVQgaWQgPSAnWzcsN10nCitXSEVS RSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5nIEZLIHJlY29y ZCBhbmQgdGhlIHNhbWUgUEsgdXBkYXRlIHN1Y2NlZWRzOgogREVMRVRFIEZST00gdGVtcG9y YWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7CiBVUERBVEUgdGVtcG9yYWxfcm5n IFNFVCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiBX SEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDE4LTAyLTAxJyk7CiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX2Zr X3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKLURFTEVURSBGUk9NIHRlbXBv cmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgSU4gKCdbNSw1XScsICdbNyw3XScpOwogLS0KIC0tIHRlc3QgRksgcGFyZW50 IGRlbGV0ZXMgTk8gQUNUSU9OCiAtLQpAQCAtNTAxLDYgKzU2MiwxMCBAQCBJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywgdHNyYW5nZSgnMjAxOC0w MS0wNScsICcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1s1LDVdJyBBTkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAyLTAxJywgJzIwMTgtMDMt MDEnKTsKIC0tIGEgUEsgZGVsZXRlIHRoYXQgZmFpbHMgYmVjYXVzZSBib3RoIGFyZSByZWZl cmVuY2VkOgogREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBB TkQgdmFsaWRfYXQgPSB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKKy0t IGRlbGV0aW5nIGp1c3QgYSBwYXJ0IGZhaWxzOgorREVMRVRFIEZST00gdGVtcG9yYWxfcm5n CitGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTAxLTA1JyBUTyAnMjAxOC0w MS0xMCcKK1dIRVJFIGlkID0gJ1s1LDVdJzsKIC0tIHRoZW4gZGVsZXRlIHRoZSBvYmplY3Rp bmcgRksgcmVjb3JkIGFuZCB0aGUgc2FtZSBQSyBkZWxldGUgc3VjY2VlZHM6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1szLDNdJzsKIERFTEVURSBG Uk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gdHNy YW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7CkBAIC01MjUsOSArNTkwLDE3IEBA IElOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCB0c3Jh bmdlKCcyMDE4LTAxLTA1JywgJzIwMTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcg V0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDItMDEn LCAnMjAxOC0wMy0wMScpOwogLS0gYSBQSyBkZWxldGUgdGhhdCBmYWlscyBiZWNhdXNlIGJv dGggYXJlIHJlZmVyZW5jZWQ6CiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0w Mi0wMScpOworLS0gZGVsZXRpbmcgYW4gdW5yZWZlcmVuY2VkIHBhcnQgaXMgb2theToKK0RF TEVURSBGUk9NIHRlbXBvcmFsX3JuZworRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOC0wMS0wMicgVE8gJzIwMTgtMDEtMDMnCitXSEVSRSBpZCA9ICdbNSw1XSc7CistLSBk ZWxldGluZyBqdXN0IGEgcGFydCBmYWlsczoKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZwor Rk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wMS0wNScgVE8gJzIwMTgtMDEt MTAnCitXSEVSRSBpZCA9ICdbNSw1XSc7CiAtLSB0aGVuIGRlbGV0ZSB0aGUgb2JqZWN0aW5n IEZLIHJlY29yZCBhbmQgdGhlIHNhbWUgUEsgZGVsZXRlIHN1Y2NlZWRzOgogREVMRVRFIEZS T00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMywzXSc7Ci1ERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0wMScpOworREVMRVRFIEZST00gdGVtcG9yYWxf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKIAogLS0KIC0tIHRlc3QgT04gVVBEQVRFL0RFTEVU RSBvcHRpb25zCi0tIAoyLjI1LjEKCg== --------------1Pz4yQrPlGKyiycfBE07F79X Content-Type: text/x-patch; charset=UTF-8; name="v14-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.patch" Content-Disposition: attachment; filename*0="v14-0004-Add-CASCADE-SET-NULL-SET-DEFAULT-for-temporal-fo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyOGU5OTdjMTVjYjI0MGM5YjU0NWI3MTMxNTM1ZDY3M2RlNGUwZjBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgMyBKdW4gMjAyMyAyMTo0MToxMSAtMDQw MApTdWJqZWN0OiBbUEFUQ0ggdjE0IDQvNV0gQWRkIENBU0NBREUvU0VUIE5VTEwvU0VUIERF RkFVTFQgZm9yIHRlbXBvcmFsIGZvcmVpZ24KIGtleXMKCi0tLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdGFibGVjbWRzLmMgICAgICAgICAgICAgIHwgIDI4ICstCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYyAgICAgICAgICAgfCA1NDkgKysrKysrKysrKysrKysr KystCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgICAgfCAg MjAgKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgICAgIHwg NDEzICsrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsICAgICB8IDE3MyArKysrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTE1NSBpbnNlcnRp b25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCmlu ZGV4IDVhNGQ3ZmYyNzMuLmI2MTg1M2ZkODIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21k cy5jCkBAIC0xMjMwMywxMSArMTIzMDMsMTkgQEAgY3JlYXRlRm9yZWlnbktleUFjdGlvblRy aWdnZXJzKFJlbGF0aW9uIHJlbCwgT2lkIHJlZlJlbE9pZCwgQ29uc3RyYWludCAqZmtjb25z dHIKIAkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklfRktl eV9yZXN0cmljdF9kZWwiKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgRktDT05TVFJfQUNUSU9O X0NBU0NBREU6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZr X3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNu YW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X2Nhc2NhZGVfZGVsIik7CisJCQkJYnJl YWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVROVUxMOgorCQkJCWZrX3RyaWdnZXIt PmRlZmVycmFibGUgPSBmYWxzZTsKKwkJCQlma190cmlnZ2VyLT5pbml0ZGVmZXJyZWQgPSBm YWxzZTsKKwkJCQlma190cmlnZ2VyLT5mdW5jbmFtZSA9IFN5c3RlbUZ1bmNOYW1lKCJUUklf RktleV9zZXRudWxsX2RlbCIpOworCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJ T05fU0VUREVGQVVMVDoKLQkJCQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAotCQkJCQkJIGVycm1zZygiYWN0aW9uIG5v dCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cyIpKSk7CisJCQkJZmtfdHJp Z2dlci0+ZGVmZXJyYWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJl ZCA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUo IlRSSV9GS2V5X3NldGRlZmF1bHRfZGVsIik7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0Ogog CQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgRksgYWN0aW9uIHR5cGU6ICVkIiwKQEAg LTEyMzk0LDExICsxMjQwMiwxOSBAQCBjcmVhdGVGb3JlaWduS2V5QWN0aW9uVHJpZ2dlcnMo UmVsYXRpb24gcmVsLCBPaWQgcmVmUmVsT2lkLCBDb25zdHJhaW50ICpma2NvbnN0cgogCQkJ CWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Jlc3Ry aWN0X3VwZCIpOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGS0NPTlNUUl9BQ1RJT05fQ0FTQ0FE RToKKwkJCQlma190cmlnZ2VyLT5kZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dl ci0+aW5pdGRlZmVycmVkID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBT eXN0ZW1GdW5jTmFtZSgiVFJJX0ZLZXlfY2FzY2FkZV91cGQiKTsKKwkJCQlicmVhazsKIAkJ CWNhc2UgRktDT05TVFJfQUNUSU9OX1NFVE5VTEw6CisJCQkJZmtfdHJpZ2dlci0+ZGVmZXJy YWJsZSA9IGZhbHNlOworCQkJCWZrX3RyaWdnZXItPmluaXRkZWZlcnJlZCA9IGZhbHNlOwor CQkJCWZrX3RyaWdnZXItPmZ1bmNuYW1lID0gU3lzdGVtRnVuY05hbWUoIlRSSV9GS2V5X3Nl dG51bGxfdXBkIik7CisJCQkJYnJlYWs7CiAJCQljYXNlIEZLQ09OU1RSX0FDVElPTl9TRVRE RUZBVUxUOgotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZF QVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkgZXJybXNnKCJhY3Rpb24gbm90IHN1cHBv cnRlZCBmb3IgdGVtcG9yYWwgZm9yZWlnbiBrZXlzIikpKTsKKwkJCQlma190cmlnZ2VyLT5k ZWZlcnJhYmxlID0gZmFsc2U7CisJCQkJZmtfdHJpZ2dlci0+aW5pdGRlZmVycmVkID0gZmFs c2U7CisJCQkJZmtfdHJpZ2dlci0+ZnVuY25hbWUgPSBTeXN0ZW1GdW5jTmFtZSgiVFJJX0ZL ZXlfc2V0ZGVmYXVsdF91cGQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJZWxv ZyhFUlJPUiwgInVucmVjb2duaXplZCBGSyBhY3Rpb24gdHlwZTogJWQiLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3JpX3RyaWdnZXJzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwppbmRleCA0NDZlODk4ZWI2Li5lZGY3OTlmYjFkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9hZHQvcmlfdHJpZ2dlcnMuYwpAQCAtODMsNiArODMsMTIgQEAK ICNkZWZpbmUgUklfUExBTl9TRVROVUxMX09OVVBEQVRFCQk3CiAjZGVmaW5lIFJJX1BMQU5f U0VUREVGQVVMVF9PTkRFTEVURQkJOAogI2RlZmluZSBSSV9QTEFOX1NFVERFRkFVTFRfT05V UERBVEUJCTkKKyNkZWZpbmUgVFJJX1BMQU5fQ0FTQ0FERV9PTkRFTEVURQkJMTAKKyNkZWZp bmUgVFJJX1BMQU5fQ0FTQ0FERV9PTlVQREFURQkJMTEKKyNkZWZpbmUgVFJJX1BMQU5fU0VU TlVMTF9PTlVQREFURQkJMTIKKyNkZWZpbmUgVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQkJ MTMKKyNkZWZpbmUgVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURQkxNAorI2RlZmluZSBU UklfUExBTl9TRVRERUZBVUxUX09OREVMRVRFCTE1CiAKICNkZWZpbmUgTUFYX1FVT1RFRF9O QU1FX0xFTiAgKE5BTUVEQVRBTEVOKjIrMykKICNkZWZpbmUgTUFYX1FVT1RFRF9SRUxfTkFN RV9MRU4gIChNQVhfUVVPVEVEX05BTUVfTEVOKjIpCkBAIC0xOTAsNiArMTk2LDcgQEAgc3Rh dGljIGJvb2wgcmlfQ2hlY2tfUGtfTWF0Y2goUmVsYXRpb24gcGtfcmVsLCBSZWxhdGlvbiBm a19yZWwsCiAJCQkJCQkJICBjb25zdCBSSV9Db25zdHJhaW50SW5mbyAqcmlpbmZvKTsKIHN0 YXRpYyBEYXR1bSByaV9yZXN0cmljdChUcmlnZ2VyRGF0YSAqdHJpZ2RhdGEsIGJvb2wgaXNf bm9fYWN0aW9uKTsKIHN0YXRpYyBEYXR1bSByaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRh LCBib29sIGlzX3NldF9udWxsLCBpbnQgdGdraW5kKTsKK3N0YXRpYyBEYXR1bSB0cmlfc2V0 KFRyaWdnZXJEYXRhICp0cmlnZGF0YSwgYm9vbCBpc19zZXRfbnVsbCwgaW50IHRna2luZCk7 CiBzdGF0aWMgdm9pZCBxdW90ZU9uZU5hbWUoY2hhciAqYnVmZmVyLCBjb25zdCBjaGFyICpu YW1lKTsKIHN0YXRpYyB2b2lkIHF1b3RlUmVsYXRpb25OYW1lKGNoYXIgKmJ1ZmZlciwgUmVs YXRpb24gcmVsKTsKIHN0YXRpYyB2b2lkIHJpX0dlbmVyYXRlUXVhbChTdHJpbmdJbmZvIGJ1 ZiwKQEAgLTEzOTAsNiArMTM5NywxMjcgQEAgVFJJX0ZLZXlfcmVzdHJpY3RfZGVsKFBHX0ZV TkNUSU9OX0FSR1MpCiAJcmV0dXJuIHJpX3Jlc3RyaWN0KChUcmlnZ2VyRGF0YSAqKSBmY2lu Zm8tPmNvbnRleHQsIGZhbHNlKTsKIH0KIAorLyoKKyAqIFRSSV9GS2V5X2Nhc2NhZGVfZGVs IC0KKyAqCisgKiBDYXNjYWRlZCBkZWxldGUgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyBhdCBk ZWxldGUgZXZlbnQgb24gdGVtcG9yYWwgUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklfRktl eV9jYXNjYWRlX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCVRyaWdnZXJEYXRhICp0cmln ZGF0YSA9IChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRleHQ7CisJY29uc3QgUklfQ29u c3RyYWludEluZm8gKnJpaW5mbzsKKwlSZWxhdGlvbglma19yZWw7CisJUmVsYXRpb24JcGtf cmVsOworCVR1cGxlVGFibGVTbG90ICpvbGRzbG90OworCVJJX1F1ZXJ5S2V5IHFrZXk7CisJ U1BJUGxhblB0ciAgcXBsYW47CisJRGF0dW0gdGFyZ2V0UmFuZ2U7CisKKwkvKiBDaGVjayB0 aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5k IGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9jYXNjYWRl X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwlyaWluZm8gPSByaV9GZXRjaENvbnN0 cmFpbnRJbmZvKHRyaWdkYXRhLT50Z190cmlnZ2VyLAorCQkJCQkJCQkJdHJpZ2RhdGEtPnRn X3JlbGF0aW9uLCB0cnVlKTsKKworCS8qCisJICogR2V0IHRoZSByZWxhdGlvbiBkZXNjcmlw dG9ycyBvZiB0aGUgRksgYW5kIFBLIHRhYmxlcyBhbmQgdGhlIG9sZCB0dXBsZS4KKwkgKgor CSAqIGZrX3JlbCBpcyBvcGVuZWQgaW4gUm93RXhjbHVzaXZlTG9jayBtb2RlIHNpbmNlIHRo YXQncyB3aGF0IG91cgorCSAqIGV2ZW50dWFsIERFTEVURSB3aWxsIGdldCBvbiBpdC4KKwkg Ki8KKwlma19yZWwgPSB0YWJsZV9vcGVuKHJpaW5mby0+ZmtfcmVsaWQsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCXBrX3JlbCA9IHRyaWdkYXRhLT50Z19yZWxhdGlvbjsKKwlvbGRzbG90ID0g dHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJLyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBt b3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24sCisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5h bCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3NhcnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSBy ZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJpZ2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8s IG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25uZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJ CWVsb2coRVJST1IsICJTUElfY29ubmVjdCBmYWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHBy ZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUgY2FzY2FkZWQgZGVsZXRlICovCisJcmlfQnVp bGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBUUklfUExBTl9DQVNDQURFX09OREVMRVRFKTsK KworCWlmICgocXBsYW4gPSByaV9GZXRjaFByZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwp CisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVyeWJ1ZjsKKwkJY2hhcgkJZmtyZWxuYW1lW01B WF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05B TUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlz ZXA7CisJCU9pZAkJCXF1ZXJ5b2lkc1tSSV9NQVhfTlVNS0VZUyArIDFdOworCQljb25zdCBj aGFyICpma19vbmx5OworCisJCS8qIC0tLS0tLS0tLS0KKwkJICogVGhlIHF1ZXJ5IHN0cmlu ZyBidWlsdCBpcworCQkgKiAgREVMRVRFIEZST00gW09OTFldIDxma3RhYmxlPgorCQkgKiAg Rk9SIFBPUlRJT04gT0YgJGZrYXR0IEZST00gbG93ZXIoJHtuKzF9KSBUTyB1cHBlcigke24r MX0pCisJCSAqICBXSEVSRSAkMSA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICogVGhlIHR5cGUg aWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJCSAqIGNvcnJl c3BvbmRpbmcgUEsgYXR0cmlidXRlcy4KKwkJICogLS0tLS0tLS0tLQorCQkgKi8KKwkJaW5p dFN0cmluZ0luZm8oJnF1ZXJ5YnVmKTsKKwkJZmtfb25seSA9IGZrX3JlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUgPworCQkJIiIgOiAiT05MWSAi OworCQlxdW90ZVJlbGF0aW9uTmFtZShma3JlbG5hbWUsIGZrX3JlbCk7CisJCXF1b3RlT25l TmFtZShhdHRuYW1lLCBSSUF0dE5hbWUoZmtfcmVsLCByaWluZm8tPmZrX2F0dG51bXNbcmlp bmZvLT5ua2V5cyAtIDFdKSk7CisKKwkJYXBwZW5kU3RyaW5nSW5mbygmcXVlcnlidWYsICJE RUxFVEUgRlJPTSAlcyVzIEZPUiBQT1JUSU9OIE9GICVzIEZST00gbG93ZXIoJCVkKSBUTyB1 cHBlcigkJWQpIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5m by0+bmtleXMgKyAxLCByaWluZm8tPm5rZXlzICsgMSk7CisJCXF1ZXJ5c2VwID0gIldIRVJF IjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWluZm8tPm5rZXlzOyBpKyspCisJCXsKKwkJ CU9pZCBwa190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ld KTsKKwkJCU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWlu Zm8tPmZrX2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihm a19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRu YW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkp OworCQkJc3ByaW50ZihwYXJhbW5hbWUsICIkJWQiLCBpICsgMSk7CisJCQlyaV9HZW5lcmF0 ZVF1YWwoJnF1ZXJ5YnVmLCBxdWVyeXNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBrX3R5cGUs CisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUsIGZrX3R5 cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlvbl9pc2Rl dGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0aW9uKCZx dWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICJBTkQiOworCQkJcXVlcnlvaWRz W2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNldCBhIHBhcmFtIGZvciBGT1IgUE9SVElP TiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1tyaWluZm8tPm5rZXlzXSA9IFJJQXR0VHlw ZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1tyaWluZm8tPm5rZXlzIC0gMV0pOworCisJ CS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4gKi8KKwkJcXBsYW4gPSByaV9QbGFuQ2hl Y2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJ CQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkvKgorCSAqIFdlIGhhdmUgYSBw bGFuIG5vdy4gQnVpbGQgdXAgdGhlIGFyZ3VtZW50cyBmcm9tIHRoZSBrZXkgdmFsdWVzIGlu IHRoZQorCSAqIGRlbGV0ZWQgUEsgdHVwbGUgYW5kIGRlbGV0ZSB0aGUgcmVmZXJlbmNpbmcg cm93cworCSAqLworCXJpX1BlcmZvcm1DaGVjayhyaWluZm8sICZxa2V5LCBxcGxhbiwKKwkJ CQkJZmtfcmVsLCBwa19yZWwsCisJCQkJCW9sZHNsb3QsIE5VTEwsCisJCQkJCXJpaW5mby0+ bmtleXMsIHRhcmdldFJhbmdlLAorCQkJCQl0cnVlLAkgICAvKiBtdXN0IGRldGVjdCBuZXcg cm93cyAqLworCQkJCQlTUElfT0tfREVMRVRFKTsKKworCWlmIChTUElfZmluaXNoKCkgIT0g U1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5pc2ggZmFpbGVkIik7CisK Kwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCisJcmV0dXJuIFBv aW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworCiAvKgogICogVFJJX0ZLZXlfbm9hY3Rpb25f dXBkIC0KICAqCkBAIC0xNDI3LDYgKzE1NTUsNDE1IEBAIFRSSV9GS2V5X3Jlc3RyaWN0X3Vw ZChQR19GVU5DVElPTl9BUkdTKQogCXJldHVybiByaV9yZXN0cmljdCgoVHJpZ2dlckRhdGEg KikgZmNpbmZvLT5jb250ZXh0LCBmYWxzZSk7CiB9CiAKKy8qCisgKiBUUklfRktleV9jYXNj YWRlX3VwZCAtCisgKgorICogQ2FzY2FkZWQgdXBkYXRlIGZvcmVpZ24ga2V5IHJlZmVyZW5j ZXMgYXQgdXBkYXRlIGV2ZW50IG9uIHRlbXBvcmFsIFBLIHRhYmxlLgorICovCitEYXR1bQor VFJJX0ZLZXlfY2FzY2FkZV91cGQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwlUcmlnZ2VyRGF0 YSAqdHJpZ2RhdGEgPSAoVHJpZ2dlckRhdGEgKikgZmNpbmZvLT5jb250ZXh0OworCWNvbnN0 IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRpb24JZmtfcmVsOworCVJlbGF0 aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xvdDsKKwlUdXBsZVRhYmxlU2xv dCAqbmV3c2xvdDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIgIHFwbGFuOwor CURhdHVtIHRhcmdldFJhbmdlOworCisJLyogQ2hlY2sgdGhhdCB0aGlzIGlzIGEgdmFsaWQg dHJpZ2dlciBjYWxsIG9uIHRoZSByaWdodCB0aW1lIGFuZCBldmVudC4gKi8KKwlyaV9DaGVj a1RyaWdnZXIoZmNpbmZvLCAiVFJJX0ZLZXlfY2FzY2FkZV91cGQiLCBSSV9UUklHVFlQRV9V UERBVEUpOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25zdHJhaW50SW5mbyh0cmlnZGF0YS0+ dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50Z19yZWxhdGlvbiwgdHJ1ZSk7CisK KwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3JpcHRvcnMgb2YgdGhlIEZLIGFuZCBQ SyB0YWJsZXMgYW5kIHRoZSBuZXcgYW5kCisJICogb2xkIHR1cGxlLgorCSAqCisJICogZmtf cmVsIGlzIG9wZW5lZCBpbiBSb3dFeGNsdXNpdmVMb2NrIG1vZGUgc2luY2UgdGhhdCdzIHdo YXQgb3VyCisJICogZXZlbnR1YWwgVVBEQVRFIHdpbGwgZ2V0IG9uIGl0LgorCSAqLworCWZr X3JlbCA9IHRhYmxlX29wZW4ocmlpbmZvLT5ma19yZWxpZCwgUm93RXhjbHVzaXZlTG9jayk7 CisJcGtfcmVsID0gdHJpZ2RhdGEtPnRnX3JlbGF0aW9uOworCW5ld3Nsb3QgPSB0cmlnZGF0 YS0+dGdfbmV3c2xvdDsKKwlvbGRzbG90ID0gdHJpZ2RhdGEtPnRnX3RyaWdzbG90OworCisJ LyoKKwkgKiBEb24ndCBkZWxldGUgdGhhbiBtb3JlIHRoYW4gdGhlIFBLJ3MgZHVyYXRpb24s CisJICogdHJpbW1lZCBieSBhbiBvcmlnaW5hbCBGT1IgUE9SVElPTiBPRiBpZiBuZWNlc3Nh cnkuCisJICovCisJdGFyZ2V0UmFuZ2UgPSByZXN0cmljdF9jYXNjYWRpbmdfcmFuZ2UodHJp Z2RhdGEtPnRnX3RlbXBvcmFsLCByaWluZm8sIG9sZHNsb3QpOworCisJaWYgKFNQSV9jb25u ZWN0KCkgIT0gU1BJX09LX0NPTk5FQ1QpCisJCWVsb2coRVJST1IsICJTUElfY29ubmVjdCBm YWlsZWQiKTsKKworCS8qIEZldGNoIG9yIHByZXBhcmUgYSBzYXZlZCBwbGFuIGZvciB0aGUg Y2FzY2FkZWQgdXBkYXRlICovCisJcmlfQnVpbGRRdWVyeUtleSgmcWtleSwgcmlpbmZvLCBU UklfUExBTl9DQVNDQURFX09OVVBEQVRFKTsKKworCWlmICgocXBsYW4gPSByaV9GZXRjaFBy ZXBhcmVkUGxhbigmcWtleSkpID09IE5VTEwpCisJeworCQlTdHJpbmdJbmZvRGF0YSBxdWVy eWJ1ZjsKKwkJU3RyaW5nSW5mb0RhdGEgcXVhbGJ1ZjsKKwkJY2hhcgkJZmtyZWxuYW1lW01B WF9RVU9URURfUkVMX05BTUVfTEVOXTsKKwkJY2hhcgkJYXR0bmFtZVtNQVhfUVVPVEVEX05B TUVfTEVOXTsKKwkJY2hhcgkJcGFyYW1uYW1lWzE2XTsKKwkJY29uc3QgY2hhciAqcXVlcnlz ZXA7CisJCWNvbnN0IGNoYXIgKnF1YWxzZXA7CisJCU9pZAkJIHF1ZXJ5b2lkc1syICogUklf TUFYX05VTUtFWVMgKyAxXTsKKwkJY29uc3QgY2hhciAqZmtfb25seTsKKworCQkvKiAtLS0t LS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICogIFVQREFURSBb T05MWV0gPGZrdGFibGU+CisJCSAqCQkgIEZPUiBQT1JUSU9OIE9GICRma2F0dCBGUk9NIGxv d2VyKCR7Mm4rMX0pIFRPIHVwcGVyKCR7Mm4rMX0pCisJCSAqCQkgIFNFVCBma2F0dDEgPSAk MSwgWywgLi4uXQorCQkgKgkJICBXSEVSRSAkbiA9IGZrYXR0MSBbQU5EIC4uLl0KKwkJICog VGhlIHR5cGUgaWQncyBmb3IgdGhlICQgcGFyYW1ldGVycyBhcmUgdGhvc2Ugb2YgdGhlCisJ CSAqIGNvcnJlc3BvbmRpbmcgUEsgYXR0cmlidXRlcy4gIE5vdGUgdGhhdCB3ZSBhcmUgYXNz dW1pbmcKKwkJICogdGhlcmUgaXMgYW4gYXNzaWdubWVudCBjYXN0IGZyb20gdGhlIFBLIHRv IHRoZSBGSyB0eXBlOworCQkgKiBlbHNlIHRoZSBwYXJzZXIgd2lsbCBmYWlsLgorCQkgKiAt LS0tLS0tLS0tCisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0 U3RyaW5nSW5mbygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVs a2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsK KwkJcXVvdGVSZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5h bWUoYXR0bmFtZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5m by0+bmtleXMgLSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBE QVRFICVzJXMgRk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQl ZCkgU0VUIiwKKwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIDIgKiByaWlu Zm8tPm5rZXlzICsgMSwgMiAqIHJpaW5mby0+bmtleXMgKyAxKTsKKworCQlxdWVyeXNlcCA9 ICIiOworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDAsIGogPSByaWlu Zm8tPm5rZXlzOyBpIDwgcmlpbmZvLT5ua2V5czsgaSsrLCBqKyspCisJCXsKKwkJCU9pZCBw a190eXBlID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJ CU9pZCBwa19jb2xsID0gUklBdHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51 bXNbaV0pOworCQkJT2lkIGZrX3R5cGUgPSBSSUF0dFR5cGUoZmtfcmVsLCByaWluZm8tPmZr X2F0dG51bXNbaV0pOworCQkJT2lkIGZrX2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAor CQkJCQkJIFJJQXR0TmFtZShma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCQkJ LyoKKwkJCSAqIERvbid0IHNldCB0aGUgdGVtcG9yYWwgY29sdW1uKHMpLgorCQkJICogRk9S IFBPUlRJT04gT0Ygd2lsbCB0YWtlIGNhcmUgb2YgdGhhdC4KKwkJCSAqLworCQkJaWYgKGkg PCByaWluZm8tPm5rZXlzIC0gMSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZxdWVyeWJ1ZiwK KwkJCQkJCQkJICIlcyAlcyA9ICQlZCIsCisJCQkJCQkJCSBxdWVyeXNlcCwgYXR0bmFtZSwg aSArIDEpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQlZCIsIGogKyAxKTsKKwkJCXJp X0dlbmVyYXRlUXVhbCgmcXVhbGJ1ZiwgcXVhbHNlcCwKKwkJCQkJCQlwYXJhbW5hbWUsIHBr X3R5cGUsCisJCQkJCQkJcmlpbmZvLT5wZl9lcV9vcHJzW2ldLAorCQkJCQkJCWF0dG5hbWUs IGZrX3R5cGUpOworCQkJaWYgKHBrX2NvbGwgIT0gZmtfY29sbCAmJiAhZ2V0X2NvbGxhdGlv bl9pc2RldGVybWluaXN0aWMocGtfY29sbCkpCisJCQkJcmlfR2VuZXJhdGVRdWFsQ29sbGF0 aW9uKCZxdWVyeWJ1ZiwgcGtfY29sbCk7CisJCQlxdWVyeXNlcCA9ICIsIjsKKwkJCXF1YWxz ZXAgPSAiQU5EIjsKKwkJCXF1ZXJ5b2lkc1tpXSA9IHBrX3R5cGU7CisJCQlxdWVyeW9pZHNb al0gPSBwa190eXBlOworCQl9CisJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJnF1ZXJ5YnVm LCBxdWFsYnVmLmRhdGEsIHF1YWxidWYubGVuKTsKKworCQkvKiBTZXQgYSBwYXJhbSBmb3Ig Rk9SIFBPUlRJT04gT0YgVE8vRlJPTSAqLworCQlxdWVyeW9pZHNbMiAqIHJpaW5mby0+bmtl eXNdID0gUklBdHRUeXBlKHBrX3JlbCwgcmlpbmZvLT5wa19hdHRudW1zW3JpaW5mby0+bmtl eXMgLSAxXSk7CisKKwkJLyogUHJlcGFyZSBhbmQgc2F2ZSB0aGUgcGxhbiAqLworCQlxcGxh biA9IHJpX1BsYW5DaGVjayhxdWVyeWJ1Zi5kYXRhLCAyICogcmlpbmZvLT5ua2V5cyArIDEs IHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9CisKKwkv KgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUgZXhpc3Rp bmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAmcWtleSwg cXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBuZXdzbG90LAor CQkJCQlyaWluZm8tPm5rZXlzICogMiwgdGFyZ2V0UmFuZ2UsCisJCQkJCXRydWUsCQkvKiBt dXN0IGRldGVjdCBuZXcgcm93cyAqLworCQkJCQlTUElfT0tfVVBEQVRFKTsKKworCWlmIChT UElfZmluaXNoKCkgIT0gU1BJX09LX0ZJTklTSCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9maW5p c2ggZmFpbGVkIik7CisKKwl0YWJsZV9jbG9zZShma19yZWwsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCisJcmV0dXJuIFBvaW50ZXJHZXREYXR1bShOVUxMKTsKK30KKworLyoKKyAqIFRSSV9G S2V5X3NldG51bGxfZGVsIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJlbmNlcyB0 byBOVUxMIHZhbHVlcyBhdCBkZWxldGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVt CitUUklfRktleV9zZXRudWxsX2RlbChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNr IHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBh bmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51 bGxfZGVsIiwgUklfVFJJR1RZUEVfREVMRVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBV UERBVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8t PmNvbnRleHQsIHRydWUsIFJJX1RSSUdUWVBFX0RFTEVURSk7Cit9CisKKy8qCisgKiBUUklf RktleV9zZXRudWxsX3VwZCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMg dG8gTlVMTCBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0RhdHVtCitUUklf RktleV9zZXRudWxsX3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8qIENoZWNrIHRoYXQg dGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQgdGltZSBhbmQgZXZl bnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5X3NldG51bGxfdXBk IiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNvZGUgd2l0aCBERUxFVEUg Y2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAqKSBmY2luZm8tPmNvbnRl eHQsIHRydWUsIFJJX1RSSUdUWVBFX1VQREFURSk7Cit9CisKKy8qCisgKiBUUklfRktleV9z ZXRkZWZhdWx0X2RlbCAtCisgKgorICogU2V0IGZvcmVpZ24ga2V5IHJlZmVyZW5jZXMgdG8g ZGVmYXVsdHMgYXQgZGVsZXRlIGV2ZW50IG9uIFBLIHRhYmxlLgorICovCitEYXR1bQorVFJJ X0ZLZXlfc2V0ZGVmYXVsdF9kZWwoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwkvKiBDaGVjayB0 aGF0IHRoaXMgaXMgYSB2YWxpZCB0cmlnZ2VyIGNhbGwgb24gdGhlIHJpZ2h0IHRpbWUgYW5k IGV2ZW50LiAqLworCXJpX0NoZWNrVHJpZ2dlcihmY2luZm8sICJUUklfRktleV9zZXRkZWZh dWx0X2RlbCIsIFJJX1RSSUdUWVBFX0RFTEVURSk7CisKKwkvKiBTaGFyZSBjb2RlIHdpdGgg VVBEQVRFIGNhc2UgKi8KKwlyZXR1cm4gdHJpX3NldCgoVHJpZ2dlckRhdGEgKikgZmNpbmZv LT5jb250ZXh0LCBmYWxzZSwgUklfVFJJR1RZUEVfREVMRVRFKTsKK30KKworLyoKKyAqIFRS SV9GS2V5X3NldGRlZmF1bHRfdXBkIC0KKyAqCisgKiBTZXQgZm9yZWlnbiBrZXkgcmVmZXJl bmNlcyB0byBkZWZhdWx0cyBhdCB1cGRhdGUgZXZlbnQgb24gUEsgdGFibGUuCisgKi8KK0Rh dHVtCitUUklfRktleV9zZXRkZWZhdWx0X3VwZChQR19GVU5DVElPTl9BUkdTKQoreworCS8q IENoZWNrIHRoYXQgdGhpcyBpcyBhIHZhbGlkIHRyaWdnZXIgY2FsbCBvbiB0aGUgcmlnaHQg dGltZSBhbmQgZXZlbnQuICovCisJcmlfQ2hlY2tUcmlnZ2VyKGZjaW5mbywgIlRSSV9GS2V5 X3NldGRlZmF1bHRfdXBkIiwgUklfVFJJR1RZUEVfVVBEQVRFKTsKKworCS8qIFNoYXJlIGNv ZGUgd2l0aCBERUxFVEUgY2FzZSAqLworCXJldHVybiB0cmlfc2V0KChUcmlnZ2VyRGF0YSAq KSBmY2luZm8tPmNvbnRleHQsIGZhbHNlLCBSSV9UUklHVFlQRV9VUERBVEUpOworfQorCisv KgorICogdHJpX3NldCAtCisgKgorICogQ29tbW9uIGNvZGUgZm9yIHRlbXBvcmFsIE9OIERF TEVURSBTRVQgTlVMTCwgT04gREVMRVRFIFNFVCBERUZBVUxULCBPTgorICogVVBEQVRFIFNF VCBOVUxMLCBhbmQgT04gVVBEQVRFIFNFVCBERUZBVUxULgorICovCitzdGF0aWMgRGF0dW0K K3RyaV9zZXQoVHJpZ2dlckRhdGEgKnRyaWdkYXRhLCBib29sIGlzX3NldF9udWxsLCBpbnQg dGdraW5kKQoreworCWNvbnN0IFJJX0NvbnN0cmFpbnRJbmZvICpyaWluZm87CisJUmVsYXRp b24JZmtfcmVsOworCVJlbGF0aW9uCXBrX3JlbDsKKwlUdXBsZVRhYmxlU2xvdCAqb2xkc2xv dDsKKwlSSV9RdWVyeUtleSBxa2V5OworCVNQSVBsYW5QdHIJcXBsYW47CisJRGF0dW0JCXRh cmdldFJhbmdlOworCWludDMyCQlxdWVyeW5vOworCisJcmlpbmZvID0gcmlfRmV0Y2hDb25z dHJhaW50SW5mbyh0cmlnZGF0YS0+dGdfdHJpZ2dlciwKKwkJCQkJCQkJCXRyaWdkYXRhLT50 Z19yZWxhdGlvbiwgdHJ1ZSk7CisKKwkvKgorCSAqIEdldCB0aGUgcmVsYXRpb24gZGVzY3Jp cHRvcnMgb2YgdGhlIEZLIGFuZCBQSyB0YWJsZXMgYW5kIHRoZSBvbGQgdHVwbGUuCisJICoK KwkgKiBma19yZWwgaXMgb3BlbmVkIGluIFJvd0V4Y2x1c2l2ZUxvY2sgbW9kZSBzaW5jZSB0 aGF0J3Mgd2hhdCBvdXIKKwkgKiBldmVudHVhbCBVUERBVEUgd2lsbCBnZXQgb24gaXQuCisJ ICovCisJZmtfcmVsID0gdGFibGVfb3BlbihyaWluZm8tPmZrX3JlbGlkLCBSb3dFeGNsdXNp dmVMb2NrKTsKKwlwa19yZWwgPSB0cmlnZGF0YS0+dGdfcmVsYXRpb247CisJb2xkc2xvdCA9 IHRyaWdkYXRhLT50Z190cmlnc2xvdDsKKworCS8qCisJICogRG9uJ3QgU0VUIE5VTEwvREVG QVVMVCB0aGFuIG1vcmUgdGhhbiB0aGUgUEsncyBkdXJhdGlvbiwKKwkgKiB0cmltbWVkIGJ5 IGFuIG9yaWdpbmFsIEZPUiBQT1JUSU9OIE9GIGlmIG5lY2Vzc2FyeS4KKwkgKi8KKwl0YXJn ZXRSYW5nZSA9IHJlc3RyaWN0X2Nhc2NhZGluZ19yYW5nZSh0cmlnZGF0YS0+dGdfdGVtcG9y YWwsIHJpaW5mbywgb2xkc2xvdCk7CisKKwlpZiAoU1BJX2Nvbm5lY3QoKSAhPSBTUElfT0tf Q09OTkVDVCkKKwkJZWxvZyhFUlJPUiwgIlNQSV9jb25uZWN0IGZhaWxlZCIpOworCisJLyoK KwkgKiBGZXRjaCBvciBwcmVwYXJlIGEgc2F2ZWQgcGxhbiBmb3IgdGhlIHRyaWdnZXIuCisJ ICovCisJc3dpdGNoICh0Z2tpbmQpCisJeworCQljYXNlIFJJX1RSSUdUWVBFX1VQREFURToK KwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAorCQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTlVQ REFURQorCQkJCTogVFJJX1BMQU5fU0VUREVGQVVMVF9PTlVQREFURTsKKwkJCWJyZWFrOwor CQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCXF1ZXJ5bm8gPSBpc19zZXRfbnVsbAor CQkJCT8gVFJJX1BMQU5fU0VUTlVMTF9PTkRFTEVURQorCQkJCTogVFJJX1BMQU5fU0VUREVG QVVMVF9PTkRFTEVURTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwg ImludmFsaWQgdGdraW5kIHBhc3NlZCB0byByaV9zZXQiKTsKKwl9CisKKwlyaV9CdWlsZFF1 ZXJ5S2V5KCZxa2V5LCByaWluZm8sIHF1ZXJ5bm8pOworCisJaWYgKChxcGxhbiA9IHJpX0Zl dGNoUHJlcGFyZWRQbGFuKCZxa2V5KSkgPT0gTlVMTCkKKwl7CisJCVN0cmluZ0luZm9EYXRh IHF1ZXJ5YnVmOworCQlTdHJpbmdJbmZvRGF0YSBxdWFsYnVmOworCQljaGFyCQlma3JlbG5h bWVbTUFYX1FVT1RFRF9SRUxfTkFNRV9MRU5dOworCQljaGFyCQlhdHRuYW1lW01BWF9RVU9U RURfTkFNRV9MRU5dOworCQljaGFyCQlwYXJhbW5hbWVbMTZdOworCQljb25zdCBjaGFyICpx dWVyeXNlcDsKKwkJY29uc3QgY2hhciAqcXVhbHNlcDsKKwkJT2lkCQkJcXVlcnlvaWRzW1JJ X01BWF9OVU1LRVlTICsgMV07IC8qICsxIGZvciBGT1IgUE9SVElPTiBPRiAqLworCQljb25z dCBjaGFyICpma19vbmx5OworCQlpbnQJCQludW1fY29sc190b19zZXQ7CisJCWNvbnN0IGlu dDE2ICpzZXRfY29sczsKKworCQlzd2l0Y2ggKHRna2luZCkKKwkJeworCQkJY2FzZSBSSV9U UklHVFlQRV9VUERBVEU6CisJCQkJLyogLTEgc28gd2UgbGV0IEZPUiBQT1JUSU9OIE9GIHNl dCB0aGUgcmFuZ2UuICovCisJCQkJbnVtX2NvbHNfdG9fc2V0ID0gcmlpbmZvLT5ua2V5cyAt IDE7CisJCQkJc2V0X2NvbHMgPSByaWluZm8tPmZrX2F0dG51bXM7CisJCQkJYnJlYWs7CisJ CQljYXNlIFJJX1RSSUdUWVBFX0RFTEVURToKKwkJCQkvKgorCQkJCSAqIElmIGNvbmZkZWxz ZXRjb2xzIGFyZSBwcmVzZW50LCB0aGVuIHdlIG9ubHkgdXBkYXRlIHRoZQorCQkJCSAqIGNv bHVtbnMgc3BlY2lmaWVkIGluIHRoYXQgYXJyYXksIG90aGVyd2lzZSB3ZSB1cGRhdGUgYWxs CisJCQkJICogdGhlIHJlZmVyZW5jaW5nIGNvbHVtbnMuCisJCQkJICovCisJCQkJaWYgKHJp aW5mby0+bmRlbHNldGNvbHMgIT0gMCkKKwkJCQl7CisJCQkJCW51bV9jb2xzX3RvX3NldCA9 IHJpaW5mby0+bmRlbHNldGNvbHM7CisJCQkJCXNldF9jb2xzID0gcmlpbmZvLT5jb25mZGVs c2V0Y29sczsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogLTEgc28gd2UgbGV0 IEZPUiBQT1JUSU9OIE9GIHNldCB0aGUgcmFuZ2UuICovCisJCQkJCW51bV9jb2xzX3RvX3Nl dCA9IHJpaW5mby0+bmtleXMgLSAxOworCQkJCQlzZXRfY29scyA9IHJpaW5mby0+ZmtfYXR0 bnVtczsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWVsb2coRVJST1Is ICJpbnZhbGlkIHRna2luZCBwYXNzZWQgdG8gcmlfc2V0Iik7CisJCX0KKworCQkvKiAtLS0t LS0tLS0tCisJCSAqIFRoZSBxdWVyeSBzdHJpbmcgYnVpbHQgaXMKKwkJICoJVVBEQVRFIFtP TkxZXSA8Zmt0YWJsZT4KKwkJICoJCQlGT1IgUE9SVElPTiBPRiAkZmthdHQgRlJPTSBsb3dl cigke24rMX0pIFRPIHVwcGVyKCR7bisxfSkKKwkJICoJCQlTRVQgZmthdHQxID0ge05VTEx8 REVGQVVMVH0gWywgLi4uXQorCQkgKgkJCVdIRVJFICQxID0gZmthdHQxIFtBTkQgLi4uXQor CQkgKiBUaGUgdHlwZSBpZCdzIGZvciB0aGUgJCBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBvZiB0 aGUKKwkJICogY29ycmVzcG9uZGluZyBQSyBhdHRyaWJ1dGVzLgorCQkgKiAtLS0tLS0tLS0t CisJCSAqLworCQlpbml0U3RyaW5nSW5mbygmcXVlcnlidWYpOworCQlpbml0U3RyaW5nSW5m bygmcXVhbGJ1Zik7CisJCWZrX29ubHkgPSBma19yZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBS RUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFID8KKwkJCSIiIDogIk9OTFkgIjsKKwkJcXVvdGVS ZWxhdGlvbk5hbWUoZmtyZWxuYW1lLCBma19yZWwpOworCQlxdW90ZU9uZU5hbWUoYXR0bmFt ZSwgUklBdHROYW1lKGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW3JpaW5mby0+bmtleXMg LSAxXSkpOworCisJCWFwcGVuZFN0cmluZ0luZm8oJnF1ZXJ5YnVmLCAiVVBEQVRFICVzJXMg Rk9SIFBPUlRJT04gT0YgJXMgRlJPTSBsb3dlcigkJWQpIFRPIHVwcGVyKCQlZCkgU0VUIiwK KwkJCQkJCSBma19vbmx5LCBma3JlbG5hbWUsIGF0dG5hbWUsIHJpaW5mby0+bmtleXMgKyAx LCByaWluZm8tPm5rZXlzICsgMSk7CisKKwkJLyoKKwkJICogQWRkIGFzc2lnbm1lbnQgY2xh dXNlcworCQkgKi8KKwkJcXVlcnlzZXAgPSAiIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fY29sc190b19zZXQ7IGkrKykKKwkJeworCQkJcXVvdGVPbmVOYW1lKGF0dG5hbWUsIFJJ QXR0TmFtZShma19yZWwsIHNldF9jb2xzW2ldKSk7CisJCQlhcHBlbmRTdHJpbmdJbmZvKCZx dWVyeWJ1ZiwKKwkJCQkJCQkgIiVzICVzID0gJXMiLAorCQkJCQkJCSBxdWVyeXNlcCwgYXR0 bmFtZSwKKwkJCQkJCQkgaXNfc2V0X251bGwgPyAiTlVMTCIgOiAiREVGQVVMVCIpOworCQkJ cXVlcnlzZXAgPSAiLCI7CisJCX0KKworCQkvKgorCQkgKiBBZGQgV0hFUkUgY2xhdXNlCisJ CSAqLworCQlxdWFsc2VwID0gIldIRVJFIjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCByaWlu Zm8tPm5rZXlzOyBpKyspCisJCXsKKwkJCU9pZAlwa190eXBlID0gUklBdHRUeXBlKHBrX3Jl bCwgcmlpbmZvLT5wa19hdHRudW1zW2ldKTsKKwkJCU9pZAlma190eXBlID0gUklBdHRUeXBl KGZrX3JlbCwgcmlpbmZvLT5ma19hdHRudW1zW2ldKTsKKwkJCU9pZAlwa19jb2xsID0gUklB dHRDb2xsYXRpb24ocGtfcmVsLCByaWluZm8tPnBrX2F0dG51bXNbaV0pOworCQkJT2lkCWZr X2NvbGwgPSBSSUF0dENvbGxhdGlvbihma19yZWwsIHJpaW5mby0+ZmtfYXR0bnVtc1tpXSk7 CisKKwkJCXF1b3RlT25lTmFtZShhdHRuYW1lLAorCQkJCQkJIFJJQXR0TmFtZShma19yZWws IHJpaW5mby0+ZmtfYXR0bnVtc1tpXSkpOworCisJCQlzcHJpbnRmKHBhcmFtbmFtZSwgIiQl ZCIsIGkgKyAxKTsKKwkJCXJpX0dlbmVyYXRlUXVhbCgmcXVlcnlidWYsIHF1YWxzZXAsCisJ CQkJCQkJcGFyYW1uYW1lLCBwa190eXBlLAorCQkJCQkJCXJpaW5mby0+cGZfZXFfb3Byc1tp XSwKKwkJCQkJCQlhdHRuYW1lLCBma190eXBlKTsKKwkJCWlmIChwa19jb2xsICE9IGZrX2Nv bGwgJiYgIWdldF9jb2xsYXRpb25faXNkZXRlcm1pbmlzdGljKHBrX2NvbGwpKQorCQkJCXJp X0dlbmVyYXRlUXVhbENvbGxhdGlvbigmcXVlcnlidWYsIHBrX2NvbGwpOworCQkJcXVhbHNl cCA9ICJBTkQiOworCQkJcXVlcnlvaWRzW2ldID0gcGtfdHlwZTsKKwkJfQorCisJCS8qIFNl dCBhIHBhcmFtIGZvciBGT1IgUE9SVElPTiBPRiBUTy9GUk9NICovCisJCXF1ZXJ5b2lkc1ty aWluZm8tPm5rZXlzXSA9IFJJQXR0VHlwZShwa19yZWwsIHJpaW5mby0+cGtfYXR0bnVtc1ty aWluZm8tPm5rZXlzIC0gMV0pOworCisJCS8qIFByZXBhcmUgYW5kIHNhdmUgdGhlIHBsYW4g Ki8KKwkJcXBsYW4gPSByaV9QbGFuQ2hlY2socXVlcnlidWYuZGF0YSwgcmlpbmZvLT5ua2V5 cyArIDEsIHF1ZXJ5b2lkcywKKwkJCQkJCQkgJnFrZXksIGZrX3JlbCwgcGtfcmVsKTsKKwl9 CisKKwkvKgorCSAqIFdlIGhhdmUgYSBwbGFuIG5vdy4gUnVuIGl0IHRvIHVwZGF0ZSB0aGUg ZXhpc3RpbmcgcmVmZXJlbmNlcy4KKwkgKi8KKwlyaV9QZXJmb3JtQ2hlY2socmlpbmZvLCAm cWtleSwgcXBsYW4sCisJCQkJCWZrX3JlbCwgcGtfcmVsLAorCQkJCQlvbGRzbG90LCBOVUxM LAorCQkJCQlyaWluZm8tPm5rZXlzLCB0YXJnZXRSYW5nZSwKKwkJCQkJdHJ1ZSwJCS8qIG11 c3QgZGV0ZWN0IG5ldyByb3dzICovCisJCQkJCVNQSV9PS19VUERBVEUpOworCisJaWYgKFNQ SV9maW5pc2goKSAhPSBTUElfT0tfRklOSVNIKQorCQllbG9nKEVSUk9SLCAiU1BJX2Zpbmlz aCBmYWlsZWQiKTsKKworCXRhYmxlX2Nsb3NlKGZrX3JlbCwgUm93RXhjbHVzaXZlTG9jayk7 CisKKwlpZiAoaXNfc2V0X251bGwpCisJCXJldHVybiBQb2ludGVyR2V0RGF0dW0oTlVMTCk7 CisJZWxzZQorCXsKKwkJLyoKKwkJICogSWYgd2UganVzdCBkZWxldGVkIG9yIHVwZGF0ZWQg dGhlIFBLIHJvdyB3aG9zZSBrZXkgd2FzIGVxdWFsIHRvIHRoZQorCQkgKiBGSyBjb2x1bW5z JyBkZWZhdWx0IHZhbHVlcywgYW5kIGEgcmVmZXJlbmNpbmcgcm93IGV4aXN0cyBpbiB0aGUg RksKKwkJICogdGFibGUsIHdlIHdvdWxkIGhhdmUgdXBkYXRlZCB0aGF0IHJvdyB0byB0aGUg c2FtZSB2YWx1ZXMgaXQgYWxyZWFkeQorCQkgKiBoYWQgLS0tIGFuZCBSSV9GS2V5X2ZrX3Vw ZF9jaGVja19yZXF1aXJlZCB3b3VsZCBoZW5jZSBiZWxpZXZlIG5vCisJCSAqIGNoZWNrIGlz IG5lY2Vzc2FyeS4gIFNvIHdlIG5lZWQgdG8gZG8gYW5vdGhlciBsb29rdXAgbm93IGFuZCBp bgorCQkgKiBjYXNlIGEgcmVmZXJlbmNlIHN0aWxsIGV4aXN0cywgYWJvcnQgdGhlIG9wZXJh dGlvbi4gIFRoYXQgaXMKKwkJICogYWxyZWFkeSBpbXBsZW1lbnRlZCBpbiB0aGUgTk8gQUNU SU9OIHRyaWdnZXIsIHNvIGp1c3QgcnVuIGl0LiAoVGhpcworCQkgKiByZWNoZWNrIGlzIG9u bHkgbmVlZGVkIGluIHRoZSBTRVQgREVGQVVMVCBjYXNlLCBzaW5jZSBDQVNDQURFIHdvdWxk CisJCSAqIHJlbW92ZSBzdWNoIHJvd3MgaW4gY2FzZSBvZiBhIERFTEVURSBvcGVyYXRpb24g b3Igd291bGQgY2hhbmdlIHRoZQorCQkgKiBGSyBrZXkgdmFsdWVzIGluIGNhc2Ugb2YgYW4g VVBEQVRFLCB3aGlsZSBTRVQgTlVMTCBpcyBjZXJ0YWluIHRvCisJCSAqIHJlc3VsdCBpbiBy b3dzIHRoYXQgc2F0aXNmeSB0aGUgRksgY29uc3RyYWludC4pCisJCSAqLworCQlyZXR1cm4g cmlfcmVzdHJpY3QodHJpZ2RhdGEsIHRydWUpOworCX0KK30KKwogLyoKICAqIFJJX0ZLZXlf cGtfdXBkX2NoZWNrX3JlcXVpcmVkIC0KICAqCkBAIC0yNTUxLDggKzMwODgsOCBAQCByaV9Q ZXJmb3JtQ2hlY2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAlpbnQJCQlz cGlfcmVzdWx0OwogCU9pZAkJCXNhdmVfdXNlcmlkOwogCWludAkJCXNhdmVfc2VjX2NvbnRl eHQ7Ci0JRGF0dW0JCXZhbHNbUklfTUFYX05VTUtFWVMgKiAyXTsKLQljaGFyCQludWxsc1tS SV9NQVhfTlVNS0VZUyAqIDJdOworCURhdHVtCQl2YWxzW1JJX01BWF9OVU1LRVlTICogMiAr IDFdOworCWNoYXIJCW51bGxzW1JJX01BWF9OVU1LRVlTICogMiArIDFdOwogCiAJLyoKIAkg KiBVc2UgdGhlIHF1ZXJ5IHR5cGUgY29kZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgcXVl cnkgaXMgcnVuIGFnYWluc3QKQEAgLTI1ODcsOCArMzEyNCwxMCBAQCByaV9QZXJmb3JtQ2hl Y2soY29uc3QgUklfQ29uc3RyYWludEluZm8gKnJpaW5mbywKIAkJcmlfRXh0cmFjdFZhbHVl cyhzb3VyY2VfcmVsLCBuZXdzbG90LCByaWluZm8sIHNvdXJjZV9pc19waywKIAkJCQkJCSB2 YWxzLCBudWxscyk7CiAJCWlmIChvbGRzbG90KQorCQl7CiAJCQlyaV9FeHRyYWN0VmFsdWVz KHNvdXJjZV9yZWwsIG9sZHNsb3QsIHJpaW5mbywgc291cmNlX2lzX3BrLAogCQkJCQkJCSB2 YWxzICsgcmlpbmZvLT5ua2V5cywgbnVsbHMgKyByaWluZm8tPm5rZXlzKTsKKwkJfQogCX0K IAllbHNlCiAJewpAQCAtMzI5OSw4ICszODM4LDE0IEBAIFJJX0ZLZXlfdHJpZ2dlcl90eXBl KE9pZCB0Z2ZvaWQpCiAJCWNhc2UgRl9SSV9GS0VZX1NFVERFRkFVTFRfVVBEOgogCQljYXNl IEZfUklfRktFWV9OT0FDVElPTl9ERUw6CiAJCWNhc2UgRl9SSV9GS0VZX05PQUNUSU9OX1VQ RDoKKwkJY2FzZSBGX1RSSV9GS0VZX0NBU0NBREVfREVMOgorCQljYXNlIEZfVFJJX0ZLRVlf Q0FTQ0FERV9VUEQ6CiAJCWNhc2UgRl9UUklfRktFWV9SRVNUUklDVF9ERUw6CiAJCWNhc2Ug Rl9UUklfRktFWV9SRVNUUklDVF9VUEQ6CisJCWNhc2UgRl9UUklfRktFWV9TRVROVUxMX0RF TDoKKwkJY2FzZSBGX1RSSV9GS0VZX1NFVE5VTExfVVBEOgorCQljYXNlIEZfVFJJX0ZLRVlf U0VUREVGQVVMVF9ERUw6CisJCWNhc2UgRl9UUklfRktFWV9TRVRERUZBVUxUX1VQRDoKIAkJ Y2FzZSBGX1RSSV9GS0VZX05PQUNUSU9OX0RFTDoKIAkJY2FzZSBGX1RSSV9GS0VZX05PQUNU SU9OX1VQRDoKIAkJCXJldHVybiBSSV9UUklHR0VSX1BLOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKaW5kZXggMzEzMjQ2OGE5Yy4uNzI1ZWNhMTI2ZCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0CkBAIC0zOTQ5LDYgKzM5NDksMTIgQEAKIHsgb2lkID0+ICc2MTIzJywgZGVz Y3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBGT1JFSUdOIEtFWSAuLi4g UkVGRVJFTkNFUycsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcsIHByb3Zv bGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCiAgIHByb2FyZ3R5cGVz ID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2NoZWNrX3VwZCcgfSwKK3sgb2lkID0+ICc2 MTI0JywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxF VEUgQ0FTQ0FERScsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfZGVsJywgcHJv dm9sYXRpbGUgPT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlw ZXMgPT4gJycsIHByb3NyYyA9PiAnVFJJX0ZLZXlfY2FzY2FkZV9kZWwnIH0sCit7IG9pZCA9 PiAnNjEyNScsIGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04g VVBEQVRFIENBU0NBREUnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9jYXNjYWRlX3VwZCcs IHByb3ZvbGF0aWxlID0+ICd2JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2Fy Z3R5cGVzID0+ICcnLCBwcm9zcmMgPT4gJ1RSSV9GS2V5X2Nhc2NhZGVfdXBkJyB9LAogeyBv aWQgPT4gJzYxMjYnLCBkZXNjciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5 IE9OIERFTEVURSBSRVNUUklDVCcsCiAgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3Jlc3RyaWN0 X2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcics IHByb2FyZ3R5cGVzID0+ICcnLApAQCAtMzk1Nyw2ICszOTYzLDIwIEBACiAgIHByb25hbWUg PT4gJ1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKICAgcHJv cmV0dHlwZSA9PiAndHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAogICBwcm9zcmMgPT4g J1RSSV9GS2V5X3Jlc3RyaWN0X3VwZCcgfSwKK3sgb2lkID0+ICc2MTI4JywgZGVzY3IgPT4g J3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVncml0eSBPTiBERUxFVEUgU0VUIE5VTEwnLAor ICBwcm9uYW1lID0+ICdUUklfRktleV9zZXRudWxsX2RlbCcsIHByb3ZvbGF0aWxlID0+ICd2 JywgcHJvcmV0dHlwZSA9PiAndHJpZ2dlcicsCisgIHByb2FyZ3R5cGVzID0+ICcnLCBwcm9z cmMgPT4gJ1RSSV9GS2V5X3NldG51bGxfZGVsJyB9LAoreyBvaWQgPT4gJzYxMjknLCBkZXNj ciA9PiAndGVtcG9yYWwgcmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIFVQREFURSBTRVQgTlVM TCcsCisgIHByb25hbWUgPT4gJ1RSSV9GS2V5X3NldG51bGxfdXBkJywgcHJvdm9sYXRpbGUg PT4gJ3YnLCBwcm9yZXR0eXBlID0+ICd0cmlnZ2VyJywKKyAgcHJvYXJndHlwZXMgPT4gJycs IHByb3NyYyA9PiAnVFJJX0ZLZXlfc2V0bnVsbF91cGQnIH0sCit7IG9pZCA9PiAnNjEzMCcs IGRlc2NyID0+ICd0ZW1wb3JhbCByZWZlcmVudGlhbCBpbnRlZ3JpdHkgT04gREVMRVRFIFNF VCBERUZBVUxUJywKKyAgcHJvbmFtZSA9PiAnVFJJX0ZLZXlfc2V0ZGVmYXVsdF9kZWwnLCBw cm92b2xhdGlsZSA9PiAndicsCisgIHByb3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0 eXBlcyA9PiAnJywKKyAgcHJvc3JjID0+ICdUUklfRktleV9zZXRkZWZhdWx0X2RlbCcgfSwK K3sgb2lkID0+ICc2MTMxJywgZGVzY3IgPT4gJ3RlbXBvcmFsIHJlZmVyZW50aWFsIGludGVn cml0eSBPTiBVUERBVEUgU0VUIERFRkFVTFQnLAorICBwcm9uYW1lID0+ICdUUklfRktleV9z ZXRkZWZhdWx0X3VwZCcsIHByb3ZvbGF0aWxlID0+ICd2JywKKyAgcHJvcmV0dHlwZSA9PiAn dHJpZ2dlcicsIHByb2FyZ3R5cGVzID0+ICcnLAorICBwcm9zcmMgPT4gJ1RSSV9GS2V5X3Nl dGRlZmF1bHRfdXBkJyB9LAogeyBvaWQgPT4gJzYxMzInLCBkZXNjciA9PiAndGVtcG9yYWwg cmVmZXJlbnRpYWwgaW50ZWdyaXR5IE9OIERFTEVURSBOTyBBQ1RJT04nLAogICBwcm9uYW1l ID0+ICdUUklfRktleV9ub2FjdGlvbl9kZWwnLCBwcm92b2xhdGlsZSA9PiAndicsCiAgIHBy b3JldHR5cGUgPT4gJ3RyaWdnZXInLCBwcm9hcmd0eXBlcyA9PiAnJywKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3dpdGhvdXRfb3ZlcmxhcHMub3V0CmluZGV4IGY0YjEy OTdhYmQuLjkyZDY3YzU0NjcgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvd2l0aG91dF9vdmVybGFwcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC93aXRob3V0X292ZXJsYXBzLm91dApAQCAtMTQ4LDYgKzE0OCw3IEBAIFNFTEVDVCBwZ19n ZXRfaW5kZXhkZWYoY29uaW5kaWQsIDAsIHRydWUpIEZST00gcGdfY29uc3RyYWludCBXSEVS RSBjb25uYW1lID0gJ3RlCiAgQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZW1wb3JhbF9ybmcyX3Vx IE9OIHRlbXBvcmFsX3JuZzIgVVNJTkcgZ2lzdCAoaWQsIHZhbGlkX2F0KQogKDEgcm93KQog CitEUk9QIFRBQkxFIHRlbXBvcmFsX3JuZzI7CiAtLSBVTklRVUUgd2l0aCB0d28gY29sdW1u cyBwbHVzIGEgcmFuZ2U6CiBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMyAoCiAJaWQxIGlu dDRyYW5nZSwKQEAgLTc3MSw3ICs3NzIsNjIgQEAgQUxURVIgVEFCTEUgdGVtcG9yYWxfZmtf cm5nMnJuZwogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJ CVJFRkVSRU5DRVMgdGVtcG9yYWxfcm5nCiAJCU9OIERFTEVURSBDQVNDQURFIE9OIFVQREFU RSBDQVNDQURFOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlk X2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10n IFdIRVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNCw0XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAgICAgICAg IHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbNCw1KSB8IFsiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCBbNyw4KQorIFs0LDUpIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFs2 LDcpCisgWzQsNSkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9y bmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzQsNSkgfCBbIlR1ZSBK YW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWzcs OCkKKyBbNCw1KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbNyw4KQorIFs0LDUpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAw IDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs3LDgpCisoMyByb3dzKQor CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE1LDE1XScsIHRzcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Ju ZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTAsMTBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTUsMTVdJyk7CitV UERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbMTYsMTZdJyBXSEVSRSBpZCA9ICdbMTUs MTVdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBp ZCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEw LDExKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiV2VkIEphbiAwMSAwMDowMDow MCAyMDIwIikgfCBbMTYsMTcpCisgWzEwLDExKSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAy MDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTUsMTYpCisoMiByb3dzKQor CistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIENBU0NBREUKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbOCw4XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFMVUVTICgnWzUs NV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAn MjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1XSc7CisgIGlk ICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAg ICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2KSB8 IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5 IikgfCBbOCw5KQorIFs1LDYpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkg SmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFs4LDkpCisoMiByb3dzKQorCitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKyBpZCB8IHZhbGlkX2F0IHwg cGFyZW50X2lkIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBW QUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTEsMTFdJywg dHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTddJyk7CitERUxF VEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5EIHZhbGlkX2F0 IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9m a19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworICAgaWQgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMSwxMikgfCBbIldlZCBKYW4g MDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWzE3LDE4 KQorKDEgcm93KQorCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiBJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5n IFZBTFVFUyAoJ1s2LDZdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyks ICdbOSw5XScpOwpAQCAtNzgxLDcgKzgzNyw2NyBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9m a19ybmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIFNFVCBOVUxMIE9OIFVQ REFURSBTRVQgTlVMTDsKLUVSUk9SOiAgYWN0aW9uIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBv cmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2 YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sx MCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtf cm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsiVHVlIEphbiAwMSAwMDowMDow MCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikgfCAKKyBbNiw3KSB8IFsiTW9u IEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAwMDowMDowMCAyMDE5IikgfCBb OSwxMCkKKyBbNiw3KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAw MSAwMDowMDowMCAyMDIxIikgfCBbOSwxMCkKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3Jh bF9ybmcgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5LDldJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAg fCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAg ICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNiw3KSB8IFsi VHVlIEphbiAwMSAwMDowMDowMCAyMDE5IiwiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIikg fCAKKyBbNiw3KSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCAKKyBbNiw3KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCAKKygzIHJvd3MpCisKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMTgsMThdJywgdHNyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCB0c3Jhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxOCwxOF0nKTsKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1sxOSwxOV0nIFdIRVJFIGlkID0gJ1sxOCwxOF0nIEFORCB2 YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKKyAgIGlkICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8 IHBhcmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMTIsMTMpIHwgWyJN b24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8 IAorIFsxMiwxMykgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4gMDEg MDA6MDA6MDAgMjAyMSIpIHwgWzE4LDE5KQorKDIgcm93cykKKworLS0gdGVzdCBGSyBwYXJl bnQgZGVsZXRlcyBTRVQgTlVMTAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxMSwxMV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgdHNyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTEsMTFdJyk7CitERUxFVEUgRlJPTSB0 ZW1wb3JhbF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBw YXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs3LDgpIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IAorIFs3 LDgpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAw IDIwMTkiKSB8IFsxMSwxMikKKyBbNyw4KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIw IiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMTEsMTIpCisoMyByb3dzKQorCitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworICBpZCAg IHwgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAg ICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBb IlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIp IHwgCisgWzcsOCkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEg MDA6MDA6MDAgMjAxOSIpIHwgCisgWzcsOCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAy MCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgCisoMyByb3dzKQorCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIHRzcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMg KCdbMjAsMjBdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5T RVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTMsMTNdJywgdHNyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJP TSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcy MDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1sxMywxM10nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxMywxNCkgfCBbIk1vbiBKYW4gMDEgMDA6 MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgCisgWzEzLDE0KSB8 IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIx IikgfCBbMjAsMjEpCisoMiByb3dzKQorCiAtLSB0ZXN0IEZLIHBhcmVudCB1cGRhdGVzIFNF VCBERUZBVUxUCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWy0xLC0xXScs IHRzcmFuZ2UobnVsbCwgbnVsbCkpOwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVF UyAoJ1sxMiwxMl0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CkBA IC03OTMsNyArOTA5LDk1IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBE RUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwgZm9y ZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScg V0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBpZCAgIHwgICAgICAgICAgICAgICAgICAgICAg ICB2YWxpZF9hdCAgICAgICAgICAgICAgICAgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzgsOSkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAx OSIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzgsOSkgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIpIHwg WzEyLDEzKQorIFs4LDkpIHwgWyJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFu IDAxIDAwOjAwOjAwIDIwMjEiKSB8IFsxMiwxMykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1w b3JhbF9ybmcgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKKyAg aWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfYXQgICAgICAgICAgICAgICAg ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkp IHwgWyJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIw MjAiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJNb24gSmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJU dWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFstMSwwKQorIFs4LDkpIHwgWyJXZWQgSmFu IDAxIDAwOjAwOjAwIDIwMjAiLCJGcmkgSmFuIDAxIDAwOjAwOjAwIDIwMjEiKSB8IFstMSww KQorKDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwy Ml0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzIyLDIyXScsIHRzcmFuZ2UoJzIwMjAtMDEtMDEn LCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJybmcgVkFM VUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hF UkUgaWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0 YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sx NCwxNF0nOworICAgaWQgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAg ICAgICAgICAgICAgICAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFsxNCwxNSkgfCBbIk1vbiBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBK YW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzE0LDE1KSB8IFsiV2VkIEphbiAw MSAwMDowMDowMCAyMDIwIiwiRnJpIEphbiAwMSAwMDowMDowMCAyMDIxIikgfCBbMjIsMjMp CisoMiByb3dzKQorCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBERUZBVUxUCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE0LDE0XScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzksOV0nOworICAgaWQgICB8ICAgICAgICAgICAgICAgICAgICAgICAgdmFs aWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyBbOSwxMCkgfCBbIlR1ZSBKYW4gMDEgMDA6MDA6MDAgMjAxOSIs IldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwgWy0xLDApCisgWzksMTApIHwgWyJNb24g SmFuIDAxIDAwOjAwOjAwIDIwMTgiLCJUdWUgSmFuIDAxIDAwOjAwOjAwIDIwMTkiKSB8IFsx NCwxNSkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIsIkZyaSBKYW4g MDEgMDA6MDA6MDAgMjAyMSIpIHwgWzE0LDE1KQorKDMgcm93cykKKworREVMRVRFIEZST00g dGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKKyAgIGlkICAgfCAgICAgICAg ICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGFy ZW50X2lkIAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwgWyJUdWUgSmFu IDAxIDAwOjAwOjAwIDIwMTkiLCJXZWQgSmFuIDAxIDAwOjAwOjAwIDIwMjAiKSB8IFstMSww KQorIFs5LDEwKSB8IFsiTW9uIEphbiAwMSAwMDowMDowMCAyMDE4IiwiVHVlIEphbiAwMSAw MDowMDowMCAyMDE5IikgfCBbLTEsMCkKKyBbOSwxMCkgfCBbIldlZCBKYW4gMDEgMDA6MDA6 MDAgMjAyMCIsIkZyaSBKYW4gMDEgMDA6MDA6MDAgMjAyMSIpIHwgWy0xLDApCisoMyByb3dz KQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzI0LDI0XScsIHRzcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAx LTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdbMTUs MTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzI0LDI0XScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1w b3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOworICAgaWQgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgIHZhbGlkX2F0ICAgICAgICAgICAgICAgICAgICAgICAgIHwg cGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwxNikgfCBbIk1v biBKYW4gMDEgMDA6MDA6MDAgMjAxOCIsIldlZCBKYW4gMDEgMDA6MDA6MDAgMjAyMCIpIHwg Wy0xLDApCisgWzE1LDE2KSB8IFsiV2VkIEphbiAwMSAwMDowMDowMCAyMDIwIiwiRnJpIEph biAwMSAwMDowMDowMCAyMDIxIikgfCBbMjQsMjUpCisoMiByb3dzKQorCistLSBGSyB3aXRo IGEgY3VzdG9tIHJhbmdlIHR5cGUKK0NSRUFURSBUWVBFIG15ZGF0ZXJhbmdlIEFTIHJhbmdl KHN1YnR5cGU9ZGF0ZSk7CitDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcm5nMiAoCisJaWQgaW50 NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCUNPTlNUUkFJTlQgdGVtcG9yYWxf cm5nMl9wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCisp OworQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX2ZrMl9ybmcycm5nICgKKwlpZCBpbnQ0cmFuZ2Us CisJdmFsaWRfYXQgbXlkYXRlcmFuZ2UsCisJcGFyZW50X2lkIGludDRyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX2ZrMl9ybmcycm5nX3BrIFBSSU1BUlkgS0VZIChpZCwgdmFsaWRf YXQgV0lUSE9VVCBPVkVSTEFQUyksCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJu Z19mayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCisJCVJFRkVS RU5DRVMgdGVtcG9yYWxfcm5nMiAoaWQsIFBFUklPRCB2YWxpZF9hdCkgT04gREVMRVRFIENB U0NBREUKKyk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcyIFZBTFVFUyAoJ1s4LDhdJywg bXlkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX2ZrMl9ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgbXlkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3JuZzIgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8g JzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9y YWxfZmsyX3JuZzJybmcgV0hFUkUgaWQgPSAnWzUsNV0nOworICBpZCAgIHwgICAgICAgIHZh bGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNSw2KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkp IHwgWzgsOSkKKyBbNSw2KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzgsOSkKKygy IHJvd3MpCisKK0RST1AgVEFCTEUgdGVtcG9yYWxfZmsyX3JuZzJybmc7CitEUk9QIFRBQkxF IHRlbXBvcmFsX3JuZzI7CitEUk9QIFRZUEUgbXlkYXRlcmFuZ2U7CiAtLSBGSyBiZXR3ZWVu IHBhcnRpdGlvbmVkIHRhYmxlcwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyAoCiAJaWQgaW50NHJhbmdlLApAQCAtODAxLDggKzEwMDUsOCBAQCBDUkVBVEUgVEFC TEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nICgKICAgbmFtZSB0ZXh0LAogCUNPTlNUUkFJ TlQgdGVtcG9yYWxfcGFyaXRpb25lZF9ybmdfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9h dCBXSVRIT1VUIE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRF IFRBQkxFIHRwMSBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBW QUxVRVMgSU4gKCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScs ICdbMTEsMTFdJyk7Ci1DUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZd JywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRwMSBw YXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBWQUxVRVMgSU4gKCdb MSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJywg J1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIxXScs ICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdHAyIHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1syLDJdJywgJ1s0LDRd JywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScsICdbMTQsMTRdJywg J1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0nLCAnWzI0LDI0XScp OwogSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUwogICAoJ1sx LDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMDEnKSwgJ29uZScpLAog ICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAyLTAxJywgJzIwMDAtMDMtMDEnKSwgJ29u ZScpLApAQCAtODE1LDggKzEwMTksOCBAQCBDUkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyAoCiAJQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nX2ZrIEZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkK IAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgKGlkLCBQRVJJT0QgdmFs aWRfYXQpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdGZrcDEg cGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVF UyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sx MSwxMV0nKTsKLUNSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRpb24gT0YgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAn WzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUg dGZrcDEgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9S IFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDld JywgJ1sxMSwxMV0nLCAnWzEzLDEzXScsICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5 XScsICdbMjEsMjFdJywgJ1syMywyM10nKTsKK0NSRUFURSBUQUJMRSB0ZmtwMiBwYXJ0aXRp b24gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBGT1IgVkFMVUVTIElOICgn WzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0nLCAnWzEwLDEwXScs ICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScsICdbMTgsMThdJywgJ1syMCwyMF0n LCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNl cnRzCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UwogICAoJ1sxLDFdJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMDAtMDItMTUnKSwg J1sxLDFdJyksCkBAIC04NTEsNyArMTA1NSw3IEBAIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ybmcgU0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAyLTAxJywgJzIwMTYt MDMtCiAtLSBzaG91bGQgZmFpbDoKIFVQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg U0VUIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE2LTAxLTAxJywgJzIwMTYtMDItMDEnKQog ICBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdlKCcyMDE4LTAx LTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0YWJs ZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAidGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0 YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFibGUgInRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlkLCB2YWxpZF9h dCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwgcmVmZXJlbmNl ZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIi4KIC0tIGNs ZWFuIHVwOgogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBwYXJlbnRfaWQgPSAnWzUsNV0nOwpAQCAtODYzLDcgKzEwNjcsNyBAQCBJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1szLDNdJywg ZGF0ZXJhbmdlKCcyMDE4LTAxLQogREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFdIRVJFIGlkID0gJ1s1LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgt MDItMDEnLCAnMjAxOC0wMy0wMScpOwogLS0gc2hvdWxkIGZhaWw6CiBERUxFVEUgRlJPTSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9h dCA9IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDE4LTAyLTAxJyk7Ci1FUlJPUjogIHVw ZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkgY29u c3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRfZmtl eSIgb24gdGFibGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCitFUlJPUjog IHVwZGF0ZSBvciBkZWxldGUgb24gdGFibGUgInRwMSIgdmlvbGF0ZXMgZm9yZWlnbiBrZXkg Y29uc3RyYWludCAidGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19wYXJlbnRfaWRf ZmtleTEiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIgogREVU QUlMOiAgS2V5IChpZCwgdmFsaWRfYXQpPShbNSw2KSwgWzAxLTAxLTIwMTgsMDItMDEtMjAx OCkpIGlzIHN0aWxsIHJlZmVyZW5jZWQgZnJvbSB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyIuCiAtLSBjbGVhbiB1cDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgcGFyZW50X2lkID0gJ1s1LDVdJzsKQEAgLTg4 NSw3ICsxMDg5LDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFs aWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTYtMDItMDEnLCAnMjAxNi0wMy0KIC0tIHNob3VsZCBm YWlsOgogVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgdmFsaWRfYXQgPSBk YXRlcmFuZ2UoJzIwMTYtMDEtMDEnLCAnMjAxNi0wMi0wMScpCiAgIFdIRVJFIGlkID0gJ1s1 LDVdJyBBTkQgdmFsaWRfYXQgPSBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAxOC0wMi0w MScpOwotRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xhdGVz IGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfcGFyZW50X2lkX2ZrZXkiIG9uIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19y bmcycm5nIgorRVJST1I6ICB1cGRhdGUgb3IgZGVsZXRlIG9uIHRhYmxlICJ0cDEiIHZpb2xh dGVzIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmdfcGFyZW50X2lkX2ZrZXkxIiBvbiB0YWJsZSAidGVtcG9yYWxfcGFydGl0aW9uZWRf Zmtfcm5nMnJuZyIKIERFVEFJTDogIEtleSAoaWQsIHZhbGlkX2F0KT0oWzUsNiksIFswMS0w MS0yMDE4LDAyLTAxLTIwMTgpKSBpcyBzdGlsbCByZWZlcmVuY2VkIGZyb20gdGFibGUgInRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciLgogLS0gY2xlYW4gdXA6CiBERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIHBhcmVudF9pZCA9 ICdbNSw1XSc7CkBAIC04OTcsMzUgKzExMDEsMjE0IEBAIElOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzMsM10nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtCiBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZSgnMjAxOC0wMi0wMScsICcyMDE4 LTAzLTAxJyk7CiAtLSBzaG91bGQgZmFpbDoKIERFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbNSw1XScgQU5EIHZhbGlkX2F0ID0gZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMTgtMDItMDEnKTsKLUVSUk9SOiAgdXBkYXRlIG9yIGRlbGV0 ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZW1w b3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5IiBvbiB0YWJsZSAi dGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyIKK0VSUk9SOiAgdXBkYXRlIG9yIGRl bGV0ZSBvbiB0YWJsZSAidHAxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX3BhcmVudF9pZF9ma2V5MSIgb24gdGFi bGUgInRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmciCiBERVRBSUw6ICBLZXkgKGlk LCB2YWxpZF9hdCk9KFs1LDYpLCBbMDEtMDEtMjAxOCwwMi0wMS0yMDE4KSkgaXMgc3RpbGwg cmVmZXJlbmNlZCBmcm9tIHRhYmxlICJ0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5n Ii4KIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIENBU0NBREUKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5n ZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVS SU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwog CQlPTiBERUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKLUVSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdb Niw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAg fCBwYXJlbnRfaWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyBbNCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkKKyBbNCw1 KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzYsNykKKyBbNCw1KSB8IFswMS0wMS0y MDIwLDAxLTAxLTIwMjEpIHwgWzYsNykKKygzIHJvd3MpCisKK1VQREFURSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmcgU0VUIGlkID0gJ1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzQsNF0nOworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRf aWQgCistLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb NCw1KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzcsOCkKKyBbNCw1KSB8IFswMS0w MS0yMDE4LDAxLTAxLTIwMTkpIHwgWzcsOCkKKyBbNCw1KSB8IFswMS0wMS0yMDIwLDAxLTAx LTIwMjEpIHwgWzcsOCkKKygzIHJvd3MpCisKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRp dGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywg JzIwMjAtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzE1LDE1XScsIGRhdGVyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIxLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxV RVMgKCdbMTAsMTBdJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwg J1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1sxNiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0w MS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzEwLDEwXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9h dCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBbMTAsMTEpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAyMCkg fCBbMTYsMTcpCisgWzEwLDExKSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE1LDE2 KQorKDIgcm93cykKKwogLS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FE RQorSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1s4LDhd JywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgZGF0 ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitERUxFVEUg RlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQg RlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEnIFdIRVJFIGlkID0gJ1s4LDhdJzsK K1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNSw1XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVu dF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor IFs1LDYpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCBbOCw5KQorIFs1LDYpIHwgWzAx LTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbOCw5KQorKDIgcm93cykKKworREVMRVRFIEZST00g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbNSw1 XSc7CisgaWQgfCB2YWxpZF9hdCB8IHBhcmVudF9pZCAKKy0tLS0rLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorKDAgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRf cm5nIFZBTFVFUyAoJ1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0w MS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMTcsMTddJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sx MSwxMV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3 XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0g J1sxNywxN10nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEx LDExXSc7CisgICBpZCAgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lk IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBb MTEsMTIpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTcsMTgpCisoMSByb3cpCisK IC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzYsNl0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzksOV0nKTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcKIAlEUk9QIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZ19maywKIAlBREQgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklP RCB2YWxpZF9hdCkKIAkJUkVGRVJFTkNFUyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcKIAkJ T04gREVMRVRFIFNFVCBOVUxMIE9OIFVQREFURSBTRVQgTlVMTDsKLUVSUk9SOiAgYWN0aW9u IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFsIGZvcmVpZ24ga2V5cworVVBEQVRFIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0g J1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZyBXSEVSRSBpZCA9ICdbNiw2XSc7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAg ICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIFs2LDcpIHwgWzAxLTAxLTIwMTksMDEtMDEtMjAyMCkgfCAKKyBbNiw3KSB8 IFswMS0wMS0yMDE4LDAxLTAxLTIwMTkpIHwgWzksMTApCisgWzYsNykgfCBbMDEtMDEtMjAy MCwwMS0wMS0yMDIxKSB8IFs5LDEwKQorKDMgcm93cykKKworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzEwLDEwXScgV0hFUkUgaWQgPSAnWzksOV0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s2LDZdJzsKKyAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50 X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg WzYsNykgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8IAorIFs2LDcpIHwgWzAxLTAxLTIw MTgsMDEtMDEtMjAxOSkgfCAKKyBbNiw3KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwg CisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFM VUVTICgnWzE4LDE4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykp OworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwx OF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJ TlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzEyLDEyXScs IGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTgsMThdJyk7CitV UERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBpZCA9ICdbMTksMTldJyBXSEVS RSBpZCA9ICdbMTgsMThdJyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjpkYXRlOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworICAgaWQgICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBh cmVudF9pZCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgWzEyLDEzKSB8IFswMS0wMS0yMDE4LDAxLTAxLTIwMjApIHwgCisgWzEyLDEzKSB8 IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzE4LDE5KQorKDIgcm93cykKKwogLS0gcGFy dGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTEsMTFdJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s3LDddJywgZGF0ZXJhbmdlKCcyMDE4LTAxLTAx JywgJzIwMjEtMDEtMDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAx JyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOwor ICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbNyw4KSB8IFswMS0w MS0yMDE5LDAxLTAxLTIwMjApIHwgCisgWzcsOCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDE5 KSB8IFsxMSwxMikKKyBbNyw4KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzExLDEy KQorKDMgcm93cykKKworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdI RVJFIGlkID0gJ1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s3LDddJzsKKyAgaWQgICB8ICAgICAgICB2YWxp ZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgWzcsOCkgfCBbMDEtMDEtMjAxOSwwMS0wMS0yMDIwKSB8 IAorIFs3LDgpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAxOSkgfCAKKyBbNyw4KSB8IFswMS0w MS0yMDIwLDAxLTAxLTIwMjEpIHwgCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzIwLDIwXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAy MS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEzLDEzXScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbMjAsMjBdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzIwLDIwXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbMTMsMTNdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAg ICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIFsxMywxNCkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IAorIFsx MywxNCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsyMCwyMSkKKygyIHJvd3MpCisK IC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBERUZBVUxUCitJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzAsMF0nLCBkYXRlcmFu Z2UobnVsbCwgbnVsbCkpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5n IFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFM VUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzEyLDEyXScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZwotICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdbLTEsLTFdJywKKyAg QUxURVIgQ09MVU1OIHBhcmVudF9pZCBTRVQgREVGQVVMVCAnWzAsMF0nLAogCURST1AgQ09O U1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05T VFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBL RVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNF VCBERUZBVUxUOwotRVJST1I6ICBhY3Rpb24gbm90IHN1cHBvcnRlZCBmb3IgdGVtcG9yYWwg Zm9yZWlnbiBrZXlzCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQg aWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworICBp ZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbOCw5KSB8IFswMS0wMS0y MDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOCw5KSB8IFswMS0wMS0yMDE4LDAxLTAxLTIw MTkpIHwgWzEyLDEzKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMTIs MTMpCisoMyByb3dzKQorCitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNFVCBp ZCA9ICdbMTMsMTNdJyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CisgIGlk ICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IHBhcmVudF9pZCAKKy0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs4LDkpIHwgWzAxLTAxLTIw MTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMTgsMDEtMDEtMjAx OSkgfCBbMCwxKQorIFs4LDkpIHwgWzAxLTAxLTIwMjAsMDEtMDEtMjAyMSkgfCBbMCwxKQor KDMgcm93cykKKworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVF UyAoJ1syMiwyMl0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsK K0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJd JywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5U TyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBE QVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUg aWQgPSAnWzIyLDIyXScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NF TEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9 ICdbMTQsMTRdJzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJl bnRfaWQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorIFsxNCwxNSkgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzE0LDE1 KSB8IFswMS0wMS0yMDIwLDAxLTAxLTIwMjEpIHwgWzIyLDIzKQorKDIgcm93cykKKwogLS0g cGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTQsMTRdJywgZGF0ZXJhbmdl KCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgZGF0ZXJhbmdlKCcyMDE4 LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sxNCwxNF0nKTsKK0RFTEVURSBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5 LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzE0LDE0XSc7CitTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzks OV0nOworICAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcGFyZW50X2lkIAor LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFs5LDEw KSB8IFswMS0wMS0yMDE5LDAxLTAxLTIwMjApIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEt MjAxOCwwMS0wMS0yMDE5KSB8IFsxNCwxNSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCwwMS0w MS0yMDIxKSB8IFsxNCwxNSkKKygzIHJvd3MpCisKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5XSc7CisgICBp ZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCistLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgWzksMTApIHwgWzAxLTAx LTIwMTksMDEtMDEtMjAyMCkgfCBbMCwxKQorIFs5LDEwKSB8IFswMS0wMS0yMDE4LDAxLTAx LTIwMTkpIHwgWzAsMSkKKyBbOSwxMCkgfCBbMDEtMDEtMjAyMCwwMS0wMS0yMDIxKSB8IFsw LDEpCisoMyByb3dzKQorCitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcg VkFMVUVTICgnWzI0LDI0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAx JykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sy NCwyNF0nLCBkYXRlcmFuZ2UoJzIwMjAtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzE1LDE1 XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMjQsMjRdJyk7 CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAnWzI0 LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZS T00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTUsMTVd JzsKKyAgIGlkICAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBwYXJlbnRfaWQgCist LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFsxNSwx NikgfCBbMDEtMDEtMjAxOCwwMS0wMS0yMDIwKSB8IFswLDEpCisgWzE1LDE2KSB8IFswMS0w MS0yMDIwLDAxLTAxLTIwMjEpIHwgWzI0LDI1KQorKDIgcm93cykKKwogRFJPUCBUQUJMRSB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nOwogRFJPUCBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZF9ybmc7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC93aXRo b3V0X292ZXJsYXBzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3Zlcmxh cHMuc3FsCmluZGV4IDZkOWVkODc4MWQuLjFkNzU3ZTFlYTEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3dpdGhvdXRfb3ZlcmxhcHMuc3FsCkBAIC0xMDMsNiArMTAzLDcgQEAgQ1JF QVRFIFRBQkxFIHRlbXBvcmFsX3JuZzIgKAogXGQgdGVtcG9yYWxfcm5nMgogU0VMRUNUIHBn X2dldF9jb25zdHJhaW50ZGVmKG9pZCkgRlJPTSBwZ19jb25zdHJhaW50IFdIRVJFIGNvbm5h bWUgPSAndGVtcG9yYWxfcm5nMl91cSc7CiBTRUxFQ1QgcGdfZ2V0X2luZGV4ZGVmKGNvbmlu ZGlkLCAwLCB0cnVlKSBGUk9NIHBnX2NvbnN0cmFpbnQgV0hFUkUgY29ubmFtZSA9ICd0ZW1w b3JhbF9ybmcyX3VxJzsKK0RST1AgVEFCTEUgdGVtcG9yYWxfcm5nMjsKIAogLS0gVU5JUVVF IHdpdGggdHdvIGNvbHVtbnMgcGx1cyBhIHJhbmdlOgogQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzMgKApAQCAtNjE1LDYgKzYxNiwyOCBAQCBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9ma19y bmcycm5nCiAJCUZPUkVJR04gS0VZIChwYXJlbnRfaWQsIFBFUklPRCB2YWxpZF9hdCkKIAkJ UkVGRVJFTkNFUyB0ZW1wb3JhbF9ybmcKIAkJT04gREVMRVRFIENBU0NBREUgT04gVVBEQVRF IENBU0NBREU7CitVUERBVEUgdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0 IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBTRVQgaWQgPSAnWzcsN10nIFdI RVJFIGlkID0gJ1s2LDZdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNCw0XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbNyw3 XScgV0hFUkUgaWQgPSAnWzYsNl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s0LDRdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1sxNSwxNV0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sx NiwxNl0nIFdIRVJFIGlkID0gJ1sxNSwxNV0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTAsMTBdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBDQVNDQURF CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzgsOF0nLCB0c3JhbmdlKCcy MDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1s1LDVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAx LTAxJyksICdbOCw4XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIEZPUiBQT1JUSU9O IE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBp ZCA9ICdbOCw4XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUg aWQgPSAnWzUsNV0nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0gJ1s4 LDhdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb NSw1XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE3LDE3XScsIHRz cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBv cmFsX3JuZyBWQUxVRVMgKCdbMTcsMTddJywgdHNyYW5nZSgnMjAyMC0wMS0wMScsICcyMDIx LTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJuZyBWQUxVRVMgKCdb MTEsMTFdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJyksICdbMTcsMTdd Jyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAnWzE3LDE3XScgQU5E IHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0 ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxMSwxMV0nOwogCiAtLSB0ZXN0IEZL IHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiBJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFM VUVTICgnWzksOV0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CkBA IC02MjUsNiArNjQ4LDI4IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJ Rk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VT IHRlbXBvcmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxM OworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlk ID0gJ1s5LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVSRSBp ZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcm5nIFNFVCBpZCA9ICdbMTAsMTBdJyBX SEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcg V0hFUkUgaWQgPSAnWzYsNl0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAo J1sxOCwxOF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjAtMDEtMDEnKSk7CitJTlNF UlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzE4LDE4XScsIHRzcmFuZ2UoJzIwMjAt MDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3JuZzJy bmcgVkFMVUVTICgnWzEyLDEyXScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0w MScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3JuZyBTRVQgaWQgPSAnWzE5LDE5 XScgV0hFUkUgaWQgPSAnWzE4LDE4XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6 dGltZXN0YW1wOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworCistLSB0ZXN0IEZLIHBhcmVudCBkZWxldGVzIFNFVCBOVUxMCitJ TlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgnWzExLDExXScsIHRzcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX2ZrX3Ju ZzJybmcgVkFMVUVTICgnWzcsN10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEt MDEnKSwgJ1sxMSwxMV0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElP TiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgV0hFUkUg aWQgPSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hF UkUgaWQgPSAnWzcsN10nOworREVMRVRFIEZST00gdGVtcG9yYWxfcm5nIFdIRVJFIGlkID0g J1sxMSwxMV0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s3LDddJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjAsMjBd JywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCB0c3JhbmdlKCcyMDIwLTAxLTAxJywg JzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMywxM10nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1sy MCwyMF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVSRSBpZCA9ICdbMjAsMjBd JyBBTkQgdmFsaWRfYXQgQD4gJzIwMTktMDEtMDEnOjp0aW1lc3RhbXA7CitTRUxFQ1QgKiBG Uk9NIHRlbXBvcmFsX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzEzLDEzXSc7CiAKIC0tIHRl c3QgRksgcGFyZW50IHVwZGF0ZXMgU0VUIERFRkFVTFQKIElOU0VSVCBJTlRPIHRlbXBvcmFs X3JuZyBWQUxVRVMgKCdbLTEsLTFdJywgdHNyYW5nZShudWxsLCBudWxsKSk7CkBAIC02Mzcs NiArNjgyLDU0IEBAIEFMVEVSIFRBQkxFIHRlbXBvcmFsX2ZrX3JuZzJybmcKIAkJRk9SRUlH TiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBv cmFsX3JuZwogCQlPTiBERUxFVEUgU0VUIERFRkFVTFQgT04gVVBEQVRFIFNFVCBERUZBVUxU OworVVBEQVRFIHRlbXBvcmFsX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcy MDE5LTAxLTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMywxM10nIFdIRVJFIGlk ID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJF IGlkID0gJ1s4LDhdJzsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sxMywxM10n IFdIRVJFIGlkID0gJ1sxMiwxMl0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s4LDhdJzsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxV RVMgKCdbMjIsMjJdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIwLTAxLTAxJykpOwor SU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCB0c3JhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ma19y bmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3JhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEt MDEtMDEnKSwgJ1syMiwyMl0nKTsKK1VQREFURSB0ZW1wb3JhbF9ybmcgU0VUIGlkID0gJ1sy MywyM10nIFdIRVJFIGlkID0gJ1syMiwyMl0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0w MSc6OnRpbWVzdGFtcDsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBXSEVS RSBpZCA9ICdbMTQsMTRdJzsKKworLS0gdGVzdCBGSyBwYXJlbnQgZGVsZXRlcyBTRVQgREVG QVVMVAorSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCB0c3Jh bmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9ma19ybmcycm5nIFZBTFVFUyAoJ1s5LDldJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcy MDIxLTAxLTAxJyksICdbMTQsMTRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgRk9S IFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScgVE8gJzIwMjAtMDEtMDEn IFdIRVJFIGlkID0gJ1sxNCwxNF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcy cm5nIFdIRVJFIGlkID0gJ1s5LDldJzsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3JuZyBXSEVS RSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbOSw5XSc7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9ybmcgVkFMVUVTICgn WzI0LDI0XScsIHRzcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VS VCBJTlRPIHRlbXBvcmFsX3JuZyBWQUxVRVMgKCdbMjQsMjRdJywgdHNyYW5nZSgnMjAyMC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfZmtfcm5nMnJu ZyBWQUxVRVMgKCdbMTUsMTVdJywgdHNyYW5nZSgnMjAxOC0wMS0wMScsICcyMDIxLTAxLTAx JyksICdbMjQsMjRdJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcgV0hFUkUgaWQgPSAn WzI0LDI0XScgQU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6dGltZXN0YW1wOworU0VM RUNUICogRlJPTSB0ZW1wb3JhbF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1sxNSwxNV0nOwor CistLSBGSyB3aXRoIGEgY3VzdG9tIHJhbmdlIHR5cGUKKworQ1JFQVRFIFRZUEUgbXlkYXRl cmFuZ2UgQVMgcmFuZ2Uoc3VidHlwZT1kYXRlKTsKKworQ1JFQVRFIFRBQkxFIHRlbXBvcmFs X3JuZzIgKAorCWlkIGludDRyYW5nZSwKKwl2YWxpZF9hdCBteWRhdGVyYW5nZSwKKwlDT05T VFJBSU5UIHRlbXBvcmFsX3JuZzJfcGsgUFJJTUFSWSBLRVkgKGlkLCB2YWxpZF9hdCBXSVRI T1VUIE9WRVJMQVBTKQorKTsKK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZyAo CisJaWQgaW50NHJhbmdlLAorCXZhbGlkX2F0IG15ZGF0ZXJhbmdlLAorCXBhcmVudF9pZCBp bnQ0cmFuZ2UsCisJQ09OU1RSQUlOVCB0ZW1wb3JhbF9mazJfcm5nMnJuZ19wayBQUklNQVJZ IEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpLAorCUNPTlNUUkFJTlQgdGVt cG9yYWxfZmsyX3JuZzJybmdfZmsgRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQorCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3JuZzIgKGlkLCBQRVJJT0QgdmFsaWRf YXQpIE9OIERFTEVURSBDQVNDQURFCispOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcm5nMiBW QUxVRVMgKCdbOCw4XScsIG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9mazJfcm5nMnJuZyBWQUxVRVMgKCdbNSw1XScs IG15ZGF0ZXJhbmdlKCcyMDE4LTAxLTAxJywgJzIwMjEtMDEtMDEnKSwgJ1s4LDhdJyk7CitE RUxFVEUgRlJPTSB0ZW1wb3JhbF9ybmcyIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00g JzIwMTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX2ZrMl9ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKKwor RFJPUCBUQUJMRSB0ZW1wb3JhbF9mazJfcm5nMnJuZzsKK0RST1AgVEFCTEUgdGVtcG9yYWxf cm5nMjsKK0RST1AgVFlQRSBteWRhdGVyYW5nZTsKIAogLS0gRksgYmV0d2VlbiBwYXJ0aXRp b25lZCB0YWJsZXMKIApAQCAtNjQ2LDggKzczOSw4IEBAIENSRUFURSBUQUJMRSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgKAogICBuYW1lIHRleHQsCiAJQ09OU1RSQUlOVCB0ZW1wb3Jh bF9wYXJpdGlvbmVkX3JuZ19wayBQUklNQVJZIEtFWSAoaWQsIHZhbGlkX2F0IFdJVEhPVVQg T1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7Ci1DUkVBVEUgVEFCTEUgdHAx IHBhcnRpdGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAo J1sxLDFdJywgJ1szLDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0n KTsKLUNSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBGT1IgVkFMVUVTIElOICgnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0nLCAnWzgsOF0n LCAnWzEwLDEwXScsICdbMTIsMTJdJyk7CitDUkVBVEUgVEFCTEUgdHAxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgRk9SIFZBTFVFUyBJTiAoJ1sxLDFdJywgJ1sz LDNdJywgJ1s1LDVdJywgJ1s3LDddJywgJ1s5LDldJywgJ1sxMSwxMV0nLCAnWzEzLDEzXScs ICdbMTUsMTVdJywgJ1sxNywxN10nLCAnWzE5LDE5XScsICdbMjEsMjFdJywgJ1syMywyM10n KTsKK0NSRUFURSBUQUJMRSB0cDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBGT1IgVkFMVUVTIElOICgnWzAsMF0nLCAnWzIsMl0nLCAnWzQsNF0nLCAnWzYsNl0n LCAnWzgsOF0nLCAnWzEwLDEwXScsICdbMTIsMTJdJywgJ1sxNCwxNF0nLCAnWzE2LDE2XScs ICdbMTgsMThdJywgJ1syMCwyMF0nLCAnWzIyLDIyXScsICdbMjQsMjRdJyk7CiBJTlNFUlQg SU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTCiAgICgnWzEsMV0nLCBkYXRl cmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAwMC0wMi0wMScpLCAnb25lJyksCiAgICgnWzEsMV0n LCBkYXRlcmFuZ2UoJzIwMDAtMDItMDEnLCAnMjAwMC0wMy0wMScpLCAnb25lJyksCkBAIC02 NjEsOCArNzU0LDggQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgKAogCUNPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZ19m ayBGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJFRkVSRU5D RVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIChpZCwgUEVSSU9EIHZhbGlkX2F0KQogKSBQ QVJUSVRJT04gQlkgTElTVCAoaWQpOwotQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRpdGlvbiBP RiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4gKCdbMSwx XScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFdJyk7Ci1D UkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2Zr X3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1syLDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4 LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScpOworQ1JFQVRFIFRBQkxFIHRma3AxIHBhcnRp dGlvbiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIEZPUiBWQUxVRVMgSU4g KCdbMSwxXScsICdbMywzXScsICdbNSw1XScsICdbNyw3XScsICdbOSw5XScsICdbMTEsMTFd JywgJ1sxMywxM10nLCAnWzE1LDE1XScsICdbMTcsMTddJywgJ1sxOSwxOV0nLCAnWzIxLDIx XScsICdbMjMsMjNdJyk7CitDUkVBVEUgVEFCTEUgdGZrcDIgcGFydGl0aW9uIE9GIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgRk9SIFZBTFVFUyBJTiAoJ1swLDBdJywgJ1sy LDJdJywgJ1s0LDRdJywgJ1s2LDZdJywgJ1s4LDhdJywgJ1sxMCwxMF0nLCAnWzEyLDEyXScs ICdbMTQsMTRdJywgJ1sxNiwxNl0nLCAnWzE4LDE4XScsICdbMjAsMjBdJywgJ1syMiwyMl0n LCAnWzI0LDI0XScpOwogCiAtLSBwYXJ0aXRpb25lZCBGSyBjaGlsZCBpbnNlcnRzCiAKQEAg LTc0NiwzNyArODM5LDEwNyBAQCBERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9y bmcgV0hFUkUgaWQgPSAnWzUsNV0nIEFORCB2YWxpZF9hdCA9IGRhdGVyYW5nZQogCiAtLSBw YXJ0aXRpb25lZCBGSyBwYXJlbnQgdXBkYXRlcyBDQVNDQURFCiAKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAx OC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNCw0XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0w MScsICcyMDIxLTAxLTAxJyksICdbNiw2XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0aXRp b25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlv bmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9EIHZh bGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlPTiBE RUxFVEUgQ0FTQ0FERSBPTiBVUERBVEUgQ0FTQ0FERTsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ybmcgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOS0wMS0wMScg VE8gJzIwMjAtMDEtMDEnIFNFVCBpZCA9ICdbNyw3XScgV0hFUkUgaWQgPSAnWzYsNl0nOwor U0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlk ID0gJ1s0LDRdJzsKK1VQREFURSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgU0VUIGlkID0g J1s3LDddJyBXSEVSRSBpZCA9ICdbNiw2XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzQsNF0nOworSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNSwxNV0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTUsMTVdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAx JywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9m a19ybmcycm5nIFZBTFVFUyAoJ1sxMCwxMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzE1LDE1XScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVk X3JuZyBTRVQgaWQgPSAnWzE2LDE2XScgV0hFUkUgaWQgPSAnWzE1LDE1XScgQU5EIHZhbGlk X2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTAsMTBdJzsKIAogLS0gcGFydGl0 aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgQ0FTQ0FERQogCitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzgsOF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEt MDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVk X2ZrX3JuZzJybmcgVkFMVUVTICgnWzUsNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMS0wMS0wMScpLCAnWzgsOF0nKTsKK0RFTEVURSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAxLTAxJyBUTyAn MjAyMC0wMS0wMScgV0hFUkUgaWQgPSAnWzgsOF0nOworU0VMRUNUICogRlJPTSB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFdIRVJFIGlkID0gJ1s1LDVdJzsKK0RFTEVURSBG Uk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBXSEVSRSBpZCA9ICdbOCw4XSc7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzUsNV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAo J1sxNywxN10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lO U0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTcsMTddJywg ZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0 ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRl cmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE3LDE3XScpOworREVMRVRF IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlkID0gJ1sxNywxN10nIEFO RCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxFQ1QgKiBGUk9NIHRlbXBv cmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzExLDExXSc7CisKIC0t IHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBOVUxMCiAKK0lOU0VSVCBJTlRP IHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbOSw5XScsIGRhdGVyYW5nZSgn MjAxOC0wMS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFy dGl0aW9uZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbNiw2XScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJyksICdbOSw5XScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZwogCURST1AgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nX2ZrLAogCUFERCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRp dGlvbmVkX2ZrX3JuZzJybmdfZmsKIAkJRk9SRUlHTiBLRVkgKHBhcmVudF9pZCwgUEVSSU9E IHZhbGlkX2F0KQogCQlSRUZFUkVOQ0VTIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZwogCQlP TiBERUxFVEUgU0VUIE5VTEwgT04gVVBEQVRFIFNFVCBOVUxMOworVVBEQVRFIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE5LTAx LTAxJyBUTyAnMjAyMC0wMS0wMScgU0VUIGlkID0gJ1sxMCwxMF0nIFdIRVJFIGlkID0gJ1s5 LDldJzsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBX SEVSRSBpZCA9ICdbNiw2XSc7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFNF VCBpZCA9ICdbMTAsMTBdJyBXSEVSRSBpZCA9ICdbOSw5XSc7CitTRUxFQ1QgKiBGUk9NIHRl bXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzYsNl0nOworSU5T RVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxOCwxOF0nLCBk YXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMTgsMThdJywgZGF0ZXJhbmdlKCcy MDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxMiwxMl0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE4LDE4XScpOworVVBEQVRFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAnWzE5LDE5XScgV0hFUkUgaWQgPSAnWzE4LDE4XScg QU5EIHZhbGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTIsMTJdJzsKIAog LS0gcGFydGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIE5VTEwKIAorSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxMSwxMV0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzcsN10nLCBkYXRlcmFuZ2UoJzIw MTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzExLDExXScpOworREVMRVRFIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIw MTktMDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTEsMTFdJzsKK1NFTEVD VCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdb Nyw3XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQg PSAnWzExLDExXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3Ju ZzJybmcgV0hFUkUgaWQgPSAnWzcsN10nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0 aW9uZWRfcm5nIFZBTFVFUyAoJ1syMCwyMF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAn MjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBW QUxVRVMgKCdbMjAsMjBdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEn KSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVF UyAoJ1sxMywxM10nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAn WzIwLDIwXScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJF IGlkID0gJ1syMCwyMF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzEzLDEzXSc7CisKIC0tIHBhcnRpdGlvbmVkIEZLIHBhcmVudCB1cGRhdGVzIFNFVCBE RUZBVUxUCiAKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMg KCdbMCwwXScsIGRhdGVyYW5nZShudWxsLCBudWxsKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3Jh bF9wYXJ0aXRpb25lZF9ybmcgVkFMVUVTICgnWzEyLDEyXScsIGRhdGVyYW5nZSgnMjAxOC0w MS0wMScsICcyMDIxLTAxLTAxJykpOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfZmtfcm5nMnJuZyBWQUxVRVMgKCdbOCw4XScsIGRhdGVyYW5nZSgnMjAxOC0wMS0wMScs ICcyMDIxLTAxLTAxJyksICdbMTIsMTJdJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF9ma19ybmcycm5nCi0gIEFMVEVSIENPTFVNTiBwYXJlbnRfaWQgU0VUIERFRkFV TFQgJ1stMSwtMV0nLAorICBBTFRFUiBDT0xVTU4gcGFyZW50X2lkIFNFVCBERUZBVUxUICdb MCwwXScsCiAJRFJPUCBDT05TVFJBSU5UIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmdfZmssCiAJQUREIENPTlNUUkFJTlQgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu Z19mawogCQlGT1JFSUdOIEtFWSAocGFyZW50X2lkLCBQRVJJT0QgdmFsaWRfYXQpCiAJCVJF RkVSRU5DRVMgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nCiAJCU9OIERFTEVURSBTRVQgREVG QVVMVCBPTiBVUERBVEUgU0VUIERFRkFVTFQ7CitVUERBVEUgdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTktMDEtMDEnIFRPICcy MDIwLTAxLTAxJyBTRVQgaWQgPSAnWzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitT RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQg PSAnWzgsOF0nOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBTRVQgaWQgPSAn WzEzLDEzXScgV0hFUkUgaWQgPSAnWzEyLDEyXSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFs X3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAnWzgsOF0nOworSU5TRVJUIElO VE8gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1syMiwyMl0nLCBkYXRlcmFu Z2UoJzIwMTgtMDEtMDEnLCAnMjAyMC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFs X3BhcnRpdGlvbmVkX3JuZyBWQUxVRVMgKCdbMjIsMjJdJywgZGF0ZXJhbmdlKCcyMDIwLTAx LTAxJywgJzIwMjEtMDEtMDEnKSk7CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25l ZF9ma19ybmcycm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEn LCAnMjAyMS0wMS0wMScpLCAnWzIyLDIyXScpOworVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlv bmVkX3JuZyBTRVQgaWQgPSAnWzIzLDIzXScgV0hFUkUgaWQgPSAnWzIyLDIyXScgQU5EIHZh bGlkX2F0IEA+ICcyMDE5LTAxLTAxJzo6ZGF0ZTsKK1NFTEVDVCAqIEZST00gdGVtcG9yYWxf cGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKIAogLS0gcGFy dGl0aW9uZWQgRksgcGFyZW50IGRlbGV0ZXMgU0VUIERFRkFVTFQKIAorSU5TRVJUIElOVE8g dGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFZBTFVFUyAoJ1sxNCwxNF0nLCBkYXRlcmFuZ2Uo JzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3Bh cnRpdGlvbmVkX2ZrX3JuZzJybmcgVkFMVUVTICgnWzksOV0nLCBkYXRlcmFuZ2UoJzIwMTgt MDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzE0LDE0XScpOworREVMRVRFIEZST00gdGVtcG9y YWxfcGFydGl0aW9uZWRfcm5nIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTkt MDEtMDEnIFRPICcyMDIwLTAxLTAxJyBXSEVSRSBpZCA9ICdbMTQsMTRdJzsKK1NFTEVDVCAq IEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJuZyBXSEVSRSBpZCA9ICdbOSw5 XSc7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ybmcgV0hFUkUgaWQgPSAn WzE0LDE0XSc7CitTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJy bmcgV0hFUkUgaWQgPSAnWzksOV0nOworSU5TRVJUIElOVE8gdGVtcG9yYWxfcGFydGl0aW9u ZWRfcm5nIFZBTFVFUyAoJ1syNCwyNF0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAy MC0wMS0wMScpKTsKK0lOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkX3JuZyBWQUxV RVMgKCdbMjQsMjRdJywgZGF0ZXJhbmdlKCcyMDIwLTAxLTAxJywgJzIwMjEtMDEtMDEnKSk7 CitJTlNFUlQgSU5UTyB0ZW1wb3JhbF9wYXJ0aXRpb25lZF9ma19ybmcycm5nIFZBTFVFUyAo J1sxNSwxNV0nLCBkYXRlcmFuZ2UoJzIwMTgtMDEtMDEnLCAnMjAyMS0wMS0wMScpLCAnWzI0 LDI0XScpOworREVMRVRFIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nIFdIRVJFIGlk ID0gJ1syNCwyNF0nIEFORCB2YWxpZF9hdCBAPiAnMjAxOS0wMS0wMSc6OmRhdGU7CitTRUxF Q1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkX2ZrX3JuZzJybmcgV0hFUkUgaWQgPSAn WzE1LDE1XSc7CisKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfZmtfcm5nMnJu ZzsKIERST1AgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfcm5nOwotLSAKMi4yNS4xCgo= --------------1Pz4yQrPlGKyiycfBE07F79X Content-Type: text/x-patch; charset=UTF-8; name="v14-0005-Add-PERIODs.patch" Content-Disposition: attachment; filename="v14-0005-Add-PERIODs.patch" Content-Transfer-Encoding: base64 RnJvbSA0ODk4MDUyYTIyYjE2ZTU5OTRhODdhZTA3MDJjNWQ1MDU3NjdiN2YxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWlu YXRlZGNvbXB1dGluZy5jb20+CkRhdGU6IFNhdCwgOSBKYW4gMjAyMSAyMTo1OTo0MyAtMDgw MApTdWJqZWN0OiBbUEFUQ0ggdjE0IDUvNV0gQWRkIFBFUklPRHMKCi0gQWRkZWQgcGFyc2lu 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 ZXggMTljMmUxYzgyNy4uYmE1NjlkOTc5MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTIzMCw2 ICsyMzAsMTEgQEAKICAgICAgIDxlbnRyeT5pbmZvcm1hdGlvbiBhYm91dCBwYXJ0aXRpb24g a2V5IG9mIHRhYmxlczwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAg ICA8ZW50cnk+PGxpbmsgbGlua2VuZD0iY2F0YWxvZy1wZy1wZXJpb2QiPjxzdHJ1Y3RuYW1l PnBnX3BlcmlvZDwvc3RydWN0bmFtZT48L2xpbms+PC9lbnRyeT4KKyAgICAgIDxlbnRyeT5w ZXJpb2RzPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eT48bGluayBsaW5rZW5kPSJjYXRhbG9nLXBnLXBvbGljeSI+PHN0cnVjdG5hbWU+cGdfcG9s aWN5PC9zdHJ1Y3RuYW1lPjwvbGluaz48L2VudHJ5PgogICAgICAgPGVudHJ5PnJvdy1zZWN1 cml0eSBwb2xpY2llczwvZW50cnk+CkBAIC01NzEyLDYgKzU3MTcsMTEzIEBAIFNDUkFNLVNI 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 bl9zY2hlbWEuc3FsCmluZGV4IDhmYzBmYjRiY2QuLmQ4NzczY2E0ODUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5mb3JtYXRpb25fc2NoZW1hLnNxbAorKysgYi9zcmMv YmFja2VuZC9jYXRhbG9nL2luZm9ybWF0aW9uX3NjaGVtYS5zcWwKQEAgLTEyMTEsNyArMTIx MSwyOCBAQCBHUkFOVCBTRUxFQ1QgT04gcGFyYW1ldGVycyBUTyBQVUJMSUM7CiAgKiBQRVJJ 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 Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCBiNjE4NTNmZDgyLi40 NjcyNGE4OGY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu 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 X3JlbCwgUmVsYXRpb24gcGFyZW50X3JlbCk7CkBAIC00MzUsNiArNDQyLDggQEAgc3RhdGlj IE9iamVjdEFkZHJlc3MgQVRFeGVjQWRkQ29sdW1uKExpc3QgKip3cXVldWUsIEFsdGVyZWRU YWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNv bnRleHQpOwogc3RhdGljIGJvb2wgY2hlY2tfZm9yX2NvbHVtbl9uYW1lX2NvbGxpc2lvbihS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbG5hbWUsCiAJCQkJCQkJCQkJCWJvb2wgaWZf bm90X2V4aXN0cyk7CitzdGF0aWMgYm9vbCBjaGVja19mb3JfcGVyaW9kX25hbWVfY29sbGlz aW9uKFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqcGVybmFtZSwKKwkJCQkJCQkJCQkJYm9v bCBpZl9ub3RfZXhpc3RzKTsKIHN0YXRpYyB2b2lkIGFkZF9jb2x1bW5fZGF0YXR5cGVfZGVw ZW5kZW5jeShPaWQgcmVsaWQsIGludDMyIGF0dG51bSwgT2lkIHR5cGlkKTsKIHN0YXRpYyB2 b2lkIGFkZF9jb2x1bW5fY29sbGF0aW9uX2RlcGVuZGVuY3koT2lkIHJlbGlkLCBpbnQzMiBh dHRudW0sIE9pZCBjb2xsaWQpOwogc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjRHJvcE5v dE51bGwoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLCBib29sIHJlY3Vyc2Us CkBAIC00NTQsNiArNDYzLDEyIEBAIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0NvbHVt 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 MzUwMCw2ICsxNDIzMiwxNSBAQCBBVEV4ZWNBbHRlckNvbHVtblR5cGUoQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCQkJUmVtZW1iZXJDb25zdHJhaW50Rm9yUmVi dWlsZGluZyhmb3VuZE9iamVjdC5vYmplY3RJZCwgdGFiKTsKIAkJCQlicmVhazsKIAorCQkJ Y2FzZSBPQ0xBU1NfUEVSSU9EOgorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkgZXJybXNnKCJjYW5u b3QgYWx0ZXIgdHlwZSBvZiBhIGNvbHVtbiB1c2VkIGJ5IGEgcGVyaW9kIiksCisJCQkJCQkg ZXJyZGV0YWlsKCIlcyBkZXBlbmRzIG9uIGNvbHVtbiBcIiVzXCIiLAorCQkJCQkJCQkgICBn ZXRPYmplY3REZXNjcmlwdGlvbigmZm91bmRPYmplY3QsIGZhbHNlKSwKKwkJCQkJCQkJICAg Y29sTmFtZSkpKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBPQ0xBU1NfUkVXUklURToKIAkJ CQkvKiBYWFggc29tZWRheSBzZWUgaWYgd2UgY2FuIGNvcGUgd2l0aCByZXZpc2luZyB2aWV3 cyAqLwogCQkJCWVyZXBvcnQoRVJST1IsCkBAIC0xNTU2MSw3ICsxNjMwMiw3IEBAIEFsdGVy 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 bmQvcGFyc2VyL2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggNWE0 OWJhNmZhMy4uMGViNjc1MDkyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dy 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 NSw2ICs0MDg1LDE5IEBAIFRhYmxlTGlrZU9wdGlvbjoKIAkJOwogCiAKK1RhYmxlUGVyaW9k OgorCQkJUEVSSU9EIEZPUiBuYW1lICcoJyBuYW1lICcsJyBuYW1lICcpJyBvcHRfZGVmaW5p dGlvbgorCQkJCXsKKwkJCQkJUGVyaW9kRGVmICpuID0gbWFrZU5vZGUoUGVyaW9kRGVmKTsK KwkJCQkJbi0+cGVyaW9kbmFtZSA9ICQzOworCQkJCQluLT5zdGFydGNvbG5hbWUgPSAkNTsK KwkJCQkJbi0+ZW5kY29sbmFtZSA9ICQ3OworCQkJCQluLT5vcHRpb25zID0gJDk7CisJCQkJ CW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCTsK KwogLyogQ29uc3RyYWludEVsZW0gc3BlY2lmaWVzIGNvbnN0cmFpbnQgc3ludGF4IHdoaWNo IGlzIG5vdCBlbWJlZGRlZCBpbnRvCiAgKglhIGNvbHVtbiBkZWZpbml0aW9uLiBDb2xDb25z dHJhaW50RWxlbSBzcGVjaWZpZXMgdGhlIGVtYmVkZGVkIGZvcm0uCiAgKiAtIHRob21hcyAx OTk3LTEyLTAzCkBAIC03MDk2LDYgKzcxMjksMTQgQEAgQ29tbWVudFN0bXQ6CiAJCQkJCW4t 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 eCBlMTk1NDEwYzIzLi44MmQ4NjlkYjhhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJz 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 ci5jCmluZGV4IDRkODMzODFkODQuLjcyODEzMGMxNzkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfZHVtcC9wZ19iYWNrdXBfYXJjaGl2ZXIuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdf YmFja3VwX2FyY2hpdmVyLmMKQEAgLTM1MjEsNiArMzUyMSw3IEBAIF9nZXRPYmplY3REZXNj cmlwdGlvbihQUUV4cEJ1ZmZlciBidWYsIGNvbnN0IFRvY0VudHJ5ICp0ZSkKIAkJCSBzdHJj bXAodHlwZSwgIkRBVEFCQVNFIFBST1BFUlRJRVMiKSA9PSAwIHx8CiAJCQkgc3RyY21wKHR5 cGUsICJERUZBVUxUIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiRksgQ09OU1RSQUlO VCIpID09IDAgfHwKKwkJCSBzdHJjbXAodHlwZSwgIlBFUklPRCIpID09IDAgfHwKIAkJCSBz dHJjbXAodHlwZSwgIklOREVYIikgPT0gMCB8fAogCQkJIHN0cmNtcCh0eXBlLCAiUlVMRSIp ID09IDAgfHwKIAkJCSBzdHJjbXAodHlwZSwgIlRSSUdHRVIiKSA9PSAwIHx8CmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYwppbmRleCBlZmU4ZDcyYjMyLi5lYTc0NGJjM2UzIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAg LTYzMzMsNiArNjMzMyw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRh YmxlcykKIAlpbnQJCQlpX3JlbHR5cGU7CiAJaW50CQkJaV9yZWxvd25lcjsKIAlpbnQJCQlp X3JlbGNoZWNrczsKKwlpbnQJCQlpX25wZXJpb2Q7CiAJaW50CQkJaV9yZWxoYXNpbmRleDsK IAlpbnQJCQlpX3JlbGhhc3J1bGVzOwogCWludAkJCWlfcmVscGFnZXM7CkBAIC02NDEwLDYg KzY0MTEsMTQgQEAgZ2V0VGFibGVzKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVGFibGVzKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKIAkJCQkJCQkgImMucmVsaGFzb2lkcywg Iik7CiAKKwkvKiBJbiBQRzE2IHVwd2FyZHMgd2UgaGF2ZSBQRVJJT0RzLiAqLworCWlmIChm b3V0LT5yZW1vdGVWZXJzaW9uID49IDE2MDAwMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIo cXVlcnksCisJCQkJCQkJICIoU0VMRUNUIGNvdW50KCopIEZST00gcGdfcGVyaW9kIFdIRVJF IHBlcnJlbGlkID0gYy5vaWQpIEFTIG5wZXJpb2RzLCAiKTsKKwllbHNlCisJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKHF1ZXJ5LAorCQkJCQkJCSAiMCBBUyBucGVyaW9kcywgIik7CisKIAlp ZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSA5MDMwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJT dHIocXVlcnksCiAJCQkJCQkJICJjLnJlbGlzcG9wdWxhdGVkLCAiKTsKQEAgLTY1NDcsNiAr NjU1Niw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAlp X3JlbHR5cGUgPSBQUWZudW1iZXIocmVzLCAicmVsdHlwZSIpOwogCWlfcmVsb3duZXIgPSBQ UWZudW1iZXIocmVzLCAicmVsb3duZXIiKTsKIAlpX3JlbGNoZWNrcyA9IFBRZm51bWJlcihy ZXMsICJyZWxjaGVja3MiKTsKKwlpX25wZXJpb2QgPSBQUWZudW1iZXIocmVzLCAibnBlcmlv ZHMiKTsKIAlpX3JlbGhhc2luZGV4ID0gUFFmbnVtYmVyKHJlcywgInJlbGhhc2luZGV4Iik7 CiAJaV9yZWxoYXNydWxlcyA9IFBRZm51bWJlcihyZXMsICJyZWxoYXNydWxlcyIpOwogCWlf cmVscGFnZXMgPSBQUWZudW1iZXIocmVzLCAicmVscGFnZXMiKTsKQEAgLTY2MzAsNiArNjY0 MCw3IEBAIGdldFRhYmxlcyhBcmNoaXZlICpmb3V0LCBpbnQgKm51bVRhYmxlcykKIAkJfQog CQl0YmxpbmZvW2ldLnJlbHRhYmxlc3BhY2UgPSBwZ19zdHJkdXAoUFFnZXR2YWx1ZShyZXMs IGksIGlfcmVsdGFibGVzcGFjZSkpOwogCQl0YmxpbmZvW2ldLmhhc29pZHMgPSAoc3RyY21w KFBRZ2V0dmFsdWUocmVzLCBpLCBpX3JlbGhhc29pZHMpLCAidCIpID09IDApOworCQl0Ymxp bmZvW2ldLm5wZXJpb2QgPSBhdG9pKFBRZ2V0dmFsdWUocmVzLCBpLCBpX25wZXJpb2QpKTsK IAkJdGJsaW5mb1tpXS5oYXN0cmlnZ2VycyA9IChzdHJjbXAoUFFnZXR2YWx1ZShyZXMsIGks IGlfcmVsaGFzdHJpZ2dlcnMpLCAidCIpID09IDApOwogCQl0YmxpbmZvW2ldLnJlbHBlcnNp c3RlbmNlID0gKihQUWdldHZhbHVlKHJlcywgaSwgaV9yZWxwZXJzaXN0ZW5jZSkpOwogCQl0 YmxpbmZvW2ldLnJlbGlzcG9wdWxhdGVkID0gKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwg aV9yZWxpc3BvcHVsYXRlZCksICJ0IikgPT0gMCk7CkBAIC04MzY0LDcgKzgzNzUsNyBAQCBn ZXRUcmFuc2Zvcm1zKEFyY2hpdmUgKmZvdXQsIGludCAqbnVtVHJhbnNmb3JtcykKIC8qCiAg KiBnZXRUYWJsZUF0dHJzIC0KICAqCSAgZm9yIGVhY2ggaW50ZXJlc3RpbmcgdGFibGUsIHJl YWQgaW5mbyBhYm91dCBpdHMgYXR0cmlidXRlcwotICoJICAobmFtZXMsIHR5cGVzLCBkZWZh dWx0IHZhbHVlcywgQ0hFQ0sgY29uc3RyYWludHMsIGV0YykKKyAqCSAgKG5hbWVzLCB0eXBl cywgZGVmYXVsdCB2YWx1ZXMsIENIRUNLIGNvbnN0cmFpbnRzLCBQRVJJT0RzLCBldGMpCiAg KgogICoJbW9kaWZpZXMgdGJsaW5mbwogICovCkBAIC04NDE3LDYgKzg0MjgsOCBAQCBnZXRU YWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAqdGJsaW5mbywgaW50IG51bVRh YmxlcykKIAlmb3IgKGludCBpID0gMDsgaSA8IG51bVRhYmxlczsgaSsrKQogCXsKIAkJVGFi bGVJbmZvICAqdGJpbmZvID0gJnRibGluZm9baV07CisJCWludAkJCW5kdW1wYWJsZWNoZWNr czsJLyogbnVtYmVyIG9mIENIRUNLIGNvbnN0cmFpbnRzIHRoYXQgZG8KKwkJCQkJCQkJCQkg ICBub3QgYmVsb25nIHRvIGEgcGVyaW9kICovCiAKIAkJLyogRG9uJ3QgYm90aGVyIHRvIGNv bGxlY3QgaW5mbyBmb3Igc2VxdWVuY2VzICovCiAJCWlmICh0YmluZm8tPnJlbGtpbmQgPT0g UkVMS0lORF9TRVFVRU5DRSkKQEAgLTg0MzEsNyArODQ0NCw4IEBAIGdldFRhYmxlQXR0cnMo QXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJ YXBwZW5kUFFFeHBCdWZmZXJDaGFyKHRibG9pZHMsICcsJyk7CiAJCWFwcGVuZFBRRXhwQnVm ZmVyKHRibG9pZHMsICIldSIsIHRiaW5mby0+ZG9iai5jYXRJZC5vaWQpOwogCi0JCWlmICh0 YmluZm8tPm5jaGVjayA+IDApCisJCW5kdW1wYWJsZWNoZWNrcyA9IHRiaW5mby0+bmNoZWNr IC0gdGJpbmZvLT5ucGVyaW9kOworCQlpZiAobmR1bXBhYmxlY2hlY2tzID4gMCkKIAkJewog CQkJLyogQWxzbyBtYWtlIGEgbGlzdCBvZiB0aGUgb25lcyB3aXRoIGNoZWNrIGNvbnN0cmFp bnRzICovCiAJCQlpZiAoY2hlY2tvaWRzLT5sZW4gPiAxKSAvKiBkbyB3ZSBoYXZlIG1vcmUg dGhhbiB0aGUgJ3snPyAqLwpAQCAtODk2NywxNSArODk4MSwzNiBAQCBnZXRUYWJsZUF0dHJz 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 dGVTcWxRdWVyeShmb3V0LCBxLT5kYXRhLCBQR1JFU19UVVBMRVNfT0spOwogCkBAIC04OTk3 LDYgKzkwMzIsNyBAQCBnZXRUYWJsZUF0dHJzKEFyY2hpdmUgKmZvdXQsIFRhYmxlSW5mbyAq dGJsaW5mbywgaW50IG51bVRhYmxlcykKIAkJCU9pZAkJCWNvbnJlbGlkID0gYXRvb2lkKFBR Z2V0dmFsdWUocmVzLCBqLCBpX2NvbnJlbGlkKSk7CiAJCQlUYWJsZUluZm8gICp0YmluZm8g PSBOVUxMOwogCQkJaW50CQkJbnVtY29uczsKKwkJCWludAkJCW5kdW1wYWJsZWNoZWNrczsK IAogCQkJLyogQ291bnQgcm93cyBmb3IgdGhpcyB0YWJsZSAqLwogCQkJZm9yIChudW1jb25z ID0gMTsgbnVtY29ucyA8IG51bUNvbnN0cnMgLSBqOyBudW1jb25zKyspCkBAIC05MDE2LDEy ICs5MDUyLDEzIEBAIGdldFRhYmxlQXR0cnMoQXJjaGl2ZSAqZm91dCwgVGFibGVJbmZvICp0 YmxpbmZvLCBpbnQgbnVtVGFibGVzKQogCQkJaWYgKGN1cnRibGluZHggPj0gbnVtVGFibGVz KQogCQkJCXBnX2ZhdGFsKCJ1bnJlY29nbml6ZWQgdGFibGUgT0lEICV1IiwgY29ucmVsaWQp OwogCi0JCQlpZiAobnVtY29ucyAhPSB0YmluZm8tPm5jaGVjaykKKwkJCW5kdW1wYWJsZWNo ZWNrcyA9IHRiaW5mby0+bmNoZWNrIC0gdGJpbmZvLT5ucGVyaW9kOworCQkJaWYgKG51bWNv bnMgIT0gbmR1bXBhYmxlY2hlY2tzKQogCQkJewogCQkJCXBnX2xvZ19lcnJvcihuZ2V0dGV4 dCgiZXhwZWN0ZWQgJWQgY2hlY2sgY29uc3RyYWludCBvbiB0YWJsZSBcIiVzXCIgYnV0IGZv dW5kICVkIiwKIAkJCQkJCQkJCSAgImV4cGVjdGVkICVkIGNoZWNrIGNvbnN0cmFpbnRzIG9u IHRhYmxlIFwiJXNcIiBidXQgZm91bmQgJWQiLAotCQkJCQkJCQkJICB0YmluZm8tPm5jaGVj ayksCi0JCQkJCQkJIHRiaW5mby0+bmNoZWNrLCB0YmluZm8tPmRvYmoubmFtZSwgbnVtY29u cyk7CisJCQkJCQkJCQkgIG5kdW1wYWJsZWNoZWNrcyksCisJCQkJCQkJIG5kdW1wYWJsZWNo ZWNrcywgdGJpbmZvLT5kb2JqLm5hbWUsIG51bWNvbnMpOwogCQkJCXBnX2xvZ19lcnJvcl9o aW50KCJUaGUgc3lzdGVtIGNhdGFsb2dzIG1pZ2h0IGJlIGNvcnJ1cHRlZC4iKTsKIAkJCQll eGl0X25pY2VseSgxKTsKIAkJCX0KQEAgLTkwODAsNiArOTExNyw3OSBAQCBnZXRUYWJsZUF0 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 YmxvaWRzKTsKIAlkZXN0cm95UFFFeHBCdWZmZXIoY2hlY2tvaWRzKTsKQEAgLTEwMzUwLDYg KzEwNDYwLDggQEAgZHVtcER1bXBhYmxlT2JqZWN0KEFyY2hpdmUgKmZvdXQsIER1bXBhYmxl T2JqZWN0ICpkb2JqKQogCQljYXNlIERPX0ZLX0NPTlNUUkFJTlQ6CiAJCQlkdW1wQ29uc3Ry YWludChmb3V0LCAoY29uc3QgQ29uc3RyYWludEluZm8gKikgZG9iaik7CiAJCQlicmVhazsK KwkJY2FzZSBET19QRVJJT0Q6CisJCQlicmVhazsKIAkJY2FzZSBET19QUk9DTEFORzoKIAkJ CWR1bXBQcm9jTGFuZyhmb3V0LCAoY29uc3QgUHJvY0xhbmdJbmZvICopIGRvYmopOwogCQkJ YnJlYWs7CkBAIC0xNTg4NSw2ICsxNTk5NywzMiBAQCBkdW1wVGFibGVTY2hlbWEoQXJjaGl2 ZSAqZm91dCwgY29uc3QgVGFibGVJbmZvICp0YmluZm8pCiAJCQkJfQogCQkJfQogCisJCQkv KgorCQkJICogQWRkIG5vbi1pbmhlcml0ZWQgUEVSSU9EIGRlZmluaXRpb25zLCBpZiBhbnku CisJCQkgKi8KKwkJCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5wZXJpb2Q7IGorKykKKwkJ CXsKKwkJCQlQZXJpb2RJbmZvICpwZXJpb2QgPSAmKHRiaW5mby0+cGVyaW9kc1tqXSk7CisK KwkJCQljaGFyCSAgICpuYW1lID0gcGdfc3RyZHVwKGZtdElkKHBlcmlvZC0+ZG9iai5uYW1l KSk7CisJCQkJY2hhcgkgICAqc3RhcnQgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9kLT5wZXJz dGFydCkpOworCQkJCWNoYXIJICAgKmVuZCA9IHBnX3N0cmR1cChmbXRJZChwZXJpb2QtPnBl cmVuZCkpOworCQkJCWNoYXIJICAgKnJuZ3R5cGUgPSBwZ19zdHJkdXAoZm10SWQocGVyaW9k LT5ybmd0eXBlKSk7CisJCQkJY2hhcgkgICAqY29ubmFtZSA9IHBnX3N0cmR1cChmbXRJZChw ZXJpb2QtPmNvbm5hbWUpKTsKKworCQkJCWlmIChhY3R1YWxfYXR0cyA9PSAwKQorCQkJCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxLCAiIChcbiAgICAiKTsKKwkJCQllbHNlCisJCQkJCWFw cGVuZFBRRXhwQnVmZmVyU3RyKHEsICIsXG4gICAgIik7CisKKwkJCQlhcHBlbmRQUUV4cEJ1 ZmZlcihxLCAiUEVSSU9EIEZPUiAlcyAoJXMsICVzKSAiCisJCQkJCQkiV0lUSCAocmFuZ2V0 eXBlID0gJXMsIGNoZWNrX2NvbnN0cmFpbnRfbmFtZSA9ICVzKSIsCisJCQkJCQkJCSAgbmFt ZSwgc3RhcnQsIGVuZCwKKwkJCQkJCQkJICBybmd0eXBlLCBjb25uYW1lKTsKKworCQkJCWFj dHVhbF9hdHRzKys7CisJCQl9CisKIAkJCS8qCiAJCQkgKiBBZGQgbm9uLWluaGVyaXRlZCBD SEVDSyBjb25zdHJhaW50cywgaWYgYW55LgogCQkJICoKQEAgLTE1ODkzLDcgKzE2MDMxLDcg QEAgZHVtcFRhYmxlU2NoZW1hKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJp bmZvKQogCQkJICogUEFSVElUSU9OIHRoYXQgd2UnbGwgZW1pdCBsYXRlciBleHBlY3RzIHRo ZSBjb25zdHJhaW50IHRvIGJlCiAJCQkgKiB0aGVyZS4gIChObyBuZWVkIHRvIGZpeCBjb25p c2xvY2FsOiBBVFRBQ0ggUEFSVElUSU9OIGRvZXMgdGhhdCkKIAkJCSAqLwotCQkJZm9yIChq ID0gMDsgaiA8IHRiaW5mby0+bmNoZWNrOyBqKyspCisJCQlmb3IgKGogPSAwOyBqIDwgdGJp bmZvLT5uY2hlY2sgLSB0YmluZm8tPm5wZXJpb2Q7IGorKykKIAkJCXsKIAkJCQlDb25zdHJh aW50SW5mbyAqY29uc3RyID0gJih0YmluZm8tPmNoZWNrZXhwcnNbal0pOwogCkBAIC0xNjEx MSw3ICsxNjI0OSw3IEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZlICpmb3V0LCBjb25zdCBU YWJsZUluZm8gKnRiaW5mbykKIAkJCSAqIEZvciBwYXJ0aXRpb25zLCB0aGV5IHdlcmUgYWxy ZWFkeSBkdW1wZWQsIGFuZCBjb25pc2xvY2FsCiAJCQkgKiBkb2Vzbid0IG5lZWQgZml4aW5n LgogCQkJICovCi0JCQlmb3IgKGsgPSAwOyBrIDwgdGJpbmZvLT5uY2hlY2s7IGsrKykKKwkJ CWZvciAoayA9IDA7IGsgPCB0YmluZm8tPm5jaGVjayAtIHRiaW5mby0+bnBlcmlvZDsgaysr KQogCQkJewogCQkJCUNvbnN0cmFpbnRJbmZvICpjb25zdHIgPSAmKHRiaW5mby0+Y2hlY2tl eHByc1trXSk7CiAKQEAgLTE2NDEzLDcgKzE2NTUxLDcgQEAgZHVtcFRhYmxlU2NoZW1hKEFy Y2hpdmUgKmZvdXQsIGNvbnN0IFRhYmxlSW5mbyAqdGJpbmZvKQogCQlkdW1wVGFibGVTZWNM YWJlbChmb3V0LCB0YmluZm8sIHJlbHR5cGVuYW1lKTsKIAogCS8qIER1bXAgY29tbWVudHMg b24gaW5saW5lZCB0YWJsZSBjb25zdHJhaW50cyAqLwotCWZvciAoaiA9IDA7IGogPCB0Ymlu Zm8tPm5jaGVjazsgaisrKQorCWZvciAoaiA9IDA7IGogPCB0YmluZm8tPm5jaGVjayAtIHRi aW5mby0+bnBlcmlvZDsgaisrKQogCXsKIAkJQ29uc3RyYWludEluZm8gKmNvbnN0ciA9ICYo dGJpbmZvLT5jaGVja2V4cHJzW2pdKTsKIApAQCAtMTg1MDksNiArMTg2NDcsNyBAQCBhZGRC 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= --------------1Pz4yQrPlGKyiycfBE07F79X--