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 1tY2jU-002I5Q-Lm for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2025 12:42:53 +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 1tY2jT-00BF89-AB for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Jan 2025 12:42:51 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tY2jS-00BF7N-TW for pgsql-hackers@lists.postgresql.org; Wed, 15 Jan 2025 12:42:51 +0000 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tY2jQ-000YAP-2X for pgsql-hackers@lists.postgresql.org; Wed, 15 Jan 2025 12:42:51 +0000 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-21669fd5c7cso121255945ad.3 for ; Wed, 15 Jan 2025 04:42:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=timescale.com; s=google; t=1736944967; x=1737549767; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=PsMuY3+3ni0BLk1njGQUiMVt1VEtk7CqIB1O2UKu18o=; b=aLnBtP7Vwk4N5QF0t4Ow7b2Syjpy3kmR28jYLCMrBxpr6DBkIm+h7ykdB2mA1/NLaw yqb3XhsAMl3FthBDiEOn2mH7PIaAD/7ru0111wodqSTnyOiGRqDW0VIYT9qXS/ZZpMpT vsFebhm4xIg/6L/Dl3tleC9ufBPiLABeQTS21InqKTNvcSeTty/MCXiZVXnfSs9LlCYC o5thsJEqRShwAfOaSDQPS5YRCjvDcFY5koJzZi24bz+HRNyfp0K9ONofdyZweaOVHvSD /uDmP7DJoi6GsCqt5W4aElPl4+N9LpkCotcnRvUggsea5/K8OP61Owh5i9iF/MXBVqZk x8Lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736944967; x=1737549767; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PsMuY3+3ni0BLk1njGQUiMVt1VEtk7CqIB1O2UKu18o=; b=WJo2rOc+FXcvPsGVDRQMtt0sg/vmfTxCkGFS/uIwus43StLQ2NS8KG6SKBG9u+Setp sphopBXn8PP2rQp6SBGrk99iFxhtLEj+HEglHdRZacSR/rTCBKE5yeKl9JDvOpaKGXyR Kuwj6Y6gdmw6Cxlzw+NkeSF5LiBm4V00WkRnreFg9y3ym6Z5gmLhRDZ9yOpIQ5qXwpTu Sj7vv8ISU6A5ajtZf7162rAC1LKfE5jIANPsoEOk0kvwGTGiaR21GK/XSOvwhbov28QV KSoaTY5zHXteKZ31ytmaouDFeBeAPB0tlxvP5iqMqmY9rzNLkBXpJIb+vf3luNugxpGX yzPw== X-Gm-Message-State: AOJu0YxqaAu97QiHvU35ouvB0Wn2h986/xjlERCkq/vMIv1t7Ph3y67n F1Ef7G+1w6UZf7nluItWesJryMlS8p4mRTAH6xYOpRzKZbHTZEUvd6tguwPK8leugB16GU6/cgv JPKud99ETmwvWFq3Eh2UOu47IOnyDDPG9gNpFnJnh3bmf5oxxDDpn2A== X-Gm-Gg: ASbGncuSYJ0KcZC089jE/fwpU7nUCGYibB6kNtWO0ytyUBNX4FudOgfK1oaib/oyp9B Lua6ooSqu9zHu0eijt/xndwrZ3eATAc6gg6xo X-Google-Smtp-Source: AGHT+IHklJELyyJvrZSsvOtZ6X33bQ1HAD8cVQLbsqMUdjlxX3d1sDocHA0NQFjvZbPG/Z1qEJ6v7XNIeKqcWDYUsZA= X-Received: by 2002:a17:90b:2f4e:b0:2ee:f550:3848 with SMTP id 98e67ed59e1d1-2f548e98ea9mr38174070a91.5.1736944966629; Wed, 15 Jan 2025 04:42:46 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Aleksander Alekseev Date: Wed, 15 Jan 2025 15:42:35 +0300 X-Gm-Features: AbW1kvZEg2db9g4lFlkvpSLCVcR7UEGIpXxDEdZbNmJW0iOHPHcImOYBfJF8XQs Message-ID: Subject: Re: [PATCH] Refactor SLRU to always use long file names To: PostgreSQL Hackers Cc: Michael Paquier Content-Type: multipart/mixed; boundary="000000000000bb2f30062bbe0396" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bb2f30062bbe0396 Content-Type: text/plain; charset="UTF-8" Hi, > Here is an updated patch. The steps to test it manually are as follows. > > Compile and install PostgreSQL from the REL_17_STABLE branch: > > [...] > > As always, your feedback and suggestions are most welcomed. Rebased. -- Best regards, Aleksander Alekseev --000000000000bb2f30062bbe0396 Content-Type: application/octet-stream; name="v3-0001-Always-use-long-SLRU-segment-file-names.patch" Content-Disposition: attachment; filename="v3-0001-Always-use-long-SLRU-segment-file-names.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m5xw6czv0 RnJvbSAyOGUxZGM5NTY0MjU2ZjJiZWZlOTkxZGM5ZTg5MzkwZjBmMGY1YzdjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGVrc2FuZGVyIEFsZWtzZWV2IDxhbGVrc2FuZGVyQHRpbWVz Y2FsZS5jb20+CkRhdGU6IFdlZCwgMTEgU2VwIDIwMjQgMTM6MTc6MzMgKzAzMDAKU3ViamVjdDog W1BBVENIIHYzXSBBbHdheXMgdXNlIGxvbmcgU0xSVSBzZWdtZW50IGZpbGUgbmFtZXMKClBHMTcg aW50cm9kdWNlZCBsb25nIFNMUlUgc2VnbWVudCBmaWxlIG5hbWVzIChjb21taXQgNGVkOGYwOTEz YmZkKS4gV2UgdXNlZApzaG9ydCBvciBsb25nIGZpbGUgbmFtZXMgZGVwZW5kaW5nIG9uIFNscnVD dGwtPmxvbmdfc2VnbWVudF9uYW1lcy4gVGhpcyBjb21taXQKcmVmYWN0b3JzIFNMUlUgdG8gYWx3 YXlzIHVzZSBsb25nIGZpbGUgbmFtZXMgaW4gb3JkZXIgdG8gc2ltcGxpZnkgdGhlIGNvZGUuCgpB bGVrc2FuZGVyIEFsZWtzZWV2LCByZXZpZXdlZCBieSBNaWNoYWVsIFBhcXVpZXIKRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUo3YzZUT3k3ZlVXOU11TmVPV29yM2NTRm5RZzl0Z3o9 bWpYSERiOTRHT1J0TV9FeWdAbWFpbC5nbWFpbC5jb20KCighISEpIGJ1bXAgY2F0dmVyc2lvbiBh bmQgY2hhbmdlIHRoZSBjb3JyZXNwb25kaW5nIFRPRE8gRklYTUUgbGluZSBpbiBwZ191cGdyYWRl LmgKLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMgICAgICAgICAgIHwgIDIg Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jICAgICAgfCAgMyArLQog c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMgICAgICB8ICA2ICstCiBzcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMgICAgICAgICAgIHwgNzMgKysrKy0tLS0tLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMgICAgICAgfCAg MiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYyAgICAgICAgICAgICAgICB8ICAyICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgICAgIHwgIDIgKy0KIHNy Yy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgICAgICAgICAgICAgfCA3NCArKysrKysrKysr KysrKysrKysrKysKIHNyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmggICAgICAgICAgICAg fCAgNiArKwogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbCB8ICAy ICstCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oICAgICAgICAgICAgICAgICAgIHwgMTAgKy0t CiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3NscnUuYyAgICAgIHwgIDggKy0tCiAx MiBmaWxlcyBjaGFuZ2VkLCAxMDQgaW5zZXJ0aW9ucygrKSwgODYgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vY2xvZy5jCmluZGV4IDBkNTU2YzAwYjhjLi43YTIzOGVmYzIyNyAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtODEwLDcgKzgxMCw3IEBAIENMT0dTaG1lbUlu aXQodm9pZCkKIAlYYWN0Q3RsLT5QYWdlUHJlY2VkZXMgPSBDTE9HUGFnZVByZWNlZGVzOwogCVNp bXBsZUxydUluaXQoWGFjdEN0bCwgInRyYW5zYWN0aW9uIiwgQ0xPR1NobWVtQnVmZmVycygpLCBD TE9HX0xTTlNfUEVSX1BBR0UsCiAJCQkJICAicGdfeGFjdCIsIExXVFJBTkNIRV9YQUNUX0JVRkZF UiwKLQkJCQkgIExXVFJBTkNIRV9YQUNUX1NMUlUsIFNZTkNfSEFORExFUl9DTE9HLCBmYWxzZSk7 CisJCQkJICBMV1RSQU5DSEVfWEFDVF9TTFJVLCBTWU5DX0hBTkRMRVJfQ0xPRyk7CiAJU2xydVBh Z2VQcmVjZWRlc1VuaXRUZXN0cyhYYWN0Q3RsLCBDTE9HX1hBQ1RTX1BFUl9QQUdFKTsKIH0KIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYwppbmRleCA5NTA0OWFjZDBiNS4uOTky NTJjZDliODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90 cy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCkBAIC01NTYs OCArNTU2LDcgQEAgQ29tbWl0VHNTaG1lbUluaXQodm9pZCkKIAlTaW1wbGVMcnVJbml0KENvbW1p dFRzQ3RsLCAiY29tbWl0X3RpbWVzdGFtcCIsIENvbW1pdFRzU2htZW1CdWZmZXJzKCksIDAsCiAJ CQkJICAicGdfY29tbWl0X3RzIiwgTFdUUkFOQ0hFX0NPTU1JVFRTX0JVRkZFUiwKIAkJCQkgIExX VFJBTkNIRV9DT01NSVRUU19TTFJVLAotCQkJCSAgU1lOQ19IQU5ETEVSX0NPTU1JVF9UUywKLQkJ CQkgIGZhbHNlKTsKKwkJCQkgIFNZTkNfSEFORExFUl9DT01NSVRfVFMpOwogCVNscnVQYWdlUHJl Y2VkZXNVbml0VGVzdHMoQ29tbWl0VHNDdGwsIENPTU1JVF9UU19YQUNUU19QRVJfUEFHRSk7CiAK IAljb21taXRUc1NoYXJlZCA9IFNobWVtSW5pdFN0cnVjdCgiQ29tbWl0VHMgc2hhcmVkIiwKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKaW5kZXggMjdjY2RmOTUwMGYuLjJjYzY0 Mjg5MDU0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3Qu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9tdWx0aXhhY3QuYwpAQCAtMTk3NCwx NSArMTk3NCwxMyBAQCBNdWx0aVhhY3RTaG1lbUluaXQodm9pZCkKIAkJCQkgICJtdWx0aXhhY3Rf b2Zmc2V0IiwgbXVsdGl4YWN0X29mZnNldF9idWZmZXJzLCAwLAogCQkJCSAgInBnX211bHRpeGFj dC9vZmZzZXRzIiwgTFdUUkFOQ0hFX01VTFRJWEFDVE9GRlNFVF9CVUZGRVIsCiAJCQkJICBMV1RS QU5DSEVfTVVMVElYQUNUT0ZGU0VUX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNU X09GRlNFVCwKLQkJCQkgIGZhbHNlKTsKKwkJCQkgIFNZTkNfSEFORExFUl9NVUxUSVhBQ1RfT0ZG U0VUKTsKIAlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKE11bHRpWGFjdE9mZnNldEN0bCwgTVVM VElYQUNUX09GRlNFVFNfUEVSX1BBR0UpOwogCVNpbXBsZUxydUluaXQoTXVsdGlYYWN0TWVtYmVy Q3RsLAogCQkJCSAgIm11bHRpeGFjdF9tZW1iZXIiLCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZlcnMs IDAsCiAJCQkJICAicGdfbXVsdGl4YWN0L21lbWJlcnMiLCBMV1RSQU5DSEVfTVVMVElYQUNUTUVN QkVSX0JVRkZFUiwKIAkJCQkgIExXVFJBTkNIRV9NVUxUSVhBQ1RNRU1CRVJfU0xSVSwKLQkJCQkg IFNZTkNfSEFORExFUl9NVUxUSVhBQ1RfTUVNQkVSLAotCQkJCSAgZmFsc2UpOworCQkJCSAgU1lO Q19IQU5ETEVSX01VTFRJWEFDVF9NRU1CRVIpOwogCS8qIGRvZXNuJ3QgY2FsbCBTaW1wbGVMcnVU cnVuY2F0ZSgpIG9yIG1lZXQgY3JpdGVyaWEgZm9yIHVuaXQgdGVzdHMgKi8KIAogCS8qIEluaXRp YWxpemUgb3VyIHNoYXJlZCBzdGF0ZSBzdHJ1Y3QgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUu YwppbmRleCA5Y2U2MjhlNjJhNS4uY2MwNzhkMmU2Y2UgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3NscnUuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9z bHJ1LmMKQEAgLTc3LDQyICs3NywyMiBAQAogICoKICAqICJwYXRoIiBzaG91bGQgcG9pbnQgdG8g YSBidWZmZXIgYXQgbGVhc3QgTUFYUEdQQVRIIGNoYXJhY3RlcnMgbG9uZy4KICAqCi0gKiBJZiBj dGwtPmxvbmdfc2VnbWVudF9uYW1lcyBpcyB0cnVlLCBzZWdubyBjYW4gYmUgaW4gdGhlIHJhbmdl IFswLCAyXjYwLTFdLgotICogVGhlIHJlc3VsdGluZyBmaWxlIG5hbWUgaXMgbWFkZSBvZiAxNSBj aGFyYWN0ZXJzLCBlLmcuIGRpci8xMjM0NTY3ODlBQkNERUYuCi0gKgotICogSWYgY3RsLT5sb25n X3NlZ21lbnRfbmFtZXMgaXMgZmFsc2UsIHNlZ25vIGNhbiBiZSBpbiB0aGUgcmFuZ2UgWzAsIDJe MjQtMV0uCi0gKiBUaGUgcmVzdWx0aW5nIGZpbGUgbmFtZSBpcyBtYWRlIG9mIDQgdG8gNiBjaGFy YWN0ZXJzLCBhcyBvZjoKLSAqCi0gKiAgZGlyLzEyMzQgICBmb3IgWzAsIDJeMTYtMV0KLSAqICBk aXIvMTIzNDUgIGZvciBbMl4xNiwgMl4yMC0xXQotICogIGRpci8xMjM0NTYgZm9yIFsyXjIwLCAy XjI0LTFdCisgKiBzZWdubyBjYW4gYmUgaW4gdGhlIHJhbmdlIFswLCAyXjYwLTFdLiBUaGUgcmVz dWx0aW5nIGZpbGUgbmFtZSBpcyBtYWRlCisgKiBvZiAxNSBjaGFyYWN0ZXJzLCBlLmcuIGRpci8x MjM0NTY3ODlBQkNERUYuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50CiBTbHJ1RmlsZU5hbWUoU2xy dUN0bCBjdGwsIGNoYXIgKnBhdGgsIGludDY0IHNlZ25vKQogewotCWlmIChjdGwtPmxvbmdfc2Vn bWVudF9uYW1lcykKLQl7Ci0JCS8qCi0JCSAqIFdlIGNvdWxkIHVzZSAxNiBjaGFyYWN0ZXJzIGhl cmUgYnV0IHRoZSBkaXNhZHZhbnRhZ2Ugd291bGQgYmUgdGhhdAotCQkgKiB0aGUgU0xSVSBzZWdt ZW50cyB3aWxsIGJlIGhhcmQgdG8gZGlzdGluZ3Vpc2ggZnJvbSBXQUwgc2VnbWVudHMuCi0JCSAq Ci0JCSAqIEZvciB0aGlzIHJlYXNvbiB3ZSB1c2UgMTUgY2hhcmFjdGVycy4gSXQgaXMgZW5vdWdo IGJ1dCBhbHNvIG1lYW5zCi0JCSAqIHRoYXQgaW4gdGhlIGZ1dHVyZSB3ZSBjYW4ndCBkZWNyZWFz ZSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UIGVhc2lseS4KLQkJICovCi0JCUFzc2VydChzZWdubyA+ PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkZGRkZGRkZGRkYpKTsKLQkJcmV0dXJu IHNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwMTVsbFgiLCBjdGwtPkRpciwKLQkJCQkJ CShsb25nIGxvbmcpIHNlZ25vKTsKLQl9Ci0JZWxzZQotCXsKLQkJLyoKLQkJICogRGVzcGl0ZSB0 aGUgZmFjdCB0aGF0ICUwNFggZm9ybWF0IHN0cmluZyBpcyB1c2VkIHVwIHRvIDI0IGJpdAotCQkg KiBpbnRlZ2VycyBhcmUgYWxsb3dlZC4gU2VlIFNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVu Z3RoKCkKLQkJICovCi0JCUFzc2VydChzZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1Qo MHhGRkZGRkYpKTsKLQkJcmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwNFgi LCAoY3RsKS0+RGlyLAotCQkJCQkJKHVuc2lnbmVkIGludCkgc2Vnbm8pOwotCX0KKwkvKgorCSAq IFdlIGNvdWxkIHVzZSAxNiBjaGFyYWN0ZXJzIGhlcmUgYnV0IHRoZSBkaXNhZHZhbnRhZ2Ugd291 bGQgYmUgdGhhdAorCSAqIHRoZSBTTFJVIHNlZ21lbnRzIHdpbGwgYmUgaGFyZCB0byBkaXN0aW5n dWlzaCBmcm9tIFdBTCBzZWdtZW50cy4KKwkgKgorCSAqIEZvciB0aGlzIHJlYXNvbiB3ZSB1c2Ug MTUgY2hhcmFjdGVycy4gSXQgaXMgZW5vdWdoIGJ1dCBhbHNvIG1lYW5zCisJICogdGhhdCBpbiB0 aGUgZnV0dXJlIHdlIGNhbid0IGRlY3JlYXNlIFNMUlVfUEFHRVNfUEVSX1NFR01FTlQgZWFzaWx5 LgorCSAqLworCUFzc2VydChzZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZG RkZGRkZGRkZGRkYpKTsKKwlyZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTAx NWxsWCIsIGN0bC0+RGlyLAorCQkJCQkobG9uZyBsb25nKSBzZWdubyk7CiB9CiAKIC8qCkBAIC0y NTEsNyArMjMxLDcgQEAgU2ltcGxlTHJ1QXV0b3R1bmVCdWZmZXJzKGludCBkaXZpc29yLCBpbnQg bWF4KQogdm9pZAogU2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29uc3QgY2hhciAqbmFtZSwg aW50IG5zbG90cywgaW50IG5sc25zLAogCQkJICBjb25zdCBjaGFyICpzdWJkaXIsIGludCBidWZm ZXJfdHJhbmNoZV9pZCwgaW50IGJhbmtfdHJhbmNoZV9pZCwKLQkJCSAgU3luY1JlcXVlc3RIYW5k bGVyIHN5bmNfaGFuZGxlciwgYm9vbCBsb25nX3NlZ21lbnRfbmFtZXMpCisJCQkgIFN5bmNSZXF1 ZXN0SGFuZGxlciBzeW5jX2hhbmRsZXIpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQ7CiAJYm9vbAkJ Zm91bmQ7CkBAIC0zNDIsNyArMzIyLDYgQEAgU2ltcGxlTHJ1SW5pdChTbHJ1Q3RsIGN0bCwgY29u c3QgY2hhciAqbmFtZSwgaW50IG5zbG90cywgaW50IG5sc25zLAogCSAqLwogCWN0bC0+c2hhcmVk ID0gc2hhcmVkOwogCWN0bC0+c3luY19oYW5kbGVyID0gc3luY19oYW5kbGVyOwotCWN0bC0+bG9u Z19zZWdtZW50X25hbWVzID0gbG9uZ19zZWdtZW50X25hbWVzOwogCWN0bC0+bmJhbmtzID0gbmJh bmtzOwogCXN0cmxjcHkoY3RsLT5EaXIsIHN1YmRpciwgc2l6ZW9mKGN0bC0+RGlyKSk7CiB9CkBA IC0xNzQ4LDMwICsxNzI3LDYgQEAgU2xydVNjYW5EaXJDYkRlbGV0ZUFsbChTbHJ1Q3RsIGN0bCwg Y2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCiAJcmV0dXJuIGZhbHNl OwkJCQkvKiBrZWVwIGdvaW5nICovCiB9CiAKLS8qCi0gKiBBbiBpbnRlcm5hbCBmdW5jdGlvbiB1 c2VkIGJ5IFNscnVTY2FuRGlyZWN0b3J5KCkuCi0gKgotICogUmV0dXJucyB0cnVlIGlmIGEgZmls ZSB3aXRoIGEgbmFtZSBvZiBhIGdpdmVuIGxlbmd0aCBtYXkgYmUgYSBjb3JyZWN0Ci0gKiBTTFJV IHNlZ21lbnQuCi0gKi8KLXN0YXRpYyBpbmxpbmUgYm9vbAotU2xydUNvcnJlY3RTZWdtZW50Rmls ZW5hbWVMZW5ndGgoU2xydUN0bCBjdGwsIHNpemVfdCBsZW4pCi17Ci0JaWYgKGN0bC0+bG9uZ19z ZWdtZW50X25hbWVzKQotCQlyZXR1cm4gKGxlbiA9PSAxNSk7CQkvKiBzZWUgU2xydUZpbGVOYW1l KCkgKi8KLQllbHNlCi0KLQkJLyoKLQkJICogQ29tbWl0IDYzOGNmMDllNzZkIGFsbG93ZWQgNS1j aGFyYWN0ZXIgbGVuZ3Rocy4gTGF0ZXIgY29tbWl0Ci0JCSAqIDczYzk4NmFkZGU1IGFsbG93ZWQg Ni1jaGFyYWN0ZXIgbGVuZ3RoLgotCQkgKgotCQkgKiBOb3RlOiBUaGVyZSBpcyBhbiBvbmdvaW5n IHBsYW4gdG8gbWlncmF0ZSBhbGwgU0xSVXMgdG8gNjQtYml0IHBhZ2UKLQkJICogbnVtYmVycywg YW5kIHRoZSBjb3JyZXNwb25kaW5nIDE1LWNoYXJhY3RlciBmaWxlIG5hbWVzLCB3aGljaCBtYXkK LQkJICogZXZlbnR1YWxseSBkZXByZWNhdGUgdGhlIHN1cHBvcnQgZm9yIDQsIDUsIGFuZCA2LWNo YXJhY3RlciBuYW1lcy4KLQkJICovCi0JCXJldHVybiAobGVuID09IDQgfHwgbGVuID09IDUgfHwg bGVuID09IDYpOwotfQotCiAvKgogICogU2NhbiB0aGUgU2ltcGxlTHJ1IGRpcmVjdG9yeSBhbmQg YXBwbHkgYSBjYWxsYmFjayB0byBlYWNoIGZpbGUgZm91bmQgaW4gaXQuCiAgKgpAQCAtMTgwMyw3 ICsxNzU4LDcgQEAgU2xydVNjYW5EaXJlY3RvcnkoU2xydUN0bCBjdGwsIFNscnVTY2FuQ2FsbGJh Y2sgY2FsbGJhY2ssIHZvaWQgKmRhdGEpCiAKIAkJbGVuID0gc3RybGVuKGNsZGUtPmRfbmFtZSk7 CiAKLQkJaWYgKFNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3RoKGN0bCwgbGVuKSAmJgor CQlpZiAoKGxlbiA9PSAxNSkgJiYKIAkJCXN0cnNwbihjbGRlLT5kX25hbWUsICIwMTIzNDU2Nzg5 QUJDREVGIikgPT0gbGVuKQogCQl7CiAJCQlzZWdubyA9IHN0cnRvaTY0KGNsZGUtPmRfbmFtZSwg TlVMTCwgMTYpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJh bnMuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMKaW5kZXggMTUxNTM2 MThmYWQuLjU4YTVlZjY1N2VhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9zdWJ0cmFucy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMK QEAgLTI0Myw3ICsyNDMsNyBAQCBTVUJUUkFOU1NobWVtSW5pdCh2b2lkKQogCVN1YlRyYW5zQ3Rs LT5QYWdlUHJlY2VkZXMgPSBTdWJUcmFuc1BhZ2VQcmVjZWRlczsKIAlTaW1wbGVMcnVJbml0KFN1 YlRyYW5zQ3RsLCAic3VidHJhbnNhY3Rpb24iLCBTVUJUUkFOU1NobWVtQnVmZmVycygpLCAwLAog CQkJCSAgInBnX3N1YnRyYW5zIiwgTFdUUkFOQ0hFX1NVQlRSQU5TX0JVRkZFUiwKLQkJCQkgIExX VFJBTkNIRV9TVUJUUkFOU19TTFJVLCBTWU5DX0hBTkRMRVJfTk9ORSwgZmFsc2UpOworCQkJCSAg TFdUUkFOQ0hFX1NVQlRSQU5TX1NMUlUsIFNZTkNfSEFORExFUl9OT05FKTsKIAlTbHJ1UGFnZVBy ZWNlZGVzVW5pdFRlc3RzKFN1YlRyYW5zQ3RsLCBTVUJUUkFOU19YQUNUU19QRVJfUEFHRSk7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hc3luYy5jCmluZGV4IDRiZDM3ZDViZWI1Li4zNzNiMDM1N2ZhZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvYXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9hc3luYy5jCkBAIC01MzcsNyArNTM3LDcgQEAgQXN5bmNTaG1lbUluaXQodm9pZCkKIAlO b3RpZnlDdGwtPlBhZ2VQcmVjZWRlcyA9IGFzeW5jUXVldWVQYWdlUHJlY2VkZXM7CiAJU2ltcGxl THJ1SW5pdChOb3RpZnlDdGwsICJub3RpZnkiLCBub3RpZnlfYnVmZmVycywgMCwKIAkJCQkgICJw Z19ub3RpZnkiLCBMV1RSQU5DSEVfTk9USUZZX0JVRkZFUiwgTFdUUkFOQ0hFX05PVElGWV9TTFJV LAotCQkJCSAgU1lOQ19IQU5ETEVSX05PTkUsIHRydWUpOworCQkJCSAgU1lOQ19IQU5ETEVSX05P TkUpOwogCiAJaWYgKCFmb3VuZCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMK aW5kZXggNWIyMWEwNTM5ODEuLmJjODNlOGU4NTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3By ZWRpY2F0ZS5jCkBAIC04MTQsNyArODE0LDcgQEAgU2VyaWFsSW5pdCh2b2lkKQogCVNpbXBsZUxy dUluaXQoU2VyaWFsU2xydUN0bCwgInNlcmlhbGl6YWJsZSIsCiAJCQkJICBzZXJpYWxpemFibGVf YnVmZmVycywgMCwgInBnX3NlcmlhbCIsCiAJCQkJICBMV1RSQU5DSEVfU0VSSUFMX0JVRkZFUiwg TFdUUkFOQ0hFX1NFUklBTF9TTFJVLAotCQkJCSAgU1lOQ19IQU5ETEVSX05PTkUsIGZhbHNlKTsK KwkJCQkgIFNZTkNfSEFORExFUl9OT05FKTsKICNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCiAJ U2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5VW5pdFRlc3RzKCk7CiAjZW5kaWYKZGlmZiAtLWdp dCBhL3NyYy9iaW4vcGdfdXBncmFkZS9wZ191cGdyYWRlLmMgYi9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5jCmluZGV4IDM2YzdmMzg3OWQ1Li42ZDNkY2M2M2QyYiAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuYworKysgYi9zcmMvYmluL3BnX3VwZ3JhZGUv cGdfdXBncmFkZS5jCkBAIC0zOCw2ICszOCw3IEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlc19mZS5o IgogCisjaW5jbHVkZSA8ZGlyZW50Lmg+CiAjaW5jbHVkZSA8dGltZS5oPgogCiAjaW5jbHVkZSAi Y2F0YWxvZy9wZ19jbGFzc19kLmgiCkBAIC01OSw2ICs2MCw4IEBAIHN0YXRpYyB2b2lkIHByZXBh cmVfbmV3X2NsdXN0ZXIodm9pZCk7CiBzdGF0aWMgdm9pZCBwcmVwYXJlX25ld19nbG9iYWxzKHZv aWQpOwogc3RhdGljIHZvaWQgY3JlYXRlX25ld19vYmplY3RzKHZvaWQpOwogc3RhdGljIHZvaWQg Y29weV94YWN0X3hsb2dfeGlkKHZvaWQpOworc3RhdGljIHZvaWQgY2hlY2tfc2xydV9zZWdtZW50 X2ZpbGVuYW1lcyh2b2lkKTsKK3N0YXRpYyB2b2lkIHJlbmFtZV9zbHJ1X3NlZ21lbnRzKGNvbnN0 IGNoYXIgKmRpcm5hbWUpOwogc3RhdGljIHZvaWQgc2V0X2Zyb3plbnhpZHMoYm9vbCBtaW5teGlk X29ubHkpOwogc3RhdGljIHZvaWQgbWFrZV9vdXRwdXRkaXJzKGNoYXIgKnBnZGF0YSk7CiBzdGF0 aWMgdm9pZCBzZXR1cChjaGFyICphcmd2MCk7CkBAIC0xNTQsNiArMTU3LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJICovCiAKIAljb3B5X3hhY3RfeGxvZ194aWQoKTsKKwljaGVj a19zbHJ1X3NlZ21lbnRfZmlsZW5hbWVzKCk7CiAKIAkvKiBOZXcgbm93IHVzaW5nIHhpZHMgb2Yg dGhlIG9sZCBzeXN0ZW0gKi8KIApAQCAtODA2LDYgKzgxMCw3NiBAQCBjb3B5X3hhY3RfeGxvZ194 aWQodm9pZCkKIAljaGVja19vaygpOwogfQogCitzdGF0aWMgdm9pZAorcmVuYW1lX3NscnVfc2Vn bWVudHMoY29uc3QgY2hhciogZGlybmFtZSkKK3sKKwlESVIJCSAgICpkaXI7CisJc3RydWN0IGRp cmVudCAqZGU7CisJaW50IAkJbGVuOworCWludDY0IAkJc2Vnbm87CisJY2hhcgkJZGlyX3BhdGhb TUFYUEdQQVRIXTsKKwljaGFyCQlvbGRfcGF0aFtNQVhQR1BBVEhdOworCWNoYXIJCW5ld19wYXRo W01BWFBHUEFUSF07CisKKwlwcmVwX3N0YXR1cygiUmVuYW1pbmcgU0xSVSBzZWdtZW50cyBpbiAl cyIsIGRpcm5hbWUpOworCXNucHJpbnRmKGRpcl9wYXRoLCBzaXplb2YoZGlyX3BhdGgpLCAiJXMv JXMiLCBuZXdfY2x1c3Rlci5wZ2RhdGEsIGRpcm5hbWUpOworCisJZGlyID0gb3BlbmRpcihkaXJf cGF0aCk7CisJaWYgKGRpciA9PSBOVUxMKQorCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZGly ZWN0b3J5IFwiJXNcIjogJW0iLCBkaXJfcGF0aCk7CisKKwl3aGlsZSAoZXJybm8gPSAwLCAoZGUg PSByZWFkZGlyKGRpcikpICE9IE5VTEwpCisJeworCQkvKgorCQkgKiBpZ25vcmUgJy4nLCAnLi4n IGFuZCBldmVyeXRoaW5nIGVsc2UgdGhhdCBkb2Vzbid0IGxvb2sKKwkJICogbGlrZSBhbiBTTFJV IHNlZ21lbnQgd2l0aCBhIHNob3J0IGZpbGUgbmFtZQorCQkgKi8KKworCQlsZW4gPSBzdHJsZW4o ZGUtPmRfbmFtZSk7CisJCWlmKGxlbiAhPSA0ICYmIGxlbiAhPSA1ICYmIGxlbiAhPSA2KQorCQkJ Y29udGludWU7CisKKwkJaWYoc3Ryc3BuKGRlLT5kX25hbWUsICIwMTIzNDU2Nzg5QUJDREVGIikg IT0gbGVuKQorCQkJY29udGludWU7CisKKwkJc2Vnbm8gPSBzdHJ0b2k2NChkZS0+ZF9uYW1lLCBO VUxMLCAxNik7CisJCXNucHJpbnRmKG5ld19wYXRoLCBNQVhQR1BBVEgsICIlcy8lMDE1bGxYIiwg ZGlyX3BhdGgsCisJCQkJCShsb25nIGxvbmcpIHNlZ25vKTsKKwkJc25wcmludGYob2xkX3BhdGgs IE1BWFBHUEFUSCwgIiVzLyVzIiwgZGlyX3BhdGgsIGRlLT5kX25hbWUpOworCisJCWlmIChwZ19t dl9maWxlKG9sZF9wYXRoLCBuZXdfcGF0aCkgIT0gMCkKKwkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg cmVuYW1lIGZpbGUgXCIlc1wiIHRvIFwiJXNcIjogJW0iLAorCQkJCQkgb2xkX3BhdGgsIG5ld19w YXRoKTsKKwl9CisKKwlpZiAoZXJybm8pCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBkaXJl Y3RvcnkgXCIlc1wiOiAlbSIsIGRpcl9wYXRoKTsKKworCWlmIChjbG9zZWRpcihkaXIpKQorCQlw Z19mYXRhbCgiY291bGQgbm90IGNsb3NlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgZGlyX3BhdGgp OworCisJY2hlY2tfb2soKTsKK30KKworc3RhdGljIHZvaWQKK2NoZWNrX3NscnVfc2VnbWVudF9m aWxlbmFtZXModm9pZCkKK3sKKwlpbnQgaTsKKwlzdGF0aWMgY29uc3QgY2hhciogZGlyc1tdID0g eworCQkicGdfeGFjdCIsCisJCSJwZ19jb21taXRfdHMiLAorCQkicGdfbXVsdGl4YWN0L29mZnNl dHMiLAorCQkicGdfbXVsdGl4YWN0L21lbWJlcnMiLAorCQkicGdfc3VidHJhbnMiLAorCQkicGdf c2VyaWFsIiwKKwl9OworCisJaWYob2xkX2NsdXN0ZXIuY29udHJvbGRhdGEuY2F0X3ZlciA+PSBT TFJVX1NFR19GSUxFTkFNRVNfQ0hBTkdFX0NBVF9WRVIpCisJCXJldHVybjsKKworCWZvciAoaSA9 IDA7IGkgPCBzaXplb2YoZGlycykvc2l6ZW9mKGRpcnNbMF0pOyBpKyspCisJCXJlbmFtZV9zbHJ1 X3NlZ21lbnRzKGRpcnNbaV0pOworfQogCiAvKgogICoJc2V0X2Zyb3plbnhpZHMoKQpkaWZmIC0t Z2l0IGEvc3JjL2Jpbi9wZ191cGdyYWRlL3BnX3VwZ3JhZGUuaCBiL3NyYy9iaW4vcGdfdXBncmFk ZS9wZ191cGdyYWRlLmgKaW5kZXggMGNkZDY3NWU0ZjEuLmE4MzlmMTllMzEwIDEwMDY0NAotLS0g YS9zcmMvYmluL3BnX3VwZ3JhZGUvcGdfdXBncmFkZS5oCisrKyBiL3NyYy9iaW4vcGdfdXBncmFk ZS9wZ191cGdyYWRlLmgKQEAgLTEyNSw2ICsxMjUsMTIgQEAgZXh0ZXJuIGNoYXIgKm91dHB1dF9m aWxlc1tdOwogICovCiAjZGVmaW5lIEpTT05CX0ZPUk1BVF9DSEFOR0VfQ0FUX1ZFUiAyMDE0MDky OTEKIAorLyoKKyAqIGNoYW5nZSBvZiBTTFJVIHNlZ21lbnQgZmlsZW5hbWVzIGxlbmd0aCBpbiAx OC4wCisgKiBUT0RPIEZJWE1FIENIQU5HRSBUTyBUSEUgQUNUVUFMIFZBTFVFIEJFRk9SRSBDT01N SVRUSU5HCisgKi8KKyNkZWZpbmUgU0xSVV9TRUdfRklMRU5BTUVTX0NIQU5HRV9DQVRfVkVSIDIw MjQxMjIwMQorCiAKIC8qCiAgKiBFYWNoIHJlbGF0aW9uIGlzIHJlcHJlc2VudGVkIGJ5IGEgcmVs aW5mbyBzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw M19jb3JydXB0aW9uLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlv bi5wbAppbmRleCAxMTExYjA5NjM3ZC4uOWQxZGJiOTNkNzIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbApAQCAtMjM3LDcgKzIzNyw3IEBAIHN1YiBtdXRp bGF0ZV9leHRyYV90YWJsZXNwYWNlX2ZpbGUKIHN1YiBtdXRpbGF0ZV9taXNzaW5nX2ZpbGUKIHsK IAlteSAoJGJhY2t1cF9wYXRoKSA9IEBfOwotCW15ICRwYXRobmFtZSA9ICIkYmFja3VwX3BhdGgv cGdfeGFjdC8wMDAwIjsKKwlteSAkcGF0aG5hbWUgPSAiJGJhY2t1cF9wYXRoL3BnX3hhY3QvMDAw MDAwMDAwMDAwMDAwIjsKIAl1bmxpbmsoJHBhdGhuYW1lKSB8fCBkaWUgIiRwYXRobmFtZTogJCEi OwogCXJldHVybjsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmggYi9z cmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCmluZGV4IGUxNDI4MDBhYWIyLi5lY2YyY2E3OTY5MiAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3Mvc2xydS5oCkBAIC0xMzEsMTMgKzEzMSw2IEBAIHR5cGVkZWYgc3RydWN0IFNscnVDdGxE YXRhCiAJLyogTnVtYmVyIG9mIGJhbmtzIGluIHRoaXMgU0xSVS4gKi8KIAl1aW50MTYJCW5iYW5r czsKIAotCS8qCi0JICogSWYgdHJ1ZSwgdXNlIGxvbmcgc2VnbWVudCBmaWxlIG5hbWVzLiAgT3Ro ZXJ3aXNlLCB1c2Ugc2hvcnQgZmlsZSBuYW1lcy4KLQkgKgotCSAqIEZvciBkZXRhaWxzIGFib3V0 IHRoZSBmaWxlIG5hbWUgZm9ybWF0LCBzZWUgU2xydUZpbGVOYW1lKCkuCi0JICovCi0JYm9vbAkJ bG9uZ19zZWdtZW50X25hbWVzOwotCiAJLyoKIAkgKiBXaGljaCBzeW5jIGhhbmRsZXIgZnVuY3Rp b24gdG8gdXNlIHdoZW4gaGFuZGluZyBzeW5jIHJlcXVlc3RzIG92ZXIgdG8KIAkgKiB0aGUgY2hl Y2twb2ludGVyLiAgU1lOQ19IQU5ETEVSX05PTkUgdG8gZGlzYWJsZSBmc3luYyAoZWcgcGdfbm90 aWZ5KS4KQEAgLTE4NCw4ICsxNzcsNyBAQCBleHRlcm4gU2l6ZSBTaW1wbGVMcnVTaG1lbVNpemUo aW50IG5zbG90cywgaW50IG5sc25zKTsKIGV4dGVybiBpbnQJU2ltcGxlTHJ1QXV0b3R1bmVCdWZm ZXJzKGludCBkaXZpc29yLCBpbnQgbWF4KTsKIGV4dGVybiB2b2lkIFNpbXBsZUxydUluaXQoU2xy dUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBuc2xvdHMsIGludCBubHNucywKIAkJCQkJ CSAgY29uc3QgY2hhciAqc3ViZGlyLCBpbnQgYnVmZmVyX3RyYW5jaGVfaWQsCi0JCQkJCQkgIGlu dCBiYW5rX3RyYW5jaGVfaWQsIFN5bmNSZXF1ZXN0SGFuZGxlciBzeW5jX2hhbmRsZXIsCi0JCQkJ CQkgIGJvb2wgbG9uZ19zZWdtZW50X25hbWVzKTsKKwkJCQkJCSAgaW50IGJhbmtfdHJhbmNoZV9p ZCwgU3luY1JlcXVlc3RIYW5kbGVyIHN5bmNfaGFuZGxlcik7CiBleHRlcm4gaW50CVNpbXBsZUxy dVplcm9QYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOwogZXh0ZXJuIGludAlTaW1wbGVM cnVSZWFkUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAogCQkJ CQkJCSAgVHJhbnNhY3Rpb25JZCB4aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X3NscnUvdGVzdF9zbHJ1LmMgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3Ns cnUuYwppbmRleCAzZWE1Y2ViODU1Mi4uY2JkNTE3MzAxNWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rfc2xydS5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zbHJ1L3Rlc3Rfc2xydS5jCkBAIC0yMTMsMTEgKzIxMyw2IEBAIHRlc3Rfc2xydV9wYWdlX3By ZWNlZGVzX2xvZ2ljYWxseShpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpCiBzdGF0aWMgdm9pZAog dGVzdF9zbHJ1X3NobWVtX3N0YXJ0dXAodm9pZCkKIHsKLQkvKgotCSAqIFNob3J0IHNlZ21lbnRz IG5hbWVzIGFyZSB3ZWxsIHRlc3RlZCBlbHNld2hlcmUgc28gaW4gdGhpcyB0ZXN0IHdlIGFyZQot CSAqIGZvY3VzaW5nIG9uIGxvbmcgbmFtZXMuCi0JICovCi0JY29uc3QgYm9vbAlsb25nX3NlZ21l bnRfbmFtZXMgPSB0cnVlOwogCWNvbnN0IGNoYXIJc2xydV9kaXJfbmFtZVtdID0gInBnX3Rlc3Rf c2xydSI7CiAJaW50CQkJdGVzdF90cmFuY2hlX2lkOwogCWludAkJCXRlc3RfYnVmZmVyX3RyYW5j aGVfaWQ7CkBAIC0yNDEsOCArMjM2LDcgQEAgdGVzdF9zbHJ1X3NobWVtX3N0YXJ0dXAodm9pZCkK IAlUZXN0U2xydUN0bC0+UGFnZVByZWNlZGVzID0gdGVzdF9zbHJ1X3BhZ2VfcHJlY2VkZXNfbG9n aWNhbGx5OwogCVNpbXBsZUxydUluaXQoVGVzdFNscnVDdGwsICJUZXN0U0xSVSIsCiAJCQkJICBO VU1fVEVTVF9CVUZGRVJTLCAwLCBzbHJ1X2Rpcl9uYW1lLAotCQkJCSAgdGVzdF9idWZmZXJfdHJh bmNoZV9pZCwgdGVzdF90cmFuY2hlX2lkLCBTWU5DX0hBTkRMRVJfTk9ORSwKLQkJCQkgIGxvbmdf c2VnbWVudF9uYW1lcyk7CisJCQkJICB0ZXN0X2J1ZmZlcl90cmFuY2hlX2lkLCB0ZXN0X3RyYW5j aGVfaWQsIFNZTkNfSEFORExFUl9OT05FKTsKIH0KIAogdm9pZAotLSAKMi40Ny4xCgo= --000000000000bb2f30062bbe0396--