Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sXOHv-003j0t-2j for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Jul 2024 16:59:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sXOHt-00EdD7-KO for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Jul 2024 16:59:25 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sXOHs-00EdCN-Nh for pgsql-hackers@lists.postgresql.org; Fri, 26 Jul 2024 16:59:25 +0000 Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sXOHp-001aFQ-GS for pgsql-hackers@postgresql.org; Fri, 26 Jul 2024 16:59:23 +0000 Received: by mail-ed1-x52e.google.com with SMTP id 4fb4d7f45d1cf-5a3b866ebc9so2399159a12.3 for ; Fri, 26 Jul 2024 09:59:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=datadoghq.com; s=google; t=1722013159; x=1722617959; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=yDhB8f7UxWVkpbzJxZTJh/77dkTJZFKqwFOBneLtY8I=; b=RI00IMDBbyfVIXpfQiJ5gbAztBWzBDEIkTQdhNLsHKC9nzSsQxLsuockENro/gKnQ8 GhrlPfuob19bN4LvC1Afo5OnHckbMWLIsTxjVs+reXIHuZL4N4fz2yuR0rvCfRXhqcfR F37tMMwiaB8XWa61Q9mLoJ1wLe3ODO/U4eXX4= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722013159; x=1722617959; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=yDhB8f7UxWVkpbzJxZTJh/77dkTJZFKqwFOBneLtY8I=; b=u6PEBcMZ891maEQU6iTVpf/cEpDORCtmVinFUwPO4L/tiv6dDwi7ETPQObPofEeM8P 8LQI65UL/MIikx01On1NB5np3J+7G3yIXYLl61RmQ6wZ815MAzIRnBKfQc+RGSnPASHA GGYWN8J+rO4LzPfGVZbIWrMu8Lw5/wGZjwxYTgvbmimFGubAfdigFJ/tB2VFUmXDorNa CAGmxstQx05zY6A6O4+8uVWmJsLy456raGAWIdR7STQVmfye17UEHQU4JI0R8UG2JHIf 6+k3FSk/bZVXGAlKys/9jn6SxD3dlEY9109GUEknixQXvYWDlxgrk5kEoq3WpSs/5Jhm a6YQ== X-Gm-Message-State: AOJu0YwTn5VDWBUWvqFg3nLpJ/YSUKBsloZqj1e264Ar5GCSGbywDEd3 YnJjjYhxmsGXMeA+SYL2et8okfYssnr7u4aXtgFWU927E4euS1MMlDqaInXdqKGhkg+KakmtZ8L lO3+M9G75ewdVfyIp+xDjWQGAFWV70j+zUUkDYaE7ZxK4FUskEsc= X-Google-Smtp-Source: AGHT+IFrsFVphkvgvSdTBPuNe+vNTbrBdCSqb+PEWQd2fzV84Y4HQWmO05gq2R/kkhlW/syFeitZX/vH+YpS4Hd6ArE= X-Received: by 2002:a50:8e5e:0:b0:5af:51d6:d8e with SMTP id 4fb4d7f45d1cf-5b020ba8a20mr36328a12.20.1722013158709; Fri, 26 Jul 2024 09:59:18 -0700 (PDT) MIME-Version: 1.0 From: Anthonin Bonnefoy Date: Fri, 26 Jul 2024 18:59:07 +0200 Message-ID: Subject: Add ALL_CANDIDATES option to EXPLAIN To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000a08f37061e296eaa" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a08f37061e296eaa Content-Type: text/plain; charset="UTF-8" Hi, I have a prototype for an ALL_CANDIDATES option for EXPLAIN. The goal of this option is to print all plan candidates instead of only the cheapest plan. It will output the plans from the most expensive at the top to the cheapest. Here's an example: explain (all_candidates) select * from pgbench_accounts where aid=1; QUERY PLAN ----------------------------------------------------------------------------------------------------- Plan 1 -> Gather (cost=1000.00..3375.39 rows=1 width=97) Workers Planned: 1 -> Parallel Seq Scan on pgbench_accounts (cost=0.00..2375.29 rows=1 width=97) Filter: (aid = 1) Plan 2 -> Seq Scan on pgbench_accounts (cost=0.00..2890.00 rows=1 width=97) Filter: (aid = 1) Plan 3 -> Bitmap Heap Scan on pgbench_accounts (cost=4.30..8.31 rows=1 width=97) Recheck Cond: (aid = 1) -> Bitmap Index Scan on pgbench_accounts_pkey (cost=0.00..4.30 rows=1 width=0) Index Cond: (aid = 1) Plan 4 -> Index Scan using pgbench_accounts_pkey on pgbench_accounts (cost=0.29..8.31 rows=1 width=97) Index Cond: (aid = 1) This can provide very useful insight on the planner's decisions like whether it tried to use a specific index and how much cost difference there is with the top plan. Additionally, it makes it possible to spot discrepancies in generated plans like incorrect row estimation [1]. The plan list is generated from the upper_rel's pathlist. However, due to how planning mutates the PlannerGlobal state, we can't directly iterate the path list generated by the subquery_planner and create a planned statement for them. Instead, we need to plan from scratch for every path in the pathlist to generate the list of PlannedStmt. The patch is split in two mostly to ease the review: 001: Propagate PlannerInfo root to add_path. This is needed to prevent add_path from discarding path if all_candidates is enabled which will be stored in PlannerGlobal. 002: Add the planner_all_candidates function and print of candidate list in explain [1] https://www.postgresql.org/message-id/flat/CAO6_Xqr9+51NxgO=XospEkUeAg-p=EjAWmtpdcZwjRgGKJ53iA@mail.gmail.com Regards, Anthonin --000000000000a08f37061e296eaa Content-Type: application/octet-stream; name="v1-0002-Add-ALL_CANDIDATES-explain-option.patch" Content-Disposition: attachment; filename="v1-0002-Add-ALL_CANDIDATES-explain-option.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lz2xwapx1 RnJvbSBiZTRjMDhlYTI3OGFjOWM1MDZhODdhNWEwYTZlNmIxOWYzZjJkNjEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA Z21haWwuY29tPgpEYXRlOiBNb24sIDE1IEp1bCAyMDI0IDA3OjIzOjM5ICswMjAwClN1YmplY3Q6 IEFkZCBBTExfQ0FORElEQVRFUyBleHBsYWluIG9wdGlvbgoKV2hlbiBBTExfQ0FORElEQVRFUyBp cyBwcm92aWRlZCwgdGhlIHF1ZXJ5IHBsYW5uZXIgaXMgZm9yY2VkIHRvIGtlZXAgYWxsCnBhdGhz IGluc3RlYWQgb2YgZGlzY2FyZGluZyB0aGUgbW9yZSBleHBlbnNpdmUgb3B0aW9uLiBGcm9tIHRo b3NlIHBhdGhzLAphIGxpc3Qgb2YgUGxhbm5lZFN0bXQgaXMgZ2VuZXJhdGVkIHdoaWNoIGlzIHRo ZW4gb3V0cHV0ZWQgYnkgZXhwbGFpbi4KCkR1ZSB0byBob3cgcGxhbm5pbmcgbXV0YXRlcyB0aGUg UGxhbm5lckdsb2JhbCwgd2UgY2FuJ3QgZGlyZWN0bHkgaXRlcmF0ZQp0aGUgcGF0aCBsaXN0IGdl bmVyYXRlZCBieSB0aGUgc3VicXVlcnlfcGxhbm5lciBhbmQgY3JlYXRlIGEgcGxhbm5lZApzdGF0 ZW1lbnQgZm9yIHRoZW0uIEluc3RlYWQsIHdlIG5lZWQgdG8gcGxhbiBmcm9tIHNjcmF0Y2ggZm9y IGV2ZXJ5IHBhdGgKaW4gdGhlIHBhdGhsaXN0IHRvIGdlbmVyYXRlIHRoZSBsaXN0IG9mIFBsYW5u ZWRTdG10LgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvZXhwbGFpbi5zZ21sICAgICAgICAgfCAgMzgg KysrCiBzcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgIHwgIDU3ICsrKy0KIHNy Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYyAgfCA0MDIgKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgfCAgMTgg KysKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgICAgfCAgNDQgKysrCiBzcmMv YmluL3BzcWwvdGFiLWNvbXBsZXRlLmMgICAgICAgICAgIHwgICA0ICstCiBzcmMvaW5jbHVkZS9j b21tYW5kcy9leHBsYWluLmggICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5o ICAgICB8ICAgMiArCiBzcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmggICAgICAgICAgIHwgICAz ICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQgfCAxMTUgKysrKysrKysK IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsICAgICAgfCAgMTIgKwogMTIgZmlsZXMg Y2hhbmdlZCwgNTM2IGluc2VydGlvbnMoKyksIDE2MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kb2Mvc3JjL3NnbWwvcmVmL2V4cGxhaW4uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvZXhwbGFp bi5zZ21sCmluZGV4IGRiOWQzYTg1NDlhLi5kMTJiYzgwZWZiNCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9leHBsYWluLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9leHBsYWluLnNn bWwKQEAgLTQ2LDYgKzQ2LDcgQEAgRVhQTEFJTiBbICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdIDxyZXAKICAgICBUSU1JTkcg WyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0K ICAgICBTVU1NQVJZIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmJvb2xlYW48L3Jl cGxhY2VhYmxlPiBdCiAgICAgTUVNT1JZIFsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIi PmJvb2xlYW48L3JlcGxhY2VhYmxlPiBdCisgICAgQUxMX0NBTkRJREFURVMgWyA8cmVwbGFjZWFi bGUgY2xhc3M9InBhcmFtZXRlciI+Ym9vbGVhbjwvcmVwbGFjZWFibGU+IF0KICAgICBGT1JNQVQg eyBURVhUIHwgWE1MIHwgSlNPTiB8IFlBTUwgfQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lz ZGl2PgpAQCAtMjkzLDYgKzI5NCwyMiBAQCBST0xMQkFDSzsKICAgICA8L2xpc3RpdGVtPgogICAg PC92YXJsaXN0ZW50cnk+CiAKKyAgIDx2YXJsaXN0ZW50cnk+CisgICAgPHRlcm0+PGxpdGVyYWw+ QUxMX0NBTkRJREFURVM8L2xpdGVyYWw+PC90ZXJtPgorICAgIDxsaXN0aXRlbT4KKyAgICAgPHBh cmE+CisgICAgICBQcmludCBhbGwgcGxhbiBjYW5kaWRhdGVzLiBCeSBkZWZhdWx0LCB0aGUgcGxh bm5lciBkaXNjYXJkcyBtb3JlIGV4cGVuc2l2ZQorICAgICAgcGxhbnMuIDxsaXRlcmFsPkFMTF9D QU5ESURBVEVTPC9saXRlcmFsPiBmb3JjZXMgdGhlIHBsYW5uZXIgdG8ga2VlcCBhbGwKKyAgICAg IHBsYW5zIHdoaWNoIHdpbGwgYmUgcHJpbnRlZCBieSA8Y29tbWFuZD5FWFBMQUlOPC9jb21tYW5k Pi4gVGhlIHBsYW5zIGFyZQorICAgICAgc29ydGVkIGZyb20gdGhlIG1vc3QgZXhwZW5zaXZlIGF0 IHRoZSB0b3AgdG8gdGhlIGNoZWFwZXN0IGF0IHRoZSBib3R0b20uCisgICAgICBUaGUgbGFzdCBw bGFuIGFuZCBpcyB0aGUgcGxhbiB0aGF0IGlzIGRpc3BsYXllZCBieSBhIG5vcm1hbAorICAgICAg PGNvbW1hbmQ+RVhQTEFJTjwvY29tbWFuZD4uCisgICAgICBUaGlzIHBhcmFtZXRlciBtYXkgb25s eSBiZSB1c2VkIHdoZW4gPGxpdGVyYWw+QU5BTFlaRTwvbGl0ZXJhbD4gaXMgbm90CisgICAgICBl bmFibGVkLiBJdCBkZWZhdWx0cyB0byA8bGl0ZXJhbD5GQUxTRTwvbGl0ZXJhbD4uCisgICAgIDwv cGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJsaXN0 ZW50cnk+CiAgICAgPHRlcm0+PGxpdGVyYWw+Rk9STUFUPC9saXRlcmFsPjwvdGVybT4KICAgICA8 bGlzdGl0ZW0+CkBAIC00NjUsNiArNDgyLDI3IEBAIEVYUExBSU4gKENPU1RTIEZBTFNFKSBTRUxF Q1QgKiBGUk9NIGZvbyBXSEVSRSBpID0gNDsKICBJbmRleCBTY2FuIHVzaW5nIGZpIG9uIGZvbwog ICAgSW5kZXggQ29uZDogKGkgPSA0KQogKDIgcm93cykKKzwvcHJvZ3JhbWxpc3Rpbmc+CisgIDwv cGFyYT4KKyAgPHBhcmE+CisgICBIZXJlIGlzIHRoZSBzYW1lIHBsYW4gd2l0aCBhbGwgcGxhbiBj YW5kaWRhdGVzOgorCis8cHJvZ3JhbWxpc3Rpbmc+CitFWFBMQUlOIChBTExfQ0FORElEQVRFUykg U0VMRUNUICogRlJPTSBmb28gd2hlcmUgaWQgPSA0OworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBQbGFuIDEK KyAgIC0+ICBTZXEgU2NhbiBvbiBmb28gIChjb3N0PTAuMDAuLjE3MC4wMCByb3dzPTEgd2lkdGg9 NCkKKyAgICAgICAgIEZpbHRlcjogKGlkID0gNCkKKyBQbGFuIDIKKyAgIC0+ICBCaXRtYXAgSGVh cCBTY2FuIG9uIGZvbyAgKGNvc3Q9NC4yOS4uOC4zMSByb3dzPTEgd2lkdGg9NCkKKyAgICAgICAg IFJlY2hlY2sgQ29uZDogKGlkID0gNCkKKyAgICAgICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBv biBmb29faWRfaWR4ICAoY29zdD0wLjAwLi40LjI5IHJvd3M9MSB3aWR0aD0wKQorICAgICAgICAg ICAgICAgSW5kZXggQ29uZDogKGlkID0gNCkKKyBQbGFuIDMKKyAgIC0+ICBJbmRleCBPbmx5IFNj YW4gdXNpbmcgZm9vX2lkX2lkeCBvbiBmb28gIChjb3N0PTAuMjkuLjQuMzAgcm93cz0xIHdpZHRo PTQpCisgICAgICAgICBJbmRleCBDb25kOiAoaWQgPSA0KQorKDExIHJvd3MpCiA8L3Byb2dyYW1s aXN0aW5nPgogICA8L3BhcmE+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4 cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCA1NzcxYWFiZjQw YS4uYjg1MGE4ZjdjYmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4u YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTIxMiw2ICsyMTIsOCBA QCBFeHBsYWluUXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBFeHBsYWluU3RtdCAqc3RtdCwKIAkJ CWVzLT5zZXR0aW5ncyA9IGRlZkdldEJvb2xlYW4ob3B0KTsKIAkJZWxzZSBpZiAoc3RyY21wKG9w dC0+ZGVmbmFtZSwgImdlbmVyaWNfcGxhbiIpID09IDApCiAJCQllcy0+Z2VuZXJpYyA9IGRlZkdl dEJvb2xlYW4ob3B0KTsKKwkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgImFsbF9jYW5k aWRhdGVzIikgPT0gMCkKKwkJCWVzLT5hbGxfY2FuZGlkYXRlcyA9IGRlZkdldEJvb2xlYW4ob3B0 KTsKIAkJZWxzZSBpZiAoc3RyY21wKG9wdC0+ZGVmbmFtZSwgInRpbWluZyIpID09IDApCiAJCXsK IAkJCXRpbWluZ19zZXQgPSB0cnVlOwpAQCAtMzAzLDYgKzMwNSwxMSBAQCBFeHBsYWluUXVlcnko UGFyc2VTdGF0ZSAqcHN0YXRlLCBFeHBsYWluU3RtdCAqc3RtdCwKIAkJCQkoZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKIAkJCQkgZXJybXNnKCJFWFBMQUlOIG9wdGlv bnMgQU5BTFlaRSBhbmQgR0VORVJJQ19QTEFOIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIikpKTsK IAorCWlmIChlcy0+YWxsX2NhbmRpZGF0ZXMgJiYgZXMtPmFuYWx5emUpCisJCWVyZXBvcnQoRVJS T1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJ IGVycm1zZygiRVhQTEFJTiBvcHRpb25zIEFOQUxZWkUgYW5kIEFMTF9DQU5ESURBVEVTIGNhbm5v dCBiZSB1c2VkIHRvZ2V0aGVyIikpKTsKKwogCS8qIGlmIHRoZSBzdW1tYXJ5IHdhcyBub3Qgc2V0 IGV4cGxpY2l0bHksIHNldCBkZWZhdWx0IHZhbHVlICovCiAJZXMtPnN1bW1hcnkgPSAoc3VtbWFy eV9zZXQpID8gZXMtPnN1bW1hcnkgOiBlcy0+YW5hbHl6ZTsKIApAQCAtNDU4LDcgKzQ2NSwxMCBA QCBzdGFuZGFyZF9FeHBsYWluT25lUXVlcnkoUXVlcnkgKnF1ZXJ5LCBpbnQgY3Vyc29yT3B0aW9u cywKIAkJCQkJCSBjb25zdCBjaGFyICpxdWVyeVN0cmluZywgUGFyYW1MaXN0SW5mbyBwYXJhbXMs CiAJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCiB7Ci0JUGxhbm5lZFN0bXQgKnBs YW47CisJTGlzdENlbGwgICAqcGxhbl9saXN0OworCUxpc3QJICAgKnBsYW5zID0gTlVMTDsKKwlQ bGFubmVkU3RtdCAqcGxhbiA9IE5VTEw7CisJaW50CQkJcGxhbl9udW1iZXIgPSAwOwogCWluc3Ry X3RpbWUJcGxhbnN0YXJ0LAogCQkJCXBsYW5kdXJhdGlvbjsKIAlCdWZmZXJVc2FnZSBidWZ1c2Fn ZV9zdGFydCwKQEAgLTQ4OCw3ICs0OTgsMTAgQEAgc3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1 ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJSU5TVFJfVElNRV9TRVRfQ1VSUkVOVChw bGFuc3RhcnQpOwogCiAJLyogcGxhbiB0aGUgcXVlcnkgKi8KLQlwbGFuID0gcGdfcGxhbl9xdWVy eShxdWVyeSwgcXVlcnlTdHJpbmcsIGN1cnNvck9wdGlvbnMsIHBhcmFtcyk7CisJaWYgKGVzLT5h bGxfY2FuZGlkYXRlcykKKwkJcGxhbnMgPSBwZ19wbGFuX3F1ZXJ5X2FsbF9jYW5kaWRhdGVzKHF1 ZXJ5LCBxdWVyeVN0cmluZywgY3Vyc29yT3B0aW9ucywgcGFyYW1zKTsKKwllbHNlCisJCXBsYW4g PSBwZ19wbGFuX3F1ZXJ5KHF1ZXJ5LCBxdWVyeVN0cmluZywgY3Vyc29yT3B0aW9ucywgcGFyYW1z KTsKIAogCUlOU1RSX1RJTUVfU0VUX0NVUlJFTlQocGxhbmR1cmF0aW9uKTsKIAlJTlNUUl9USU1F X1NVQlRSQUNUKHBsYW5kdXJhdGlvbiwgcGxhbnN0YXJ0KTsKQEAgLTUwNyw5ICs1MjAsNDMgQEAg c3RhbmRhcmRfRXhwbGFpbk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMs CiAJfQogCiAJLyogcnVuIGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4 cGxhaW5PbmVQbGFuKHBsYW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVu diwKLQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxM KSwKLQkJCQkgICBlcy0+bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOworCWlmIChlcy0+ YWxsX2NhbmRpZGF0ZXMpCisJeworCQkvKiBXZSBoYXZlIGEgbGlzdCBvZiBwbGFuIGNhbmRpZGF0 ZXMsIHByaW50IHRoZW0gKi8KKwkJZm9yZWFjaChwbGFuX2xpc3QsIHBsYW5zKQorCQl7CisJCQlj aGFyCSAgICpwbGFuX25hbWU7CisKKwkJCXBsYW4gPSBsZmlyc3QocGxhbl9saXN0KTsKKworCQkJ cGxhbl9udW1iZXIrKzsKKwkJCXBsYW5fbmFtZSA9IHBzcHJpbnRmKCJQbGFuICVkIiwgcGxhbl9u dW1iZXIpOworCisJCQlFeHBsYWluT3Blbkdyb3VwKHBsYW5fbmFtZSwgTlVMTCwgdHJ1ZSwgZXMp OworCQkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfVEVYVCkKKwkJCXsKKwkJCQlF eHBsYWluSW5kZW50VGV4dChlcyk7CisJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhlcy0+c3Ry LCBwbGFuX25hbWUpOworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIlxuIik7 CisJCQkJZXMtPmluZGVudCsrOworCQkJfQorCisJCQlFeHBsYWluT25lUGxhbihwbGFuLCBpbnRv LCBlcywgcXVlcnlTdHJpbmcsIHBhcmFtcywgcXVlcnlFbnYsCisJCQkJCQkgICAmcGxhbmR1cmF0 aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwKKwkJCQkJCSAgIGVzLT5tZW1v cnkgPyAmbWVtX2NvdW50ZXJzIDogTlVMTCk7CisKKwkJCUV4cGxhaW5DbG9zZUdyb3VwKHBsYW5f bmFtZSwgTlVMTCwgdHJ1ZSwgZXMpOworCQkJaWYgKGVzLT5mb3JtYXQgPT0gRVhQTEFJTl9GT1JN QVRfVEVYVCkKKwkJCQllcy0+aW5kZW50LS07CisJCX0KKwl9CisJZWxzZQorCXsKKwkJLyogV2Ug aGF2ZSB0aGUgdG9wIHBsYW4gZnJvbSB0aGUgcGxhbm5lciwgcHJpbnQgaXQgKi8KKwkJRXhwbGFp bk9uZVBsYW4ocGxhbiwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMsIHF1ZXJ5RW52LAor CQkJCQkgICAmcGxhbmR1cmF0aW9uLCAoZXMtPmJ1ZmZlcnMgPyAmYnVmdXNhZ2UgOiBOVUxMKSwK KwkJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBOVUxMKTsKKwl9CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggOGU2ZGQyM2RmOTQuLjlhNTdk NGYwN2JjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC0yODMsMTQyICsy ODMsMTMgQEAgcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywg aW50IGN1cnNvck9wdGlvbnMsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotUGxhbm5lZFN0bXQgKgot c3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywg aW50IGN1cnNvck9wdGlvbnMsCi0JCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpCitzdGF0 aWMgUGxhbm5lZFN0bXQgKgorY3JlYXRlX3BsYW5uZWRfc3RtdChQbGFubmVySW5mbyAqcm9vdCwg UXVlcnkgKnBhcnNlLCBQbGFuICpwbGFuLCBpbnQgY3Vyc29yT3B0aW9ucykKIHsKIAlQbGFubmVk U3RtdCAqcmVzdWx0OwotCVBsYW5uZXJHbG9iYWwgKmdsb2I7Ci0JZG91YmxlCQl0dXBsZV9mcmFj dGlvbjsKLQlQbGFubmVySW5mbyAqcm9vdDsKLQlSZWxPcHRJbmZvICpmaW5hbF9yZWw7Ci0JUGF0 aAkgICAqYmVzdF9wYXRoOwotCVBsYW4JICAgKnRvcF9wbGFuOwogCUxpc3RDZWxsICAgKmxwLAog CQkJICAgKmxyOwotCi0JLyoKLQkgKiBTZXQgdXAgZ2xvYmFsIHN0YXRlIGZvciB0aGlzIHBsYW5u ZXIgaW52b2NhdGlvbi4gIFRoaXMgZGF0YSBpcyBuZWVkZWQKLQkgKiBhY3Jvc3MgYWxsIGxldmVs cyBvZiBzdWItUXVlcnkgdGhhdCBtaWdodCBleGlzdCBpbiB0aGUgZ2l2ZW4gY29tbWFuZCwKLQkg KiBzbyB3ZSBrZWVwIGl0IGluIGEgc2VwYXJhdGUgc3RydWN0IHRoYXQncyBsaW5rZWQgdG8gYnkg ZWFjaCBwZXItUXVlcnkKLQkgKiBQbGFubmVySW5mby4KLQkgKi8KLQlnbG9iID0gbWFrZU5vZGUo UGxhbm5lckdsb2JhbCk7Ci0KLQlnbG9iLT5ib3VuZFBhcmFtcyA9IGJvdW5kUGFyYW1zOwotCWds b2ItPnN1YnBsYW5zID0gTklMOwotCWdsb2ItPnN1YnBhdGhzID0gTklMOwotCWdsb2ItPnN1YnJv b3RzID0gTklMOwotCWdsb2ItPnJld2luZFBsYW5JRHMgPSBOVUxMOwotCWdsb2ItPmZpbmFscnRh YmxlID0gTklMOwotCWdsb2ItPmZpbmFscnRlcGVybWluZm9zID0gTklMOwotCWdsb2ItPmZpbmFs cm93bWFya3MgPSBOSUw7Ci0JZ2xvYi0+cmVzdWx0UmVsYXRpb25zID0gTklMOwotCWdsb2ItPmFw cGVuZFJlbGF0aW9ucyA9IE5JTDsKLQlnbG9iLT5yZWxhdGlvbk9pZHMgPSBOSUw7Ci0JZ2xvYi0+ aW52YWxJdGVtcyA9IE5JTDsKLQlnbG9iLT5wYXJhbUV4ZWNUeXBlcyA9IE5JTDsKLQlnbG9iLT5s YXN0UEhJZCA9IDA7Ci0JZ2xvYi0+bGFzdFJvd01hcmtJZCA9IDA7Ci0JZ2xvYi0+bGFzdFBsYW5O b2RlSWQgPSAwOwotCWdsb2ItPnRyYW5zaWVudFBsYW4gPSBmYWxzZTsKLQlnbG9iLT5kZXBlbmRz T25Sb2xlID0gZmFsc2U7Ci0KLQkvKgotCSAqIEFzc2VzcyB3aGV0aGVyIGl0J3MgZmVhc2libGUg dG8gdXNlIHBhcmFsbGVsIG1vZGUgZm9yIHRoaXMgcXVlcnkuIFdlCi0JICogY2FuJ3QgZG8gdGhp cyBpbiBhIHN0YW5kYWxvbmUgYmFja2VuZCwgb3IgaWYgdGhlIGNvbW1hbmQgd2lsbCB0cnkgdG8K LQkgKiBtb2RpZnkgYW55IGRhdGEsIG9yIGlmIHRoaXMgaXMgYSBjdXJzb3Igb3BlcmF0aW9uLCBv ciBpZiBHVUNzIGFyZSBzZXQKLQkgKiB0byB2YWx1ZXMgdGhhdCBkb24ndCBwZXJtaXQgcGFyYWxs ZWxpc20sIG9yIGlmIHBhcmFsbGVsLXVuc2FmZQotCSAqIGZ1bmN0aW9ucyBhcmUgcHJlc2VudCBp biB0aGUgcXVlcnkgdHJlZS4KLQkgKgotCSAqIChOb3RlIHRoYXQgd2UgZG8gYWxsb3cgQ1JFQVRF IFRBQkxFIEFTLCBTRUxFQ1QgSU5UTywgYW5kIENSRUFURQotCSAqIE1BVEVSSUFMSVpFRCBWSUVX IHRvIHVzZSBwYXJhbGxlbCBwbGFucywgYnV0IHRoaXMgaXMgc2FmZSBvbmx5IGJlY2F1c2UKLQkg KiB0aGUgY29tbWFuZCBpcyB3cml0aW5nIGludG8gYSBjb21wbGV0ZWx5IG5ldyB0YWJsZSB3aGlj aCB3b3JrZXJzIHdvbid0Ci0JICogYmUgYWJsZSB0byBzZWUuICBJZiB0aGUgd29ya2VycyBjb3Vs ZCBzZWUgdGhlIHRhYmxlLCB0aGUgZmFjdCB0aGF0Ci0JICogZ3JvdXAgbG9ja2luZyB3b3VsZCBj YXVzZSB0aGVtIHRvIGlnbm9yZSB0aGUgbGVhZGVyJ3MgaGVhdnl3ZWlnaHQgR0lOCi0JICogcGFn ZSBsb2NrcyB3b3VsZCBtYWtlIHRoaXMgdW5zYWZlLiAgV2UnbGwgaGF2ZSB0byBmaXggdGhhdCBz b21laG93IGlmCi0JICogd2Ugd2FudCB0byBhbGxvdyBwYXJhbGxlbCBpbnNlcnRzIGluIGdlbmVy YWw7IHVwZGF0ZXMgYW5kIGRlbGV0ZXMgaGF2ZQotCSAqIGFkZGl0aW9uYWwgcHJvYmxlbXMgZXNw ZWNpYWxseSBhcm91bmQgY29tYm8gQ0lEcy4pCi0JICoKLQkgKiBGb3Igbm93LCB3ZSBkb24ndCB0 cnkgdG8gdXNlIHBhcmFsbGVsIG1vZGUgaWYgd2UncmUgcnVubmluZyBpbnNpZGUgYQotCSAqIHBh cmFsbGVsIHdvcmtlci4gIFdlIG1pZ2h0IGV2ZW50dWFsbHkgYmUgYWJsZSB0byByZWxheCB0aGlz Ci0JICogcmVzdHJpY3Rpb24sIGJ1dCBmb3Igbm93IGl0IHNlZW1zIGJlc3Qgbm90IHRvIGhhdmUg cGFyYWxsZWwgd29ya2VycwotCSAqIHRyeWluZyB0byBjcmVhdGUgdGhlaXIgb3duIHBhcmFsbGVs IHdvcmtlcnMuCi0JICovCi0JaWYgKChjdXJzb3JPcHRpb25zICYgQ1VSU09SX09QVF9QQVJBTExF TF9PSykgIT0gMCAmJgotCQlJc1VuZGVyUG9zdG1hc3RlciAmJgotCQlwYXJzZS0+Y29tbWFuZFR5 cGUgPT0gQ01EX1NFTEVDVCAmJgotCQkhcGFyc2UtPmhhc01vZGlmeWluZ0NURSAmJgotCQltYXhf cGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVyID4gMCAmJgotCQkhSXNQYXJhbGxlbFdvcmtlcigp KQotCXsKLQkJLyogYWxsIHRoZSBjaGVhcCB0ZXN0cyBwYXNzLCBzbyBzY2FuIHRoZSBxdWVyeSB0 cmVlICovCi0JCWdsb2ItPm1heFBhcmFsbGVsSGF6YXJkID0gbWF4X3BhcmFsbGVsX2hhemFyZChw YXJzZSk7Ci0JCWdsb2ItPnBhcmFsbGVsTW9kZU9LID0gKGdsb2ItPm1heFBhcmFsbGVsSGF6YXJk ICE9IFBST1BBUkFMTEVMX1VOU0FGRSk7Ci0JfQotCWVsc2UKLQl7Ci0JCS8qIHNraXAgdGhlIHF1 ZXJ5IHRyZWUgc2NhbiwganVzdCBhc3N1bWUgaXQncyB1bnNhZmUgKi8KLQkJZ2xvYi0+bWF4UGFy YWxsZWxIYXphcmQgPSBQUk9QQVJBTExFTF9VTlNBRkU7Ci0JCWdsb2ItPnBhcmFsbGVsTW9kZU9L ID0gZmFsc2U7Ci0JfQotCi0JLyoKLQkgKiBnbG9iLT5wYXJhbGxlbE1vZGVOZWVkZWQgaXMgbm9y bWFsbHkgc2V0IHRvIGZhbHNlIGhlcmUgYW5kIGNoYW5nZWQgdG8KLQkgKiB0cnVlIGR1cmluZyBw bGFuIGNyZWF0aW9uIGlmIGEgR2F0aGVyIG9yIEdhdGhlciBNZXJnZSBwbGFuIGlzIGFjdHVhbGx5 Ci0JICogY3JlYXRlZCAoY2YuIGNyZWF0ZV9nYXRoZXJfcGxhbiwgY3JlYXRlX2dhdGhlcl9tZXJn ZV9wbGFuKS4KLQkgKgotCSAqIEhvd2V2ZXIsIGlmIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb24g b3IgZGVidWdfcGFyYWxsZWxfcXVlcnkgPQotCSAqIHJlZ3Jlc3MsIHRoZW4gd2UgaW1wb3NlIHBh cmFsbGVsIG1vZGUgd2hlbmV2ZXIgaXQncyBzYWZlIHRvIGRvIHNvLCBldmVuCi0JICogaWYgdGhl IGZpbmFsIHBsYW4gZG9lc24ndCB1c2UgcGFyYWxsZWxpc20uICBJdCdzIG5vdCBzYWZlIHRvIGRv IHNvIGlmCi0JICogdGhlIHF1ZXJ5IGNvbnRhaW5zIGFueXRoaW5nIHBhcmFsbGVsLXVuc2FmZTsg cGFyYWxsZWxNb2RlT0sgd2lsbCBiZQotCSAqIGZhbHNlIGluIHRoYXQgY2FzZS4gIE5vdGUgdGhh dCBwYXJhbGxlbE1vZGVPSyBjYW4ndCBjaGFuZ2UgYWZ0ZXIgdGhpcwotCSAqIHBvaW50LiBPdGhl cndpc2UsIGV2ZXJ5dGhpbmcgaW4gdGhlIHF1ZXJ5IGlzIGVpdGhlciBwYXJhbGxlbC1zYWZlIG9y Ci0JICogcGFyYWxsZWwtcmVzdHJpY3RlZCwgYW5kIGluIGVpdGhlciBjYXNlIGl0IHNob3VsZCBi ZSBPSyB0byBpbXBvc2UKLQkgKiBwYXJhbGxlbC1tb2RlIHJlc3RyaWN0aW9ucy4gIElmIHRoYXQg ZW5kcyB1cCBicmVha2luZyBzb21ldGhpbmcsIHRoZW4KLQkgKiBlaXRoZXIgc29tZSBmdW5jdGlv biB0aGUgdXNlciBpbmNsdWRlZCBpbiB0aGUgcXVlcnkgaXMgaW5jb3JyZWN0bHkKLQkgKiBsYWJl bGVkIGFzIHBhcmFsbGVsLXNhZmUgb3IgcGFyYWxsZWwtcmVzdHJpY3RlZCB3aGVuIGluIHJlYWxp dHkgaXQncwotCSAqIHBhcmFsbGVsLXVuc2FmZSwgb3IgZWxzZSB0aGUgcXVlcnkgcGxhbm5lciBp dHNlbGYgaGFzIGEgYnVnLgotCSAqLwotCWdsb2ItPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGdsb2It PnBhcmFsbGVsTW9kZU9LICYmCi0JCShkZWJ1Z19wYXJhbGxlbF9xdWVyeSAhPSBERUJVR19QQVJB TExFTF9PRkYpOwotCi0JLyogRGV0ZXJtaW5lIHdoYXQgZnJhY3Rpb24gb2YgdGhlIHBsYW4gaXMg bGlrZWx5IHRvIGJlIHNjYW5uZWQgKi8KLQlpZiAoY3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRf RkFTVF9QTEFOKQotCXsKLQkJLyoKLQkJICogV2UgaGF2ZSBubyByZWFsIGlkZWEgaG93IG1hbnkg dHVwbGVzIHRoZSB1c2VyIHdpbGwgdWx0aW1hdGVseSBGRVRDSAotCQkgKiBmcm9tIGEgY3Vyc29y LCBidXQgaXQgaXMgb2Z0ZW4gdGhlIGNhc2UgdGhhdCBoZSBkb2Vzbid0IHdhbnQgJ2VtCi0JCSAq IGFsbCwgb3Igd291bGQgcHJlZmVyIGEgZmFzdC1zdGFydCBwbGFuIGFueXdheSBzbyB0aGF0IGhl IGNhbgotCQkgKiBwcm9jZXNzIHNvbWUgb2YgdGhlIHR1cGxlcyBzb29uZXIuICBVc2UgYSBHVUMg cGFyYW1ldGVyIHRvIGRlY2lkZQotCQkgKiB3aGF0IGZyYWN0aW9uIHRvIG9wdGltaXplIGZvci4K LQkJICovCi0JCXR1cGxlX2ZyYWN0aW9uID0gY3Vyc29yX3R1cGxlX2ZyYWN0aW9uOwotCi0JCS8q Ci0JCSAqIFdlIGRvY3VtZW50IGN1cnNvcl90dXBsZV9mcmFjdGlvbiBhcyBzaW1wbHkgYmVpbmcg YSBmcmFjdGlvbiwgd2hpY2gKLQkJICogbWVhbnMgdGhlIGVkZ2UgY2FzZXMgMCBhbmQgMSBoYXZl IHRvIGJlIHRyZWF0ZWQgc3BlY2lhbGx5IGhlcmUuICBXZQotCQkgKiBjb252ZXJ0IDEgdG8gMCAo ImFsbCB0aGUgdHVwbGVzIikgYW5kIDAgdG8gYSB2ZXJ5IHNtYWxsIGZyYWN0aW9uLgotCQkgKi8K LQkJaWYgKHR1cGxlX2ZyYWN0aW9uID49IDEuMCkKLQkJCXR1cGxlX2ZyYWN0aW9uID0gMC4wOwot CQllbHNlIGlmICh0dXBsZV9mcmFjdGlvbiA8PSAwLjApCi0JCQl0dXBsZV9mcmFjdGlvbiA9IDFl LTEwOwotCX0KLQllbHNlCi0JewotCQkvKiBEZWZhdWx0IGFzc3VtcHRpb24gaXMgd2UgbmVlZCBh bGwgdGhlIHR1cGxlcyAqLwotCQl0dXBsZV9mcmFjdGlvbiA9IDAuMDsKLQl9Ci0KLQkvKiBwcmlt YXJ5IHBsYW5uaW5nIGVudHJ5IHBvaW50IChtYXkgcmVjdXJzZSBmb3Igc3VicXVlcmllcykgKi8K LQlyb290ID0gc3VicXVlcnlfcGxhbm5lcihnbG9iLCBwYXJzZSwgTlVMTCwgZmFsc2UsIHR1cGxl X2ZyYWN0aW9uLCBOVUxMKTsKLQotCS8qIFNlbGVjdCBiZXN0IFBhdGggYW5kIHR1cm4gaXQgaW50 byBhIFBsYW4gKi8KLQlmaW5hbF9yZWwgPSBmZXRjaF91cHBlcl9yZWwocm9vdCwgVVBQRVJSRUxf RklOQUwsIE5VTEwpOwotCWJlc3RfcGF0aCA9IGdldF9jaGVhcGVzdF9mcmFjdGlvbmFsX3BhdGgo ZmluYWxfcmVsLCB0dXBsZV9mcmFjdGlvbik7Ci0KLQl0b3BfcGxhbiA9IGNyZWF0ZV9wbGFuKHJv b3QsIGJlc3RfcGF0aCk7CisJUGxhbm5lckdsb2JhbCAqZ2xvYiA9IHJvb3QtPmdsb2I7CiAKIAkv KgogCSAqIElmIGNyZWF0aW5nIGEgcGxhbiBmb3IgYSBzY3JvbGxhYmxlIGN1cnNvciwgbWFrZSBz dXJlIGl0IGNhbiBydW4KQEAgLTQyNiw4ICsyOTcsOCBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5 ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAkg Ki8KIAlpZiAoY3Vyc29yT3B0aW9ucyAmIENVUlNPUl9PUFRfU0NST0xMKQogCXsKLQkJaWYgKCFF eGVjU3VwcG9ydHNCYWNrd2FyZFNjYW4odG9wX3BsYW4pKQotCQkJdG9wX3BsYW4gPSBtYXRlcmlh bGl6ZV9maW5pc2hlZF9wbGFuKHRvcF9wbGFuKTsKKwkJaWYgKCFFeGVjU3VwcG9ydHNCYWNrd2Fy ZFNjYW4ocGxhbikpCisJCQlwbGFuID0gbWF0ZXJpYWxpemVfZmluaXNoZWRfcGxhbihwbGFuKTsK IAl9CiAKIAkvKgpAQCAtNDQzLDI1ICszMTQsMjUgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAq cGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJICog RVhQTEFJTiB0byBoaWRlLCBzbyBza2lwIGl0IHdoZW4gZGVidWdfcGFyYWxsZWxfcXVlcnkgPSBy ZWdyZXNzLgogCSAqLwogCWlmIChkZWJ1Z19wYXJhbGxlbF9xdWVyeSAhPSBERUJVR19QQVJBTExF TF9PRkYgJiYKLQkJdG9wX3BsYW4tPnBhcmFsbGVsX3NhZmUgJiYKLQkJKHRvcF9wbGFuLT5pbml0 UGxhbiA9PSBOSUwgfHwKKwkJcGxhbi0+cGFyYWxsZWxfc2FmZSAmJgorCQkocGxhbi0+aW5pdFBs YW4gPT0gTklMIHx8CiAJCSBkZWJ1Z19wYXJhbGxlbF9xdWVyeSAhPSBERUJVR19QQVJBTExFTF9S RUdSRVNTKSkKIAl7CiAJCUdhdGhlcgkgICAqZ2F0aGVyID0gbWFrZU5vZGUoR2F0aGVyKTsKIAkJ Q29zdAkJaW5pdHBsYW5fY29zdDsKIAkJYm9vbAkJdW5zYWZlX2luaXRwbGFuczsKIAotCQlnYXRo ZXItPnBsYW4udGFyZ2V0bGlzdCA9IHRvcF9wbGFuLT50YXJnZXRsaXN0OworCQlnYXRoZXItPnBs YW4udGFyZ2V0bGlzdCA9IHBsYW4tPnRhcmdldGxpc3Q7CiAJCWdhdGhlci0+cGxhbi5xdWFsID0g TklMOwotCQlnYXRoZXItPnBsYW4ubGVmdHRyZWUgPSB0b3BfcGxhbjsKKwkJZ2F0aGVyLT5wbGFu LmxlZnR0cmVlID0gcGxhbjsKIAkJZ2F0aGVyLT5wbGFuLnJpZ2h0dHJlZSA9IE5VTEw7CiAJCWdh dGhlci0+bnVtX3dvcmtlcnMgPSAxOwogCQlnYXRoZXItPnNpbmdsZV9jb3B5ID0gdHJ1ZTsKIAkJ Z2F0aGVyLT5pbnZpc2libGUgPSAoZGVidWdfcGFyYWxsZWxfcXVlcnkgPT0gREVCVUdfUEFSQUxM RUxfUkVHUkVTUyk7CiAKIAkJLyogVHJhbnNmZXIgYW55IGluaXRQbGFucyB0byB0aGUgbmV3IHRv cCBub2RlICovCi0JCWdhdGhlci0+cGxhbi5pbml0UGxhbiA9IHRvcF9wbGFuLT5pbml0UGxhbjsK LQkJdG9wX3BsYW4tPmluaXRQbGFuID0gTklMOworCQlnYXRoZXItPnBsYW4uaW5pdFBsYW4gPSBw bGFuLT5pbml0UGxhbjsKKwkJcGxhbi0+aW5pdFBsYW4gPSBOSUw7CiAKIAkJLyoKIAkJICogU2lu Y2UgdGhpcyBHYXRoZXIgaGFzIG5vIHBhcmFsbGVsLWF3YXJlIGRlc2NlbmRhbnRzIHRvIHNpZ25h bCB0bywKQEAgLTQ3MywyOCArMzQ0LDI4IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNl LCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCQkgKiBJZGVh bGx5IHdlJ2QgdXNlIGNvc3RfZ2F0aGVyIGhlcmUsIGJ1dCBzZXR0aW5nIHVwIGR1bW15IHBhdGgg ZGF0YQogCQkgKiB0byBzYXRpc2Z5IGl0IGRvZXNuJ3Qgc2VlbSBtdWNoIGNsZWFuZXIgdGhhbiBr bm93aW5nIHdoYXQgaXQgZG9lcy4KIAkJICovCi0JCWdhdGhlci0+cGxhbi5zdGFydHVwX2Nvc3Qg PSB0b3BfcGxhbi0+c3RhcnR1cF9jb3N0ICsKKwkJZ2F0aGVyLT5wbGFuLnN0YXJ0dXBfY29zdCA9 IHBsYW4tPnN0YXJ0dXBfY29zdCArCiAJCQlwYXJhbGxlbF9zZXR1cF9jb3N0OwotCQlnYXRoZXIt PnBsYW4udG90YWxfY29zdCA9IHRvcF9wbGFuLT50b3RhbF9jb3N0ICsKLQkJCXBhcmFsbGVsX3Nl dHVwX2Nvc3QgKyBwYXJhbGxlbF90dXBsZV9jb3N0ICogdG9wX3BsYW4tPnBsYW5fcm93czsKLQkJ Z2F0aGVyLT5wbGFuLnBsYW5fcm93cyA9IHRvcF9wbGFuLT5wbGFuX3Jvd3M7Ci0JCWdhdGhlci0+ cGxhbi5wbGFuX3dpZHRoID0gdG9wX3BsYW4tPnBsYW5fd2lkdGg7CisJCWdhdGhlci0+cGxhbi50 b3RhbF9jb3N0ID0gcGxhbi0+dG90YWxfY29zdCArCisJCQlwYXJhbGxlbF9zZXR1cF9jb3N0ICsg cGFyYWxsZWxfdHVwbGVfY29zdCAqIHBsYW4tPnBsYW5fcm93czsKKwkJZ2F0aGVyLT5wbGFuLnBs YW5fcm93cyA9IHBsYW4tPnBsYW5fcm93czsKKwkJZ2F0aGVyLT5wbGFuLnBsYW5fd2lkdGggPSBw bGFuLT5wbGFuX3dpZHRoOwogCQlnYXRoZXItPnBsYW4ucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsK IAkJZ2F0aGVyLT5wbGFuLnBhcmFsbGVsX3NhZmUgPSBmYWxzZTsKIAogCQkvKgotCQkgKiBEZWxl dGUgdGhlIGluaXRwbGFucycgY29zdCBmcm9tIHRvcF9wbGFuLiAgV2UgbmVlZG4ndCBhZGQgaXQg dG8gdGhlCisJCSAqIERlbGV0ZSB0aGUgaW5pdHBsYW5zJyBjb3N0IGZyb20gcGxhbi4gIFdlIG5l ZWRuJ3QgYWRkIGl0IHRvIHRoZQogCQkgKiBHYXRoZXIgbm9kZSwgc2luY2UgdGhlIGFib3ZlIGNv ZGluZyBhbHJlYWR5IGluY2x1ZGVkIGl0IHRoZXJlLgogCQkgKi8KIAkJU1NfY29tcHV0ZV9pbml0 cGxhbl9jb3N0KGdhdGhlci0+cGxhbi5pbml0UGxhbiwKIAkJCQkJCQkJICZpbml0cGxhbl9jb3N0 LCAmdW5zYWZlX2luaXRwbGFucyk7Ci0JCXRvcF9wbGFuLT5zdGFydHVwX2Nvc3QgLT0gaW5pdHBs YW5fY29zdDsKLQkJdG9wX3BsYW4tPnRvdGFsX2Nvc3QgLT0gaW5pdHBsYW5fY29zdDsKKwkJcGxh bi0+c3RhcnR1cF9jb3N0IC09IGluaXRwbGFuX2Nvc3Q7CisJCXBsYW4tPnRvdGFsX2Nvc3QgLT0g aW5pdHBsYW5fY29zdDsKIAogCQkvKiB1c2UgcGFyYWxsZWwgbW9kZSBmb3IgcGFyYWxsZWwgcGxh bnMuICovCi0JCXJvb3QtPmdsb2ItPnBhcmFsbGVsTW9kZU5lZWRlZCA9IHRydWU7CisJCWdsb2It PnBhcmFsbGVsTW9kZU5lZWRlZCA9IHRydWU7CiAKLQkJdG9wX3BsYW4gPSAmZ2F0aGVyLT5wbGFu OworCQlwbGFuID0gJmdhdGhlci0+cGxhbjsKIAl9CiAKIAkvKgpAQCAtNTEzLDcgKzM4NCw3IEBA IHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcs IGludCBjdXJzb3JPcHRpb25zLAogCiAJCQlTU19maW5hbGl6ZV9wbGFuKHN1YnJvb3QsIHN1YnBs YW4pOwogCQl9Ci0JCVNTX2ZpbmFsaXplX3BsYW4ocm9vdCwgdG9wX3BsYW4pOworCQlTU19maW5h bGl6ZV9wbGFuKHJvb3QsIHBsYW4pOwogCX0KIAogCS8qIGZpbmFsIGNsZWFudXAgb2YgdGhlIHBs YW4gKi8KQEAgLTUyMiw3ICszOTMsNyBAQCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwg Y29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAlBc3NlcnQoZ2xv Yi0+ZmluYWxyb3dtYXJrcyA9PSBOSUwpOwogCUFzc2VydChnbG9iLT5yZXN1bHRSZWxhdGlvbnMg PT0gTklMKTsKIAlBc3NlcnQoZ2xvYi0+YXBwZW5kUmVsYXRpb25zID09IE5JTCk7Ci0JdG9wX3Bs YW4gPSBzZXRfcGxhbl9yZWZlcmVuY2VzKHJvb3QsIHRvcF9wbGFuKTsKKwlwbGFuID0gc2V0X3Bs YW5fcmVmZXJlbmNlcyhyb290LCBwbGFuKTsKIAkvKiAuLi4gYW5kIHRoZSBzdWJwbGFucyAoYm90 aCByZWd1bGFyIHN1YnBsYW5zIGFuZCBpbml0cGxhbnMpICovCiAJQXNzZXJ0KGxpc3RfbGVuZ3Ro KGdsb2ItPnN1YnBsYW5zKSA9PSBsaXN0X2xlbmd0aChnbG9iLT5zdWJyb290cykpOwogCWZvcmJv dGgobHAsIGdsb2ItPnN1YnBsYW5zLCBsciwgZ2xvYi0+c3Vicm9vdHMpCkBAIC01NDQsNyArNDE1 LDcgQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT50cmFuc2llbnRQbGFuID0gZ2xvYi0+ dHJhbnNpZW50UGxhbjsKIAlyZXN1bHQtPmRlcGVuZHNPblJvbGUgPSBnbG9iLT5kZXBlbmRzT25S b2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVl ZGVkOwotCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKKwlyZXN1bHQtPnBsYW5UcmVlID0g cGxhbjsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOwogCXJlc3VsdC0+cGVy bUluZm9zID0gZ2xvYi0+ZmluYWxydGVwZXJtaW5mb3M7CiAJcmVzdWx0LT5yZXN1bHRSZWxhdGlv bnMgPSBnbG9iLT5yZXN1bHRSZWxhdGlvbnM7CkBAIC01NjIsNyArNDMzLDcgQEAgc3RhbmRhcmRf cGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNv ck9wdGlvbnMsCiAKIAlyZXN1bHQtPmppdEZsYWdzID0gUEdKSVRfTk9ORTsKIAlpZiAoaml0X2Vu YWJsZWQgJiYgaml0X2Fib3ZlX2Nvc3QgPj0gMCAmJgotCQl0b3BfcGxhbi0+dG90YWxfY29zdCA+ IGppdF9hYm92ZV9jb3N0KQorCQlwbGFuLT50b3RhbF9jb3N0ID4gaml0X2Fib3ZlX2Nvc3QpCiAJ ewogCQlyZXN1bHQtPmppdEZsYWdzIHw9IFBHSklUX1BFUkZPUk07CiAKQEAgLTU3MCwxMCArNDQx LDEwIEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9z dHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCQkgKiBEZWNpZGUgaG93IG11Y2ggZWZmb3J0IHNo b3VsZCBiZSBwdXQgaW50byBnZW5lcmF0aW5nIGJldHRlciBjb2RlLgogCQkgKi8KIAkJaWYgKGpp dF9vcHRpbWl6ZV9hYm92ZV9jb3N0ID49IDAgJiYKLQkJCXRvcF9wbGFuLT50b3RhbF9jb3N0ID4g aml0X29wdGltaXplX2Fib3ZlX2Nvc3QpCisJCQlwbGFuLT50b3RhbF9jb3N0ID4gaml0X29wdGlt aXplX2Fib3ZlX2Nvc3QpCiAJCQlyZXN1bHQtPmppdEZsYWdzIHw9IFBHSklUX09QVDM7CiAJCWlm IChqaXRfaW5saW5lX2Fib3ZlX2Nvc3QgPj0gMCAmJgotCQkJdG9wX3BsYW4tPnRvdGFsX2Nvc3Qg PiBqaXRfaW5saW5lX2Fib3ZlX2Nvc3QpCisJCQlwbGFuLT50b3RhbF9jb3N0ID4gaml0X2lubGlu ZV9hYm92ZV9jb3N0KQogCQkJcmVzdWx0LT5qaXRGbGFncyB8PSBQR0pJVF9JTkxJTkU7CiAKIAkJ LyoKQEAgLTU5MSw2ICs0NjIsMjI1IEBAIHN0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBj b25zdCBjaGFyICpxdWVyeV9zdHJpbmcsIGludCBjdXJzb3JPcHRpb25zLAogCXJldHVybiByZXN1 bHQ7CiB9CiAKK3N0YXRpYyBQbGFubmVyR2xvYmFsICoKK3NldHVwX3BsYW5uZXJfZ2xvYmFsKFF1 ZXJ5ICpwYXJzZSwgaW50IGN1cnNvck9wdGlvbnMsIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMs IGJvb2wga2VlcEFsbENhbmRpZGF0ZXMpCit7CisJUGxhbm5lckdsb2JhbCAqZ2xvYjsKKworCS8q CisJICogU2V0IHVwIGdsb2JhbCBzdGF0ZSBmb3IgdGhpcyBwbGFubmVyIGludm9jYXRpb24uICBU aGlzIGRhdGEgaXMgbmVlZGVkCisJICogYWNyb3NzIGFsbCBsZXZlbHMgb2Ygc3ViLVF1ZXJ5IHRo YXQgbWlnaHQgZXhpc3QgaW4gdGhlIGdpdmVuIGNvbW1hbmQsCisJICogc28gd2Uga2VlcCBpdCBp biBhIHNlcGFyYXRlIHN0cnVjdCB0aGF0J3MgbGlua2VkIHRvIGJ5IGVhY2ggcGVyLVF1ZXJ5CisJ ICogUGxhbm5lckluZm8uCisJICovCisJZ2xvYiA9IG1ha2VOb2RlKFBsYW5uZXJHbG9iYWwpOwor CisJZ2xvYi0+Ym91bmRQYXJhbXMgPSBib3VuZFBhcmFtczsKKwlnbG9iLT5zdWJwbGFucyA9IE5J TDsKKwlnbG9iLT5zdWJwYXRocyA9IE5JTDsKKwlnbG9iLT5zdWJyb290cyA9IE5JTDsKKwlnbG9i LT5yZXdpbmRQbGFuSURzID0gTlVMTDsKKwlnbG9iLT5maW5hbHJ0YWJsZSA9IE5JTDsKKwlnbG9i LT5maW5hbHJ0ZXBlcm1pbmZvcyA9IE5JTDsKKwlnbG9iLT5maW5hbHJvd21hcmtzID0gTklMOwor CWdsb2ItPnJlc3VsdFJlbGF0aW9ucyA9IE5JTDsKKwlnbG9iLT5hcHBlbmRSZWxhdGlvbnMgPSBO SUw7CisJZ2xvYi0+cmVsYXRpb25PaWRzID0gTklMOworCWdsb2ItPmludmFsSXRlbXMgPSBOSUw7 CisJZ2xvYi0+cGFyYW1FeGVjVHlwZXMgPSBOSUw7CisJZ2xvYi0+bGFzdFBISWQgPSAwOworCWds b2ItPmxhc3RSb3dNYXJrSWQgPSAwOworCWdsb2ItPmxhc3RQbGFuTm9kZUlkID0gMDsKKwlnbG9i LT50cmFuc2llbnRQbGFuID0gZmFsc2U7CisJZ2xvYi0+ZGVwZW5kc09uUm9sZSA9IGZhbHNlOwor CWdsb2ItPmtlZXBBbGxDYW5kaWRhdGVzID0ga2VlcEFsbENhbmRpZGF0ZXM7CisKKwkvKgorCSAq IEFzc2VzcyB3aGV0aGVyIGl0J3MgZmVhc2libGUgdG8gdXNlIHBhcmFsbGVsIG1vZGUgZm9yIHRo aXMgcXVlcnkuIFdlCisJICogY2FuJ3QgZG8gdGhpcyBpbiBhIHN0YW5kYWxvbmUgYmFja2VuZCwg b3IgaWYgdGhlIGNvbW1hbmQgd2lsbCB0cnkgdG8KKwkgKiBtb2RpZnkgYW55IGRhdGEsIG9yIGlm IHRoaXMgaXMgYSBjdXJzb3Igb3BlcmF0aW9uLCBvciBpZiBHVUNzIGFyZSBzZXQKKwkgKiB0byB2 YWx1ZXMgdGhhdCBkb24ndCBwZXJtaXQgcGFyYWxsZWxpc20sIG9yIGlmIHBhcmFsbGVsLXVuc2Fm ZQorCSAqIGZ1bmN0aW9ucyBhcmUgcHJlc2VudCBpbiB0aGUgcXVlcnkgdHJlZS4KKwkgKgorCSAq IChOb3RlIHRoYXQgd2UgZG8gYWxsb3cgQ1JFQVRFIFRBQkxFIEFTLCBTRUxFQ1QgSU5UTywgYW5k IENSRUFURQorCSAqIE1BVEVSSUFMSVpFRCBWSUVXIHRvIHVzZSBwYXJhbGxlbCBwbGFucywgYnV0 IHRoaXMgaXMgc2FmZSBvbmx5IGJlY2F1c2UKKwkgKiB0aGUgY29tbWFuZCBpcyB3cml0aW5nIGlu dG8gYSBjb21wbGV0ZWx5IG5ldyB0YWJsZSB3aGljaCB3b3JrZXJzIHdvbid0CisJICogYmUgYWJs ZSB0byBzZWUuICBJZiB0aGUgd29ya2VycyBjb3VsZCBzZWUgdGhlIHRhYmxlLCB0aGUgZmFjdCB0 aGF0CisJICogZ3JvdXAgbG9ja2luZyB3b3VsZCBjYXVzZSB0aGVtIHRvIGlnbm9yZSB0aGUgbGVh ZGVyJ3MgaGVhdnl3ZWlnaHQgR0lOCisJICogcGFnZSBsb2NrcyB3b3VsZCBtYWtlIHRoaXMgdW5z YWZlLiAgV2UnbGwgaGF2ZSB0byBmaXggdGhhdCBzb21laG93IGlmCisJICogd2Ugd2FudCB0byBh bGxvdyBwYXJhbGxlbCBpbnNlcnRzIGluIGdlbmVyYWw7IHVwZGF0ZXMgYW5kIGRlbGV0ZXMgaGF2 ZQorCSAqIGFkZGl0aW9uYWwgcHJvYmxlbXMgZXNwZWNpYWxseSBhcm91bmQgY29tYm8gQ0lEcy4p CisJICoKKwkgKiBGb3Igbm93LCB3ZSBkb24ndCB0cnkgdG8gdXNlIHBhcmFsbGVsIG1vZGUgaWYg d2UncmUgcnVubmluZyBpbnNpZGUgYQorCSAqIHBhcmFsbGVsIHdvcmtlci4gIFdlIG1pZ2h0IGV2 ZW50dWFsbHkgYmUgYWJsZSB0byByZWxheCB0aGlzCisJICogcmVzdHJpY3Rpb24sIGJ1dCBmb3Ig bm93IGl0IHNlZW1zIGJlc3Qgbm90IHRvIGhhdmUgcGFyYWxsZWwgd29ya2VycworCSAqIHRyeWlu ZyB0byBjcmVhdGUgdGhlaXIgb3duIHBhcmFsbGVsIHdvcmtlcnMuCisJICovCisJaWYgKChjdXJz b3JPcHRpb25zICYgQ1VSU09SX09QVF9QQVJBTExFTF9PSykgIT0gMCAmJgorCQlJc1VuZGVyUG9z dG1hc3RlciAmJgorCQlwYXJzZS0+Y29tbWFuZFR5cGUgPT0gQ01EX1NFTEVDVCAmJgorCQkhcGFy c2UtPmhhc01vZGlmeWluZ0NURSAmJgorCQltYXhfcGFyYWxsZWxfd29ya2Vyc19wZXJfZ2F0aGVy ID4gMCAmJgorCQkhSXNQYXJhbGxlbFdvcmtlcigpKQorCXsKKwkJLyogYWxsIHRoZSBjaGVhcCB0 ZXN0cyBwYXNzLCBzbyBzY2FuIHRoZSBxdWVyeSB0cmVlICovCisJCWdsb2ItPm1heFBhcmFsbGVs SGF6YXJkID0gbWF4X3BhcmFsbGVsX2hhemFyZChwYXJzZSk7CisJCWdsb2ItPnBhcmFsbGVsTW9k ZU9LID0gKGdsb2ItPm1heFBhcmFsbGVsSGF6YXJkICE9IFBST1BBUkFMTEVMX1VOU0FGRSk7CisJ fQorCWVsc2UKKwl7CisJCS8qIHNraXAgdGhlIHF1ZXJ5IHRyZWUgc2NhbiwganVzdCBhc3N1bWUg aXQncyB1bnNhZmUgKi8KKwkJZ2xvYi0+bWF4UGFyYWxsZWxIYXphcmQgPSBQUk9QQVJBTExFTF9V TlNBRkU7CisJCWdsb2ItPnBhcmFsbGVsTW9kZU9LID0gZmFsc2U7CisJfQorCisJLyoKKwkgKiBn bG9iLT5wYXJhbGxlbE1vZGVOZWVkZWQgaXMgbm9ybWFsbHkgc2V0IHRvIGZhbHNlIGhlcmUgYW5k IGNoYW5nZWQgdG8KKwkgKiB0cnVlIGR1cmluZyBwbGFuIGNyZWF0aW9uIGlmIGEgR2F0aGVyIG9y IEdhdGhlciBNZXJnZSBwbGFuIGlzIGFjdHVhbGx5CisJICogY3JlYXRlZCAoY2YuIGNyZWF0ZV9n YXRoZXJfcGxhbiwgY3JlYXRlX2dhdGhlcl9tZXJnZV9wbGFuKS4KKwkgKgorCSAqIEhvd2V2ZXIs IGlmIGRlYnVnX3BhcmFsbGVsX3F1ZXJ5ID0gb24gb3IgZGVidWdfcGFyYWxsZWxfcXVlcnkgPQor CSAqIHJlZ3Jlc3MsIHRoZW4gd2UgaW1wb3NlIHBhcmFsbGVsIG1vZGUgd2hlbmV2ZXIgaXQncyBz YWZlIHRvIGRvIHNvLCBldmVuCisJICogaWYgdGhlIGZpbmFsIHBsYW4gZG9lc24ndCB1c2UgcGFy YWxsZWxpc20uICBJdCdzIG5vdCBzYWZlIHRvIGRvIHNvIGlmCisJICogdGhlIHF1ZXJ5IGNvbnRh aW5zIGFueXRoaW5nIHBhcmFsbGVsLXVuc2FmZTsgcGFyYWxsZWxNb2RlT0sgd2lsbCBiZQorCSAq IGZhbHNlIGluIHRoYXQgY2FzZS4gIE5vdGUgdGhhdCBwYXJhbGxlbE1vZGVPSyBjYW4ndCBjaGFu Z2UgYWZ0ZXIgdGhpcworCSAqIHBvaW50LiBPdGhlcndpc2UsIGV2ZXJ5dGhpbmcgaW4gdGhlIHF1 ZXJ5IGlzIGVpdGhlciBwYXJhbGxlbC1zYWZlIG9yCisJICogcGFyYWxsZWwtcmVzdHJpY3RlZCwg YW5kIGluIGVpdGhlciBjYXNlIGl0IHNob3VsZCBiZSBPSyB0byBpbXBvc2UKKwkgKiBwYXJhbGxl bC1tb2RlIHJlc3RyaWN0aW9ucy4gIElmIHRoYXQgZW5kcyB1cCBicmVha2luZyBzb21ldGhpbmcs IHRoZW4KKwkgKiBlaXRoZXIgc29tZSBmdW5jdGlvbiB0aGUgdXNlciBpbmNsdWRlZCBpbiB0aGUg cXVlcnkgaXMgaW5jb3JyZWN0bHkKKwkgKiBsYWJlbGVkIGFzIHBhcmFsbGVsLXNhZmUgb3IgcGFy YWxsZWwtcmVzdHJpY3RlZCB3aGVuIGluIHJlYWxpdHkgaXQncworCSAqIHBhcmFsbGVsLXVuc2Fm ZSwgb3IgZWxzZSB0aGUgcXVlcnkgcGxhbm5lciBpdHNlbGYgaGFzIGEgYnVnLgorCSAqLworCWds b2ItPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGdsb2ItPnBhcmFsbGVsTW9kZU9LICYmCisJCShkZWJ1 Z19wYXJhbGxlbF9xdWVyeSAhPSBERUJVR19QQVJBTExFTF9PRkYpOworCXJldHVybiBnbG9iOwor fQorCitzdGF0aWMgZG91YmxlCitjb21wdXRlX3R1cGxlX2ZyYWN0aW9uKGludCBjdXJzb3JPcHRp b25zKQoreworCWRvdWJsZQkJdHVwbGVfZnJhY3Rpb247CisKKwkvKiBEZXRlcm1pbmUgd2hhdCBm cmFjdGlvbiBvZiB0aGUgcGxhbiBpcyBsaWtlbHkgdG8gYmUgc2Nhbm5lZCAqLworCWlmIChjdXJz b3JPcHRpb25zICYgQ1VSU09SX09QVF9GQVNUX1BMQU4pCisJeworCQkvKgorCQkgKiBXZSBoYXZl IG5vIHJlYWwgaWRlYSBob3cgbWFueSB0dXBsZXMgdGhlIHVzZXIgd2lsbCB1bHRpbWF0ZWx5IEZF VENICisJCSAqIGZyb20gYSBjdXJzb3IsIGJ1dCBpdCBpcyBvZnRlbiB0aGUgY2FzZSB0aGF0IGhl IGRvZXNuJ3Qgd2FudCAnZW0KKwkJICogYWxsLCBvciB3b3VsZCBwcmVmZXIgYSBmYXN0LXN0YXJ0 IHBsYW4gYW55d2F5IHNvIHRoYXQgaGUgY2FuCisJCSAqIHByb2Nlc3Mgc29tZSBvZiB0aGUgdHVw bGVzIHNvb25lci4gIFVzZSBhIEdVQyBwYXJhbWV0ZXIgdG8gZGVjaWRlCisJCSAqIHdoYXQgZnJh Y3Rpb24gdG8gb3B0aW1pemUgZm9yLgorCQkgKi8KKwkJdHVwbGVfZnJhY3Rpb24gPSBjdXJzb3Jf dHVwbGVfZnJhY3Rpb247CisKKwkJLyoKKwkJICogV2UgZG9jdW1lbnQgY3Vyc29yX3R1cGxlX2Zy YWN0aW9uIGFzIHNpbXBseSBiZWluZyBhIGZyYWN0aW9uLCB3aGljaAorCQkgKiBtZWFucyB0aGUg ZWRnZSBjYXNlcyAwIGFuZCAxIGhhdmUgdG8gYmUgdHJlYXRlZCBzcGVjaWFsbHkgaGVyZS4gIFdl CisJCSAqIGNvbnZlcnQgMSB0byAwICgiYWxsIHRoZSB0dXBsZXMiKSBhbmQgMCB0byBhIHZlcnkg c21hbGwgZnJhY3Rpb24uCisJCSAqLworCQlpZiAodHVwbGVfZnJhY3Rpb24gPj0gMS4wKQorCQkJ dHVwbGVfZnJhY3Rpb24gPSAwLjA7CisJCWVsc2UgaWYgKHR1cGxlX2ZyYWN0aW9uIDw9IDAuMCkK KwkJCXR1cGxlX2ZyYWN0aW9uID0gMWUtMTA7CisJfQorCWVsc2UKKwl7CisJCS8qIERlZmF1bHQg YXNzdW1wdGlvbiBpcyB3ZSBuZWVkIGFsbCB0aGUgdHVwbGVzICovCisJCXR1cGxlX2ZyYWN0aW9u ID0gMC4wOworCX0KKwlyZXR1cm4gdHVwbGVfZnJhY3Rpb247Cit9CisKK1BsYW5uZWRTdG10ICoK K3N0YW5kYXJkX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcs IGludCBjdXJzb3JPcHRpb25zLAorCQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKQorewor CVBsYW5uZWRTdG10ICpyZXN1bHQ7CisJUGxhbm5lckdsb2JhbCAqZ2xvYjsKKwlkb3VibGUJCXR1 cGxlX2ZyYWN0aW9uOworCVBsYW5uZXJJbmZvICpyb290OworCVJlbE9wdEluZm8gKmZpbmFsX3Jl bDsKKwlQYXRoCSAgICpiZXN0X3BhdGg7CisJUGxhbgkgICAqdG9wX3BsYW47CisKKwlnbG9iID0g c2V0dXBfcGxhbm5lcl9nbG9iYWwocGFyc2UsIGN1cnNvck9wdGlvbnMsIGJvdW5kUGFyYW1zLCBm YWxzZSk7CisJdHVwbGVfZnJhY3Rpb24gPSBjb21wdXRlX3R1cGxlX2ZyYWN0aW9uKGN1cnNvck9w dGlvbnMpOworCisJLyogcHJpbWFyeSBwbGFubmluZyBlbnRyeSBwb2ludCAobWF5IHJlY3Vyc2Ug Zm9yIHN1YnF1ZXJpZXMpICovCisJcm9vdCA9IHN1YnF1ZXJ5X3BsYW5uZXIoZ2xvYiwgcGFyc2Us IE5VTEwsIGZhbHNlLCB0dXBsZV9mcmFjdGlvbiwgTlVMTCk7CisKKwkvKiBTZWxlY3QgYmVzdCBQ YXRoIGFuZCB0dXJuIGl0IGludG8gYSBQbGFuICovCisJZmluYWxfcmVsID0gZmV0Y2hfdXBwZXJf cmVsKHJvb3QsIFVQUEVSUkVMX0ZJTkFMLCBOVUxMKTsKKworCisJYmVzdF9wYXRoID0gZ2V0X2No ZWFwZXN0X2ZyYWN0aW9uYWxfcGF0aChmaW5hbF9yZWwsIHR1cGxlX2ZyYWN0aW9uKTsKKworCXRv cF9wbGFuID0gY3JlYXRlX3BsYW4ocm9vdCwgYmVzdF9wYXRoKTsKKwlyZXN1bHQgPSBjcmVhdGVf cGxhbm5lZF9zdG10KHJvb3QsIHBhcnNlLCB0b3BfcGxhbiwgY3Vyc29yT3B0aW9ucyk7CisKKwly ZXR1cm4gcmVzdWx0OworfQorCisvKgorICogcGxhbm5lcl9hbGxfY2FuZGlkYXRlcworICogCQlC dWlsZCB0aGUgbGlzdCBvZiBhbGwgY2FuZGlkYXRlIFBsYW5uZWRTdG10CisgKgorICogV2l0aCBB TExfQ0FORElEQVRFUyBleHBsYWluIG9wdGlvbiwgYSBsaXN0IG9mIFBsYW5uZWRTdG10IGlzIGJ1 aWx0IGZvcgorICogYWxsIHBvc3NpYmxlIHBhdGggZnJvbSB0aGUgdXBwZXJfcmVsLgorICovCitM aXN0ICoKK3BsYW5uZXJfYWxsX2NhbmRpZGF0ZXMoUXVlcnkgKnBhcnNlLCBpbnQgY3Vyc29yT3B0 aW9ucywgUGFyYW1MaXN0SW5mbyBib3VuZFBhcmFtcykKK3sKKwlMaXN0CSAgICpyZXN1bHQgPSBO VUxMOworCWRvdWJsZQkJdHVwbGVfZnJhY3Rpb247CisJUXVlcnkJICAgKmJhc2VfcGFyc2U7CisJ UmVsT3B0SW5mbyAqdXBwZXJfcmVsOworCWludAkJCWN1cnJlbnRfcGF0aF9pbmRleCA9IDA7CisK KwkvKgorCSAqIFBhcnNlIG1heSBiZSBtb2RpZmllZCBieSBwbGFubmVyLCBzYXZlIGEgY29weSBv ZiB0aGUgaW5pdGlhbCBwYXJzZQorCSAqIHN0YXRlCisJICovCisJYmFzZV9wYXJzZSA9IGNvcHlP YmplY3QocGFyc2UpOworCXR1cGxlX2ZyYWN0aW9uID0gY29tcHV0ZV90dXBsZV9mcmFjdGlvbihj dXJzb3JPcHRpb25zKTsKKworCWRvCisJeworCQlQbGFuCSAgICpwbGFuOworCQlQbGFubmVkU3Rt dCAqcGxhbm5lZF9zdG10OworCQlQYXRoCSAgICpwYXRoOworCQlQbGFubmVyR2xvYmFsICpnbG9i OworCQlQbGFubmVySW5mbyAqcm9vdDsKKworCQkvKgorCQkgKiBEdXJpbmcgcGxhbm5pbmcsIHBh cnNlLCBnbG9iIGFuZCBwYXRoIG1heSBiZSBtb2RpZmllZC4gV2UgbmVlZCB0bworCQkgKiBjcmVh dGUgb24gYSBjb3B5IG9mIHRob3NlIGZvciBhbGwgcGxhbm5lZF9zdG10IHdlIGNyZWF0ZS4gSG93 ZXZlciwKKwkJICogd2UgY2FuJ3QgdXNlIGNvcHlPYmplY3Qgb24gUGxhbm5lckluZm8uIFRoZSBj dXJyZW50IHNvbHV0aW9uIGlzIHRvCisJCSAqIHJlZG8gdGhlIHdob2xlIHBsYW5uaW5nIGZvciBl dmVyeSBwbGFuIHdlIGNyZWF0ZS4KKwkJICovCisJCXBhcnNlID0gY29weU9iamVjdChiYXNlX3Bh cnNlKTsKKwkJZ2xvYiA9IHNldHVwX3BsYW5uZXJfZ2xvYmFsKHBhcnNlLCBjdXJzb3JPcHRpb25z LCBib3VuZFBhcmFtcywgdHJ1ZSk7CisJCS8qIFJ1biB0aGUgcGxhbm5lciAqLworCQlyb290ID0g c3VicXVlcnlfcGxhbm5lcihnbG9iLCBwYXJzZSwgTlVMTCwgZmFsc2UsIHR1cGxlX2ZyYWN0aW9u LCBOVUxMKTsKKworCQkvKiBHZXQgdGhlIHBhdGggKi8KKwkJdXBwZXJfcmVsID0gZmV0Y2hfdXBw ZXJfcmVsKHJvb3QsIFVQUEVSUkVMX0ZJTkFMLCBOVUxMKTsKKwkJaWYgKGN1cnJlbnRfcGF0aF9p bmRleCA+PSB1cHBlcl9yZWwtPnBhdGhsaXN0LT5sZW5ndGgpCisJCXsKKwkJCS8qIFBsYW5uZXIg Z2VuZXJhdGVkIGEgZGlmZmVyZW50IG51bWJlciBvZiBwYXRoLCBiYWlsIG91dCAqLworCQkJYnJl YWs7CisJCX0KKwkJcGF0aCA9IChQYXRoICopIGxpc3RfbnRoKHVwcGVyX3JlbC0+cGF0aGxpc3Qs IGN1cnJlbnRfcGF0aF9pbmRleCsrKTsKKworCQkvKiBDcmVhdGUgdGhlIHBsYW4gZnJvbSB0aGUg cGF0aCAqLworCQlwbGFuID0gY3JlYXRlX3BsYW4ocm9vdCwgcGF0aCk7CisJCXBsYW5uZWRfc3Rt dCA9IGNyZWF0ZV9wbGFubmVkX3N0bXQocm9vdCwgcGFyc2UsIHBsYW4sIGN1cnNvck9wdGlvbnMp OworCQkvKiBBZGQgaXQgdG8gdGhlIGxpc3QgKi8KKwkJcmVzdWx0ID0gbGNvbnMocGxhbm5lZF9z dG10LCByZXN1bHQpOworCX0gd2hpbGUgKGN1cnJlbnRfcGF0aF9pbmRleCA8IHVwcGVyX3JlbC0+ cGF0aGxpc3QtPmxlbmd0aCk7CisKKwlyZXR1cm4gcmVzdWx0OworfQogCiAvKi0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKiBzdWJxdWVyeV9wbGFubmVyCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0 aG5vZGUuYwppbmRleCA5MWQzOTRjZTYyZS4uMjYzYTllY2EwZmIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvcGF0aG5vZGUuYwpAQCAtNDMwLDYgKzQzMCwyNCBAQCBhZGRfcGF0aChQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50X3JlbCwgUGF0aCAqbmV3X3BhdGgpCiAJICov CiAJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKIAorCS8qCisJICogV2hlbiBrZWVwQWxsQ2FuZGlk YXRlcyBpcyBlbmFibGVkLCB3ZSBhbHdheXMgYWRkIHRoZSBwYXRoIGluIHRoZQorCSAqIHBhdGhs aXN0CisJICovCisJaWYgKHJvb3QtPmdsb2ItPmtlZXBBbGxDYW5kaWRhdGVzKQorCXsKKwkJZm9y ZWFjaChwMSwgcGFyZW50X3JlbC0+cGF0aGxpc3QpCisJCXsKKwkJCVBhdGgJICAgKm9sZF9wYXRo ID0gKFBhdGggKikgbGZpcnN0KHAxKTsKKworCQkJaWYgKG5ld19wYXRoLT50b3RhbF9jb3N0ID49 IG9sZF9wYXRoLT50b3RhbF9jb3N0KQorCQkJCWluc2VydF9hdCA9IGZvcmVhY2hfY3VycmVudF9p bmRleChwMSkgKyAxOworCQl9CisJCXBhcmVudF9yZWwtPnBhdGhsaXN0ID0KKwkJCWxpc3RfaW5z ZXJ0X250aChwYXJlbnRfcmVsLT5wYXRobGlzdCwgaW5zZXJ0X2F0LCBuZXdfcGF0aCk7CisJCXJl dHVybjsKKwl9CisKIAkvKiBQcmV0ZW5kIHBhcmFtZXRlcml6ZWQgcGF0aHMgaGF2ZSBubyBwYXRo a2V5cywgcGVyIGNvbW1lbnQgYWJvdmUgKi8KIAluZXdfcGF0aF9wYXRoa2V5cyA9IG5ld19wYXRo LT5wYXJhbV9pbmZvID8gTklMIDogbmV3X3BhdGgtPnBhdGhrZXlzOwogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMK aW5kZXggZWE1MTdmNGI5YmIuLmNiZmY2NmY3Nzk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC04Nzcs NiArODc3LDUwIEBAIHBnX3Jld3JpdGVfcXVlcnkoUXVlcnkgKnF1ZXJ5KQogCXJldHVybiBxdWVy eXRyZWVfbGlzdDsKIH0KIAorLyoKKyAqIEdlbmVyYXRlIGEgbGlzdCBvZiBhbGwgcGxhbiBjYW5k aWRhdGVzIGZvciBhIHNpbmdsZSBhbHJlYWR5LXJld3JpdHRlbiBxdWVyeS4KKyAqIFRoaXMgaXMg YSB0aGluIHdyYXBwZXIgYXJvdW5kIHBsYW5uZXIoKSBhbmQgdGFrZXMgdGhlIHNhbWUgcGFyYW1l dGVycy4KKyAqLworTGlzdCAqCitwZ19wbGFuX3F1ZXJ5X2FsbF9jYW5kaWRhdGVzKFF1ZXJ5ICpx dWVyeXRyZWUsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCisJ CQkJCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpCit7CisJTGlzdAkgICAqcGxhbnM7CisK KwkvKiBVdGlsaXR5IGNvbW1hbmRzIGhhdmUgbm8gcGxhbnMuICovCisJaWYgKHF1ZXJ5dHJlZS0+ Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCisJCXJldHVybiBOVUxMOworCisJLyogUGxhbm5l ciBtdXN0IGhhdmUgYSBzbmFwc2hvdCBpbiBjYXNlIGl0IGNhbGxzIHVzZXItZGVmaW5lZCBmdW5j dGlvbnMuICovCisJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJVFJBQ0VfUE9TVEdS RVNRTF9RVUVSWV9QTEFOX1NUQVJUKCk7CisKKwlpZiAobG9nX3BsYW5uZXJfc3RhdHMpCisJCVJl c2V0VXNhZ2UoKTsKKworCS8qIGNhbGwgdGhlIG9wdGltaXplciAqLworCXBsYW5zID0gcGxhbm5l cl9hbGxfY2FuZGlkYXRlcyhxdWVyeXRyZWUsIGN1cnNvck9wdGlvbnMsIGJvdW5kUGFyYW1zKTsK KworCS8qCisJICogUHJpbnQgcGxhbiBsaXN0IGlmIGRlYnVnZ2luZy4KKwkgKi8KKwlpZiAoRGVi dWdfcHJpbnRfcGxhbikKKwl7CisJCUxpc3RDZWxsICAgKmxjOworCisJCWZvcmVhY2gobGMsIHBs YW5zKQorCQl7CisJCQlQbGFuCSAgICpwbGFuID0gbGZpcnN0KGxjKTsKKworCQkJZWxvZ19ub2Rl X2Rpc3BsYXkoTE9HLCAicGxhbiIsIHBsYW4sIERlYnVnX3ByZXR0eV9wcmludCk7CisJCX0KKwl9 CisKKwlUUkFDRV9QT1NUR1JFU1FMX1FVRVJZX1BMQU5fRE9ORSgpOworCisJcmV0dXJuIHBsYW5z OworfQogCiAvKgogICogR2VuZXJhdGUgYSBwbGFuIGZvciBhIHNpbmdsZSBhbHJlYWR5LXJld3Jp dHRlbiBxdWVyeS4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYyBiL3Ny Yy9iaW4vcHNxbC90YWItY29tcGxldGUuYwppbmRleCA4OTFmYWNlMWI2NS4uYzE3MmNlN2ViOTQg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuYworKysgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmMKQEAgLTM4NzEsOCArMzg3MSw4IEBAIHBzcWxfY29tcGxldGlvbihj b25zdCBjaGFyICp0ZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpCiAJCWlmIChlbmRzX3dpdGgocHJl dl93ZCwgJygnKSB8fCBlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKIAkJCUNPTVBMRVRFX1dJVEgo IkFOQUxZWkUiLCAiVkVSQk9TRSIsICJDT1NUUyIsICJTRVRUSU5HUyIsICJHRU5FUklDX1BMQU4i LAogCQkJCQkJICAiQlVGRkVSUyIsICJTRVJJQUxJWkUiLCAiV0FMIiwgIlRJTUlORyIsICJTVU1N QVJZIiwKLQkJCQkJCSAgIk1FTU9SWSIsICJGT1JNQVQiKTsKLQkJZWxzZSBpZiAoVGFpbE1hdGNo ZXMoIkFOQUxZWkV8VkVSQk9TRXxDT1NUU3xTRVRUSU5HU3xHRU5FUklDX1BMQU58QlVGRkVSU3xX QUx8VElNSU5HfFNVTU1BUll8TUVNT1JZIikpCisJCQkJCQkgICJNRU1PUlkiLCAiQUxMX0NBTkRJ REFURVMiLCAiRk9STUFUIik7CisJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJBTkFMWVpFfFZFUkJP U0V8Q09TVFN8U0VUVElOR1N8R0VORVJJQ19QTEFOfEJVRkZFUlN8V0FMfFRJTUlOR3xTVU1NQVJZ fE1FTU9SWXxBTExfQ0FORElEQVRFUyIpKQogCQkJQ09NUExFVEVfV0lUSCgiT04iLCAiT0ZGIik7 CiAJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJTRVJJQUxJWkUiKSkKIAkJCUNPTVBMRVRFX1dJVEgo IlRFWFQiLCAiTk9ORSIsICJCSU5BUlkiKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaAppbmRleCA5Yjhi MzUxZDlhMi4uNTMwM2Y3NjIzOWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW4uaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKQEAgLTU1LDYgKzU1 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwbGFpblN0YXRlCiAJYm9vbAkJbWVtb3J5OwkJCS8qIHBy aW50IHBsYW5uZXIncyBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRpb24gKi8KIAlib29sCQlzZXR0aW5n czsJCS8qIHByaW50IG1vZGlmaWVkIHNldHRpbmdzICovCiAJYm9vbAkJZ2VuZXJpYzsJCS8qIGdl bmVyYXRlIGEgZ2VuZXJpYyBwbGFuICovCisJYm9vbAkJYWxsX2NhbmRpZGF0ZXM7IC8qIHByaW50 IGFsbCBwbGFuIGNhbmRpZGF0ZXMgKi8KIAlFeHBsYWluU2VyaWFsaXplT3B0aW9uIHNlcmlhbGl6 ZTsJLyogc2VyaWFsaXplIHRoZSBxdWVyeSdzIG91dHB1dD8gKi8KIAlFeHBsYWluRm9ybWF0IGZv cm1hdDsJCS8qIG91dHB1dCBmb3JtYXQgKi8KIAkvKiBzdGF0ZSBmb3Igb3V0cHV0IGZvcm1hdHRp bmcgLS0tIG5vdCByZXNldCBmb3IgZWFjaCBuZXcgcGxhbiB0cmVlICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rl cy5oCmluZGV4IDE0Y2NmYzFhYzFjLi43MjFkYzJmZTk5MyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgK QEAgLTE1OCw2ICsxNTgsOSBAQCB0eXBlZGVmIHN0cnVjdCBQbGFubmVyR2xvYmFsCiAJLyogcGFy YWxsZWwgbW9kZSBhY3R1YWxseSByZXF1aXJlZD8gKi8KIAlib29sCQlwYXJhbGxlbE1vZGVOZWVk ZWQ7CiAKKwkvKiBkbyBubyBkaXNjYXJkIG1vcmUgZXhwZW5zaXZlIHBsYW5zIGZyb20gcGF0aGxp c3QgKi8KKwlib29sCQlrZWVwQWxsQ2FuZGlkYXRlczsKKwogCS8qIHdvcnN0IFBST1BBUkFMTEVM IGhhemFyZCBsZXZlbCAqLwogCWNoYXIJCW1heFBhcmFsbGVsSGF6YXJkOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmggYi9zcmMvaW5jbHVkZS9vcHRpbWl6 ZXIvb3B0aW1pemVyLmgKaW5kZXggN2I2M2M1Y2Y3MTguLjVkOTI4MjY3ZGFjIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0 aW1pemVyL29wdGltaXplci5oCkBAIC0xMTUsNiArMTE1LDggQEAgZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgcGFyYWxsZWxfbGVhZGVyX3BhcnRpY2lwYXRpb247CiBleHRlcm4gc3RydWN0IFBsYW5u ZWRTdG10ICpwbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAog CQkJCQkJCQkgICBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQkJCQkJICAgc3RydWN0IFBhcmFtTGlz dEluZm9EYXRhICpib3VuZFBhcmFtcyk7CitleHRlcm4gTGlzdCAqcGxhbm5lcl9hbGxfY2FuZGlk YXRlcyhRdWVyeSAqcGFyc2UsIGludCBjdXJzb3JPcHRpb25zLAorCQkJCQkJCQkJc3RydWN0IFBh cmFtTGlzdEluZm9EYXRhICpib3VuZFBhcmFtcyk7CiAKIGV4dGVybiBFeHByICpleHByZXNzaW9u X3BsYW5uZXIoRXhwciAqZXhwcik7CiBleHRlcm4gRXhwciAqZXhwcmVzc2lvbl9wbGFubmVyX3dp dGhfZGVwcyhFeHByICpleHByLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJv dC5oIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCmluZGV4IDE0N2EyOTQ5NTBlLi41NGUz M2NmMGUxZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaApAQCAtNjIsNiArNjIsOSBAQCBleHRlcm4gTGlzdCAq cGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV93aXRoY2IoUmF3U3RtdCAqcGFyc2V0cmVlLAogZXh0ZXJu IFBsYW5uZWRTdG10ICpwZ19wbGFuX3F1ZXJ5KFF1ZXJ5ICpxdWVyeXRyZWUsIGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJICBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCQkJCQkJICBQ YXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zKTsKK2V4dGVybiBMaXN0ICpwZ19wbGFuX3F1ZXJ5X2Fs bF9jYW5kaWRhdGVzKFF1ZXJ5ICpxdWVyeXRyZWUsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywK KwkJCQkJCQkJCQkgIGludCBjdXJzb3JPcHRpb25zLAorCQkJCQkJCQkJCSAgUGFyYW1MaXN0SW5m byBib3VuZFBhcmFtcyk7CiBleHRlcm4gTGlzdCAqcGdfcGxhbl9xdWVyaWVzKExpc3QgKnF1ZXJ5 dHJlZXMsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgaW50IGN1cnNvck9wdGlv bnMsCiAJCQkJCQkJIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMpOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9leHBsYWluLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvZXhwbGFpbi5vdXQKaW5kZXggNjU4NWM2YTY5ZWYuLjQxOGE3YjEyNjIxIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2V4cGxhaW4ub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvZXhwbGFpbi5vdXQKQEAgLTQxNiw2ICs0MTYsMTIxIEBAIHNlbGVj dCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAobWVtb3J5KSBleGVjdXRlIGludDhfcXVlcnknKTsK ICAgIE1lbW9yeTogdXNlZD1Oa0IgIGFsbG9jYXRlZD1Oa0IKICgyIHJvd3MpCiAKKy0tIEFMTF9D QU5ESURBVEVTIG9wdGlvbgorYmVnaW47CistLSBlbmNvdXJhZ2UgcGxhbm5lciB0byBjb21wdXRl IHBhcmFsbGVsIHBsYW4KK3NldCBsb2NhbCBtaW5fcGFyYWxsZWxfdGFibGVfc2Nhbl9zaXplPTA7 CitzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFsbF9jYW5kaWRhdGVzKSBzZWxlY3Qg KiBmcm9tIGludDhfdGJsIGk4Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4 cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFBsYW4gTgorICAgLT4gIEdhdGhlciAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1O IHdpZHRoPU4pCisgICAgICAgICBXb3JrZXJzIFBsYW5uZWQ6IE4KKyAgICAgICAgIC0+ICBQYXJh bGxlbCBTZXEgU2NhbiBvbiBpbnQ4X3RibCBpOCAgKGNvc3Q9Ti5OLi5OLk4gcm93cz1OIHdpZHRo PU4pCisgUGxhbiBOCisgICAtPiAgU2VxIFNjYW4gb24gaW50OF90YmwgaTggIChjb3N0PU4uTi4u Ti5OIHJvd3M9TiB3aWR0aD1OKQorKDYgcm93cykKKworc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdl eHBsYWluIChhbGxfY2FuZGlkYXRlcywgc3VtbWFyeSwgZm9ybWF0IHlhbWwpIHNlbGVjdCAqIGZy b20gaW50OF90YmwgaTgnKTsKKyAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAtIC0gUGxhbjog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICBOb2RlIFR5cGU6ICJHYXRoZXIi ICAgICAgICAgICAgICsKKyAgICAgICBQYXJhbGxlbCBBd2FyZTogZmFsc2UgICAgICAgICAgICsK KyAgICAgICBBc3luYyBDYXBhYmxlOiBmYWxzZSAgICAgICAgICAgICsKKyAgICAgICBTdGFydHVw IENvc3Q6IE4uTiAgICAgICAgICAgICAgICsKKyAgICAgICBUb3RhbCBDb3N0OiBOLk4gICAgICAg ICAgICAgICAgICsKKyAgICAgICBQbGFuIFJvd3M6IE4gICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICBQbGFuIFdpZHRoOiBOICAgICAgICAgICAgICAgICAgICsKKyAgICAgICBXb3JrZXJzIFBs YW5uZWQ6IE4gICAgICAgICAgICAgICsKKyAgICAgICBTaW5nbGUgQ29weTogZmFsc2UgICAgICAg ICAgICAgICsKKyAgICAgICBQbGFuczogICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgIC0gTm9kZSBUeXBlOiAiU2VxIFNjYW4iICAgICAgICsKKyAgICAgICAgICAgUGFyZW50IFJl bGF0aW9uc2hpcDogIk91dGVyIisKKyAgICAgICAgICAgUGFyYWxsZWwgQXdhcmU6IHRydWUgICAg ICAgICsKKyAgICAgICAgICAgQXN5bmMgQ2FwYWJsZTogZmFsc2UgICAgICAgICsKKyAgICAgICAg ICAgUmVsYXRpb24gTmFtZTogImludDhfdGJsIiAgICsKKyAgICAgICAgICAgQWxpYXM6ICJpOCIg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgU3RhcnR1cCBDb3N0OiBOLk4gICAgICAgICAg ICsKKyAgICAgICAgICAgVG90YWwgQ29zdDogTi5OICAgICAgICAgICAgICsKKyAgICAgICAgICAg UGxhbiBSb3dzOiBOICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgUGxhbiBXaWR0aDogTiAg ICAgICAgICAgICAgICsKKyAgICAgUGxhbm5pbmcgVGltZTogTi5OICAgICAgICAgICAgICAgICsK KyAtIC0gUGxhbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICBOb2RlIFR5 cGU6ICJTZXEgU2NhbiIgICAgICAgICAgICsKKyAgICAgICBQYXJhbGxlbCBBd2FyZTogZmFsc2Ug ICAgICAgICAgICsKKyAgICAgICBBc3luYyBDYXBhYmxlOiBmYWxzZSAgICAgICAgICAgICsKKyAg ICAgICBSZWxhdGlvbiBOYW1lOiAiaW50OF90YmwiICAgICAgICsKKyAgICAgICBBbGlhczogImk4 IiAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICBTdGFydHVwIENvc3Q6IE4uTiAgICAgICAg ICAgICAgICsKKyAgICAgICBUb3RhbCBDb3N0OiBOLk4gICAgICAgICAgICAgICAgICsKKyAgICAg ICBQbGFuIFJvd3M6IE4gICAgICAgICAgICAgICAgICAgICsKKyAgICAgICBQbGFuIFdpZHRoOiBO ICAgICAgICAgICAgICAgICAgICsKKyAgICAgUGxhbm5pbmcgVGltZTogTi5OCisoMSByb3cpCisK K3NlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYWxsX2NhbmRpZGF0ZXMsIGZvcm1hdCBq c29uKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CisgICAgICAgICAgICAgICBleHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJQbGFuIjog eyAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAiTm9kZSBUeXBlIjogIkdh dGhlciIsICAgICAgICAgICAgICsKKyAgICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNlLCAg ICAgICAgICAgKworICAgICAgICAgIkFzeW5jIENhcGFibGUiOiBmYWxzZSwgICAgICAgICAgICAr CisgICAgICAgICAiU3RhcnR1cCBDb3N0IjogTi5OLCAgICAgICAgICAgICAgICsKKyAgICAgICAg ICJUb3RhbCBDb3N0IjogTi5OLCAgICAgICAgICAgICAgICAgKworICAgICAgICAgIlBsYW4gUm93 cyI6IE4sICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAiUGxhbiBXaWR0aCI6IE4sICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICJXb3JrZXJzIFBsYW5uZWQiOiBOLCAgICAgICAg ICAgICAgKworICAgICAgICAgIlNpbmdsZSBDb3B5IjogZmFsc2UsICAgICAgICAgICAgICArCisg ICAgICAgICAiUGxhbnMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICJOb2RlIFR5 cGUiOiAiU2VxIFNjYW4iLCAgICAgICArCisgICAgICAgICAgICAgIlBhcmVudCBSZWxhdGlvbnNo aXAiOiAiT3V0ZXIiLCsKKyAgICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiB0cnVlLCAgICAg ICAgKworICAgICAgICAgICAgICJBc3luYyBDYXBhYmxlIjogZmFsc2UsICAgICAgICArCisgICAg ICAgICAgICAgIlJlbGF0aW9uIE5hbWUiOiAiaW50OF90YmwiLCAgICsKKyAgICAgICAgICAgICAi QWxpYXMiOiAiaTgiLCAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICJTdGFydHVwIENv c3QiOiBOLk4sICAgICAgICAgICArCisgICAgICAgICAgICAgIlRvdGFsIENvc3QiOiBOLk4sICAg ICAgICAgICAgICsKKyAgICAgICAgICAgICAiUGxhbiBSb3dzIjogTiwgICAgICAgICAgICAgICAg KworICAgICAgICAgICAgICJQbGFuIFdpZHRoIjogTiAgICAgICAgICAgICAgICArCisgICAgICAg ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIF0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIH0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiUGxhbiI6IHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgIk5vZGUgVHlwZSI6ICJTZXEgU2Nh biIsICAgICAgICAgICArCisgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAg ICAgICsKKyAgICAgICAgICJBc3luYyBDYXBhYmxlIjogZmFsc2UsICAgICAgICAgICAgKworICAg ICAgICAgIlJlbGF0aW9uIE5hbWUiOiAiaW50OF90YmwiLCAgICAgICArCisgICAgICAgICAiQWxp YXMiOiAiaTgiLCAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICJTdGFydHVwIENvc3Qi OiBOLk4sICAgICAgICAgICAgICAgKworICAgICAgICAgIlRvdGFsIENvc3QiOiBOLk4sICAgICAg ICAgICAgICAgICArCisgICAgICAgICAiUGxhbiBSb3dzIjogTiwgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICJQbGFuIFdpZHRoIjogTiAgICAgICAgICAgICAgICAgICAgKworICAgICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIH0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIH0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworIF0KKygxIHJvdykKKworc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbGxfY2FuZGlkYXRlcykgZXhlY3V0ZSBpbnQ4X3F1ZXJ5Jyk7CisgICAgICAg ICAgICAgICAgICAgICBleHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNl cSBTY2FuIG9uIGludDhfdGJsIGk4ICAoY29zdD1OLk4uLk4uTiByb3dzPU4gd2lkdGg9TikKKygx IHJvdykKKworcm9sbGJhY2s7CistLSBzaG91bGQgZmFpbAorc2VsZWN0IGV4cGxhaW5fZmlsdGVy KCdleHBsYWluIChhbGxfY2FuZGlkYXRlcywgYW5hbHl6ZSkgc2VsZWN0ICogZnJvbSBpbnQ4X3Ri bCBpOCcpOworRVJST1I6ICBFWFBMQUlOIG9wdGlvbnMgQU5BTFlaRSBhbmQgQUxMX0NBTkRJREFU RVMgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIKK0NPTlRFWFQ6ICBQTC9wZ1NRTCBmdW5jdGlvbiBl eHBsYWluX2ZpbHRlcih0ZXh0KSBsaW5lIDUgYXQgRk9SIG92ZXIgRVhFQ1VURSBzdGF0ZW1lbnQK IC0tIFRlc3QgRVhQTEFJTiAoR0VORVJJQ19QTEFOKSB3aXRoIHBhcnRpdGlvbiBwcnVuaW5nCiAt LSBwYXJ0aXRpb25zIHNob3VsZCBiZSBwcnVuZWQgYXQgcGxhbiB0aW1lLCBiYXNlZCBvbiBjb25z dGFudHMsCiAtLSBidXQgdGhlcmUgc2hvdWxkIGJlIG5vIHBydW5pbmcgYmFzZWQgb24gcGFyYW1l dGVyIHBsYWNlaG9sZGVycwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZXhwbGFp bi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9leHBsYWluLnNxbAppbmRleCBjNzA1NWY4NTBj NS4uZDZiMTQzOTgyNGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4u c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2V4cGxhaW4uc3FsCkBAIC0xMDIsNiArMTAy LDE4IEBAIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAobWVtb3J5LCBhbmFseXplLCBm b3JtYXQganNvbikgc2VsZWN0ICogZnJvbSBpbnQ4CiBwcmVwYXJlIGludDhfcXVlcnkgYXMgc2Vs ZWN0ICogZnJvbSBpbnQ4X3RibCBpODsKIHNlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAo bWVtb3J5KSBleGVjdXRlIGludDhfcXVlcnknKTsKIAorLS0gQUxMX0NBTkRJREFURVMgb3B0aW9u CitiZWdpbjsKKy0tIGVuY291cmFnZSBwbGFubmVyIHRvIGNvbXB1dGUgcGFyYWxsZWwgcGxhbgor c2V0IGxvY2FsIG1pbl9wYXJhbGxlbF90YWJsZV9zY2FuX3NpemU9MDsKK3NlbGVjdCBleHBsYWlu X2ZpbHRlcignZXhwbGFpbiAoYWxsX2NhbmRpZGF0ZXMpIHNlbGVjdCAqIGZyb20gaW50OF90Ymwg aTgnKTsKK3NlbGVjdCBleHBsYWluX2ZpbHRlcignZXhwbGFpbiAoYWxsX2NhbmRpZGF0ZXMsIHN1 bW1hcnksIGZvcm1hdCB5YW1sKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CitzZWxlY3Qg ZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFsbF9jYW5kaWRhdGVzLCBmb3JtYXQganNvbikgc2Vs ZWN0ICogZnJvbSBpbnQ4X3RibCBpOCcpOworc2VsZWN0IGV4cGxhaW5fZmlsdGVyKCdleHBsYWlu IChhbGxfY2FuZGlkYXRlcykgZXhlY3V0ZSBpbnQ4X3F1ZXJ5Jyk7Cityb2xsYmFjazsKKy0tIHNo b3VsZCBmYWlsCitzZWxlY3QgZXhwbGFpbl9maWx0ZXIoJ2V4cGxhaW4gKGFsbF9jYW5kaWRhdGVz LCBhbmFseXplKSBzZWxlY3QgKiBmcm9tIGludDhfdGJsIGk4Jyk7CisKIC0tIFRlc3QgRVhQTEFJ TiAoR0VORVJJQ19QTEFOKSB3aXRoIHBhcnRpdGlvbiBwcnVuaW5nCiAtLSBwYXJ0aXRpb25zIHNo b3VsZCBiZSBwcnVuZWQgYXQgcGxhbiB0aW1lLCBiYXNlZCBvbiBjb25zdGFudHMsCiAtLSBidXQg dGhlcmUgc2hvdWxkIGJlIG5vIHBydW5pbmcgYmFzZWQgb24gcGFyYW1ldGVyIHBsYWNlaG9sZGVy cwotLSAKMi4zOS4zIChBcHBsZSBHaXQtMTQ2KQoK --000000000000a08f37061e296eaa Content-Type: application/octet-stream; name="v1-0001-Propagate-root-PlannerInfo-to-add_path.patch" Content-Disposition: attachment; filename="v1-0001-Propagate-root-PlannerInfo-to-add_path.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lz2xwapp0 RnJvbSAwZDQyYzFjODAyODJkOWY5MmYwM2U2Njg0Y2Y4ZTZhMDYwZTAyZmVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRob25pbiBCb25uZWZveSA8YW50aG9uaW4uYm9ubmVmb3lA Z21haWwuY29tPgpEYXRlOiBNb24sIDE1IEp1bCAyMDI0IDA2OjQzOjM2ICswMjAwClN1YmplY3Q6 IFByb3BhZ2F0ZSByb290IFBsYW5uZXJJbmZvIHRvIGFkZF9wYXRoCgotLS0KIGNvbnRyaWIvZmls ZV9mZHcvZmlsZV9mZHcuYyAgICAgICAgICAgIHwgICAyICstCiBjb250cmliL3Bvc3RncmVzX2Zk dy9wb3N0Z3Jlc19mZHcuYyAgICB8ICAxOCArKy0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jICB8IDE0NCArKysrKysrKysrKystLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9pbmR4cGF0aC5jICB8ICAgNiArLQogc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvam9pbnBhdGguYyAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2pvaW5yZWxzLmMgIHwgIDI0ICsrLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC90aWRw YXRoLmMgICB8ICAxMiArLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5hZ2cuYyAg IHwgICAyICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jICB8ICAgMiAr LQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jICAgfCAgNDIgKysrKy0tLS0K IHNyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1bmlvbi5jIHwgIDQyICsrKystLS0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jICB8ICAgMiArLQogc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcmVsbm9kZS5jICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL29wdGlt aXplci9wYXRobm9kZS5oICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0 aHMuaCAgICAgICAgICB8ICAgMiArLQogMTUgZmlsZXMgY2hhbmdlZCwgMTU0IGluc2VydGlvbnMo KyksIDE1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVf ZmR3LmMgYi9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKaW5kZXggMjQ5ZDgyZDNhMDUuLjVk MWQ4ZmFmMzFiIDEwMDY0NAotLS0gYS9jb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMKKysrIGIv Y29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCkBAIC01NzIsNyArNTcyLDcgQEAgZmlsZUdldEZv cmVpZ25QYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBpdCBjb3VsZCBzdGlsbCBoYXZlIHJl cXVpcmVkIHBhcmFtZXRlcml6YXRpb24gZHVlIHRvIExBVEVSQUwgcmVmcyBpbgogCSAqIGl0cyB0 bGlzdC4KIAkgKi8KLQlhZGRfcGF0aChiYXNlcmVsLCAoUGF0aCAqKQorCWFkZF9wYXRoKHJvb3Qs IGJhc2VyZWwsIChQYXRoICopCiAJCQkgY3JlYXRlX2ZvcmVpZ25zY2FuX3BhdGgocm9vdCwgYmFz ZXJlbCwKIAkJCQkJCQkJCSBOVUxMLAkvKiBkZWZhdWx0IHBhdGh0YXJnZXQgKi8KIAkJCQkJCQkJ CSBiYXNlcmVsLT5yb3dzLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdy ZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCBmYzY1 ZDgxZTIxNy4uNDdhM2ViYzRlMGIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bv c3RncmVzX2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBA IC0xMDM3LDcgKzEwMzcsNyBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25QYXRocyhQbGFubmVySW5mbyAq cm9vdCwKIAkJCQkJCQkJICAgTlVMTCwJLyogbm8gZXh0cmEgcGxhbiAqLwogCQkJCQkJCQkgICBO SUwsIC8qIG5vIGZkd19yZXN0cmljdGluZm8gbGlzdCAqLwogCQkJCQkJCQkgICBOSUwpOwkvKiBu byBmZHdfcHJpdmF0ZSBsaXN0ICovCi0JYWRkX3BhdGgoYmFzZXJlbCwgKFBhdGggKikgcGF0aCk7 CisJYWRkX3BhdGgocm9vdCwgYmFzZXJlbCwgKFBhdGggKikgcGF0aCk7CiAKIAkvKiBBZGQgcGF0 aHMgd2l0aCBwYXRoa2V5cyAqLwogCWFkZF9wYXRoc193aXRoX3BhdGhrZXlzX2Zvcl9yZWwocm9v dCwgYmFzZXJlbCwgTlVMTCwgTklMKTsKQEAgLTEyMTAsNyArMTIxMCw3IEBAIHBvc3RncmVzR2V0 Rm9yZWlnblBhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJICAgTlVMTCwKIAkJCQkJ CQkJCSAgIE5JTCwgLyogbm8gZmR3X3Jlc3RyaWN0aW5mbyBsaXN0ICovCiAJCQkJCQkJCQkgICBO SUwpOwkvKiBubyBmZHdfcHJpdmF0ZSBsaXN0ICovCi0JCWFkZF9wYXRoKGJhc2VyZWwsIChQYXRo ICopIHBhdGgpOworCQlhZGRfcGF0aChyb290LCBiYXNlcmVsLCAoUGF0aCAqKSBwYXRoKTsKIAl9 CiB9CiAKQEAgLTYxNzEsNyArNjE3MSw3IEBAIGFkZF9wYXRoc193aXRoX3BhdGhrZXlzX2Zvcl9y ZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJIC0xLjApOwog CiAJCWlmIChJU19TSU1QTEVfUkVMKHJlbCkpCi0JCQlhZGRfcGF0aChyZWwsIChQYXRoICopCisJ CQlhZGRfcGF0aChyb290LCByZWwsIChQYXRoICopCiAJCQkJCSBjcmVhdGVfZm9yZWlnbnNjYW5f cGF0aChyb290LCByZWwsCiAJCQkJCQkJCQkJCSBOVUxMLAogCQkJCQkJCQkJCQkgcm93cywKQEAg LTYxODQsNyArNjE4NCw3IEBAIGFkZF9wYXRoc193aXRoX3BhdGhrZXlzX2Zvcl9yZWwoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJCQkJCQkJCQkJCQkgKiBsaXN0ICovCiAJ CQkJCQkJCQkJCSBOSUwpKTsKIAkJZWxzZQotCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKQorCQkJ YWRkX3BhdGgocm9vdCwgcmVsLCAoUGF0aCAqKQogCQkJCQkgY3JlYXRlX2ZvcmVpZ25fam9pbl9w YXRoKHJvb3QsIHJlbCwKIAkJCQkJCQkJCQkJICBOVUxMLAogCQkJCQkJCQkJCQkgIHJvd3MsCkBA IC02NDUwLDcgKzY0NTAsNyBAQCBwb3N0Z3Jlc0dldEZvcmVpZ25Kb2luUGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJCQkJTklMKTsJLyogbm8gZmR3X3ByaXZhdGUgKi8KIAogCS8qIEFk ZCBnZW5lcmF0ZWQgcGF0aCBpbnRvIGpvaW5yZWwgYnkgYWRkX3BhdGgoKS4gKi8KLQlhZGRfcGF0 aChqb2lucmVsLCAoUGF0aCAqKSBqb2lucGF0aCk7CisJYWRkX3BhdGgocm9vdCwgam9pbnJlbCwg KFBhdGggKikgam9pbnBhdGgpOwogCiAJLyogQ29uc2lkZXIgcGF0aGtleXMgZm9yIHRoZSBqb2lu IHJlbGF0aW9uICovCiAJYWRkX3BhdGhzX3dpdGhfcGF0aGtleXNfZm9yX3JlbChyb290LCBqb2lu cmVsLCBlcHFfcGF0aCwKQEAgLTY4MzksNyArNjgzOSw3IEBAIGFkZF9mb3JlaWduX2dyb3VwaW5n X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJCQkJ CQkJICBOSUwpOyAvKiBubyBmZHdfcHJpdmF0ZSAqLwogCiAJLyogQWRkIGdlbmVyYXRlZCBwYXRo IGludG8gZ3JvdXBlZF9yZWwgYnkgYWRkX3BhdGgoKS4gKi8KLQlhZGRfcGF0aChncm91cGVkX3Jl bCwgKFBhdGggKikgZ3JvdXBwYXRoKTsKKwlhZGRfcGF0aChyb290LCBncm91cGVkX3JlbCwgKFBh dGggKikgZ3JvdXBwYXRoKTsKIH0KIAogLyoKQEAgLTY5NzQsNyArNjk3NCw3IEBAIGFkZF9mb3Jl aWduX29yZGVyZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3Jl bCwKIAkJCQkJCQkJCQkJIGZkd19wcml2YXRlKTsKIAogCS8qIGFuZCBhZGQgaXQgdG8gdGhlIG9y ZGVyZWRfcmVsICovCi0JYWRkX3BhdGgob3JkZXJlZF9yZWwsIChQYXRoICopIG9yZGVyZWRfcGF0 aCk7CisJYWRkX3BhdGgocm9vdCwgb3JkZXJlZF9yZWwsIChQYXRoICopIG9yZGVyZWRfcGF0aCk7 CiB9CiAKIC8qCkBAIC03MDkxLDcgKzcwOTEsNyBAQCBhZGRfZm9yZWlnbl9maW5hbF9wYXRocyhQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJCSAg IE5JTCk7CS8qIG5vIGZkd19wcml2YXRlICovCiAKIAkJCQkvKiBhbmQgYWRkIGl0IHRvIHRoZSBm aW5hbF9yZWwgKi8KLQkJCQlhZGRfcGF0aChmaW5hbF9yZWwsIChQYXRoICopIGZpbmFsX3BhdGgp OworCQkJCWFkZF9wYXRoKHJvb3QsIGZpbmFsX3JlbCwgKFBhdGggKikgZmluYWxfcGF0aCk7CiAK IAkJCQkvKiBTYWZlIHRvIHB1c2ggZG93biAqLwogCQkJCWZwaW5mby0+cHVzaGRvd25fc2FmZSA9 IHRydWU7CkBAIC03MjI2LDcgKzcyMjYsNyBAQCBhZGRfZm9yZWlnbl9maW5hbF9wYXRocyhQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCSAgIGZkd19w cml2YXRlKTsKIAogCS8qIGFuZCBhZGQgaXQgdG8gdGhlIGZpbmFsX3JlbCAqLwotCWFkZF9wYXRo KGZpbmFsX3JlbCwgKFBhdGggKikgZmluYWxfcGF0aCk7CisJYWRkX3BhdGgocm9vdCwgZmluYWxf cmVsLCAoUGF0aCAqKSBmaW5hbF9wYXRoKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9hbGxwYXRocy5jCmluZGV4IDA1N2I0Yjc5ZWJiLi5kZmY0ZWI2NDkxYiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYworKysgYi9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIHZvaWQg YWNjdW11bGF0ZV9hcHBlbmRfc3VicGF0aChQYXRoICpwYXRoLAogCQkJCQkJCQkJICBMaXN0ICoq c3VicGF0aHMsCiAJCQkJCQkJCQkgIExpc3QgKipzcGVjaWFsX3N1YnBhdGhzKTsKIHN0YXRpYyBQ YXRoICpnZXRfc2luZ2xldG9uX2FwcGVuZF9zdWJwYXRoKFBhdGggKnBhdGgpOwotc3RhdGljIHZv aWQgc2V0X2R1bW15X3JlbF9wYXRobGlzdChSZWxPcHRJbmZvICpyZWwpOworc3RhdGljIHZvaWQg c2V0X2R1bW15X3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVs KTsKIHN0YXRpYyB2b2lkIHNldF9zdWJxdWVyeV9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkgIEluZGV4IHJ0aSwgUmFuZ2VUYmxFbnRyeSAqcnRl KTsKIHN0YXRpYyB2b2lkIHNldF9mdW5jdGlvbl9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwg UmVsT3B0SW5mbyAqcmVsLApAQCAtMzc0LDcgKzM3NCw3IEBAIHNldF9yZWxfc2l6ZShQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkgKiB3ZSBkb24ndCBoYXZlIGEgY29udmVu dGlvbiBmb3IgbWFya2luZyBhIHJlbCBhcyBkdW1teSBleGNlcHQgYnkKIAkJICogYXNzaWduaW5n IGEgZHVtbXkgcGF0aCB0byBpdC4KIAkJICovCi0JCXNldF9kdW1teV9yZWxfcGF0aGxpc3QocmVs KTsKKwkJc2V0X2R1bW15X3JlbF9wYXRobGlzdChyb290LCByZWwpOwogCX0KIAllbHNlIGlmIChy dGUtPmluaCkKIAl7CkBAIC0zOTgsNyArMzk4LDcgQEAgc2V0X3JlbF9zaXplKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCSAqIHdpdGggT05MWS4gIEluIHRoYXQgY2Fz ZSB3ZSBzaG91bGRuJ3Qgc2NhbiBhbnkgb2YgdGhlCiAJCQkJCSAqIHBhcnRpdGlvbnMsIHNvIG1h cmsgaXQgYXMgYSBkdW1teSByZWwuCiAJCQkJCSAqLwotCQkJCQlzZXRfZHVtbXlfcmVsX3BhdGhs aXN0KHJlbCk7CisJCQkJCXNldF9kdW1teV9yZWxfcGF0aGxpc3Qocm9vdCwgcmVsKTsKIAkJCQl9 CiAJCQkJZWxzZSBpZiAocnRlLT50YWJsZXNhbXBsZSAhPSBOVUxMKQogCQkJCXsKQEAgLTc4NCw3 ICs3ODQsNyBAQCBzZXRfcGxhaW5fcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAkJcmV0dXJuOwogCiAJLyogQ29uc2lk ZXIgc2VxdWVudGlhbCBzY2FuICovCi0JYWRkX3BhdGgocmVsLCBjcmVhdGVfc2Vxc2Nhbl9wYXRo KHJvb3QsIHJlbCwgcmVxdWlyZWRfb3V0ZXIsIDApKTsKKwlhZGRfcGF0aChyb290LCByZWwsIGNy ZWF0ZV9zZXFzY2FuX3BhdGgocm9vdCwgcmVsLCByZXF1aXJlZF9vdXRlciwgMCkpOwogCiAJLyog SWYgYXBwcm9wcmlhdGUsIGNvbnNpZGVyIHBhcmFsbGVsIHNlcXVlbnRpYWwgc2NhbiAqLwogCWlm IChyZWwtPmNvbnNpZGVyX3BhcmFsbGVsICYmIHJlcXVpcmVkX291dGVyID09IE5VTEwpCkBAIC04 OTcsNyArODk3LDcgQEAgc2V0X3RhYmxlc2FtcGxlX3JlbF9wYXRobGlzdChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBSYW5nZVRibEVudHJ5ICoKIAkJcGF0aCA9IChQYXRoICop IGNyZWF0ZV9tYXRlcmlhbF9wYXRoKHJlbCwgcGF0aCk7CiAJfQogCi0JYWRkX3BhdGgocmVsLCBw YXRoKTsKKwlhZGRfcGF0aChyb290LCByZWwsIHBhdGgpOwogCiAJLyogRm9yIHRoZSBtb21lbnQs IGF0IGxlYXN0LCB0aGVyZSBhcmUgbm8gb3RoZXIgcGF0aHMgdG8gY29uc2lkZXIgKi8KIH0KQEAg LTEwMzgsNyArMTAzOCw3IEBAIHNldF9hcHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJCSAqIFRoaXMgY2hpbGQgbmVlZCBub3QgYmUgc2Nhbm5lZCwg c28gd2UgY2FuIG9taXQgaXQgZnJvbSB0aGUKIAkJCSAqIGFwcGVuZHJlbC4KIAkJCSAqLwotCQkJ c2V0X2R1bW15X3JlbF9wYXRobGlzdChjaGlsZHJlbCk7CisJCQlzZXRfZHVtbXlfcmVsX3BhdGhs aXN0KHJvb3QsIGNoaWxkcmVsKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTEyMjYsNyArMTIy Niw3IEBAIHNldF9hcHBlbmRfcmVsX3NpemUoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KnJlbCwKIAkJICogYXBwZW5kcmVsIGR1bW15LiAgV2UgbXVzdCBkbyB0aGlzIGluIHRoaXMgcGhh c2Ugc28gdGhhdCB0aGUgcmVsJ3MKIAkJICogZHVtbXktbmVzcyBpcyB2aXNpYmxlIHdoZW4gd2Ug Z2VuZXJhdGUgcGF0aHMgZm9yIG90aGVyIHJlbHMuCiAJCSAqLwotCQlzZXRfZHVtbXlfcmVsX3Bh dGhsaXN0KHJlbCk7CisJCXNldF9kdW1teV9yZWxfcGF0aGxpc3Qocm9vdCwgcmVsKTsKIAl9CiAK IAlwZnJlZShwYXJlbnRfYXR0cnNpemVzKTsKQEAgLTE0OTgsMTQgKzE0OTgsMTQgQEAgYWRkX3Bh dGhzX3RvX2FwcGVuZF9yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkg KiBpZiB3ZSBoYXZlIHplcm8gb3Igb25lIGxpdmUgc3VicGF0aCBkdWUgdG8gY29uc3RyYWludCBl eGNsdXNpb24uKQogCSAqLwogCWlmIChzdWJwYXRoc192YWxpZCkKLQkJYWRkX3BhdGgocmVsLCAo UGF0aCAqKSBjcmVhdGVfYXBwZW5kX3BhdGgocm9vdCwgcmVsLCBzdWJwYXRocywgTklMLAotCQkJ CQkJCQkJCQkJICBOSUwsIE5VTEwsIDAsIGZhbHNlLAotCQkJCQkJCQkJCQkJICAtMSkpOworCQlh ZGRfcGF0aChyb290LCByZWwsIChQYXRoICopIGNyZWF0ZV9hcHBlbmRfcGF0aChyb290LCByZWws IHN1YnBhdGhzLCBOSUwsCisJCQkJCQkJCQkJCQkJCU5JTCwgTlVMTCwgMCwgZmFsc2UsCisJCQkJ CQkJCQkJCQkJCS0xKSk7CiAKIAkvKiBidWlsZCBhbiBBcHBlbmRQYXRoIGZvciB0aGUgY2hlYXAg c3RhcnR1cCBwYXRocywgaWYgdmFsaWQgKi8KIAlpZiAoc3RhcnR1cF9zdWJwYXRoc192YWxpZCkK LQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBjcmVhdGVfYXBwZW5kX3BhdGgocm9vdCwgcmVsLCBz dGFydHVwX3N1YnBhdGhzLAotCQkJCQkJCQkJCQkJICBOSUwsIE5JTCwgTlVMTCwgMCwgZmFsc2Us IC0xKSk7CisJCWFkZF9wYXRoKHJvb3QsIHJlbCwgKFBhdGggKikgY3JlYXRlX2FwcGVuZF9wYXRo KHJvb3QsIHJlbCwgc3RhcnR1cF9zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJTklMLCBOSUwsIE5V TEwsIDAsIGZhbHNlLCAtMSkpOwogCiAJLyoKIAkgKiBDb25zaWRlciBhbiBhcHBlbmQgb2YgdW5v cmRlcmVkLCB1bnBhcmFtZXRlcml6ZWQgcGFydGlhbCBwYXRocy4gIE1ha2UKQEAgLTE2NTUsNyAr MTY1NSw3IEBAIGFkZF9wYXRoc190b19hcHBlbmRfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxP cHRJbmZvICpyZWwsCiAJCX0KIAogCQlpZiAoc3VicGF0aHNfdmFsaWQpCi0JCQlhZGRfcGF0aChy ZWwsIChQYXRoICopCisJCQlhZGRfcGF0aChyb290LCByZWwsIChQYXRoICopCiAJCQkJCSBjcmVh dGVfYXBwZW5kX3BhdGgocm9vdCwgcmVsLCBzdWJwYXRocywgTklMLAogCQkJCQkJCQkJCU5JTCwg cmVxdWlyZWRfb3V0ZXIsIDAsIGZhbHNlLAogCQkJCQkJCQkJCS0xKSk7CkBAIC0xOTQwLDU4ICsx OTQwLDU4IEBAIGdlbmVyYXRlX29yZGVyZWRhcHBlbmRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnJlbCwKIAkJaWYgKG1hdGNoX3BhcnRpdGlvbl9vcmRlcikKIAkJewogCQkJ LyogV2Ugb25seSBuZWVkIEFwcGVuZCAqLwotCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBjcmVh dGVfYXBwZW5kX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJCQkgIHJlbCwKLQkJCQkJCQkJCQkJCQkg IHN0YXJ0dXBfc3VicGF0aHMsCi0JCQkJCQkJCQkJCQkJICBOSUwsCi0JCQkJCQkJCQkJCQkJICBw YXRoa2V5cywKLQkJCQkJCQkJCQkJCQkgIE5VTEwsCi0JCQkJCQkJCQkJCQkJICAwLAotCQkJCQkJ CQkJCQkJCSAgZmFsc2UsCi0JCQkJCQkJCQkJCQkJICAtMSkpOwotCQkJaWYgKHN0YXJ0dXBfbmVx X3RvdGFsKQotCQkJCWFkZF9wYXRoKHJlbCwgKFBhdGggKikgY3JlYXRlX2FwcGVuZF9wYXRoKHJv b3QsCi0JCQkJCQkJCQkJCQkJCSAgcmVsLAotCQkJCQkJCQkJCQkJCQkgIHRvdGFsX3N1YnBhdGhz LAotCQkJCQkJCQkJCQkJCQkgIE5JTCwKLQkJCQkJCQkJCQkJCQkJICBwYXRoa2V5cywKLQkJCQkJ CQkJCQkJCQkJICBOVUxMLAotCQkJCQkJCQkJCQkJCQkgIDAsCi0JCQkJCQkJCQkJCQkJCSAgZmFs c2UsCi0JCQkJCQkJCQkJCQkJCSAgLTEpKTsKLQotCQkJaWYgKGZyYWN0aW9uYWxfc3VicGF0aHMp Ci0JCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBjcmVhdGVfYXBwZW5kX3BhdGgocm9vdCwKLQkJ CQkJCQkJCQkJCQkJICByZWwsCi0JCQkJCQkJCQkJCQkJCSAgZnJhY3Rpb25hbF9zdWJwYXRocywK LQkJCQkJCQkJCQkJCQkJICBOSUwsCi0JCQkJCQkJCQkJCQkJCSAgcGF0aGtleXMsCi0JCQkJCQkJ CQkJCQkJCSAgTlVMTCwKLQkJCQkJCQkJCQkJCQkJICAwLAotCQkJCQkJCQkJCQkJCQkgIGZhbHNl LAotCQkJCQkJCQkJCQkJCQkgIC0xKSk7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKiBXZSBuZWVk IE1lcmdlQXBwZW5kICovCi0JCQlhZGRfcGF0aChyZWwsIChQYXRoICopIGNyZWF0ZV9tZXJnZV9h cHBlbmRfcGF0aChyb290LAorCQkJYWRkX3BhdGgocm9vdCwgcmVsLCAoUGF0aCAqKSBjcmVhdGVf YXBwZW5kX3BhdGgocm9vdCwKIAkJCQkJCQkJCQkJCQkJCXJlbCwKIAkJCQkJCQkJCQkJCQkJCXN0 YXJ0dXBfc3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQlOSUwsCiAJCQkJCQkJCQkJCQkJCQlwYXRo a2V5cywKLQkJCQkJCQkJCQkJCQkJCU5VTEwpKTsKKwkJCQkJCQkJCQkJCQkJCU5VTEwsCisJCQkJ CQkJCQkJCQkJCQkwLAorCQkJCQkJCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJCQkJCQkJCQktMSkp OwogCQkJaWYgKHN0YXJ0dXBfbmVxX3RvdGFsKQotCQkJCWFkZF9wYXRoKHJlbCwgKFBhdGggKikg Y3JlYXRlX21lcmdlX2FwcGVuZF9wYXRoKHJvb3QsCisJCQkJYWRkX3BhdGgocm9vdCwgcmVsLCAo UGF0aCAqKSBjcmVhdGVfYXBwZW5kX3BhdGgocm9vdCwKIAkJCQkJCQkJCQkJCQkJCQlyZWwsCiAJ CQkJCQkJCQkJCQkJCQkJdG90YWxfc3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkJTklMLAogCQkJ CQkJCQkJCQkJCQkJCXBhdGhrZXlzLAotCQkJCQkJCQkJCQkJCQkJCU5VTEwpKTsKKwkJCQkJCQkJ CQkJCQkJCQlOVUxMLAorCQkJCQkJCQkJCQkJCQkJCTAsCisJCQkJCQkJCQkJCQkJCQkJZmFsc2Us CisJCQkJCQkJCQkJCQkJCQkJLTEpKTsKIAogCQkJaWYgKGZyYWN0aW9uYWxfc3VicGF0aHMpCi0J CQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BhdGgocm9vdCwK KwkJCQlhZGRfcGF0aChyb290LCByZWwsIChQYXRoICopIGNyZWF0ZV9hcHBlbmRfcGF0aChyb290 LAogCQkJCQkJCQkJCQkJCQkJCXJlbCwKIAkJCQkJCQkJCQkJCQkJCQlmcmFjdGlvbmFsX3N1YnBh dGhzLAorCQkJCQkJCQkJCQkJCQkJCU5JTCwKIAkJCQkJCQkJCQkJCQkJCQlwYXRoa2V5cywKLQkJ CQkJCQkJCQkJCQkJCQlOVUxMKSk7CisJCQkJCQkJCQkJCQkJCQkJTlVMTCwKKwkJCQkJCQkJCQkJ CQkJCQkwLAorCQkJCQkJCQkJCQkJCQkJCWZhbHNlLAorCQkJCQkJCQkJCQkJCQkJCS0xKSk7CisJ CX0KKwkJZWxzZQorCQl7CisJCQkvKiBXZSBuZWVkIE1lcmdlQXBwZW5kICovCisJCQlhZGRfcGF0 aChyb290LCByZWwsIChQYXRoICopIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGF0aChyb290LAorCQkJ CQkJCQkJCQkJCQkJCSAgcmVsLAorCQkJCQkJCQkJCQkJCQkJCSAgc3RhcnR1cF9zdWJwYXRocywK KwkJCQkJCQkJCQkJCQkJCQkgIHBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCSAgTlVMTCkpOwor CQkJaWYgKHN0YXJ0dXBfbmVxX3RvdGFsKQorCQkJCWFkZF9wYXRoKHJvb3QsIHJlbCwgKFBhdGgg KikgY3JlYXRlX21lcmdlX2FwcGVuZF9wYXRoKHJvb3QsCisJCQkJCQkJCQkJCQkJCQkJCSAgcmVs LAorCQkJCQkJCQkJCQkJCQkJCQkgIHRvdGFsX3N1YnBhdGhzLAorCQkJCQkJCQkJCQkJCQkJCQkg IHBhdGhrZXlzLAorCQkJCQkJCQkJCQkJCQkJCQkgIE5VTEwpKTsKKworCQkJaWYgKGZyYWN0aW9u YWxfc3VicGF0aHMpCisJCQkJYWRkX3BhdGgocm9vdCwgcmVsLCAoUGF0aCAqKSBjcmVhdGVfbWVy Z2VfYXBwZW5kX3BhdGgocm9vdCwKKwkJCQkJCQkJCQkJCQkJCQkJICByZWwsCisJCQkJCQkJCQkJ CQkJCQkJCSAgZnJhY3Rpb25hbF9zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJCQkJICBwYXRoa2V5 cywKKwkJCQkJCQkJCQkJCQkJCQkJICBOVUxMKSk7CiAJCX0KIAl9CiB9CkBAIC0yMTcxLDcgKzIx NzEsNyBAQCBnZXRfc2luZ2xldG9uX2FwcGVuZF9zdWJwYXRoKFBhdGggKnBhdGgpCiAgKiBwYXRo cyBmb3IgaXQuKQogICovCiBzdGF0aWMgdm9pZAotc2V0X2R1bW15X3JlbF9wYXRobGlzdChSZWxP cHRJbmZvICpyZWwpCitzZXRfZHVtbXlfcmVsX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpyZWwpCiB7CiAJLyogU2V0IGR1bW15IHNpemUgZXN0aW1hdGVzIC0tLSB3ZSBs ZWF2ZSBhdHRyX3dpZHRoc1tdIGFzIHplcm9lcyAqLwogCXJlbC0+cm93cyA9IDA7CkBAIC0yMTgy LDkgKzIxODIsOSBAQCBzZXRfZHVtbXlfcmVsX3BhdGhsaXN0KFJlbE9wdEluZm8gKnJlbCkKIAly ZWwtPnBhcnRpYWxfcGF0aGxpc3QgPSBOSUw7CiAKIAkvKiBTZXQgdXAgdGhlIGR1bW15IHBhdGgg Ki8KLQlhZGRfcGF0aChyZWwsIChQYXRoICopIGNyZWF0ZV9hcHBlbmRfcGF0aChOVUxMLCByZWws IE5JTCwgTklMLAotCQkJCQkJCQkJCQkgIE5JTCwgcmVsLT5sYXRlcmFsX3JlbGlkcywKLQkJCQkJ CQkJCQkJICAwLCBmYWxzZSwgLTEpKTsKKwlhZGRfcGF0aChyb290LCByZWwsIChQYXRoICopIGNy ZWF0ZV9hcHBlbmRfcGF0aChOVUxMLCByZWwsIE5JTCwgTklMLAorCQkJCQkJCQkJCQkJCU5JTCwg cmVsLT5sYXRlcmFsX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkwLCBmYWxzZSwgLTEpKTsKIAogCS8q CiAJICogV2Ugc2V0IHRoZSBjaGVhcGVzdC1wYXRoIGZpZWxkcyBpbW1lZGlhdGVseSwganVzdCBp biBjYXNlIHRoZXkgd2VyZQpAQCAtMjY1Nyw3ICsyNjU3LDcgQEAgc2V0X3N1YnF1ZXJ5X3BhdGhs aXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAKIAlpZiAoSVNfRFVNTVlf UkVMKHN1Yl9maW5hbF9yZWwpKQogCXsKLQkJc2V0X2R1bW15X3JlbF9wYXRobGlzdChyZWwpOwor CQlzZXRfZHVtbXlfcmVsX3BhdGhsaXN0KHJvb3QsIHJlbCk7CiAJCXJldHVybjsKIAl9CiAKQEAg LTI3MTQsNyArMjcxNCw3IEBAIHNldF9zdWJxdWVyeV9wYXRobGlzdChQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJCQkJCQkJCQkgbWFrZV90bGlzdF9mcm9tX3BhdGh0YXJn ZXQoc3VicGF0aC0+cGF0aHRhcmdldCkpOwogCiAJCS8qIEdlbmVyYXRlIG91dGVyIHBhdGggdXNp bmcgdGhpcyBzdWJwYXRoICovCi0JCWFkZF9wYXRoKHJlbCwgKFBhdGggKikKKwkJYWRkX3BhdGgo cm9vdCwgcmVsLCAoUGF0aCAqKQogCQkJCSBjcmVhdGVfc3VicXVlcnlzY2FuX3BhdGgocm9vdCwg cmVsLCBzdWJwYXRoLAogCQkJCQkJCQkJCSAgdHJpdmlhbF9wYXRodGFyZ2V0LAogCQkJCQkJCQkJ CSAgcGF0aGtleXMsIHJlcXVpcmVkX291dGVyKSk7CkBAIC0yODEyLDggKzI4MTIsOCBAQCBzZXRf ZnVuY3Rpb25fcGF0aGxpc3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgUmFu Z2VUYmxFbnRyeSAqcnRlKQogCX0KIAogCS8qIEdlbmVyYXRlIGFwcHJvcHJpYXRlIHBhdGggKi8K LQlhZGRfcGF0aChyZWwsIGNyZWF0ZV9mdW5jdGlvbnNjYW5fcGF0aChyb290LCByZWwsCi0JCQkJ CQkJCQkJICAgcGF0aGtleXMsIHJlcXVpcmVkX291dGVyKSk7CisJYWRkX3BhdGgocm9vdCwgcmVs LCBjcmVhdGVfZnVuY3Rpb25zY2FuX3BhdGgocm9vdCwgcmVsLAorCQkJCQkJCQkJCQkJIHBhdGhr ZXlzLCByZXF1aXJlZF9vdXRlcikpOwogfQogCiAvKgpAQCAtMjgzMyw3ICsyODMzLDcgQEAgc2V0 X3ZhbHVlc19wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBSYW5n ZVRibEVudHJ5ICpydGUpCiAJcmVxdWlyZWRfb3V0ZXIgPSByZWwtPmxhdGVyYWxfcmVsaWRzOwog CiAJLyogR2VuZXJhdGUgYXBwcm9wcmlhdGUgcGF0aCAqLwotCWFkZF9wYXRoKHJlbCwgY3JlYXRl X3ZhbHVlc3NjYW5fcGF0aChyb290LCByZWwsIHJlcXVpcmVkX291dGVyKSk7CisJYWRkX3BhdGgo cm9vdCwgcmVsLCBjcmVhdGVfdmFsdWVzc2Nhbl9wYXRoKHJvb3QsIHJlbCwgcmVxdWlyZWRfb3V0 ZXIpKTsKIH0KIAogLyoKQEAgLTI4NTMsOCArMjg1Myw4IEBAIHNldF90YWJsZWZ1bmNfcGF0aGxp c3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwgUmFuZ2VUYmxFbnRyeSAqcnRl KQogCXJlcXVpcmVkX291dGVyID0gcmVsLT5sYXRlcmFsX3JlbGlkczsKIAogCS8qIEdlbmVyYXRl IGFwcHJvcHJpYXRlIHBhdGggKi8KLQlhZGRfcGF0aChyZWwsIGNyZWF0ZV90YWJsZWZ1bmNzY2Fu X3BhdGgocm9vdCwgcmVsLAotCQkJCQkJCQkJCQlyZXF1aXJlZF9vdXRlcikpOworCWFkZF9wYXRo KHJvb3QsIHJlbCwgY3JlYXRlX3RhYmxlZnVuY3NjYW5fcGF0aChyb290LCByZWwsCisJCQkJCQkJ CQkJCQkgIHJlcXVpcmVkX291dGVyKSk7CiB9CiAKIC8qCkBAIC0yOTMzLDcgKzI5MzMsNyBAQCBz ZXRfY3RlX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIFJhbmdl VGJsRW50cnkgKnJ0ZSkKIAlyZXF1aXJlZF9vdXRlciA9IHJlbC0+bGF0ZXJhbF9yZWxpZHM7CiAK IAkvKiBHZW5lcmF0ZSBhcHByb3ByaWF0ZSBwYXRoICovCi0JYWRkX3BhdGgocmVsLCBjcmVhdGVf Y3Rlc2Nhbl9wYXRoKHJvb3QsIHJlbCwgcGF0aGtleXMsIHJlcXVpcmVkX291dGVyKSk7CisJYWRk X3BhdGgocm9vdCwgcmVsLCBjcmVhdGVfY3Rlc2Nhbl9wYXRoKHJvb3QsIHJlbCwgcGF0aGtleXMs IHJlcXVpcmVkX291dGVyKSk7CiB9CiAKIC8qCkBAIC0yOTYwLDcgKzI5NjAsNyBAQCBzZXRfbmFt ZWR0dXBsZXN0b3JlX3BhdGhsaXN0KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWws CiAJcmVxdWlyZWRfb3V0ZXIgPSByZWwtPmxhdGVyYWxfcmVsaWRzOwogCiAJLyogR2VuZXJhdGUg YXBwcm9wcmlhdGUgcGF0aCAqLwotCWFkZF9wYXRoKHJlbCwgY3JlYXRlX25hbWVkdHVwbGVzdG9y ZXNjYW5fcGF0aChyb290LCByZWwsIHJlcXVpcmVkX291dGVyKSk7CisJYWRkX3BhdGgocm9vdCwg cmVsLCBjcmVhdGVfbmFtZWR0dXBsZXN0b3Jlc2Nhbl9wYXRoKHJvb3QsIHJlbCwgcmVxdWlyZWRf b3V0ZXIpKTsKIH0KIAogLyoKQEAgLTI5ODcsNyArMjk4Nyw3IEBAIHNldF9yZXN1bHRfcGF0aGxp c3QoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAlyZXF1aXJlZF9vdXRlciA9 IHJlbC0+bGF0ZXJhbF9yZWxpZHM7CiAKIAkvKiBHZW5lcmF0ZSBhcHByb3ByaWF0ZSBwYXRoICov Ci0JYWRkX3BhdGgocmVsLCBjcmVhdGVfcmVzdWx0c2Nhbl9wYXRoKHJvb3QsIHJlbCwgcmVxdWly ZWRfb3V0ZXIpKTsKKwlhZGRfcGF0aChyb290LCByZWwsIGNyZWF0ZV9yZXN1bHRzY2FuX3BhdGgo cm9vdCwgcmVsLCByZXF1aXJlZF9vdXRlcikpOwogfQogCiAvKgpAQCAtMzAzNyw3ICszMDM3LDcg QEAgc2V0X3dvcmt0YWJsZV9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq cmVsLCBSYW5nZVRibEVudHJ5ICpydGUpCiAJcmVxdWlyZWRfb3V0ZXIgPSByZWwtPmxhdGVyYWxf cmVsaWRzOwogCiAJLyogR2VuZXJhdGUgYXBwcm9wcmlhdGUgcGF0aCAqLwotCWFkZF9wYXRoKHJl bCwgY3JlYXRlX3dvcmt0YWJsZXNjYW5fcGF0aChyb290LCByZWwsIHJlcXVpcmVkX291dGVyKSk7 CisJYWRkX3BhdGgocm9vdCwgcmVsLCBjcmVhdGVfd29ya3RhYmxlc2Nhbl9wYXRoKHJvb3QsIHJl bCwgcmVxdWlyZWRfb3V0ZXIpKTsKIH0KIAogLyoKQEAgLTMwODMsNyArMzA4Myw3IEBAIGdlbmVy YXRlX2dhdGhlcl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBib29s IG92ZXJyaWRlX3Jvd3MpCiAJc2ltcGxlX2dhdGhlcl9wYXRoID0gKFBhdGggKikKIAkJY3JlYXRl X2dhdGhlcl9wYXRoKHJvb3QsIHJlbCwgY2hlYXBlc3RfcGFydGlhbF9wYXRoLCByZWwtPnJlbHRh cmdldCwKIAkJCQkJCSAgIE5VTEwsIHJvd3NwKTsKLQlhZGRfcGF0aChyZWwsIHNpbXBsZV9nYXRo ZXJfcGF0aCk7CisJYWRkX3BhdGgocm9vdCwgcmVsLCBzaW1wbGVfZ2F0aGVyX3BhdGgpOwogCiAJ LyoKIAkgKiBGb3IgZWFjaCB1c2VmdWwgb3JkZXJpbmcsIHdlIGNhbiBjb25zaWRlciBhbiBvcmRl ci1wcmVzZXJ2aW5nIEdhdGhlcgpAQCAtMzEwMCw3ICszMTAwLDcgQEAgZ2VuZXJhdGVfZ2F0aGVy X3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIGJvb2wgb3ZlcnJpZGVf cm93cykKIAkJcm93cyA9IGNvbXB1dGVfZ2F0aGVyX3Jvd3Moc3VicGF0aCk7CiAJCXBhdGggPSBj cmVhdGVfZ2F0aGVyX21lcmdlX3BhdGgocm9vdCwgcmVsLCBzdWJwYXRoLCByZWwtPnJlbHRhcmdl dCwKIAkJCQkJCQkJCQlzdWJwYXRoLT5wYXRoa2V5cywgTlVMTCwgcm93c3ApOwotCQlhZGRfcGF0 aChyZWwsICZwYXRoLT5wYXRoKTsKKwkJYWRkX3BhdGgocm9vdCwgcmVsLCAmcGF0aC0+cGF0aCk7 CiAJfQogfQogCkBAIC0zMjk3LDcgKzMyOTcsNyBAQCBnZW5lcmF0ZV91c2VmdWxfZ2F0aGVyX3Bh dGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsIGJvb2wgb3ZlcnJpZGVfcgog CQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCQlyb3dzcCk7CiAKLQkJCWFkZF9wYXRoKHJlbCwg JnBhdGgtPnBhdGgpOworCQkJYWRkX3BhdGgocm9vdCwgcmVsLCAmcGF0aC0+cGF0aCk7CiAJCX0K IAl9CiB9CkBAIC00MzU5LDcgKzQzNTksNyBAQCBnZW5lcmF0ZV9wYXJ0aXRpb253aXNlX2pvaW5f cGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKIAkvKiBJZiBhbGwgY2hp bGQtam9pbnMgYXJlIGR1bW15LCBwYXJlbnQgam9pbiBpcyBhbHNvIGR1bW15LiAqLwogCWlmICgh bGl2ZV9jaGlsZHJlbikKIAl7Ci0JCW1hcmtfZHVtbXlfcmVsKHJlbCk7CisJCW1hcmtfZHVtbXlf cmVsKHJvb3QsIHJlbCk7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2luZHhwYXRoLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9p bmR4cGF0aC5jCmluZGV4IGMwZmNjN2Q3OGRmLi5hYzc0MjE3NjM2YSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvaW5keHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9pbmR4cGF0aC5jCkBAIC0zNDAsNyArMzQwLDcgQEAgY3JlYXRlX2luZGV4X3Bh dGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwpCiAJCWJpdG1hcHF1YWwgPSBj aG9vc2VfYml0bWFwX2FuZChyb290LCByZWwsIGJpdGluZGV4cGF0aHMpOwogCQlicGF0aCA9IGNy ZWF0ZV9iaXRtYXBfaGVhcF9wYXRoKHJvb3QsIHJlbCwgYml0bWFwcXVhbCwKIAkJCQkJCQkJCQly ZWwtPmxhdGVyYWxfcmVsaWRzLCAxLjAsIDApOwotCQlhZGRfcGF0aChyZWwsIChQYXRoICopIGJw YXRoKTsKKwkJYWRkX3BhdGgocm9vdCwgcmVsLCAoUGF0aCAqKSBicGF0aCk7CiAKIAkJLyogY3Jl YXRlIGEgcGFydGlhbCBiaXRtYXAgaGVhcCBwYXRoICovCiAJCWlmIChyZWwtPmNvbnNpZGVyX3Bh cmFsbGVsICYmIHJlbC0+bGF0ZXJhbF9yZWxpZHMgPT0gTlVMTCkKQEAgLTQwNyw3ICs0MDcsNyBA QCBjcmVhdGVfaW5kZXhfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkK IAkJCWxvb3BfY291bnQgPSBnZXRfbG9vcF9jb3VudChyb290LCByZWwtPnJlbGlkLCByZXF1aXJl ZF9vdXRlcik7CiAJCQlicGF0aCA9IGNyZWF0ZV9iaXRtYXBfaGVhcF9wYXRoKHJvb3QsIHJlbCwg Yml0bWFwcXVhbCwKIAkJCQkJCQkJCQkJcmVxdWlyZWRfb3V0ZXIsIGxvb3BfY291bnQsIDApOwot CQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBicGF0aCk7CisJCQlhZGRfcGF0aChyb290LCByZWws IChQYXRoICopIGJwYXRoKTsKIAkJfQogCX0KIH0KQEAgLTc0Miw3ICs3NDIsNyBAQCBnZXRfaW5k ZXhfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCwKIAkJSW5kZXhQYXRo ICAqaXBhdGggPSAoSW5kZXhQYXRoICopIGxmaXJzdChsYyk7CiAKIAkJaWYgKGluZGV4LT5hbWhh c2dldHR1cGxlKQotCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBpcGF0aCk7CisJCQlhZGRfcGF0 aChyb290LCByZWwsIChQYXRoICopIGlwYXRoKTsKIAogCQlpZiAoaW5kZXgtPmFtaGFzZ2V0Yml0 bWFwICYmCiAJCQkoaXBhdGgtPnBhdGgucGF0aGtleXMgPT0gTklMIHx8CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lucGF0aC5jIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BhdGgvam9pbnBhdGguYwppbmRleCA3YTJjMjBiMTQ1MC4uZTkyYjgzNTk0NzAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5wYXRoLmMKKysrIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnBhdGguYwpAQCAtOTE5LDcgKzkxOSw3IEBAIHRyeV9u ZXN0bG9vcF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJICB3b3Jrc3BhY2Uuc3RhcnR1 cF9jb3N0LCB3b3Jrc3BhY2UudG90YWxfY29zdCwKIAkJCQkJCSAgcGF0aGtleXMsIHJlcXVpcmVk X291dGVyKSkKIAl7Ci0JCWFkZF9wYXRoKGpvaW5yZWwsIChQYXRoICopCisJCWFkZF9wYXRoKHJv b3QsIGpvaW5yZWwsIChQYXRoICopCiAJCQkJIGNyZWF0ZV9uZXN0bG9vcF9wYXRoKHJvb3QsCiAJ CQkJCQkJCQkgIGpvaW5yZWwsCiAJCQkJCQkJCQkgIGpvaW50eXBlLApAQCAtMTA5OSw3ICsxMDk5 LDcgQEAgdHJ5X21lcmdlam9pbl9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJICB3b3Jr c3BhY2Uuc3RhcnR1cF9jb3N0LCB3b3Jrc3BhY2UudG90YWxfY29zdCwKIAkJCQkJCSAgcGF0aGtl eXMsIHJlcXVpcmVkX291dGVyKSkKIAl7Ci0JCWFkZF9wYXRoKGpvaW5yZWwsIChQYXRoICopCisJ CWFkZF9wYXRoKHJvb3QsIGpvaW5yZWwsIChQYXRoICopCiAJCQkJIGNyZWF0ZV9tZXJnZWpvaW5f cGF0aChyb290LAogCQkJCQkJCQkJICAgam9pbnJlbCwKIAkJCQkJCQkJCSAgIGpvaW50eXBlLApA QCAtMTI0NCw3ICsxMjQ0LDcgQEAgdHJ5X2hhc2hqb2luX3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkgIHdvcmtzcGFjZS5zdGFydHVwX2Nvc3QsIHdvcmtzcGFjZS50b3RhbF9jb3N0LAog CQkJCQkJICBOSUwsIHJlcXVpcmVkX291dGVyKSkKIAl7Ci0JCWFkZF9wYXRoKGpvaW5yZWwsIChQ YXRoICopCisJCWFkZF9wYXRoKHJvb3QsIGpvaW5yZWwsIChQYXRoICopCiAJCQkJIGNyZWF0ZV9o YXNoam9pbl9wYXRoKHJvb3QsCiAJCQkJCQkJCQkgIGpvaW5yZWwsCiAJCQkJCQkJCQkgIGpvaW50 eXBlLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvam9pbnJlbHMuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKaW5kZXggYTM2NzdmODI0ZmUu LmE1ZjNiNzk5NmFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9qb2lu cmVscy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2pvaW5yZWxzLmMKQEAgLTkx OCw3ICs5MTgsNyBAQCBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnJlbDEsCiAJCQlpZiAoaXNfZHVtbXlfcmVsKHJlbDEpIHx8IGlzX2R1 bW15X3JlbChyZWwyKSB8fAogCQkJCXJlc3RyaWN0aW9uX2lzX2NvbnN0YW50X2ZhbHNlKHJlc3Ry aWN0bGlzdCwgam9pbnJlbCwgZmFsc2UpKQogCQkJewotCQkJCW1hcmtfZHVtbXlfcmVsKGpvaW5y ZWwpOworCQkJCW1hcmtfZHVtbXlfcmVsKHJvb3QsIGpvaW5yZWwpOwogCQkJCWJyZWFrOwogCQkJ fQogCQkJYWRkX3BhdGhzX3RvX2pvaW5yZWwocm9vdCwgam9pbnJlbCwgcmVsMSwgcmVsMiwKQEAg LTkzMiwxMiArOTMyLDEyIEBAIHBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsMSwKIAkJCWlmIChpc19kdW1teV9yZWwocmVsMSkgfHwK IAkJCQlyZXN0cmljdGlvbl9pc19jb25zdGFudF9mYWxzZShyZXN0cmljdGxpc3QsIGpvaW5yZWws IHRydWUpKQogCQkJewotCQkJCW1hcmtfZHVtbXlfcmVsKGpvaW5yZWwpOworCQkJCW1hcmtfZHVt bXlfcmVsKHJvb3QsIGpvaW5yZWwpOwogCQkJCWJyZWFrOwogCQkJfQogCQkJaWYgKHJlc3RyaWN0 aW9uX2lzX2NvbnN0YW50X2ZhbHNlKHJlc3RyaWN0bGlzdCwgam9pbnJlbCwgZmFsc2UpICYmCiAJ CQkJYm1zX2lzX3N1YnNldChyZWwyLT5yZWxpZHMsIHNqaW5mby0+c3luX3JpZ2h0aGFuZCkpCi0J CQkJbWFya19kdW1teV9yZWwocmVsMik7CisJCQkJbWFya19kdW1teV9yZWwocm9vdCwgcmVsMik7 CiAJCQlhZGRfcGF0aHNfdG9fam9pbnJlbChyb290LCBqb2lucmVsLCByZWwxLCByZWwyLAogCQkJ CQkJCQkgSk9JTl9MRUZULCBzamluZm8sCiAJCQkJCQkJCSByZXN0cmljdGxpc3QpOwpAQCAtOTQ5 LDcgKzk0OSw3IEBAIHBvcHVsYXRlX2pvaW5yZWxfd2l0aF9wYXRocyhQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsMSwKIAkJCWlmICgoaXNfZHVtbXlfcmVsKHJlbDEpICYmIGlzX2R1 bW15X3JlbChyZWwyKSkgfHwKIAkJCQlyZXN0cmljdGlvbl9pc19jb25zdGFudF9mYWxzZShyZXN0 cmljdGxpc3QsIGpvaW5yZWwsIHRydWUpKQogCQkJewotCQkJCW1hcmtfZHVtbXlfcmVsKGpvaW5y ZWwpOworCQkJCW1hcmtfZHVtbXlfcmVsKHJvb3QsIGpvaW5yZWwpOwogCQkJCWJyZWFrOwogCQkJ fQogCQkJYWRkX3BhdGhzX3RvX2pvaW5yZWwocm9vdCwgam9pbnJlbCwgcmVsMSwgcmVsMiwKQEAg LTk4NSw3ICs5ODUsNyBAQCBwb3B1bGF0ZV9qb2lucmVsX3dpdGhfcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnJlbDEsCiAJCQkJaWYgKGlzX2R1bW15X3JlbChyZWwxKSB8fCBp c19kdW1teV9yZWwocmVsMikgfHwKIAkJCQkJcmVzdHJpY3Rpb25faXNfY29uc3RhbnRfZmFsc2Uo cmVzdHJpY3RsaXN0LCBqb2lucmVsLCBmYWxzZSkpCiAJCQkJewotCQkJCQltYXJrX2R1bW15X3Jl bChqb2lucmVsKTsKKwkJCQkJbWFya19kdW1teV9yZWwocm9vdCwgam9pbnJlbCk7CiAJCQkJCWJy ZWFrOwogCQkJCX0KIAkJCQlhZGRfcGF0aHNfdG9fam9pbnJlbChyb290LCBqb2lucmVsLCByZWwx LCByZWwyLApAQCAtMTAxMSw3ICsxMDExLDcgQEAgcG9wdWxhdGVfam9pbnJlbF93aXRoX3BhdGhz KFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAogCQkJCWlmIChpc19kdW1teV9y ZWwocmVsMSkgfHwgaXNfZHVtbXlfcmVsKHJlbDIpIHx8CiAJCQkJCXJlc3RyaWN0aW9uX2lzX2Nv bnN0YW50X2ZhbHNlKHJlc3RyaWN0bGlzdCwgam9pbnJlbCwgZmFsc2UpKQogCQkJCXsKLQkJCQkJ bWFya19kdW1teV9yZWwoam9pbnJlbCk7CisJCQkJCW1hcmtfZHVtbXlfcmVsKHJvb3QsIGpvaW5y ZWwpOwogCQkJCQlicmVhazsKIAkJCQl9CiAJCQkJYWRkX3BhdGhzX3RvX2pvaW5yZWwocm9vdCwg am9pbnJlbCwgcmVsMSwgcmVsMiwKQEAgLTEwMjYsMTIgKzEwMjYsMTIgQEAgcG9wdWxhdGVfam9p bnJlbF93aXRoX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwxLAogCQkJ aWYgKGlzX2R1bW15X3JlbChyZWwxKSB8fAogCQkJCXJlc3RyaWN0aW9uX2lzX2NvbnN0YW50X2Zh bHNlKHJlc3RyaWN0bGlzdCwgam9pbnJlbCwgdHJ1ZSkpCiAJCQl7Ci0JCQkJbWFya19kdW1teV9y ZWwoam9pbnJlbCk7CisJCQkJbWFya19kdW1teV9yZWwocm9vdCwgam9pbnJlbCk7CiAJCQkJYnJl YWs7CiAJCQl9CiAJCQlpZiAocmVzdHJpY3Rpb25faXNfY29uc3RhbnRfZmFsc2UocmVzdHJpY3Rs aXN0LCBqb2lucmVsLCBmYWxzZSkgJiYKIAkJCQlibXNfaXNfc3Vic2V0KHJlbDItPnJlbGlkcywg c2ppbmZvLT5zeW5fcmlnaHRoYW5kKSkKLQkJCQltYXJrX2R1bW15X3JlbChyZWwyKTsKKwkJCQlt YXJrX2R1bW15X3JlbChyb290LCByZWwyKTsKIAkJCWFkZF9wYXRoc190b19qb2lucmVsKHJvb3Qs IGpvaW5yZWwsIHJlbDEsIHJlbDIsCiAJCQkJCQkJCSBKT0lOX0FOVEksIHNqaW5mbywKIAkJCQkJ CQkJIHJlc3RyaWN0bGlzdCk7CkBAIC0xMzgxLDcgKzEzODEsNyBAQCBpc19kdW1teV9yZWwoUmVs T3B0SW5mbyAqcmVsKQogICogY29udGV4dCB0aGUgZ2l2ZW4gUmVsT3B0SW5mbyBpcyBpbi4KICAq Lwogdm9pZAotbWFya19kdW1teV9yZWwoUmVsT3B0SW5mbyAqcmVsKQorbWFya19kdW1teV9yZWwo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKIHsKIAlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CiAKQEAgLTE0MDAsOSArMTQwMCw5IEBAIG1hcmtfZHVtbXlfcmVsKFJlbE9wdElu Zm8gKnJlbCkKIAlyZWwtPnBhcnRpYWxfcGF0aGxpc3QgPSBOSUw7CiAKIAkvKiBTZXQgdXAgdGhl IGR1bW15IHBhdGggKi8KLQlhZGRfcGF0aChyZWwsIChQYXRoICopIGNyZWF0ZV9hcHBlbmRfcGF0 aChOVUxMLCByZWwsIE5JTCwgTklMLAotCQkJCQkJCQkJCQkgIE5JTCwgcmVsLT5sYXRlcmFsX3Jl bGlkcywKLQkJCQkJCQkJCQkJICAwLCBmYWxzZSwgLTEpKTsKKwlhZGRfcGF0aChyb290LCByZWws IChQYXRoICopIGNyZWF0ZV9hcHBlbmRfcGF0aChOVUxMLCByZWwsIE5JTCwgTklMLAorCQkJCQkJ CQkJCQkJCU5JTCwgcmVsLT5sYXRlcmFsX3JlbGlkcywKKwkJCQkJCQkJCQkJCQkwLCBmYWxzZSwg LTEpKTsKIAogCS8qIFNldCBvciB1cGRhdGUgY2hlYXBlc3RfdG90YWxfcGF0aCBhbmQgcmVsYXRl ZCBmaWVsZHMgKi8KIAlzZXRfY2hlYXBlc3QocmVsKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL3RpZHBhdGguYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL3Rp ZHBhdGguYwppbmRleCBiMDMyM2IyNmVjYS4uMmU0MDk0NTk5ZWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL3RpZHBhdGguYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC90aWRwYXRoLmMKQEAgLTQ2Nyw4ICs0NjcsOCBAQCBCdWlsZFBhcmFtZXRlcml6ZWRU aWRQYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLCBMaXN0ICpjbGF1c2Vz KQogCQlyZXF1aXJlZF9vdXRlciA9IGJtc191bmlvbihyaW5mby0+cmVxdWlyZWRfcmVsaWRzLCBy ZWwtPmxhdGVyYWxfcmVsaWRzKTsKIAkJcmVxdWlyZWRfb3V0ZXIgPSBibXNfZGVsX21lbWJlcihy ZXF1aXJlZF9vdXRlciwgcmVsLT5yZWxpZCk7CiAKLQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBj cmVhdGVfdGlkc2Nhbl9wYXRoKHJvb3QsIHJlbCwgdGlkcXVhbHMsCi0JCQkJCQkJCQkJCQkgICBy ZXF1aXJlZF9vdXRlcikpOworCQlhZGRfcGF0aChyb290LCByZWwsIChQYXRoICopIGNyZWF0ZV90 aWRzY2FuX3BhdGgocm9vdCwgcmVsLCB0aWRxdWFscywKKwkJCQkJCQkJCQkJCQkJIHJlcXVpcmVk X291dGVyKSk7CiAJfQogfQogCkBAIC01MTksNyArNTE5LDcgQEAgY3JlYXRlX3RpZHNjYW5fcGF0 aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKIAkJICovCiAJCVJlbGlkcwkJ cmVxdWlyZWRfb3V0ZXIgPSByZWwtPmxhdGVyYWxfcmVsaWRzOwogCi0JCWFkZF9wYXRoKHJlbCwg KFBhdGggKikgY3JlYXRlX3RpZHNjYW5fcGF0aChyb290LCByZWwsIHRpZHF1YWxzLAorCQlhZGRf cGF0aChyb290LCByZWwsIChQYXRoICopIGNyZWF0ZV90aWRzY2FuX3BhdGgocm9vdCwgcmVsLCB0 aWRxdWFscywKIAkJCQkJCQkJCQkJCSAgIHJlcXVpcmVkX291dGVyKSk7CiAKIAkJLyoKQEAgLTU1 MSw5ICs1NTEsOSBAQCBjcmVhdGVfdGlkc2Nhbl9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqcmVsKQogCQkgKi8KIAkJUmVsaWRzCQlyZXF1aXJlZF9vdXRlciA9IHJlbC0+bGF0 ZXJhbF9yZWxpZHM7CiAKLQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBjcmVhdGVfdGlkcmFuZ2Vz Y2FuX3BhdGgocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCQl0aWRyYW5nZXF1YWxzLAotCQkJCQkJ CQkJCQkJCQlyZXF1aXJlZF9vdXRlcikpOworCQlhZGRfcGF0aChyb290LCByZWwsIChQYXRoICop IGNyZWF0ZV90aWRyYW5nZXNjYW5fcGF0aChyb290LCByZWwsCisJCQkJCQkJCQkJCQkJCQkgIHRp ZHJhbmdlcXVhbHMsCisJCQkJCQkJCQkJCQkJCQkgIHJlcXVpcmVkX291dGVyKSk7CiAJfQogCiAJ LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5hZ2cuYyBiL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5hZ2cuYwppbmRleCBhZmI1NDQ1Yjc3Yi4uOTJh YjVmNWFiOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5hZ2cu YworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFuYWdnLmMKQEAgLTIxNiw3ICsy MTYsNyBAQCBwcmVwcm9jZXNzX21pbm1heF9hZ2dyZWdhdGVzKFBsYW5uZXJJbmZvICpyb290KQog CSAqIGRvZXNuJ3QgbmVlZCB0byBjaGFuZ2UgYW55bW9yZSwgc28gbWFraW5nIHRoZSBwYXRodGFy Z2V0IG5vdyBpcyBzYWZlLgogCSAqLwogCWdyb3VwZWRfcmVsID0gZmV0Y2hfdXBwZXJfcmVsKHJv b3QsIFVQUEVSUkVMX0dST1VQX0FHRywgTlVMTCk7Ci0JYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQ YXRoICopCisJYWRkX3BhdGgocm9vdCwgZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkgY3JlYXRl X21pbm1heGFnZ19wYXRoKHJvb3QsIGdyb3VwZWRfcmVsLAogCQkJCQkJCQkgICBjcmVhdGVfcGF0 aHRhcmdldChyb290LAogCQkJCQkJCQkJCQkJCSByb290LT5wcm9jZXNzZWRfdGxpc3QpLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm1haW4uYyBiL3NyYy9iYWNr ZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKaW5kZXggZTE3ZDMxYTVjM2UuLjUwMjA3Mzgx ZDFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubWFpbi5jCisr KyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5tYWluLmMKQEAgLTEzMyw3ICsxMzMs NyBAQCBxdWVyeV9wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LAogCQkJCSAqIFNFTEVDVCBpcyBh IGtpbmQgb2YgZGVnZW5lcmF0ZS1ncm91cGluZyBjYXNlLCBzbyBpdCdzIG5vdAogCQkJCSAqIHRo YXQgbXVjaCBvZiBhIGNoZWF0LikKIAkJCQkgKi8KLQkJCQlhZGRfcGF0aChmaW5hbF9yZWwsIChQ YXRoICopCisJCQkJYWRkX3BhdGgocm9vdCwgZmluYWxfcmVsLCAoUGF0aCAqKQogCQkJCQkJIGNy ZWF0ZV9ncm91cF9yZXN1bHRfcGF0aChyb290LCBmaW5hbF9yZWwsCiAJCQkJCQkJCQkJCQkgIGZp bmFsX3JlbC0+cmVsdGFyZ2V0LAogCQkJCQkJCQkJCQkJICAoTGlzdCAqKSBwYXJzZS0+am9pbnRy ZWUtPnF1YWxzKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggOTQ4YWZk OTA5NDguLjhlNmRkMjNkZjk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBA IC0xOTkyLDcgKzE5OTIsNyBAQCBncm91cGluZ19wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBk b3VibGUgdHVwbGVfZnJhY3Rpb24sCiAJCX0KIAogCQkvKiBBbmQgc2hvdmUgaXQgaW50byBmaW5h bF9yZWwgKi8KLQkJYWRkX3BhdGgoZmluYWxfcmVsLCBwYXRoKTsKKwkJYWRkX3BhdGgocm9vdCwg ZmluYWxfcmVsLCBwYXRoKTsKIAl9CiAKIAkvKgpAQCAtMzk3NSw3ICszOTc1LDcgQEAgY3JlYXRl X2RlZ2VuZXJhdGVfZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8g KmlucHV0X3JlbCwKIAkJCQkJCQkJCSAoTGlzdCAqKSBwYXJzZS0+aGF2aW5nUXVhbCk7CiAJfQog Ci0JYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIHBhdGgpOworCWFkZF9wYXRoKHJvb3QsIGdyb3VwZWRf cmVsLCBwYXRoKTsKIH0KIAogLyoKQEAgLTQyOTYsNyArNDI5Niw3IEBAIGNvbnNpZGVyX2dyb3Vw aW5nc2V0c19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCXN0cmF0ID0gQUdHX01JWEVEOwog CQl9CiAKLQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCisJCWFkZF9wYXRoKHJvb3Qs IGdyb3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJCSBjcmVhdGVfZ3JvdXBpbmdzZXRzX3BhdGgocm9v dCwKIAkJCQkJCQkJCQkgIGdyb3VwZWRfcmVsLAogCQkJCQkJCQkJCSAgcGF0aCwKQEAgLTQ0NTQs NyArNDQ1NCw3IEBAIGNvbnNpZGVyX2dyb3VwaW5nc2V0c19wYXRocyhQbGFubmVySW5mbyAqcm9v dCwKIAogCQlpZiAocm9sbHVwcykKIAkJewotCQkJYWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRo ICopCisJCQlhZGRfcGF0aChyb290LCBncm91cGVkX3JlbCwgKFBhdGggKikKIAkJCQkJIGNyZWF0 ZV9ncm91cGluZ3NldHNfcGF0aChyb290LAogCQkJCQkJCQkJCQkgIGdyb3VwZWRfcmVsLAogCQkJ CQkJCQkJCQkgIHBhdGgsCkBAIC00NDY5LDcgKzQ0NjksNyBAQCBjb25zaWRlcl9ncm91cGluZ3Nl dHNfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJICogTm93IHRyeSB0aGUgc2ltcGxlIHNvcnRl ZCBjYXNlLgogCSAqLwogCWlmICghZ2QtPnVuc29ydGFibGVfc2V0cykKLQkJYWRkX3BhdGgoZ3Jv dXBlZF9yZWwsIChQYXRoICopCisJCWFkZF9wYXRoKHJvb3QsIGdyb3VwZWRfcmVsLCAoUGF0aCAq KQogCQkJCSBjcmVhdGVfZ3JvdXBpbmdzZXRzX3BhdGgocm9vdCwKIAkJCQkJCQkJCQkgIGdyb3Vw ZWRfcmVsLAogCQkJCQkJCQkJCSAgcGF0aCwKQEAgLTQ3MzUsNyArNDczNSw3IEBAIGNyZWF0ZV9v bmVfd2luZG93X3BhdGgoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCSAgdG9wd2luZG93ID8g dG9wcXVhbCA6IE5JTCwgdG9wd2luZG93KTsKIAl9CiAKLQlhZGRfcGF0aCh3aW5kb3dfcmVsLCBw YXRoKTsKKwlhZGRfcGF0aChyb290LCB3aW5kb3dfcmVsLCBwYXRoKTsKIH0KIAogLyoKQEAgLTUx NTQsMTQgKzUxNTQsMTQgQEAgY3JlYXRlX2ZpbmFsX2Rpc3RpbmN0X3BhdGhzKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJCQkJICogdXAgd2l0aCBhIGR1cGxpY2F0 ZSBMaW1pdFBhdGggaW4gdGhlIGZpbmFsIHBsYW4uIFRoYXQgZG9lcwogCQkJCSAqIG5vdCBzZWVt IHdvcnRoIHRyb3VibGluZyBvdmVyIHRvbyBtdWNoLgogCQkJCSAqLwotCQkJCWFkZF9wYXRoKGRp c3RpbmN0X3JlbCwgKFBhdGggKikKKwkJCQlhZGRfcGF0aChyb290LCBkaXN0aW5jdF9yZWwsIChQ YXRoICopCiAJCQkJCQkgY3JlYXRlX2xpbWl0X3BhdGgocm9vdCwgZGlzdGluY3RfcmVsLCBzb3J0 ZWRfcGF0aCwKIAkJCQkJCQkJCQkgICBOVUxMLCBsaW1pdENvdW50LAogCQkJCQkJCQkJCSAgIExJ TUlUX09QVElPTl9DT1VOVCwgMCwgMSkpOwogCQkJfQogCQkJZWxzZQogCQkJewotCQkJCWFkZF9w YXRoKGRpc3RpbmN0X3JlbCwgKFBhdGggKikKKwkJCQlhZGRfcGF0aChyb290LCBkaXN0aW5jdF9y ZWwsIChQYXRoICopCiAJCQkJCQkgY3JlYXRlX3VwcGVyX3VuaXF1ZV9wYXRoKHJvb3QsIGRpc3Rp bmN0X3JlbCwKIAkJCQkJCQkJCQkJCSAgc29ydGVkX3BhdGgsCiAJCQkJCQkJCQkJCQkgIGxpc3Rf bGVuZ3RoKHJvb3QtPmRpc3RpbmN0X3BhdGhrZXlzKSwKQEAgLTUxOTIsNyArNTE5Miw3IEBAIGNy ZWF0ZV9maW5hbF9kaXN0aW5jdF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq aW5wdXRfcmVsLAogCWlmIChhbGxvd19oYXNoICYmIGdyb3VwaW5nX2lzX2hhc2hhYmxlKHJvb3Qt PnByb2Nlc3NlZF9kaXN0aW5jdENsYXVzZSkpCiAJewogCQkvKiBHZW5lcmF0ZSBoYXNoZWQgYWdn cmVnYXRlIHBhdGggLS0tIG5vIHNvcnQgbmVlZGVkICovCi0JCWFkZF9wYXRoKGRpc3RpbmN0X3Jl bCwgKFBhdGggKikKKwkJYWRkX3BhdGgocm9vdCwgZGlzdGluY3RfcmVsLCAoUGF0aCAqKQogCQkJ CSBjcmVhdGVfYWdnX3BhdGgocm9vdCwKIAkJCQkJCQkJIGRpc3RpbmN0X3JlbCwKIAkJCQkJCQkJ IGNoZWFwZXN0X2lucHV0X3BhdGgsCkBAIC01MzA1LDcgKzUzMDUsNyBAQCBjcmVhdGVfb3JkZXJl ZF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCXNvcnRlZF9wYXRoID0gYXBwbHlfcHJvamVj dGlvbl90b19wYXRoKHJvb3QsIG9yZGVyZWRfcmVsLAogCQkJCQkJCQkJCQkJICAgc29ydGVkX3Bh dGgsIHRhcmdldCk7CiAKLQkJYWRkX3BhdGgob3JkZXJlZF9yZWwsIHNvcnRlZF9wYXRoKTsKKwkJ YWRkX3BhdGgocm9vdCwgb3JkZXJlZF9yZWwsIHNvcnRlZF9wYXRoKTsKIAl9CiAKIAkvKgpAQCAt NTM4Myw3ICs1MzgzLDcgQEAgY3JlYXRlX29yZGVyZWRfcGF0aHMoUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJc29ydGVkX3BhdGggPSBhcHBseV9wcm9qZWN0aW9uX3RvX3BhdGgocm9vdCwgb3JkZXJl ZF9yZWwsCiAJCQkJCQkJCQkJCQkJICAgc29ydGVkX3BhdGgsIHRhcmdldCk7CiAKLQkJCWFkZF9w YXRoKG9yZGVyZWRfcmVsLCBzb3J0ZWRfcGF0aCk7CisJCQlhZGRfcGF0aChyb290LCBvcmRlcmVk X3JlbCwgc29ydGVkX3BhdGgpOwogCQl9CiAJfQogCkBAIC03MDI0LDcgKzcwMjQsNyBAQCBhZGRf cGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1 dF9yZWwsCiAJCQkJCSAqIFdlIGhhdmUgYWdncmVnYXRpb24sIHBvc3NpYmx5IHdpdGggcGxhaW4g R1JPVVAgQlkuIE1ha2UKIAkJCQkJICogYW4gQWdnUGF0aC4KIAkJCQkJICovCi0JCQkJCWFkZF9w YXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQorCQkJCQlhZGRfcGF0aChyb290LCBncm91cGVkX3Jl bCwgKFBhdGggKikKIAkJCQkJCQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCiAJCQkJCQkJCQkJCSBn cm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJIHBhdGgsCkBAIC03MDQyLDcgKzcwNDIsNyBAQCBhZGRf cGF0aHNfdG9fZ3JvdXBpbmdfcmVsKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICppbnB1 dF9yZWwsCiAJCQkJCSAqIFdlIGhhdmUgR1JPVVAgQlkgd2l0aG91dCBhZ2dyZWdhdGlvbiBvciBn cm91cGluZyBzZXRzLgogCQkJCQkgKiBNYWtlIGEgR3JvdXBQYXRoLgogCQkJCQkgKi8KLQkJCQkJ YWRkX3BhdGgoZ3JvdXBlZF9yZWwsIChQYXRoICopCisJCQkJCWFkZF9wYXRoKHJvb3QsIGdyb3Vw ZWRfcmVsLCAoUGF0aCAqKQogCQkJCQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290LAogCQkJCQkJ CQkJCQkgICBncm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJICAgcGF0aCwKQEAgLTcwOTQsNyArNzA5 NCw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9w dEluZm8gKmlucHV0X3JlbCwKIAkJCQkJCWNvbnRpbnVlOwogCiAJCQkJCWlmIChwYXJzZS0+aGFz QWdncykKLQkJCQkJCWFkZF9wYXRoKGdyb3VwZWRfcmVsLCAoUGF0aCAqKQorCQkJCQkJYWRkX3Bh dGgocm9vdCwgZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJCSBjcmVhdGVfYWdnX3BhdGgo cm9vdCwKIAkJCQkJCQkJCQkJCSBncm91cGVkX3JlbCwKIAkJCQkJCQkJCQkJCSBwYXRoLApAQCAt NzEwNiw3ICs3MTA2LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJIGFnZ19maW5hbF9jb3N0 cywKIAkJCQkJCQkJCQkJCSBkTnVtR3JvdXBzKSk7CiAJCQkJCWVsc2UKLQkJCQkJCWFkZF9wYXRo KGdyb3VwZWRfcmVsLCAoUGF0aCAqKQorCQkJCQkJYWRkX3BhdGgocm9vdCwgZ3JvdXBlZF9yZWws IChQYXRoICopCiAJCQkJCQkJCSBjcmVhdGVfZ3JvdXBfcGF0aChyb290LAogCQkJCQkJCQkJCQkJ ICAgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkJCQkgICBwYXRoLApAQCAtNzEzNiw3ICs3MTM2LDcg QEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqaW5wdXRfcmVsLAogCQkJICogR2VuZXJhdGUgYSBIYXNoQWdnIFBhdGguICBXZSBqdXN0IG5l ZWQgYW4gQWdnIG92ZXIgdGhlCiAJCQkgKiBjaGVhcGVzdC10b3RhbCBpbnB1dCBwYXRoLCBzaW5j ZSBpbnB1dCBvcmRlciB3b24ndCBtYXR0ZXIuCiAJCQkgKi8KLQkJCWFkZF9wYXRoKGdyb3VwZWRf cmVsLCAoUGF0aCAqKQorCQkJYWRkX3BhdGgocm9vdCwgZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJ CQkJCSBjcmVhdGVfYWdnX3BhdGgocm9vdCwgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJCQkgY2hlYXBl c3RfcGF0aCwKIAkJCQkJCQkJCSBncm91cGVkX3JlbC0+cmVsdGFyZ2V0LApAQCAtNzE1Niw3ICs3 MTU2LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFubmVySW5mbyAqcm9vdCwgUmVs T3B0SW5mbyAqaW5wdXRfcmVsLAogCQl7CiAJCQlQYXRoCSAgICpwYXRoID0gcGFydGlhbGx5X2dy b3VwZWRfcmVsLT5jaGVhcGVzdF90b3RhbF9wYXRoOwogCi0JCQlhZGRfcGF0aChncm91cGVkX3Jl bCwgKFBhdGggKikKKwkJCWFkZF9wYXRoKHJvb3QsIGdyb3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJ CQkgY3JlYXRlX2FnZ19wYXRoKHJvb3QsCiAJCQkJCQkJCQkgZ3JvdXBlZF9yZWwsCiAJCQkJCQkJ CQkgcGF0aCwKQEAgLTczNDUsNyArNzM0NSw3IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3Bh dGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQljb250aW51ZTsKIAogCQkJCWlmIChwYXJzZS0+ aGFzQWdncykKLQkJCQkJYWRkX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAqKQor CQkJCQlhZGRfcGF0aChyb290LCBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJ CQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRf cmVsLAogCQkJCQkJCQkJCQkgcGF0aCwKQEAgLTczNTcsNyArNzM1Nyw3IEBAIGNyZWF0ZV9wYXJ0 aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkgYWdnX3Bh cnRpYWxfY29zdHMsCiAJCQkJCQkJCQkJCSBkTnVtUGFydGlhbEdyb3VwcykpOwogCQkJCWVsc2UK LQkJCQkJYWRkX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAqKQorCQkJCQlhZGRf cGF0aChyb290LCBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJIGNyZWF0 ZV9ncm91cF9wYXRoKHJvb3QsCiAJCQkJCQkJCQkJCSAgIHBhcnRpYWxseV9ncm91cGVkX3JlbCwK IAkJCQkJCQkJCQkJICAgcGF0aCwKQEAgLTc0MzMsNyArNzQzMyw3IEBAIGNyZWF0ZV9wYXJ0aWFs X2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBDaGVja2VkIGFib3ZlICov CiAJCUFzc2VydChwYXJzZS0+aGFzQWdncyB8fCBwYXJzZS0+Z3JvdXBDbGF1c2UpOwogCi0JCWFk ZF9wYXRoKHBhcnRpYWxseV9ncm91cGVkX3JlbCwgKFBhdGggKikKKwkJYWRkX3BhdGgocm9vdCwg cGFydGlhbGx5X2dyb3VwZWRfcmVsLCAoUGF0aCAqKQogCQkJCSBjcmVhdGVfYWdnX3BhdGgocm9v dCwKIAkJCQkJCQkJIHBhcnRpYWxseV9ncm91cGVkX3JlbCwKIAkJCQkJCQkJIGNoZWFwZXN0X3Rv dGFsX3BhdGgsCkBAIC03NTY4LDcgKzc1NjgsNyBAQCBnYXRoZXJfZ3JvdXBpbmdfcGF0aHMoUGxh bm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCkKIAkJCQkJCQkJCSBOVUxMLAogCQkJCQkJ CQkJICZ0b3RhbF9ncm91cHMpOwogCi0JCWFkZF9wYXRoKHJlbCwgcGF0aCk7CisJCWFkZF9wYXRo KHJvb3QsIHJlbCwgcGF0aCk7CiAJfQogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcHJlcC9wcmVwdW5pb24uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXB1 bmlvbi5jCmluZGV4IDFjNjljNmU5N2U4Li5mNDg3NWRlOGI0NSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3ByZXAvcHJlcHVuaW9uLmMKQEAgLTQ4Niw3ICs0ODYsNyBAQCBnZW5lcmF0ZV9yZWN1cnNp b25fcGF0aChTZXRPcGVyYXRpb25TdG10ICpzZXRPcCwgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJ CQkJCQkJCSAgIHJvb3QtPnd0X3BhcmFtX2lkLAogCQkJCQkJCQkJCQkgICBkTnVtR3JvdXBzKTsK IAotCWFkZF9wYXRoKHJlc3VsdF9yZWwsIHBhdGgpOworCWFkZF9wYXRoKHJvb3QsIHJlc3VsdF9y ZWwsIHBhdGgpOwogCXBvc3Rwcm9jZXNzX3NldG9wX3JlbChyb290LCByZXN1bHRfcmVsKTsKIAly ZXR1cm4gcmVzdWx0X3JlbDsKIH0KQEAgLTU1NCwxMiArNTU0LDEyIEBAIGJ1aWxkX3NldG9wX2No aWxkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQkJ CQkgbWFrZV90bGlzdF9mcm9tX3BhdGh0YXJnZXQoc3VicGF0aC0+cGF0aHRhcmdldCkpOwogCiAJ CQkvKiBHZW5lcmF0ZSBvdXRlciBwYXRoIHVzaW5nIHRoaXMgc3VicGF0aCAqLwotCQkJYWRkX3Bh dGgocmVsLCAoUGF0aCAqKSBjcmVhdGVfc3VicXVlcnlzY2FuX3BhdGgocm9vdCwKLQkJCQkJCQkJ CQkJCQkJCXJlbCwKLQkJCQkJCQkJCQkJCQkJCXN1YnBhdGgsCi0JCQkJCQkJCQkJCQkJCQl0cml2 aWFsX3RsaXN0LAotCQkJCQkJCQkJCQkJCQkJcGF0aGtleXMsCi0JCQkJCQkJCQkJCQkJCQlOVUxM KSk7CisJCQlhZGRfcGF0aChyb290LCByZWwsIChQYXRoICopIGNyZWF0ZV9zdWJxdWVyeXNjYW5f cGF0aChyb290LAorCQkJCQkJCQkJCQkJCQkJCSAgcmVsLAorCQkJCQkJCQkJCQkJCQkJCSAgc3Vi cGF0aCwKKwkJCQkJCQkJCQkJCQkJCQkgIHRyaXZpYWxfdGxpc3QsCisJCQkJCQkJCQkJCQkJCQkJ ICBwYXRoa2V5cywKKwkJCQkJCQkJCQkJCQkJCQkgIE5VTEwpKTsKIAkJfQogCiAJCS8qIHNraXAg ZGVhbGluZyB3aXRoIHNvcnRlZCBwYXRocyBpZiB0aGUgc2V0b3AgZG9lc24ndCBuZWVkIHRoZW0g Ki8KQEAgLTYyMiwxMiArNjIyLDEyIEBAIGJ1aWxkX3NldG9wX2NoaWxkX3BhdGhzKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJCQkJCQkJCQkJCQkgbWFrZV90bGlzdF9mcm9t X3BhdGh0YXJnZXQoc3VicGF0aC0+cGF0aHRhcmdldCkpOwogCiAJCQkvKiBHZW5lcmF0ZSBvdXRl ciBwYXRoIHVzaW5nIHRoaXMgc3VicGF0aCAqLwotCQkJYWRkX3BhdGgocmVsLCAoUGF0aCAqKSBj cmVhdGVfc3VicXVlcnlzY2FuX3BhdGgocm9vdCwKLQkJCQkJCQkJCQkJCQkJCXJlbCwKLQkJCQkJ CQkJCQkJCQkJCXN1YnBhdGgsCi0JCQkJCQkJCQkJCQkJCQl0cml2aWFsX3RsaXN0LAotCQkJCQkJ CQkJCQkJCQkJcGF0aGtleXMsCi0JCQkJCQkJCQkJCQkJCQlOVUxMKSk7CisJCQlhZGRfcGF0aChy b290LCByZWwsIChQYXRoICopIGNyZWF0ZV9zdWJxdWVyeXNjYW5fcGF0aChyb290LAorCQkJCQkJ CQkJCQkJCQkJCSAgcmVsLAorCQkJCQkJCQkJCQkJCQkJCSAgc3VicGF0aCwKKwkJCQkJCQkJCQkJ CQkJCQkgIHRyaXZpYWxfdGxpc3QsCisJCQkJCQkJCQkJCQkJCQkJICBwYXRoa2V5cywKKwkJCQkJ CQkJCQkJCQkJCQkgIE5VTEwpKTsKIAkJfQogCX0KIApAQCAtOTE5LDcgKzkxOSw3IEBAIGdlbmVy YXRlX3VuaW9uX3BhdGhzKFNldE9wZXJhdGlvblN0bXQgKm9wLCBQbGFubmVySW5mbyAqcm9vdCwK IAkJCQkJCQkJCQkJTklMLAogCQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJCQlkTnVtR3JvdXBz KTsKLQkJCWFkZF9wYXRoKHJlc3VsdF9yZWwsIHBhdGgpOworCQkJYWRkX3BhdGgocm9vdCwgcmVz dWx0X3JlbCwgcGF0aCk7CiAKIAkJCS8qIFRyeSBoYXNoIGFnZ3JlZ2F0ZSBvbiB0aGUgR2F0aGVy IHBhdGgsIGlmIHZhbGlkICovCiAJCQlpZiAoZ3BhdGggIT0gTlVMTCkKQEAgLTkzNSw3ICs5MzUs NyBAQCBnZW5lcmF0ZV91bmlvbl9wYXRocyhTZXRPcGVyYXRpb25TdG10ICpvcCwgUGxhbm5lcklu Zm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlOSUwsCiAJCQkJCQkJCQkJCQlOVUxMLAogCQkJCQkJCQkJ CQkJZE51bUdyb3Vwcyk7Ci0JCQkJYWRkX3BhdGgocmVzdWx0X3JlbCwgcGF0aCk7CisJCQkJYWRk X3BhdGgocm9vdCwgcmVzdWx0X3JlbCwgcGF0aCk7CiAJCQl9CiAJCX0KIApAQCAtOTU1LDcgKzk1 NSw3IEBAIGdlbmVyYXRlX3VuaW9uX3BhdGhzKFNldE9wZXJhdGlvblN0bXQgKm9wLCBQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJCQkgbGlzdF9sZW5ndGgocGF0aC0+cGF0aGtleXMpLAog CQkJCQkJCQkJCQkJCSBkTnVtR3JvdXBzKTsKIAotCQkJYWRkX3BhdGgocmVzdWx0X3JlbCwgcGF0 aCk7CisJCQlhZGRfcGF0aChyb290LCByZXN1bHRfcmVsLCBwYXRoKTsKIAogCQkJLyogVHJ5IFNv cnQgLT4gVW5pcXVlIG9uIHRoZSBHYXRoZXIgcGF0aCwgaWYgc2V0ICovCiAJCQlpZiAoZ3BhdGgg IT0gTlVMTCkKQEAgLTk3MSw3ICs5NzEsNyBAQCBnZW5lcmF0ZV91bmlvbl9wYXRocyhTZXRPcGVy YXRpb25TdG10ICpvcCwgUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQkJCSBwYXRoLAog CQkJCQkJCQkJCQkJCQkgbGlzdF9sZW5ndGgocGF0aC0+cGF0aGtleXMpLAogCQkJCQkJCQkJCQkJ CQkgZE51bUdyb3Vwcyk7Ci0JCQkJYWRkX3BhdGgocmVzdWx0X3JlbCwgcGF0aCk7CisJCQkJYWRk X3BhdGgocm9vdCwgcmVzdWx0X3JlbCwgcGF0aCk7CiAJCQl9CiAJCX0KIApAQCAtOTk2LDE2ICs5 OTYsMTYgQEAgZ2VuZXJhdGVfdW5pb25fcGF0aHMoU2V0T3BlcmF0aW9uU3RtdCAqb3AsIFBsYW5u ZXJJbmZvICpyb290LAogCQkJCQkJCQkJCQkJCSBsaXN0X2xlbmd0aCh0bGlzdCksCiAJCQkJCQkJ CQkJCQkJIGROdW1Hcm91cHMpOwogCi0JCQlhZGRfcGF0aChyZXN1bHRfcmVsLCBwYXRoKTsKKwkJ CWFkZF9wYXRoKHJvb3QsIHJlc3VsdF9yZWwsIHBhdGgpOwogCQl9CiAJfQogCWVsc2UKIAl7CiAJ CS8qIFVOSU9OIEFMTCAqLwotCQlhZGRfcGF0aChyZXN1bHRfcmVsLCBhcGF0aCk7CisJCWFkZF9w YXRoKHJvb3QsIHJlc3VsdF9yZWwsIGFwYXRoKTsKIAogCQlpZiAoZ3BhdGggIT0gTlVMTCkKLQkJ CWFkZF9wYXRoKHJlc3VsdF9yZWwsIGdwYXRoKTsKKwkJCWFkZF9wYXRoKHJvb3QsIHJlc3VsdF9y ZWwsIGdwYXRoKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0X3JlbDsKQEAgLTExODgsNyArMTE4OCw3 IEBAIGdlbmVyYXRlX25vbnVuaW9uX3BhdGhzKFNldE9wZXJhdGlvblN0bXQgKm9wLCBQbGFubmVy SW5mbyAqcm9vdCwKIAkJCQkJCQkJCSAgZE51bU91dHB1dFJvd3MpOwogCiAJcmVzdWx0X3JlbC0+ cm93cyA9IHBhdGgtPnJvd3M7Ci0JYWRkX3BhdGgocmVzdWx0X3JlbCwgcGF0aCk7CisJYWRkX3Bh dGgocm9vdCwgcmVzdWx0X3JlbCwgcGF0aCk7CiAJcmV0dXJuIHJlc3VsdF9yZWw7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCmluZGV4IGI4YjFlYWUyOTVlLi45MWQzOTRj ZTYyZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwor KysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jCkBAIC00MTcsNyArNDE3 LDcgQEAgc2V0X2NoZWFwZXN0KFJlbE9wdEluZm8gKnBhcmVudF9yZWwpCiAgKiBSZXR1cm5zIG5v dGhpbmcsIGJ1dCBtb2RpZmllcyBwYXJlbnRfcmVsLT5wYXRobGlzdC4KICAqLwogdm9pZAotYWRk X3BhdGgoUmVsT3B0SW5mbyAqcGFyZW50X3JlbCwgUGF0aCAqbmV3X3BhdGgpCithZGRfcGF0aChQ bGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcGFyZW50X3JlbCwgUGF0aCAqbmV3X3BhdGgp CiB7CiAJYm9vbAkJYWNjZXB0X25ldyA9IHRydWU7CS8qIHVubGVzcyB3ZSBmaW5kIGEgc3VwZXJp b3Igb2xkIHBhdGggKi8KIAlpbnQJCQlpbnNlcnRfYXQgPSAwOwkvKiB3aGVyZSB0byBpbnNlcnQg bmV3IGl0ZW0gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5v ZGUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3JlbG5vZGUuYwppbmRleCBlMDViMjFj ODg0ZS4uZTNhYzg1ZDUzZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L3JlbG5vZGUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9yZWxub2RlLmMKQEAg LTM5OSw3ICszOTksNyBAQCBidWlsZF9zaW1wbGVfcmVsKFBsYW5uZXJJbmZvICpyb290LCBpbnQg cmVsaWQsIFJlbE9wdEluZm8gKnBhcmVudCkKIAkJCSAqIFJlc3RyaWN0aW9uIGNsYXVzZSByZWR1 Y2VkIHRvIGNvbnN0YW50IEZBTFNFIG9yIE5VTEwuICBNYXJrIGFzCiAJCQkgKiBkdW1teSBzbyB3 ZSB3b24ndCBzY2FuIHRoaXMgcmVsYXRpb24uCiAJCQkgKi8KLQkJCW1hcmtfZHVtbXlfcmVsKHJl bCk7CisJCQltYXJrX2R1bW15X3JlbChyb290LCByZWwpOwogCQl9CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aG5vZGUuaCBiL3NyYy9pbmNsdWRlL29wdGltaXpl ci9wYXRobm9kZS5oCmluZGV4IDExMmU3YzIzZDRlLi4xNTc2NmU0ODlmZCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1p emVyL3BhdGhub2RlLmgKQEAgLTI2LDcgKzI2LDcgQEAgZXh0ZXJuIGludAljb21wYXJlX3BhdGhf Y29zdHMoUGF0aCAqcGF0aDEsIFBhdGggKnBhdGgyLAogZXh0ZXJuIGludAljb21wYXJlX2ZyYWN0 aW9uYWxfcGF0aF9jb3N0cyhQYXRoICpwYXRoMSwgUGF0aCAqcGF0aDIsCiAJCQkJCQkJCQkJICBk b3VibGUgZnJhY3Rpb24pOwogZXh0ZXJuIHZvaWQgc2V0X2NoZWFwZXN0KFJlbE9wdEluZm8gKnBh cmVudF9yZWwpOwotZXh0ZXJuIHZvaWQgYWRkX3BhdGgoUmVsT3B0SW5mbyAqcGFyZW50X3JlbCwg UGF0aCAqbmV3X3BhdGgpOworZXh0ZXJuIHZvaWQgYWRkX3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs IFJlbE9wdEluZm8gKnBhcmVudF9yZWwsIFBhdGggKm5ld19wYXRoKTsKIGV4dGVybiBib29sIGFk ZF9wYXRoX3ByZWNoZWNrKFJlbE9wdEluZm8gKnBhcmVudF9yZWwsCiAJCQkJCQkJICBDb3N0IHN0 YXJ0dXBfY29zdCwgQ29zdCB0b3RhbF9jb3N0LAogCQkJCQkJCSAgTGlzdCAqcGF0aGtleXMsIFJl bGlkcyByZXF1aXJlZF9vdXRlcik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIv cGF0aHMuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oCmluZGV4IDVjMDI5YjZiNjIw Li42ZmQ0NWJjOWRjZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgK KysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBl eHRlcm4gYm9vbCBoYXZlX2pvaW5fb3JkZXJfcmVzdHJpY3Rpb24oUGxhbm5lckluZm8gKnJvb3Qs CiAJCQkJCQkJCQkJUmVsT3B0SW5mbyAqcmVsMSwgUmVsT3B0SW5mbyAqcmVsMik7CiBleHRlcm4g Ym9vbCBoYXZlX2Rhbmdlcm91c19waHYoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJICAgUmVs aWRzIG91dGVyX3JlbGlkcywgUmVsaWRzIGlubmVyX3BhcmFtcyk7Ci1leHRlcm4gdm9pZCBtYXJr X2R1bW15X3JlbChSZWxPcHRJbmZvICpyZWwpOworZXh0ZXJuIHZvaWQgbWFya19kdW1teV9yZWwo UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnJlbCk7CiBleHRlcm4gdm9pZCBpbml0X2R1 bW15X3NqaW5mbyhTcGVjaWFsSm9pbkluZm8gKnNqaW5mbywgUmVsaWRzIGxlZnRfcmVsaWRzLAog CQkJCQkJCSAgUmVsaWRzIHJpZ2h0X3JlbGlkcyk7CiAKLS0gCjIuMzkuMyAoQXBwbGUgR2l0LTE0 NikKCg== --000000000000a08f37061e296eaa--