Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mDQkE-0001T5-K3 for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Aug 2021 12:20:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mDQkD-0005AB-Ga for pgsql-hackers@arkaria.postgresql.org; Tue, 10 Aug 2021 12:20:33 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mDQkC-0005A1-9K for pgsql-hackers@lists.postgresql.org; Tue, 10 Aug 2021 12:20:33 +0000 Received: from mail-oo1-xc33.google.com ([2607:f8b0:4864:20::c33]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1mDQk6-0002Jm-Rn for pgsql-hackers@postgresql.org; Tue, 10 Aug 2021 12:20:31 +0000 Received: by mail-oo1-xc33.google.com with SMTP id w2-20020a4a9e420000b02902859adadf0fso4410915ook.1 for ; Tue, 10 Aug 2021 05:20:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=KIWC7NytUN3PH2lAse05mEslOKoaqHF0cCoEvGd66fo=; b=g/mQhvSaKgEpchULPa3mr9HMoySlWapQLFU1iV98GfEpn0LfJUyOHJ4NKByaOmh4ee nDjsEN+l3YJj+zC/aTLG/9fIwCqfrk3fIX5uQwavC57H+kScVUo8F5rl6y+7cSHDe76x YWf8Fe+U8KnZGoiYyhcGcki3lR5lFS8wPcmCRBeXasST6i4eYkg5Uk3ErpFkEXtGTOBL BEoaiBqb8zVFxFM2KL9yYHmuFyK5ynfM51Hh7WCubR6JdKvY4Ge6+hmoIuhlQZGYwZ9v dduUqzAadIA15GDyUaAW1HqMG3LFHjOD+6AUm8ag/8b+LbL5HocyFNxkGfwtI294mo0H w6cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=KIWC7NytUN3PH2lAse05mEslOKoaqHF0cCoEvGd66fo=; b=tR8Oje8rANZcjGoeRhBaj6ZxWZEyb6OCkBVANoCisPN2kIltKg/IKP4HH4dM3/2dEG llCPsml8VP8SrRa4Vb/6Ol4nsS+3nu2pfsTT2zwP2SMnHXsecErTqlb9IXWfoe6pNBjw Gx10koraxKZhkJiBUR43KiJHMuzNV3l45M7x+T1bW58X1eOEvVAFodqRq90mjcIylhsw lskyDXrhFvCSev05hIHStU9tOh9TTTvycdXS9rzoE4pGnvhfm5kk8WA/qAj3yYSdlmS2 MnarWqFjkXobXQm4U+WcnK4D9LAjRBcNuzQsp8bWquVhpsvHirW3+weyrlLeIt59GAEM WpHg== X-Gm-Message-State: AOAM531ilwDIodsvl0/Pf7fJCAPNGlmKca5e12wQIl5MOJsDEzaKifOS q4Tsi3iLXiYDXJ2yYe8cdN/o72XMc9FYpaJ0TCcExIJWed/6UhCE+F98Cn0kgJTE/GSb5y02faE 2F+eIBNEWr7nHJl4gHGJZoD1IQ3EKw8wiMX4gTf9/2k6U+a9FH+f+Lro1cKJGizH3OkMnzL03i4 0IWPY2e+fA2+WduVku1yomArWeRhQSQioZ1i/CUzjTsLBhDkNC1+Mz X-Google-Smtp-Source: ABdhPJyC4rJG7BokYsUvdGKzPaFdsliqncW8e3bhqKCQVgXG/A8eiJ0EnwpW/615ZYCIsL9S/urpA7jfbi2fcWtUf7o= X-Received: by 2002:a4a:d1d1:: with SMTP id a17mr18072344oos.9.1628598025991; Tue, 10 Aug 2021 05:20:25 -0700 (PDT) MIME-Version: 1.0 References: <7990518c-3dd3-4f30-c5e1-e094f6126e9a@postgresfriends.org> <358FBCC9-F788-4ECE-8104-6825F65D1C56@hotmail.com> In-Reply-To: From: Simon Riggs Date: Tue, 10 Aug 2021 13:20:14 +0100 Message-ID: Subject: Re: WIP: System Versioned Temporal Table To: vignesh C Cc: Ibrar Ahmed , Surafel Temesgen , Vik Fearing , =?UTF-8?Q?R=C3=A9mi_Lapeyre?= , Ryan Lambert , Masahiko Sawada , Michael Paquier , Eli Marmor , David Steele , PostgreSQL-development , Georgios , Li Japin Content-Type: multipart/mixed; boundary="000000000000d27e5005c9338660" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000d27e5005c9338660 Content-Type: text/plain; charset="UTF-8" On Wed, 14 Jul 2021 at 12:48, vignesh C wrote: > The patch does not apply on Head anymore, could you rebase and post a > patch. I'm changing the status to "Waiting for Author". OK, so I've rebased the patch against current master to take it to v15. I've then worked on the patch some myself to make v16 (attached), adding these things: * Add code, docs and test to remove the potential anomaly where endtime < starttime, using the sqlstate 2201H as pointed out by Vik * Add code and tests to handle multiple changes in a transaction correctly, according to SQL Std * Add code and tests to make Foreign Keys behave correctly, according to SQL Std * Fixed nascent bug in relcache setup code * Various small fixes from Japin's review - thanks! I've used starttime and endtime as default column names * Additional tests and docs to show that the functionality works with or without PKs on the table I am now satisfied that the patch does not have any implementation anomalies in behavioral design, but it is still a long way short in code architecture. There are various aspects still needing work. This is not yet ready for Commit, but it is appropriate now to ask for initial design guidance on architecture and code placement by a Committer, so I am setting this to Ready For Committer, in the hope that we get the review in SeptCF and a later version can be submitted for later commit in JanCF. With the right input, this patch is about a person-month away from being ready, assuming we don't hit any blocking issues. Major Known Issues * SQLStd says that it should not be possible to update historical rows, but those tests show we fail to prevent that and there is code marked NOT_USED in those areas * The code is structured poorly around parse-analyze/rewriter/optimizer/executor and that needs positive design recommendations, rather than critical review * Joins currently fail because of the botched way WHERE clauses are added, resulting in duplicate names * Views probably don't work, but there are no tests * CREATE TABLE (LIKE foo) doesn't correctly copy across all features - test for that added, with test failure accepted for now * ALTER TABLE is still incomplete and also broken; I suggest we remove that for the first version of the patch to reduce patch size for an initial commit. Minor Known Issues * Logical replication needs some minor work, no tests yet * pg_dump support looks like it exists and might work easily, but there are no tests yet * Correlation names don't work in FROM clause - shift/reduce errors from double use of AS * Add test and code to prevent triggers referencing period cols in the WHEN clause * No tests yet to prove you can't set various parameters/settings on the period time start/end cols * Code needs some cleanup in a few places * Not really sure what value is added by lock-update-delete-system-versioned.spec * IMHO we should make the PK definition use "endtime DESC", so that the current version is always the first row found in the PK for any key, since historical indexes will grow bigger over time There are no expected issues with integration with MERGE, since SQLStd explains how to handle that. Other reviews are welcome. -- Simon Riggs http://www.EnterpriseDB.com/ --000000000000d27e5005c9338660 Content-Type: application/octet-stream; name="system-versioning-temporal-table_v16.patch" Content-Disposition: attachment; filename="system-versioning-temporal-table_v16.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ks614t5r0 ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9kZGwuc2dtbCBiL2RvYy9zcmMvc2dtbC9kZGwuc2dt bAppbmRleCBlMGZmYjAyMGJmLi45ZjU1N2E5MmVmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv ZGRsLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2RkbC5zZ21sCkBAIC00OTQ0LDYgKzQ5NDQsMTEx IEBAIEVYUExBSU4gU0VMRUNUIGNvdW50KCopIEZST00gbWVhc3VyZW1lbnQgV0hFUkUgbG9nZGF0 ZSAmZ3Q7PSBEQVRFICcyMDA4LTAxLTAxJzsKICAgIDwvcGFyYT4KICA8L3NlY3QxPgogCisgPHNl Y3QxIGlkPSJkZGwtdGVtcG9yYWwiPgorICA8dGl0bGU+VGVtcG9yYWwgRGF0YTwvdGl0bGU+CisK KyAgIDxpbmRleHRlcm0+CisgICAgPHByaW1hcnk+dGVtcG9yYWwgZGF0YTwvcHJpbWFyeT4KKyAg IDwvaW5kZXh0ZXJtPgorICAgPGluZGV4dGVybT4KKyAgICA8cHJpbWFyeT5zeXN0ZW0gdmVyc2lv bmluZzwvcHJpbWFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorICAgPGluZGV4dGVybT4KKyAgICA8cHJp bWFyeT5TWVNURU1fVElNRTwvcHJpbWFyeT4KKyAgIDwvaW5kZXh0ZXJtPgorCisgICA8cGFyYT4K KyAgICA8cHJvZHVjdG5hbWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IGltcGxlbWVudHMgYSB0 YWJsZSBvcHRpb24KKyAgICBmb3Igc3lzdGVtIHZlcnNpb25pbmcgdGhhdCByZWNvcmRzIGVhY2gg Y2hhbmdlIHBlcm1hbmVudGx5LAorICAgIGFsbG93aW5nIGFjY2VzcyB0byB0aGUgZnVsbCBoaXN0 b3J5IG9mIGRhdGEgY2hhbmdlcy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgU3lzdGVt IHZlcnNpb25pbmcgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSBkZWZpbmVkIGVhc2lseSBmb3IgYSB0 YWJsZToKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBUQUJMRSBwcm9kdWN0cyAoCisgICAgcG5v IGludGVnZXIsCisgICAgbmFtZSB0ZXh0LAorICAgIHByaWNlIG51bWVyaWMKKykgV0lUSCBTWVNU RU0gVkVSU0lPTklORzsKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgV2hlbiBzeXN0ZW0gdmVyc2lv bmluZyBpcyBzcGVjaWZpZWQgdHdvIGNvbHVtbnMgYXJlIGFkZGVkIHdoaWNoCisgICAgcmVjb3Jk IHRoZSBzdGFydCB0aW1lc3RhbXAgYW5kIGVuZCB0aW1lc3RhbXAgb2YgZWFjaCByb3cgdmVyc2lv bi4KKyAgICBUaGUgZGF0YSB0eXBlIG9mIHRoZXNlIGNvbHVtbnMgd2lsbCBiZSBUSU1FU1RBTVAg V0lUSCBUSU1FIFpPTkUuCisgICAgQnkgZGVmYXVsdCwgdGhlIGNvbHVtbiBuYW1lcyB3aWxsIGJl IDxsaXRlcmFsPnN0YXJ0dGltZTwvbGl0ZXJhbD4KKyAgICBhbmQgPGxpdGVyYWw+ZW5kdGltZTwv bGl0ZXJhbD4sIHRob3VnaCB5b3UgY2FuIHNwZWNpZnkgZGlmZmVyZW50CisgICAgbmFtZXMgaWYg eW91IGNob29zZS4gVGhlIDxsaXRlcmFsPnN0YXJ0dGltZTwvbGl0ZXJhbD4gY29sdW1uCisgICAg d2lsbCBiZSBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBQcmltYXJ5IEtleSBvZiB0aGUgdGFi bGUuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICA8bGl0ZXJhbD5zdGFydHRpbWU8L2xpdGVy YWw+IGlzIGdlbmVyYXRlZCBhbHdheXMgd2hlbiBhIG5ldyByb3cKKyAgICB2ZXJzaW9uIGlzIGFk ZGVkIGJ5IElOU0VSVCBvciBVUERBVEUsIHdpdGggPGxpdGVyYWw+ZW5kdGltZTwvbGl0ZXJhbD4K KyAgICBzZXQgYXQgPGxpdGVyYWw+SW5maW5pdHk8L2xpdGVyYWw+LgorICAgIFN5c3RlbSB2ZXJz aW9uaW5nIGltcGxlbWVudHMgYW4gVVBEQVRFIGFuZCBERUxFVEUgYXMgbm9ybWFsLAorICAgIHBs dXMgYW4gYWRkaXRpb25hbCByb3cgaW5zZXJ0ZWQgdG8gcmVjb3JkIHRoZSBub3ctb2xkIHZlcnNp b24KKyAgICBvZiB0aGUgcm93LCB3aXRoIHRoZSA8bGl0ZXJhbD5lbmR0aW1lPC9saXRlcmFsPiBz ZXQsIGJ1dCBvbmx5CisgICAgZm9yIHRoZSBmaXJzdCBjaGFuZ2UgaW4gYW55IHRyYW5zYWN0aW9u LiBNdWx0aXBsZSB1cGRhdGVzIG9yCisgICAgaW5zZXJ0LWRlbGV0ZXMgZG9uJ3QgcmVjb3JkIGhp c3RvcnkuCisgICAgVGhpcyBzZXF1ZW5jZSBvZiBjb21tYW5kcyBwcm9kdWNlcyB0aGUgZnVsbCBo aXN0b3J5IHNob3duIGluCisgICAgdGhlIHJlc3VsdGluZyBxdWVyeToKKzxwcm9ncmFtbGlzdGlu Zz4KK0lOU0VSVCBJTlRPIHByb2R1Y3RzIFZBTFVFUyAoMTAwLCAnV2FzaCBNYWNoaW5lJywgMzAw LjApOworSU5TRVJUIElOVE8gcHJvZHVjdHMgVkFMVUVTICgyMDAsICdFeHQgV2FycmFudHknLCA1 MC4wKTsKK0lOU0VSVCBJTlRPIHByb2R1Y3RzIFZBTFVFUyAoMzAwLCAnTGFwdG9wJywgMjUwLjAp OworVVBEQVRFIHByb2R1Y3RzIFNFVCBwcmljZSA9IDc1LjAgV0hFUkUgcG5vID0gMjAwOworVVBE QVRFIHByb2R1Y3RzIFNFVCBwcmljZSA9IDM1MC4wIFdIRVJFIHBubyA9IDMwMDsKK1VQREFURSBw cm9kdWN0cyBTRVQgcG5vID0gNDAwIFdIRVJFIHBubyA9IDEwMDsKK0RFTEVURSBGUk9NIHByb2R1 Y3RzIFdIRVJFIHBubyA9IDMwMDsKK0lOU0VSVCBJTlRPIHByb2R1Y3RzIFZBTFVFUyAoNTAwLCAn U3BhcmUgUGFydHMnLCAyNS4wKTsKKworU0VMRUNUICogRlJPTSBwcm9kdWN0cyBGT1Igc3lzdGVt X3RpbWUgRlJPTSAnLWluZmluaXR5JyBUTyAnaW5maW5pdHknIE9SREVSIEJZIHByb2R1Y3Rfbm8s IHN0YXJ0X3RpbWVzdGFtcDsKKyBwbm8gfCAgICAgbmFtZSAgICAgfCBwcmljZSB8ICAgICAgICAg ICAgIHN0YXJ0dGltZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgIGVuZHRpbWUKKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMTAwIHwgV2FzaCBN YWNoaW5lIHwgMzAwLjAgfCBNb24gSmFuIDExIDAzOjQ3OjM2LjAyMDM2MSAyMDIxIFBTVCB8IE1v biBKYW4gMTEgMDM6NDc6MzYuMDI3MDI5IDIwMjEgUFNUCisgMjAwIHwgRXh0IFdhcnJhbnR5IHwg IDUwLjAgfCBNb24gSmFuIDExIDAzOjQ3OjM2LjAyMjg0NyAyMDIxIFBTVCB8IE1vbiBKYW4gMTEg MDM6NDc6MzYuMDI2NDExIDIwMjEgUFNUCisgMjAwIHwgRXh0IFdhcnJhbnR5IHwgIDc1LjAgfCBN b24gSmFuIDExIDAzOjQ3OjM2LjAyNjQxMSAyMDIxIFBTVCB8IGluZmluaXR5CisgMzAwIHwgTGFw dG9wICAgICAgIHwgMjUwLjAgfCBNb24gSmFuIDExIDAzOjQ3OjM2LjAyMzMxNiAyMDIxIFBTVCB8 IE1vbiBKYW4gMTEgMDM6NDc6MzYuMDI2Nzc5IDIwMjEgUFNUCisgMzAwIHwgTGFwdG9wICAgICAg IHwgMzUwLjAgfCBNb24gSmFuIDExIDAzOjQ3OjM2LjAyNjc3OSAyMDIxIFBTVCB8IE1vbiBKYW4g MTEgMDM6NDc6MzYuMDI5MDg2IDIwMjEgUFNUCisgNDAwIHwgV2FzaCBNYWNoaW5lIHwgMzAwLjAg fCBNb24gSmFuIDExIDAzOjQ3OjM2LjAyNzAyOSAyMDIxIFBTVCB8IGluZmluaXR5CisgNTAwIHwg U3BhcmUgUGFydHMgIHwgIDI1LjAgfCBNb24gSmFuIDExIDAzOjQ3OjM2LjAzMjA3NyAyMDIxIFBT VCB8IGluZmluaXR5CisoNyByb3dzKQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICBXaXRoIHN5c3Rl bSB2ZXJzaW9uaW5nLCBVUERBVEUgYW5kIERFTEVURSBpbmNyZWFzZSB0aGUgbnVtYmVyIG9mCisg ICAgdmlzaWJsZSByb3dzIGluIHRoZSB0YWJsZS4gU3lzdGVtIHZlcnNpb25pbmcgd29ya3MgYWxv bmdzaWRlIE1WQ0MsCisgICAgc28gaW4gYWRkaXRpb24sIFVQREFURXMsIERFTEVURXMgYW5kIGFi b3J0ZWQgdHJhbnNhY3Rpb25zIHdpbGwgc3RpbGwKKyAgICBjYXVzZSBibG9hdCB0aGF0IG5lZWRz IHRvIGJlIHJlbW92ZWQgYnkgVkFDVVVNLgorICAgPC9wYXJhPgorICAgPHBhcmE+CisgICAgVGVt cG9yYWwgcXVlcmllcyBhcmUgZGlzY3Vzc2VkIGluIDx4cmVmIGxpbmtlbmQ9InRlbXBvcmFsLXF1 ZXJpZXMiLz4uCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBBIFByaW1hcnkgS2V5IGNvbnN0 cmFpbnQgaXMgbm90IHJlcXVpcmVkLCBidXQgaWYgb25lIGV4aXN0cyB0aGVuCisgICAgdGhlIHN5 c3RlbSB2ZXJzaW9uaW5nIHBlcmlvZCBlbmQgY29sdW1uIHdpbGwgYmUgYWRkZWQgdG8gdGhlCisg ICAgUHJpbWFyeSBLZXkgb2YgdGhlIHRhYmxlIHRvIGVuc3VyZSBVUERBVEVzIGRvIG5vdCBjYXVz ZSB1bmlxdWVuZXNzCisgICAgdmlvbGF0aW9ucy4gIEZvcmVpZ24gS2V5cyByZWZlcmVuY2luZyBh IHN5c3RlbSB2ZXJzaW9uZWQgdGFibGUgbXVzdAorICAgIG1hdGNoIGFnYWluc3QgYSBjdXJyZW50 IHJvdywgaGVuY2UgRktzIG11c3QgbWF0Y2ggYWdhaW5zdCBhbGwgY29sdW1ucworICAgIG9mIHRo ZSBQSyBleGNlcHQgdGhlIHBlcmlvZCBlbmQgY29sdW1ucy4gRksgbG9va3VwcyB3aWxsIGZpbHRl ciBvdXQKKyAgICBoaXN0b3JpY2FsIHJvd3MuCisgICA8L3BhcmE+CisgICA8cGFyYT4KKyAgICBU aGUgdXNlciBtYXkgbmV2ZXIgc2V0IHRoZSBzeXN0ZW0gdGltZSBjb2x1bW4gdmFsdWVzIGV4cGxp Y2l0bHkKKyAgICBvbiBJTlNFUlQgZm9yIGdlbmVyYXRlZCBjb2x1bW5zLgorICAgPC9wYXJhPgor ICAgPHBhcmE+CisgICAgU0VMRUNUICogY3VycmVudGx5IHJldHVybnMgdGhlIHBlcmlvZCBzdGFy dCBhbmQgZW5kIGNvbHVtbnMsIGV2ZW4KKyAgICB3aGVuIGFkZGVkIGltcGxpY2l0bHkuIAorICAg PC9wYXJhPgorICAgPHBhcmE+CisgICAgVGhlIFNRTCBTdGFuZGFyZCBkZWZpbmVzIHRoYXQgdGhl IHRpbWVzdGFtcHMgdXNlZCBzaG91bGQgYmUgdGhlCisgICAgQ1VSUkVOVF9USU1FU1RBTVAgdmFs dWUgZGVmaW5lZCBhdCBzdGF0ZW1lbnQgc3RhcnQuIFRoaXMgd2lsbAorICAgIGNhdXNlIGFuIEVS Uk9SIHdpdGggU1FMU3RhdGUgMjIwMUgsIHJhdGhlciB0aGFuIGFsbG93IGEgcGVyaW9kIGVuZAor ICAgIHRvIGJlIHNldCB0byBhIHZhbHVlIGVhcmxpZXIgdGhhbiB0aGUgcGVyaW9kIHN0YXJ0IHRp bWUuIFRoaXMKKyAgICBzaXR1YXRpb24gY291bGQgYXJpc2Ugd2hlbiBhbiBVUERBVEUgYXR0ZW1w dHMgdG8gdXBkYXRlIGEgdHVwbGUKKyAgICBtb2RpZmllZCBieSBhIHRyYW5zYWN0aW9uIHRoYXQg c3RhcnRlZCBlYXJsaWVyIHRoYW4gdGhlIHVwZGF0aW5nCisgICAgdHJhbnNhY3Rpb24uCisgICA8 L3BhcmE+CisgPC9zZWN0MT4KKwogIDxzZWN0MSBpZD0iZGRsLW90aGVycyI+CiAgIDx0aXRsZT5P dGhlciBEYXRhYmFzZSBPYmplY3RzPC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3F1ZXJpZXMuc2dtbCBiL2RvYy9zcmMvc2dtbC9xdWVyaWVzLnNnbWwKaW5kZXggODM0YjgzYjUw OS4uZGNiNTE0MWYwYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3F1ZXJpZXMuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvcXVlcmllcy5zZ21sCkBAIC0yNzAzLDQgKzI3MDMsOTIgQEAgU0VMRUNU ICogRlJPTSB0OwogCiAgPC9zZWN0MT4KIAorIDxzZWN0MSBpZD0idGVtcG9yYWwtcXVlcmllcyI+ CisgIDx0aXRsZT5UZW1wb3JhbCBRdWVyaWVzPC90aXRsZT4KKworICAgPHBhcmE+CisgICAgPHBy b2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBpbXBsZW1lbnRzIGFuIG9wdGlvbiB0 bworICAgIHRvIGFkZCBzeXN0ZW0gdmVyc2lvbmluZyBvbnRvIGEgdXNlciB0YWJsZS4gU3VjaCB0 YWJsZXMgY2FuCisgICAgYmUgYWNjZXNzZWQgbm9ybWFsbHkgdG8gc2VlIHRoZSBjdXJyZW50IGNv bnRlbnRzLCBidXQgYWxzbworICAgIGFsbG93IHlvdSB0byBhY2Nlc3MgZGF0YSB1c2luZyBib3Ro IHRlbXBvcmFsIGFuZAorICAgIGhpc3RvcmljYWwgcXVlcmllcy4gIFF1ZXJpZXMgbXVzdCBzcGVj aWZ5IGEgcGVyaW9kIG5hbWUsCisgICAgd2hpY2ggZm9yIHN5c3RlbSB2ZXJzaW9uaW5nIG11c3Qg YmUgPHF1b3RlPlNZU1RFTV9USU1FPC9xdW90ZT4uCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgor ICAgIEhpc3RvcmljYWwgcXVlcmllcyBzaG93IHRoZSBjaGFuZ2VzIHRvIHJvd3Mgb3ZlciB0aW1l LCBzdWNoIGFzIHRoZQorICAgIGZvbGxvd2luZyBxdWVyeSB0aGF0IHNob3dzIGNoYW5nZXMgdG8g YSBjb21wYW55J3MgcHJvZHVjdHMgYW5kIHByaWNpbmc6Cis8cHJvZ3JhbWxpc3Rpbmc+CitTRUxF Q1QgKiBGUk9NIHByb2R1Y3RzIEZPUiBzeXN0ZW1fdGltZSBCRVRXRUVOICctaW5maW5pdHknIEFO RCAnaW5maW5pdHknIE9SREVSIEJZIHBubywgc3RhcnR0aW1lOworIHBubyB8ICAgICAgIG5hbWUg ICAgICAgIHwgcHJpY2UgfCAgICAgICAgICAgICAgc3RhcnR0aW1lICAgICAgICAgICAgICB8ICAg ICAgICAgICAgZW5kdGltZQorLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIDEwMCB8IFdhc2hpbmcgTWFjaGluZSAgIHwgMzAwLjAgfCBNb24gSmFu IDExIDAzOjQ3OjM2LjAyMDM2MSAyMDIxIFBTVCB8IE1vbiBKYW4gMTEgMDg6NDc6MzYuMDI3MDI5 IDIwMjEgUFNUCisgMjAwIHwgRXh0ZW5kZWQgV2FycmFudHkgfCAgNTAuMCB8IE1vbiBKYW4gMTEg MDM6NDc6MzYuMDIyODQ3IDIwMjEgUFNUIHwgTW9uIEphbiAxMSAwNTo0NzozNi4wMjY0MSAyMDIx IFBTVAorIDIwMCB8IEV4dGVuZGVkIFdhcnJhbnR5IHwgIDc1LjAgfCBNb24gSmFuIDExIDA1OjQ3 OjM2LjAyNjQxIDIwMjEgUFNUICB8IGluZmluaXR5CisgMzAwIHwgTGFwdG9wICAgICAgICAgICAg fCAyNTAuMCB8IE1vbiBKYW4gMTEgMDM6NDc6MzYuMDIzMzE2IDIwMjEgUFNUIHwgTW9uIEphbiAx MSAwNjo0NzozNi4wMjY3NzkgMjAyMSBQU1QKKyAzMDAgfCBMYXB0b3AgICAgICAgICAgICB8IDM1 MC4wIHwgTW9uIEphbiAxMSAwNjo0NzozNi4wMjY3NzkgMjAyMSBQU1QgfCBNb24gSmFuIDExIDA3 OjQ3OjM2LjAyOTA4NiAyMDIxIFBTVAorIDQwMCB8IFdhc2hpbmcgTWFjaGluZSAgIHwgMzAwLjAg fCBNb24gSmFuIDExIDA4OjQ3OjM2LjAyNzAyOSAyMDIxIFBTVCB8IGluZmluaXR5CisgNTAwIHwg U3BhcmUgUGFydHMgICAgICAgfCAgMjUuMCB8IE1vbiBKYW4gMTEgMDk6NDc6MzYuMDMyMDc3IDIw MjEgUFNUIHwgaW5maW5pdHkKKyg3IHJvd3MpCis8L3Byb2dyYW1saXN0aW5nPgorICAgIFRoaXMg cXVlcnkgc2hvd3MgdGhlIGZ1bGwgaGlzdG9yeSBvdmVyIGFsbCB0aW1lIHNpbmNlIGl0IGluY2x1 ZGVzCisgICAgYWxsIGNoYW5nZXMgYmV0d2VlbiBhIHRpbWVzdGFtcCBvZiAnLWluZmluaXR5JyB0 byAnaW5maW5pdHknLgorICAgIFRoZSB1c2VyIGNhbiBzcGVjaWZ5IHRpZ2h0ZXIgdGltZSByYW5n ZXMgdG8gZmlsdGVyIGF3YXkgdW53YW50ZWQKKyAgICBwYXJ0cyBvZiB0aGUgY2hhbmdlIGhpc3Rv cnkuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgIE5vcm1hbCBub24tdGVtcG9yYWwgcXVl cmllcyBzaG93IHRoZSBjdXJyZW50IGNvbnRlbnRzIG9mIHRoZQorICAgIHN5c3RlbSB2ZXJzaW9u ZWQgdGFibGUsIGp1c3QgbGlrZSBub3JtYWwgdGFibGVzOgorPHByb2dyYW1saXN0aW5nPgorU0VM RUNUIHBubywgbmFtZSwgcHJpY2UgRlJPTSBwcm9kdWN0cyBPUkRFUiBCWSBwbm87CisgcG5vIHwg ICAgIG5hbWUgICAgIHwgcHJpY2UgCistLS0tLSstLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgMjAw IHwgRXh0IFdhcnJhbnR5IHwgIDc1LjAgCisgNDAwIHwgV2FzaCBNYWNoaW5lIHwgMzAwLjAgCisg NTAwIHwgU3BhcmUgUGFydHMgIHwgIDI1LjAgCisoMyByb3dzKQorPC9wcm9ncmFtbGlzdGluZz4K KyAgICB3aGljaCBpcyBhY2hpZXZlZCBieSBnZW5lcmF0aW5nIGV4dHJhIFdIRVJFIGNsYXVzZXMg dG8gZXhjbHVkZQorICAgIHRoZSBoaXN0b3JpY2FsIHJvdyB2ZXJzaW9ucyBmcm9tIHRoZSBxdWVy eS4gVGhpcyBjYW4gYmUgc2VlbgorICAgIG1vcmUgY2xlYXJseSB1c2luZyA8Y29tbWFuZD5FWFBM QUlOPC9jb21tYW5kPjoKKzxwcm9ncmFtbGlzdGluZz4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBwcm9kdWN0czsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU2VxIFNjYW4gb24g cHJvZHVjdHMKKyAgIEZpbHRlcjogKGVuZHRpbWUgPSAnaW5maW5pdHknOjp0aW1lc3RhbXAgd2l0 aCB0aW1lIHpvbmUpCisoMiByb3dzKQorPC9wcm9ncmFtbGlzdGluZz4KKyAgICB3aGljaCBzaG93 cyB0aGF0IHRoZSBwcmVzZW5jZSBvZiBoaXN0b3JpY2FsIHJvdyB2ZXJzaW9ucyB3aWxsCisgICAg YWZmZWN0IHRoZSBwZXJmb3JtYW5jZSBvZiBhbGwgdHlwZXMgb2YgcXVlcnkgb24gdGFibGVzIHdp dGgKKyAgICBzeXN0ZW0gdmVyc2lvbmluZy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAg VGVtcG9yYWwgcXVlcmllcyBzaG93IHRoZSB0YWJsZSByb3dzIGF0IGEgc3BlY2lmaWMgdGltZXN0 YW1wLCBlLmcuCis8cHJvZ3JhbWxpc3Rpbmc+CitTRUxFQ1QgcG5vLCBuYW1lLCBwcmljZSBGUk9N IHByb2R1Y3RzIEZPUiBzeXN0ZW1fdGltZSBBUyBPRiAnTW9uIEphbiAxMSAwNzozMDowMCAyMDIx IFBTVCcgT1JERVIgQlkgcG5vOworIHBubyB8ICAgICBuYW1lICAgICB8IHByaWNlIAorLS0tLS0r LS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIDEwMCB8IFdhc2ggTWFjaGluZSB8IDMwMC4wIAorIDIw MCB8IEV4dCBXYXJyYW50eSB8ICA3NS4wIAorIDMwMCB8IExhcHRvcCAgICAgICB8IDM1MC4wIAor KDMgcm93cykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisKKyAgICBvcgorCis8cHJvZ3JhbWxpc3Rpbmc+ CitTRUxFQ1QgcG5vLCBuYW1lLCBwcmljZSBGUk9NIHByb2R1Y3RzIEZPUiBzeXN0ZW1fdGltZSBB UyBPRiAnTW9uIEphbiAxMSAwOTozMDowMCAyMDIxIFBTVCcgT1JERVIgQlkgcG5vOworIHBubyB8 ICAgICBuYW1lICAgICB8IHByaWNlIAorLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIDIw MCB8IEV4dCBXYXJyYW50eSB8ICA3NS4wIAorIDQwMCB8IFdhc2ggTWFjaGluZSB8IDMwMC4wIAor KDIgcm93cykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICA8L3BhcmE+CisKKyA8L3NlY3QxPgorCiA8 L2NoYXB0ZXI+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3RhYmxlLnNnbWwKaW5kZXggODEyOTE1NzdmOC4uNTc4 MTFlODhjNyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21sCisr KyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUuc2dtbApAQCAtNDEsNyArNDEsOSBAQCBB TFRFUiBUQUJMRSBbIElGIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5u YW1lPC9yZXBsYWNlYWJsZT4KIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmFjdGlvbjwvcmVwbGFjZWFibGU+IGlzIG9uZSBvZjo8L3BocmFzZT4KIAogICAgIEFE RCBbIENPTFVNTiBdIFsgSUYgTk9UIEVYSVNUUyBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5jb2x1bW5fbmFtZTwvcmVwbGFjZWFibGU+IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5kYXRhX3R5cGU8L3JlcGxhY2VhYmxlPiBbIENPTExBVEUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmNvbGxhdGlvbjwvcmVwbGFjZWFibGU+IF0gWyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+Y29sdW1uX2NvbnN0cmFpbnQ8L3JlcGxhY2VhYmxlPiBbIC4uLiBdIF0K KyAgICBBREQgU1lTVEVNIFZFUlNJT05JTkcKICAgICBEUk9QIFsgQ09MVU1OIF0gWyBJRiBFWElT VFMgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2Vh YmxlPiBbIFJFU1RSSUNUIHwgQ0FTQ0FERSBdCisgICAgRFJPUCBTWVNURU0gVkVSU0lPTklORwog ICAgIEFMVEVSIFsgQ09MVU1OIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gWyBTRVQgREFUQSBdIFRZUEUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPmRhdGFfdHlwZTwvcmVwbGFjZWFibGU+IFsgQ09MTEFURSA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sbGF0aW9uPC9yZXBsYWNlYWJsZT4gXSBbIFVTSU5HIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gXQog ICAgIEFMVEVSIFsgQ09MVU1OIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVt bl9uYW1lPC9yZXBsYWNlYWJsZT4gU0VUIERFRkFVTFQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPgogICAgIEFMVEVSIFsgQ09MVU1OIF0gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmNvbHVtbl9uYW1lPC9yZXBsYWNlYWJsZT4gRFJP UCBERUZBVUxUCkBAIC0xNjEsNiArMTYzLDE5IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAg ICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5Pgor ICAgIDx0ZXJtPjxsaXRlcmFsPkFERCBTWVNURU0gVkVSU0lPTklORzwvbGl0ZXJhbD48L3Rlcm0+ CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoaXMgZm9ybSBlbmFibGVzIHN5 c3RlbSB2ZXJzaW9uaW5nIHRvIHRoZSB0YWJsZSBieSBhZGRpbmcgdHdvIGNvbHVtbnMgd2hpY2gK KyAgICAgIHJlY29yZCB0aGUgcGVyaW9kIHN0YXJ0IGFuZCBwZXJpb2QgZW5kIGZvciB0aGUgdmFs aWRpdHkgb2YgZWFjaCByb3cgdmVyc2lvbi4KKyAgICAgIFRoZSBjb2x1bW4gbmFtZXMgd2lsbCBi ZSBzdGFydHRpbWUgYW5kIGVuZHRpbWUgcmVzcGVjdGl2ZWx5LCB0aG91Z2ggdGhlIGRhdGEKKyAg ICAgIHR5cGVzIGFyZSBUSU1FU1RBTVAgV0lUSCBUSU1FIFpPTkUuIFNlZQorICAgICAgPHhyZWYg bGlua2VuZD0iZGRsLXRlbXBvcmFsIi8+CisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgor ICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVy YWw+RFJPUCBDT0xVTU4gWyBJRiBFWElTVFMgXTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3Rp dGVtPgpAQCAtMTgwLDYgKzE5NSwxOCBAQCBXSVRIICggTU9EVUxVUyA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9yZXBsYWNlYWJsZT4sIFJFTQogICAgIDwv bGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8 dGVybT48bGl0ZXJhbD5EUk9QIFNZU1RFTSBWRVJTSU9OSU5HPC9saXRlcmFsPjwvdGVybT4KKyAg ICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBmb3JtIGRyb3BzIHN5c3RlbSB2 ZXJzaW9uaW5nIGZyb20gdGhlIHRhYmxlLgorICAgICAgSW5kZXhlcyBhbmQgdGFibGUgY29uc3Ry YWludHMgaW52b2x2aW5nIHN5c3RlbSB2ZXJzaW9uaW5nIGNvbHVtbnMgd2lsbCBiZQorICAgICAg YXV0b21hdGljYWxseSBkcm9wcGVkIGFsb25nIHdpdGggc3lzdGVtIHZlcnNpb25pbmcgY29sdW1u cy4gSWYgdGhlIHRhYmxlIGlzCisgICAgICBub3QgZW1wdHkgdGhlbiBoaXN0b3J5IHJlY29yZHMg YXJlIGFsc28gcmVtb3ZlZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zh cmxpc3RlbnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeT4KICAgICA8dGVybT48bGl0ZXJhbD5TRVQg REFUQSBUWVBFPC9saXRlcmFsPjwvdGVybT4KICAgICA8bGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfdGFibGUuc2dtbAppbmRleCAxNWFlZDJmMjUxLi45ZjRmMDUxOWI4IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3RhYmxlLnNnbWwKQEAgLTMxLDYgKzMxLDcgQEAgQ1JFQVRFIFsgWyBHTE9CQUwgfCBM T0NBTCBdIHsgVEVNUE9SQVJZIHwgVEVNUCB9IHwgVU5MT0dHRUQgXSBUQUJMRSBbIElGIE5PVCBF WEkKIFsgUEFSVElUSU9OIEJZIHsgUkFOR0UgfCBMSVNUIHwgSEFTSCB9ICggeyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxlPiB8ICggPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiApIH0gWyBD T0xMQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2xsYXRpb248L3JlcGxhY2Vh YmxlPiBdIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wY2xhc3M8L3JlcGxhY2Vh YmxlPiBdIFssIC4uLiBdICkgXQogWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+bWV0aG9kPC9yZXBsYWNlYWJsZT4gXQogWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPnN0b3JhZ2VfcGFyYW1ldGVyPC9yZXBsYWNlYWJsZT4gWz0gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnZhbHVlPC9yZXBsYWNlYWJsZT5dIFssIC4uLiBdICkgfCBXSVRI T1VUIE9JRFMgXQorWyBXSVRIIFNZU1RFTSBWRVJTSU9OSU5HIF0KIFsgT04gQ09NTUlUIHsgUFJF U0VSVkUgUk9XUyB8IERFTEVURSBST1dTIHwgRFJPUCB9IF0KIFsgVEFCTEVTUEFDRSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVzcGFjZV9uYW1lPC9yZXBsYWNlYWJsZT4gXQog CkBAIC02Nyw4ICs2OCwxMSBAQCBDUkVBVEUgWyBbIEdMT0JBTCB8IExPQ0FMIF0geyBURU1QT1JB UlkgfCBURU1QIH0gfCBVTkxPR0dFRCBdIFRBQkxFIFsgSUYgTk9UIEVYSQogICBERUZBVUxUIDxy ZXBsYWNlYWJsZT5kZWZhdWx0X2V4cHI8L3JlcGxhY2VhYmxlPiB8CiAgIEdFTkVSQVRFRCBBTFdB WVMgQVMgKCA8cmVwbGFjZWFibGU+Z2VuZXJhdGlvbl9leHByPC9yZXBsYWNlYWJsZT4gKSBTVE9S RUQgfAogICBHRU5FUkFURUQgeyBBTFdBWVMgfCBCWSBERUZBVUxUIH0gQVMgSURFTlRJVFkgWyAo IDxyZXBsYWNlYWJsZT5zZXF1ZW5jZV9vcHRpb25zPC9yZXBsYWNlYWJsZT4gKSBdIHwKKyAgR0VO RVJBVEVEIEFMV0FZUyBBUyBST1cgU1RBUlQgfAorICBHRU5FUkFURUQgQUxXQVlTIEFTIFJPVyBF TkQgfAogICBVTklRVUUgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFt ZXRlcnM8L3JlcGxhY2VhYmxlPiB8CiAgIFBSSU1BUlkgS0VZIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5pbmRleF9wYXJhbWV0ZXJzPC9yZXBsYWNlYWJsZT4gfAorICBQRVJJT0QgRk9S IFNZU1RFTV9USU1FICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvd19zdGFydF90 aW1lX2NvbHVtbjwvcmVwbGFjZWFibGU+LCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ cm93X2VuZF90aW1lX2NvbHVtbjwvcmVwbGFjZWFibGU+ICkgfAogICBSRUZFUkVOQ0VTIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZ0YWJsZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cmVmY29sdW1uPC9yZXBsYWNlYWJsZT4gKSBdIFsg TUFUQ0ggRlVMTCB8IE1BVENIIFBBUlRJQUwgfCBNQVRDSCBTSU1QTEUgXQogICAgIFsgT04gREVM RVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yZWZlcmVudGlhbF9hY3Rpb248L3Jl cGxhY2VhYmxlPiBdIFsgT04gVVBEQVRFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5y ZWZlcmVudGlhbF9hY3Rpb248L3JlcGxhY2VhYmxlPiBdIH0KIFsgREVGRVJSQUJMRSB8IE5PVCBE RUZFUlJBQkxFIF0gWyBJTklUSUFMTFkgREVGRVJSRUQgfCBJTklUSUFMTFkgSU1NRURJQVRFIF0K QEAgLTkxMiw2ICs5MTYsMjggQEAgV0lUSCAoIE1PRFVMVVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJw YXJhbWV0ZXIiPm51bWVyaWNfbGl0ZXJhbDwvcmVwbGFjZWFibGU+LCBSRU0KICAgICA8L2xpc3Rp dGVtPgogICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+ PGxpdGVyYWw+R0VORVJBVEVEIEFMV0FZUyBBUyBST1cgU1RBUlQ8L2xpdGVyYWw+PGluZGV4dGVy bT48cHJpbWFyeT5nZW5lcmF0ZWQgY29sdW1uPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4K KyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2UgY3JlYXRlcyB0 aGUgY29sdW1uIGFzIGEgZ2VuZXJhdGVkIGNvbHVtbi4KKyAgICAgIFRoZSBjb2x1bW4gY2Fubm90 IGJlIHdyaXR0ZW4gdG8sIGFuZCB3aGVuIHJlYWQgdGhlCisgICAgICByb3cgaW5zZXJ0aW9uIHRp bWUgd2lsbCBiZSByZXR1cm5lZC4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8 L3Zhcmxpc3RlbnRyeT4KKworICAgPHZhcmxpc3RlbnRyeT4KKyAgICA8dGVybT48bGl0ZXJhbD5H RU5FUkFURUQgQUxXQVlTIEFTIFJPVyBFTkQ8L2xpdGVyYWw+PGluZGV4dGVybT48cHJpbWFyeT5n ZW5lcmF0ZWQgY29sdW1uPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KKyAgICA8bGlzdGl0 ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhpcyBjbGF1c2UgY3JlYXRlcyB0aGUgY29sdW1uIGFz IGEgZ2VuZXJhdGVkIGNvbHVtbi4KKyAgICAgIFRoZSBjb2x1bW4gY2Fubm90IGJlIHdyaXR0ZW4g dG8sIGFuZCB3aGVuIHJlYWQgdGhlCisgICAgICByb3cgZGVsZXRpb24gdGltZSB3aWxsIGJlIHJl dHVybmVkLgorICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICA8dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPlVOSVFVRTwvbGl0ZXJh bD4gKGNvbHVtbiBjb25zdHJhaW50KTwvdGVybT4KICAgICA8dGVybT48bGl0ZXJhbD5VTklRVUUg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3JlcGxhY2VhYmxl PiBbLCAuLi4gXSApPC9saXRlcmFsPgpAQCAtMTAxOCw2ICsxMDQ0LDE2IEBAIFdJVEggKCBNT0RV TFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxh Y2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8 dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRlcmFsPlBFUklPRCBGT1IgU1lTVEVNX1RJTUUg KCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cm93X3N0YXJ0X3RpbWVfY29sdW1uPC9y ZXBsYWNlYWJsZT4sIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb3dfZW5kX3RpbWVf Y29sdW1uPC9yZXBsYWNlYWJsZT4gKTwvbGl0ZXJhbD48L3Rlcm0+CisgICAgPGxpc3RpdGVtPgor ICAgICA8cGFyYT4KKyAgICAgIFNwZWNpZmllcyB0aGUgcGFpciBvZiBjb2x1bW5zIHRoYXQgaG9s ZCB0aGUgcm93IHN0YXJ0CisgICAgICB0aW1lc3RhbXAgYW5kIHJvdyBlbmQgdGltZXN0YW1wIGNv bHVtbiBuYW1lcy4KKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICA8L3Zhcmxpc3Rl bnRyeT4KKwogICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXRhYmxlLWV4Y2x1ZGUiPgog ICAgIDx0ZXJtPjxsaXRlcmFsPkVYQ0xVREUgWyBVU0lORyA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+aW5kZXhfbWV0aG9kPC9yZXBsYWNlYWJsZT4gXSAoIDxyZXBsYWNlYWJsZSBjbGFz cz0icGFyYW1ldGVyIj5leGNsdWRlX2VsZW1lbnQ8L3JlcGxhY2VhYmxlPiBXSVRIIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcGVyYXRvcjwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmluZGV4X3BhcmFtZXRlcnM8L3JlcGxhY2Vh YmxlPiBbIFdIRVJFICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnByZWRpY2F0ZTwv cmVwbGFjZWFibGU+ICkgXTwvbGl0ZXJhbD48L3Rlcm0+CiAgICAgPGxpc3RpdGVtPgpAQCAtMTI3 Miw2ICsxMzA4LDE4IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgPC9saXN0aXRlbT4K ICAgIDwvdmFybGlzdGVudHJ5PgogCisgICA8dmFybGlzdGVudHJ5PgorICAgIDx0ZXJtPjxsaXRl cmFsPldJVEggU1lTVEVNIFZFUlNJT05JTkc8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRl bT4KKyAgICAgPHBhcmE+CisgICAgICBUaGlzIGNsYXVzZSBzcGVjaWZpZXMgdGhhdCB0aGUgdGFi bGUgY29udGFpbnMgbXVsdGlwbGUgaGlzdG9yaWNhbAorICAgICAgcm93IHZlcnNpb25zIHRoYXQg bWF5IGJlIHZpZXdlZCB1c2luZyB0ZW1wb3JhbCBxdWVyaWVzLgorICAgICAgSWYgcGVyaW9kIGNv bHVtbnMgYXJlIG5vdCBzcGVjaWZpZWQgZXhwbGljaXRseSB0aGUgZGVmYXVsdCBjb2x1bW5zCisg ICAgICBTdGFydFRpbWUgYW5kIEVuZFRpbWUgd2lsbCBiZSBhZGRlZCBhdXRvbWF0aWNhbGx5Lgor ICAgICA8L3BhcmE+CisgICAgPC9saXN0aXRlbT4KKyAgIDwvdmFybGlzdGVudHJ5PgorCiAgICA8 dmFybGlzdGVudHJ5PgogICAgIDx0ZXJtPjxsaXRlcmFsPk9OIENPTU1JVDwvbGl0ZXJhbD48L3Rl cm0+CiAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Qu c2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwKaW5kZXggZmE2NzZiMTY5OC4uMzI2 YWI5OTU4OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9zZWxlY3Quc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21sCkBAIC02MCw2ICs2MCwxNSBAQCBTRUxFQ1QgWyBB TEwgfCBESVNUSU5DVCBbIE9OICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmV4cHJl c3Npb248L3JlcGxhYwogICAgIFsgTEFURVJBTCBdIFJPV1MgRlJPTSggPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmZ1bmN0aW9uX25hbWU8L3JlcGxhY2VhYmxlPiAoIFsgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFyZ3VtZW50PC9yZXBsYWNlYWJsZT4gWywgLi4uXSBdICkg WyBBUyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1bW5fZGVmaW5pdGlvbjwv cmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIFssIC4uLl0gKQogICAgICAgICAgICAgICAgIFsgV0lU SCBPUkRJTkFMSVRZIF0gWyBbIEFTIF0gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmFs aWFzPC9yZXBsYWNlYWJsZT4gWyAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5jb2x1 bW5fYWxpYXM8L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkgXSBdCiAgICAgPHJlcGxhY2VhYmxlIGNs YXNzPSJwYXJhbWV0ZXIiPmZyb21faXRlbTwvcmVwbGFjZWFibGU+IFsgTkFUVVJBTCBdIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX3R5cGU8L3JlcGxhY2VhYmxlPiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJvbV9pdGVtPC9yZXBsYWNlYWJsZT4gWyBPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+am9pbl9jb25kaXRpb248L3JlcGxhY2VhYmxlPiB8 IFVTSU5HICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpvaW5fY29sdW1uPC9yZXBs YWNlYWJsZT4gWywgLi4uXSApIFsgQVMgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmpv aW5fdXNpbmdfYWxpYXM8L3JlcGxhY2VhYmxlPiBdIF0KKyAgICA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IEZPUiBTWVNURU1fVElNRSBBUyBP RiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+ CisgICAgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2Vh YmxlPiBGT1IgU1lTVEVNX1RJTUUgQkVUV0VFTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+IEFORCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPgorICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj50YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gRk9SIFNZU1RFTV9USU1FIEJFVFdFRU4g QVNZTU1FVFJJQyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGltZTwvcmVw bGFjZWFibGU+IEFORCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZW5kX3RpbWU8L3Jl cGxhY2VhYmxlPgorICAgIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9uYW1l PC9yZXBsYWNlYWJsZT4gRk9SIFNZU1RFTV9USU1FIEJFVFdFRU4gU1lNTUVUUklDIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdGFydF90aW1lPC9yZXBsYWNlYWJsZT4gQU5EIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGltZTwvcmVwbGFjZWFibGU+CisgICAgPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBGT1Ig U1lTVEVNX1RJTUUgRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3RhcnRfdGlt ZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5lbmRfdGlt ZTwvcmVwbGFjZWFibGU+CisgIAorICA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+Z3JvdXBpbmdfZWxlbWVudDwvcmVwbGFjZWFibGU+IGNhbiBiZSBvbmUgb2Y6PC9w aHJhc2U+CisgIAorCiAKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5ncm91cGluZ19lbGVtZW50PC9yZXBsYWNlYWJsZT4gY2FuIGJlIG9uZSBvZjo8L3BocmFzZT4K IApAQCAtNTgyLDYgKzU5MSw0MiBAQCBUQUJMRSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCiAgICAgICA8L2xpc3Rp dGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5PgorICAgICAg PHRlcm0+PGxpdGVyYWw+Rk9SIFNZU1RFTV9USU1FIEFTIE9GIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT48L2xpdGVyYWw+PC90ZXJtPgorICAg ICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBBbGxvd3MgdGVtcG9yYWwgcXVl cmllcyBmb3IgdGFibGVzIGRlZmluZWQgd2l0aCBzeXN0ZW0gdmVyc2lvbmluZy4KKyAgICAgICAg VGhpcyBzcGVjaWZpZXMgYSBzaW5nbGUgdGltZXN0YW1wIHRoYXQgaXMgdXNlZCBpbiBwbGFjZSBv ZiB0aGUKKyAgICAgICAgbm9ybWFsIHRyYW5zYWN0aW9uIHNuYXBzaG90IHRvIGRldGVybWluZSB3 aGljaCByb3cgdmVyc2lvbiBvZiBhCisgICAgICAgIHJvdyBpcyB2aXNpYmxlIGZvciB0aGlzIHF1 ZXJ5LiBBdCBtb3N0IG9uZSByb3cgdmVyc2lvbiB3aWxsIGJlCisgICAgICAgIHJldHVybmVkIGZv ciBhbnkgcm93LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFy bGlzdGVudHJ5PgorCisgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICA8dGVybT48bGl0ZXJhbD5G T1IgU1lTVEVNX1RJTUUgQkVUV0VFTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Rh cnRfdGltZTwvcmVwbGFjZWFibGU+IEFORCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ ZW5kX3RpbWU8L3JlcGxhY2VhYmxlPjwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8dGVybT48bGl0 ZXJhbD5GT1IgU1lTVEVNX1RJTUUgRlJPTSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ c3RhcnRfdGltZTwvcmVwbGFjZWFibGU+IFRPIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5lbmRfdGltZTwvcmVwbGFjZWFibGU+PC9saXRlcmFsPjwvdGVybT4KKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRm9yIHRhYmxlcyB3aXRoIHN5c3RlbSB2ZXJzaW9u aW5nIHRoaXMgc3BlY2lmaWVzIHRoYXQgYWxsCisgICAgICAgIHJvdyB2ZXJzaW9ucyB2aXNpYmxl IGF0IGFueSBwb2ludCBvdmVyIHRoZSB0aW1lIHJhbmdlCisgICAgICAgIHdpbGwgYmUgdmlzaWJs ZSB0byB0aGlzIHF1ZXJ5LgorICAgICAgICBOb3RlIHRoYXQgdGhpcyBmb3JtIG9mIHF1ZXJ5IGFs bG93cyBtdWx0aXBsZSByb3cgdmVyc2lvbnMgdG8gYmUKKyAgICAgICAgcmV0dXJuZWQgZm9yIG9u ZSByb3cgcmF0aGVyIHRoYW4ganVzdCBhIHNpbmdsZSByb3cuIEl0IGFsbG93cworICAgICAgICB0 aGUgcXVlcnkgdG8gaW5zcGVjdCB0aGUgaGlzdG9yeSBvZiBVUERBVEVzIGFuZCBERUxFVEVzCisg ICAgICAgIHRoYXQgaGF2ZSBvY2N1cmVkIHRvIHJvdyBhZnRlciB0aGUgaW5pdGlhbCBJTlNFUlQs IG92ZXIKKyAgICAgICAgdGhlIHRpbWUgcmFuZ2Ugc3BlY2lmaWVkLiBUbyBzZWUgYWxsIGNoYW5n ZXMgb3ZlciB0aW1lCisgICAgICAgIHNwZWNpZnkgYSBzdGFydF90aW1lIG9mICctSW5maW5pdHkn IGFuZCBhbiBlbmRfdGltZSBvZiAnSW5maW5pdHknLgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgT3B0aW9uYWxseSwgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PlNZTU1FVFJJQzwvcmVwbGFjZWFibGU+CisgICAgICAgIG9yIDxyZXBsYWNlYWJsZSBjbGFzcz0i cGFyYW1ldGVyIj5BU1lNTUVUUklDPC9yZXBsYWNlYWJsZT4gbWF5CisgICAgICAgIGJlIHNwZWNp ZmllZCBmb3IgdGhlIHRpbWUgcmFuZ2UuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0 ZXJtPjxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5qb2luX3R5cGU8L3JlcGxhY2VhYmxl PjwvdGVybT4KICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9jb21tb24vdHVwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBkZXNjLmMK aW5kZXggNGM2M2JkNGRjNi4uOGU4OTU4NzZhZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2NvbW1vbi90dXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi90dXBk ZXNjLmMKQEAgLTE2OCw2ICsxNjgsNyBAQCBDcmVhdGVUdXBsZURlc2NDb3B5Q29uc3RyKFR1cGxl RGVzYyB0dXBkZXNjKQogCiAJCWNweS0+aGFzX25vdF9udWxsID0gY29uc3RyLT5oYXNfbm90X251 bGw7CiAJCWNweS0+aGFzX2dlbmVyYXRlZF9zdG9yZWQgPSBjb25zdHItPmhhc19nZW5lcmF0ZWRf c3RvcmVkOworCQljcHktPmhhc19zeXN0ZW1fdmVyc2lvbmluZyA9IGNvbnN0ci0+aGFzX3N5c3Rl bV92ZXJzaW9uaW5nOwogCiAJCWlmICgoY3B5LT5udW1fZGVmdmFsID0gY29uc3RyLT5udW1fZGVm dmFsKSA+IDApCiAJCXsKQEAgLTQ3Nyw2ICs0NzgsOCBAQCBlcXVhbFR1cGxlRGVzY3MoVHVwbGVE ZXNjIHR1cGRlc2MxLCBUdXBsZURlc2MgdHVwZGVzYzIpCiAJCQlyZXR1cm4gZmFsc2U7CiAJCWlm IChjb25zdHIxLT5oYXNfZ2VuZXJhdGVkX3N0b3JlZCAhPSBjb25zdHIyLT5oYXNfZ2VuZXJhdGVk X3N0b3JlZCkKIAkJCXJldHVybiBmYWxzZTsKKwkJaWYgKGNvbnN0cjEtPmhhc19zeXN0ZW1fdmVy c2lvbmluZyAhPSBjb25zdHIyLT5oYXNfc3lzdGVtX3ZlcnNpb25pbmcpCisJCQlyZXR1cm4gZmFs c2U7CiAJCW4gPSBjb25zdHIxLT5udW1fZGVmdmFsOwogCQlpZiAobiAhPSAoaW50KSBjb25zdHIy LT5udW1fZGVmdmFsKQogCQkJcmV0dXJuIGZhbHNlOwpAQCAtODQ3LDYgKzg1MCw3IEBAIEJ1aWxk RGVzY0ZvclJlbGF0aW9uKExpc3QgKnNjaGVtYSkKIAogCQljb25zdHItPmhhc19ub3RfbnVsbCA9 IHRydWU7CiAJCWNvbnN0ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQgPSBmYWxzZTsKKwkJY29uc3Ry LT5oYXNfc3lzdGVtX3ZlcnNpb25pbmcgPSBmYWxzZTsKIAkJY29uc3RyLT5kZWZ2YWwgPSBOVUxM OwogCQljb25zdHItPm1pc3NpbmcgPSBOVUxMOwogCQljb25zdHItPm51bV9kZWZ2YWwgPSAwOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggNDBhNTRhZDBiZC4uOWZiYzFmODMzMCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0xMDI2LDYgKzEwMjYsMTEgQEAgQ29weUZyb20oQ29weUZy b21TdGF0ZSBjc3RhdGUpCiAJCQkJCUV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKHJlc3VsdFJl bEluZm8sIGVzdGF0ZSwgbXlzbG90LAogCQkJCQkJCQkJCQkgICBDTURfSU5TRVJUKTsKIAorCQkJ CS8qIFNldCBzeXN0ZW0gdGltZSBjb2x1bW5zICovCisJCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJp X1JlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIgJiYKKwkJCQkJcmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0ci0+aGFzX3N5c3RlbV92ZXJzaW9uaW5nKQorCQkJ CQlFeGVjU2V0Um93U3RhcnRUaW1lKGVzdGF0ZSwgbXlzbG90LCByZXN1bHRSZWxJbmZvKTsKKwog CQkJCS8qCiAJCQkJICogSWYgdGhlIHRhcmdldCBpcyBhIHBsYWluIHRhYmxlLCBjaGVjayB0aGUg Y29uc3RyYWludHMgb2YKIAkJCQkgKiB0aGUgdHVwbGUuCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CmluZGV4IGIxOGRlMzhlNzMuLmM0NDlkOWYwYTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5j CkBAIC01OSw2ICs1OSw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvdHlwZWNtZHMuaCIKICNpbmNs dWRlICJjb21tYW5kcy91c2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKKyNp bmNsdWRlICJleGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCIKICNpbmNsdWRlICJmb3JlaWduL2Zk d2FwaS5oIgogI2luY2x1ZGUgImZvcmVpZ24vZm9yZWlnbi5oIgogI2luY2x1ZGUgIm1pc2NhZG1p bi5oIgpAQCAtNzcsNiArNzgsNyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIuaCIKICNpbmNs dWRlICJwYXJ0aXRpb25pbmcvcGFydGJvdW5kcy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9w YXJ0ZGVzYy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlRGVmaW5lLmgiCiAjaW5jbHVkZSAicmV3 cml0ZS9yZXdyaXRlSGFuZGxlci5oIgpAQCAtMTgxLDYgKzE4Myw5IEBAIHR5cGVkZWYgc3RydWN0 IEFsdGVyZWRUYWJsZUluZm8KIAlib29sCQljaGdQZXJzaXN0ZW5jZTsgLyogVCBpZiBTRVQgTE9H R0VEL1VOTE9HR0VEIGlzIHVzZWQgKi8KIAljaGFyCQluZXdyZWxwZXJzaXN0ZW5jZTsJLyogaWYg YWJvdmUgaXMgdHJ1ZSAqLwogCUV4cHIJICAgKnBhcnRpdGlvbl9jb25zdHJhaW50OwkvKiBmb3Ig YXR0YWNoIHBhcnRpdGlvbiB2YWxpZGF0aW9uICovCisJYm9vbAkJc3lzdGVtVmVyc2lvbmluZ0Fk ZGVkOwkvKiBpcyBzeXN0ZW0gdGltZSBjb2x1bW4gYWRkZWQ/ICovCisJYm9vbAkJc3lzdGVtVmVy c2lvbmluZ1JlbW92ZWQ7CS8qIGlzIHN5c3RlbSB0aW1lIGNvbHVtbiByZW1vdmVkPyAqLworCUF0 dHJOdW1iZXIJYXR0bnVtOwkJCS8qIHdoaWNoIGNvbHVtbiBpcyBzeXN0ZW0gZW5kIHRpbWUgY29s dW1uICovCiAJLyogdHJ1ZSwgaWYgdmFsaWRhdGluZyBkZWZhdWx0IGR1ZSB0byBzb21lIG90aGVy IGF0dGFjaC9kZXRhY2ggKi8KIAlib29sCQl2YWxpZGF0ZV9kZWZhdWx0OwogCS8qIE9iamVjdHMg dG8gcmVidWlsZCBhZnRlciBjb21wbGV0aW5nIEFMVEVSIFRZUEUgb3BlcmF0aW9ucyAqLwpAQCAt NDU0LDExICs0NTksMTIgQEAgc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjU2V0U3RvcmFnZShS ZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiBzdGF0aWMgdm9pZCBBVFByZXBEcm9w Q29sdW1uKExpc3QgKip3cXVldWUsIFJlbGF0aW9uIHJlbCwgYm9vbCByZWN1cnNlLCBib29sIHJl Y3Vyc2luZywKIAkJCQkJCQkgQWx0ZXJUYWJsZUNtZCAqY21kLCBMT0NLTU9ERSBsb2NrbW9kZSwK IAkJCQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKLXN0YXRpYyBPYmpl Y3RBZGRyZXNzIEFURXhlY0Ryb3BDb2x1bW4oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBj b25zdCBjaGFyICpjb2xOYW1lLAorc3RhdGljIE9iamVjdEFkZHJlc3MgQVRFeGVjRHJvcENvbHVt bihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwgY29u c3QgY2hhciAqY29sTmFtZSwKIAkJCQkJCQkJCSAgRHJvcEJlaGF2aW9yIGJlaGF2aW9yLAogCQkJ CQkJCQkJICBib29sIHJlY3Vyc2UsIGJvb2wgcmVjdXJzaW5nLAogCQkJCQkJCQkJICBib29sIG1p c3Npbmdfb2ssIExPQ0tNT0RFIGxvY2ttb2RlLAotCQkJCQkJCQkJICBPYmplY3RBZGRyZXNzZXMg KmFkZHJzKTsKKwkJCQkJCQkJCSAgT2JqZWN0QWRkcmVzc2VzICphZGRycywKKwkJCQkJCQkJCSAg QWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBPYmplY3RBZGRyZXNz IEFURXhlY0FkZEluZGV4KEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogCQkJ CQkJCQkJSW5kZXhTdG10ICpzdG10LCBib29sIGlzX3JlYnVpbGQsIExPQ0tNT0RFIGxvY2ttb2Rl KTsKIHN0YXRpYyBPYmplY3RBZGRyZXNzIEFURXhlY0FkZFN0YXRpc3RpY3MoQWx0ZXJlZFRhYmxl SW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCkBAIC0xNjI2LDYgKzE2MzIsNyBAQCBFeGVjdXRlVHJ1 bmNhdGUoVHJ1bmNhdGVTdG10ICpzdG10KQogCQlib29sCQlyZWN1cnNlID0gcnYtPmluaDsKIAkJ T2lkCQkJbXlyZWxpZDsKIAkJTE9DS01PREUJbG9ja21vZGUgPSBBY2Nlc3NFeGNsdXNpdmVMb2Nr OworCQlUdXBsZURlc2MJdHVwZGVzYzsKIAogCQlteXJlbGlkID0gUmFuZ2VWYXJHZXRSZWxpZEV4 dGVuZGVkKHJ2LCBsb2NrbW9kZSwKIAkJCQkJCQkJCQkgICAwLCBSYW5nZVZhckNhbGxiYWNrRm9y VHJ1bmNhdGUsCkBAIC0xNjQ0LDYgKzE2NTEsMTQgQEAgRXhlY3V0ZVRydW5jYXRlKFRydW5jYXRl U3RtdCAqc3RtdCkKIAkJICovCiAJCXRydW5jYXRlX2NoZWNrX2FjdGl2aXR5KHJlbCk7CiAKKwkJ dHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKworCQkvKiB0aHJvdyBlcnJvciBmb3Ig c3lzdGVtIHZlcnNpb25lZCB0YWJsZSAqLworCQlpZiAodHVwZGVzYy0+Y29uc3RyICYmIHR1cGRl c2MtPmNvbnN0ci0+aGFzX3N5c3RlbV92ZXJzaW9uaW5nKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19PQkpFQ1RfVFlQRSksCisJCQkJCSBlcnJtc2coImNh bm5vdCB0cnVuY2F0ZSB0YWJsZSB3aXRoIHN5c3RlbSB2ZXJzaW9uaW5nIikpKTsKKwogCQlyZWxz ID0gbGFwcGVuZChyZWxzLCByZWwpOwogCQlyZWxpZHMgPSBsYXBwZW5kX29pZChyZWxpZHMsIG15 cmVsaWQpOwogCkBAIC00MTAxLDYgKzQxMTYsOCBAQCBBbHRlclRhYmxlR2V0TG9ja0xldmVsKExp c3QgKmNtZHMpCiAJCQljYXNlIEFUX1NldEFjY2Vzc01ldGhvZDoJLyogbXVzdCByZXdyaXRlIGhl YXAgKi8KIAkJCWNhc2UgQVRfU2V0VGFibGVTcGFjZToJLyogbXVzdCByZXdyaXRlIGhlYXAgKi8K IAkJCWNhc2UgQVRfQWx0ZXJDb2x1bW5UeXBlOgkvKiBtdXN0IHJld3JpdGUgaGVhcCAqLworCQkJ Y2FzZSBBVF9QZXJpb2RDb2x1bW46CisJCQljYXNlIEFUX0FkZFN5c3RlbVZlcnNpb25pbmc6CiAJ CQkJY21kX2xvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAkJCQlicmVhazsKIApAQCAt NDEyOSw2ICs0MTQ2LDcgQEAgQWx0ZXJUYWJsZUdldExvY2tMZXZlbChMaXN0ICpjbWRzKQogCQkJ CSAqIFN1YmNvbW1hbmRzIHRoYXQgbWF5IGJlIHZpc2libGUgdG8gY29uY3VycmVudCBTRUxFQ1Rz CiAJCQkJICovCiAJCQljYXNlIEFUX0Ryb3BDb2x1bW46IC8qIGNoYW5nZSB2aXNpYmxlIHRvIFNF TEVDVCAqLworCQkJY2FzZSBBVF9Ecm9wU3lzdGVtVmVyc2lvbmluZzoJLyogY2hhbmdlIHZpc2li bGUgdG8gU0VMRUNUICovCiAJCQljYXNlIEFUX0FkZENvbHVtblRvVmlldzoJLyogQ1JFQVRFIFZJ RVcgKi8KIAkJCWNhc2UgQVRfRHJvcE9pZHM6CS8qIHVzZWQgdG8gZXF1aXYgdG8gRHJvcENvbHVt biAqLwogCQkJY2FzZSBBVF9FbmFibGVBbHdheXNSdWxlOgkvKiBtYXkgY2hhbmdlIFNFTEVDVCBy dWxlcyAqLwpAQCAtNDc5NCw2ICs0ODEyLDM1IEBAIEFUUmV3cml0ZUNhdGFsb2dzKExpc3QgKip3 cXVldWUsIExPQ0tNT0RFIGxvY2ttb2RlLAogCQkJCQkJICBsZmlyc3Rfbm9kZShBbHRlclRhYmxl Q21kLCBsY21kKSwKIAkJCQkJCSAgbG9ja21vZGUsIHBhc3MsIGNvbnRleHQpOwogCisJCQkvKgor CQkJICogQm90aCBzeXN0ZW0gdGltZSBjb2x1bW5zIGhhdmUgdG8gYmUgc3BlY2lmaWVkCisJCQkg Ki8KKwkJCWlmIChjb250ZXh0KQorCQkJeworCQkJCWlmIChjb250ZXh0LT5oYXNTeXN0ZW1WZXJz aW9uaW5nKQorCQkJCXsKKwkJCQkJaWYgKCFjb250ZXh0LT5zdGFydFRpbWVDb2xOYW1lKQorCQkJ CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJCQkgZXJybXNnKCJwZXJpb2Qgc3RhcnQgdGltZSBjb2x1bW4gbm90IHNwZWNpZmll ZCIpKSk7CisKKwkJCQkJaWYgKCFjb250ZXh0LT5lbmRUaW1lQ29sTmFtZSkKKwkJCQkJCWVyZXBv cnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJ CQkJIGVycm1zZygicGVyaW9kIGVuZCB0aW1lIGNvbHVtbiBub3Qgc3BlY2lmaWVkIikpKTsKKwor CQkJCQlpZiAoY29udGV4dC0+cGVyaW9kU3RhcnQgJiYgc3RyY21wKGNvbnRleHQtPnBlcmlvZFN0 YXJ0LCBjb250ZXh0LT5zdGFydFRpbWVDb2xOYW1lKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQkgZXJy bXNnKCJwZXJpb2Qgc3RhcnQgdGltZSBjb2x1bW4gbmFtZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRo ZSBuYW1lIG9mIHJvdyBzdGFydCB0aW1lIGNvbHVtbiIpKSk7CisKKwkJCQkJaWYgKGNvbnRleHQt PnBlcmlvZEVuZCAmJiBzdHJjbXAoY29udGV4dC0+cGVyaW9kRW5kLCBjb250ZXh0LT5lbmRUaW1l Q29sTmFtZSkgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVS UkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygicGVyaW9kIGVuZCB0aW1lIGNv bHVtbiBuYW1lIG11c3QgYmUgdGhlIHNhbWUgYXMgIHRoZSBuYW1lIG9mIHJvdyBlbmQgdGltZSBj b2x1bW4iKSkpOworCQkJCX0KKwkJCX0KKwogCQkJLyoKIAkJCSAqIEFmdGVyIHRoZSBBTFRFUiBU WVBFIHBhc3MsIGRvIGNsZWFudXAgd29yayAodGhpcyBpcyBub3QgZG9uZSBpbgogCQkJICogQVRF eGVjQWx0ZXJDb2x1bW5UeXBlIHNpbmNlIGl0IHNob3VsZCBiZSBkb25lIG9ubHkgb25jZSBpZgpA QCAtNDkwMiwxNiArNDk0OSwxNiBAQCBBVEV4ZWNDbWQoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRh YmxlSW5mbyAqdGFiLAogCQkJCQkJCQkJCSAgIGxvY2ttb2RlKTsKIAkJCWJyZWFrOwogCQljYXNl IEFUX0Ryb3BDb2x1bW46CQkvKiBEUk9QIENPTFVNTiAqLwotCQkJYWRkcmVzcyA9IEFURXhlY0Ry b3BDb2x1bW4od3F1ZXVlLCByZWwsIGNtZC0+bmFtZSwKKwkJCWFkZHJlc3MgPSBBVEV4ZWNEcm9w Q29sdW1uKHdxdWV1ZSwgdGFiLCByZWwsIGNtZC0+bmFtZSwKIAkJCQkJCQkJCSAgIGNtZC0+YmVo YXZpb3IsIGZhbHNlLCBmYWxzZSwKIAkJCQkJCQkJCSAgIGNtZC0+bWlzc2luZ19vaywgbG9ja21v ZGUsCi0JCQkJCQkJCQkgICBOVUxMKTsKKwkJCQkJCQkJCSAgIE5VTEwsIGNvbnRleHQpOwogCQkJ YnJlYWs7CiAJCWNhc2UgQVRfRHJvcENvbHVtblJlY3Vyc2U6CS8qIERST1AgQ09MVU1OIHdpdGgg cmVjdXJzaW9uICovCi0JCQlhZGRyZXNzID0gQVRFeGVjRHJvcENvbHVtbih3cXVldWUsIHJlbCwg Y21kLT5uYW1lLAorCQkJYWRkcmVzcyA9IEFURXhlY0Ryb3BDb2x1bW4od3F1ZXVlLCB0YWIsIHJl bCwgY21kLT5uYW1lLAogCQkJCQkJCQkJICAgY21kLT5iZWhhdmlvciwgdHJ1ZSwgZmFsc2UsCiAJ CQkJCQkJCQkgICBjbWQtPm1pc3Npbmdfb2ssIGxvY2ttb2RlLAotCQkJCQkJCQkJICAgTlVMTCk7 CisJCQkJCQkJCQkgICBOVUxMLCBjb250ZXh0KTsKIAkJCWJyZWFrOwogCQljYXNlIEFUX0FkZElu ZGV4OgkJLyogQUREIElOREVYICovCiAJCQlhZGRyZXNzID0gQVRFeGVjQWRkSW5kZXgodGFiLCBy ZWwsIChJbmRleFN0bXQgKikgY21kLT5kZWYsIGZhbHNlLApAQCAtNTE5OCw3ICs1MjQ1LDcgQEAg QVRQYXJzZVRyYW5zZm9ybUNtZChMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkvKiBUcmFuc2Zvcm0gdGhlIEFsdGVyVGFibGVTdG10ICovCiAJYXRz dG10ID0gdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoUmVsYXRpb25HZXRSZWxpZChyZWwpLAogCQkJ CQkJCQkJIGF0c3RtdCwKLQkJCQkJCQkJCSBjb250ZXh0LT5xdWVyeVN0cmluZywKKwkJCQkJCQkJ CSBjb250ZXh0LAogCQkJCQkJCQkJICZiZWZvcmVTdG10cywKIAkJCQkJCQkJCSAmYWZ0ZXJTdG10 cyk7CiAKQEAgLTU1ODYsNiArNTYzMyw3IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUlu Zm8gKnRhYiwgT2lkIE9JRE5ld0hlYXAsIExPQ0tNT0RFIGxvY2ttb2RlKQogCUJ1bGtJbnNlcnRT dGF0ZSBiaXN0YXRlOwogCWludAkJCXRpX29wdGlvbnM7CiAJRXhwclN0YXRlICAqcGFydHF1YWxz dGF0ZSA9IE5VTEw7CisJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbzsKIAogCS8qCiAJICog T3BlbiB0aGUgcmVsYXRpb24ocykuICBXZSBoYXZlIHN1cmVseSBhbHJlYWR5IGxvY2tlZCB0aGUg ZXhpc3RpbmcKQEAgLTU2MjMsNiArNTY3MSw3IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXAsIExPQ0tNT0RFIGxvY2ttb2RlKQogCSAqLwogCiAJ ZXN0YXRlID0gQ3JlYXRlRXhlY3V0b3JTdGF0ZSgpOworCXJlc3VsdFJlbEluZm8gPSBtYWtlTm9k ZShSZXN1bHRSZWxJbmZvKTsKIAogCS8qIEJ1aWxkIHRoZSBuZWVkZWQgZXhwcmVzc2lvbiBleGVj dXRpb24gc3RhdGVzICovCiAJZm9yZWFjaChsLCB0YWItPmNvbnN0cmFpbnRzKQpAQCAtNTY5MCw2 ICs1NzM5LDEyIEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgT2lkIE9J RE5ld0hlYXAsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQlMaXN0Q2VsbCAgICpsYzsKIAkJU25hcHNo b3QJc25hcHNob3Q7CiAKKwkJSW5pdFJlc3VsdFJlbEluZm8ocmVzdWx0UmVsSW5mbywKKwkJCQkJ CSAgb2xkcmVsLAorCQkJCQkJICAwLAkvKiBkdW1teSByYW5nZXRhYmxlIGluZGV4ICovCisJCQkJ CQkgIE5VTEwsCisJCQkJCQkgIDApOworCiAJCWlmIChuZXdyZWwpCiAJCQllcmVwb3J0KERFQlVH MSwKIAkJCQkJKGVycm1zZ19pbnRlcm5hbCgicmV3cml0aW5nIHRhYmxlIFwiJXNcIiIsCkBAIC01 Nzc4LDYgKzU4MzMsMTMgQEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBP aWQgT0lETmV3SGVhcCwgTE9DS01PREUgbG9ja21vZGUpCiAJCQkJc2xvdF9nZXRhbGxhdHRycyhv bGRzbG90KTsKIAkJCQlFeGVjQ2xlYXJUdXBsZShuZXdzbG90KTsKIAorCQkJCS8qIE9ubHkgY3Vy cmVudCBkYXRhIGhhdmUgdG8gYmUgaW4gKi8KKwkJCQlpZiAodGFiLT5zeXN0ZW1WZXJzaW9uaW5n UmVtb3ZlZCkKKwkJCQl7CisJCQkJCWlmIChvbGRzbG90LT50dHNfdmFsdWVzW3RhYi0+YXR0bnVt IC0gMV0gIT0gUEdfSU5UNjRfTUFYKQorCQkJCQkJY29udGludWU7CisJCQkJfQorCiAJCQkJLyog Y29weSBhdHRyaWJ1dGVzICovCiAJCQkJbWVtY3B5KG5ld3Nsb3QtPnR0c192YWx1ZXMsIG9sZHNs b3QtPnR0c192YWx1ZXMsCiAJCQkJCSAgIHNpemVvZihEYXR1bSkgKiBvbGRzbG90LT50dHNfbnZh bGlkKTsKQEAgLTU4NTEsNiArNTkxMywxMCBAQCBBVFJld3JpdGVUYWJsZShBbHRlcmVkVGFibGVJ bmZvICp0YWIsIE9pZCBPSUROZXdIZWFwLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAkJCQlpbnNlcnRz bG90ID0gb2xkc2xvdDsKIAkJCX0KIAorCQkJLyogU2V0IHN5c3RlbSB0aW1lIGNvbHVtbnMgKi8K KwkJCWlmICh0YWItPnN5c3RlbVZlcnNpb25pbmdBZGRlZCkKKwkJCQlFeGVjU2V0Um93U3RhcnRU aW1lKGVzdGF0ZSwgaW5zZXJ0c2xvdCwgcmVzdWx0UmVsSW5mbyk7CisKIAkJCS8qIE5vdyBjaGVj ayBhbnkgY29uc3RyYWludHMgb24gdGhlIHBvc3NpYmx5LWNoYW5nZWQgdHVwbGUgKi8KIAkJCWVj b250ZXh0LT5lY3h0X3NjYW50dXBsZSA9IGluc2VydHNsb3Q7CiAKQEAgLTYxMTUsNiArNjE4MSwx MiBAQCBhbHRlcl90YWJsZV90eXBlX3RvX3N0cmluZyhBbHRlclRhYmxlVHlwZSBjbWR0eXBlKQog CQkJcmV0dXJuICJBTFRFUiBDT0xVTU4gLi4uIERST1AgSURFTlRJVFkiOwogCQljYXNlIEFUX1Jl QWRkU3RhdGlzdGljczoKIAkJCXJldHVybiBOVUxMOwkJLyogbm90IHJlYWwgZ3JhbW1hciAqLwor CQljYXNlIEFUX0FkZFN5c3RlbVZlcnNpb25pbmc6CisJCQlyZXR1cm4gIkFMVEVSIFRBQkxFIC4u LiBBREQgU1lTVEVNIFZFUlNJT05JTkciOworCQljYXNlIEFUX0Ryb3BTeXN0ZW1WZXJzaW9uaW5n OgorCQkJcmV0dXJuICJBTFRFUiBUQUJMRSAuLi4gRFJPUCBTWVNURU0gVkVSU0lPTklORyI7CisJ CWNhc2UgQVRfUGVyaW9kQ29sdW1uOgorCQkJcmV0dXJuICJBTFRFUiBUQUJMRSAuLi4gQUREIFBF UklPRCBDT0xVTU4iOwogCX0KIAogCXJldHVybiBOVUxMOwpAQCAtNjgwMyw2ICs2ODc1LDE0IEBA IEFURXhlY0FkZENvbHVtbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKIAkJCXRhYi0+cmV3cml0ZSB8PSBBVF9SRVdSSVRFX0RFRkFVTFRfVkFMOwog CX0KIAorCWlmIChjb2xEZWYtPmdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfUk9XX1NUQVJUX1RJTUUg fHwKKwkJY29sRGVmLT5nZW5lcmF0ZWQgPT0gQVRUUklCVVRFX1JPV19FTkRfVElNRSkKKwl7CisJ CS8qIG11c3QgZG8gYSByZXdyaXRlIGZvciBzeXN0ZW0gdGltZSBjb2x1bW5zICovCisJCXRhYi0+ cmV3cml0ZSB8PSBBVF9SRVdSSVRFX0NPTFVNTl9SRVdSSVRFOworCQl0YWItPnN5c3RlbVZlcnNp b25pbmdBZGRlZCA9IHRydWU7CisJfQorCiAJLyoKIAkgKiBUZWxsIFBoYXNlIDMgdG8gZmlsbCBp biB0aGUgZGVmYXVsdCBleHByZXNzaW9uLCBpZiB0aGVyZSBpcyBvbmUuCiAJICoKQEAgLTcxMjMs NiArNzIwMywxMyBAQCBBVEV4ZWNEcm9wTm90TnVsbChSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIg KmNvbE5hbWUsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIg b2YgcmVsYXRpb24gXCIlc1wiIGlzIGFuIGlkZW50aXR5IGNvbHVtbiIsCiAJCQkJCQljb2xOYW1l LCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogCisJaWYgKGF0dFR1cC0+YXR0Z2Vu ZXJhdGVkID09IEFUVFJJQlVURV9ST1dfU1RBUlRfVElNRSB8fAorCQlhdHRUdXAtPmF0dGdlbmVy YXRlZCA9PSBBVFRSSUJVVEVfUk9XX0VORF9USU1FKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShl cnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wi IG9mIHJlbGF0aW9uIFwiJXNcIiBpcyBzeXN0ZW0gdGltZSBjb2x1bW4iLAorCQkJCQkJY29sTmFt ZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKKwogCS8qCiAJICogQ2hlY2sgdGhh dCB0aGUgYXR0cmlidXRlIGlzIG5vdCBpbiBhIHByaW1hcnkga2V5CiAJICoKQEAgLTc1NjYsNiAr NzY1MywxMyBAQCBBVEV4ZWNBZGRJZGVudGl0eShSZWxhdGlvbiByZWwsIGNvbnN0IGNoYXIgKmNv bE5hbWUsCiAJCQkJIGVycm1zZygiY2Fubm90IGFsdGVyIHN5c3RlbSBjb2x1bW4gXCIlc1wiIiwK IAkJCQkJCWNvbE5hbWUpKSk7CiAKKwlpZiAoYXR0VHVwLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklC VVRFX1JPV19TVEFSVF9USU1FIHx8CisJCWF0dFR1cC0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9ST1dfRU5EX1RJTUUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9T WU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIl c1wiIGlzIHN5c3RlbSB0aW1lIGNvbHVtbiIsCisJCQkJCQljb2xOYW1lLCBSZWxhdGlvbkdldFJl bGF0aW9uTmFtZShyZWwpKSkpOworCiAJLyoKIAkgKiBDcmVhdGluZyBhIGNvbHVtbiBhcyBpZGVu dGl0eSBpbXBsaWVzIE5PVCBOVUxMLCBzbyBhZGRpbmcgdGhlIGlkZW50aXR5CiAJICogdG8gYW4g ZXhpc3RpbmcgY29sdW1uIHRoYXQgaXMgbm90IE5PVCBOVUxMIHdvdWxkIGNyZWF0ZSBhIHN0YXRl IHRoYXQKQEAgLTc2NjYsNiArNzc2MCwxMyBAQCBBVEV4ZWNTZXRJZGVudGl0eShSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsIE5vZGUgKmRlZiwgTE9DS01PREUgbG9ja21vZAogCQkJ CSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVsYXRpb24gXCIlc1wiIGlzIG5vdCBhbiBpZGVu dGl0eSBjb2x1bW4iLAogCQkJCQkJY29sTmFtZSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVs KSkpKTsKIAorCWlmIChhdHRUdXAtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfUk9XX1NUQVJU X1RJTUUgfHwKKwkJYXR0VHVwLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX1JPV19FTkRfVElN RSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBcIiVzXCIgaXMgc3lzdGVt IHRpbWUgY29sdW1uIiwKKwkJCQkJCWNvbE5hbWUsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJl bCkpKSk7CisKIAlpZiAoZ2VuZXJhdGVkRWwpCiAJewogCQlhdHRUdXAtPmF0dGlkZW50aXR5ID0g ZGVmR2V0SW50MzIoZ2VuZXJhdGVkRWwpOwpAQCAtODA3Myw2ICs4MTc0LDEzIEBAIEFURXhlY1Nl dE9wdGlvbnMoUmVsYXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLCBOb2RlICpvcHRpb25z LAogCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciBzeXN0ZW0gY29sdW1uIFwiJXNcIiIsCiAJCQkJ CQljb2xOYW1lKSkpOwogCisJaWYgKGF0dHJ0dXBsZS0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9ST1dfU1RBUlRfVElNRSB8fAorCQlhdHRydHVwbGUtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJV VEVfUk9XX0VORF9USU1FKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIG9mIHJlbGF0aW9uIFwi JXNcIiBpcyBzeXN0ZW0gdGltZSBjb2x1bW4iLAorCQkJCQkJY29sTmFtZSwgUmVsYXRpb25HZXRS ZWxhdGlvbk5hbWUocmVsKSkpKTsKKwogCS8qIEdlbmVyYXRlIG5ldyBwcm9wb3NlZCBhdHRvcHRp b25zICh0ZXh0IGFycmF5KSAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRyKEFUVE5BTUUsIHR1 cGxlLCBBbnVtX3BnX2F0dHJpYnV0ZV9hdHRvcHRpb25zLAogCQkJCQkJCSZpc251bGwpOwpAQCAt ODMwNCwxMSArODQxMiwxMiBAQCBBVFByZXBEcm9wQ29sdW1uKExpc3QgKip3cXVldWUsIFJlbGF0 aW9uIHJlbCwgYm9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKICAqIGNoZWNrZWQgcmVjdXJz aXZlbHkuCiAgKi8KIHN0YXRpYyBPYmplY3RBZGRyZXNzCi1BVEV4ZWNEcm9wQ29sdW1uKExpc3Qg Kip3cXVldWUsIFJlbGF0aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKK0FURXhlY0Ryb3BD b2x1bW4oTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWws IGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQkJIERyb3BCZWhhdmlvciBiZWhhdmlvciwKIAkJCQkg Ym9vbCByZWN1cnNlLCBib29sIHJlY3Vyc2luZywKIAkJCQkgYm9vbCBtaXNzaW5nX29rLCBMT0NL TU9ERSBsb2NrbW9kZSwKLQkJCQkgT2JqZWN0QWRkcmVzc2VzICphZGRycykKKwkJCQkgT2JqZWN0 QWRkcmVzc2VzICphZGRycywKKwkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0 KQogewogCUhlYXBUdXBsZQl0dXBsZTsKIAlGb3JtX3BnX2F0dHJpYnV0ZSB0YXJnZXRhdHQ7CkBA IC04MzUxLDYgKzg0NjAsMzIgQEAgQVRFeGVjRHJvcENvbHVtbihMaXN0ICoqd3F1ZXVlLCBSZWxh dGlvbiByZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAKIAlhdHRudW0gPSB0YXJnZXRhdHQtPmF0 dG51bTsKIAorI2lmZGVmIE5PVFVTRUQKKwlpZiAodGFyZ2V0YXR0LT5hdHRnZW5lcmF0ZWQgPT0g QVRUUklCVVRFX1JPV19TVEFSVF9USU1FIHx8CisJCXRhcmdldGF0dC0+YXR0Z2VuZXJhdGVkID09 IEFUVFJJQlVURV9ST1dfRU5EX1RJTUUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVs YXRpb24gXCIlc1wiIGlzIHN5c3RlbSB0aW1lIGNvbHVtbiIsCisJCQkJCQljb2xOYW1lLCBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworI2VuZGlmCisKKwkvKgorCSAqIFJldmlld2Vy cyBub3RlOiBXZSBzaG91bGQgYmUgZGlzYWxsb3dpbmcgRFJPUCBDT0xVTU4gb24gYQorCSAqIHN5 c3RlbSB0aW1lIGNvbHVtbiwgYnV0IERST1AgU1lTVEVNIFZFUlNJT05JTkcgaXMgY3VycmVudGx5 CisJICoga2x1Z2VkIHRvIGdlbmVyYXRlIG11bHRpcGxlIERyb3BDb2x1bW4gc3ViY29tbWFuZHMs IHdoaWNoCisJICogbWVhbnMgd2UgbmVlZCB0byBhbGxvdyB0aGlzIGZvciBub3csIGV2ZW4gdGhv dWdoIGFuIGV4cGxpY2l0CisJICogRFJPUCBDT0xVTU4gd2lsbCBjcmFzaCB0aGUgc2VydmVyLiBO ZWVkcyB3b3JrLgorCSAqLworCWlmICh0YXJnZXRhdHQtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJV VEVfUk9XX0VORF9USU1FKQorCXsKKwkJdGFiLT5hdHRudW0gPSBhdHRudW07CisJCXRhYi0+c3lz dGVtVmVyc2lvbmluZ1JlbW92ZWQgPSB0cnVlOworCQl0YWItPnJld3JpdGUgfD0gQVRfUkVXUklU RV9DT0xVTU5fUkVXUklURTsKKwkJY29udGV4dC0+ZW5kVGltZUNvbE5hbWUgPSBOYW1lU3RyKHRh cmdldGF0dC0+YXR0bmFtZSk7CisJfQorCWlmICh0YXJnZXRhdHQtPmF0dGdlbmVyYXRlZCA9PSBB VFRSSUJVVEVfUk9XX1NUQVJUX1RJTUUpCisJCWNvbnRleHQtPnN0YXJ0VGltZUNvbE5hbWUgPSBO YW1lU3RyKHRhcmdldGF0dC0+YXR0bmFtZSk7CisKIAkvKiBDYW4ndCBkcm9wIGEgc3lzdGVtIGF0 dHJpYnV0ZSAqLwogCWlmIChhdHRudW0gPD0gMCkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTg0MTIs MTEgKzg1NDcsMTUgQEAgQVRFeGVjRHJvcENvbHVtbihMaXN0ICoqd3F1ZXVlLCBSZWxhdGlvbiBy ZWwsIGNvbnN0IGNoYXIgKmNvbE5hbWUsCiAJCQlPaWQJCQljaGlsZHJlbGlkID0gbGZpcnN0X29p ZChjaGlsZCk7CiAJCQlSZWxhdGlvbgljaGlsZHJlbDsKIAkJCUZvcm1fcGdfYXR0cmlidXRlIGNo aWxkYXR0OworCQkJQWx0ZXJlZFRhYmxlSW5mbyAqY2hpbGR0YWI7CiAKIAkJCS8qIGZpbmRfaW5o ZXJpdGFuY2VfY2hpbGRyZW4gYWxyZWFkeSBnb3QgbG9jayAqLwogCQkJY2hpbGRyZWwgPSB0YWJs ZV9vcGVuKGNoaWxkcmVsaWQsIE5vTG9jayk7CiAJCQlDaGVja1RhYmxlTm90SW5Vc2UoY2hpbGRy ZWwsICJBTFRFUiBUQUJMRSIpOwogCisJCQkvKiBGaW5kIG9yIGNyZWF0ZSB3b3JrIHF1ZXVlIGVu dHJ5IGZvciB0aGlzIHRhYmxlICovCisJCQljaGlsZHRhYiA9IEFUR2V0UXVldWVFbnRyeSh3cXVl dWUsIGNoaWxkcmVsKTsKKwogCQkJdHVwbGUgPSBTZWFyY2hTeXNDYWNoZUNvcHlBdHROYW1lKGNo aWxkcmVsaWQsIGNvbE5hbWUpOwogCQkJaWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cGxlKSkJLyog c2hvdWxkbid0IGhhcHBlbiAqLwogCQkJCWVsb2coRVJST1IsICJjYWNoZSBsb29rdXAgZmFpbGVk IGZvciBhdHRyaWJ1dGUgXCIlc1wiIG9mIHJlbGF0aW9uICV1IiwKQEAgLTg0MzcsOSArODU3Niw5 IEBAIEFURXhlY0Ryb3BDb2x1bW4oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBjb25zdCBj aGFyICpjb2xOYW1lLAogCQkJCWlmIChjaGlsZGF0dC0+YXR0aW5oY291bnQgPT0gMSAmJiAhY2hp bGRhdHQtPmF0dGlzbG9jYWwpCiAJCQkJewogCQkJCQkvKiBUaW1lIHRvIGRlbGV0ZSB0aGlzIGNo aWxkIGNvbHVtbiwgdG9vICovCi0JCQkJCUFURXhlY0Ryb3BDb2x1bW4od3F1ZXVlLCBjaGlsZHJl bCwgY29sTmFtZSwKKwkJCQkJQVRFeGVjRHJvcENvbHVtbih3cXVldWUsIGNoaWxkdGFiLCBjaGls ZHJlbCwgY29sTmFtZSwKIAkJCQkJCQkJCSBiZWhhdmlvciwgdHJ1ZSwgdHJ1ZSwKLQkJCQkJCQkJ CSBmYWxzZSwgbG9ja21vZGUsIGFkZHJzKTsKKwkJCQkJCQkJCSBmYWxzZSwgbG9ja21vZGUsIGFk ZHJzLCBjb250ZXh0KTsKIAkJCQl9CiAJCQkJZWxzZQogCQkJCXsKQEAgLTEwOTI4LDYgKzExMDY3 LDcgQEAgdHJhbnNmb3JtRmtleUNoZWNrQXR0cnMoUmVsYXRpb24gcGtyZWwsCiAJTGlzdENlbGwg ICAqaW5kZXhvaWRzY2FuOwogCWludAkJCWksCiAJCQkJajsKKwlpbnQJCQluYXR0cnMgPSBudW1h dHRyczsKIAogCS8qCiAJICogUmVqZWN0IGR1cGxpY2F0ZSBhcHBlYXJhbmNlcyBvZiBjb2x1bW5z IGluIHRoZSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdC4KQEAgLTEwOTQ3LDYgKzExMDg3LDMwIEBA IHRyYW5zZm9ybUZrZXlDaGVja0F0dHJzKFJlbGF0aW9uIHBrcmVsLAogCQl9CiAJfQogCisJLyoK KwkgKiBTUUwgU3RhbmRhcmQgcmVxdWlyZXMgdGhhdCBhbiBGSyBtdXN0IHJlZmVyIHRvIGEgY3Vy cmVudCByb3cgb2YgdGhlIHBrcmVsLAorCSAqIGlmIGl0IHN5c3RlbSB2ZXJzaW9uZWQuIFRodXMg dGhlIEZLIGNhbm5vdCBjb250YWluIHRoZSBwZXJpb2Qgc3RhcnQgb3IgZW5kCisJICogdGltZSBj b2x1bW5zIGluIHRoZSByZWZlcmVuY2VkLWNvbHVtbnMgbGlzdC4KKwkgKi8KKwlpZiAocGtyZWwt PnJkX2F0dC0+Y29uc3RyICYmCisJCXBrcmVsLT5yZF9hdHQtPmNvbnN0ci0+aGFzX3N5c3RlbV92 ZXJzaW9uaW5nKQorCXsKKwkJZm9yIChpID0gMDsgaSA8IG51bWF0dHJzOyBpKyspCisJCQlpZiAo cGtyZWwtPnJkX2F0dC0+Y29uc3RyLT5zdl9zdGFydHRpbWUgPT0gYXR0bnVtc1tpXSB8fAorCQkJ CXBrcmVsLT5yZF9hdHQtPmNvbnN0ci0+c3ZfZW5kdGltZSA9PSBhdHRudW1zW2ldKQorCQkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfRk9SRUlHTl9LRVkp LAorCQkJCQkJIGVycm1zZygiZm9yZWlnbiBrZXkgcmVmZXJlbmNlZC1jb2x1bW5zIGxpc3QgbXVz dCBub3QgY29udGFpbiBzeXN0ZW1fdGltZSBwZXJpb2QgY29sdW1ucyIKKwkJCQkJCQkJIiBvZiBh IHN5c3RlbSB2ZXJzaW9uZWQgdGFibGUiKSkpOworCisJCS8qCisJCSAqIFN5c3RlbSB2ZXJzaW9u ZWQgdGFibGVzIG11c3QgaGF2ZSBhIHVuaXF1ZSBpbmRleCBvbiB0aGUgUEsgcGx1cyBwZXJpb2QK KwkJICogZW5kIHRpbWUsIHNvIHdlIGFyZSBsb29raW5nIGZvciBhbiBpbmRleCB0aGF0IGhhcyBv bmUgbW9yZSBhdHRyaWJ1dGUKKwkJICogdGhhbiB0aGUgbnVtYmVyIG9mIGF0dHJzIGluIHRoZSBy ZWZlcmVuY2VkLWNvbHVtbnMgbGlzdC4KKwkJICovCisJCW5hdHRycysrOworCX0KKwogCS8qCiAJ ICogR2V0IHRoZSBsaXN0IG9mIGluZGV4IE9JRHMgZm9yIHRoZSB0YWJsZSBmcm9tIHRoZSByZWxj YWNoZSwgYW5kIGxvb2sgdXAKIAkgKiBlYWNoIG9uZSBpbiB0aGUgcGdfaW5kZXggc3lzY2FjaGUs IGFuZCBtYXRjaCB1bmlxdWUgaW5kZXhlcyB0byB0aGUgbGlzdApAQCAtMTA5NzAsNyArMTExMzQs NyBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJICogcGFydGlh bCBpbmRleDsgZm9yZ2V0IGl0IGlmIHRoZXJlIGFyZSBhbnkgZXhwcmVzc2lvbnMsIHRvby4gSW52 YWxpZAogCQkgKiBpbmRleGVzIGFyZSBvdXQgYXMgd2VsbC4KIAkJICovCi0JCWlmIChpbmRleFN0 cnVjdC0+aW5kbmtleWF0dHMgPT0gbnVtYXR0cnMgJiYKKwkJaWYgKGluZGV4U3RydWN0LT5pbmRu a2V5YXR0cyA9PSBuYXR0cnMgJiYKIAkJCWluZGV4U3RydWN0LT5pbmRpc3VuaXF1ZSAmJgogCQkJ aW5kZXhTdHJ1Y3QtPmluZGlzdmFsaWQgJiYKIAkJCWhlYXBfYXR0aXNudWxsKGluZGV4VHVwbGUs IEFudW1fcGdfaW5kZXhfaW5kcHJlZCwgTlVMTCkgJiYKQEAgLTEwOTk1LDExICsxMTE1OSwxNyBA QCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhSZWxhdGlvbiBwa3JlbCwKIAkJCSAqIHN0YXJ0IG9m IHRoaXMgZnVuY3Rpb24sIGFuZCB3ZSBjaGVja2VkIGFib3ZlIHRoYXQgdGhlIG51bWJlciBvZgog CQkJICogaW5kZXggY29sdW1ucyBhZ3JlZXMsIHNvIGlmIHdlIGZpbmQgYSBtYXRjaCBmb3IgZWFj aCBhdHRudW1zW10KIAkJCSAqIGVudHJ5IHRoZW4gd2UgbXVzdCBoYXZlIGEgb25lLXRvLW9uZSBt YXRjaCBpbiBzb21lIG9yZGVyLgorCQkJICoKKwkJCSAqIElmIHBrcmVsIGlzIGEgc3lzdGVtIHZl cnNpb25lZCB0YWJsZSB0aGVuIGl0cyBQSyB3aWxsIGluY2x1ZGUKKwkJCSAqIHBlcmlvZCBlbmQg dGltZSwgYnV0IHRoYXQgd2lsbCBuZXZlciBtYXRjaCBhbnl0aGluZyBpbiB0aGUKKwkJCSAqIHJl ZmVyZW5jZWQtY29sdW1ucyBsaXN0IGJlY2F1c2Ugb2Ygb3VyIGNoZWNrIGFib3ZlLiBTbyB3ZSBk b24ndAorCQkJICogdHJ5IHRvIG1hdGNoIHRoYXQuIGkuZS4gd2UgaGF2ZSBudW1hdHRycyBjb2x1 bW5zIHRvIG1hdGNoLCB5ZXQKKwkJCSAqIHdlJ3JlIGxvb2tpbmcgZm9yIGFuIGluZGV4IHdpdGgg bnVtYXR0cnMrMSBjb2x1bW5zIGluIGl0LgogCQkJICovCiAJCQlmb3IgKGkgPSAwOyBpIDwgbnVt YXR0cnM7IGkrKykKIAkJCXsKIAkJCQlmb3VuZCA9IGZhbHNlOwotCQkJCWZvciAoaiA9IDA7IGog PCBudW1hdHRyczsgaisrKQorCQkJCWZvciAoaiA9IDA7IGogPCBuYXR0cnM7IGorKykKIAkJCQl7 CiAJCQkJCWlmIChhdHRudW1zW2ldID09IGluZGV4U3RydWN0LT5pbmRrZXkudmFsdWVzW2pdKQog CQkJCQl7CkBAIC0xMTAxMiw2ICsxMTE4MiwyNyBAQCB0cmFuc2Zvcm1Ga2V5Q2hlY2tBdHRycyhS ZWxhdGlvbiBwa3JlbCwKIAkJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qCisJCQkgKiBDaGVjayB0 aGF0IHRoZSBsYXN0IHJlbWFpbmluZyB1bm1hdGNoZWQgY29sdW1uIG9mIHRoZSBpbmRleAorCQkJ ICogaXMgdGhlIHBlcmlvZCBlbmR0aW1lIG9mIHRoZSBzeXN0ZW0gdmVyc2lvbmVkIHBrcmVsLgor CQkJICovCisJCQlpZiAoZm91bmQgJiYgbmF0dHJzICE9IG51bWF0dHJzKQorCQkJeworCQkJCWZv dW5kID0gZmFsc2U7CisJCQkJZm9yIChqID0gMDsgaiA8IG5hdHRyczsgaisrKQorCQkJCXsKKwkJ CQkJaWYgKHBrcmVsLT5yZF9hdHQtPmNvbnN0ci0+c3ZfZW5kdGltZSA9PSBpbmRleFN0cnVjdC0+ aW5ka2V5LnZhbHVlc1tqXSkKKwkJCQkJeworCQkJCQkJLyoKKwkJCQkJCSAqIEZLIGNvZGUgd2ls bCBhdXRvbWF0aWNhbGx5IGFkZCBzdGFydHRpbWUgPSAnaW5maW5pdHknCisJCQkJCQkgKiBzbyB3 ZSBkb24ndCBuZWVkIHRvIGFkZCBhbnkgb3BjbGFzc2VzIGZvciB0aGF0IG1hdGNoIGhlcmUuCisJ CQkJCQkgKi8KKwkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJ fQorCQkJfQorCiAJCQkvKgogCQkJICogUmVmdXNlIHRvIHVzZSBhIGRlZmVycmFibGUgdW5pcXVl L3ByaW1hcnkga2V5LiAgVGhpcyBpcyBwZXIgU1FMCiAJCQkgKiBzcGVjLCBhbmQgdGhlcmUgd291 bGQgYmUgYSBsb3Qgb2YgaW50ZXJlc3Rpbmcgc2VtYW50aWMgcHJvYmxlbXMKQEAgLTEyMDQwLDYg KzEyMjMxLDEyIEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRF RCksCiAJCQkJIGVycm1zZygiY2Fubm90IGFsdGVyIHR5cGUgb2YgY29sdW1uIFwiJXNcIiB0d2lj ZSIsCiAJCQkJCQljb2xOYW1lKSkpOworCWlmIChhdHRUdXAtPmF0dGdlbmVyYXRlZCA9PSBBVFRS SUJVVEVfUk9XX1NUQVJUX1RJTUUgfHwKKwkJYXR0VHVwLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklC VVRFX1JPV19FTkRfVElNRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJIGVycm1zZygiY29sdW1uIFwiJXNcIiBvZiByZWxhdGlvbiBc IiVzXCIgaXMgc3lzdGVtIHRpbWUgY29sdW1uIiwKKwkJCQkJCWNvbE5hbWUsIFJlbGF0aW9uR2V0 UmVsYXRpb25OYW1lKHJlbCkpKSk7CiAKIAkvKiBMb29rIHVwIHRoZSB0YXJnZXQgdHlwZSAoc2hv dWxkIG5vdCBmYWlsLCBzaW5jZSBwcmVwIGZvdW5kIGl0KSAqLwogCXR5cGVUdXBsZSA9IHR5cGVu YW1lVHlwZShOVUxMLCB0eXBlTmFtZSwgJnRhcmdldHR5cG1vZCk7CkBAIC0xMjgyMSwxMCArMTMw MTgsMTMgQEAgQVRQb3N0QWx0ZXJUeXBlUGFyc2UoT2lkIG9sZElkLCBPaWQgb2xkUmVsSWQsIE9p ZCByZWZSZWxJZCwgY2hhciAqY21kLAogCQl7CiAJCQlMaXN0CSAgICpiZWZvcmVTdG10czsKIAkJ CUxpc3QJICAgKmFmdGVyU3RtdHM7CisJCQlBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgY29udGV4 dDsKKworCQkJY29udGV4dC5xdWVyeVN0cmluZyA9IGNtZDsKIAogCQkJc3RtdCA9IChOb2RlICop IHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KG9sZFJlbElkLAogCQkJCQkJCQkJCQkJCShBbHRlclRh YmxlU3RtdCAqKSBzdG10LAotCQkJCQkJCQkJCQkJCWNtZCwKKwkJCQkJCQkJCQkJCQkmY29udGV4 dCwKIAkJCQkJCQkJCQkJCQkmYmVmb3JlU3RtdHMsCiAJCQkJCQkJCQkJCQkJJmFmdGVyU3RtdHMp OwogCQkJcXVlcnl0cmVlX2xpc3QgPSBsaXN0X2NvbmNhdChxdWVyeXRyZWVfbGlzdCwgYmVmb3Jl U3RtdHMpOwpAQCAtMTMxNzcsNiArMTMzNzcsMTMgQEAgQVRFeGVjQWx0ZXJDb2x1bW5HZW5lcmlj T3B0aW9ucyhSZWxhdGlvbiByZWwsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAogCQkJCSBlcnJtc2coImNhbm5vdCBhbHRlciBzeXN0ZW0gY29sdW1uIFwiJXNc IiIsIGNvbE5hbWUpKSk7CiAKKwlpZiAoYXR0dGFibGVmb3JtLT5hdHRnZW5lcmF0ZWQgPT0gQVRU UklCVVRFX1JPV19TVEFSVF9USU1FIHx8CisJCWF0dHRhYmxlZm9ybS0+YXR0Z2VuZXJhdGVkID09 IEFUVFJJQlVURV9ST1dfRU5EX1RJTUUpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgb2YgcmVs YXRpb24gXCIlc1wiIGlzIHN5c3RlbSB0aW1lIGNvbHVtbiIsCisJCQkJCQljb2xOYW1lLCBSZWxh dGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOworCiAKIAkvKiBJbml0aWFsaXplIGJ1ZmZlcnMg Zm9yIG5ldyB0dXBsZSB2YWx1ZXMgKi8KIAltZW1zZXQocmVwbF92YWwsIDAsIHNpemVvZihyZXBs X3ZhbCkpOwpAQCAtMTY4MDEsNyArMTcwMDgsOCBAQCBDb21wdXRlUGFydGl0aW9uQXR0cnMoUGFy c2VTdGF0ZSAqcHN0YXRlLCBSZWxhdGlvbiByZWwsIExpc3QgKnBhcnRQYXJhbXMsIEF0dHJOdQog CQkJICogR2VuZXJhdGVkIGNvbHVtbnMgY2Fubm90IHdvcms6IFRoZXkgYXJlIGNvbXB1dGVkIGFm dGVyIEJFRk9SRQogCQkJICogdHJpZ2dlcnMsIGJ1dCBwYXJ0aXRpb24gcm91dGluZyBpcyBkb25l IGJlZm9yZSBhbGwgdHJpZ2dlcnMuCiAJCQkgKi8KLQkJCWlmIChhdHRmb3JtLT5hdHRnZW5lcmF0 ZWQpCisJCQlpZiAoYXR0Zm9ybS0+YXR0Z2VuZXJhdGVkICYmIGF0dGZvcm0tPmF0dGdlbmVyYXRl ZCAhPSBBVFRSSUJVVEVfUk9XX1NUQVJUX1RJTUUKKwkJCQkmJiBhdHRmb3JtLT5hdHRnZW5lcmF0 ZWQgIT0gQVRUUklCVVRFX1JPV19FTkRfVElNRSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJ KGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX09CSkVDVF9ERUZJTklUSU9OKSwKIAkJCQkJCSBlcnJt c2coImNhbm5vdCB1c2UgZ2VuZXJhdGVkIGNvbHVtbiBpbiBwYXJ0aXRpb24ga2V5IiksCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5k cy92aWV3LmMKaW5kZXggNGRmMDVhMGIzMy4uYTk3NzdkOWY1ZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvdmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYwpA QCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUg InBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCisj aW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVE ZWZpbmUuaCIKICNpbmNsdWRlICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKQEAgLTQyNSw2ICs0MjYsMTEgQEAgRGVmaW5lVmlldyhW aWV3U3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAKIAl2aWV3UGFyc2UgPSBw YXJzZV9hbmFseXplKHJhd3N0bXQsIHF1ZXJ5U3RyaW5nLCBOVUxMLCAwLCBOVUxMKTsKIAorCS8q CisJICogQ2hlY2sgYW5kIGFkZCBmaWx0ZXIgY2xhdXNlIHRvIGZpbHRlciBvdXQgaGlzdG9yaWNh bCBkYXRhLgorCSAqLworCWFkZF9oaXN0b3J5X2RhdGFfZmlsdGVyKHZpZXdQYXJzZSk7CisKIAkv KgogCSAqIFRoZSBncmFtbWFyIHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgcmVzdWx0IGlzIGEgc2lu Z2xlIFNFTEVDVCBRdWVyeS4KIAkgKiBIb3dldmVyLCBpdCBkb2Vzbid0IGZvcmJpZCBTRUxFQ1Qg SU5UTywgc28gd2UgaGF2ZSB0byBjaGVjayBmb3IgdGhhdC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9k ZU1vZGlmeVRhYmxlLmMKaW5kZXggYzI0Njg0YWE2Zi4uZTdjZmY0YjU2NSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTU3Miw2ICs1NzIsMTQ1IEBAIEV4ZWNHZXRV cGRhdGVOZXdUdXBsZShSZXN1bHRSZWxJbmZvICpyZWxpbmZvLAogfQogCiAKKy8qCisgKiBTZXQg cm93IHN0YXJ0IHRpbWUgY29sdW1uIGZvciBhIHR1cGxlLgorICovCit2b2lkCitFeGVjU2V0Um93 U3RhcnRUaW1lKEVTdGF0ZSAqZXN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbykKK3sKKwlSZWxhdGlvbglyZWwgPSByZXN1bHRSZWxJbmZvLT5y aV9SZWxhdGlvbkRlc2M7CisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJl bCk7CisJaW50CQkJbmF0dHMgPSB0dXBkZXNjLT5uYXR0czsKKwlNZW1vcnlDb250ZXh0IG9sZENv bnRleHQ7CisJRGF0dW0JICAgKnZhbHVlczsKKwlib29sCSAgICpudWxsczsKKworCUFzc2VydCh0 dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVzYy0+Y29uc3RyLT5oYXNfc3lzdGVtX3ZlcnNpb25pbmcp OworCisJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9y eUNvbnRleHQoZXN0YXRlKSk7CisKKwl2YWx1ZXMgPSBwYWxsb2Moc2l6ZW9mKCp2YWx1ZXMpICog bmF0dHMpOworCW51bGxzID0gcGFsbG9jKHNpemVvZigqbnVsbHMpICogbmF0dHMpOworCisJc2xv dF9nZXRhbGxhdHRycyhzbG90KTsKKwltZW1jcHkobnVsbHMsIHNsb3QtPnR0c19pc251bGwsIHNp emVvZigqbnVsbHMpICogbmF0dHMpOworCisJZm9yIChpbnQgaSA9IDA7IGkgPCBuYXR0czsgaSsr KQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0ciA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywg aSk7CisKKwkJLyoKKwkJICogV2Ugc2V0IGluZmluaXR5IGZvciByb3cgZW5kIHRpbWUgY29sdW1u IGZvciBhIHR1cGxlIGJlY2F1c2Ugcm93IGVuZAorCQkgKiB0aW1lIGlzIG5vdCB5ZXQga25vd24u CisJCSAqLworCQlpZiAoYXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9ST1dfU1RBUlRf VElNRSkKKwkJeworCQkJRGF0dW0JCXZhbDsKKworCQkJdmFsID0gR2V0Q3VycmVudFRyYW5zYWN0 aW9uU3RhcnRUaW1lc3RhbXAoKTsKKwkJCXZhbHVlc1tpXSA9IHZhbDsKKwkJCW51bGxzW2ldID0g ZmFsc2U7CisJCX0KKwkJZWxzZSBpZiAoYXR0ci0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVURV9S T1dfRU5EX1RJTUUpCisJCXsKKwkJCURhdHVtCQl2YWw7CisKKwkJCXZhbCA9IERpcmVjdEZ1bmN0 aW9uQ2FsbDModGltZXN0YW1wdHpfaW4sCisJCQkJCQkJCQkgIENTdHJpbmdHZXREYXR1bSgiaW5m aW5pdHkiKSwKKwkJCQkJCQkJCSAgT2JqZWN0SWRHZXREYXR1bShJbnZhbGlkT2lkKSwKKwkJCQkJ CQkJCSAgSW50MzJHZXREYXR1bSgtMSkpOworCisKKwkJCXZhbHVlc1tpXSA9IHZhbDsKKwkJCW51 bGxzW2ldID0gZmFsc2U7CisJCX0KKwkJZWxzZQorCQl7CisJCQlpZiAoIW51bGxzW2ldKQorCQkJ CXZhbHVlc1tpXSA9IGRhdHVtQ29weShzbG90LT50dHNfdmFsdWVzW2ldLCBhdHRyLT5hdHRieXZh bCwgYXR0ci0+YXR0bGVuKTsKKwkJfQorCX0KKworCUV4ZWNDbGVhclR1cGxlKHNsb3QpOworCW1l bWNweShzbG90LT50dHNfdmFsdWVzLCB2YWx1ZXMsIHNpemVvZigqdmFsdWVzKSAqIG5hdHRzKTsK KwltZW1jcHkoc2xvdC0+dHRzX2lzbnVsbCwgbnVsbHMsIHNpemVvZigqbnVsbHMpICogbmF0dHMp OworCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShzbG90KTsKKwlFeGVjTWF0ZXJpYWxpemVTbG90KHNs b3QpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZENvbnRleHQpOworfQorCisvKgorICog U2V0IHJvdyBlbmQgdGltZSBjb2x1bW4gZm9yIGEgdHVwbGUuCisgKi8KK2Jvb2wKK0V4ZWNTZXRS b3dFbmRUaW1lKEVTdGF0ZSAqZXN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbykKK3sKKwlSZWxhdGlvbglyZWwgPSByZXN1bHRSZWxJbmZvLT5y aV9SZWxhdGlvbkRlc2M7CisJVHVwbGVEZXNjCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJl bCk7CisJaW50CQkJbmF0dHMgPSB0dXBkZXNjLT5uYXR0czsKKwlNZW1vcnlDb250ZXh0IG9sZENv bnRleHQ7CisJRGF0dW0JICAgKnZhbHVlczsKKwlib29sCSAgICpudWxsczsKKwlib29sCQlzYW1l X3hhY3QgPSBmYWxzZTsKKworCUFzc2VydCh0dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVzYy0+Y29u c3RyLT5oYXNfc3lzdGVtX3ZlcnNpb25pbmcpOworCisJb2xkQ29udGV4dCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CisKKwl2YWx1ZXMg PSBwYWxsb2Moc2l6ZW9mKCp2YWx1ZXMpICogbmF0dHMpOworCW51bGxzID0gcGFsbG9jKHNpemVv ZigqbnVsbHMpICogbmF0dHMpOworCisJc2xvdF9nZXRhbGxhdHRycyhzbG90KTsKKwltZW1jcHko bnVsbHMsIHNsb3QtPnR0c19pc251bGwsIHNpemVvZigqbnVsbHMpICogbmF0dHMpOworCisJZm9y IChpbnQgaSA9IDA7IGkgPCBuYXR0czsgaSsrKQorCXsKKwkJRm9ybV9wZ19hdHRyaWJ1dGUgYXR0 ciA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgaSk7CisKKwkJaWYgKGF0dHItPmF0dGdlbmVyYXRl ZCA9PSBBVFRSSUJVVEVfUk9XX1NUQVJUX1RJTUUpCisJCXsKKwkJCUFzc2VydCghbnVsbHNbaV0p OworCQkJdmFsdWVzW2ldID0gZGF0dW1Db3B5KHNsb3QtPnR0c192YWx1ZXNbaV0sIGF0dHItPmF0 dGJ5dmFsLCBhdHRyLT5hdHRsZW4pOworCisJCQkvKgorCQkJICogQXZvaWQgYW5vbWFsaWVzLCBh cyBkaXJlY3RlZCBieSBTUUwgU3RhbmRhcmQsCisJCQkgKiAxMy40IEdlbmVyYWwgUnVsZSAxNSBh KSBpaWkpIENhc2UgMS4KKwkJCSAqLworCQkJaWYgKEdldEN1cnJlbnRUcmFuc2FjdGlvblN0YXJ0 VGltZXN0YW1wKCkgPCB2YWx1ZXNbaV0pCisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJj b2RlKEVSUkNPREVfREFUQV9FWENFUFRJT05fSU5WQUxJRF9ST1dfVkVSU0lPTiksCisJCQkJCQkg ZXJybXNnKCJkYXRhIGV4Y2VwdGlvbiDigJQgaW52YWxpZCByb3cgdmVyc2lvbiIpKSk7CisJCQll bHNlIGlmIChHZXRDdXJyZW50VHJhbnNhY3Rpb25TdGFydFRpbWVzdGFtcCgpID09IHZhbHVlc1tp XSkKKwkJCQlzYW1lX3hhY3QgPSB0cnVlOworCQl9CisJCWVsc2UgaWYgKGF0dHItPmF0dGdlbmVy YXRlZCA9PSBBVFRSSUJVVEVfUk9XX0VORF9USU1FKQorCQl7CisJCQlEYXR1bQkJdmFsOworCisJ CQl2YWwgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25TdGFydFRpbWVzdGFtcCgpOworCisJCQl2YWx1 ZXNbaV0gPSB2YWw7CisJCQludWxsc1tpXSA9IGZhbHNlOworCQl9CisJCWVsc2UKKwkJeworCQkJ aWYgKCFudWxsc1tpXSkKKwkJCQl2YWx1ZXNbaV0gPSBkYXR1bUNvcHkoc2xvdC0+dHRzX3ZhbHVl c1tpXSwgYXR0ci0+YXR0Ynl2YWwsIGF0dHItPmF0dGxlbik7CisJCX0KKwl9CisKKwlFeGVjQ2xl YXJUdXBsZShzbG90KTsKKwltZW1jcHkoc2xvdC0+dHRzX3ZhbHVlcywgdmFsdWVzLCBzaXplb2Yo KnZhbHVlcykgKiBuYXR0cyk7CisJbWVtY3B5KHNsb3QtPnR0c19pc251bGwsIG51bGxzLCBzaXpl b2YoKm51bGxzKSAqIG5hdHRzKTsKKwlFeGVjU3RvcmVWaXJ0dWFsVHVwbGUoc2xvdCk7CisJRXhl Y01hdGVyaWFsaXplU2xvdChzbG90KTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDb250 ZXh0KTsKKworCXJldHVybiAhc2FtZV94YWN0OworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY0lu c2VydAogICoKQEAgLTczOCw2ICs4NzcsMTMgQEAgRXhlY0luc2VydChNb2RpZnlUYWJsZVN0YXRl ICptdHN0YXRlLAogCQkJcmV0dXJuIE5VTEw7CiAJCX0KIAorCQkvKgorCQkgKiBTZXQgcm93IHN0 YXJ0IHRpbWUKKwkJICovCisJCWlmIChyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3Ry ICYmCisJCQlyZXN1bHRSZWxhdGlvbkRlc2MtPnJkX2F0dC0+Y29uc3RyLT5oYXNfc3lzdGVtX3Zl cnNpb25pbmcpCisJCQlFeGVjU2V0Um93U3RhcnRUaW1lKGVzdGF0ZSwgc2xvdCwgcmVzdWx0UmVs SW5mbyk7CisKIAkJLyoKIAkJICogaW5zZXJ0IGludG8gZm9yZWlnbiB0YWJsZTogbGV0IHRoZSBG RFcgZG8gaXQKIAkJICovCkBAIC03NzQsNiArOTIwLDEzIEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFi bGVTdGF0ZSAqbXRzdGF0ZSwKIAkJCUV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKHJlc3VsdFJl bEluZm8sIGVzdGF0ZSwgc2xvdCwKIAkJCQkJCQkJCSAgIENNRF9JTlNFUlQpOwogCisJCS8qCisJ CSAqIFNldCByb3cgc3RhcnQgdGltZQorCQkgKi8KKwkJaWYgKHJlc3VsdFJlbGF0aW9uRGVzYy0+ cmRfYXR0LT5jb25zdHIgJiYKKwkJCXJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIt Pmhhc19zeXN0ZW1fdmVyc2lvbmluZykKKwkJCUV4ZWNTZXRSb3dTdGFydFRpbWUoZXN0YXRlLCBz bG90LCByZXN1bHRSZWxJbmZvKTsKKwogCQkvKgogCQkgKiBDaGVjayBhbnkgUkxTIFdJVEggQ0hF Q0sgcG9saWNpZXMuCiAJCSAqCkBAIC0xMTUxLDYgKzEzMDQsMzAgQEAgRXhlY0RlbGV0ZShNb2Rp ZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCX0KIAllbHNlCiAJeworCQkvKgorCQkgKiBTZXQgcm93 IGVuZCB0aW1lCisJCSAqLworCQlpZiAocmVzdWx0UmVsYXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0 ciAmJgorCQkJcmVzdWx0UmVsYXRpb25EZXNjLT5yZF9hdHQtPmNvbnN0ci0+aGFzX3N5c3RlbV92 ZXJzaW9uaW5nKQorCQl7CisJCQlUdXBsZVRhYmxlU2xvdCAqbXNsb3QgPSBOVUxMOworCisJCQlt c2xvdCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJlc3VsdFJlbGF0aW9uRGVzYywgTlVMTCk7CisJCQlp ZiAoIXRhYmxlX3R1cGxlX2ZldGNoX3Jvd192ZXJzaW9uKHJlc3VsdFJlbGF0aW9uRGVzYywgdHVw bGVpZCwgZXN0YXRlLT5lc19zbmFwc2hvdCwKKwkJCQkJCQkJCQkJICAgbXNsb3QpKQorCQkJewor CQkJCWVsb2coRVJST1IsICJmYWlsZWQgdG8gZmV0Y2ggdHVwbGUgd2hpbGUgYXR0ZW1wdGluZyBk ZWxldGUgd2l0aCBzeXN0ZW0gdmVyc2lvbmluZyIpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJ CWlmIChFeGVjU2V0Um93RW5kVGltZShlc3RhdGUsIG1zbG90LCByZXN1bHRSZWxJbmZvKSkKKwkJ CQkJdGFibGVfdHVwbGVfaW5zZXJ0KHJlc3VsdFJlbGF0aW9uRGVzYywgbXNsb3QsCisJCQkJCQkJ CQkgICBlc3RhdGUtPmVzX291dHB1dF9jaWQsCisJCQkJCQkJCQkgICAwLCBOVUxMKTsKKwkJCX0K KwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QobXNsb3QpOworCQl9CisKIAkJLyoKIAkJ ICogZGVsZXRlIHRoZSB0dXBsZQogCQkgKgpAQCAtMTY5OCw2ICsxODc1LDQwIEBAIEV4ZWNVcGRh dGUoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAkJCUV4ZWNDb21wdXRlU3RvcmVkR2VuZXJh dGVkKHJlc3VsdFJlbEluZm8sIGVzdGF0ZSwgc2xvdCwKIAkJCQkJCQkJCSAgIENNRF9VUERBVEUp OwogCisJCS8qCisJCSAqIFNldCByb3cgZW5kIHRpbWUgYW5kIGluc2VydAorCQkgKi8KKwkJaWYg KHJlc3VsdFJlbGF0aW9uRGVzYy0+cmRfYXR0LT5jb25zdHIgJiYKKwkJCXJlc3VsdFJlbGF0aW9u RGVzYy0+cmRfYXR0LT5jb25zdHItPmhhc19zeXN0ZW1fdmVyc2lvbmluZykKKwkJeworCQkJVHVw bGVUYWJsZVNsb3QgKm1zbG90ID0gTlVMTDsKKworCQkJLyoKKwkJCSAqIEluc2VydCBhIG5ldyBy b3cgdG8gcmVwcmVzZW50IHRoZSBvbGQgcm93IHdpdGggRW5kVGltZSBzZXQKKwkJCSAqIE5vdGUg dGhhdCB0aGlzIGNyZWF0ZXMgYSBuZXcgcm93IHZlcnNpb24gcmF0aGVyIHRoYW4gdXBkYXRpbmcg aW4gcGxhY2UKKwkJCSAqIHRoZSBleGlzdGluZyByb3cgdmVyc2lvbi4KKwkJCSAqLworCQkJbXNs b3QgPSB0YWJsZV9zbG90X2NyZWF0ZShyZXN1bHRSZWxhdGlvbkRlc2MsIE5VTEwpOworCQkJaWYg KCF0YWJsZV90dXBsZV9mZXRjaF9yb3dfdmVyc2lvbihyZXN1bHRSZWxhdGlvbkRlc2MsIHR1cGxl aWQsIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCQkJCSAgIG1zbG90KSkKKwkJCXsKKwkJ CQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGZldGNoIHR1cGxlIHdoaWxlIGF0dGVtcHRpbmcgdXBk YXRlIHdpdGggc3lzdGVtIHZlcnNpb25pbmciKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlp ZiAoRXhlY1NldFJvd0VuZFRpbWUoZXN0YXRlLCBtc2xvdCwgcmVzdWx0UmVsSW5mbykpCisJCQkJ CXRhYmxlX3R1cGxlX2luc2VydChyZXN1bHRSZWxhdGlvbkRlc2MsIG1zbG90LAorCQkJCQkJCQkJ ICAgZXN0YXRlLT5lc19vdXRwdXRfY2lkLAorCQkJCQkJCQkJICAgMCwgTlVMTCk7CisJCQl9CisJ CQlFeGVjRHJvcFNpbmdsZVR1cGxlVGFibGVTbG90KG1zbG90KTsKKworCQkJLyoKKwkJCSAqIFNl dCB0aGUgU3RhcnRUaW1lIGZvciB0aGUgc29vbiB0byBiZSBuZXdseSB1cGRhdGVkIHJvdworCQkJ ICovCisJCQlFeGVjU2V0Um93U3RhcnRUaW1lKGVzdGF0ZSwgc2xvdCwgcmVzdWx0UmVsSW5mbyk7 CisJCX0KKwogCQkvKgogCQkgKiBDaGVjayBhbnkgUkxTIFVQREFURSBXSVRIIENIRUNLIHBvbGlj aWVzCiAJCSAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyBiL3Ny Yy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDM4MjUxYzJiOGUuLjhjZmU0YzYyMjYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCisrKyBiL3NyYy9iYWNr ZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC0zNTIzLDYgKzM1MjMsNyBAQCBDb3B5Q3JlYXRlU3Rt dEZpZWxkcyhjb25zdCBDcmVhdGVTdG10ICpmcm9tLCBDcmVhdGVTdG10ICpuZXdub2RlKQogCUNP UFlfU1RSSU5HX0ZJRUxEKHRhYmxlc3BhY2VuYW1lKTsKIAlDT1BZX1NUUklOR19GSUVMRChhY2Nl c3NNZXRob2QpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGlmX25vdF9leGlzdHMpOworCUNPUFlfU0NB TEFSX0ZJRUxEKHN5c3RlbVZlcnNpb25pbmcpOwogfQogCiBzdGF0aWMgQ3JlYXRlU3RtdCAqCkBA IC00OTM5LDYgKzQ5NDAsMzAgQEAgX2NvcHlGb3JlaWduS2V5Q2FjaGVJbmZvKGNvbnN0IEZvcmVp Z25LZXlDYWNoZUluZm8gKmZyb20pCiAJcmV0dXJuIG5ld25vZGU7CiB9CiAKK3N0YXRpYyBSb3dU aW1lICoKK19jb3B5Um93VGltZShjb25zdCBSb3dUaW1lICogZnJvbSkKK3sKKwlSb3dUaW1lICAg ICpuZXdub2RlID0gbWFrZU5vZGUoUm93VGltZSk7CisKKwlDT1BZX1NUUklOR19GSUVMRChzdGFy dF90aW1lKTsKKwlDT1BZX1NUUklOR19GSUVMRChlbmRfdGltZSk7CisKKwlyZXR1cm4gbmV3bm9k ZTsKK30KKworc3RhdGljIFRlbXBvcmFsQ2xhdXNlICoKK19jb3B5VGVtcG9yYWxDbGF1c2UoY29u c3QgVGVtcG9yYWxDbGF1c2UgKiBmcm9tKQoreworCVRlbXBvcmFsQ2xhdXNlICpuZXdub2RlID0g bWFrZU5vZGUoVGVtcG9yYWxDbGF1c2UpOworCisJQ09QWV9TQ0FMQVJfRklFTEQoa2luZCk7CisJ Q09QWV9OT0RFX0ZJRUxEKGZyb20pOworCUNPUFlfTk9ERV9GSUVMRCh0byk7CisJQ09QWV9OT0RF X0ZJRUxEKHJlbGF0aW9uKTsKKworCXJldHVybiBuZXdub2RlOworfQorCiAKIC8qCiAgKiBjb3B5 T2JqZWN0SW1wbCAtLSBpbXBsZW1lbnRhdGlvbiBvZiBjb3B5T2JqZWN0KCk7IHNlZSBub2Rlcy9u b2Rlcy5oCkBAIC01ODU0LDYgKzU4NzksMTIgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAq ZnJvbSkKIAkJY2FzZSBUX1BhcnRpdGlvbkNtZDoKIAkJCXJldHZhbCA9IF9jb3B5UGFydGl0aW9u Q21kKGZyb20pOwogCQkJYnJlYWs7CisJCWNhc2UgVF9Sb3dUaW1lOgorCQkJcmV0dmFsID0gX2Nv cHlSb3dUaW1lKGZyb20pOworCQkJYnJlYWs7CisJCWNhc2UgVF9UZW1wb3JhbENsYXVzZToKKwkJ CXJldHZhbCA9IF9jb3B5VGVtcG9yYWxDbGF1c2UoZnJvbSk7CisJCQlicmVhazsKIAogCQkJLyoK IAkJCSAqIE1JU0NFTExBTkVPVVMgTk9ERVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwppbmRleCA4YTE3 NjIwMDBjLi5kMDE4MmY1YTQ5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1 bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCkBAIC0xMjkzLDYgKzEy OTMsNyBAQCBfZXF1YWxDcmVhdGVTdG10KGNvbnN0IENyZWF0ZVN0bXQgKmEsIGNvbnN0IENyZWF0 ZVN0bXQgKmIpCiAJQ09NUEFSRV9TVFJJTkdfRklFTEQodGFibGVzcGFjZW5hbWUpOwogCUNPTVBB UkVfU1RSSU5HX0ZJRUxEKGFjY2Vzc01ldGhvZCk7CiAJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaWZf bm90X2V4aXN0cyk7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoc3lzdGVtVmVyc2lvbmluZyk7CiAK IAlyZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwMjUsNiArMzAyNiwyNyBAQCBfZXF1YWxQYXJ0aXRpb25D bWQoY29uc3QgUGFydGl0aW9uQ21kICphLCBjb25zdCBQYXJ0aXRpb25DbWQgKmIpCiAJcmV0dXJu IHRydWU7CiB9CiAKK3N0YXRpYyBib29sCitfZXF1YWxSb3dUaW1lKGNvbnN0IFJvd1RpbWUgKiBh LCBjb25zdCBSb3dUaW1lICogYikKK3sKKwlDT01QQVJFX1NUUklOR19GSUVMRChzdGFydF90aW1l KTsKKwlDT01QQVJFX1NUUklOR19GSUVMRChlbmRfdGltZSk7CisKKwlyZXR1cm4gdHJ1ZTsKK30K Kworc3RhdGljIGJvb2wKK19lcXVhbFRlbXBvcmFsQ2xhdXNlKGNvbnN0IFRlbXBvcmFsQ2xhdXNl ICogYSwgY29uc3QgVGVtcG9yYWxDbGF1c2UgKiBiKQoreworCisJQ09NUEFSRV9TQ0FMQVJfRklF TEQoa2luZCk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKGZyb20pOworCUNPTVBBUkVfTk9ERV9GSUVM RCh0byk7CisJQ09NUEFSRV9OT0RFX0ZJRUxEKHJlbGF0aW9uKTsKKworCXJldHVybiB0cnVlOwor fQorCiAvKgogICogU3R1ZmYgZnJvbSBwZ19saXN0LmgKICAqLwpAQCAtMzg2Miw2ICszODg0LDEy IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCWNhc2UgVF9QYXJ0aXRp b25DbWQ6CiAJCQlyZXR2YWwgPSBfZXF1YWxQYXJ0aXRpb25DbWQoYSwgYik7CiAJCQlicmVhazsK KwkJY2FzZSBUX1Jvd1RpbWU6CisJCQlyZXR2YWwgPSBfZXF1YWxSb3dUaW1lKGEsIGIpOworCQkJ YnJlYWs7CisJCWNhc2UgVF9UZW1wb3JhbENsYXVzZToKKwkJCXJldHZhbCA9IF9lcXVhbFRlbXBv cmFsQ2xhdXNlKGEsIGIpOworCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1Is ICJ1bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9tYWtlZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IDAx YzExMGNkMmYuLmNiOWU3ZWVmMDEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL21ha2Vm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCkBAIC04MTUsMyArODE1 LDEyNiBAQCBtYWtlVmFjdXVtUmVsYXRpb24oUmFuZ2VWYXIgKnJlbGF0aW9uLCBPaWQgb2lkLCBM aXN0ICp2YV9jb2xzKQogCXYtPnZhX2NvbHMgPSB2YV9jb2xzOwogCXJldHVybiB2OwogfQorCitO b2RlICoKK21ha2VBbmRFeHByKE5vZGUgKmxleHByLCBOb2RlICpyZXhwciwgaW50IGxvY2F0aW9u KQoreworCS8qIEZsYXR0ZW4gImEgQU5EIGIgQU5EIGMgLi4uIiB0byBhIHNpbmdsZSBCb29sRXhw ciBvbiBzaWdodCAqLworCWlmIChJc0EobGV4cHIsIEJvb2xFeHByKSkKKwl7CisJCUJvb2xFeHBy ICpibGV4cHIgPSAoQm9vbEV4cHIgKikgbGV4cHI7CisKKwkJaWYgKGJsZXhwci0+Ym9vbG9wID09 IEFORF9FWFBSKQorCQl7CisJCQlibGV4cHItPmFyZ3MgPSBsYXBwZW5kKGJsZXhwci0+YXJncywg cmV4cHIpOworCQkJcmV0dXJuIChOb2RlICopIGJsZXhwcjsKKwkJfQorCX0KKwlyZXR1cm4gKE5v ZGUgKikgbWFrZUJvb2xFeHByKEFORF9FWFBSLCBsaXN0X21ha2UyKGxleHByLCByZXhwciksIGxv Y2F0aW9uKTsKK30KKworTm9kZSAqCittYWtlVHlwZUNhc3QoTm9kZSAqYXJnLCBUeXBlTmFtZSAq dHlwZW5hbWUsIGludCBsb2NhdGlvbikKK3sKKwlUeXBlQ2FzdCAgICpuID0gbWFrZU5vZGUoVHlw ZUNhc3QpOworCisJbi0+YXJnID0gYXJnOworCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7CisJbi0+ bG9jYXRpb24gPSBsb2NhdGlvbjsKKwlyZXR1cm4gKE5vZGUgKikgbjsKK30KKworLyoKKyAqIG1h a2VDb2x1bW5SZWZGcm9tTmFtZSAtCisgKgkgIGNyZWF0ZXMgYSBDb2x1bW5SZWYgbm9kZSB1c2lu ZyBjb2x1bW4gbmFtZQorICovCitDb2x1bW5SZWYgKgorbWFrZUNvbHVtblJlZkZyb21OYW1lKGNo YXIgKmNvbG5hbWUpCit7CisJQ29sdW1uUmVmICAqYyA9IG1ha2VOb2RlKENvbHVtblJlZik7CisK KwljLT5sb2NhdGlvbiA9IC0xOworCWMtPmZpZWxkcyA9IGxjb25zKG1ha2VTdHJpbmcoY29sbmFt ZSksIE5JTCk7CisKKwlyZXR1cm4gYzsKK30KKworLyoKKyAqIG1ha2VUZW1wb3JhbENvbHVtbkRl ZiAtCisgKiAgICAgICBjcmVhdGUgYSBDb2x1bW5EZWYgbm9kZSBmb3Igc3lzdGVtIHRpbWUgY29s dW1uCisgKi8KK0NvbHVtbkRlZiAqCittYWtlVGVtcG9yYWxDb2x1bW5EZWYoY2hhciAqbmFtZSkK K3sKKwlDb2x1bW5EZWYgICpuID0gbWFrZU5vZGUoQ29sdW1uRGVmKTsKKworCWlmIChzdHJjbXAo bmFtZSwgU1lTVEVNX1ZFUlNJT05JTkdfREVGQVVMVF9TVEFSVF9OQU1FKSA9PSAwKQorCXsKKwkJ Q29uc3RyYWludCAqYyA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOworCisJCWMtPmNvbnR5cGUgPSBD T05TVFJfUk9XX1NUQVJUX1RJTUU7CisJCWMtPnJhd19leHByID0gTlVMTDsKKwkJYy0+Y29va2Vk X2V4cHIgPSBOVUxMOworCQljLT5sb2NhdGlvbiA9IC0xOworCQluLT5jb2xuYW1lID0gU1lTVEVN X1ZFUlNJT05JTkdfREVGQVVMVF9TVEFSVF9OQU1FOworCQluLT5jb25zdHJhaW50cyA9IGxpc3Rf bWFrZTEoKE5vZGUgKikgYyk7CisJfQorCWVsc2UgaWYgKHN0cmNtcChuYW1lLCBTWVNURU1fVkVS U0lPTklOR19ERUZBVUxUX0VORF9OQU1FKSA9PSAwKQorCXsKKwkJQ29uc3RyYWludCAqYyA9IG1h a2VOb2RlKENvbnN0cmFpbnQpOworCisJCWMtPmNvbnR5cGUgPSBDT05TVFJfUk9XX0VORF9USU1F OworCQljLT5yYXdfZXhwciA9IE5VTEw7CisJCWMtPmNvb2tlZF9leHByID0gTlVMTDsKKwkJYy0+ bG9jYXRpb24gPSAtMTsKKworCQluLT5jb2xuYW1lID0gU1lTVEVNX1ZFUlNJT05JTkdfREVGQVVM VF9FTkRfTkFNRTsKKwkJbi0+Y29uc3RyYWludHMgPSBsaXN0X21ha2UxKChOb2RlICopIGMpOwor CX0KKwllbHNlCisJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHRlbXBvcmFsIGNvbHVtbiBuYW1l Iik7CisJbi0+dHlwZU5hbWUgPSBtYWtlVHlwZU5hbWVGcm9tTmFtZUxpc3QobGlzdF9tYWtlMiht YWtlU3RyaW5nKCJwZ19jYXRhbG9nIiksCisJCQkJCQkJCQkJCQkJICBtYWtlU3RyaW5nKCJ0aW1l c3RhbXB0eiIpKSk7CisJbi0+aW5oY291bnQgPSAwOworCW4tPmlzX2xvY2FsID0gdHJ1ZTsKKwlu LT5pc19mcm9tX3R5cGUgPSBmYWxzZTsKKwluLT5zdG9yYWdlID0gMDsKKwluLT5yYXdfZGVmYXVs dCA9IE5VTEw7CisJbi0+Y29va2VkX2RlZmF1bHQgPSBOVUxMOworCW4tPmNvbGxPaWQgPSBJbnZh bGlkT2lkOworCW4tPmxvY2F0aW9uID0gLTE7CisKKwlyZXR1cm4gbjsKK30KKworLyoKKyAqIG1h a2VBZGRDb2xDbWQgLQorICogICAgICAgY3JlYXRlIGFkZCBjb2x1bW4gQWx0ZXJUYWJsZUNtZCBu b2RlCisgKi8KK0FsdGVyVGFibGVDbWQgKgorbWFrZUFkZENvbENtZChDb2x1bW5EZWYgKmNvbGRl ZikKK3sKKwlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisKKwlu LT5zdWJ0eXBlID0gQVRfQWRkQ29sdW1uOworCW4tPmRlZiA9IChOb2RlICopIGNvbGRlZjsKKwlu LT5taXNzaW5nX29rID0gZmFsc2U7CisKKwlyZXR1cm4gbjsKK30KKworLyoKKyAqIG1ha2VEcm9w Q29sQ21kIC0KKyAqICAgICAgIGNyZWF0ZSBkcm9wIGNvbHVtbiBBbHRlclRhYmxlQ21kIG5vZGUK KyAqLworQWx0ZXJUYWJsZUNtZCAqCittYWtlRHJvcENvbENtZChjaGFyICpuYW1lKQoreworCUFs dGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKworCW4tPnN1YnR5cGUg PSBBVF9Ecm9wQ29sdW1uOworCW4tPm5hbWUgPSBuYW1lOworCW4tPm1pc3Npbmdfb2sgPSBmYWxz ZTsKKworCXJldHVybiBuOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggODc1NjFjYmI2Zi4uZjBh ZjVhMGJlZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9z cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0yNzE2LDYgKzI3MTYsNyBAQCBfb3V0Q3Jl YXRlU3RtdEluZm8oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENyZWF0ZVN0bXQgKm5vZGUpCiAJV1JJ VEVfU1RSSU5HX0ZJRUxEKHRhYmxlc3BhY2VuYW1lKTsKIAlXUklURV9TVFJJTkdfRklFTEQoYWNj ZXNzTWV0aG9kKTsKIAlXUklURV9CT09MX0ZJRUxEKGlmX25vdF9leGlzdHMpOworCVdSSVRFX0JP T0xfRklFTEQoc3lzdGVtVmVyc2lvbmluZyk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggMmNkNjkxMTkxYy4uNWQ4NTBiMTI3MSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYwpAQCAtNTYsNiArNTYsOCBAQAogI2luY2x1ZGUg Im9wdGltaXplci90bGlzdC5oIgogI2luY2x1ZGUgInBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVk ZSAicGFyc2VyL3BhcnNlX2FnZy5oIgorI2luY2x1ZGUgInBhcnNlci9wYXJzZV9jbGF1c2UuaCIK KyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfcmVsYXRpb24uaCIKICNpbmNsdWRlICJwYXJzZXIvcGFy c2V0cmVlLmgiCiAjaW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZXNjLmgiCiAjaW5jbHVkZSAi cmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3N1YnNlbGVjdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0 LmMKaW5kZXggYzlmN2EwOWQxMC4uMTFjYTdiY2EwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vc3Vic2VsZWN0LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0 aW1pemVyLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3BhcmFtYXNzaWduLmgiCiAjaW5jbHVkZSAi b3B0aW1pemVyL3BhdGhub2RlLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNp bmNsdWRlICJvcHRpbWl6ZXIvcGxhbm1haW4uaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm5l ci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCkBAIC05MTIsNiArOTEzLDE1IEBAIFNT X3Byb2Nlc3NfY3RlcyhQbGFubmVySW5mbyAqcm9vdCkKIAkJICovCiAJCWlmIChjdGUtPmN0ZXJl ZmNvdW50ID09IDAgJiYgY21kVHlwZSA9PSBDTURfU0VMRUNUKQogCQl7CisJCQlRdWVyeQkgICAq cXVlcnk7CisKKwkJCXF1ZXJ5ID0gKFF1ZXJ5ICopIGN0ZS0+Y3RlcXVlcnk7CisKKwkJCS8qCisJ CQkgKiBDaGVjayBhbmQgYWRkIGZpbHRlciBjbGF1c2UgdG8gcmVtb3ZlIGhpc3RvcmljYWwgcm93 IHZlcnNpb25zLgorCQkJICovCisJCQlhZGRfaGlzdG9yeV9kYXRhX2ZpbHRlcihxdWVyeSk7CisK IAkJCS8qIE1ha2UgYSBkdW1teSBlbnRyeSBpbiBjdGVfcGxhbl9pZHMgKi8KIAkJCXJvb3QtPmN0 ZV9wbGFuX2lkcyA9IGxhcHBlbmRfaW50KHJvb3QtPmN0ZV9wbGFuX2lkcywgLTEpOwogCQkJY29u dGludWU7CkBAIC05NTgsNiArOTY4LDE1IEBAIFNTX3Byb2Nlc3NfY3RlcyhQbGFubmVySW5mbyAq cm9vdCkKIAkJCSAhY29udGFpbl9vdXRlcl9zZWxmcmVmKGN0ZS0+Y3RlcXVlcnkpKSAmJgogCQkJ IWNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKGN0ZS0+Y3RlcXVlcnkpKQogCQl7CisJCQlRdWVy eQkgICAqcXVlcnk7CisKKwkJCXF1ZXJ5ID0gKFF1ZXJ5ICopIGN0ZS0+Y3RlcXVlcnk7CisKKwkJ CS8qCisJCQkgKiBDaGVjayBhbmQgYWRkIGZpbHRlciBjbGF1c2UgdG8gcmVtb3ZlIGhpc3Rvcmlj YWwgcm93IHZlcnNpb25zLgorCQkJICovCisJCQlhZGRfaGlzdG9yeV9kYXRhX2ZpbHRlcihxdWVy eSk7CisKIAkJCWlubGluZV9jdGUocm9vdCwgY3RlKTsKIAkJCS8qIE1ha2UgYSBkdW1teSBlbnRy eSBpbiBjdGVfcGxhbl9pZHMgKi8KIAkJCXJvb3QtPmN0ZV9wbGFuX2lkcyA9IGxhcHBlbmRfaW50 KHJvb3QtPmN0ZV9wbGFuX2lkcywgLTEpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGxhbmNhdC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGxhbmNhdC5j CmluZGV4IGM1MTk0ZmRiYmYuLjU3N2MwNzVlNWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci91dGlsL3BsYW5jYXQuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9w bGFuY2F0LmMKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbmNhdC5o IgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3Jl bGF0aW9uLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZXRyZWUuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNp bmNsdWRlICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgpAQCAtNTIsNiArNTMsNyBAQAogI2luY2x1 ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1 dGlscy9zeXNjYWNoZS5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIC8qIEdVQyBw YXJhbWV0ZXIgKi8KIGludAkJCWNvbnN0cmFpbnRfZXhjbHVzaW9uID0gQ09OU1RSQUlOVF9FWENM VVNJT05fUEFSVElUSU9OOwpAQCAtNzksNiArODEsOCBAQCBzdGF0aWMgdm9pZCBzZXRfYmFzZXJl bF9wYXJ0aXRpb25fa2V5X2V4cHJzKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQlSZWxP cHRJbmZvICpyZWwpOwogc3RhdGljIHZvaWQgc2V0X2Jhc2VyZWxfcGFydGl0aW9uX2NvbnN0cmFp bnQoUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJCSBSZWxPcHRJbmZvICpyZWwpOworc3Rh dGljIGJvb2wgY2hlY2tfc3lzdGVtX3ZlcnNpb25pbmdfY29sdW1uKE5vZGUgKm5vZGUsIFJhbmdl VGJsRW50cnkgKnJ0ZSk7CitzdGF0aWMgYm9vbCBjaGVja19zeXN0ZW1fdmVyc2lvbmluZ190YWJs ZShSYW5nZVRibEVudHJ5ICpydGUpOwogCiAKIC8qCkBAIC0yNDA4LDMgKzI0MTIsMTkzIEBAIHNl dF9iYXNlcmVsX3BhcnRpdGlvbl9jb25zdHJhaW50KFJlbGF0aW9uIHJlbGF0aW9uLCBSZWxPcHRJ bmZvICpyZWwpCiAJCXJlbC0+cGFydGl0aW9uX3F1YWwgPSBwYXJ0Y29uc3RyOwogCX0KIH0KKwor LyoKKyAqIGdldF9yb3dfZW5kX3RpbWVfY29sX25hbWUKKyAqCisgKiBSZXRyaWV2ZSB0aGUgcm93 IGVuZCB0aW1lIGNvbHVtbiBuYW1lIG9mIHRoZSBnaXZlbiByZWxhdGlvbi4KKyAqLworY2hhciAq CitnZXRfcm93X2VuZF90aW1lX2NvbF9uYW1lKFJlbGF0aW9uIHJlbCkKK3sKKwlUdXBsZURlc2MJ dHVwZGVzYzsKKwljaGFyCSAgICpuYW1lID0gTlVMTDsKKwlpbnQJCQluYXR0czsKKworCXR1cGRl c2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CisJbmF0dHMgPSB0dXBkZXNjLT5uYXR0czsKKwlm b3IgKGludCBpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBh dHRyID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKTsKKworCQlpZiAoYXR0ci0+YXR0Z2VuZXJh dGVkID09IEFUVFJJQlVURV9ST1dfRU5EX1RJTUUpCisJCXsKKwkJCW5hbWUgPSBOYW1lU3RyKGF0 dHItPmF0dG5hbWUpOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gbmFtZTsKK30KKwor LyoKKyAqIGdldF9yb3dfc3RhcnRfdGltZV9jb2xfbmFtZQorICoKKyAqIFJldHJpZXZlIHRoZSBy b3cgc3RhcnQgdGltZSBjb2x1bW4gbmFtZSBvZiB0aGUgZ2l2ZW4gcmVsYXRpb24uCisgKi8KK2No YXIgKgorZ2V0X3Jvd19zdGFydF90aW1lX2NvbF9uYW1lKFJlbGF0aW9uIHJlbCkKK3sKKwlUdXBs ZURlc2MJdHVwZGVzYzsKKwljaGFyCSAgICpuYW1lID0gTlVMTDsKKwlpbnQJCQluYXR0czsKKwor CXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKHJlbCk7CisJbmF0dHMgPSB0dXBkZXNjLT5uYXR0 czsKKwlmb3IgKGludCBpID0gMDsgaSA8IG5hdHRzOyBpKyspCisJeworCQlGb3JtX3BnX2F0dHJp YnV0ZSBhdHRyID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBpKTsKKworCQlpZiAoYXR0ci0+YXR0 Z2VuZXJhdGVkID09IEFUVFJJQlVURV9ST1dfU1RBUlRfVElNRSkKKwkJeworCQkJbmFtZSA9IE5h bWVTdHIoYXR0ci0+YXR0bmFtZSk7CisJCQlicmVhazsKKwkJfQorCX0KKworCXJldHVybiBuYW1l OworfQorCisvKgorICogYWRkX2hpc3RvcnlfZGF0YV9maWx0ZXIKKyAqCisgKiBBZGQgaGlzdG9y eSBkYXRhIGZpbHRlciBjbGF1c2UgdG8gd2hlcmUgY2xhdXNlIHNwZWNpZmljYXRpb24KKyAqIGlm IHRoaXMgaXMgYSBzeXN0ZW0gdmVyc2lvbmVkIHJlbGF0aW9uIGFuZCB0aGUgd2hlcmUgY2xhdXNl IGRpZCBub3QKKyAqIGFscmVhZHkgY29udGFpbiBhIGZpbHRlciBjb25kaXRpb24gaW52b2x2aW5n IHN5c3RlbSB0aW1lIGNvbHVtbi4KKyAqLwordm9pZAorYWRkX2hpc3RvcnlfZGF0YV9maWx0ZXIo UXVlcnkgKnF1ZXJ5KQoreworCUxpc3RDZWxsICAgKmw7CisKKwlmb3JlYWNoKGwsIHF1ZXJ5LT5y dGFibGUpCisJeworCQlSYW5nZVRibEVudHJ5ICpydGUgPSBsZmlyc3Rfbm9kZShSYW5nZVRibEVu dHJ5LCBsKTsKKworCQlpZiAoIWNoZWNrX3N5c3RlbV92ZXJzaW9uaW5nX3RhYmxlKHJ0ZSkgfHwK KwkJCWNoZWNrX3N5c3RlbV92ZXJzaW9uaW5nX2NvbHVtbihxdWVyeS0+am9pbnRyZWUtPnF1YWxz LCBydGUpKQorCQl7CisJCQljb250aW51ZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCU5vZGUJICAg KndDbGF1c2U7CisJCQlSZWxhdGlvbglyZWxhdGlvbjsKKwkJCUNvbHVtblJlZiAgKmM7CisJCQlB X0NvbnN0ICAgICpuOworCQkJUGFyc2VTdGF0ZSAqcHN0YXRlOworCQkJUGFyc2VOYW1lc3BhY2VJ dGVtICpuZXduc2l0ZW07CisKKwkJCXJlbGF0aW9uID0gdGFibGVfb3BlbihydGUtPnJlbGlkLCBO b0xvY2spOworCisJCQkvKgorCQkJICogQ3JlYXRlIGEgY29uZGl0aW9uIHRoYXQgZmlsdGVycyBo aXN0b3J5IGRhdGEgYW5kIGF0dGFjaCBpdCB0bworCQkJICogdGhlIGV4aXN0aW5nIHdoZXJlIGNs YXVzZS4KKwkJCSAqLworCQkJYyA9IG1ha2VDb2x1bW5SZWZGcm9tTmFtZShnZXRfcm93X2VuZF90 aW1lX2NvbF9uYW1lKHJlbGF0aW9uKSk7CisJCQluID0gbWFrZU5vZGUoQV9Db25zdCk7CisJCQlu LT52YWwudHlwZSA9IFRfU3RyaW5nOworCQkJbi0+dmFsLnZhbC5zdHIgPSAiaW5maW5pdHkiOwor CQkJbi0+bG9jYXRpb24gPSAtMTsKKworCQkJd0NsYXVzZSA9IChOb2RlICopIG1ha2VTaW1wbGVB X0V4cHIoQUVYUFJfT1AsICI9IiwgKE5vZGUgKikgYywgKE5vZGUgKikgbiwgMCk7CisKKwkJCS8q CisJCQkgKiBDcmVhdGUgYSBkdW1teSBQYXJzZVN0YXRlIGFuZCBpbnNlcnQgdGhlIHRhcmdldCBy ZWxhdGlvbiBhcyBpdHMKKwkJCSAqIHNvbGUgcmFuZ2V0YWJsZSBlbnRyeS4gIFdlIG5lZWQgYSBQ YXJzZVN0YXRlIGZvciB0cmFuc2Zvcm1FeHByLgorCQkJICovCisJCQlwc3RhdGUgPSBtYWtlX3Bh cnNlc3RhdGUoTlVMTCk7CisJCQluZXduc2l0ZW0gPSBhZGRSYW5nZVRhYmxlRW50cnlGb3JSZWxh dGlvbihwc3RhdGUsCisJCQkJCQkJCQkJCQkJICByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQkgIEFj Y2Vzc1NoYXJlTG9jaywKKwkJCQkJCQkJCQkJCQkgIE5VTEwsCisJCQkJCQkJCQkJCQkJICBmYWxz ZSwKKwkJCQkJCQkJCQkJCQkgIHRydWUpOworCQkJYWRkTlNJdGVtVG9RdWVyeShwc3RhdGUsIG5l d25zaXRlbSwgZmFsc2UsIHRydWUsIHRydWUpOworCQkJd0NsYXVzZSA9IHRyYW5zZm9ybVdoZXJl Q2xhdXNlKHBzdGF0ZSwKKwkJCQkJCQkJCQkgICB3Q2xhdXNlLAorCQkJCQkJCQkJCSAgIEVYUFJf S0lORF9XSEVSRSwKKwkJCQkJCQkJCQkgICAiV0hFUkUiKTsKKwkJCWlmIChxdWVyeS0+am9pbnRy ZWUtPnF1YWxzICE9IE5VTEwpCisJCQl7CisJCQkJcXVlcnktPmpvaW50cmVlLT5xdWFscyA9IG1h a2VfYW5kX3F1YWwocXVlcnktPmpvaW50cmVlLT5xdWFscywgd0NsYXVzZSk7CisJCQl9CisJCQll bHNlIGlmIChJc0EoKE5vZGUgKikgbGluaXRpYWwocXVlcnktPmpvaW50cmVlLT5mcm9tbGlzdCks IEpvaW5FeHByKSkKKwkJCXsKKwkJCQlKb2luRXhwciAgICpqID0gKEpvaW5FeHByICopIHF1ZXJ5 LT5qb2ludHJlZS0+ZnJvbWxpc3Q7CisKKwkJCQlqLT5xdWFscyA9IG1ha2VfYW5kX3F1YWwoai0+ cXVhbHMsIHdDbGF1c2UpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXF1ZXJ5LT5qb2ludHJl ZS0+cXVhbHMgPSB3Q2xhdXNlOworCQkJfQorCisJCQl0YWJsZV9jbG9zZShyZWxhdGlvbiwgTm9M b2NrKTsKKwkJfQorCisJfQorfQorCisvKgorICogQ2hlY2sgZm9yIHJlZmVyZW5jZXMgdG8gc3lz dGVtIHZlcnNpb25lZCBjb2x1bW5zCisgKi8KK3N0YXRpYyBib29sCitjaGVja19zeXN0ZW1fdmVy c2lvbmluZ19jb2x1bW5fd2Fsa2VyKE5vZGUgKm5vZGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKK3sK KworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoSXNBKG5vZGUsIFZh cikpCisJeworCQlWYXIJCSAgICp2YXIgPSAoVmFyICopIG5vZGU7CisJCU9pZAkJCXJlbGlkOwor CQlBdHRyTnVtYmVyCWF0dG51bTsKKwkJY2hhcgkJcmVzdWx0OworCisJCXJlbGlkID0gcnRlLT5y ZWxpZDsKKwkJYXR0bnVtID0gdmFyLT52YXJhdHRubzsKKwkJcmVzdWx0ID0gZ2V0X2F0dGdlbmVy YXRlZChyZWxpZCwgYXR0bnVtKTsKKworCQlpZiAoT2lkSXNWYWxpZChyZWxpZCkgJiYgQXR0cmli dXRlTnVtYmVySXNWYWxpZChhdHRudW0pICYmCisJCQkocmVzdWx0ID09IEFUVFJJQlVURV9ST1df U1RBUlRfVElNRSB8fCByZXN1bHQgPT0gQVRUUklCVVRFX1JPV19FTkRfVElNRSkpCisJCQlyZXR1 cm4gdHJ1ZTsKKwl9CisJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgY2hlY2tf c3lzdGVtX3ZlcnNpb25pbmdfY29sdW1uX3dhbGtlciwKKwkJCQkJCQkJICBydGUpOworfQorCitz dGF0aWMgYm9vbAorY2hlY2tfc3lzdGVtX3ZlcnNpb25pbmdfY29sdW1uKE5vZGUgKm5vZGUsIFJh bmdlVGJsRW50cnkgKnJ0ZSkKK3sKKwlyZXR1cm4gY2hlY2tfc3lzdGVtX3ZlcnNpb25pbmdfY29s dW1uX3dhbGtlcihub2RlLCBydGUpOworfQorCitzdGF0aWMgYm9vbAorY2hlY2tfc3lzdGVtX3Zl cnNpb25pbmdfdGFibGUoUmFuZ2VUYmxFbnRyeSAqcnRlKQoreworCVJlbGF0aW9uCXJlbDsKKwlU dXBsZURlc2MJdHVwZGVzYzsKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCWlmIChydGUtPnJl bGlkID09IDApCisJCXJldHVybiBmYWxzZTsKKworCXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxp ZCwgTm9Mb2NrKTsKKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCXJlc3VsdCA9 IHR1cGRlc2MtPmNvbnN0ciAmJiB0dXBkZXNjLT5jb25zdHItPmhhc19zeXN0ZW1fdmVyc2lvbmlu ZzsKKworCXRhYmxlX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCXJldHVybiByZXN1bHQ7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFy c2VyL2FuYWx5emUuYwppbmRleCA0MzhiMDc3MDA0Li44ODk2NDQwNTA1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFs eXplLmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKICNp bmNsdWRlICJub2Rlcy9ub2RlRnVuY3MuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVy LmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNpbmNsdWRlICJwYXJzZXIvYW5h bHl6ZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV9hZ2cuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2VfY2xhdXNlLmgiCkBAIC00NzcsNiArNDc4LDExIEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10ICpzdG10KQogCXFyeS0+cnRhYmxlID0gcHN0 YXRlLT5wX3J0YWJsZTsKIAlxcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9q b2lubGlzdCwgcXVhbCk7CiAKKwkvKgorCSAqIENoZWNrIGFuZCBhZGQgZmlsdGVyIGNsYXVzZSB0 byBmaWx0ZXIgb3V0IGhpc3RvcmljYWwgZGF0YS4KKwkgKi8KKwlhZGRfaGlzdG9yeV9kYXRhX2Zp bHRlcihxcnkpOworCiAJcXJ5LT5oYXNTdWJMaW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsK IAlxcnktPmhhc1dpbmRvd0Z1bmNzID0gcHN0YXRlLT5wX2hhc1dpbmRvd0Z1bmNzOwogCXFyeS0+ aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwpAQCAtMTI2OSw2ICsxMjc1 LDE1IEBAIHRyYW5zZm9ybVNlbGVjdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10 ICpzdG10KQogCS8qIHByb2Nlc3MgdGhlIEZST00gY2xhdXNlICovCiAJdHJhbnNmb3JtRnJvbUNs YXVzZShwc3RhdGUsIHN0bXQtPmZyb21DbGF1c2UpOwogCisJLyogQWRkIHRlbXBvcmFsIGZpbHRl ciBjbGF1c2UgdG8gdGhlIHJlc3Qgb2Ygd2hlcmUgY2xhdXNlICovCisJaWYgKHBzdGF0ZS0+cF90 ZW1wd2hlcmUgIT0gTlVMTCkKKwl7CisJCWlmIChzdG10LT53aGVyZUNsYXVzZSkKKwkJCXN0bXQt PndoZXJlQ2xhdXNlID0gbWFrZUFuZEV4cHIoc3RtdC0+d2hlcmVDbGF1c2UsIHBzdGF0ZS0+cF90 ZW1wd2hlcmUsIDApOworCQllbHNlCisJCQlzdG10LT53aGVyZUNsYXVzZSA9IHBzdGF0ZS0+cF90 ZW1wd2hlcmU7CisJfQorCiAJLyogdHJhbnNmb3JtIHRhcmdldGxpc3QgKi8KIAlxcnktPnRhcmdl dExpc3QgPSB0cmFuc2Zvcm1UYXJnZXRMaXN0KHBzdGF0ZSwgc3RtdC0+dGFyZ2V0TGlzdCwKIAkJ CQkJCQkJCQkgIEVYUFJfS0lORF9TRUxFQ1RfVEFSR0VUKTsKQEAgLTEzNjcsNiArMTM4MiwxMSBA QCB0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2VsZWN0U3RtdCAqc3Rt dCkKIAlpZiAocHN0YXRlLT5wX2hhc0FnZ3MgfHwgcXJ5LT5ncm91cENsYXVzZSB8fCBxcnktPmdy b3VwaW5nU2V0cyB8fCBxcnktPmhhdmluZ1F1YWwpCiAJCXBhcnNlQ2hlY2tBZ2dyZWdhdGVzKHBz dGF0ZSwgcXJ5KTsKIAorCS8qCisJICogQ2hlY2sgYW5kIGFkZCBmaWx0ZXIgY2xhdXNlIHRvIGZp bHRlciBvdXQgaGlzdG9yaWNhbCBkYXRhLgorCSAqLworCWFkZF9oaXN0b3J5X2RhdGFfZmlsdGVy KHFyeSk7CisKIAlyZXR1cm4gcXJ5OwogfQogCkBAIC0yMzU3LDYgKzIzNzcsMTEgQEAgdHJhbnNm b3JtVXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJcXJ5 LT5oYXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7CiAJcXJ5LT5oYXNTdWJM aW5rcyA9IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKIAorCS8qCisJICogQ2hlY2sgYW5kIGFkZCBm aWx0ZXIgY2xhdXNlIHRvIGZpbHRlciBvdXQgaGlzdG9yaWNhbCBkYXRhLgorCSAqLworCWFkZF9o aXN0b3J5X2RhdGFfZmlsdGVyKHFyeSk7CisKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3Rh dGUsIHFyeSk7CiAKIAlyZXR1cm4gcXJ5OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggMzlhMjg0OWViYS4uMmE1 MmJhZGM2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0xNDEsNiArMTQxLDIwIEBAIHR5cGVkZWYgc3RydWN0 IEdyb3VwQ2xhdXNlCiAJTGlzdCAgICpsaXN0OwogfSBHcm91cENsYXVzZTsKIAorLyogUHJpdmF0 ZSBzdHJ1Y3QgZm9yIHRoZSByZXN1bHQgb2YgZ2VuZXJhdGVkX3R5cGUgcHJvZHVjdGlvbiAqLwor dHlwZWRlZiBzdHJ1Y3QgR2VuZXJhdGVUeXBlCit7CisJQ29uc3RyVHlwZQljb250eXBlOworCU5v ZGUJICAgKnJhd19leHByOworfSBHZW5lcmF0ZVR5cGU7CisKKy8qIFByaXZhdGUgc3RydWN0IGZv ciB0aGUgcmVzdWx0IG9mIE9wdFdpdGggcHJvZHVjdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgT3B0 aW9uV2l0aAoreworCUxpc3QgICAqb3B0aW9uczsKKwlib29sCXN5c3RlbVZlcnNpb25pbmc7Cit9 IE9wdGlvbldpdGg7CisKIC8qIENvbnN0cmFpbnRBdHRyaWJ1dGVTcGVjIHlpZWxkcyBhbiBpbnRl Z2VyIGJpdG1hc2sgb2YgdGhlc2UgZmxhZ3M6ICovCiAjZGVmaW5lIENBU19OT1RfREVGRVJSQUJM RQkJCTB4MDEKICNkZWZpbmUgQ0FTX0RFRkVSUkFCTEUJCQkJMHgwMgpAQCAtMTU5LDcgKzE3Myw2 IEBAIHN0YXRpYyBSYXdTdG10ICptYWtlUmF3U3RtdChOb2RlICpzdG10LCBpbnQgc3RtdF9sb2Nh dGlvbik7CiBzdGF0aWMgdm9pZCB1cGRhdGVSYXdTdG10RW5kKFJhd1N0bXQgKnJzLCBpbnQgZW5k X2xvY2F0aW9uKTsKIHN0YXRpYyBOb2RlICptYWtlQ29sdW1uUmVmKGNoYXIgKmNvbG5hbWUsIExp c3QgKmluZGlyZWN0aW9uLAogCQkJCQkJICAgaW50IGxvY2F0aW9uLCBjb3JlX3l5c2Nhbl90IHl5 c2Nhbm5lcik7Ci1zdGF0aWMgTm9kZSAqbWFrZVR5cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5hbWUg KnR5cGVuYW1lLCBpbnQgbG9jYXRpb24pOwogc3RhdGljIE5vZGUgKm1ha2VTdHJpbmdDb25zdChj aGFyICpzdHIsIGludCBsb2NhdGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZVN0cmluZ0NvbnN0Q2Fz dChjaGFyICpzdHIsIGludCBsb2NhdGlvbiwgVHlwZU5hbWUgKnR5cGVuYW1lKTsKIHN0YXRpYyBO b2RlICptYWtlSW50Q29uc3QoaW50IHZhbCwgaW50IGxvY2F0aW9uKTsKQEAgLTE4NCw3ICsxOTcs NiBAQCBzdGF0aWMgdm9pZCBpbnNlcnRTZWxlY3RPcHRpb25zKFNlbGVjdFN0bXQgKnN0bXQsCiBz dGF0aWMgTm9kZSAqbWFrZVNldE9wKFNldE9wZXJhdGlvbiBvcCwgYm9vbCBhbGwsIE5vZGUgKmxh cmcsIE5vZGUgKnJhcmcpOwogc3RhdGljIE5vZGUgKmRvTmVnYXRlKE5vZGUgKm4sIGludCBsb2Nh dGlvbik7CiBzdGF0aWMgdm9pZCBkb05lZ2F0ZUZsb2F0KFZhbHVlICp2KTsKLXN0YXRpYyBOb2Rl ICptYWtlQW5kRXhwcihOb2RlICpsZXhwciwgTm9kZSAqcmV4cHIsIGludCBsb2NhdGlvbik7CiBz dGF0aWMgTm9kZSAqbWFrZU9yRXhwcihOb2RlICpsZXhwciwgTm9kZSAqcmV4cHIsIGludCBsb2Nh dGlvbik7CiBzdGF0aWMgTm9kZSAqbWFrZU5vdEV4cHIoTm9kZSAqZXhwciwgaW50IGxvY2F0aW9u KTsKIHN0YXRpYyBOb2RlICptYWtlQUFycmF5RXhwcihMaXN0ICplbGVtZW50cywgaW50IGxvY2F0 aW9uKTsKQEAgLTI2MCw2ICsyNzIsOSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdT ZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCXN0cnVj dCBTZWxlY3RMaW1pdAkqc2VsZWN0bGltaXQ7CiAJU2V0UXVhbnRpZmllcgkgc2V0cXVhbnRpZmll cjsKIAlzdHJ1Y3QgR3JvdXBDbGF1c2UgICpncm91cGNsYXVzZTsKKwlUZW1wb3JhbENsYXVzZSAq dGVtcG9yYWxDbGF1c2U7CisJc3RydWN0IEdlbmVyYXRlVHlwZSAqR2VuZXJhdGVUeXBlOworCXN0 cnVjdCBPcHRpb25XaXRoICAgKk9wdGlvbldpdGg7CiB9CiAKICV0eXBlIDxub2RlPglzdG10IHRv cGxldmVsX3N0bXQgc2NoZW1hX3N0bXQgcm91dGluZV9ib2R5X3N0bXQKQEAgLTM5NSwxMSArNDEw LDE0IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8bm9kZT4JdmFjdXVtX3JlbGF0 aW9uCiAldHlwZSA8c2VsZWN0bGltaXQ+IG9wdF9zZWxlY3RfbGltaXQgc2VsZWN0X2xpbWl0IGxp bWl0X2NsYXVzZQogCisldHlwZSA8R2VuZXJhdGVUeXBlPiBnZW5lcmF0ZWRfdHlwZQorJXR5cGUg PE9wdGlvbldpdGg+IE9wdFdpdGgKKwogJXR5cGUgPGxpc3Q+CXBhcnNlX3RvcGxldmVsIHN0bXRt dWx0aSByb3V0aW5lX2JvZHlfc3RtdF9saXN0CiAJCQkJT3B0VGFibGVFbGVtZW50TGlzdCBUYWJs ZUVsZW1lbnRMaXN0IE9wdEluaGVyaXQgZGVmaW5pdGlvbgogCQkJCU9wdFR5cGVkVGFibGVFbGVt ZW50TGlzdCBUeXBlZFRhYmxlRWxlbWVudExpc3QKIAkJCQlyZWxvcHRpb25zIG9wdF9yZWxvcHRp b25zCi0JCQkJT3B0V2l0aCBvcHRfZGVmaW5pdGlvbiBmdW5jX2FyZ3MgZnVuY19hcmdzX2xpc3QK KwkJCQlvcHRfZGVmaW5pdGlvbiBmdW5jX2FyZ3MgZnVuY19hcmdzX2xpc3QKIAkJCQlmdW5jX2Fy Z3Nfd2l0aF9kZWZhdWx0cyBmdW5jX2FyZ3Nfd2l0aF9kZWZhdWx0c19saXN0CiAJCQkJYWdncl9h cmdzIGFnZ3JfYXJnc19saXN0CiAJCQkJZnVuY19hcyBjcmVhdGVmdW5jX29wdF9saXN0IG9wdF9j cmVhdGVmdW5jX29wdF9saXN0IGFsdGVyZnVuY19vcHRfbGlzdApAQCAtNTIxLDcgKzUzOSw3IEBA IHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0 ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAldHlwZSA8cmFuZ2U+CXJlbGF0aW9uX2V4cHJfb3B0 X2FsaWFzCiAldHlwZSA8bm9kZT4JdGFibGVzYW1wbGVfY2xhdXNlIG9wdF9yZXBlYXRhYmxlX2Ns YXVzZQogJXR5cGUgPHRhcmdldD4JdGFyZ2V0X2VsIHNldF90YXJnZXQgaW5zZXJ0X2NvbHVtbl9p dGVtCi0KKyV0eXBlIDx0ZW1wb3JhbENsYXVzZT4JdGVtcG9yYWxfY2xhdXNlCiAldHlwZSA8c3Ry PgkJZ2VuZXJpY19vcHRpb25fbmFtZQogJXR5cGUgPG5vZGU+CWdlbmVyaWNfb3B0aW9uX2FyZwog JXR5cGUgPGRlZmVsdD4JZ2VuZXJpY19vcHRpb25fZWxlbSBhbHRlcl9nZW5lcmljX29wdGlvbl9l bGVtCkBAIC01NTksNyArNTc3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2Vs ZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICV0eXBlIDxr ZXl3b3JkPiBjb2xfbmFtZV9rZXl3b3JkIHJlc2VydmVkX2tleXdvcmQKICV0eXBlIDxrZXl3b3Jk PiBiYXJlX2xhYmVsX2tleXdvcmQKIAotJXR5cGUgPG5vZGU+CVRhYmxlQ29uc3RyYWludCBUYWJs ZUxpa2VDbGF1c2UKKyV0eXBlIDxub2RlPglUYWJsZUNvbnN0cmFpbnQgVGFibGVMaWtlQ2xhdXNl IG9wdFN5c3RlbVRpbWVDb2x1bW4KICV0eXBlIDxpdmFsPglUYWJsZUxpa2VPcHRpb25MaXN0IFRh YmxlTGlrZU9wdGlvbgogJXR5cGUgPHN0cj4JCWNvbHVtbl9jb21wcmVzc2lvbiBvcHRfY29sdW1u X2NvbXByZXNzaW9uCiAldHlwZSA8bGlzdD4JQ29sUXVhbExpc3QKQEAgLTY5Miw3ICs3MTAsNyBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCU9SREVSIE9SRElOQUxJVFkgT1RIRVJTIE9VVF9Q IE9VVEVSX1AKIAlPVkVSIE9WRVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgog Ci0JUEFSQUxMRUwgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJTkcgUEFTU1dPUkQgUExB Q0lORyBQTEFOUyBQT0xJQ1kKKwlQQVJBTExFTCBQQVJTRVIgUEFSVElBTCBQQVJUSVRJT04gUEFT U0lORyBQQVNTV09SRCBQTEFDSU5HIFBFUklPRCBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVD RURJTkcgUFJFQ0lTSU9OIFBSRVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9S IFBSSVZJTEVHRVMgUFJPQ0VEVVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJ Q0FUSU9OCiAKQEAgLTcwNyw3ICs3MjUsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZp ZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogCVNF UklBTElaQUJMRSBTRVJWRVIgU0VTU0lPTiBTRVNTSU9OX1VTRVIgU0VUIFNFVFMgU0VUT0YgU0hB UkUgU0hPVwogCVNJTUlMQVIgU0lNUExFIFNLSVAgU01BTExJTlQgU05BUFNIT1QgU09NRSBTUUxf UCBTVEFCTEUgU1RBTkRBTE9ORV9QCiAJU1RBUlQgU1RBVEVNRU5UIFNUQVRJU1RJQ1MgU1RESU4g U1RET1VUIFNUT1JBR0UgU1RPUkVEIFNUUklDVF9QIFNUUklQX1AKLQlTVUJTQ1JJUFRJT04gU1VC U1RSSU5HIFNVUFBPUlQgU1lNTUVUUklDIFNZU0lEIFNZU1RFTV9QCisJU1VCU0NSSVBUSU9OIFNV QlNUUklORyBTVVBQT1JUIFNZTU1FVFJJQyBTWVNJRCBTWVNURU1fUCBTWVNURU1fVElNRQogCiAJ VEFCTEUgVEFCTEVTIFRBQkxFU0FNUExFIFRBQkxFU1BBQ0UgVEVNUCBURU1QTEFURSBURU1QT1JB UlkgVEVYVF9QIFRIRU4KIAlUSUVTIFRJTUUgVElNRVNUQU1QIFRPIFRSQUlMSU5HIFRSQU5TQUNU SU9OIFRSQU5TRk9STQpAQCAtNzE4LDcgKzczNiw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJVU5MSVNURU4gVU5MT0dHRUQgVU5USUwgVVBEQVRFIFVTRVIgVVNJTkcKIAogCVZBQ1VVTSBW QUxJRCBWQUxJREFURSBWQUxJREFUT1IgVkFMVUVfUCBWQUxVRVMgVkFSQ0hBUiBWQVJJQURJQyBW QVJZSU5HCi0JVkVSQk9TRSBWRVJTSU9OX1AgVklFVyBWSUVXUyBWT0xBVElMRQorCVZFUkJPU0Ug VkVSU0lPTl9QIFZFUlNJT05JTkcgVklFVyBWSUVXUyBWT0xBVElMRQogCiAJV0hFTiBXSEVSRSBX SElURVNQQUNFX1AgV0lORE9XIFdJVEggV0lUSElOIFdJVEhPVVQgV09SSyBXUkFQUEVSIFdSSVRF CiAKQEAgLTczOSw3ICs3NTcsNyBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxl Y3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogICogYXMgTk9U LCBhdCBsZWFzdCB3aXRoIHJlc3BlY3QgdG8gdGhlaXIgbGVmdC1oYW5kIHN1YmV4cHJlc3Npb24u CiAgKiBOVUxMU19MQSBhbmQgV0lUSF9MQSBhcmUgbmVlZGVkIHRvIG1ha2UgdGhlIGdyYW1tYXIg TEFMUigxKS4KICAqLwotJXRva2VuCQlOT1RfTEEgTlVMTFNfTEEgV0lUSF9MQQorJXRva2VuCQlO T1RfTEEgTlVMTFNfTEEgV0lUSF9MQSBGT1JfTEEKIAogLyoKICAqIFRoZSBncmFtbWFyIGxpa2V3 aXNlIHRoaW5rcyB0aGVzZSB0b2tlbnMgYXJlIGtleXdvcmRzLCBidXQgdGhleSBhcmUgbmV2ZXIK QEAgLTc2Niw2ICs3ODQsOSBAQCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3Qo Y2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJW5vbmFzc29jCSc8 JyAnPicgJz0nIExFU1NfRVFVQUxTIEdSRUFURVJfRVFVQUxTIE5PVF9FUVVBTFMKICVub25hc3Nv YwlCRVRXRUVOIElOX1AgTElLRSBJTElLRSBTSU1JTEFSIE5PVF9MQQogJW5vbmFzc29jCUVTQ0FQ RQkJCS8qIEVTQ0FQRSBtdXN0IGJlIGp1c3QgYWJvdmUgTElLRS9JTElLRS9TSU1JTEFSICovCisl bm9uYXNzb2MJCVNZU1RFTV9QCislbm9uYXNzb2MJCVZFUlNJT05JTkcKKyVub25hc3NvYwkJREFZ X1AKIC8qCiAgKiBUbyBzdXBwb3J0IHRhcmdldF9lbCB3aXRob3V0IEFTLCBpdCB1c2VkIHRvIGJl IG5lY2Vzc2FyeSB0byBhc3NpZ24gSURFTlQgYW4KICAqIGV4cGxpY2l0IHByZWNlZGVuY2UganVz dCBsZXNzIHRoYW4gT3AuICBXaGlsZSB0aGF0J3Mgbm90IHJlYWxseSBuZWNlc3NhcnkKQEAgLTgw NSw2ICs4MjYsMTEgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIg KnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICVsZWZ0CQknKCcgJyknCiAl bGVmdAkJVFlQRUNBU1QKICVsZWZ0CQknLicKKyVsZWZ0CQlZRUFSX1AKKyVsZWZ0CQlNT05USF9Q CislbGVmdAkJSE9VUl9QCislbGVmdAkJTUlOVVRFX1AKKyVsZWZ0CQlUTwogLyoKICAqIFRoZXNl IG1pZ2h0IHNlZW0gdG8gYmUgbG93LXByZWNlZGVuY2UsIGJ1dCBhY3R1YWxseSB0aGV5IGFyZSBu b3QgcGFydAogICogb2YgdGhlIGFyaXRobWV0aWMgaGllcmFyY2h5IGF0IGFsbCBpbiB0aGVpciB1 c2UgYXMgSk9JTiBvcGVyYXRvcnMuCkBAIC0yMTgxLDYgKzIyMDcsMTQgQEAgYWx0ZXJfdGFibGVf Y21kOgogCQkJCQluLT5taXNzaW5nX29rID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKiluOwog CQkJCX0KKwkJCXwgQUREX1AgIG9wdFN5c3RlbVRpbWVDb2x1bW4KKwkJCQl7CisJCQkJCUFsdGVy VGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9 IEFUX1BlcmlvZENvbHVtbjsKKwkJCQkJbi0+ZGVmID0gJDI7CisJCQkJCW4tPm1pc3Npbmdfb2sg PSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJLyogQUxURVIgVEFCTEUg PG5hbWU+IEFERCBJRiBOT1QgRVhJU1RTIDxjb2xkZWY+ICovCiAJCQl8IEFERF9QIElGX1AgTk9U IEVYSVNUUyBjb2x1bW5EZWYKIAkJCQl7CkBAIC0yMjA4LDcgKzIyNDIsMTUgQEAgYWx0ZXJfdGFi bGVfY21kOgogCQkJCQluLT5taXNzaW5nX29rID0gdHJ1ZTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47 CiAJCQkJfQotCQkJLyogQUxURVIgVEFCTEUgPG5hbWU+IEFMVEVSIFtDT0xVTU5dIDxjb2xuYW1l PiB7U0VUIERFRkFVTFQgPGV4cHI+fERST1AgREVGQVVMVH0gKi8KKwkJCS8qIEFMVEVSIFRBQkxF IDxuYW1lPiBBREQgU1lTVEVNIFZFUlNJT05JTkcgKi8KKwkJCXwgQUREX1AgU1lTVEVNX1AgVkVS U0lPTklORworCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9IG1ha2VOb2RlKEFsdGVyVGFi bGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfQWRkU3lzdGVtVmVyc2lvbmluZzsKKwkJCQkJ bi0+ZGVmID0gTlVMTDsKKwkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChO b2RlICopbjsKKwkJCQl9CiAJCQl8IEFMVEVSIG9wdF9jb2x1bW4gQ29sSWQgYWx0ZXJfY29sdW1u X2RlZmF1bHQKIAkJCQl7CiAJCQkJCUFsdGVyVGFibGVDbWQgKm4gPSBtYWtlTm9kZShBbHRlclRh YmxlQ21kKTsKQEAgLTIzNTYsNyArMjM5OCwxOSBAQCBhbHRlcl90YWJsZV9jbWQ6CiAJCQkJCSQk ID0gKE5vZGUgKiluOwogCQkJCX0KIAkJCS8qIEFMVEVSIFRBQkxFIDxuYW1lPiBEUk9QIFtDT0xV TU5dIElGIEVYSVNUUyA8Y29sbmFtZT4gW1JFU1RSSUNUfENBU0NBREVdICovCi0JCQl8IERST1Ag b3B0X2NvbHVtbiBJRl9QIEVYSVNUUyBDb2xJZCBvcHRfZHJvcF9iZWhhdmlvcgorCQkJfCBEUk9Q IElGX1AgRVhJU1RTIENvbElkIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkJeworCQkJCQlBbHRlclRh YmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CisJCQkJCW4tPnN1YnR5cGUgPSBB VF9Ecm9wQ29sdW1uOworCQkJCQluLT5uYW1lID0gJDQ7CisJCQkJCW4tPmJlaGF2aW9yID0gJDU7 CisJCQkJCW4tPm1pc3Npbmdfb2sgPSB0cnVlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9 CisJCQkvKgorCQkJICogUmVkdW5kYW5jeSBoZXJlIGlzIG5lZWRlZCB0byBhdm9pZCBzaGlmdC9y ZWR1Y2UgY29uZmxpY3RzLgorCQkJICovCisJCQl8IERST1AgQ09MVU1OIElGX1AgRVhJU1RTIENv bElkIG9wdF9kcm9wX2JlaGF2aW9yCiAJCQkJewogCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFr ZU5vZGUoQWx0ZXJUYWJsZUNtZCk7CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9Ecm9wQ29sdW1uOwpA QCAtMjM2NSw4ICsyNDE5LDIwIEBAIGFsdGVyX3RhYmxlX2NtZDoKIAkJCQkJbi0+bWlzc2luZ19v ayA9IHRydWU7CiAJCQkJCSQkID0gKE5vZGUgKiluOwogCQkJCX0KLQkJCS8qIEFMVEVSIFRBQkxF IDxuYW1lPiBEUk9QIFtDT0xVTU5dIDxjb2xuYW1lPiBbUkVTVFJJQ1R8Q0FTQ0FERV0gKi8KLQkJ CXwgRFJPUCBvcHRfY29sdW1uIENvbElkIG9wdF9kcm9wX2JlaGF2aW9yCisJCQkvKiBBTFRFUiBU QUJMRSA8bmFtZT4gRFJPUCA8Y29sbmFtZT4gW1JFU1RSSUNUfENBU0NBREVdICovCisJCQl8IERS T1AgQ29sSWQgb3B0X2Ryb3BfYmVoYXZpb3IKKwkJCQl7CisJCQkJCUFsdGVyVGFibGVDbWQgKm4g PSBtYWtlTm9kZShBbHRlclRhYmxlQ21kKTsKKwkJCQkJbi0+c3VidHlwZSA9IEFUX0Ryb3BDb2x1 bW47CisJCQkJCW4tPm5hbWUgPSAkMjsKKwkJCQkJbi0+YmVoYXZpb3IgPSAkMzsKKwkJCQkJbi0+ bWlzc2luZ19vayA9IGZhbHNlOworCQkJCQkkJCA9IChOb2RlICopbjsKKwkJCQl9CisJCQkvKgor CQkJICogUmVkdW5kYW5jeSBoZXJlIGlzIG5lZWRlZCB0byBhdm9pZCBzaGlmdC9yZWR1Y2UgY29u ZmxpY3RzLgorCQkJICovCisJCQl8IERST1AgQ09MVU1OIENvbElkIG9wdF9kcm9wX2JlaGF2aW9y CiAJCQkJewogCQkJCQlBbHRlclRhYmxlQ21kICpuID0gbWFrZU5vZGUoQWx0ZXJUYWJsZUNtZCk7 CiAJCQkJCW4tPnN1YnR5cGUgPSBBVF9Ecm9wQ29sdW1uOwpAQCAtMjM3NSw2ICsyNDQxLDE1IEBA IGFsdGVyX3RhYmxlX2NtZDoKIAkJCQkJbi0+bWlzc2luZ19vayA9IGZhbHNlOwogCQkJCQkkJCA9 IChOb2RlICopbjsKIAkJCQl9CisJCQkvKiBBTFRFUiBUQUJMRSA8bmFtZT4gRFJPUCBTWVNURU0g VkVSU0lPTklORyBbUkVTVFJJQ1R8Q0FTQ0FERV0gKi8KKwkJCXwgIERST1AgU1lTVEVNX1AgVkVS U0lPTklORyBvcHRfZHJvcF9iZWhhdmlvcgorCQkJCXsKKwkJCQkJQWx0ZXJUYWJsZUNtZCAqbiA9 IG1ha2VOb2RlKEFsdGVyVGFibGVDbWQpOworCQkJCQluLT5zdWJ0eXBlID0gQVRfRHJvcFN5c3Rl bVZlcnNpb25pbmc7CisJCQkJCW4tPmJlaGF2aW9yID0gJDQ7CisJCQkJCW4tPm1pc3Npbmdfb2sg PSBmYWxzZTsKKwkJCQkJJCQgPSAoTm9kZSAqKW47CisJCQkJfQogCQkJLyoKIAkJCSAqIEFMVEVS IFRBQkxFIDxuYW1lPiBBTFRFUiBbQ09MVU1OXSA8Y29sbmFtZT4gW1NFVCBEQVRBXSBUWVBFIDx0 eXBlbmFtZT4KIAkJCSAqCQlbIFVTSU5HIDxleHByZXNzaW9uPiBdCkBAIC0zMjgyLDEyICszMzU3 LDEzIEBAIENyZWF0ZVN0bXQ6CUNSRUFURSBPcHRUZW1wIFRBQkxFIHF1YWxpZmllZF9uYW1lICco JyBPcHRUYWJsZUVsZW1lbnRMaXN0ICcpJwogCQkJCQkkNC0+cmVscGVyc2lzdGVuY2UgPSAkMjsK IAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKIAkJCQkJbi0+dGFibGVFbHRzID0gJDY7CisJCQkJCW4t PnN5c3RlbVZlcnNpb25pbmcgPSAoJDExKS0+c3lzdGVtVmVyc2lvbmluZzsKIAkJCQkJbi0+aW5o UmVsYXRpb25zID0gJDg7CiAJCQkJCW4tPnBhcnRzcGVjID0gJDk7CiAJCQkJCW4tPm9mVHlwZW5h bWUgPSBOVUxMOwogCQkJCQluLT5jb25zdHJhaW50cyA9IE5JTDsKIAkJCQkJbi0+YWNjZXNzTWV0 aG9kID0gJDEwOwotCQkJCQluLT5vcHRpb25zID0gJDExOworCQkJCQluLT5vcHRpb25zID0gKCQx MSktPm9wdGlvbnM7CiAJCQkJCW4tPm9uY29tbWl0ID0gJDEyOwogCQkJCQluLT50YWJsZXNwYWNl bmFtZSA9ICQxMzsKIAkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOwpAQCAtMzMwMSwxMiAr MzM3NywxMyBAQCBDcmVhdGVTdG10OglDUkVBVEUgT3B0VGVtcCBUQUJMRSBxdWFsaWZpZWRfbmFt ZSAnKCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScKIAkJCQkJJDctPnJlbHBlcnNpc3RlbmNlID0g JDI7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDc7CiAJCQkJCW4tPnRhYmxlRWx0cyA9ICQ5OworCQkJ CQluLT5zeXN0ZW1WZXJzaW9uaW5nID0gKCQxNCktPnN5c3RlbVZlcnNpb25pbmc7CiAJCQkJCW4t PmluaFJlbGF0aW9ucyA9ICQxMTsKIAkJCQkJbi0+cGFydHNwZWMgPSAkMTI7CiAJCQkJCW4tPm9m VHlwZW5hbWUgPSBOVUxMOwogCQkJCQluLT5jb25zdHJhaW50cyA9IE5JTDsKIAkJCQkJbi0+YWNj ZXNzTWV0aG9kID0gJDEzOwotCQkJCQluLT5vcHRpb25zID0gJDE0OworCQkJCQluLT5vcHRpb25z ID0gKCQxNCktPm9wdGlvbnM7CiAJCQkJCW4tPm9uY29tbWl0ID0gJDE1OwogCQkJCQluLT50YWJs ZXNwYWNlbmFtZSA9ICQxNjsKIAkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CkBAIC0zMzIw LDEzICszMzk3LDE0IEBAIENyZWF0ZVN0bXQ6CUNSRUFURSBPcHRUZW1wIFRBQkxFIHF1YWxpZmll ZF9uYW1lICcoJyBPcHRUYWJsZUVsZW1lbnRMaXN0ICcpJwogCQkJCQkkNC0+cmVscGVyc2lzdGVu Y2UgPSAkMjsKIAkJCQkJbi0+cmVsYXRpb24gPSAkNDsKIAkJCQkJbi0+dGFibGVFbHRzID0gJDc7 CisJCQkJCW4tPnN5c3RlbVZlcnNpb25pbmcgPSAoJDEwKS0+c3lzdGVtVmVyc2lvbmluZzsKIAkJ CQkJbi0+aW5oUmVsYXRpb25zID0gTklMOwogCQkJCQluLT5wYXJ0c3BlYyA9ICQ4OwogCQkJCQlu LT5vZlR5cGVuYW1lID0gbWFrZVR5cGVOYW1lRnJvbU5hbWVMaXN0KCQ2KTsKIAkJCQkJbi0+b2ZU eXBlbmFtZS0+bG9jYXRpb24gPSBANjsKIAkJCQkJbi0+Y29uc3RyYWludHMgPSBOSUw7CiAJCQkJ CW4tPmFjY2Vzc01ldGhvZCA9ICQ5OwotCQkJCQluLT5vcHRpb25zID0gJDEwOworCQkJCQluLT5v cHRpb25zID0gKCQxMCktPm9wdGlvbnM7CiAJCQkJCW4tPm9uY29tbWl0ID0gJDExOwogCQkJCQlu LT50YWJsZXNwYWNlbmFtZSA9ICQxMjsKIAkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOwpA QCAtMzM0MCwxMyArMzQxOCwxNCBAQCBDcmVhdGVTdG10OglDUkVBVEUgT3B0VGVtcCBUQUJMRSBx dWFsaWZpZWRfbmFtZSAnKCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScKIAkJCQkJJDctPnJlbHBl cnNpc3RlbmNlID0gJDI7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDc7CiAJCQkJCW4tPnRhYmxlRWx0 cyA9ICQxMDsKKwkJCQkJbi0+c3lzdGVtVmVyc2lvbmluZyA9ICgkMTMpLT5zeXN0ZW1WZXJzaW9u aW5nOwogCQkJCQluLT5pbmhSZWxhdGlvbnMgPSBOSUw7CiAJCQkJCW4tPnBhcnRzcGVjID0gJDEx OwogCQkJCQluLT5vZlR5cGVuYW1lID0gbWFrZVR5cGVOYW1lRnJvbU5hbWVMaXN0KCQ5KTsKIAkJ CQkJbi0+b2ZUeXBlbmFtZS0+bG9jYXRpb24gPSBAOTsKIAkJCQkJbi0+Y29uc3RyYWludHMgPSBO SUw7CiAJCQkJCW4tPmFjY2Vzc01ldGhvZCA9ICQxMjsKLQkJCQkJbi0+b3B0aW9ucyA9ICQxMzsK KwkJCQkJbi0+b3B0aW9ucyA9ICgkMTMpLT5vcHRpb25zOwogCQkJCQluLT5vbmNvbW1pdCA9ICQx NDsKIAkJCQkJbi0+dGFibGVzcGFjZW5hbWUgPSAkMTU7CiAJCQkJCW4tPmlmX25vdF9leGlzdHMg PSB0cnVlOwpAQCAtMzM2MCwxMyArMzQzOSwxNCBAQCBDcmVhdGVTdG10OglDUkVBVEUgT3B0VGVt cCBUQUJMRSBxdWFsaWZpZWRfbmFtZSAnKCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScKIAkJCQkJ JDQtPnJlbHBlcnNpc3RlbmNlID0gJDI7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDQ7CiAJCQkJCW4t PnRhYmxlRWx0cyA9ICQ4OworCQkJCQluLT5zeXN0ZW1WZXJzaW9uaW5nID0gKCQxMiktPnN5c3Rl bVZlcnNpb25pbmc7CiAJCQkJCW4tPmluaFJlbGF0aW9ucyA9IGxpc3RfbWFrZTEoJDcpOwogCQkJ CQluLT5wYXJ0Ym91bmQgPSAkOTsKIAkJCQkJbi0+cGFydHNwZWMgPSAkMTA7CiAJCQkJCW4tPm9m VHlwZW5hbWUgPSBOVUxMOwogCQkJCQluLT5jb25zdHJhaW50cyA9IE5JTDsKIAkJCQkJbi0+YWNj ZXNzTWV0aG9kID0gJDExOwotCQkJCQluLT5vcHRpb25zID0gJDEyOworCQkJCQluLT5vcHRpb25z ID0gKCQxMiktPm9wdGlvbnM7CiAJCQkJCW4tPm9uY29tbWl0ID0gJDEzOwogCQkJCQluLT50YWJs ZXNwYWNlbmFtZSA9ICQxNDsKIAkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IGZhbHNlOwpAQCAtMzM4 MCwxMyArMzQ2MCwxNCBAQCBDcmVhdGVTdG10OglDUkVBVEUgT3B0VGVtcCBUQUJMRSBxdWFsaWZp ZWRfbmFtZSAnKCcgT3B0VGFibGVFbGVtZW50TGlzdCAnKScKIAkJCQkJJDctPnJlbHBlcnNpc3Rl bmNlID0gJDI7CiAJCQkJCW4tPnJlbGF0aW9uID0gJDc7CiAJCQkJCW4tPnRhYmxlRWx0cyA9ICQx MTsKKwkJCQkJbi0+c3lzdGVtVmVyc2lvbmluZyA9ICgkMTUpLT5zeXN0ZW1WZXJzaW9uaW5nOwog CQkJCQluLT5pbmhSZWxhdGlvbnMgPSBsaXN0X21ha2UxKCQxMCk7CiAJCQkJCW4tPnBhcnRib3Vu ZCA9ICQxMjsKIAkJCQkJbi0+cGFydHNwZWMgPSAkMTM7CiAJCQkJCW4tPm9mVHlwZW5hbWUgPSBO VUxMOwogCQkJCQluLT5jb25zdHJhaW50cyA9IE5JTDsKIAkJCQkJbi0+YWNjZXNzTWV0aG9kID0g JDE0OwotCQkJCQluLT5vcHRpb25zID0gJDE1OworCQkJCQluLT5vcHRpb25zID0gKCQxNSktPm9w dGlvbnM7CiAJCQkJCW4tPm9uY29tbWl0ID0gJDE2OwogCQkJCQluLT50YWJsZXNwYWNlbmFtZSA9 ICQxNzsKIAkJCQkJbi0+aWZfbm90X2V4aXN0cyA9IHRydWU7CkBAIC0zNDYzLDYgKzM1NDQsNyBA QCBUYWJsZUVsZW1lbnQ6CiAJCQljb2x1bW5EZWYJCQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRh YmxlTGlrZUNsYXVzZQkJCQkJeyAkJCA9ICQxOyB9CiAJCQl8IFRhYmxlQ29uc3RyYWludAkJCQkJ eyAkJCA9ICQxOyB9CisJCQl8IG9wdFN5c3RlbVRpbWVDb2x1bW4JCQkJCXsgJCQgPSAkMTsgfQog CQk7CiAKIFR5cGVkVGFibGVFbGVtZW50OgpAQCAtMzU3MCw2ICszNjUyLDE2IEBAIENvbENvbnN0 cmFpbnQ6CiAJCQkJfQogCQk7CiAKK29wdFN5c3RlbVRpbWVDb2x1bW46CisJCQlQRVJJT0QgRk9S X0xBIFNZU1RFTV9USU1FICcoJyBuYW1lICcsJyBuYW1lICcpJworCQkJCXsKKwkJCQkJUm93VGlt ZSAqbiA9IG1ha2VOb2RlKFJvd1RpbWUpOworCQkJCQluLT5zdGFydF90aW1lID0gJDU7CisJCQkJ CW4tPmVuZF90aW1lID0gJDc7CisJCQkJCSQkID0gKE5vZGUgKiluOworCQkJCX0KKwkJOworCiAv KiBERUZBVUxUIE5VTEwgaXMgYWxyZWFkeSB0aGUgZGVmYXVsdCBmb3IgUG9zdGdyZXMuCiAgKiBC dXQgZGVmaW5lIGl0IGhlcmUgYW5kIGNhcnJ5IGl0IGZvcndhcmQgaW50byB0aGUgc3lzdGVtCiAg KiB0byBtYWtlIGl0IGV4cGxpY2l0LgpAQCAtMzY1MiwxMiArMzc0NCwxMiBAQCBDb2xDb25zdHJh aW50RWxlbToKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJ CQkJfQotCQkJfCBHRU5FUkFURUQgZ2VuZXJhdGVkX3doZW4gQVMgJygnIGFfZXhwciAnKScgU1RP UkVECisJCQl8IEdFTkVSQVRFRCBnZW5lcmF0ZWRfd2hlbiBBUyBnZW5lcmF0ZWRfdHlwZQogCQkJ CXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQpOwotCQkJCQluLT5j b250eXBlID0gQ09OU1RSX0dFTkVSQVRFRDsKKwkJCQkJbi0+Y29udHlwZSA9ICgkNCktPmNvbnR5 cGU7CiAJCQkJCW4tPmdlbmVyYXRlZF93aGVuID0gJDI7Ci0JCQkJCW4tPnJhd19leHByID0gJDU7 CisJCQkJCW4tPnJhd19leHByID0gKCQ0KS0+cmF3X2V4cHI7CiAJCQkJCW4tPmNvb2tlZF9leHBy ID0gTlVMTDsKIAkJCQkJbi0+bG9jYXRpb24gPSBAMTsKIApAQCAtMzY3NSw2ICszNzY3LDcgQEAg Q29sQ29uc3RyYWludEVsZW06CiAKIAkJCQkJJCQgPSAoTm9kZSAqKW47CiAJCQkJfQorCiAJCQl8 IFJFRkVSRU5DRVMgcXVhbGlmaWVkX25hbWUgb3B0X2NvbHVtbl9saXN0IGtleV9tYXRjaCBrZXlf YWN0aW9ucwogCQkJCXsKIAkJCQkJQ29uc3RyYWludCAqbiA9IG1ha2VOb2RlKENvbnN0cmFpbnQp OwpAQCAtMzY5Nyw2ICszNzkwLDMwIEBAIGdlbmVyYXRlZF93aGVuOgogCQkJfCBCWSBERUZBVUxU CXsgJCQgPSBBVFRSSUJVVEVfSURFTlRJVFlfQllfREVGQVVMVDsgfQogCQk7CiAKK2dlbmVyYXRl ZF90eXBlOgorCQkJJygnIGFfZXhwciAnKScgU1RPUkVECisJCQkJeworCQkJCQlHZW5lcmF0ZVR5 cGUgKm4gPSAoR2VuZXJhdGVUeXBlICopIHBhbGxvYyhzaXplb2YoR2VuZXJhdGVUeXBlKSk7CisJ CQkJCW4tPmNvbnR5cGUgPSBDT05TVFJfR0VORVJBVEVEOworCQkJCQluLT5yYXdfZXhwciA9ICQy OworCQkJCQkkJCA9IG47CisJCQkJfQorCQkJfCBST1cgU1RBUlQKKwkJCQl7CisJCQkJCUdlbmVy YXRlVHlwZSAqbiA9IChHZW5lcmF0ZVR5cGUgKikgcGFsbG9jKHNpemVvZihHZW5lcmF0ZVR5cGUp KTsKKwkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9ST1dfU1RBUlRfVElNRTsKKwkJCQkJbi0+cmF3 X2V4cHIgPSBOVUxMOworCQkJCQkkJCA9IG47CisJCQkJfQorCQkJfCBST1cgRU5EX1AKKwkJCQl7 CisJCQkJCUdlbmVyYXRlVHlwZSAqbiA9IChHZW5lcmF0ZVR5cGUgKikgcGFsbG9jKHNpemVvZihH ZW5lcmF0ZVR5cGUpKTsKKwkJCQkJbi0+Y29udHlwZSA9IENPTlNUUl9ST1dfRU5EX1RJTUU7CisJ CQkJCW4tPnJhd19leHByID0gTlVMTDsKKwkJCQkJJCQgPSBuOworCQkJCX0KKwkJOworCiAvKgog ICogQ29uc3RyYWludEF0dHIgcmVwcmVzZW50cyBjb25zdHJhaW50IGF0dHJpYnV0ZXMsIHdoaWNo IHdlIHBhcnNlIGFzIGlmCiAgKiB0aGV5IHdlcmUgaW5kZXBlbmRlbnQgY29uc3RyYWludCBjbGF1 c2VzLCBpbiBvcmRlciB0byBhdm9pZCBzaGlmdC9yZWR1Y2UKQEAgLTQwNzQsOSArNDE5MSwzNCBA QCB0YWJsZV9hY2Nlc3NfbWV0aG9kX2NsYXVzZToKIAogLyogV0lUSE9VVCBPSURTIGlzIGxlZ2Fj eSBvbmx5ICovCiBPcHRXaXRoOgotCQkJV0lUSCByZWxvcHRpb25zCQkJCXsgJCQgPSAkMjsgfQot CQkJfCBXSVRIT1VUIE9JRFMJCQkJeyAkJCA9IE5JTDsgfQotCQkJfCAvKkVNUFRZKi8JCQkJCXsg JCQgPSBOSUw7IH0KKwkJCVdJVEggcmVsb3B0aW9ucworCQkJCXsKKwkJCQkJT3B0aW9uV2l0aCAq biA9IChPcHRpb25XaXRoICopIHBhbGxvYyhzaXplb2YoT3B0aW9uV2l0aCkpOworCQkJCQluLT5v cHRpb25zID0gJDI7CisJCQkJCW4tPnN5c3RlbVZlcnNpb25pbmcgPSBmYWxzZTsKKwkJCQkJJCQg PSBuOworCQkJCX0KKwkJCXwgV0lUSE9VVCBPSURTCisJCQkJeworCQkJCQlPcHRpb25XaXRoICpu ID0gKE9wdGlvbldpdGggKikgcGFsbG9jKHNpemVvZihPcHRpb25XaXRoKSk7CisJCQkJCW4tPm9w dGlvbnMgPSBOSUw7CisJCQkJCW4tPnN5c3RlbVZlcnNpb25pbmcgPSBmYWxzZTsKKwkJCQkJJCQg PSBuOworCQkJCX0KKwkJCXwgV0lUSCBTWVNURU1fUCBWRVJTSU9OSU5HCisJCQkJeworCQkJCQlP cHRpb25XaXRoICpuID0gKE9wdGlvbldpdGggKikgcGFsbG9jKHNpemVvZihPcHRpb25XaXRoKSk7 CisJCQkJCW4tPm9wdGlvbnMgPSBOSUw7CisJCQkJCW4tPnN5c3RlbVZlcnNpb25pbmcgPSB0cnVl OworCQkJCQkkJCA9IG47CisJCQkJfQorCQkJfCAvKkVNUFRZKi8KKwkJCQl7CisJCQkJCU9wdGlv bldpdGggKm4gPSAoT3B0aW9uV2l0aCAqKSBwYWxsb2Moc2l6ZW9mKE9wdGlvbldpdGgpKTsKKwkJ CQkJbi0+b3B0aW9ucyA9IE5JTDsKKwkJCQkJbi0+c3lzdGVtVmVyc2lvbmluZyA9IGZhbHNlOwor CQkJCQkkJCA9IG47CisJCQkJfQogCQk7CiAKIE9uQ29tbWl0T3B0aW9uOiAgT04gQ09NTUlUIERS T1AJCQkJeyAkJCA9IE9OQ09NTUlUX0RST1A7IH0KQEAgLTQyNDIsNyArNDM4NCw3IEBAIGNyZWF0 ZV9hc190YXJnZXQ6CiAJCQkJCSQkLT5yZWwgPSAkMTsKIAkJCQkJJCQtPmNvbE5hbWVzID0gJDI7 CiAJCQkJCSQkLT5hY2Nlc3NNZXRob2QgPSAkMzsKLQkJCQkJJCQtPm9wdGlvbnMgPSAkNDsKKwkJ CQkJJCQtPm9wdGlvbnMgPSAoJDQpLT5vcHRpb25zOwogCQkJCQkkJC0+b25Db21taXQgPSAkNTsK IAkJCQkJJCQtPnRhYmxlU3BhY2VOYW1lID0gJDY7CiAJCQkJCSQkLT52aWV3UXVlcnkgPSBOVUxM OwpAQCAtMTIwMDMsNyArMTIxNDUsNyBAQCBoYXZpbmdfY2xhdXNlOgogCiBmb3JfbG9ja2luZ19j bGF1c2U6CiAJCQlmb3JfbG9ja2luZ19pdGVtcwkJCQkJCXsgJCQgPSAkMTsgfQotCQkJfCBGT1Ig UkVBRCBPTkxZCQkJCQkJCXsgJCQgPSBOSUw7IH0KKwkJCXwgRk9SIFJFQUQgT05MWSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gTklMOyB9CiAJ CTsKIAogb3B0X2Zvcl9sb2NraW5nX2NsYXVzZToKQEAgLTEyMDgyLDEyICsxMjIyNCwxNiBAQCBm cm9tX2xpc3Q6CiAvKgogICogdGFibGVfcmVmIGlzIHdoZXJlIGFuIGFsaWFzIGNsYXVzZSBjYW4g YmUgYXR0YWNoZWQuCiAgKi8KLXRhYmxlX3JlZjoJcmVsYXRpb25fZXhwciBvcHRfYWxpYXNfY2xh dXNlCit0YWJsZV9yZWY6CXJlbGF0aW9uX2V4cHIgYWxpYXNfY2xhdXNlCiAJCQkJewogCQkJCQkk MS0+YWxpYXMgPSAkMjsKIAkJCQkJJCQgPSAoTm9kZSAqKSAkMTsKIAkJCQl9Ci0JCQl8IHJlbGF0 aW9uX2V4cHIgb3B0X2FsaWFzX2NsYXVzZSB0YWJsZXNhbXBsZV9jbGF1c2UKKwkJCXwgcmVsYXRp b25fZXhwciAlcHJlYyBVTUlOVVMKKwkJCQl7CisJCQkJCSQkID0gKE5vZGUgKikgJDE7CisJCQkJ fQorCQkJfCByZWxhdGlvbl9leHByIGFsaWFzX2NsYXVzZSB0YWJsZXNhbXBsZV9jbGF1c2UKIAkJ CQl7CiAJCQkJCVJhbmdlVGFibGVTYW1wbGUgKm4gPSAoUmFuZ2VUYWJsZVNhbXBsZSAqKSAkMzsK IAkJCQkJJDEtPmFsaWFzID0gJDI7CkBAIC0xMjA5NSw2ICsxMjI0MSwxOSBAQCB0YWJsZV9yZWY6 CXJlbGF0aW9uX2V4cHIgb3B0X2FsaWFzX2NsYXVzZQogCQkJCQluLT5yZWxhdGlvbiA9IChOb2Rl ICopICQxOwogCQkJCQkkJCA9IChOb2RlICopIG47CiAJCQkJfQorCisJCQl8IHJlbGF0aW9uX2V4 cHIgdGFibGVzYW1wbGVfY2xhdXNlCisJCQkJeworCQkJCQlSYW5nZVRhYmxlU2FtcGxlICpuID0g KFJhbmdlVGFibGVTYW1wbGUgKikgJDI7CisJCQkJCS8qIHJlbGF0aW9uX2V4cHIgZ29lcyBpbnNp ZGUgdGhlIFJhbmdlVGFibGVTYW1wbGUgbm9kZSAqLworCQkJCQluLT5yZWxhdGlvbiA9IChOb2Rl ICopICQxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQkJfCByZWxhdGlvbl9leHBy IHRlbXBvcmFsX2NsYXVzZQorCQkJCXsKKwkJCQkJJDItPnJlbGF0aW9uID0gKE5vZGUgKikkMTsK KwkJCQkJJCQgPSAoTm9kZSAqKSQyOworCQkJCX0KIAkJCXwgZnVuY190YWJsZSBmdW5jX2FsaWFz X2NsYXVzZQogCQkJCXsKIAkJCQkJUmFuZ2VGdW5jdGlvbiAqbiA9IChSYW5nZUZ1bmN0aW9uICop ICQxOwpAQCAtMTIxOTMsNyArMTIzNTIsNTQgQEAgdGFibGVfcmVmOglyZWxhdGlvbl9leHByIG9w dF9hbGlhc19jbGF1c2UKIAkJCQkJJCQgPSAoTm9kZSAqKSAkMjsKIAkJCQl9CiAJCTsKK3RlbXBv cmFsX2NsYXVzZTogIEZPUl9MQSBTWVNURU1fVElNRSBBUyBPRiBhX2V4cHIKKwkJCQl7CisJCQkJ CSQkID0gbWFrZU5vZGUoVGVtcG9yYWxDbGF1c2UpOworCQkJCQkkJC0+a2luZCA9IEFTX09GOwor CQkJCQkkJC0+ZnJvbSA9IE5VTEw7CisJCQkJCSQkLT50byA9IChOb2RlICopbWFrZVR5cGVDYXN0 KCQ1LCBTeXN0ZW1UeXBlTmFtZSgidGltZXN0YW1wdHoiKSwgQDUpOworCQkJCX0KKwkJCXwgRk9S X0xBIFNZU1RFTV9USU1FIEJFVFdFRU4gYV9leHByIEFORCBhX2V4cHIKKwkJCQl7CisJCQkJCSQk ID0gbWFrZU5vZGUoVGVtcG9yYWxDbGF1c2UpOworCQkJCQkkJC0+a2luZCA9IEJFVFdFRU5fVDsK KwkJCQkJJCQtPmZyb20gPSAoTm9kZSAqKW1ha2VUeXBlQ2FzdCgkNCwgU3lzdGVtVHlwZU5hbWUo InRpbWVzdGFtcHR6IiksIEA0KTsKKwkJCQkJJCQtPnRvID0gKE5vZGUgKiltYWtlVHlwZUNhc3Qo JDYsIFN5c3RlbVR5cGVOYW1lKCJ0aW1lc3RhbXB0eiIpLCBANik7CisJCQkJfQorCQkJfCBGT1Jf TEEgU1lTVEVNX1RJTUUgQkVUV0VFTiBTWU1NRVRSSUMgYV9leHByIEFORCBhX2V4cHIKKwkJCQl7 CisJCQkJCU1pbk1heEV4cHIgKmcgPSBtYWtlTm9kZShNaW5NYXhFeHByKTsKKwkJCQkJTWluTWF4 RXhwciAqbCA9IG1ha2VOb2RlKE1pbk1heEV4cHIpOworCQkJCQkkJCA9IG1ha2VOb2RlKFRlbXBv cmFsQ2xhdXNlKTsKIAorCQkJCQkkJC0+a2luZCA9IEJFVFdFRU5fU1lNTUVUUklDOworCQkJCQls LT5hcmdzID0gbGlzdF9tYWtlMigoTm9kZSAqKW1ha2VUeXBlQ2FzdCgkNSwgU3lzdGVtVHlwZU5h bWUoInRpbWVzdGFtcHR6IiksCisJCQkJCQkJQDIpLChOb2RlICopbWFrZVR5cGVDYXN0KCQ3LCBT eXN0ZW1UeXBlTmFtZSgidGltZXN0YW1wdHoiKSwgQDcpKTsKKwkJCQkJbC0+b3AgPSBJU19MRUFT VDsKKwkJCQkJbC0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQtPmZyb20gPSAoTm9kZSAqKWw7CisK KwkJCQkJZy0+YXJncyA9IGxpc3RfbWFrZTIoKE5vZGUgKiltYWtlVHlwZUNhc3QoJDUsIFN5c3Rl bVR5cGVOYW1lKCJ0aW1lc3RhbXB0eiIpLAorCQkJCQkJQDIpLChOb2RlICopbWFrZVR5cGVDYXN0 KCQ3LCBTeXN0ZW1UeXBlTmFtZSgidGltZXN0YW1wdHoiKSwgQDcpKTsKKwkJCQkJZy0+b3AgPSBJ U19HUkVBVEVTVDsKKwkJCQkJZy0+bG9jYXRpb24gPSBAMTsKKwkJCQkJJCQtPnRvID0gKE5vZGUg KilnOworCQkJCX0KKwkJCXwgRk9SX0xBIFNZU1RFTV9USU1FIEJFVFdFRU4gQVNZTU1FVFJJQyBh X2V4cHIgQU5EIGFfZXhwcgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShUZW1wb3JhbENsYXVz ZSk7CisJCQkJCSQkLT5raW5kID0gQkVUV0VFTl9BU1lNTUVUUklDOworCQkJCQkkJC0+ZnJvbSA9 IChOb2RlICopbWFrZVR5cGVDYXN0KCQ1LCBTeXN0ZW1UeXBlTmFtZSgidGltZXN0YW1wdHoiKSwg QDUpOworCQkJCQkkJC0+dG8gPSAoTm9kZSAqKW1ha2VUeXBlQ2FzdCgkNywgU3lzdGVtVHlwZU5h bWUoInRpbWVzdGFtcHR6IiksIEA3KTsKKwkJCQl9CisJCQl8IEZPUl9MQSBTWVNURU1fVElNRSBG Uk9NIGFfZXhwciBUTyBhX2V4cHIKKwkJCQl7CisJCQkJCSQkID0gbWFrZU5vZGUoVGVtcG9yYWxD bGF1c2UpOworCQkJCQkkJC0+a2luZCA9IEZST01fVE87CisJCQkJCSQkLT5mcm9tID0gKE5vZGUg KiltYWtlVHlwZUNhc3QoJDQsIFN5c3RlbVR5cGVOYW1lKCJ0aW1lc3RhbXB0eiIpLCBANCk7CisJ CQkJCSQkLT50byA9IChOb2RlICopbWFrZVR5cGVDYXN0KCQ2LCBTeXN0ZW1UeXBlTmFtZSgidGlt ZXN0YW1wdHoiKSwgQDYpOworCQkJCX0KKwkJOwogCiAvKgogICogSXQgbWF5IHNlZW0gc2lsbHkg dG8gc2VwYXJhdGUgam9pbmVkX3RhYmxlIGZyb20gdGFibGVfcmVmLCBidXQgdGhlcmUgaXMKQEAg LTE1NjYxLDYgKzE1ODY3LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBQQVJUSVRJT04K IAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJfCBQRVJJT0QKIAkJCXwgUExBTlMKIAkJ CXwgUE9MSUNZCiAJCQl8IFBSRUNFRElORwpAQCAtMTU3MzgsNiArMTU5NDUsNyBAQCB1bnJlc2Vy dmVkX2tleXdvcmQ6CiAJCQl8IFNVUFBPUlQKIAkJCXwgU1lTSUQKIAkJCXwgU1lTVEVNX1AKKwkJ CXwgU1lTVEVNX1RJTUUKIAkJCXwgVEFCTEVTCiAJCQl8IFRBQkxFU1BBQ0UKIAkJCXwgVEVNUApA QCAtMTU3NjgsNiArMTU5NzYsNyBAQCB1bnJlc2VydmVkX2tleXdvcmQ6CiAJCQl8IFZBTFVFX1AK IAkJCXwgVkFSWUlORwogCQkJfCBWRVJTSU9OX1AKKwkJCXwgVkVSU0lPTklORwogCQkJfCBWSUVX CiAJCQl8IFZJRVdTCiAJCQl8IFZPTEFUSUxFCkBAIC0xNjIzOSw2ICsxNjQ0OCw3IEBAIGJhcmVf bGFiZWxfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OCiAJCQl8IFBBU1NJTkcKIAkJCXwgUEFTU1dP UkQKKwkJCXwgUEVSSU9ECiAJCQl8IFBMQUNJTkcKIAkJCXwgUExBTlMKIAkJCXwgUE9MSUNZCkBA IC0xNjMzMCw2ICsxNjU0MCw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgU1lNTUVUUklD CiAJCQl8IFNZU0lECiAJCQl8IFNZU1RFTV9QCisJCQl8IFNZU1RFTV9USU1FCiAJCQl8IFRBQkxF CiAJCQl8IFRBQkxFUwogCQkJfCBUQUJMRVNBTVBMRQpAQCAtMTYzNzUsNiArMTY1ODYsNyBAQCBi YXJlX2xhYmVsX2tleXdvcmQ6CiAJCQl8IFZBUklBRElDCiAJCQl8IFZFUkJPU0UKIAkJCXwgVkVS U0lPTl9QCisJCQl8IFZFUlNJT05JTkcKIAkJCXwgVklFVwogCQkJfCBWSUVXUwogCQkJfCBWT0xB VElMRQpAQCAtMTY0OTEsMTYgKzE2NzAzLDYgQEAgbWFrZUNvbHVtblJlZihjaGFyICpjb2xuYW1l LCBMaXN0ICppbmRpcmVjdGlvbiwKIAlyZXR1cm4gKE5vZGUgKikgYzsKIH0KIAotc3RhdGljIE5v ZGUgKgotbWFrZVR5cGVDYXN0KE5vZGUgKmFyZywgVHlwZU5hbWUgKnR5cGVuYW1lLCBpbnQgbG9j YXRpb24pCi17Ci0JVHlwZUNhc3QgKm4gPSBtYWtlTm9kZShUeXBlQ2FzdCk7Ci0Jbi0+YXJnID0g YXJnOwotCW4tPnR5cGVOYW1lID0gdHlwZW5hbWU7Ci0Jbi0+bG9jYXRpb24gPSBsb2NhdGlvbjsK LQlyZXR1cm4gKE5vZGUgKikgbjsKLX0KLQogc3RhdGljIE5vZGUgKgogbWFrZVN0cmluZ0NvbnN0 KGNoYXIgKnN0ciwgaW50IGxvY2F0aW9uKQogewpAQCAtMTY5MDUsMjMgKzE3MTA3LDYgQEAgZG9O ZWdhdGVGbG9hdChWYWx1ZSAqdikKIAkJdi0+dmFsLnN0ciA9IHBzcHJpbnRmKCItJXMiLCBvbGR2 YWwpOwogfQogCi1zdGF0aWMgTm9kZSAqCi1tYWtlQW5kRXhwcihOb2RlICpsZXhwciwgTm9kZSAq cmV4cHIsIGludCBsb2NhdGlvbikKLXsKLQkvKiBGbGF0dGVuICJhIEFORCBiIEFORCBjIC4uLiIg dG8gYSBzaW5nbGUgQm9vbEV4cHIgb24gc2lnaHQgKi8KLQlpZiAoSXNBKGxleHByLCBCb29sRXhw cikpCi0JewotCQlCb29sRXhwciAqYmxleHByID0gKEJvb2xFeHByICopIGxleHByOwotCi0JCWlm IChibGV4cHItPmJvb2xvcCA9PSBBTkRfRVhQUikKLQkJewotCQkJYmxleHByLT5hcmdzID0gbGFw cGVuZChibGV4cHItPmFyZ3MsIHJleHByKTsKLQkJCXJldHVybiAoTm9kZSAqKSBibGV4cHI7Ci0J CX0KLQl9Ci0JcmV0dXJuIChOb2RlICopIG1ha2VCb29sRXhwcihBTkRfRVhQUiwgbGlzdF9tYWtl MihsZXhwciwgcmV4cHIpLCBsb2NhdGlvbik7Ci19Ci0KIHN0YXRpYyBOb2RlICoKIG1ha2VPckV4 cHIoTm9kZSAqbGV4cHIsIE5vZGUgKnJleHByLCBpbnQgbG9jYXRpb24pCiB7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfY2xhdXNlLmMKaW5kZXggYjNmMTUxZDMzYi4uOGZkNGExOTcwMiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNl ci9wYXJzZV9jbGF1c2UuYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIm5vZGVzL21ha2Vm dW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm9wdGltaXpl ci9vcHRpbWl6ZXIuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbmNhdC5oIgogI2luY2x1ZGUg InBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2lu Y2x1ZGUgInBhcnNlci9wYXJzZV9jb2VyY2UuaCIKQEAgLTk3LDYgKzk4LDcgQEAgc3RhdGljIFdp bmRvd0NsYXVzZSAqZmluZFdpbmRvd0NsYXVzZShMaXN0ICp3Y2xpc3QsIGNvbnN0IGNoYXIgKm5h bWUpOwogc3RhdGljIE5vZGUgKnRyYW5zZm9ybUZyYW1lT2Zmc2V0KFBhcnNlU3RhdGUgKnBzdGF0 ZSwgaW50IGZyYW1lT3B0aW9ucywKIAkJCQkJCQkJICBPaWQgcmFuZ2VvcGZhbWlseSwgT2lkIHJh bmdlb3BjaW50eXBlLCBPaWQgKmluUmFuZ2VGdW5jLAogCQkJCQkJCQkgIE5vZGUgKmNsYXVzZSk7 CitzdGF0aWMgdm9pZCBjaGFuZ2VUZW1wb3JhbFRvV2hlcmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBUZW1wb3JhbENsYXVzZSAqIHRjLCBSYW5nZVRibEVudHJ5ICpydGUpOwogCiAKIC8qCkBA IC0xMTM4LDYgKzExNDAsMzUgQEAgdHJhbnNmb3JtRnJvbUNsYXVzZUl0ZW0oUGFyc2VTdGF0ZSAq cHN0YXRlLCBOb2RlICpuLAogCQlydGUtPnRhYmxlc2FtcGxlID0gdHJhbnNmb3JtUmFuZ2VUYWJs ZVNhbXBsZShwc3RhdGUsIHJ0cyk7CiAJCXJldHVybiByZWw7CiAJfQorCWVsc2UgaWYgKElzQShu LCBUZW1wb3JhbENsYXVzZSkpCisJeworCQlUZW1wb3JhbENsYXVzZSAqdGMgPSAoVGVtcG9yYWxD bGF1c2UgKikgbjsKKwkJUmFuZ2VWYXIgICAqcnYgPSAoUmFuZ2VWYXIgKikgdGMtPnJlbGF0aW9u OworCQlSYW5nZVRibFJlZiAqcnRyOworCQlQYXJzZU5hbWVzcGFjZUl0ZW0gKm5zaXRlbTsKKwkJ UmFuZ2VUYmxFbnRyeSAqcnRlOworCQlSZWxhdGlvbglyZWw7CisJCVR1cGxlRGVzYwl0dXBkZXNj OworCisJCW5zaXRlbSA9IHRyYW5zZm9ybVRhYmxlRW50cnkocHN0YXRlLCBydik7CisJCXJ0ZSA9 IG5zaXRlbS0+cF9ydGU7CisJCXJlbCA9IHRhYmxlX29wZW4ocnRlLT5yZWxpZCwgTm9Mb2NrKTsK KwkJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwkJcnRlLT5oYXNfc3lzdGVtX3Zl cnNpb25pbmcgPSAodHVwZGVzYy0+Y29uc3RyICYmIHR1cGRlc2MtPmNvbnN0ci0+aGFzX3N5c3Rl bV92ZXJzaW9uaW5nKTsKKwkJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJCWlmICghcnRl LT5oYXNfc3lzdGVtX3ZlcnNpb25pbmcpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29k ZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCSBlcnJtc2coInRlbXBvcmFs IGNsYXVzZSBjYW4gb25seSBzcGVjaWZpZWQgZm9yIGEgdGFibGUgd2l0aCBzeXN0ZW0gdmVyc2lv bmluZyIpKSk7CisKKwkJY2hhbmdlVGVtcG9yYWxUb1doZXJlQ2xhdXNlKHBzdGF0ZSwgdGMsIHJ0 ZSk7CisJCSp0b3BfbnNpdGVtID0gbnNpdGVtOworCQkqbmFtZXNwYWNlID0gbGlzdF9tYWtlMShu c2l0ZW0pOworCQlydHIgPSBtYWtlTm9kZShSYW5nZVRibFJlZik7CisJCXJ0ci0+cnRpbmRleCA9 IG5zaXRlbS0+cF9ydGluZGV4OworCQlyZXR1cm4gKE5vZGUgKikgcnRyOworCX0KIAllbHNlIGlm IChJc0EobiwgSm9pbkV4cHIpKQogCXsKIAkJLyogQSBuZXdmYW5nbGVkIGpvaW4gZXhwcmVzc2lv biAqLwpAQCAtMzcwNCwzICszNzM1LDczIEBAIHRyYW5zZm9ybUZyYW1lT2Zmc2V0KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgaW50IGZyYW1lT3B0aW9ucywKIAogCXJldHVybiBub2RlOwogfQorCisvKgor ICogY2hhbmdlVGVtcG9yYWxUb1doZXJlQ2xhdXNlCisgKgkJbWFrZSB3aGVyZSBjbGF1c2UgZnJv bSB0ZW1wb3JhbCBjbGF1c2Ugc3BlY2lmaWNhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK2NoYW5n ZVRlbXBvcmFsVG9XaGVyZUNsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFRlbXBvcmFsQ2xhdXNl ICogdGMsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKK3sKKwlOb2RlCSAgICpmQ2xhdXNlID0gTlVMTDsK KwlOb2RlCSAgICp0Q2xhdXNlID0gTlVMTDsKKwlOb2RlCSAgICpjQ2xhdXNlID0gTlVMTDsKKwlD b2x1bW5SZWYgICpzOworCUNvbHVtblJlZiAgKmU7CisJUmVsYXRpb24JcmVsOworCisJcmVsID0g dGFibGVfb3BlbihydGUtPnJlbGlkLCBOb0xvY2spOworCXMgPSBtYWtlQ29sdW1uUmVmRnJvbU5h bWUoZ2V0X3Jvd19zdGFydF90aW1lX2NvbF9uYW1lKHJlbCkpOworCWUgPSBtYWtlQ29sdW1uUmVm RnJvbU5hbWUoZ2V0X3Jvd19lbmRfdGltZV9jb2xfbmFtZShyZWwpKTsKKwlpZiAodGMtPmtpbmQg PT0gQVNfT0YpCisJeworCQlmQ2xhdXNlID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhwcihBRVhQ Ul9PUCwgIjw9IiwgKE5vZGUgKikgcywgdGMtPnRvLCAwKTsKKwkJdENsYXVzZSA9IChOb2RlICop IG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICI+IiwgKE5vZGUgKikgZSwgdGMtPnRvLCAwKTsK KworCQlmQ2xhdXNlID0gbWFrZUFuZEV4cHIoZkNsYXVzZSwgdENsYXVzZSwgMCk7CisJfQorCWVs c2UgaWYgKHRjLT5raW5kID09IEJFVFdFRU5fVCkKKwl7CisJCWNDbGF1c2UgPSAoTm9kZSAqKSBt YWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiPD0iLCB0Yy0+ZnJvbSwgdGMtPnRvLCAwKTsKKwkJ ZkNsYXVzZSA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIoQUVYUFJfT1AsICI+IiwgKE5vZGUg KikgZSwgdGMtPmZyb20sIDApOworCQl0Q2xhdXNlID0gKE5vZGUgKikgbWFrZVNpbXBsZUFfRXhw cihBRVhQUl9PUCwgIjw9IiwgKE5vZGUgKikgcywgdGMtPnRvLCAwKTsKKworCQlmQ2xhdXNlID0g bWFrZUFuZEV4cHIoZkNsYXVzZSwgdENsYXVzZSwgMCk7CisJCWZDbGF1c2UgPSBtYWtlQW5kRXhw cihmQ2xhdXNlLCBjQ2xhdXNlLCAwKTsKKwl9CisJZWxzZSBpZiAodGMtPmtpbmQgPT0gQkVUV0VF Tl9BU1lNTUVUUklDKQorCXsKKwkJY0NsYXVzZSA9IChOb2RlICopIG1ha2VTaW1wbGVBX0V4cHIo QUVYUFJfT1AsICI8PSIsIHRjLT5mcm9tLCB0Yy0+dG8sIDApOworCQlmQ2xhdXNlID0gKE5vZGUg KikgbWFrZVNpbXBsZUFfRXhwcihBRVhQUl9PUCwgIj4iLCAoTm9kZSAqKSBlLCB0Yy0+ZnJvbSwg MCk7CisJCXRDbGF1c2UgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiPD0i LCAoTm9kZSAqKSBzLCB0Yy0+dG8sIDApOworCisJCWZDbGF1c2UgPSBtYWtlQW5kRXhwcihmQ2xh dXNlLCB0Q2xhdXNlLCAwKTsKKwkJZkNsYXVzZSA9IG1ha2VBbmRFeHByKGZDbGF1c2UsIHRDbGF1 c2UsIDApOworCisJfQorCWVsc2UgaWYgKHRjLT5raW5kID09IEJFVFdFRU5fU1lNTUVUUklDKQor CXsKKwkJdGMtPnRvID0gbWFrZVR5cGVDYXN0KChOb2RlICopIHRjLT50bywgdHlwZVN0cmluZ1Rv VHlwZU5hbWUoInRpbWVzdGFtcHR6IiksIC0xKTsKKwkJdGMtPmZyb20gPSBtYWtlVHlwZUNhc3Qo KE5vZGUgKikgdGMtPmZyb20sIHR5cGVTdHJpbmdUb1R5cGVOYW1lKCJ0aW1lc3RhbXB0eiIpLCAt MSk7CisJCWZDbGF1c2UgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiPiIs IChOb2RlICopIGUsIHRjLT5mcm9tLCAwKTsKKwkJdENsYXVzZSA9IChOb2RlICopIG1ha2VTaW1w bGVBX0V4cHIoQUVYUFJfT1AsICI8PSIsIChOb2RlICopIHMsIHRjLT50bywgMCk7CisKKwkJZkNs YXVzZSA9IG1ha2VBbmRFeHByKGZDbGF1c2UsIHRDbGF1c2UsIDApOworCX0KKwllbHNlIGlmICh0 Yy0+a2luZCA9PSBGUk9NX1RPKQorCXsKKwkJY0NsYXVzZSA9IChOb2RlICopIG1ha2VTaW1wbGVB X0V4cHIoQUVYUFJfT1AsICI8IiwgdGMtPmZyb20sIHRjLT50bywgMCk7CisJCWZDbGF1c2UgPSAo Tm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09QLCAiPj0iLCAoTm9kZSAqKSBlLCB0Yy0+ ZnJvbSwgMCk7CisJCXRDbGF1c2UgPSAoTm9kZSAqKSBtYWtlU2ltcGxlQV9FeHByKEFFWFBSX09Q LCAiPD0iLCAoTm9kZSAqKSBzLCB0Yy0+dG8sIDApOworCisJCWZDbGF1c2UgPSBtYWtlQW5kRXhw cihmQ2xhdXNlLCB0Q2xhdXNlLCAwKTsKKwkJZkNsYXVzZSA9IG1ha2VBbmRFeHByKGZDbGF1c2Us IGNDbGF1c2UsIDApOworCX0KKworCWlmIChwc3RhdGUtPnBfdGVtcHdoZXJlICE9IE5VTEwpCisJ CXBzdGF0ZS0+cF90ZW1wd2hlcmUgPSBtYWtlQW5kRXhwcihwc3RhdGUtPnBfdGVtcHdoZXJlLCBm Q2xhdXNlLCAwKTsKKwllbHNlCisJCXBzdGF0ZS0+cF90ZW1wd2hlcmUgPSBmQ2xhdXNlOworCisJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91dGlsY21kLmMK aW5kZXggNjc1ZTQwMDgzOS4uN2MyZmRlYjA4YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFy c2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNt ZC5jCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNp bmNsdWRlICJwYXJzZXIvcGFyc2VfdXRpbGNtZC5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXIu aCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbmNhdC5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3 cml0ZU1hbmlwLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVp bHRpbnMuaCIKQEAgLTY5LDYgKzcwLDggQEAKICNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgog CiAKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwogLyogU3RhdGUgc2hhcmVkIGJ5IHRyYW5zZm9ybUNy ZWF0ZVN0bXQgYW5kIGl0cyBzdWJyb3V0aW5lcyAqLwogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTkz LDYgKzk2LDExIEBAIHR5cGVkZWYgc3RydWN0CiAJYm9vbAkJaXNwYXJ0aXRpb25lZDsJLyogdHJ1 ZSBpZiB0YWJsZSBpcyBwYXJ0aXRpb25lZCAqLwogCVBhcnRpdGlvbkJvdW5kU3BlYyAqcGFydGJv dW5kOwkvKiB0cmFuc2Zvcm1lZCBGT1IgVkFMVUVTICovCiAJYm9vbAkJb2ZUeXBlOwkJCS8qIHRy dWUgaWYgc3RhdGVtZW50IGNvbnRhaW5zIE9GIHR5cGVuYW1lICovCisJYm9vbAkJaGFzU3lzdGVt VmVyc2lvbmluZzsJLyogdHJ1ZSBpZiB0YWJsZSBpcyBzeXN0ZW0gdmVyc2lvbmVkICovCisJY2hh cgkgICAqc3RhcnRUaW1lQ29sTmFtZTsJLyogbmFtZSBvZiByb3cgc3RhcnQgdGltZSBjb2x1bW4g Ki8KKwljaGFyCSAgICplbmRUaW1lQ29sTmFtZTsgLyogbmFtZSBvZiByb3cgZW5kIHRpbWUgY29s dW1uICovCisJY2hhcgkgICAqcGVyaW9kU3RhcnQ7CS8qIG5hbWUgb2YgcGVyaW9kIHN0YXJ0IHRp bWUgY29sdW1uICovCisJY2hhcgkgICAqcGVyaW9kRW5kOwkJLyogbmFtZSBvZiBwZXJpb2QgZW5k IHRpbWUgY29sdW1uICovCiB9IENyZWF0ZVN0bXRDb250ZXh0OwogCiAvKiBTdGF0ZSBzaGFyZWQg YnkgdHJhbnNmb3JtQ3JlYXRlU2NoZW1hU3RtdCBhbmQgaXRzIHN1YnJvdXRpbmVzICovCkBAIC0x MTYsNiArMTI0LDggQEAgc3RhdGljIHZvaWQgdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KENyZWF0 ZVN0bXRDb250ZXh0ICpjeHQsCiAJCQkJCQkJCQkgQ29uc3RyYWludCAqY29uc3RyYWludCk7CiBz dGF0aWMgdm9pZCB0cmFuc2Zvcm1UYWJsZUxpa2VDbGF1c2UoQ3JlYXRlU3RtdENvbnRleHQgKmN4 dCwKIAkJCQkJCQkJCSBUYWJsZUxpa2VDbGF1c2UgKnRhYmxlX2xpa2VfY2xhdXNlKTsKK3N0YXRp YyB2b2lkIHRyYW5zZm9ybVBlcmlvZENvbHVtbihDcmVhdGVTdG10Q29udGV4dCAqY3h0LAorCQkJ CQkJCQkgIFJvd1RpbWUgKiBjb2xzKTsKIHN0YXRpYyB2b2lkIHRyYW5zZm9ybU9mVHlwZShDcmVh dGVTdG10Q29udGV4dCAqY3h0LAogCQkJCQkJCVR5cGVOYW1lICpvZlR5cGVuYW1lKTsKIHN0YXRp YyBDcmVhdGVTdGF0c1N0bXQgKmdlbmVyYXRlQ2xvbmVkRXh0U3RhdHNTdG10KFJhbmdlVmFyICpo ZWFwUmVsLApAQCAtMjQyLDYgKzI1MiwxMCBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0 bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCWN4dC5pc3BhcnRpdGlvbmVkID0g c3RtdC0+cGFydHNwZWMgIT0gTlVMTDsKIAljeHQucGFydGJvdW5kID0gc3RtdC0+cGFydGJvdW5k OwogCWN4dC5vZlR5cGUgPSAoc3RtdC0+b2ZUeXBlbmFtZSAhPSBOVUxMKTsKKwljeHQuc3RhcnRU aW1lQ29sTmFtZSA9IE5VTEw7CisJY3h0LmVuZFRpbWVDb2xOYW1lID0gTlVMTDsKKwljeHQuaGFz U3lzdGVtVmVyc2lvbmluZyA9IGZhbHNlOworCiAKIAlBc3NlcnQoIXN0bXQtPm9mVHlwZW5hbWUg fHwgIXN0bXQtPmluaFJlbGF0aW9ucyk7CS8qIGdyYW1tYXIgZW5mb3JjZXMgKi8KIApAQCAtMjc4 LDYgKzI5MiwxMCBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNvbnN0 IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCQkJCXRyYW5zZm9ybVRhYmxlTGlrZUNsYXVzZSgmY3h0LCAo VGFibGVMaWtlQ2xhdXNlICopIGVsZW1lbnQpOwogCQkJCWJyZWFrOwogCisJCQljYXNlIFRfUm93 VGltZToKKwkJCQl0cmFuc2Zvcm1QZXJpb2RDb2x1bW4oJmN4dCwgKFJvd1RpbWUgKikgZWxlbWVu dCk7CisJCQkJYnJlYWs7CisKIAkJCWRlZmF1bHQ6CiAJCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBub2RlIHR5cGU6ICVkIiwKIAkJCQkJIChpbnQpIG5vZGVUYWcoZWxlbWVudCkpOwpAQCAt Mjg1LDYgKzMwMywyNyBAQCB0cmFuc2Zvcm1DcmVhdGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNv bnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKQogCQl9CiAJfQogCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUg bm8gc3lzdGVtIHRpbWUgY29sdW1ucyBhbmQgdGhlIHVzZXIgc3BlY2lmaWVkICJXSVRIIFNZU1RF TQorCSAqIFZFUlNJT05JTkciLCBkZWZhdWx0IHN5c3RlbSB0aW1lIGNvbHVtbnMgaXMgcHJlcGVu ZGVkIHRvIHRoZSB0YWJsZQorCSAqIGRlZmluaXRpb24uIFRoaXMgaXMgYW4gZXh0ZW5zaW9uIHRv IHRoZSBTUUwgU3RhbmRhcmQuCisJICovCisJaWYgKCFjeHQuaGFzU3lzdGVtVmVyc2lvbmluZyAm JiBzdG10LT5zeXN0ZW1WZXJzaW9uaW5nKQorCXsKKwkJQ29sdW1uRGVmICAqc3RhcnRDb2w7CisJ CUNvbHVtbkRlZiAgKmVuZENvbDsKKworCQlzdGFydENvbCA9IG1ha2VUZW1wb3JhbENvbHVtbkRl ZihTWVNURU1fVkVSU0lPTklOR19ERUZBVUxUX1NUQVJUX05BTUUpOworCQllbmRDb2wgPSBtYWtl VGVtcG9yYWxDb2x1bW5EZWYoU1lTVEVNX1ZFUlNJT05JTkdfREVGQVVMVF9FTkRfTkFNRSk7CisJ CWlmIChzdG10LT50YWJsZUVsdHMgPT0gTklMKQorCQkJc3RtdC0+dGFibGVFbHRzID0gbGlzdF9t YWtlMihzdGFydENvbCwgZW5kQ29sKTsKKwkJZWxzZQorCQkJc3RtdC0+dGFibGVFbHRzID0gbGFw cGVuZChsaXN0X21ha2UyKHN0YXJ0Q29sLCBlbmRDb2wpLCBzdG10LT50YWJsZUVsdHMpOworCisJ CXRyYW5zZm9ybUNvbHVtbkRlZmluaXRpb24oJmN4dCwgc3RhcnRDb2wpOworCQl0cmFuc2Zvcm1D b2x1bW5EZWZpbml0aW9uKCZjeHQsIGVuZENvbCk7CisJfQorCiAJLyoKIAkgKiBUcmFuc2ZlciBh bnl0aGluZyB3ZSBhbHJlYWR5IGhhdmUgaW4gY3h0LmFsaXN0IGludG8gc2F2ZV9hbGlzdCwgdG8g a2VlcAogCSAqIGl0IHNlcGFyYXRlIGZyb20gdGhlIG91dHB1dCBvZiB0cmFuc2Zvcm1JbmRleENv bnN0cmFpbnRzLiAgKFRoaXMgbWF5CkBAIC0yOTYsNiArMzM1LDM2IEBAIHRyYW5zZm9ybUNyZWF0 ZVN0bXQoQ3JlYXRlU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcpCiAKIAlBc3Nl cnQoc3RtdC0+Y29uc3RyYWludHMgPT0gTklMKTsKIAorCWlmIChjeHQuaGFzU3lzdGVtVmVyc2lv bmluZykKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCWlmICghY3h0LnN0YXJ0VGltZUNvbE5h bWUpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCSBlcnJtc2coInBlcmlvZCBzdGFydCB0aW1lIGNvbHVtbiBub3Qgc3BlY2lmaWVk IikpKTsKKworCQlpZiAoIWN4dC5lbmRUaW1lQ29sTmFtZSkKKwkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJIGVycm1zZygicGVyaW9k IGVuZCB0aW1lIGNvbHVtbiBub3Qgc3BlY2lmaWVkIikpKTsKKworCQkvKgorCQkgKiBFbmQgdGlt ZSBjb2x1bW4gaXMgYWRkZWQgdG8gcHJpbWFyeSBhbmQgdW5pcXVlIGtleSBjb25zdHJhaW50CisJ CSAqIGltcGxpY2l0bHkgdG8gbWFrZSBoaXN0b3J5IGFuZCBjdXJyZW50IGRhdGEgY28tZXhpc3Qu CisJCSAqLworCQlmb3JlYWNoKGxjLCBjeHQuaXhjb25zdHJhaW50cykKKwkJeworCQkJQ29uc3Ry YWludCAqY29uc3RyYWludCA9IGxmaXJzdF9ub2RlKENvbnN0cmFpbnQsIGxjKTsKKworCQkJaWYg KChjb25zdHJhaW50LT5jb250eXBlID09IENPTlNUUl9QUklNQVJZIHx8CisJCQkJIGNvbnN0cmFp bnQtPmNvbnR5cGUgPT0gQ09OU1RSX1VOSVFVRSkgJiYgY29uc3RyYWludC0+a2V5cyAhPSBOSUwp CisJCQl7CisJCQkJY29uc3RyYWludC0+a2V5cyA9IGxhcHBlbmQoY29uc3RyYWludC0+a2V5cywg bWFrZVN0cmluZyhjeHQuZW5kVGltZUNvbE5hbWUpKTsKKwkJCX0KKwkJfQorCX0KKwogCS8qCiAJ ICogUG9zdHByb2Nlc3MgY29uc3RyYWludHMgdGhhdCBnaXZlIHJpc2UgdG8gaW5kZXggZGVmaW5p dGlvbnMuCiAJICovCkBAIC03NDcsNiArODE2LDYyIEBAIHRyYW5zZm9ybUNvbHVtbkRlZmluaXRp b24oQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgQ29sdW1uRGVmICpjb2x1bW4pCiAJCQkJc2F3X2dl bmVyYXRlZCA9IHRydWU7CiAJCQkJYnJlYWs7CiAKKwkJCWNhc2UgQ09OU1RSX1JPV19TVEFSVF9U SU1FOgorCQkJCXsKKwkJCQkJVHlwZQkJY3R5cGU7CisJCQkJCUZvcm1fcGdfdHlwZSB0eXBmb3Jt OworCQkJCQljaGFyCSAgICp0eXBuYW1lOworCisJCQkJCWN0eXBlID0gdHlwZW5hbWVUeXBlKGN4 dC0+cHN0YXRlLCBjb2x1bW4tPnR5cGVOYW1lLCBOVUxMKTsKKwkJCQkJdHlwZm9ybSA9IChGb3Jt X3BnX3R5cGUpIEdFVFNUUlVDVChjdHlwZSk7CisJCQkJCXR5cG5hbWUgPSBOYW1lU3RyKHR5cGZv cm0tPnR5cG5hbWUpOworCQkJCQlSZWxlYXNlU3lzQ2FjaGUoY3R5cGUpOworCisJCQkJCWlmIChz dHJjbXAodHlwbmFtZSwgInRpbWVzdGFtcHR6IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1z ZygiZGF0YSB0eXBlIG9mIHJvdyBzdGFydCB0aW1lIG11c3QgYmUgdGltZXN0YW1wdHoiKSkpOwor CisJCQkJCWlmIChjeHQtPnN0YXJ0VGltZUNvbE5hbWUpCisJCQkJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCSBlcnJtc2co InJvdyBzdGFydCB0aW1lIHNwZWNpZmllZCBtb3JlIHRoYW4gb25jZSIpKSk7CisKKwkJCQkJY29s dW1uLT5nZW5lcmF0ZWQgPSBBVFRSSUJVVEVfUk9XX1NUQVJUX1RJTUU7CisJCQkJCWN4dC0+c3Rh cnRUaW1lQ29sTmFtZSA9IGNvbHVtbi0+Y29sbmFtZTsKKwkJCQkJY3h0LT5oYXNTeXN0ZW1WZXJz aW9uaW5nID0gdHJ1ZTsKKwkJCQkJY29sdW1uLT5pc19ub3RfbnVsbCA9IHRydWU7CisJCQkJCWJy ZWFrOworCQkJCX0KKworCQkJY2FzZSBDT05TVFJfUk9XX0VORF9USU1FOgorCQkJCXsKKwkJCQkJ VHlwZQkJY3R5cGU7CisJCQkJCUZvcm1fcGdfdHlwZSB0eXBmb3JtOworCQkJCQljaGFyCSAgICp0 eXBuYW1lOworCisJCQkJCWN0eXBlID0gdHlwZW5hbWVUeXBlKGN4dC0+cHN0YXRlLCBjb2x1bW4t PnR5cGVOYW1lLCBOVUxMKTsKKwkJCQkJdHlwZm9ybSA9IChGb3JtX3BnX3R5cGUpIEdFVFNUUlVD VChjdHlwZSk7CisJCQkJCXR5cG5hbWUgPSBOYW1lU3RyKHR5cGZvcm0tPnR5cG5hbWUpOworCQkJ CQlSZWxlYXNlU3lzQ2FjaGUoY3R5cGUpOworCisJCQkJCWlmIChzdHJjbXAodHlwbmFtZSwgInRp bWVzdGFtcHR6IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2Rl KEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygiZGF0YSB0eXBlIG9mIHJv dyBlbmQgdGltZSBtdXN0IGJlIHRpbWVzdGFtcHR6IikpKTsKKworCQkJCQlpZiAoY3h0LT5lbmRU aW1lQ29sTmFtZSkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJIGVycm1zZygicm93IGVuZCB0aW1lIHNwZWNpZmll ZCBtb3JlIHRoYW4gb25jZSIpKSk7CisKKwkJCQkJY29sdW1uLT5nZW5lcmF0ZWQgPSBBVFRSSUJV VEVfUk9XX0VORF9USU1FOworCQkJCQljeHQtPmVuZFRpbWVDb2xOYW1lID0gY29sdW1uLT5jb2xu YW1lOworCQkJCQljeHQtPmhhc1N5c3RlbVZlcnNpb25pbmcgPSB0cnVlOworCQkJCQljb2x1bW4t PmlzX25vdF9udWxsID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCiAJCQljYXNlIENPTlNU Ul9DSEVDSzoKIAkJCQljeHQtPmNrY29uc3RyYWludHMgPSBsYXBwZW5kKGN4dC0+Y2tjb25zdHJh aW50cywgY29uc3RyYWludCk7CiAJCQkJYnJlYWs7CkBAIC0xNDQ0LDYgKzE1NjksMzUgQEAgZXhw YW5kVGFibGVMaWtlQ2xhdXNlKFJhbmdlVmFyICpoZWFwUmVsLCBUYWJsZUxpa2VDbGF1c2UgKnRh YmxlX2xpa2VfY2xhdXNlKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKy8qCisgKiB0cmFuc2Zvcm1Q ZXJpb2RDb2x1bW4KKyAqCQl0cmFuc2Zvcm0gYSBwZXJpb2Qgbm9kZSB3aXRoaW4gQ1JFQVRFIFRB QkxFCisgKi8KK3N0YXRpYyB2b2lkCit0cmFuc2Zvcm1QZXJpb2RDb2x1bW4oQ3JlYXRlU3RtdENv bnRleHQgKmN4dCwgUm93VGltZSAqIGNvbCkKK3sKKwljeHQtPnBlcmlvZFN0YXJ0ID0gY29sLT5z dGFydF90aW1lOworCWN4dC0+cGVyaW9kRW5kID0gY29sLT5lbmRfdGltZTsKKworCWlmICghY3h0 LT5zdGFydFRpbWVDb2xOYW1lKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNP REVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNnKCJwZXJpb2Qgc3RhcnQgdGltZSBjb2x1bW4g bm90IHNwZWNpZmllZCIpKSk7CisJaWYgKCFjeHQtPmVuZFRpbWVDb2xOYW1lKQorCQllcmVwb3J0 KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkgZXJybXNn KCJwZXJpb2QgZW5kIHRpbWUgY29sdW1uIG5vdCBzcGVjaWZpZWQiKSkpOworCisJaWYgKHN0cmNt cChjeHQtPnBlcmlvZFN0YXJ0LCBjeHQtPnN0YXJ0VGltZUNvbE5hbWUpICE9IDApCisJCWVyZXBv cnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCSBlcnJt c2coInBlcmlvZCBzdGFydCB0aW1lIG11c3QgcmVmZXJlbmNlIHRoZSByb3cgc3RhcnQgdGltZSBj b2x1bW4iKSkpOworCWlmIChzdHJjbXAoY3h0LT5wZXJpb2RFbmQsIGN4dC0+ZW5kVGltZUNvbE5h bWUpICE9IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9TWU5UQVhf RVJST1IpLAorCQkJCSBlcnJtc2coInBlcmlvZCBlbmQgdGltZSBtdXN0IHJlZmVyZW5jZSB0aGUg cm93IGVuZCB0aW1lIGNvbHVtbiIpKSk7Cit9CisKIHN0YXRpYyB2b2lkCiB0cmFuc2Zvcm1PZlR5 cGUoQ3JlYXRlU3RtdENvbnRleHQgKmN4dCwgVHlwZU5hbWUgKm9mVHlwZW5hbWUpCiB7CkBAIC0z MjgzLDcgKzM0MzcsNyBAQCB0cmFuc2Zvcm1SdWxlU3RtdChSdWxlU3RtdCAqc3RtdCwgY29uc3Qg Y2hhciAqcXVlcnlTdHJpbmcsCiAgKi8KIEFsdGVyVGFibGVTdG10ICoKIHRyYW5zZm9ybUFsdGVy VGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCi0JCQkJCQljb25zdCBj aGFyICpxdWVyeVN0cmluZywKKwkJCQkJCUFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4 dCwKIAkJCQkJCUxpc3QgKipiZWZvcmVTdG10cywgTGlzdCAqKmFmdGVyU3RtdHMpCiB7CiAJUmVs YXRpb24JcmVsOwpAQCAtMzMwNCw3ICszNDU4LDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQo T2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAogCS8qIFNldCB1cCBwc3RhdGUgKi8K IAlwc3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7Ci0JcHN0YXRlLT5wX3NvdXJjZXRleHQg PSBxdWVyeVN0cmluZzsKKwlwc3RhdGUtPnBfc291cmNldGV4dCA9IGNvbnRleHQtPnF1ZXJ5U3Ry aW5nOwogCW5zaXRlbSA9IGFkZFJhbmdlVGFibGVFbnRyeUZvclJlbGF0aW9uKHBzdGF0ZSwKIAkJ CQkJCQkJCQkgICByZWwsCiAJCQkJCQkJCQkJICAgQWNjZXNzU2hhcmVMb2NrLApAQCAtMzM0MSw2 ICszNDk1LDkgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxl U3RtdCAqc3RtdCwKIAljeHQuaXNwYXJ0aXRpb25lZCA9IChyZWwtPnJkX3JlbC0+cmVsa2luZCA9 PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKTsKIAljeHQucGFydGJvdW5kID0gTlVMTDsKIAlj eHQub2ZUeXBlID0gZmFsc2U7CisJY3h0LnN0YXJ0VGltZUNvbE5hbWUgPSBOVUxMOworCWN4dC5l bmRUaW1lQ29sTmFtZSA9IE5VTEw7CisJY3h0Lmhhc1N5c3RlbVZlcnNpb25pbmcgPSBmYWxzZTsK IAogCS8qCiAJICogVHJhbnNmb3JtIEFMVEVSIHN1YmNvbW1hbmRzIHRoYXQgbmVlZCBpdCAobW9z dCBkb24ndCkuICBUaGVzZSBsYXJnZWx5CkBAIC0zMzc1LDYgKzM1MzIsMTQgQEAgdHJhbnNmb3Jt QWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJCQkJbmV3 Y21kcyA9IGxhcHBlbmQobmV3Y21kcywgY21kKTsKIAkJCQkJYnJlYWs7CiAJCQkJfQorCQkJY2Fz ZSBBVF9QZXJpb2RDb2x1bW46CisJCQkJeworCQkJCQlSb3dUaW1lICAgICpydGltZSA9IGNhc3RO b2RlKFJvd1RpbWUsIGNtZC0+ZGVmKTsKKworCQkJCQljb250ZXh0LT5wZXJpb2RTdGFydCA9IHJ0 aW1lLT5zdGFydF90aW1lOworCQkJCQljb250ZXh0LT5wZXJpb2RFbmQgPSBydGltZS0+ZW5kX3Rp bWU7CisJCQkJfQorCQkJCWJyZWFrOwogCiAJCQljYXNlIEFUX0FkZENvbnN0cmFpbnQ6CiAJCQlj YXNlIEFUX0FkZENvbnN0cmFpbnRSZWN1cnNlOgpAQCAtMzM4NCw2ICszNTQ5LDIzIEBAIHRyYW5z Zm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJsZVN0bXQgKnN0bXQsCiAJCQkJ ICovCiAJCQkJaWYgKElzQShjbWQtPmRlZiwgQ29uc3RyYWludCkpCiAJCQkJeworCQkJCQlDb25z dHJhaW50ICpjb25zdHJhaW50ID0gY2FzdE5vZGUoQ29uc3RyYWludCwgY21kLT5kZWYpOworCisJ CQkJCS8qCisJCQkJCSAqIEVuZCB0aW1lIGNvbHVtbiBpcyBhZGRlZCB0byBwcmltYXJ5IGFuZCB1 bmlxdWUga2V5CisJCQkJCSAqIGNvbnN0cmFpbnQgaW1wbGljaXRseSB0byBtYWtlIGhpc3Rvcnkg ZGF0YSBhbmQgY3VycmVudAorCQkJCQkgKiBkYXRhIGNvLWV4aXN0LgorCQkJCQkgKi8KKwkJCQkJ aWYgKChyZWwtPnJkX2F0dC0+Y29uc3RyICYmCisJCQkJCQkgcmVsLT5yZF9hdHQtPmNvbnN0ci0+ aGFzX3N5c3RlbV92ZXJzaW9uaW5nKSAmJgorCQkJCQkJKGNvbnN0cmFpbnQtPmNvbnR5cGUgPT0g Q09OU1RSX1BSSU1BUlkgfHwgY29uc3RyYWludC0+Y29udHlwZSA9PSBDT05TVFJfVU5JUVVFKSkK KwkJCQkJeworCQkJCQkJY2hhcgkgICAqZW5kQ29sTm1lOworCisJCQkJCQllbmRDb2xObWUgPSBn ZXRfcm93X2VuZF90aW1lX2NvbF9uYW1lKHJlbCk7CisJCQkJCQljb25zdHJhaW50LT5rZXlzID0g bGFwcGVuZChjb25zdHJhaW50LT5rZXlzLCBtYWtlU3RyaW5nKGVuZENvbE5tZSkpOworCQkJCQl9 CisKIAkJCQkJdHJhbnNmb3JtVGFibGVDb25zdHJhaW50KCZjeHQsIChDb25zdHJhaW50ICopIGNt ZC0+ZGVmKTsKIAkJCQkJaWYgKCgoQ29uc3RyYWludCAqKSBjbWQtPmRlZiktPmNvbnR5cGUgPT0g Q09OU1RSX0ZPUkVJR04pCiAJCQkJCQlza2lwVmFsaWRhdGlvbiA9IGZhbHNlOwpAQCAtMzU1MSw2 ICszNzMzLDIxIEBAIHRyYW5zZm9ybUFsdGVyVGFibGVTdG10KE9pZCByZWxpZCwgQWx0ZXJUYWJs ZVN0bXQgKnN0bXQsCiAJCX0KIAl9CiAKKwlpZiAoY3h0Lmhhc1N5c3RlbVZlcnNpb25pbmcpCisJ eworCQlpZiAoY3h0LnN0YXJ0VGltZUNvbE5hbWUpCisJCXsKKwkJCWNvbnRleHQtPmhhc1N5c3Rl bVZlcnNpb25pbmcgPSBjeHQuaGFzU3lzdGVtVmVyc2lvbmluZzsKKwkJCWNvbnRleHQtPnN0YXJ0 VGltZUNvbE5hbWUgPSBjeHQuc3RhcnRUaW1lQ29sTmFtZTsKKwkJfQorCisJCWlmIChjeHQuZW5k VGltZUNvbE5hbWUpCisJCXsKKwkJCWNvbnRleHQtPmhhc1N5c3RlbVZlcnNpb25pbmcgPSBjeHQu aGFzU3lzdGVtVmVyc2lvbmluZzsKKwkJCWNvbnRleHQtPmVuZFRpbWVDb2xOYW1lID0gY3h0LmVu ZFRpbWVDb2xOYW1lOworCQl9CisJfQorCiAJLyoKIAkgKiBUcmFuc2ZlciBhbnl0aGluZyB3ZSBh bHJlYWR5IGhhdmUgaW4gY3h0LmFsaXN0IGludG8gc2F2ZV9hbGlzdCwgdG8ga2VlcAogCSAqIGl0 IHNlcGFyYXRlIGZyb20gdGhlIG91dHB1dCBvZiB0cmFuc2Zvcm1JbmRleENvbnN0cmFpbnRzLgpA QCAtMzU4Miw3ICszNzc5LDcgQEAgdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBB bHRlclRhYmxlU3RtdCAqc3RtdCwKIAkJewogCQkJSW5kZXhTdG10ICAqaWR4c3RtdCA9IChJbmRl eFN0bXQgKikgaXN0bXQ7CiAKLQkJCWlkeHN0bXQgPSB0cmFuc2Zvcm1JbmRleFN0bXQocmVsaWQs IGlkeHN0bXQsIHF1ZXJ5U3RyaW5nKTsKKwkJCWlkeHN0bXQgPSB0cmFuc2Zvcm1JbmRleFN0bXQo cmVsaWQsIGlkeHN0bXQsIGNvbnRleHQtPnF1ZXJ5U3RyaW5nKTsKIAkJCW5ld2NtZCA9IG1ha2VO b2RlKEFsdGVyVGFibGVDbWQpOwogCQkJbmV3Y21kLT5zdWJ0eXBlID0gT2lkSXNWYWxpZChpZHhz dG10LT5pbmRleE9pZCkgPyBBVF9BZGRJbmRleENvbnN0cmFpbnQgOiBBVF9BZGRJbmRleDsKIAkJ CW5ld2NtZC0+ZGVmID0gKE5vZGUgKikgaWR4c3RtdDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZXIuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZXIuYwppbmRleCA4NzVk ZTdiYTI4Li5lMDAwYTQwNDBhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vy LmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlci5jCkBAIC0xMzcsNiArMTM3LDkgQEAg YmFzZV95eWxleChZWVNUWVBFICpsdmFscCwgWVlMVFlQRSAqbGxvY3AsIGNvcmVfeXlzY2FuX3Qg eXlzY2FubmVyKQogCSAqLwogCXN3aXRjaCAoY3VyX3Rva2VuKQogCXsKKwkJY2FzZSBGT1I6CisJ CQljdXJfdG9rZW5fbGVuZ3RoID0gMzsKKwkJCWJyZWFrOwogCQljYXNlIE5PVDoKIAkJCWN1cl90 b2tlbl9sZW5ndGggPSAzOwogCQkJYnJlYWs7CkBAIC0xODgsNiArMTkxLDEwIEBAIGJhc2VfeXls ZXgoWVlTVFlQRSAqbHZhbHAsIFlZTFRZUEUgKmxsb2NwLCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cikKIAkvKiBSZXBsYWNlIGN1cl90b2tlbiBpZiBuZWVkZWQsIGJhc2VkIG9uIGxvb2thaGVhZCAq LwogCXN3aXRjaCAoY3VyX3Rva2VuKQogCXsKKwkJY2FzZSBGT1I6CisJCQlpZiAobmV4dF90b2tl biA9PSBTWVNURU1fVElNRSkKKwkJCQljdXJfdG9rZW4gPSBGT1JfTEE7CisJCQlicmVhazsKIAkJ Y2FzZSBOT1Q6CiAJCQkvKiBSZXBsYWNlIE5PVCBieSBOT1RfTEEgaWYgaXQncyBmb2xsb3dlZCBi eSBCRVRXRUVOLCBJTiwgZXRjICovCiAJCQlzd2l0Y2ggKG5leHRfdG9rZW4pCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9yZXdy aXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggNTRmZDZkNmZiMi4uNWIxMjNjZDFmNCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdyaXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwpAQCAtOTEwLDE0ICs5MTAsMjQgQEAgcmV3cml0 ZVRhcmdldExpc3RJVShMaXN0ICp0YXJnZXRMaXN0LAogCQkJCQkJCQlOYW1lU3RyKGF0dF90dXAt PmF0dG5hbWUpKSwKIAkJCQkJCSBlcnJkZXRhaWwoIkNvbHVtbiBcIiVzXCIgaXMgYW4gaWRlbnRp dHkgY29sdW1uIGRlZmluZWQgYXMgR0VORVJBVEVEIEFMV0FZUy4iLAogCQkJCQkJCQkgICBOYW1l U3RyKGF0dF90dXAtPmF0dG5hbWUpKSkpOwotCi0JCQlpZiAoYXR0X3R1cC0+YXR0Z2VuZXJhdGVk ICYmIG5ld190bGUgJiYgIWFwcGx5X2RlZmF1bHQpCisjaWZkZWYgTk9UVVNFRAorCQkJaWYgKGF0 dF90dXAtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfUk9XX1NUQVJUX1RJTUUgfHwKKwkJCQlh dHRfdHVwLT5hdHRnZW5lcmF0ZWQgPT0gQVRUUklCVVRFX1JPV19FTkRfVElNRSkKIAkJCQllcmVw b3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9HRU5FUkFURURfQUxXQVlTKSwKLQkJ CQkJCSBlcnJtc2coImNvbHVtbiBcIiVzXCIgY2FuIG9ubHkgYmUgdXBkYXRlZCB0byBERUZBVUxU IiwKLQkJCQkJCQkJTmFtZVN0cihhdHRfdHVwLT5hdHRuYW1lKSksCi0JCQkJCQkgZXJyZGV0YWls KCJDb2x1bW4gXCIlc1wiIGlzIGEgZ2VuZXJhdGVkIGNvbHVtbi4iLAotCQkJCQkJCQkgICBOYW1l U3RyKGF0dF90dXAtPmF0dG5hbWUpKSkpOworCQkJCQkoZXJyY29kZShFUlJDT0RFX0dFTkVSQVRF RF9BTFdBWVMpLAorCQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGNhbm5vdCBiZSB1cGRhdGVk IiwKKwkJCQkJCQlOYW1lU3RyKGF0dF90dXAtPmF0dG5hbWUpKSwKKwkJCQkJIGVycmRldGFpbCgi Q29sdW1uIFwiJXNcIiBpcyBhIHN5c3RlbSB2ZXJzaW9uaW5nIGNvbHVtbi4iLAorCQkJCQkJCSAg IE5hbWVTdHIoYXR0X3R1cC0+YXR0bmFtZSkpKSk7CisJCQllbHNlIGlmIChhdHRfdHVwLT5hdHRn ZW5lcmF0ZWQgJiYgbmV3X3RsZSAmJiAhYXBwbHlfZGVmYXVsdCkKKyNlbmRpZgorCQkJaWYgKGF0 dF90dXAtPmF0dGdlbmVyYXRlZCAmJiBuZXdfdGxlICYmICFhcHBseV9kZWZhdWx0KQorCQkJCSBl cmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0dFTkVSQVRFRF9BTFdBWVMpLAor CQkJCQkgZXJybXNnKCJjb2x1bW4gXCIlc1wiIGNhbiBvbmx5IGJlIHVwZGF0ZWQgdG8gREVGQVVM VCIsCisJCQkJCQkJTmFtZVN0cihhdHRfdHVwLT5hdHRuYW1lKSksCisJCQkJCSBlcnJkZXRhaWwo IkNvbHVtbiBcIiVzXCIgaXMgYSBnZW5lcmF0ZWQgY29sdW1uLiIsCisJCQkJCQkJICAgTmFtZVN0 cihhdHRfdHVwLT5hdHRuYW1lKSkpKTsKIAkJfQogCiAJCWlmIChhdHRfdHVwLT5hdHRnZW5lcmF0 ZWQpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3V0aWxpdHkuYyBiL3NyYy9iYWNrZW5k L3Rjb3AvdXRpbGl0eS5jCmluZGV4IDI3ZmJmMWYzYWEuLjAwMjhkOGRhYzkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0eS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvdXRpbGl0 eS5jCkBAIC0xNyw2ICsxNyw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAogI2luY2x1ZGUg ImFjY2Vzcy9odHVwX2RldGFpbHMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvcmVsYXRpb24uaCIKICNp bmNsdWRlICJhY2Nlc3MvcmVsb3B0aW9ucy5oIgogI2luY2x1ZGUgImFjY2Vzcy90d29waGFzZS5o IgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCkBAIC01OSw3ICs2MCw5IEBACiAjaW5jbHVkZSAi Y29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmlldy5oIgogI2luY2x1ZGUg Im1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgogI2luY2x1ZGUgInBh cnNlci9wYXJzZV91dGlsY21kLmgiCisjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5jYXQuaCIKICNp bmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRl RGVmaW5lLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlUmVtb3ZlLmgiCkBAIC0xMjUzLDYg KzEyNTYsMTAgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJ T2lkCQkJcmVsaWQ7CiAJCQkJCUxPQ0tNT0RFCWxvY2ttb2RlOwogCQkJCQlMaXN0Q2VsbCAgICpj ZWxsOworCQkJCQlMaXN0Q2VsbCAgICpzOworCQkJCQlSZWxhdGlvbglyZWw7CisJCQkJCWJvb2wJ CWhhc1N5c3RlbVZlcnNpb25pbmcgPSBmYWxzZTsKKwkJCQkJVHVwbGVEZXNjCXR1cGRlc2M7CiAK IAkJCQkJLyoKIAkJCQkJICogRGlzYWxsb3cgQUxURVIgVEFCTEUgLi4gREVUQUNIIENPTkNVUlJF TlRMWSBpbiBhCkBAIC0xMjgxLDYgKzEyODgsODMgQEAgUHJvY2Vzc1V0aWxpdHlTbG93KFBhcnNl U3RhdGUgKnBzdGF0ZSwKIAkJCQkJbG9ja21vZGUgPSBBbHRlclRhYmxlR2V0TG9ja0xldmVsKGF0 c3RtdC0+Y21kcyk7CiAJCQkJCXJlbGlkID0gQWx0ZXJUYWJsZUxvb2t1cFJlbGF0aW9uKGF0c3Rt dCwgbG9ja21vZGUpOwogCisJCQkJCS8qCisJCQkJCSAqIENoYW5nZSBhZGQgYW5kIHJlbW92ZSBz eXN0ZW0gdmVyc2lvbmluZyB0byBpbmRpdmlkdWFsCisJCQkJCSAqIEFERCBhbmQgRFJPUCBjb2x1 bW4gY29tbWFuZAorCQkJCQkgKi8KKwkJCQkJZm9yZWFjaChzLCBhdHN0bXQtPmNtZHMpCisJCQkJ CXsKKwkJCQkJCUFsdGVyVGFibGVDbWQgKmNtZCA9IChBbHRlclRhYmxlQ21kICopIGxmaXJzdChz KTsKKworCQkJCQkJaWYgKGNtZC0+c3VidHlwZSA9PSBBVF9BZGRTeXN0ZW1WZXJzaW9uaW5nKQor CQkJCQkJeworCQkJCQkJCUNvbHVtbkRlZiAgKnN0YXJ0VGltZUNvbDsKKwkJCQkJCQlDb2x1bW5E ZWYgICplbmRUaW1lQ29sOworCisJCQkJCQkJcmVsID0gcmVsYXRpb25fb3BlbihyZWxpZCwgTm9M b2NrKTsKKwkJCQkJCQl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOworCQkJCQkJCWhh c1N5c3RlbVZlcnNpb25pbmcgPSB0dXBkZXNjLT5jb25zdHIgJiYgdHVwZGVzYy0+Y29uc3RyLT5o YXNfc3lzdGVtX3ZlcnNpb25pbmc7CisJCQkJCQkJaWYgKGhhc1N5c3RlbVZlcnNpb25pbmcpCisJ CQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9XUk9OR19P QkpFQ1RfVFlQRSksCisJCQkJCQkJCQkJIGVycm1zZygidGFibGUgaXMgYWxyZWFkeSBkZWZpbmVk IHdpdGggc3lzdGVtIHZlcnNpb25pbmciKSkpOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBUT0RP IGNyZWF0ZSBjb21wb3NpdGUgcHJpbWFyeSBrZXkKKwkJCQkJCQkgKi8KKwkJCQkJCQlpZiAoUmVs YXRpb25HZXRQcmltYXJ5S2V5SW5kZXgocmVsKSAhPSBJbnZhbGlkT2lkKQorCQkJCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUp LAorCQkJCQkJCQkJCSBlcnJtc2coImNhbiBub3QgYWRkIHN5c3RlbSB2ZXJzaW9uaW5nIHRvIHRh YmxlIHdpdGggcHJpbWFyeSBrZXkiKSkpOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiB3ZSB1c2Ug ZGVmdWFsdCBjb2x1bW4gbmFtZXMgZm9yIHN5c3RlbQorCQkJCQkJCSAqIHZlcnNpb25pbmcgaW4g QUxURVIgVEFCTEUgQUREIHN5c3RlbSB2ZXJzaW9uaW5nIHN0YXRlbWVudAorCQkJCQkJCSAqLwor CQkJCQkJCXN0YXJ0VGltZUNvbCA9IG1ha2VUZW1wb3JhbENvbHVtbkRlZihTWVNURU1fVkVSU0lP TklOR19ERUZBVUxUX1NUQVJUX05BTUUpOworCQkJCQkJCWVuZFRpbWVDb2wgPSBtYWtlVGVtcG9y YWxDb2x1bW5EZWYoU1lTVEVNX1ZFUlNJT05JTkdfREVGQVVMVF9FTkRfTkFNRSk7CisKKwkJCQkJ CQkvKgorCQkJCQkJCSAqIGNyZWF0ZSBhbHRlciB0YWJsZSBhZGQgY29sdW1uIGNtZCBhbmQgYXBw ZW5kIHRvIHRoZSBlbmQKKwkJCQkJCQkgKiBvZiBhbHRlciB0YWJsZSBjb21tYW5kcy4KKwkJCQkJ CQkgKi8KKwkJCQkJCQlhdHN0bXQtPmNtZHMgPSBsYXBwZW5kKGF0c3RtdC0+Y21kcywgKE5vZGUg KikgbWFrZUFkZENvbENtZChzdGFydFRpbWVDb2wpKTsKKwkJCQkJCQlhdHN0bXQtPmNtZHMgPSBs YXBwZW5kKGF0c3RtdC0+Y21kcywgKE5vZGUgKikgbWFrZUFkZENvbENtZChlbmRUaW1lQ29sKSk7 CisKKwkJCQkJCQkvKgorCQkJCQkJCSAqIGRlbGV0ZSBjdXJyZW50IGxpc3RDZWxsCisJCQkJCQkJ ICovCisJCQkJCQkJYXRzdG10LT5jbWRzID0gbGlzdF9kZWxldGVfY2VsbChhdHN0bXQtPmNtZHMs IHMpOworCQkJCQkJCXJlbGF0aW9uX2Nsb3NlKHJlbCwgTm9Mb2NrKTsKKworCQkJCQkJfQorCisJ CQkJCQlpZiAoY21kLT5zdWJ0eXBlID09IEFUX0Ryb3BTeXN0ZW1WZXJzaW9uaW5nKQorCQkJCQkJ eworCQkJCQkJCXJlbCA9IHJlbGF0aW9uX29wZW4ocmVsaWQsIE5vTG9jayk7CisJCQkJCQkJdHVw ZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKKwkJCQkJCQloYXNTeXN0ZW1WZXJzaW9uaW5n ID0gdHVwZGVzYy0+Y29uc3RyICYmIHR1cGRlc2MtPmNvbnN0ci0+aGFzX3N5c3RlbV92ZXJzaW9u aW5nOworCQkJCQkJCWlmICghaGFzU3lzdGVtVmVyc2lvbmluZykKKwkJCQkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09CSkVDVF9UWVBFKSwKKwkJ CQkJCQkJCQkgZXJybXNnKCJ0YWJsZSBpcyBub3QgZGVmaW5lZCB3aXRoIHN5c3RlbSB2ZXJzaW9u aW5nIikpKTsKKworCQkJCQkJCS8qCisJCQkJCQkJICogY3JlYXRlIGFsdGVyIHRhYmxlIGRyb3Ag Y29sdW1uIGNtZCBhbmQgYXBwZW5kIHRvIHRoZSBlbmRlCisJCQkJCQkJICogb2YgYWx0ZXIgdGFi bGUgY29tbWFuZHMuCisJCQkJCQkJICovCisJCQkJCQkJYXRzdG10LT5jbWRzID0gbGFwcGVuZChh dHN0bXQtPmNtZHMsIG1ha2VEcm9wQ29sQ21kKGdldF9yb3dfZW5kX3RpbWVfY29sX25hbWUocmVs KSkpOworCQkJCQkJCWF0c3RtdC0+Y21kcyA9IGxhcHBlbmQoYXRzdG10LT5jbWRzLCBtYWtlRHJv cENvbENtZChnZXRfcm93X3N0YXJ0X3RpbWVfY29sX25hbWUocmVsKSkpOworCisJCQkJCQkJLyoK KwkJCQkJCQkgKiBkZWxldGUgY3VycmVudCBsaXN0Q2VsbCBiZWNhdXNlIHdlIGRvbid0IG5lZWQK KwkJCQkJCQkgKiBpdCBhbnltb3JlCisJCQkJCQkJICovCisJCQkJCQkJYXRzdG10LT5jbWRzID0g bGlzdF9kZWxldGVfY2VsbChhdHN0bXQtPmNtZHMsIHMpOworCQkJCQkJCXJlbGF0aW9uX2Nsb3Nl KHJlbCwgTm9Mb2NrKTsKKwkJCQkJCX0KKwkJCQkJfQorCiAJCQkJCWlmIChPaWRJc1ZhbGlkKHJl bGlkKSkKIAkJCQkJewogCQkJCQkJQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0IGF0Y29udGV4dDsK QEAgLTEyOTEsNiArMTM3NSwxMSBAQCBQcm9jZXNzVXRpbGl0eVNsb3coUGFyc2VTdGF0ZSAqcHN0 YXRlLAogCQkJCQkJYXRjb250ZXh0LnJlbGlkID0gcmVsaWQ7CiAJCQkJCQlhdGNvbnRleHQucGFy YW1zID0gcGFyYW1zOwogCQkJCQkJYXRjb250ZXh0LnF1ZXJ5RW52ID0gcXVlcnlFbnY7CisJCQkJ CQlhdGNvbnRleHQuc3RhcnRUaW1lQ29sTmFtZSA9IE5VTEw7CisJCQkJCQlhdGNvbnRleHQuZW5k VGltZUNvbE5hbWUgPSBOVUxMOworCQkJCQkJYXRjb250ZXh0LnBlcmlvZEVuZCA9IE5VTEw7CisJ CQkJCQlhdGNvbnRleHQucGVyaW9kU3RhcnQgPSBOVUxMOworCQkJCQkJYXRjb250ZXh0Lmhhc1N5 c3RlbVZlcnNpb25pbmcgPSBmYWxzZTsKIAogCQkJCQkJLyogLi4uIGVuc3VyZSB3ZSBoYXZlIGFu IGV2ZW50IHRyaWdnZXIgY29udGV4dCAuLi4gKi8KIAkJCQkJCUV2ZW50VHJpZ2dlckFsdGVyVGFi bGVTdGFydChwYXJzZXRyZWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3JlbGNhY2hlLmMKaW5kZXggMTNk OTk5NGFmMy4uMzdlMDhiOTA0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUv cmVsY2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5jCkBAIC01 MTUsNiArNTE1LDcgQEAgUmVsYXRpb25CdWlsZFR1cGxlRGVzYyhSZWxhdGlvbiByZWxhdGlvbikK IAkJCQkJCQkJCQkJCQlzaXplb2YoVHVwbGVDb25zdHIpKTsKIAljb25zdHItPmhhc19ub3RfbnVs bCA9IGZhbHNlOwogCWNvbnN0ci0+aGFzX2dlbmVyYXRlZF9zdG9yZWQgPSBmYWxzZTsKKwljb25z dHItPmhhc19zeXN0ZW1fdmVyc2lvbmluZyA9IGZhbHNlOwogCiAJLyoKIAkgKiBGb3JtIGEgc2Nh biBrZXkgdGhhdCBzZWxlY3RzIG9ubHkgdXNlciBhdHRyaWJ1dGVzIChhdHRudW0gPiAwKS4KQEAg LTU2OCw2ICs1NjksMTYgQEAgUmVsYXRpb25CdWlsZFR1cGxlRGVzYyhSZWxhdGlvbiByZWxhdGlv bikKIAkJCWNvbnN0ci0+aGFzX25vdF9udWxsID0gdHJ1ZTsKIAkJaWYgKGF0dHAtPmF0dGdlbmVy YXRlZCA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKIAkJCWNvbnN0ci0+aGFzX2dlbmVy YXRlZF9zdG9yZWQgPSB0cnVlOworCQlpZiAoYXR0cC0+YXR0Z2VuZXJhdGVkID09IEFUVFJJQlVU RV9ST1dfU1RBUlRfVElNRSkKKwkJeworCQkJY29uc3RyLT5zdl9zdGFydHRpbWUgPSBhdHRudW07 CisJCQljb25zdHItPmhhc19zeXN0ZW1fdmVyc2lvbmluZyA9IHRydWU7CisJCX0KKwkJaWYgKGF0 dHAtPmF0dGdlbmVyYXRlZCA9PSBBVFRSSUJVVEVfUk9XX0VORF9USU1FKQorCQl7CisJCQljb25z dHItPnN2X2VuZHRpbWUgPSBhdHRudW07CisJCQljb25zdHItPmhhc19zeXN0ZW1fdmVyc2lvbmlu ZyA9IHRydWU7CisJCX0KIAkJaWYgKGF0dHAtPmF0dGhhc2RlZikKIAkJCW5kZWYrKzsKIApAQCAt NjY0LDYgKzY3NSw3IEBAIFJlbGF0aW9uQnVpbGRUdXBsZURlc2MoUmVsYXRpb24gcmVsYXRpb24p CiAJICovCiAJaWYgKGNvbnN0ci0+aGFzX25vdF9udWxsIHx8CiAJCWNvbnN0ci0+aGFzX2dlbmVy YXRlZF9zdG9yZWQgfHwKKwkJY29uc3RyLT5oYXNfc3lzdGVtX3ZlcnNpb25pbmcgfHwKIAkJbmRl ZiA+IDAgfHwKIAkJYXR0cm1pc3MgfHwKIAkJcmVsYXRpb24tPnJkX3JlbC0+cmVsY2hlY2tzID4g MCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dCBiL3NyYy9iYWNr ZW5kL3V0aWxzL2VycmNvZGVzLnR4dAppbmRleCA5ODc0YTc3ODA1Li43YWNmNGY0MjA1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9lcnJjb2Rlcy50eHQKKysrIGIvc3JjL2JhY2tlbmQv dXRpbHMvZXJyY29kZXMudHh0CkBAIC0xNTMsNiArMTUzLDcgQEAgU2VjdGlvbjogQ2xhc3MgMjEg LSBDYXJkaW5hbGl0eSBWaW9sYXRpb24KIFNlY3Rpb246IENsYXNzIDIyIC0gRGF0YSBFeGNlcHRp b24KIAogMjIwMDAgICAgRSAgICBFUlJDT0RFX0RBVEFfRVhDRVBUSU9OICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX2V4Y2VwdGlvbgorMjIwMUggICAgRSAgICBF UlJDT0RFX0RBVEFfRVhDRVBUSU9OX0lOVkFMSURfUk9XX1ZFUlNJT04JCQkJCSBkYXRhX2V4Y2Vw dGlvbl9pbnZhbGlkX3Jvd192ZXJzaW9uCiAyMjAyRSAgICBFICAgIEVSUkNPREVfQVJSQVlfRUxF TUVOVF9FUlJPUgogIyBTUUw5OSdzIGFjdHVhbCBkZWZpbml0aW9uIG9mICJhcnJheSBlbGVtZW50 IGVycm9yIiBpcyBzdWJzY3JpcHQgZXJyb3IKIDIyMDJFICAgIEUgICAgRVJSQ09ERV9BUlJBWV9T VUJTQ1JJUFRfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfc3Vi c2NyaXB0X2Vycm9yCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3Jj L2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA5MGFjNDQ1YmNkLi41YzBhYzRkMzZmIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTE2MDgzLDYgKzE2MDgzLDEwIEBAIGR1bXBUYWJsZVNjaGVtYShBcmNoaXZl ICpmb3V0LCBjb25zdCBUYWJsZUluZm8gKnRiaW5mbykKIAkJCQkJCWlmICh0YmluZm8tPmF0dGdl bmVyYXRlZFtqXSA9PSBBVFRSSUJVVEVfR0VORVJBVEVEX1NUT1JFRCkKIAkJCQkJCQlhcHBlbmRQ UUV4cEJ1ZmZlcihxLCAiIEdFTkVSQVRFRCBBTFdBWVMgQVMgKCVzKSBTVE9SRUQiLAogCQkJCQkJ CQkJCQkgIHRiaW5mby0+YXR0cmRlZnNbal0tPmFkZWZfZXhwcik7CisJCQkJCQllbHNlIGlmICh0 YmluZm8tPmF0dGdlbmVyYXRlZFtqXSA9PSBBVFRSSUJVVEVfUk9XX1NUQVJUX1RJTUUpCisJCQkJ CQkJYXBwZW5kUFFFeHBCdWZmZXIocSwgIiBHRU5FUkFURUQgQUxXQVlTIEFTIFJPVyBTVEFSVCIp OworCQkJCQkJZWxzZSBpZiAodGJpbmZvLT5hdHRnZW5lcmF0ZWRbal0gPT0gQVRUUklCVVRFX1JP V19FTkRfVElNRSkKKwkJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcihxLCAiIEdFTkVSQVRFRCBBTFdB WVMgQVMgUk9XIEVORCIpOwogCQkJCQkJZWxzZQogCQkJCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHEs ICIgREVGQVVMVCAlcyIsCiAJCQkJCQkJCQkJCSAgdGJpbmZvLT5hdHRyZGVmc1tqXS0+YWRlZl9l eHByKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKaW5kZXggODMzMzU1OGJkYS4uNmQ5ZDkxZGU5ZSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTIy MzcsNiArMjIzNywxMCBAQCBkZXNjcmliZU9uZVRhYmxlRGV0YWlscyhjb25zdCBjaGFyICpzY2hl bWFuYW1lLAogCQkJCWRlZmF1bHRfc3RyID0gImdlbmVyYXRlZCBhbHdheXMgYXMgaWRlbnRpdHki OwogCQkJZWxzZSBpZiAoaWRlbnRpdHlbMF0gPT0gQVRUUklCVVRFX0lERU5USVRZX0JZX0RFRkFV TFQpCiAJCQkJZGVmYXVsdF9zdHIgPSAiZ2VuZXJhdGVkIGJ5IGRlZmF1bHQgYXMgaWRlbnRpdHki OworCQkJZWxzZSBpZiAoZ2VuZXJhdGVkWzBdID09IEFUVFJJQlVURV9ST1dfU1RBUlRfVElNRSkK KwkJCQlkZWZhdWx0X3N0ciA9ICJnZW5lcmF0ZWQgYWx3YXlzIGFzIHJvdyBzdGFydCI7CisJCQll bHNlIGlmIChnZW5lcmF0ZWRbMF0gPT0gQVRUUklCVVRFX1JPV19FTkRfVElNRSkKKwkJCQlkZWZh dWx0X3N0ciA9ICJnZW5lcmF0ZWQgYWx3YXlzIGFzIHJvdyBlbmQiOwogCQkJZWxzZSBpZiAoZ2Vu ZXJhdGVkWzBdID09IEFUVFJJQlVURV9HRU5FUkFURURfU1RPUkVEKQogCQkJewogCQkJCWRlZmF1 bHRfc3RyID0gcHNwcmludGYoImdlbmVyYXRlZCBhbHdheXMgYXMgKCVzKSBzdG9yZWQiLApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy90dXBkZXNjLmgKaW5kZXggZjQ1ZDQ3YWFiNy4uNjA3ZDA4MDU5NyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3R1cGRlc2MuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHVwZGVz Yy5oCkBAIC00Myw2ICs0Myw5IEBAIHR5cGVkZWYgc3RydWN0IFR1cGxlQ29uc3RyCiAJdWludDE2 CQludW1fY2hlY2s7CiAJYm9vbAkJaGFzX25vdF9udWxsOwogCWJvb2wJCWhhc19nZW5lcmF0ZWRf c3RvcmVkOworCWJvb2wJCWhhc19zeXN0ZW1fdmVyc2lvbmluZzsKKwlBdHRyTnVtYmVyCXN2X3N0 YXJ0dGltZTsJLyogd2hpY2ggY29sdW1uIGlzIHN0YXJ0dGltZSAqLworCUF0dHJOdW1iZXIJc3Zf ZW5kdGltZTsJCS8qIHdoaWNoIGNvbHVtbiBpcyBlbmR0aW1lICovCiB9IFR1cGxlQ29uc3RyOwog CiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaCBiL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfYXR0cmlidXRlLmgKaW5kZXggNWMxZWM5MzEzZS4uMDQ4YmNi ZDUwOCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19hdHRyaWJ1dGUuaAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX2F0dHJpYnV0ZS5oCkBAIC0yMTYsNiArMjE2LDkgQEAg REVDTEFSRV9VTklRVUVfSU5ERVhfUEtFWShwZ19hdHRyaWJ1dGVfcmVsaWRfYXR0bnVtX2luZGV4 LCAyNjU5LCBBdHRyaWJ1dGVSZWxpZE4KIAogI2RlZmluZQkJICBBVFRSSUJVVEVfR0VORVJBVEVE X1NUT1JFRAkncycKIAorI2RlZmluZQkJICBBVFRSSUJVVEVfUk9XX1NUQVJUX1RJTUUJJ1MnCisj ZGVmaW5lCQkgIEFUVFJJQlVURV9ST1dfRU5EX1RJTUUJJ0UnCisKICNlbmRpZgkJCQkJCQkvKiBF WFBPU0VfVE9fQ0xJRU5UX0NPREUgKi8KIAogI2VuZGlmCQkJCQkJCS8qIFBHX0FUVFJJQlVURV9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oCmluZGV4IDgzZTI5NjU1MzEu LjZkZjIyMWU1N2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oCkBAIC0y Miw1ICsyMiw3IEBAIGV4dGVybiB2b2lkIEV4ZWNDb21wdXRlU3RvcmVkR2VuZXJhdGVkKFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiBleHRlcm4gTW9kaWZ5VGFibGVTdGF0ZSAqRXhlY0lu aXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpOwogZXh0ZXJuIHZvaWQgRXhlY0VuZE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUgKm5v ZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1JlU2Nhbk1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlU3RhdGUg Km5vZGUpOworZXh0ZXJuIHZvaWQgRXhlY1NldFJvd1N0YXJ0VGltZShFU3RhdGUgKmVzdGF0ZSwg VHVwbGVUYWJsZVNsb3QgKnNsb3QsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOworZXh0 ZXJuIGJvb2wgRXhlY1NldFJvd0VuZFRpbWUoRVN0YXRlICplc3RhdGUsIFR1cGxlVGFibGVTbG90 ICpzbG90LCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKTsKIAogI2VuZGlmCQkJCQkJCS8q IE5PREVNT0RJRllUQUJMRV9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9tYWtl ZnVuY3MuaCBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCmluZGV4IDQ4YTdlYmZlNDUu LmY5ZjY2YWQ4MGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCisr KyBiL3NyYy9pbmNsdWRlL25vZGVzL21ha2VmdW5jcy5oCkBAIC0xMDUsNSArMTA1LDE2IEBAIGV4 dGVybiBEZWZFbGVtICptYWtlRGVmRWxlbUV4dGVuZGVkKGNoYXIgKm5hbWVTcGFjZSwgY2hhciAq bmFtZSwgTm9kZSAqYXJnLAogZXh0ZXJuIEdyb3VwaW5nU2V0ICptYWtlR3JvdXBpbmdTZXQoR3Jv dXBpbmdTZXRLaW5kIGtpbmQsIExpc3QgKmNvbnRlbnQsIGludCBsb2NhdGlvbik7CiAKIGV4dGVy biBWYWN1dW1SZWxhdGlvbiAqbWFrZVZhY3V1bVJlbGF0aW9uKFJhbmdlVmFyICpyZWxhdGlvbiwg T2lkIG9pZCwgTGlzdCAqdmFfY29scyk7CitleHRlcm4gTm9kZSAqbWFrZUFuZEV4cHIoTm9kZSAq bGV4cHIsIE5vZGUgKnJleHByLCBpbnQgbG9jYXRpb24pOworZXh0ZXJuIE5vZGUgKm1ha2VUeXBl Q2FzdChOb2RlICphcmcsIFR5cGVOYW1lICp0eXBlbmFtZSwgaW50IGxvY2F0aW9uKTsKK2V4dGVy biBDb2x1bW5SZWYgKm1ha2VDb2x1bW5SZWZGcm9tTmFtZShjaGFyICpjb2xuYW1lKTsKK2V4dGVy biBDb2x1bW5EZWYgKm1ha2VUZW1wb3JhbENvbHVtbkRlZihjaGFyICpuYW1lKTsKKworI2RlZmlu ZSBTWVNURU1fVkVSU0lPTklOR19ERUZBVUxUX1NUQVJUX05BTUUgInN0YXJ0dGltZSIKKyNkZWZp bmUgU1lTVEVNX1ZFUlNJT05JTkdfREVGQVVMVF9FTkRfTkFNRSAiZW5kdGltZSIKKworZXh0ZXJu IEFsdGVyVGFibGVDbWQgKm1ha2VEcm9wQ29sQ21kKGNoYXIgKm5hbWUpOworZXh0ZXJuIEFsdGVy VGFibGVDbWQgKm1ha2VBZGRDb2xDbWQoQ29sdW1uRGVmICpjb2xkZWYpOworCiAKICNlbmRpZgkJ CQkJCQkvKiBNQUtFRlVOQ19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rl cy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA2YTRkODJmMGE4Li45ZGM5NWIz ZmEwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKQEAgLTQ5MCw2ICs0OTAsOCBAQCB0eXBlZGVmIGVudW0gTm9kZVRh ZwogCVRfUGFydGl0aW9uUmFuZ2VEYXR1bSwKIAlUX1BhcnRpdGlvbkNtZCwKIAlUX1ZhY3V1bVJl bGF0aW9uLAorCVRfUm93VGltZSwKKwlUX1RlbXBvcmFsQ2xhdXNlLAogCiAJLyoKIAkgKiBUQUdT IEZPUiBSRVBMSUNBVElPTiBHUkFNTUFSIFBBUlNFIE5PREVTIChyZXBsbm9kZXMuaCkKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhcnNlbm9kZXMuaAppbmRleCBlMjgyNDhhZjMyLi45NzI3NjgxNDAwIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCkBAIC0xMDIzLDYgKzEwMjMsNyBAQCB0eXBlZGVmIHN0cnVjdCBSYW5nZVRibEVu dHJ5CiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbGF0aW9uIGtpbmQgKHNlZSBwZ19jbGFzcy5yZWxr aW5kKSAqLwogCWludAkJCXJlbGxvY2ttb2RlOwkvKiBsb2NrIGxldmVsIHRoYXQgcXVlcnkgcmVx dWlyZXMgb24gdGhlIHJlbCAqLwogCXN0cnVjdCBUYWJsZVNhbXBsZUNsYXVzZSAqdGFibGVzYW1w bGU7CS8qIHNhbXBsaW5nIGluZm8sIG9yIE5VTEwgKi8KKwlib29sCQloYXNfc3lzdGVtX3ZlcnNp b25pbmc7CS8qIHJlbGF0aW9uIGhhcyBzeXN0ZW0gdmVyc2lvbmluZyAqLwogCiAJLyoKIAkgKiBG aWVsZHMgdmFsaWQgZm9yIGEgc3VicXVlcnkgUlRFIChlbHNlIE5VTEwpOgpAQCAtMTg1MCw3ICsx ODUxLDcgQEAgdHlwZWRlZiBlbnVtIERyb3BCZWhhdmlvcgogfSBEcm9wQmVoYXZpb3I7CiAKIC8q IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqCUFsdGVyIFRhYmxlCisgKiAgICAgQWx0ZXIgVGFi bGUKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwogdHlwZWRlZiBzdHJ1Y3QgQWx0ZXJU YWJsZVN0bXQKQEAgLTE5MzQsNyArMTkzNSwxMCBAQCB0eXBlZGVmIGVudW0gQWx0ZXJUYWJsZVR5 cGUKIAlBVF9BZGRJZGVudGl0eSwJCQkJLyogQUREIElERU5USVRZICovCiAJQVRfU2V0SWRlbnRp dHksCQkJCS8qIFNFVCBpZGVudGl0eSBjb2x1bW4gb3B0aW9ucyAqLwogCUFUX0Ryb3BJZGVudGl0 eSwJCQkvKiBEUk9QIElERU5USVRZICovCi0JQVRfUmVBZGRTdGF0aXN0aWNzCQkJLyogaW50ZXJu YWwgdG8gY29tbWFuZHMvdGFibGVjbWRzLmMgKi8KKwlBVF9SZUFkZFN0YXRpc3RpY3MsCQkJLyog aW50ZXJuYWwgdG8gY29tbWFuZHMvdGFibGVjbWRzLmMgKi8KKwlBVF9BZGRTeXN0ZW1WZXJzaW9u aW5nLCAgICAgLyogQUREIHN5c3RlbSB2ZXJzaW9uaW5nICovCisJQVRfRHJvcFN5c3RlbVZlcnNp b25pbmcsICAgIC8qIERST1Agc3lzdGVtIHZlcnNpb25pbmcgKi8KKwlBVF9QZXJpb2RDb2x1bW4g ICAgICAgICAgICAgLyogUGVyaW9kIGNvbHVtbiAqLwogfSBBbHRlclRhYmxlVHlwZTsKIAogdHlw ZWRlZiBzdHJ1Y3QgUmVwbGljYUlkZW50aXR5U3RtdApAQCAtMjE4MSw2ICsyMTg1LDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgQ3JlYXRlU3RtdAogCWNoYXIJICAgKnRhYmxlc3BhY2VuYW1lOyAvKiB0YWJs ZSBzcGFjZSB0byB1c2UsIG9yIE5VTEwgKi8KIAljaGFyCSAgICphY2Nlc3NNZXRob2Q7CS8qIHRh YmxlIGFjY2VzcyBtZXRob2QgKi8KIAlib29sCQlpZl9ub3RfZXhpc3RzOwkvKiBqdXN0IGRvIG5v dGhpbmcgaWYgaXQgYWxyZWFkeSBleGlzdHM/ICovCisJYm9vbAkJc3lzdGVtVmVyc2lvbmluZzsJ LyogdHJ1ZSB3aXRoIHN5c3RlbSB2ZXJzaW9uaW5nICovCiB9IENyZWF0ZVN0bXQ7CiAKIC8qIC0t LS0tLS0tLS0KQEAgLTIyMzAsNyArMjIzNSw5IEBAIHR5cGVkZWYgZW51bSBDb25zdHJUeXBlCQkJ LyogdHlwZXMgb2YgY29uc3RyYWludHMgKi8KIAlDT05TVFJfQVRUUl9ERUZFUlJBQkxFLAkJLyog YXR0cmlidXRlcyBmb3IgcHJldmlvdXMgY29uc3RyYWludCBub2RlICovCiAJQ09OU1RSX0FUVFJf Tk9UX0RFRkVSUkFCTEUsCiAJQ09OU1RSX0FUVFJfREVGRVJSRUQsCi0JQ09OU1RSX0FUVFJfSU1N RURJQVRFCisJQ09OU1RSX0FUVFJfSU1NRURJQVRFLAorCUNPTlNUUl9ST1dfU1RBUlRfVElNRSwK KwlDT05TVFJfUk9XX0VORF9USU1FCiB9IENvbnN0clR5cGU7CiAKIC8qIEZvcmVpZ24ga2V5IGFj dGlvbiBjb2RlcyAqLwpAQCAtMzY4Niw0ICszNjkzLDMxIEBAIHR5cGVkZWYgc3RydWN0IERyb3BT dWJzY3JpcHRpb25TdG10CiAJRHJvcEJlaGF2aW9yIGJlaGF2aW9yOwkJLyogUkVTVFJJQ1Qgb3Ig Q0FTQ0FERSBiZWhhdmlvciAqLwogfSBEcm9wU3Vic2NyaXB0aW9uU3RtdDsKIAordHlwZWRlZiBz dHJ1Y3QgUm93VGltZQoreworCU5vZGVUYWcJCXR5cGU7CisJY2hhcgkgICAqc3RhcnRfdGltZTsJ CS8qIFJvdyBzdGFydCB0aW1lICovCisJY2hhcgkgICAqZW5kX3RpbWU7CQkvKiBSb3cgZW5kIHRp bWUgKi8KK30JCQlSb3dUaW1lOworCit0eXBlZGVmIGVudW0gVGVtcG9yYWxDbGF1c2VUeXBlCit7 CisJQVNfT0YsCisJQkVUV0VFTl9ULAorCUJFVFdFRU5fU1lNTUVUUklDLAorCUJFVFdFRU5fQVNZ TU1FVFJJQywKKwlGUk9NX1RPCit9CQkJVGVtcG9yYWxDbGF1c2VUeXBlOworCisKK3R5cGVkZWYg c3RydWN0IFRlbXBvcmFsQ2xhdXNlCit7CisJTm9kZVRhZwkJdHlwZTsKKwlUZW1wb3JhbENsYXVz ZVR5cGUga2luZDsKKwlOb2RlCSAgICpyZWxhdGlvbjsKKwlOb2RlCSAgICpmcm9tOwkJCS8qIHN0 YXJ0aW5nIHRpbWUgKi8KKwlOb2RlCSAgICp0bzsJCQkJLyogZW5kaW5nIHRpbWUgKi8KK30JCQlU ZW1wb3JhbENsYXVzZTsKKworCiAjZW5kaWYJCQkJCQkJLyogUEFSU0VOT0RFU19IICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbmNhdC5oIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL3BsYW5jYXQuaAppbmRleCA4ZDFkNmMxYjQyLi5kZDJkNmJjZTJlIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGxhbmNhdC5oCisrKyBiL3NyYy9pbmNsdWRlL29wdGlt aXplci9wbGFuY2F0LmgKQEAgLTczLDUgKzczLDggQEAgZXh0ZXJuIGRvdWJsZSBnZXRfZnVuY3Rp b25fcm93cyhQbGFubmVySW5mbyAqcm9vdCwgT2lkIGZ1bmNpZCwgTm9kZSAqbm9kZSk7CiBleHRl cm4gYm9vbCBoYXNfcm93X3RyaWdnZXJzKFBsYW5uZXJJbmZvICpyb290LCBJbmRleCBydGksIENt ZFR5cGUgZXZlbnQpOwogCiBleHRlcm4gYm9vbCBoYXNfc3RvcmVkX2dlbmVyYXRlZF9jb2x1bW5z KFBsYW5uZXJJbmZvICpyb290LCBJbmRleCBydGkpOworZXh0ZXJuIGNoYXIgKmdldF9yb3dfc3Rh cnRfdGltZV9jb2xfbmFtZShSZWxhdGlvbiByZWwpOworZXh0ZXJuIGNoYXIgKmdldF9yb3dfZW5k X3RpbWVfY29sX25hbWUoUmVsYXRpb24gcmVsKTsKK2V4dGVybiB2b2lkIGFkZF9oaXN0b3J5X2Rh dGFfZmlsdGVyKFF1ZXJ5ICpxdWVyeSk7CiAKICNlbmRpZgkJCQkJCQkvKiBQTEFOQ0FUX0ggKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9rd2xpc3QuaCBiL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaAppbmRleCBmODM2YWNmODc2Li4xMGQxOTllZDQ1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlz dC5oCkBAIC0zMTIsNiArMzEyLDcgQEAgUEdfS0VZV09SRCgicGFydGlhbCIsIFBBUlRJQUwsIFVO UkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbiIsIFBB UlRJVElPTiwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFz c2luZyIsIFBBU1NJTkcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdP UkQoInBhc3N3b3JkIiwgUEFTU1dPUkQsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK K1BHX0tFWVdPUkQoInBlcmlvZCIsIFBFUklPRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgicGxhY2luZyIsIFBMQUNJTkcsIFJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwbGFucyIsIFBMQU5TLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwb2xpY3kiLCBQT0xJQ1ksIFVOUkVTRVJWRURfS0VZ V09SRCwgQkFSRV9MQUJFTCkKQEAgLTQwNiw2ICs0MDcsNyBAQCBQR19LRVlXT1JEKCJzdXBwb3J0 IiwgU1VQUE9SVCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi c3ltbWV0cmljIiwgU1lNTUVUUklDLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgic3lzaWQiLCBTWVNJRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic3lzdGVtIiwgU1lTVEVNX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKK1BHX0tFWVdPUkQoInN5c3RlbV90aW1lIiwgU1lTVEVNX1RJTUUsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRhYmxlIiwgVEFCTEUsIFJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ0YWJsZXMiLCBUQUJMRVMsIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInRhYmxlc2FtcGxlIiwgVEFC TEVTQU1QTEUsIFRZUEVfRlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC00NTQsNiAr NDU2LDcgQEAgUEdfS0VZV09SRCgidmFyaWFkaWMiLCBWQVJJQURJQywgUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInZhcnlpbmciLCBWQVJZSU5HLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgidmVyYm9zZSIsIFZFUkJPU0UsIFRZUEVf RlVOQ19OQU1FX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJ2ZXJzaW9uIiwgVkVS U0lPTl9QLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJ2ZXJz aW9uaW5nIiwgVkVSU0lPTklORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgidmlldyIsIFZJRVcsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBH X0tFWVdPUkQoInZpZXdzIiwgVklFV1MsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkK IFBHX0tFWVdPUkQoInZvbGF0aWxlIiwgVk9MQVRJTEUsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFS RV9MQUJFTCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmggYi9z cmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oCmluZGV4IDE1MDBkZTJkZDAuLjE4MmEyMmM2 MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUuaApAQCAtMjAxLDcgKzIwMSw3IEBAIHN0cnVjdCBQ YXJzZVN0YXRlCiAJCQkJCQkJCQkJICogd2l0aCBGT1IgVVBEQVRFL0ZPUiBTSEFSRSAqLwogCWJv b2wJCXBfcmVzb2x2ZV91bmtub3duczsgLyogcmVzb2x2ZSB1bmtub3duLXR5cGUgU0VMRUNUIG91 dHB1dHMgYXMKIAkJCQkJCQkJCSAqIHR5cGUgdGV4dCAqLwotCisJTm9kZQkgICAqcF90ZW1wd2hl cmU7CS8qIHRlbXBvcmFsIHdoZXJlIGNsYXVzZSBzbyBmYXIgKi8KIAlRdWVyeUVudmlyb25tZW50 ICpwX3F1ZXJ5RW52OwkvKiBjdXJyIGVudiwgaW5jbCByZWZzIHRvIGVuY2xvc2luZyBlbnYgKi8K IAogCS8qIEZsYWdzIHRlbGxpbmcgYWJvdXQgdGhpbmdzIGZvdW5kIGluIHRoZSBxdWVyeTogKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmggYi9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2VfdXRpbGNtZC5oCmluZGV4IDEwNTZiZjA4MWIuLmJiODBhMmEwMTgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV91dGlsY21kLmgKKysrIGIvc3Jj L2luY2x1ZGUvcGFyc2VyL3BhcnNlX3V0aWxjbWQuaApAQCAtMTUsMTMgKzE1LDE0IEBACiAjZGVm aW5lIFBBUlNFX1VUSUxDTURfSAogCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25vZGUuaCIKKyNp bmNsdWRlICJ0Y29wL3V0aWxpdHkuaCIKIAogc3RydWN0IEF0dHJNYXA7CQkJCQkvKiBhdm9pZCBp bmNsdWRpbmcgYXR0bWFwLmggaGVyZSAqLwogCiAKIGV4dGVybiBMaXN0ICp0cmFuc2Zvcm1DcmVh dGVTdG10KENyZWF0ZVN0bXQgKnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nKTsKIGV4dGVy biBBbHRlclRhYmxlU3RtdCAqdHJhbnNmb3JtQWx0ZXJUYWJsZVN0bXQoT2lkIHJlbGlkLCBBbHRl clRhYmxlU3RtdCAqc3RtdCwKLQkJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcs CisJCQkJCQkJCQkJCSAgIEFsdGVyVGFibGVVdGlsaXR5Q29udGV4dCAqY29udGV4dCwKIAkJCQkJ CQkJCQkJICAgTGlzdCAqKmJlZm9yZVN0bXRzLAogCQkJCQkJCQkJCQkgICBMaXN0ICoqYWZ0ZXJT dG10cyk7CiBleHRlcm4gSW5kZXhTdG10ICp0cmFuc2Zvcm1JbmRleFN0bXQoT2lkIHJlbGlkLCBJ bmRleFN0bXQgKnN0bXQsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS90Y29wL3V0aWxpdHkuaCBi L3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCmluZGV4IDIxMmU5YjMyODAuLjZjYWVjNTM4MDUg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Rjb3AvdXRpbGl0eS5oCisrKyBiL3NyYy9pbmNsdWRl L3Rjb3AvdXRpbGl0eS5oCkBAIC0zNCw2ICszNCwxMSBAQCB0eXBlZGVmIHN0cnVjdCBBbHRlclRh YmxlVXRpbGl0eUNvbnRleHQKIAlPaWQJCQlyZWxpZDsJCQkvKiBPSUQgb2YgQUxURVIncyB0YXJn ZXQgdGFibGUgKi8KIAlQYXJhbUxpc3RJbmZvIHBhcmFtczsJCS8qIGFueSBwYXJhbWV0ZXJzIGF2 YWlsYWJsZSB0byBBTFRFUiBUQUJMRSAqLwogCVF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52OyAv KiBleGVjdXRpb24gZW52aXJvbm1lbnQgZm9yIEFMVEVSIFRBQkxFICovCisJYm9vbCBoYXNTeXN0 ZW1WZXJzaW9uaW5nOwkvKiB0cnVlIGlmIHRhYmxlIGhhcyBzeXN0ZW0gdmVyc2lvbmluZyAqLwor CWNoYXIJICAgKnN0YXJ0VGltZUNvbE5hbWU7CS8qIG5hbWUgb2Ygcm93IHN0YXJ0IHRpbWUgY29s dW1uICovCisJY2hhcgkgICAqZW5kVGltZUNvbE5hbWU7IC8qIG5hbWUgb2Ygcm93IGVuZCB0aW1l IGNvbHVtbiAqLworCWNoYXIJICAgKnBlcmlvZFN0YXJ0OwkvKiBuYW1lIG9mIHBlcmlvZCBzdGFy dCB0aW1lIGNvbHVtbiAqLworCWNoYXIJICAgKnBlcmlvZEVuZDsJCS8qIG5hbWUgb2YgcGVyaW9k IGVuZCB0aW1lIGNvbHVtbiAqLwogfSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQ7CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlIGIvc3JjL3Rl c3QvaXNvbGF0aW9uL2lzb2xhdGlvbl9zY2hlZHVsZQppbmRleCBmNGMwMTAwNmZjLi42YWY5OWE0 NDY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9uX3NjaGVkdWxlCisr KyBiL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRpb25fc2NoZWR1bGUKQEAgLTM2LDYgKzM2LDcg QEAgdGVzdDogZmstcGFydGl0aW9uZWQtMgogdGVzdDogZXZhbC1wbGFuLXF1YWwKIHRlc3Q6IGV2 YWwtcGxhbi1xdWFsLXRyaWdnZXIKIHRlc3Q6IGxvY2stdXBkYXRlLWRlbGV0ZQordGVzdDogbG9j ay11cGRhdGUtZGVsZXRlLXN5c3RlbS12ZXJzaW9uZWQKIHRlc3Q6IGxvY2stdXBkYXRlLXRyYXZl cnNhbAogdGVzdDogaW5oZXJpdC10ZW1wCiB0ZXN0OiBpbnNlcnQtY29uZmxpY3QtZG8tbm90aGlu ZwpAQCAtOTYsMyArOTcsNCBAQCB0ZXN0OiBwbHBnc3FsLXRvYXN0CiB0ZXN0OiB0cnVuY2F0ZS1j b25mbGljdAogdGVzdDogc2VyaWFsaXphYmxlLXBhcmFsbGVsCiB0ZXN0OiBzZXJpYWxpemFibGUt cGFyYWxsZWwtMgordGVzdDogc3lzdGVtLXZlcnNpb25lZApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2No ZWR1bGUKaW5kZXggN2JlODkxNzhmMC4uNzA5Y2M0YmE5NCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVs X3NjaGVkdWxlCkBAIC04Niw3ICs4Niw3IEBAIHRlc3Q6IGJyaW5fYmxvb20gYnJpbl9tdWx0aQog IyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAgb2YgcGFyYWxsZWwgdGVzdHMKICMgLS0tLS0t LS0tLQotdGVzdDogY3JlYXRlX3RhYmxlX2xpa2UgYWx0ZXJfZ2VuZXJpYyBhbHRlcl9vcGVyYXRv ciBtaXNjIGFzeW5jIGRic2l6ZSBtaXNjX2Z1bmN0aW9ucyBzeXN2aWV3cyB0c3JmIHRpZCB0aWRz Y2FuIHRpZHJhbmdlc2NhbiBjb2xsYXRlLmljdS51dGY4IGluY3JlbWVudGFsX3NvcnQKK3Rlc3Q6 IGNyZWF0ZV90YWJsZV9saWtlIGFsdGVyX2dlbmVyaWMgYWx0ZXJfb3BlcmF0b3IgbWlzYyBhc3lu YyBkYnNpemUgbWlzY19mdW5jdGlvbnMgc3lzdmlld3MgdHNyZiB0aWQgdGlkc2NhbiB0aWRyYW5n ZXNjYW4gY29sbGF0ZS5pY3UudXRmOCBpbmNyZW1lbnRhbF9zb3J0IHN5c3RlbV92ZXJzaW9uaW5n CiAKICMgcnVsZXMgY2Fubm90IHJ1biBjb25jdXJyZW50bHkgd2l0aCBhbnkgdGVzdCB0aGF0IGNy ZWF0ZXMKICMgYSB2aWV3IG9yIHJ1bGUgaW4gdGhlIHB1YmxpYyBzY2hlbWEK --000000000000d27e5005c9338660--