From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 1961F4B1EC for ; Thu, 30 May 2024 19:45:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5785B68D5B9; Thu, 30 May 2024 22:44:42 +0300 (EEST) Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA88F68D5AB for ; Thu, 30 May 2024 22:44:38 +0300 (EEST) Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-354f8a0cd08so1317178f8f.2 for ; Thu, 30 May 2024 12:44:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717098278; x=1717703078; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=miHaZHaSoro2wdWKfTvq1ahzEns2/nzc5vyoHrTtA1c=; b=XJwxnpM9q1apcYitzjhQwvGKRzFZ4N777iIz2lpevA+eyf6I6Kn9pizsalNLi3TgdR 5nCqamn9yIUu8az+1E6wmiXi7hJCNapxI/fhNH80GBDbv+qDFUahFCDhGZd6D25zCFpx vuyVOQOa51BVfDCQ+nvi0SL45Pf8TIMxDpJkI1wtfVpM4YPYpNd11NqJpZBYb2GK9ccn aH5WhptQbyHkVohuiNE1GWDKQ4/mPz/dvgGl8kLpShoQeV/vrtyPLDby5uXzrfYoOXU7 u92yAh5xNJK22wKASNakVgcKefvT5/DSdgKEhpHkcYeYuxz9q7I//0GC1FT4vJYwF34z TcHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717098278; x=1717703078; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=miHaZHaSoro2wdWKfTvq1ahzEns2/nzc5vyoHrTtA1c=; b=V5fC6Ry7NH9frhOntWhng21k31xo5cLwvncOgeJITfEOjjLVirplzO8OCLjrOdW504 r9bC9vTdWvkP89xsYAgPniVRCI9QryDkfn8ABbM1Rhm/Z7mUDh5P+rwSgE7sbQ3KuTf2 rTXMkioqRoi6rod5Mtq0UIM79Ou2i4K0+x1Z5GiHmetOcIuEiwzItQcqrx8NFejA4Mvj 5YA5ehfG6ms7jdiNvgfKl/U/wQK29RKsKes5Uynn2sp5ORoGsMiu/cCt2P0tyIVFz6Je aL0sur7WiGpjqJ7ROsPJt36KrDZFj1a2veDdvh3vrbmcohWoAGzmUytKqOmVEwCtM2bO zmRA== X-Gm-Message-State: AOJu0YywEdpbsn/3e+g02Ky8QUEmh8nTzanbev7vRErwfF5pyQetqGq1 tINYnHPNryTNWddlaNzgcXlq29UHHBHlKXOPkkxEJkw0K+AkR+KeJt4mJA== X-Google-Smtp-Source: AGHT+IEAWe8qeD3ZD1ZQ2fE0AhI/5nwN35cBiA1Zop3VynM2a4EOMho8+8FWoeHdo5M/CAH7NEfPpw== X-Received: by 2002:a05:6000:e43:b0:351:dace:3dac with SMTP id ffacd0b85a97d-35dc00be9a5mr2302276f8f.56.1717098277639; Thu, 30 May 2024 12:44:37 -0700 (PDT) Received: from fractale.lan ([2001:861:5102:3290:f88d:fc8b:a14:3fcb]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-35dd04c0de3sm225126f8f.9.2024.05.30.12.44.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 May 2024 12:44:37 -0700 (PDT) From: averne To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 May 2024 21:43:10 +0200 Message-ID: X-Mailer: git-send-email 2.45.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/16] nvtegra: add common hardware decoding code X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: averne Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: VGhpcyBpbmNsdWRlcyBkZWNvZGUgY29tbW9uIGRlL2luaXRpYWxpemF0aW9uIGNvZGUsIGRlY29k ZS1qb2IgbWFuYWdlbWVudCwgYW5kIGNvbnN0cmFpbnQgY2hlY2tzLgoKU2lnbmVkLW9mZi1ieTog YXZlcm5lIDxhdmVybmUzODFAZ21haWwuY29tPgotLS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICAg ICAgICB8ICAgMSArCiBsaWJhdmNvZGVjL01ha2VmaWxlICAgICAgICAgfCAgIDIgKwogbGliYXZj b2RlYy9od2NvbmZpZy5oICAgICAgIHwgICAyICsKIGxpYmF2Y29kZWMvbnZ0ZWdyYV9kZWNvZGUu YyB8IDUxNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Y29kZWMv bnZ0ZWdyYV9kZWNvZGUuaCB8ICA5NCArKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDYxNiBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9udnRlZ3JhX2RlY29kZS5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9udnRlZ3JhX2RlY29kZS5oCgpkaWZmIC0t Z2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDUxZjE2OWJmYmQuLjU2NmJiMzdiOGMg MTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTIwMjIsNiArMjAyMiw3 IEBAIEhXQUNDRUxfTElCUkFSWV9MSVNUPSIKICAgICBtbWFsCiAgICAgb214CiAgICAgb3BlbmNs CisgICAgbnZ0ZWdyYQogIgogCiBET0NVTUVOVF9MSVNUPSIKZGlmZiAtLWdpdCBhL2xpYmF2Y29k ZWMvTWFrZWZpbGUgYi9saWJhdmNvZGVjL01ha2VmaWxlCmluZGV4IDI0NDNkMmM2ZmQuLmYxZTJk YzY2MjUgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvTWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9N YWtlZmlsZQpAQCAtOTkzLDYgKzk5Myw3IEBAIE9CSlMtJChDT05GSUdfVkFBUEkpICAgICAgICAg ICAgICAgICAgICAgICs9IHZhYXBpX2RlY29kZS5vCiBPQkpTLSQoQ09ORklHX1ZJREVPVE9PTEJP WCkgICAgICAgICAgICAgICArPSB2aWRlb3Rvb2xib3gubwogT0JKUy0kKENPTkZJR19WRFBBVSkg ICAgICAgICAgICAgICAgICAgICAgKz0gdmRwYXUubwogT0JKUy0kKENPTkZJR19WVUxLQU4pICAg ICAgICAgICAgICAgICAgICAgKz0gdnVsa2FuLm8gdnVsa2FuX3ZpZGVvLm8KK09CSlMtJChDT05G SUdfTlZURUdSQSkgICAgICAgICAgICAgICAgICAgICs9IG52dGVncmFfZGVjb2RlLm8KIAogT0JK Uy0kKENPTkZJR19BVjFfRDNEMTFWQV9IV0FDQ0VMKSAgICAgICAgKz0gZHh2YTJfYXYxLm8KIE9C SlMtJChDT05GSUdfQVYxX0RYVkEyX0hXQUNDRUwpICAgICAgICAgICs9IGR4dmEyX2F2MS5vCkBA IC0xMjg1LDYgKzEyODYsNyBAQCBTS0lQSEVBREVSUy0kKENPTkZJR19WSURFT1RPT0xCT1gpICAg ICArPSB2aWRlb3Rvb2xib3guaCB2dF9pbnRlcm5hbC5oCiBTS0lQSEVBREVSUy0kKENPTkZJR19W VUxLQU4pICAgICAgICAgICArPSB2dWxrYW4uaCB2dWxrYW5fdmlkZW8uaCB2dWxrYW5fZGVjb2Rl LmgKIFNLSVBIRUFERVJTLSQoQ09ORklHX1Y0TDJfTTJNKSAgICAgICAgICs9IHY0bDJfYnVmZmVy cy5oIHY0bDJfY29udGV4dC5oIHY0bDJfbTJtLmgKIFNLSVBIRUFERVJTLSQoQ09ORklHX1pMSUIp ICAgICAgICAgICAgICs9IHpsaWJfd3JhcHBlci5oCitTS0lQSEVBREVSUy0kKENPTkZJR19OVlRF R1JBKSAgICAgICAgICArPSBudnRlZ3JhX2RlY29kZS5oCiAKIFRFU1RQUk9HUyA9IGF2Y29kZWMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICAgICAgICAgIGF2cGFja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaHdjb25maWcuaCBiL2xpYmF2 Y29kZWMvaHdjb25maWcuaAppbmRleCBlZTI5Y2E2MzFkLi5hM2MzNDAyYzc3IDEwMDY0NAotLS0g YS9saWJhdmNvZGVjL2h3Y29uZmlnLmgKKysrIGIvbGliYXZjb2RlYy9od2NvbmZpZy5oCkBAIC03 OSw2ICs3OSw4IEBAIHZvaWQgZmZfaHdhY2NlbF91bmluaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 KTsKICAgICBIV19DT05GSUdfSFdBQ0NFTCgwLCAwLCAxLCBEM0QxMVZBX1ZMRCwgIE5PTkUsICAg ICAgICAgZmZfICMjIGNvZGVjICMjIF9kM2QxMXZhX2h3YWNjZWwpCiAjZGVmaW5lIEhXQUNDRUxf RDNEMTJWQShjb2RlYykgXAogICAgIEhXX0NPTkZJR19IV0FDQ0VMKDEsIDEsIDAsIEQzRDEyLCAg ICAgICAgRDNEMTJWQSwgICAgICBmZl8gIyMgY29kZWMgIyMgX2QzZDEydmFfaHdhY2NlbCkKKyNk ZWZpbmUgSFdBQ0NFTF9OVlRFR1JBKGNvZGVjKSBcCisgICAgSFdfQ09ORklHX0hXQUNDRUwoMSwg MSwgMCwgTlZURUdSQSwgICAgICBOVlRFR1JBLCAgICAgIGZmXyAjIyBjb2RlYyAjIyBfbnZ0ZWdy YV9od2FjY2VsKQogCiAjZGVmaW5lIEhXX0NPTkZJR19FTkNPREVSKGRldmljZSwgZnJhbWVzLCBh ZF9ob2MsIGZvcm1hdCwgZGV2aWNlX3R5cGVfKSBcCiAgICAgJihjb25zdCBBVkNvZGVjSFdDb25m aWdJbnRlcm5hbCkgeyBcCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL252dGVncmFfZGVjb2RlLmMg Yi9saWJhdmNvZGVjL252dGVncmFfZGVjb2RlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMC4uMTk3OGZjZjY0NAotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvbnZ0 ZWdyYV9kZWNvZGUuYwpAQCAtMCwwICsxLDUxNyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAy NCBhdmVybmUgPGF2ZXJuZTM4MUBnbWFpbC5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQg b2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAq IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisgKi8KKworI2luY2x1 ZGUgImxpYmF2dXRpbC9od2NvbnRleHQuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvaHdjb250ZXh0 X252dGVncmEuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvbnZ0ZWdyYV9ob3N0MXguaCIKKyNpbmNs dWRlICJsaWJhdnV0aWwvcGl4ZGVzYy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9waXhmbXQuaCIK KyNpbmNsdWRlICJsaWJhdnV0aWwvaW50cmVhZHdyaXRlLmgiCisKKyNpbmNsdWRlICJhdmNvZGVj LmgiCisjaW5jbHVkZSAiY29kZWNfZGVzYy5oIgorI2luY2x1ZGUgImludGVybmFsLmgiCisjaW5j bHVkZSAiZGVjb2RlLmgiCisjaW5jbHVkZSAibnZ0ZWdyYV9kZWNvZGUuaCIKKworc3RhdGljIHZv aWQgbnZ0ZWdyYV9pbnB1dF9tYXBfZnJlZSh2b2lkICpvcGFxdWUsIHVpbnQ4X3QgKmRhdGEpIHsK KyAgICBBVk5WVGVncmFNYXAgKm1hcCA9IChBVk5WVGVncmFNYXAgKilkYXRhOworCisgICAgaWYg KCFkYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBhdl9udnRlZ3JhX21hcF9kZXN0cm95KG1h cCk7CisKKyAgICBhdl9mcmVlcCgmbWFwKTsKK30KKworc3RhdGljIEFWQnVmZmVyUmVmICpudnRl Z3JhX2lucHV0X21hcF9hbGxvYyh2b2lkICpvcGFxdWUsIHNpemVfdCBzaXplKSB7CisgICAgRkZO VlRlZ3JhRGVjb2RlQ29udGV4dCAqY3R4ID0gb3BhcXVlOworCisgICAgQVZCdWZmZXJSZWYgICpi dWZmZXI7CisgICAgQVZOVlRlZ3JhTWFwICptYXA7CisgICAgaW50IGVycjsKKworICAgIG1hcCA9 IGF2X21hbGxvY3ooc2l6ZW9mKCptYXApKTsKKyAgICBpZiAoIW1hcCkKKyAgICAgICAgcmV0dXJu IE5VTEw7CisKKyAgICBlcnIgPSBhdl9udnRlZ3JhX21hcF9jcmVhdGUobWFwLCBjdHgtPmNoYW5u ZWwsIGN0eC0+aW5wdXRfbWFwX3NpemUsIDB4MTAwLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBOVk1BUF9IRUFQX0lPVk1NLCBOVk1BUF9IQU5ETEVfV1JJVEVfQ09NQklORSk7Cisg ICAgaWYgKGVyciA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgYnVmZmVyID0gYXZf YnVmZmVyX2NyZWF0ZSgodWludDhfdCAqKW1hcCwgc2l6ZW9mKCptYXApLCBudnRlZ3JhX2lucHV0 X21hcF9mcmVlLCBjdHgsIDApOworICAgIGlmICghYnVmZmVyKQorICAgICAgICBnb3RvIGZhaWw7 CisKKyAgICBjdHgtPm5ld19pbnB1dF9idWZmZXIgPSB0cnVlOworCisgICAgcmV0dXJuIGJ1ZmZl cjsKKworZmFpbDoKKyAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gY3Jl YXRlIGJ1ZmZlclxuIik7CisgICAgYXZfbnZ0ZWdyYV9tYXBfZGVzdHJveShtYXApOworICAgIGF2 X2ZyZWVwKG1hcCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2ludCBmZl9udnRlZ3JhX2RlY29k ZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgRkZOVlRlZ3JhRGVjb2RlQ29udGV4dCAqY3R4 KSB7CisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAqZnJhbWVzX2N0eDsKKyAgICBBVkhXRGV2 aWNlQ29udGV4dCAgICAgICpod19kZXZpY2VfY3R4OworICAgIEFWTlZUZWdyYURldmljZUNvbnRl eHQgKmRldmljZV9od2N0eDsKKworICAgIGludCBlcnI7CisKKyAgICBlcnIgPSBmZl9kZWNvZGVf Z2V0X2h3X2ZyYW1lc19jdHgoYXZjdHgsIEFWX0hXREVWSUNFX1RZUEVfTlZURUdSQSk7CisgICAg aWYgKGVyciA8IDApCisgICAgICAgIGdvdG8gZmFpbDsKKworICAgIGZyYW1lc19jdHggICAgPSAo QVZIV0ZyYW1lc0NvbnRleHQgKilhdmN0eC0+aHdfZnJhbWVzX2N0eC0+ZGF0YTsKKyAgICBod19k ZXZpY2VfY3R4ID0gKEFWSFdEZXZpY2VDb250ZXh0ICopZnJhbWVzX2N0eC0+ZGV2aWNlX3JlZi0+ ZGF0YTsKKyAgICBkZXZpY2VfaHdjdHggID0gaHdfZGV2aWNlX2N0eC0+aHdjdHg7CisKKyAgICBp ZiAoKCFjdHgtPmlzX252anBnICYmICFkZXZpY2VfaHdjdHgtPm52ZGVjX3ZlcnNpb24pIHx8IChj dHgtPmlzX252anBnICYmICFkZXZpY2VfaHdjdHgtPm52anBnX3ZlcnNpb24pKQorICAgICAgICBy ZXR1cm4gQVZFUlJPUihFQUNDRVMpOworCisgICAgY3R4LT5od19kZXZpY2VfcmVmID0gYXZfYnVm ZmVyX3JlZihmcmFtZXNfY3R4LT5kZXZpY2VfcmVmKTsKKyAgICBpZiAoIWN0eC0+aHdfZGV2aWNl X3JlZikgeworICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZmFp bDsKKyAgICB9CisKKyAgICBjdHgtPmRlY29kZXJfcG9vbCA9IGF2X2J1ZmZlcl9wb29sX2luaXQy KHNpemVvZihBVk5WVGVncmFNYXApLCBjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBudnRlZ3JhX2lucHV0X21hcF9hbGxvYywgTlVMTCk7CisgICAgaWYg KCFjdHgtPmRlY29kZXJfcG9vbCkgeworICAgICAgICBlcnIgPSBBVkVSUk9SKEVOT01FTSk7Cisg ICAgICAgIGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBjdHgtPmNoYW5uZWwgPSAhY3R4LT5pc19u dmpwZyA/ICZkZXZpY2VfaHdjdHgtPm52ZGVjX2NoYW5uZWwgOiAmZGV2aWNlX2h3Y3R4LT5udmpw Z19jaGFubmVsOworCisgICAgZXJyID0gYXZfbnZ0ZWdyYV9jbWRidWZfaW5pdCgmY3R4LT5jbWRi dWYpOworICAgIGlmIChlcnIgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICBlcnIgPSBh dl9udnRlZ3JhX2Rmc19pbml0KGh3X2RldmljZV9jdHgsIGN0eC0+Y2hhbm5lbCwgYXZjdHgtPmNv ZGVkX3dpZHRoLCBhdmN0eC0+Y29kZWRfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXZfcTJkKGF2Y3R4LT5mcmFtZXJhdGUpKTsKKyAgICBpZiAoZXJyIDwgMCkKKyAgICAg ICAgZ290byBmYWlsOworCisgICAgcmV0dXJuIDA7CisKK2ZhaWw6CisgICAgZmZfbnZ0ZWdyYV9k ZWNvZGVfdW5pbml0KGF2Y3R4LCBjdHgpOworICAgIHJldHVybiBlcnI7Cit9CisKK2ludCBmZl9u dnRlZ3JhX2RlY29kZV91bmluaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBGRk5WVGVncmFEZWNv ZGVDb250ZXh0ICpjdHgpIHsKKyAgICBBVkhXRnJhbWVzQ29udGV4dCAqZnJhbWVzX2N0eDsKKyAg ICBBVkhXRGV2aWNlQ29udGV4dCAqaHdfZGV2aWNlX2N0eDsKKworICAgIGF2X2J1ZmZlcl9wb29s X3VuaW5pdCgmY3R4LT5kZWNvZGVyX3Bvb2wpOworCisgICAgYXZfYnVmZmVyX3VucmVmKCZjdHgt Pmh3X2RldmljZV9yZWYpOworCisgICAgYXZfbnZ0ZWdyYV9jbWRidWZfZGVpbml0KCZjdHgtPmNt ZGJ1Zik7CisKKyAgICBpZiAoYXZjdHgtPmh3X2ZyYW1lc19jdHgpIHsKKyAgICAgICAgZnJhbWVz X2N0eCAgICA9IChBVkhXRnJhbWVzQ29udGV4dCAqKWF2Y3R4LT5od19mcmFtZXNfY3R4LT5kYXRh OworICAgICAgICBod19kZXZpY2VfY3R4ID0gKEFWSFdEZXZpY2VDb250ZXh0ICopZnJhbWVzX2N0 eC0+ZGV2aWNlX3JlZi0+ZGF0YTsKKworICAgICAgICBhdl9udnRlZ3JhX2Rmc191bmluaXQoaHdf ZGV2aWNlX2N0eCwgY3R4LT5jaGFubmVsKTsKKyAgICB9CisKKworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgdm9pZCBudnRlZ3JhX2ZkZF9wcml2X2ZyZWUodm9pZCAqcHJpdikgeworICAgIEZG TlZUZWdyYURlY29kZUZyYW1lICAgICp0ZiA9IHByaXY7CisgICAgRkZOVlRlZ3JhRGVjb2RlQ29u dGV4dCAqY3R4ID0gdGYtPmN0eDsKKworICAgIGlmICghdGYpCisgICAgICAgIHJldHVybjsKKwor ICAgIGlmICh0Zi0+aW5fZmxpZ2h0KQorICAgICAgICBhdl9udnRlZ3JhX3N5bmNwdF93YWl0KGN0 eC0+Y2hhbm5lbCwgdGYtPmZlbmNlLCAtMSk7CisKKyAgICBhdl9idWZmZXJfdW5yZWYoJnRmLT5p bnB1dF9tYXBfcmVmKTsKKyAgICBhdl9mcmVlcCgmdGYpOworfQorCitpbnQgZmZfbnZ0ZWdyYV93 YWl0X2RlY29kZSh2b2lkICpsb2djdHgsIEFWRnJhbWUgKmZyYW1lKSB7CisgICAgRnJhbWVEZWNv ZGVEYXRhICAgICAgICAgICAgICpmZGQgPSAoRnJhbWVEZWNvZGVEYXRhICopZnJhbWUtPnByaXZh dGVfcmVmLT5kYXRhOworICAgIEZGTlZUZWdyYURlY29kZUZyYW1lICAgICAgICAgKnRmID0gZmRk LT5od2FjY2VsX3ByaXY7CisgICAgRkZOVlRlZ3JhRGVjb2RlQ29udGV4dCAgICAgICpjdHggPSB0 Zi0+Y3R4OworICAgIEFWTlZUZWdyYU1hcCAgICAgICAgICAqaW5wdXRfbWFwID0gKEFWTlZUZWdy YU1hcCAqKXRmLT5pbnB1dF9tYXBfcmVmLT5kYXRhOworICAgIEFWSFdEZXZpY2VDb250ZXh0ICpo d19kZXZpY2VfY3R4ID0gKEFWSFdEZXZpY2VDb250ZXh0ICopY3R4LT5od19kZXZpY2VfcmVmLT5k YXRhOworCisgICAgbnZkZWNfc3RhdHVzX3MgKm52ZGVjX3N0YXR1czsKKyAgICBudmpwZ19kZWNf c3RhdHVzICpudmpwZ19zdGF0dXM7CisgICAgdWludDMyX3QgZGVjb2RlX2N5Y2xlczsKKyAgICB1 aW50OF90ICptZW07CisgICAgaW50IGVycjsKKworICAgIGlmICghdGYtPmluX2ZsaWdodCkKKyAg ICAgICAgcmV0dXJuIDA7CisKKyAgICBtZW0gPSBhdl9udnRlZ3JhX21hcF9nZXRfYWRkcihpbnB1 dF9tYXApOworCisgICAgZXJyID0gYXZfbnZ0ZWdyYV9zeW5jcHRfd2FpdChjdHgtPmNoYW5uZWws IHRmLT5mZW5jZSwgLTEpOworICAgIGlmIChlcnIgPCAwKQorICAgICAgICByZXR1cm4gZXJyOwor CisgICAgdGYtPmluX2ZsaWdodCA9IGZhbHNlOworCisgICAgaWYgKCFjdHgtPmlzX252anBnKSB7 CisgICAgICAgIG52ZGVjX3N0YXR1cyA9IChudmRlY19zdGF0dXNfcyAqKShtZW0gKyBjdHgtPnN0 YXR1c19vZmYpOworICAgICAgICBpZiAobnZkZWNfc3RhdHVzLT5lcnJvcl9zdGF0dXMgIT0gMCB8 fCBudmRlY19zdGF0dXMtPm1ic19pbl9lcnJvciAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIEFW RVJST1JfVU5LTk9XTjsKKworICAgICAgICBkZWNvZGVfY3ljbGVzID0gbnZkZWNfc3RhdHVzLT5j eWNsZV9jb3VudCAqIDE2OworICAgIH0gZWxzZSB7CisgICAgICAgIG52anBnX3N0YXR1cyA9IChu dmpwZ19kZWNfc3RhdHVzICopKG1lbSArIGN0eC0+c3RhdHVzX29mZik7CisgICAgICAgIGlmIChu dmpwZ19zdGF0dXMtPmVycm9yX3N0YXR1cyAhPSAwIHx8IG52anBnX3N0YXR1cy0+Ynl0ZXNfb2Zm c2V0ID09IDApCisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9VTktOT1dOOworCisgICAgICAg IGRlY29kZV9jeWNsZXMgPSBudmpwZ19zdGF0dXMtPmN5Y2xlX2NvdW50OworICAgIH0KKworICAg IC8qIERlY29kZSB0aW1lIGluIMK1czogZGVjb2RlX2N5Y2xlcyAqIDEwMDAwMDAgLyBjdHgtPmNo YW5uZWwtPmNsb2NrICovCisgICAgZXJyID0gYXZfbnZ0ZWdyYV9kZnNfdXBkYXRlKGh3X2Rldmlj ZV9jdHgsIGN0eC0+Y2hhbm5lbCwgdGYtPmJpdHN0cmVhbV9sZW4sIGRlY29kZV9jeWNsZXMpOwor ICAgIGlmIChlcnIgPCAwKQorICAgICAgICByZXR1cm4gZXJyOworCisgICAgcmV0dXJuIDA7Cit9 CisKK2ludCBmZl9udnRlZ3JhX3N0YXJ0X2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZG cmFtZSAqZnJhbWUsIEZGTlZUZWdyYURlY29kZUNvbnRleHQgKmN0eCkgeworICAgIEFWSFdGcmFt ZXNDb250ZXh0ICpmcmFtZXNfY3R4ID0gKEFWSFdGcmFtZXNDb250ZXh0ICopYXZjdHgtPmh3X2Zy YW1lc19jdHgtPmRhdGE7CisgICAgRnJhbWVEZWNvZGVEYXRhICAgICAgICAgICpmZGQgPSAoRnJh bWVEZWNvZGVEYXRhICopZnJhbWUtPnByaXZhdGVfcmVmLT5kYXRhOworCisgICAgRkZOVlRlZ3Jh RGVjb2RlRnJhbWUgKnRmID0gTlVMTDsKKyAgICBpbnQgZXJyOworCisgICAgLyogQWJvcnQgb24g cmVzb2x1dGlvbiBjaGFuZ2VzIHRoYXQgd291bGRuJ3QgZml0IGludG8gdGhlIGZyYW1lICovCisg ICAgaWYgKChmcmFtZS0+d2lkdGggPiBmcmFtZXNfY3R4LT53aWR0aCkgfHwgKGZyYW1lLT5oZWln aHQgPiBmcmFtZXNfY3R4LT5oZWlnaHQpKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp OworCisgICAgY3R4LT5iaXRzdHJlYW1fbGVuID0gY3R4LT5udW1fc2xpY2VzID0gMDsKKworICAg IGlmIChmZGQtPmh3YWNjZWxfcHJpdikgeworICAgICAgICAvKgorICAgICAgICAqIEZvciBpbnRl cmxhY2VkIHZpZGVvLCBib3RoIGZpZWxkcyB1c2UgdGhlIHNhbWUgZmRkLAorICAgICAgICAqIGhv d2V2ZXIgYnkgcHJvY2VlZGluZyB3ZSBtaWdodCBvdmVyd3JpdGUgdGhlIGlucHV0IGJ1ZmZlcgor ICAgICAgICAqIGR1cmluZyB0aGUgZGVjb2RpbmcsIHNvIHdhaXQgZm9yIHRoZSBwcmV2aW91cyBv cGVyYXRpb24gdG8gY29tcGxldGUuCisgICAgICAgICovCisgICAgICAgZXJyID0gZmZfbnZ0ZWdy YV93YWl0X2RlY29kZShhdmN0eCwgZnJhbWUpOworICAgICAgICBpZiAoZXJyIDwgMCkKKyAgICAg ICAgICAgIHJldHVybiBlcnI7CisgICAgfSBlbHNlIHsKKyAgICAgICAgdGYgPSBhdl9tYWxsb2N6 KHNpemVvZigqdGYpKTsKKyAgICAgICAgaWYgKCF0ZikKKyAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT01FTSk7CisKKyAgICAgICAgZmRkLT5od2FjY2VsX3ByaXYgICAgICA9IHRmOworICAg ICAgICBmZGQtPmh3YWNjZWxfcHJpdl9mcmVlID0gbnZ0ZWdyYV9mZGRfcHJpdl9mcmVlOworICAg ICAgICBmZGQtPnBvc3RfcHJvY2VzcyAgICAgID0gZmZfbnZ0ZWdyYV93YWl0X2RlY29kZTsKKwor ICAgICAgICB0Zi0+Y3R4ID0gY3R4OworCisgICAgICAgIHRmLT5pbnB1dF9tYXBfcmVmID0gYXZf YnVmZmVyX3Bvb2xfZ2V0KGN0eC0+ZGVjb2Rlcl9wb29sKTsKKyAgICAgICAgaWYgKCF0Zi0+aW5w dXRfbWFwX3JlZikgeworICAgICAgICAgICAgZXJyID0gQVZFUlJPUihFTk9NRU0pOworICAgICAg ICAgICAgZ290byBmYWlsOworICAgICAgICB9CisgICAgfQorCisgICAgdGYgPSBmZGQtPmh3YWNj ZWxfcHJpdjsKKyAgICB0Zi0+aW5fZmxpZ2h0ID0gZmFsc2U7CisKKyAgICBlcnIgPSBhdl9udnRl Z3JhX2NtZGJ1Zl9hZGRfbWVtb3J5KCZjdHgtPmNtZGJ1ZiwgKEFWTlZUZWdyYU1hcCAqKXRmLT5p bnB1dF9tYXBfcmVmLT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY3R4LT5jbWRidWZfb2ZmLCBjdHgtPm1heF9jbWRidWZfc2l6ZSk7CisgICAgaWYgKGVyciA8 IDApCisgICAgICAgIHJldHVybiBlcnI7CisKKyAgICBlcnIgPSBhdl9udnRlZ3JhX2NtZGJ1Zl9j bGVhcigmY3R4LT5jbWRidWYpOworICAgIGlmIChlcnIgPCAwKQorICAgICAgICByZXR1cm4gZXJy OworCisgICAgcmV0dXJuIDA7CisKK2ZhaWw6CisgICAgbnZ0ZWdyYV9mZGRfcHJpdl9mcmVlKHRm KTsKKyAgICByZXR1cm4gZXJyOworfQorCitpbnQgZmZfbnZ0ZWdyYV9kZWNvZGVfc2xpY2UoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCB1aW50OF90ICpidWYsIHVpbnQzMl90IGJ1Zl9zaXplLCBib29sIGFkZF9z dGFydGNvZGUpCit7CisgICAgRkZOVlRlZ3JhRGVjb2RlQ29udGV4dCAqY3R4ID0gYXZjdHgtPmlu dGVybmFsLT5od2FjY2VsX3ByaXZfZGF0YTsKKyAgICBGcmFtZURlY29kZURhdGEgICAgICAgICpm ZGQgPSAoRnJhbWVEZWNvZGVEYXRhICopZnJhbWUtPnByaXZhdGVfcmVmLT5kYXRhOworICAgIEZG TlZUZWdyYURlY29kZUZyYW1lICAgICp0ZiA9IGZkZC0+aHdhY2NlbF9wcml2OworICAgIEFWTlZU ZWdyYU1hcCAgICAgKmlucHV0X21hcCA9IChBVk5WVGVncmFNYXAgKil0Zi0+aW5wdXRfbWFwX3Jl Zi0+ZGF0YTsKKworICAgIGJvb2wgbmVlZF9iaXRzdHJlYW1fbW92ZSA9IGZhbHNlOworICAgIHVp bnQzMl90IG9sZF9iaXRzdHJlYW1fb2ZmLCBzdGFydGNvZGVfc2l6ZTsKKyAgICB1aW50OF90ICpt ZW07CisgICAgaW50IGVycjsKKworICAgIG1lbSA9IGF2X252dGVncmFfbWFwX2dldF9hZGRyKGlu cHV0X21hcCk7CisKKyAgICBzdGFydGNvZGVfc2l6ZSA9IGFkZF9zdGFydGNvZGUgPyAzIDogMDsK KworICAgIC8qIFJlc2VydmUgMTYgYnl0ZXMgZm9yIHRoZSB0ZXJtaW5hdGlvbiBzZXF1ZW5jZSAq LworICAgIGlmIChjdHgtPmJpdHN0cmVhbV9sZW4gKyBidWZfc2l6ZSArIHN0YXJ0Y29kZV9zaXpl ID49IGN0eC0+bWF4X2JpdHN0cmVhbV9zaXplIC0gMTYpIHsKKyAgICAgICAgY3R4LT5pbnB1dF9t YXBfc2l6ZSArPSBjdHgtPm1heF9iaXRzdHJlYW1fc2l6ZSArIGJ1Zl9zaXplOworICAgICAgICBj dHgtPmlucHV0X21hcF9zaXplICA9IEZGQUxJR04oY3R4LT5pbnB1dF9tYXBfc2l6ZSwgMHgxMDAw KTsKKworICAgICAgICBjdHgtPm1heF9iaXRzdHJlYW1fc2l6ZSA9IGN0eC0+aW5wdXRfbWFwX3Np emUgLSBjdHgtPmJpdHN0cmVhbV9vZmY7CisKKyAgICAgICAgbmVlZF9iaXRzdHJlYW1fbW92ZSA9 IGZhbHNlOworICAgIH0KKworICAgIC8qIFJlc2VydmUgNCBieXRlcyBmb3IgdGhlIGJpdHN0cmVh bSBzaXplICovCisgICAgaWYgKGN0eC0+bWF4X251bV9zbGljZXMgJiYgIGN0eC0+bnVtX3NsaWNl cyA+PSBjdHgtPm1heF9udW1fc2xpY2VzIC0gMSkgeworICAgICAgICBjdHgtPmlucHV0X21hcF9z aXplICs9IGN0eC0+bWF4X251bV9zbGljZXMgKiBzaXplb2YodWludDMyX3QpOworICAgICAgICBj dHgtPmlucHV0X21hcF9zaXplICA9IEZGQUxJR04oY3R4LT5pbnB1dF9tYXBfc2l6ZSwgMHgxMDAw KTsKKworICAgICAgICBjdHgtPm1heF9udW1fc2xpY2VzICo9IDI7CisKKyAgICAgICAgb2xkX2Jp dHN0cmVhbV9vZmYgPSBjdHgtPmJpdHN0cmVhbV9vZmY7CisgICAgICAgIGN0eC0+Yml0c3RyZWFt X29mZiA9IGN0eC0+c2xpY2Vfb2Zmc2V0c19vZmYgKyBjdHgtPm1heF9udW1fc2xpY2VzICogc2l6 ZW9mKHVpbnQzMl90KTsKKworICAgICAgICBuZWVkX2JpdHN0cmVhbV9tb3ZlID0gdHJ1ZTsKKyAg ICB9CisKKyAgICBpZiAoY3R4LT5pbnB1dF9tYXBfc2l6ZSAhPSBhdl9udnRlZ3JhX21hcF9nZXRf c2l6ZShpbnB1dF9tYXApKSB7CisgICAgICAgIGVyciA9IGF2X252dGVncmFfbWFwX3JlYWxsb2Mo aW5wdXRfbWFwLCBjdHgtPmlucHV0X21hcF9zaXplLCAweDEwMCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVk1BUF9IRUFQX0lPVk1NLCBOVk1BUF9IQU5ETEVfV1JJVEVf Q09NQklORSk7CisgICAgICAgIGlmIChlcnIgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGVycjsK KworICAgICAgICBtZW0gPSBhdl9udnRlZ3JhX21hcF9nZXRfYWRkcihpbnB1dF9tYXApOworCisg ICAgICAgIGVyciA9IGF2X252dGVncmFfY21kYnVmX2FkZF9tZW1vcnkoJmN0eC0+Y21kYnVmLCBp bnB1dF9tYXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4 LT5jbWRidWZfb2ZmLCBjdHgtPm1heF9jbWRidWZfc2l6ZSk7CisgICAgICAgIGlmIChlcnIgPCAw KQorICAgICAgICAgICAgcmV0dXJuIGVycjsKKworICAgICAgICAvKiBSdW5uaW5nIG91dCBvZiBz bGljZSBvZmZzZXRzIG1lbSBzaG91bGRuJ3QgaGFwcGVuIHNvIHRoZSBleHRyYSBtZW1tb3ZlIGlz IGZpbmUgKi8KKyAgICAgICAgaWYgKG5lZWRfYml0c3RyZWFtX21vdmUpCisgICAgICAgICAgICBt ZW1tb3ZlKG1lbSArIGN0eC0+Yml0c3RyZWFtX29mZiwgbWVtICsgb2xkX2JpdHN0cmVhbV9vZmYs IGN0eC0+Yml0c3RyZWFtX2xlbik7CisgICAgfQorCisgICAgaWYgKGN0eC0+bWF4X251bV9zbGlj ZXMpCisgICAgICAgICgodWludDMyX3QgKikobWVtICsgY3R4LT5zbGljZV9vZmZzZXRzX29mZikp W2N0eC0+bnVtX3NsaWNlc10gPSBjdHgtPmJpdHN0cmVhbV9sZW47CisKKyAgICAvKiBOQUwgc3Rh cnRjb2RlIDAwMDAwMSAqLworICAgIGlmIChhZGRfc3RhcnRjb2RlKSB7CisgICAgICAgIEFWX1dC MjQobWVtICsgY3R4LT5iaXRzdHJlYW1fb2ZmICsgY3R4LT5iaXRzdHJlYW1fbGVuLCAxKTsKKyAg ICAgICAgY3R4LT5iaXRzdHJlYW1fbGVuICs9IDM7CisgICAgfQorCisgICAgbWVtY3B5KG1lbSAr IGN0eC0+Yml0c3RyZWFtX29mZiArIGN0eC0+Yml0c3RyZWFtX2xlbiwgYnVmLCBidWZfc2l6ZSk7 CisgICAgY3R4LT5iaXRzdHJlYW1fbGVuICs9IGJ1Zl9zaXplOworCisgICAgY3R4LT5udW1fc2xp Y2VzKys7CisKKyAgICByZXR1cm4gMDsKK30KKworaW50IGZmX252dGVncmFfZW5kX2ZyYW1lKEFW Q29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsIEZGTlZUZWdyYURlY29kZUNvbnRl eHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50OF90ICplbmRfc2Vx dWVuY2UsIGludCBlbmRfc2VxdWVuY2Vfc2l6ZSkKK3sKKyAgICBGcmFtZURlY29kZURhdGEgICAg ICpmZGQgPSAoRnJhbWVEZWNvZGVEYXRhICopZnJhbWUtPnByaXZhdGVfcmVmLT5kYXRhOworICAg IEZGTlZUZWdyYURlY29kZUZyYW1lICp0ZiA9IGZkZC0+aHdhY2NlbF9wcml2OworICAgIEFWTlZU ZWdyYU1hcCAgKmlucHV0X21hcCA9IChBVk5WVGVncmFNYXAgKil0Zi0+aW5wdXRfbWFwX3JlZi0+ ZGF0YTsKKworICAgIHVpbnQ4X3QgKm1lbTsKKyAgICBpbnQgZXJyOworCisgICAgbWVtID0gYXZf bnZ0ZWdyYV9tYXBfZ2V0X2FkZHIoaW5wdXRfbWFwKTsKKworICAgIC8qIExhc3Qgc2xpY2UgZGF0 YSByYW5nZSAqLworICAgIGlmIChjdHgtPm1heF9udW1fc2xpY2VzKQorICAgICAgICAoKHVpbnQz Ml90ICopKG1lbSArIGN0eC0+c2xpY2Vfb2Zmc2V0c19vZmYpKVtjdHgtPm51bV9zbGljZXNdID0g Y3R4LT5iaXRzdHJlYW1fbGVuOworCisgICAgLyogVGVybWluYXRpb24gc2VxdWVuY2UgZm9yIHRo ZSBiaXRzdHJlYW0gZGF0YSAqLworICAgIGlmIChlbmRfc2VxdWVuY2Vfc2l6ZSkKKyAgICAgICAg bWVtY3B5KG1lbSArIGN0eC0+Yml0c3RyZWFtX29mZiArIGN0eC0+Yml0c3RyZWFtX2xlbiwgZW5k X3NlcXVlbmNlLCBlbmRfc2VxdWVuY2Vfc2l6ZSk7CisKKyAgICBlcnIgPSBhdl9udnRlZ3JhX2Nt ZGJ1Zl9iZWdpbigmY3R4LT5jbWRidWYsICFjdHgtPmlzX252anBnID8gSE9TVDFYX0NMQVNTX05W REVDIDogSE9TVDFYX0NMQVNTX05WSlBHKTsKKyAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgcmV0 dXJuIGVycjsKKworICAgIGVyciA9IGF2X252dGVncmFfY21kYnVmX2FkZF9zeW5jcHRfaW5jcigm Y3R4LT5jbWRidWYsIGN0eC0+Y2hhbm5lbC0+c3luY3B0LCAwKTsKKyAgICBpZiAoZXJyIDwgMCkK KyAgICAgICAgcmV0dXJuIGVycjsKKworICAgIGVyciA9IGF2X252dGVncmFfY21kYnVmX2VuZCgm Y3R4LT5jbWRidWYpOworICAgIGlmIChlcnIgPCAwKQorICAgICAgICByZXR1cm4gZXJyOworCisg ICAgZXJyID0gYXZfbnZ0ZWdyYV9jaGFubmVsX3N1Ym1pdChjdHgtPmNoYW5uZWwsICZjdHgtPmNt ZGJ1ZiwgJnRmLT5mZW5jZSk7CisgICAgaWYgKGVyciA8IDApCisgICAgICAgIHJldHVybiBlcnI7 CisKKyAgICB0Zi0+Yml0c3RyZWFtX2xlbiA9IGN0eC0+Yml0c3RyZWFtX2xlbjsKKyAgICB0Zi0+ aW5fZmxpZ2h0ICAgICA9IHRydWU7CisKKyAgICBjdHgtPmZyYW1lX2lkeCsrOworCisgICAgY3R4 LT5uZXdfaW5wdXRfYnVmZmVyID0gZmFsc2U7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBudnRlZ3JhX2dldF9zaXplX2NvbnN0cmFpbnRzKGVudW0gQVZDb2RlY0lEIGNvZGVjLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbWluX3dpZHRoLCBp bnQgKm1pbl9oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICptYXhfd2lkdGgsIGludCAqbWF4X2hlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnQgKmFsaWduLCBpbnQgKm1heF9tYnMpCit7CisgICAgc3dpdGNo IChjb2RlYykgeworICAgICAgICBjYXNlIEFWX0NPREVDX0lEX01QRUcxVklERU86CisgICAgICAg IGNhc2UgQVZfQ09ERUNfSURfTVBFRzJWSURFTzoKKyAgICAgICAgICAgICptaW5fd2lkdGggPSA0 OCwgICAgKm1pbl9oZWlnaHQgPSAxOworICAgICAgICAgICAgKm1heF93aWR0aCA9IDQwOTYsICAq bWF4X2hlaWdodCA9IDQwOTY7CisgICAgICAgICAgICAqYWxpZ24gICAgID0gMTYsICAgICptYXhf bWJzICAgID0gMHgyMDAwMDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQVZf Q09ERUNfSURfTVBFRzQ6CisgICAgICAgICAgICAqbWluX3dpZHRoID0gNDgsICAgICptaW5faGVp Z2h0ID0gMTsKKyAgICAgICAgICAgICptYXhfd2lkdGggPSAyMDQ4LCAgKm1heF9oZWlnaHQgPSAy MDQ4OworICAgICAgICAgICAgKmFsaWduICAgICA9IDE2LCAgICAqbWF4X21icyAgICA9IDB4MjAw MDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQVZfQ09ERUNfSURfVkMxOgor ICAgICAgICBjYXNlIEFWX0NPREVDX0lEX1dNVjM6CisgICAgICAgICAgICAqbWluX3dpZHRoID0g NDgsICAgICptaW5faGVpZ2h0ID0gMTsKKyAgICAgICAgICAgICptYXhfd2lkdGggPSAyMDQ4LCAg Km1heF9oZWlnaHQgPSAyMDQ4OworICAgICAgICAgICAgKmFsaWduICAgICA9IDEsICAgICAqbWF4 X21icyAgICA9IC0xOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBBVl9DT0RF Q19JRF9IMjY0OgorICAgICAgICAgICAgKm1pbl93aWR0aCA9IDQ4LCAgICAqbWluX2hlaWdodCA9 IDE7CisgICAgICAgICAgICAqbWF4X3dpZHRoID0gNDA5NiwgICptYXhfaGVpZ2h0ID0gNDA5NjsK KyAgICAgICAgICAgICphbGlnbiAgICAgPSAxNiwgICAgKm1heF9tYnMgICAgPSAweDIwMDAwOwor ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBBVl9DT0RFQ19JRF9IRVZDOgorICAg ICAgICAgICAgLyogTm90ZTogb24gbnZkZWMgNC4wKyAodGVncmEgMTk0KSBtYXggZGltZW5zaW9u cyBhcmUgODE5MiwgYW5kIG1heCBtYnMgMHg4MDAwMCAqLworICAgICAgICAgICAgKm1pbl93aWR0 aCA9IDE0NCwgICAqbWluX2hlaWdodCA9IDE0NDsKKyAgICAgICAgICAgICptYXhfd2lkdGggPSA0 MDk2LCAgKm1heF9oZWlnaHQgPSA0MDk2OworICAgICAgICAgICAgKmFsaWduICAgICA9IDY0LCAg ICAqbWF4X21icyAgICA9IDB4MjAwMDA7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj YXNlIEFWX0NPREVDX0lEX1ZQODoKKyAgICAgICAgICAgICptaW5fd2lkdGggPSA0OCwgICAgKm1p bl9oZWlnaHQgPSAxOworICAgICAgICAgICAgKm1heF93aWR0aCA9IDQwOTYsICAqbWF4X2hlaWdo dCA9IDQwOTY7CisgICAgICAgICAgICAqYWxpZ24gICAgID0gMTYsICAgICptYXhfbWJzICAgID0g MHgyMDAwMDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQVZfQ09ERUNfSURf VlA5OgorICAgICAgICAgICAgLyogTm90ZTogb24gbnZkZWMgNC4wKyAodGVncmEgMTk0KSBtYXgg ZGltZW5zaW9ucyBhcmUgODE5MiwgYW5kIG1heCBtYnMgMHg0MDAwMCAqLworICAgICAgICAgICAg Km1pbl93aWR0aCA9IDE0NCwgICAqbWluX2hlaWdodCA9IDE0NDsKKyAgICAgICAgICAgICptYXhf d2lkdGggPSA0MDk2LCAgKm1heF9oZWlnaHQgPSA0MDk2OworICAgICAgICAgICAgKmFsaWduICAg ICA9IDE2LCAgICAqbWF4X21icyAgICA9IDB4MTAwMDA7CisgICAgICAgICAgICBicmVhazsKKwor ICAgICAgICBjYXNlIEFWX0NPREVDX0lEX01KUEVHOgorICAgICAgICAgICAgKm1pbl93aWR0aCA9 IDEsICAgICAqbWluX2hlaWdodCA9IDE7CisgICAgICAgICAgICAqbWF4X3dpZHRoID0gMTYzODQs ICptYXhfaGVpZ2h0ID0gMTYzODQ7CisgICAgICAgICAgICAqYWxpZ24gICAgID0gMSwgICAgICpt YXhfbWJzICAgID0gLTE7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAjaWYgMAorICAg ICAgICBjYXNlIEFWX0NPREVDX0lEX0FWMToKKyAgICAgICAgICAgIC8qIE5vdGU6IG9uIG52ZGVj IDQuMCsgKHRlZ3JhIDE5NCkgbWF4IGRpbWVuc2lvbnMgYXJlIDgxOTIsIGFuZCBtYXggbWJzIDB4 ODAwMDAgKi8KKyAgICAgICAgICAgICptaW5fd2lkdGggPSAxMjgsICAgKm1pbl9oZWlnaHQgPSAx Mjg7CisgICAgICAgICAgICAqbWF4X3dpZHRoID0gNDA5NiwgICptYXhfaGVpZ2h0ID0gNDA5NjsK KyAgICAgICAgICAgICphbGlnbiAgICAgPSA2NCwgICAgKm1heF9tYnMgICAgPSAweDIwMDAwOwor ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICNlbmRpZgorCisgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIHJldHVybiAw OworfQorCitpbnQgZmZfbnZ0ZWdyYV9mcmFtZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 LCBBVkJ1ZmZlclJlZiAqaHdfZnJhbWVzX2N0eCkgeworICAgIEFWSFdGcmFtZXNDb250ZXh0ICpm cmFtZXNfY3R4ID0gKEFWSFdGcmFtZXNDb250ZXh0ICopaHdfZnJhbWVzX2N0eC0+ZGF0YTsKKyAg ICBjb25zdCBBVlBpeEZtdERlc2NyaXB0b3IgKnN3X2Rlc2M7CisKKyAgICBpbnQgbWluX3dpZHRo LCBtaW5faGVpZ2h0LCBtYXhfd2lkdGgsIG1heF9oZWlnaHQsIGFsaWduLCBtYXhfbWJzLAorICAg ICAgICBhbGlnbmVkX3dpZHRoLCBhbGlnbmVkX2hlaWdodCwgbnVtX21iczsKKyAgICBpbnQgZXJy OworCisgICAgZXJyID0gbnZ0ZWdyYV9nZXRfc2l6ZV9jb25zdHJhaW50cyhhdmN0eC0+Y29kZWNf aWQsICZtaW5fd2lkdGgsICZtaW5faGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJm1heF93aWR0aCwgJm1heF9oZWlnaHQsICZhbGlnbiwgJm1heF9tYnMpOwor ICAgIGlmIChlcnIgPCAwKQorICAgICAgICByZXR1cm4gZXJyOworCisgICAgYWxpZ25lZF93aWR0 aCAgPSBGRkFMSUdOKGF2Y3R4LT5jb2RlZF93aWR0aCwgIGFsaWduKTsKKyAgICBhbGlnbmVkX2hl aWdodCA9IEZGQUxJR04oYXZjdHgtPmNvZGVkX2hlaWdodCwgYWxpZ24pOworICAgIG51bV9tYnMg PSAoYWxpZ25lZF93aWR0aCAvIDE2KSAqIChhbGlnbmVkX2hlaWdodCAvIDE2KTsKKworICAgIGlm ICgoYWxpZ25lZF93aWR0aCAgPCBtaW5fd2lkdGgpICB8fCAoYWxpZ25lZF93aWR0aCAgPiBtYXhf d2lkdGgpIHx8CisgICAgICAgIChhbGlnbmVkX2hlaWdodCA8IG1pbl9oZWlnaHQpIHx8IChhbGln bmVkX2hlaWdodCA+IG1heF9oZWlnaHQpKQorICAgIHsKKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBB Vl9MT0dfRVJST1IsICJEaW1lbnNpb25zICVkeCVkIChtaW4uICVkeCVkLCBtYXguICVkeCVkKSAi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJlIG5vdCBzdXBwb3J0ZWQg YnkgdGhlIGhhcmR3YXJlIGZvciBjb2RlYyAlc1xuIiwKKyAgICAgICAgICAgICAgIGF2Y3R4LT5j b2RlZF93aWR0aCwgYXZjdHgtPmNvZGVkX2hlaWdodCwKKyAgICAgICAgICAgICAgIG1pbl93aWR0 aCwgbWluX2hlaWdodCwgbWF4X3dpZHRoLCBtYXhfaGVpZ2h0LAorICAgICAgICAgICAgICAgYXZj dHgtPmNvZGVjX2Rlc2NyaXB0b3ItPm5hbWUpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5W QUwpOworICAgIH0KKworICAgIGlmICgobWF4X21icyA+IDApICYmIChudW1fbWJzID4gbWF4X21i cykpIHsKKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJOdW1iZXIgb2YgbWFj cm9ibG9ja3MgJWQgZXhjZWVkcyBtYXhpbXVtICVkICIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJmb3IgY29kZWMgJXNcbiIsCisgICAgICAgICAgICAgICBudW1fbWJzLCBt YXhfbWJzLCBhdmN0eC0+Y29kZWNfZGVzY3JpcHRvci0+bmFtZSk7CisgICAgICAgIHJldHVybiBB VkVSUk9SKEVJTlZBTCk7CisgICAgfQorCisgICAgZnJhbWVzX2N0eC0+Zm9ybWF0ID0gQVZfUElY X0ZNVF9OVlRFR1JBOworICAgIGZyYW1lc19jdHgtPndpZHRoICA9IEZGQUxJR04oYXZjdHgtPmNv ZGVkX3dpZHRoLCAgMik7IC8qIE5WREVDIG9ubHkgc3VwcG9ydHMgZXZlbiBzaXplcyAqLworICAg IGZyYW1lc19jdHgtPmhlaWdodCA9IEZGQUxJR04oYXZjdHgtPmNvZGVkX2hlaWdodCwgMik7CisK KyAgICBzd19kZXNjID0gYXZfcGl4X2ZtdF9kZXNjX2dldChhdmN0eC0+c3dfcGl4X2ZtdCk7Cisg ICAgaWYgKCFzd19kZXNjKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9CVUc7CisKKyAgICBzd2l0 Y2ggKHN3X2Rlc2MtPmNvbXBbMF0uZGVwdGgpIHsKKyAgICAgICAgY2FzZSA4OgorICAgICAgICAg ICAgZnJhbWVzX2N0eC0+c3dfZm9ybWF0ID0gKHN3X2Rlc2MtPm5iX2NvbXBvbmVudHMgPiAxKSA/ CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9QSVhfRk1UX05WMTIgOiBB Vl9QSVhfRk1UX0dSQVk4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTA6Cisg ICAgICAgICAgICBmcmFtZXNfY3R4LT5zd19mb3JtYXQgPSAoc3dfZGVzYy0+bmJfY29tcG9uZW50 cyA+IDEpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWX1BJWF9GTVRf UDAxMCA6IEFWX1BJWF9GTVRfR1JBWTEwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAg IHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9udnRlZ3JhX2RlY29kZS5oIGIv bGliYXZjb2RlYy9udnRlZ3JhX2RlY29kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAuLjUyNjBjOGIzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL252dGVn cmFfZGVjb2RlLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAyNCBh dmVybmUgPGF2ZXJuZTM4MUBnbWFpbC5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg RkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVnIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhbG9uZworICogd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAqIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisgKi8KKworI2lmbmRlZiBB VkNPREVDX05WVEVHUkFfREVDT0RFX0gKKyNkZWZpbmUgQVZDT0RFQ19OVlRFR1JBX0RFQ09ERV9I CisKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL21lbS5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9od2NvbnRleHRfbnZ0ZWdy YS5oIgorCisjaW5jbHVkZSAibGliYXZ1dGlsL252ZGVjX2Rydi5oIgorI2luY2x1ZGUgImxpYmF2 dXRpbC9udmpwZ19kcnYuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvY2xjNWIwLmgiCisjaW5jbHVk ZSAibGliYXZ1dGlsL2NsZTdkMC5oIgorCit0eXBlZGVmIHN0cnVjdCBGRk5WVGVncmFEZWNvZGVD b250ZXh0IHsKKyAgICB1aW50NjRfdCBmcmFtZV9pZHg7CisKKyAgICBBVkJ1ZmZlclJlZiAqaHdf ZGV2aWNlX3JlZjsKKyAgICBBVkJ1ZmZlclBvb2wgKmRlY29kZXJfcG9vbDsKKworICAgIGJvb2wg aXNfbnZqcGc7CisgICAgQVZOVlRlZ3JhQ2hhbm5lbCAqY2hhbm5lbDsKKworICAgIEFWTlZUZWdy YUNtZGJ1ZiBjbWRidWY7CisKKyAgICB1aW50MzJfdCBwaWNfc2V0dXBfb2ZmLCBzdGF0dXNfb2Zm LCBjbWRidWZfb2ZmLAorICAgICAgICAgICAgIGJpdHN0cmVhbV9vZmYsIHNsaWNlX29mZnNldHNf b2ZmOworICAgIHVpbnQzMl90IGlucHV0X21hcF9zaXplOworICAgIHVpbnQzMl90IG1heF9jbWRi dWZfc2l6ZSwgbWF4X2JpdHN0cmVhbV9zaXplLCBtYXhfbnVtX3NsaWNlczsKKworICAgIHVpbnQz Ml90IG51bV9zbGljZXM7CisgICAgdWludDMyX3QgYml0c3RyZWFtX2xlbjsKKworICAgIGJvb2wg bmV3X2lucHV0X2J1ZmZlcjsKK30gRkZOVlRlZ3JhRGVjb2RlQ29udGV4dDsKKwordHlwZWRlZiBz dHJ1Y3QgRkZOVlRlZ3JhRGVjb2RlRnJhbWUgeworICAgIEZGTlZUZWdyYURlY29kZUNvbnRleHQg KmN0eDsKKyAgICBBVkJ1ZmZlclJlZiAqaW5wdXRfbWFwX3JlZjsKKyAgICB1aW50MzJfdCBmZW5j ZTsKKyAgICB1aW50MzJfdCBiaXRzdHJlYW1fbGVuOworICAgIGJvb2wgaW5fZmxpZ2h0OworfSBG Rk5WVGVncmFEZWNvZGVGcmFtZTsKKworc3RhdGljIGlubGluZSBzaXplX3QgZmZfbnZ0ZWdyYV9k ZWNvZGVfcGlja19iaXRzdHJlYW1fYnVmZmVyX3NpemUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KSB7 CisgICAgLyoKKyAgICAgKiBPZmZpY2lhbCBzb2Z0d2FyZSB1c2VzIGEgc3RhdGljIG1hcCBvZiBh IHByZWRldGVybWluZWQgc2l6ZSwgdXN1YWxseSBhcm91bmQgMHg2MDAwMDAgKDZNaUIpLgorICAg ICAqIE91ciBpbXBsZW1lbnRhdGlvbiBzdXBwb3J0cyBkeW5hbWljYWxseSByZXNpemluZyB0aGUg aW5wdXQgbWFwLCBzbyBiZSBsZXNzIGNvbnNlcnZhdGl2ZS4KKyAgICAgKi8KKyAgICBpZiAoKGF2 Y3R4LT5jb2RlZF93aWR0aCA+PSAzODQwKSB8fCAoYXZjdHgtPmNvZGVkX2hlaWdodCA+PSAyMTYw KSkgIC8qIDRrICovCisgICAgICAgIHJldHVybiAweDEwMDAwMDsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAxTWlCICovCisgICAgaWYgKChhdmN0eC0+ Y29kZWRfd2lkdGggPj0gMTkyMCkgfHwgKGF2Y3R4LT5jb2RlZF9oZWlnaHQgPj0gMTA4MCkpICAv KiAxMDgwcCAqLworICAgICAgICByZXR1cm4gMHg0MDAwMDsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMjU2S2lCICovCisgICAgZWxzZQorICAgICAg ICByZXR1cm4gMHgxMDAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogNjRLaUIgKi8KK30KKworc3RhdGljIGlubGluZSBBVkZyYW1lICpmZl9udnRl Z3JhX3NhZmVfZ2V0X3JlZihBVkZyYW1lICpyZWYsIEFWRnJhbWUgKmZhbGxiYWNrKSB7CisgICAg cmV0dXJuIChyZWYgJiYgcmVmLT5wcml2YXRlX3JlZikgPyByZWYgOiBmYWxsYmFjazsKK30KKwor aW50IGZmX252dGVncmFfZGVjb2RlX2luaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBGRk5WVGVn cmFEZWNvZGVDb250ZXh0ICpjdHgpOworaW50IGZmX252dGVncmFfZGVjb2RlX3VuaW5pdChBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIEZGTlZUZWdyYURlY29kZUNvbnRleHQgKmN0eCk7CitpbnQgZmZf bnZ0ZWdyYV9zdGFydF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1l LCBGRk5WVGVncmFEZWNvZGVDb250ZXh0ICpjdHgpOworaW50IGZmX252dGVncmFfZGVjb2RlX3Ns aWNlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqZnJhbWUsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqYnVmLCB1aW50MzJfdCBidWZfc2l6ZSwgYm9v bCBhZGRfc3RhcnRjb2RlKTsKK2ludCBmZl9udnRlZ3JhX2VuZF9mcmFtZShBVkNvZGVjQ29udGV4 dCAqYXZjdHgsIEFWRnJhbWUgKmZyYW1lLCBGRk5WVGVncmFEZWNvZGVDb250ZXh0ICpjdHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZW5kX3NlcXVlbmNlLCBpbnQg ZW5kX3NlcXVlbmNlX3NpemUpOworCitpbnQgZmZfbnZ0ZWdyYV93YWl0X2RlY29kZSh2b2lkICps b2djdHgsIEFWRnJhbWUgKmZyYW1lKTsKKworaW50IGZmX252dGVncmFfZnJhbWVfcGFyYW1zKEFW Q29kZWNDb250ZXh0ICphdmN0eCwgQVZCdWZmZXJSZWYgKmh3X2ZyYW1lc19jdHgpOworCisjZW5k aWYgLyogQVZDT0RFQ19OVlRFR1JBX0RFQ09ERV9IICovCi0tIAoyLjQ1LjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5n IGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwg b3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVu c3Vic2NyaWJlIi4K