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 73F2D42724 for ; Thu, 6 Jan 2022 14:24:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B8FC568A774; Thu, 6 Jan 2022 16:24:16 +0200 (EET) Received: from mail-qk1-f178.google.com (mail-qk1-f178.google.com [209.85.222.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2FEF06800E0 for ; Thu, 6 Jan 2022 16:24:11 +0200 (EET) Received: by mail-qk1-f178.google.com with SMTP id f138so2738069qke.10 for ; Thu, 06 Jan 2022 06:24:11 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:content-transfer-encoding:mime-version :subject:message-id:date:cc:to; bh=9IlDBr9ruBjEvdQbwYZiFCJfL2nazNewlJuxVde7G1U=; b=qgTZXV/d/kKrnMzjnYbIRWXqdTOlcGBAhQpnOh38VX/Aw7Yu2oLF0/g+8zEKICs3s6 VmIuPioEYmPsmmBsBeB6w7qhf/NopYWl5kv5KXXTSDhxXMf3JW82vBL4V+Nv5BmYWYiv 66lAzCsqPE2W91yKqahaaxc3UgrKTB/BnAzPz6s+O1CNYlYNOUgU+6VgIFhS3zgj80Bz 0P2xlFQJL/0GuwG7FvNG/wWyu8b5r2aSraFZVmeZwbY8NQ6+cBb66hzWhxIeI8jOszzx LwDe+z0FCE2h3nypc19OS4GfrrO/xiWjCjL3BbyzbQp4HJ5bxh3pEPCRCjTnaul846T4 MjiQ== X-Gm-Message-State: AOAM5315e0E0H/Kqs+z66Vj1IKU0Z7ojQ6d13VciEtSz6+PMsGdBUFy+ sQRXNzHTgNXMPrJdjQJ6PGTLirib7KEZOA== X-Google-Smtp-Source: ABdhPJze3gsV5SwiIMlEA3569RDylZ+BT1KoLfpBg50zXtDJiCu50eUKFKCFFEgAIX3joIDkVLvSFw== X-Received: by 2002:a37:b001:: with SMTP id z1mr41450404qke.252.1641479049435; Thu, 06 Jan 2022 06:24:09 -0800 (PST) Received: from smtpclient.apple ([172.58.129.153]) by smtp.gmail.com with ESMTPSA id br43sm1599883qkb.57.2022.01.06.06.24.07 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 06 Jan 2022 06:24:08 -0800 (PST) From: Romain Beauxis Mime-Version: 1.0 (Mac OS X Mail 15.0 \(3693.40.0.1.81\)) Message-Id: <03970EF9-6434-417E-B32D-70E37743B16E@rastageeks.org> Date: Thu, 6 Jan 2022 08:24:05 -0600 To: ffmpeg-devel@ffmpeg.org X-Mailer: Apple Mail (2.3693.40.0.1.81) Subject: [FFmpeg-devel] [PATCH v9 1/3] libavdevice/avfoundation.m: use AudioConvert, extend supported formats 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: thilo.borgmann@mail.de, Aman Karmani , epirat07@gmail.com 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: KiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgQXVkaW9Db252ZXJ0ZXIKKiBTd2l0Y2ggdG8gQXVkaW9D b252ZXJ0ZXIncyBBUEkgdG8gY29udmVydCB1bnN1cHBvcnRlZCBQQ00KICBmb3JtYXRzIChub24t aW50ZXJsZWF2ZWQsIG5vbi1wYWNrZWQpIHRvIHN1cHBvcnRlZCBmb3JtYXRzCiogTWluaW1pemUg ZGF0YSBjb3B5LgoKVGhpcyBmaXhlczogaHR0cHM6Ly90cmFjLmZmbXBlZy5vcmcvdGlja2V0Lzk1 MDIKCkFQSSByZWY6Cmh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL2F1 ZGlvdG9vbGJveC9hdWRpb19jb252ZXJ0ZXJfc2VydmljZXMKClNpZ25lZC1vZmYtYnk6IFJvbWFp biBCZWF1eGlzIDx0b290c0ByYXN0YWdlZWtzLm9yZz4KLS0tClRoaXMgaXMgdGhlIGZpcnN0IHBh dGNoIG9mIGEgc2VyaWVzIG9mIDMgdGhhdCBmaXgsIGNsZWFudXAgYW5kIGVuaGFuY2UgdGhlCmF2 Zm91bmRhdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgbGliYXZkZXZpY2UuCgpUaGVzZSBwYXRjaGVz IGNvbWUgZnJvbSBhbiBhY3R1YWwgdXNlci1mYWNpbmcgYXBwbGljYXRpb24gcmVseWluZyBvbgps aWJhdmRldmljZeKAmXMgaW1wbGVtZW50YXRpb24gb2YgYXZmb3VuZGF0aW9uIGF1ZGlvIGlucHV0 LiBXaXRob3V0IHRoZW0sCkF2Zm91bmRhdGlvbiBpcyBwcmFjdGljYWxseSB1bnVzYWJsZSBhcyBp dCB3aWxsOgoqIFJlZnVzZSB0byBwcm9jZXNzIGNlcnRhaW4gc3BlY2lmaWMgYXVkaW8gaW5wdXQg Zm9ybWF0IHRoYXQgYXJlIGFjdHVhbGx5CnJldHVybmVkIGJ5IHRoZSBPUyBmb3Igc29tZSB1c2Vy cyAocGFja2VkIFBDTSBhdWRpbykKKiBEcm9wIGF1ZGlvIGZyYW1lcywgcmVzdWx0aW5nIGluIGNv cnJ1cHRlZCBhdWRpbyBpbnB1dC4gVGhpcyBtaWdodCBoYXZlIGJlZW4KdW5ub3RpY2VkIHdpdGgg dmlkZW8gZnJhbWVzIGJ1dCB0aGlzIG1ha2VzIGF2Zm91bmRhdGlvbiBlc3NlbnRpYWxseSB1bnVz YWJsZQpmb3IgYXVkaW8uCgpUaGUgcGF0Y2hlcyBhcmUgbm93IGJlaW5nIGluY2x1ZGVkIGluIG91 ciBwcm9kdWN0aW9uIGJ1aWxkIHNvIHRoZXkgYXJlIHRlc3RlZAphbmQgdXNhYmxlIGluIHByb2R1 Y3Rpb24uCgpDaGFuZ2Vsb2cgZm9yIHRoaXMgcGF0Y2g6CiogdjI6IE5vbmUKKiB2MzogTm9uZQoq IHY0OiBOb25lCiogdjU6IEZpeCBpbmRlbnRhdGlvbi93cmFwcGluZwoqIHY2OiBOb25lCiogdjc6 IFJlbW92ZWQgdXNlIG9mIGtBdWRpb0NvbnZlcnRlclByb3BlcnR5Q2FsY3VsYXRlT3V0cHV0QnVm ZmVyU2l6ZQp0byBjYWxjdWxhdGUgb3V0cHV0IGJ1ZmZlciBzaXplLiBUaGUgY2FsY3VsYXRpb24g aXMgdHJpdmlhbCBhbmQgdGhpcyBjYWxsIHdhcyAKcmFuZG9tbHkgZmFpbGluZyBmb3Igbm8gcmVh c29uCiogdjg6IE5vbmUKKiB2OTogTm9uZQoKbGliYXZkZXZpY2UvYXZmb3VuZGF0aW9uLm0gfCAy NTUgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQoxIGZpbGUgY2hhbmdlZCwg MTQ1IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9saWJhdmRl dmljZS9hdmZvdW5kYXRpb24ubSBiL2xpYmF2ZGV2aWNlL2F2Zm91bmRhdGlvbi5tCmluZGV4IDBj ZDZlNjQ2ZDUuLjczOGNkOTMzNzUgMTAwNjQ0Ci0tLSBhL2xpYmF2ZGV2aWNlL2F2Zm91bmRhdGlv bi5tCisrKyBiL2xpYmF2ZGV2aWNlL2F2Zm91bmRhdGlvbi5tCkBAIC0xMTEsMTYgKzExMSwxMSBA QAoKICAgIGludCAgICAgICAgICAgICBudW1fdmlkZW9fZGV2aWNlczsKCi0gICAgaW50ICAgICAg ICAgICAgIGF1ZGlvX2NoYW5uZWxzOwotICAgIGludCAgICAgICAgICAgICBhdWRpb19iaXRzX3Bl cl9zYW1wbGU7Ci0gICAgaW50ICAgICAgICAgICAgIGF1ZGlvX2Zsb2F0OwotICAgIGludCAgICAg ICAgICAgICBhdWRpb19iZTsKLSAgICBpbnQgICAgICAgICAgICAgYXVkaW9fc2lnbmVkX2ludGVn ZXI7Ci0gICAgaW50ICAgICAgICAgICAgIGF1ZGlvX3BhY2tlZDsKLSAgICBpbnQgICAgICAgICAg ICAgYXVkaW9fbm9uX2ludGVybGVhdmVkOwotCi0gICAgaW50MzJfdCAgICAgICAgICphdWRpb19i dWZmZXI7Ci0gICAgaW50ICAgICAgICAgICAgIGF1ZGlvX2J1ZmZlcl9zaXplOworICAgIFVJbnQz MiAgICAgICAgICAgIGF1ZGlvX2J1ZmZlcnM7CisgICAgVUludDMyICAgICAgICAgICAgYXVkaW9f Y2hhbm5lbHM7CisgICAgVUludDMyICAgICAgICAgICAgaW5wdXRfYnl0ZXNfcGVyX3NhbXBsZTsK KyAgICBVSW50MzIgICAgICAgICAgICBvdXRwdXRfYnl0ZXNfcGVyX3NhbXBsZTsKKyAgICBBdWRp b0NvbnZlcnRlclJlZiBhdWRpb19jb252ZXJ0ZXI7CgogICAgZW51bSBBVlBpeGVsRm9ybWF0IHBp eGVsX2Zvcm1hdDsKCkBAIC0yOTksNyArMjk0LDEwIEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY29u dGV4dChBVkZDb250ZXh0KiBjdHgpCiAgICBjdHgtPmF2Zl9kZWxlZ2F0ZSAgICA9IE5VTEw7CiAg ICBjdHgtPmF2Zl9hdWRpb19kZWxlZ2F0ZSA9IE5VTEw7CgotICAgIGF2X2ZyZWVwKCZjdHgtPmF1 ZGlvX2J1ZmZlcik7CisgICAgaWYgKGN0eC0+YXVkaW9fY29udmVydGVyKSB7CisgICAgICBBdWRp b0NvbnZlcnRlckRpc3Bvc2UoY3R4LT5hdWRpb19jb252ZXJ0ZXIpOworICAgICAgY3R4LT5hdWRp b19jb252ZXJ0ZXIgPSBOVUxMOworICAgIH0KCiAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmN0 eC0+ZnJhbWVfbG9jayk7CgpAQCAtNjczLDYgKzY3MSwxMCBAQCBzdGF0aWMgaW50IGdldF9hdWRp b19jb25maWcoQVZGb3JtYXRDb250ZXh0ICpzKQogICAgQVZGQ29udGV4dCAqY3R4ID0gKEFWRkNv bnRleHQqKXMtPnByaXZfZGF0YTsKICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0X2Rl c2M7CiAgICBBVlN0cmVhbSogc3RyZWFtID0gYXZmb3JtYXRfbmV3X3N0cmVhbShzLCBOVUxMKTsK KyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gb3V0cHV0X2Zvcm1hdCA9IHswfTsKKyAg ICBpbnQgYXVkaW9fYml0c19wZXJfc2FtcGxlLCBhdWRpb19mbG9hdCwgYXVkaW9fYmU7CisgICAg aW50IGF1ZGlvX3NpZ25lZF9pbnRlZ2VyLCBhdWRpb19wYWNrZWQsIGF1ZGlvX25vbl9pbnRlcmxl YXZlZDsKKyAgICBpbnQgbXVzdF9jb252ZXJ0ID0gMDsKCiAgICBpZiAoIXN0cmVhbSkgewogICAg ICAgIHJldHVybiAxOwpAQCAtNjkwLDYwICs2OTIsOTcgQEAgc3RhdGljIGludCBnZXRfYXVkaW9f Y29uZmlnKEFWRm9ybWF0Q29udGV4dCAqcykKICAgIGF2cHJpdl9zZXRfcHRzX2luZm8oc3RyZWFt LCA2NCwgMSwgYXZmX3RpbWVfYmFzZSk7CgogICAgZm9ybWF0X2Rlc2MgPSBDTVNhbXBsZUJ1ZmZl ckdldEZvcm1hdERlc2NyaXB0aW9uKGN0eC0+Y3VycmVudF9hdWRpb19mcmFtZSk7Ci0gICAgY29u c3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICpiYXNpY19kZXNjID0gQ01BdWRpb0Zvcm1h dERlc2NyaXB0aW9uR2V0U3RyZWFtQmFzaWNEZXNjcmlwdGlvbihmb3JtYXRfZGVzYyk7CisgICAg Y29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICppbnB1dF9mb3JtYXQgPSBDTUF1ZGlv Rm9ybWF0RGVzY3JpcHRpb25HZXRTdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKGZvcm1hdF9kZXNjKTsK Ci0gICAgaWYgKCFiYXNpY19kZXNjKSB7CisgICAgaWYgKCFpbnB1dF9mb3JtYXQpIHsKICAgICAg ICB1bmxvY2tfZnJhbWVzKGN0eCk7CiAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgImF1 ZGlvIGZvcm1hdCBub3QgYXZhaWxhYmxlXG4iKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCisg ICAgaWYgKGlucHV0X2Zvcm1hdC0+bUZvcm1hdElEICE9IGtBdWRpb0Zvcm1hdExpbmVhclBDTSkg eworICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7CisgICAgICAgIGF2X2xvZyhzLCBBVl9MT0df RVJST1IsICJvbmx5IFBDTSBhdWRpbyBmb3JtYXQgYXJlIHN1cHBvcnRlZCBhdCB0aGUgbW9tZW50 XG4iKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCiAgICBzdHJlYW0tPmNvZGVjcGFyLT5j b2RlY190eXBlICAgICA9IEFWTUVESUFfVFlQRV9BVURJTzsKLSAgICBzdHJlYW0tPmNvZGVjcGFy LT5zYW1wbGVfcmF0ZSAgICA9IGJhc2ljX2Rlc2MtPm1TYW1wbGVSYXRlOwotICAgIHN0cmVhbS0+ Y29kZWNwYXItPmNoYW5uZWxzICAgICAgID0gYmFzaWNfZGVzYy0+bUNoYW5uZWxzUGVyRnJhbWU7 CisgICAgc3RyZWFtLT5jb2RlY3Bhci0+c2FtcGxlX3JhdGUgICAgPSBpbnB1dF9mb3JtYXQtPm1T YW1wbGVSYXRlOworICAgIHN0cmVhbS0+Y29kZWNwYXItPmNoYW5uZWxzICAgICAgID0gaW5wdXRf Zm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFtZTsKICAgIHN0cmVhbS0+Y29kZWNwYXItPmNoYW5uZWxf bGF5b3V0ID0gYXZfZ2V0X2RlZmF1bHRfY2hhbm5lbF9sYXlvdXQoc3RyZWFtLT5jb2RlY3Bhci0+ Y2hhbm5lbHMpOwoKLSAgICBjdHgtPmF1ZGlvX2NoYW5uZWxzICAgICAgICA9IGJhc2ljX2Rlc2Mt Pm1DaGFubmVsc1BlckZyYW1lOwotICAgIGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlID0gYmFz aWNfZGVzYy0+bUJpdHNQZXJDaGFubmVsOwotICAgIGN0eC0+YXVkaW9fZmxvYXQgICAgICAgICAg ID0gYmFzaWNfZGVzYy0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzRmxvYXQ7Ci0g ICAgY3R4LT5hdWRpb19iZSAgICAgICAgICAgICAgPSBiYXNpY19kZXNjLT5tRm9ybWF0RmxhZ3Mg JiBrQXVkaW9Gb3JtYXRGbGFnSXNCaWdFbmRpYW47Ci0gICAgY3R4LT5hdWRpb19zaWduZWRfaW50 ZWdlciAgPSBiYXNpY19kZXNjLT5tRm9ybWF0RmxhZ3MgJiBrQXVkaW9Gb3JtYXRGbGFnSXNTaWdu ZWRJbnRlZ2VyOwotICAgIGN0eC0+YXVkaW9fcGFja2VkICAgICAgICAgID0gYmFzaWNfZGVzYy0+ bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzUGFja2VkOwotICAgIGN0eC0+YXVkaW9f bm9uX2ludGVybGVhdmVkID0gYmFzaWNfZGVzYy0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0 RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7Ci0KLSAgICBpZiAoYmFzaWNfZGVzYy0+bUZvcm1hdElEID09 IGtBdWRpb0Zvcm1hdExpbmVhclBDTSAmJgotICAgICAgICBjdHgtPmF1ZGlvX2Zsb2F0ICYmCi0g ICAgICAgIGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlID09IDMyICYmCi0gICAgICAgIGN0eC0+ YXVkaW9fcGFja2VkKSB7Ci0gICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gY3R4 LT5hdWRpb19iZSA/IEFWX0NPREVDX0lEX1BDTV9GMzJCRSA6IEFWX0NPREVDX0lEX1BDTV9GMzJM RTsKLSAgICB9IGVsc2UgaWYgKGJhc2ljX2Rlc2MtPm1Gb3JtYXRJRCA9PSBrQXVkaW9Gb3JtYXRM aW5lYXJQQ00gJiYKLSAgICAgICAgY3R4LT5hdWRpb19zaWduZWRfaW50ZWdlciAmJgotICAgICAg ICBjdHgtPmF1ZGlvX2JpdHNfcGVyX3NhbXBsZSA9PSAxNiAmJgotICAgICAgICBjdHgtPmF1ZGlv X3BhY2tlZCkgewotICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19pZCA9IGN0eC0+YXVk aW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fUzE2QkUgOiBBVl9DT0RFQ19JRF9QQ01fUzE2TEU7Ci0g ICAgfSBlbHNlIGlmIChiYXNpY19kZXNjLT5tRm9ybWF0SUQgPT0ga0F1ZGlvRm9ybWF0TGluZWFy UENNICYmCi0gICAgICAgIGN0eC0+YXVkaW9fc2lnbmVkX2ludGVnZXIgJiYKLSAgICAgICAgY3R4 LT5hdWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gMjQgJiYKLSAgICAgICAgY3R4LT5hdWRpb19wYWNr ZWQpIHsKLSAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBjdHgtPmF1ZGlvX2Jl ID8gQVZfQ09ERUNfSURfUENNX1MyNEJFIDogQVZfQ09ERUNfSURfUENNX1MyNExFOwotICAgIH0g ZWxzZSBpZiAoYmFzaWNfZGVzYy0+bUZvcm1hdElEID09IGtBdWRpb0Zvcm1hdExpbmVhclBDTSAm JgotICAgICAgICBjdHgtPmF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCi0gICAgICAgIGN0eC0+YXVk aW9fYml0c19wZXJfc2FtcGxlID09IDMyICYmCi0gICAgICAgIGN0eC0+YXVkaW9fcGFja2VkKSB7 Ci0gICAgICAgIHN0cmVhbS0+Y29kZWNwYXItPmNvZGVjX2lkID0gY3R4LT5hdWRpb19iZSA/IEFW X0NPREVDX0lEX1BDTV9TMzJCRSA6IEFWX0NPREVDX0lEX1BDTV9TMzJMRTsKKyAgICBhdWRpb19i aXRzX3Blcl9zYW1wbGUgPSBpbnB1dF9mb3JtYXQtPm1CaXRzUGVyQ2hhbm5lbDsKKyAgICBhdWRp b19mbG9hdCAgICAgICAgICAgPSBpbnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zv cm1hdEZsYWdJc0Zsb2F0OworICAgIGF1ZGlvX2JlICAgICAgICAgICAgICA9IGlucHV0X2Zvcm1h dC0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9ybWF0RmxhZ0lzQmlnRW5kaWFuOworICAgIGF1ZGlv X3NpZ25lZF9pbnRlZ2VyICA9IGlucHV0X2Zvcm1hdC0+bUZvcm1hdEZsYWdzICYga0F1ZGlvRm9y bWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsKKyAgICBhdWRpb19wYWNrZWQgICAgICAgICAgPSBpbnB1 dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIGtBdWRpb0Zvcm1hdEZsYWdJc1BhY2tlZDsKKyAgICBh dWRpb19ub25faW50ZXJsZWF2ZWQgPSBpbnB1dF9mb3JtYXQtPm1Gb3JtYXRGbGFncyAmIGtBdWRp b0Zvcm1hdEZsYWdJc05vbkludGVybGVhdmVkOworCisgICAgY3R4LT5pbnB1dF9ieXRlc19wZXJf c2FtcGxlICA9IGlucHV0X2Zvcm1hdC0+bUJpdHNQZXJDaGFubmVsID4+IDM7CisgICAgY3R4LT5v dXRwdXRfYnl0ZXNfcGVyX3NhbXBsZSA9IGN0eC0+aW5wdXRfYnl0ZXNfcGVyX3NhbXBsZTsKKyAg ICBjdHgtPmF1ZGlvX2NoYW5uZWxzICAgICAgICAgID0gaW5wdXRfZm9ybWF0LT5tQ2hhbm5lbHNQ ZXJGcmFtZTsKKworICAgIGlmIChhdWRpb19ub25faW50ZXJsZWF2ZWQpIHsKKyAgICAgICAgY3R4 LT5hdWRpb19idWZmZXJzID0gaW5wdXRfZm9ybWF0LT5tQ2hhbm5lbHNQZXJGcmFtZTsKICAgIH0g ZWxzZSB7Ci0gICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsKLSAgICAgICAgYXZfbG9nKHMsIEFW X0xPR19FUlJPUiwgImF1ZGlvIGZvcm1hdCBpcyBub3Qgc3VwcG9ydGVkXG4iKTsKLSAgICAgICAg cmV0dXJuIDE7CisgICAgICAgIGN0eC0+YXVkaW9fYnVmZmVycyA9IDE7CisgICAgfQorCisgICAg aWYgKGF1ZGlvX25vbl9pbnRlcmxlYXZlZCB8fCAhYXVkaW9fcGFja2VkKSB7CisgICAgICBtdXN0 X2NvbnZlcnQgPSAxOworICAgIH0KKworICAgIG91dHB1dF9mb3JtYXQubUJpdHNQZXJDaGFubmVs ICAgPSBpbnB1dF9mb3JtYXQtPm1CaXRzUGVyQ2hhbm5lbDsKKyAgICBvdXRwdXRfZm9ybWF0Lm1D aGFubmVsc1BlckZyYW1lID0gY3R4LT5hdWRpb19jaGFubmVsczsKKyAgICBvdXRwdXRfZm9ybWF0 Lm1GcmFtZXNQZXJQYWNrZXQgID0gMTsKKyAgICBvdXRwdXRfZm9ybWF0Lm1CeXRlc1BlckZyYW1l ICAgID0gb3V0cHV0X2Zvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSAqIGN0eC0+aW5wdXRfYnl0ZXNf cGVyX3NhbXBsZTsKKyAgICBvdXRwdXRfZm9ybWF0Lm1CeXRlc1BlclBhY2tldCAgID0gb3V0cHV0 X2Zvcm1hdC5tRnJhbWVzUGVyUGFja2V0ICogb3V0cHV0X2Zvcm1hdC5tQnl0ZXNQZXJGcmFtZTsK KyAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyAgICAgID0ga0F1ZGlvRm9ybWF0RmxhZ0lz UGFja2VkIHwgYXVkaW9fYmU7CisgICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0SUQgICAgICAgICA9 IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBvdXRwdXRfZm9ybWF0Lm1SZXNlcnZlZCAgICAg ICAgID0gMDsKKyAgICBvdXRwdXRfZm9ybWF0Lm1TYW1wbGVSYXRlICAgICAgID0gaW5wdXRfZm9y bWF0LT5tU2FtcGxlUmF0ZTsKKworICAgIGlmIChhdWRpb19mbG9hdCAmJgorICAgICAgICBhdWRp b19iaXRzX3Blcl9zYW1wbGUgPT0gMzIpIHsKKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29k ZWNfaWQgPSBhdWRpb19iZSA/IEFWX0NPREVDX0lEX1BDTV9GMzJCRSA6IEFWX0NPREVDX0lEX1BD TV9GMzJMRTsKKyAgICAgICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9y bWF0RmxhZ0lzRmxvYXQ7CisgICAgfSBlbHNlIGlmIChhdWRpb19mbG9hdCAmJgorICAgICAgICBh dWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gNjQpIHsKKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+ Y29kZWNfaWQgPSBhdWRpb19iZSA/IEFWX0NPREVDX0lEX1BDTV9GNjRCRSA6IEFWX0NPREVDX0lE X1BDTV9GNjRMRTsKKyAgICAgICAgb3V0cHV0X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlv Rm9ybWF0RmxhZ0lzRmxvYXQ7CisgICAgfSBlbHNlIGlmIChhdWRpb19zaWduZWRfaW50ZWdlciAm JgorICAgICAgICBhdWRpb19iaXRzX3Blcl9zYW1wbGUgPT0gOCkgeworICAgICAgICBzdHJlYW0t PmNvZGVjcGFyLT5jb2RlY19pZCA9IEFWX0NPREVDX0lEX1BDTV9TODsKKyAgICAgICAgb3V0cHV0 X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdlcjsK KyAgICB9IGVsc2UgaWYgKGF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCisgICAgICAgIGF1ZGlvX2Jp dHNfcGVyX3NhbXBsZSA9PSAxNikgeworICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2RlY19p ZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1MxNkJFIDogQVZfQ09ERUNfSURfUENNX1Mx NkxFOworICAgICAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSBrQXVkaW9Gb3JtYXRG bGFnSXNTaWduZWRJbnRlZ2VyOworICAgIH0gZWxzZSBpZiAoYXVkaW9fc2lnbmVkX2ludGVnZXIg JiYKKyAgICAgICAgYXVkaW9fYml0c19wZXJfc2FtcGxlID09IDI0KSB7CisgICAgICAgIHN0cmVh bS0+Y29kZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fUzI0QkUg OiBBVl9DT0RFQ19JRF9QQ01fUzI0TEU7CisgICAgICAgIG91dHB1dF9mb3JtYXQubUZvcm1hdEZs YWdzIHw9IGtBdWRpb0Zvcm1hdEZsYWdJc1NpZ25lZEludGVnZXI7CisgICAgfSBlbHNlIGlmIChh dWRpb19zaWduZWRfaW50ZWdlciAmJgorICAgICAgICBhdWRpb19iaXRzX3Blcl9zYW1wbGUgPT0g MzIpIHsKKyAgICAgICAgc3RyZWFtLT5jb2RlY3Bhci0+Y29kZWNfaWQgPSBhdWRpb19iZSA/IEFW X0NPREVDX0lEX1BDTV9TMzJCRSA6IEFWX0NPREVDX0lEX1BDTV9TMzJMRTsKKyAgICAgICAgb3V0 cHV0X2Zvcm1hdC5tRm9ybWF0RmxhZ3MgfD0ga0F1ZGlvRm9ybWF0RmxhZ0lzU2lnbmVkSW50ZWdl cjsKKyAgICB9IGVsc2UgaWYgKGF1ZGlvX3NpZ25lZF9pbnRlZ2VyICYmCisgICAgICAgIGF1ZGlv X2JpdHNfcGVyX3NhbXBsZSA9PSA2NCkgeworICAgICAgICBzdHJlYW0tPmNvZGVjcGFyLT5jb2Rl Y19pZCA9IGF1ZGlvX2JlID8gQVZfQ09ERUNfSURfUENNX1M2NEJFIDogQVZfQ09ERUNfSURfUENN X1M2NExFOworICAgICAgICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSBrQXVkaW9Gb3Jt YXRGbGFnSXNTaWduZWRJbnRlZ2VyOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmVhbS0+Y29k ZWNwYXItPmNvZGVjX2lkID0gYXVkaW9fYmUgPyBBVl9DT0RFQ19JRF9QQ01fUzMyQkUgOiBBVl9D T0RFQ19JRF9QQ01fUzMyTEU7CisgICAgICAgIGN0eC0+b3V0cHV0X2J5dGVzX3Blcl9zYW1wbGUg PSA0OworICAgICAgICBvdXRwdXRfZm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IDMyOworICAgICAg ICBvdXRwdXRfZm9ybWF0Lm1Gb3JtYXRGbGFncyB8PSBrQXVkaW9Gb3JtYXRGbGFnSXNTaWduZWRJ bnRlZ2VyOworICAgICAgICBtdXN0X2NvbnZlcnQgPSAxOwogICAgfQoKLSAgICBpZiAoY3R4LT5h dWRpb19ub25faW50ZXJsZWF2ZWQpIHsKLSAgICAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19i dWZmZXIgPSBDTVNhbXBsZUJ1ZmZlckdldERhdGFCdWZmZXIoY3R4LT5jdXJyZW50X2F1ZGlvX2Zy YW1lKTsKLSAgICAgICAgY3R4LT5hdWRpb19idWZmZXJfc2l6ZSAgICAgICAgPSBDTUJsb2NrQnVm ZmVyR2V0RGF0YUxlbmd0aChibG9ja19idWZmZXIpOwotICAgICAgICBjdHgtPmF1ZGlvX2J1ZmZl ciAgICAgICAgICAgICA9IGF2X21hbGxvYyhjdHgtPmF1ZGlvX2J1ZmZlcl9zaXplKTsKLSAgICAg ICAgaWYgKCFjdHgtPmF1ZGlvX2J1ZmZlcikgeworICAgIGlmIChtdXN0X2NvbnZlcnQpIHsKKyAg ICAgICAgT1NTdGF0dXMgcmV0ID0gQXVkaW9Db252ZXJ0ZXJOZXcoaW5wdXRfZm9ybWF0LCAmb3V0 cHV0X2Zvcm1hdCwgJmN0eC0+YXVkaW9fY29udmVydGVyKTsKKyAgICAgICAgaWYgKHJldCAhPSBu b0VycikgewogICAgICAgICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgICAgICBhdl9s b2cocywgQVZfTE9HX0VSUk9SLCAiZXJyb3IgYWxsb2NhdGluZyBhdWRpbyBidWZmZXJcbiIpOwor ICAgICAgICAgICAgYXZfbG9nKHMsIEFWX0xPR19FUlJPUiwgIkVycm9yIHdoaWxlIGFsbG9jYXRp bmcgYXVkaW8gY29udmVydGVyXG4iKTsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQog ICAgfQpAQCAtMTA0OCw2ICsxMDg3LDcgQEAgc3RhdGljIGludCBjb3B5X2N2cGl4ZWxidWZmZXIo QVZGb3JtYXRDb250ZXh0ICpzLAoKc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3JtYXRD b250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQp7CisgICAgT1NTdGF0dXMgcmV0OwogICAgQVZGQ29u dGV4dCogY3R4ID0gKEFWRkNvbnRleHQqKXMtPnByaXZfZGF0YTsKCiAgICBkbyB7CkBAIC0xMDkx LDcgKzExMzEsNyBAQCBzdGF0aWMgaW50IGF2Zl9yZWFkX3BhY2tldChBVkZvcm1hdENvbnRleHQg KnMsIEFWUGFja2V0ICpwa3QpCiAgICAgICAgICAgICAgICBzdGF0dXMgPSBjb3B5X2N2cGl4ZWxi dWZmZXIocywgaW1hZ2VfYnVmZmVyLCBwa3QpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAg ICAgICAgICAgc3RhdHVzID0gMDsKLSAgICAgICAgICAgICAgICBPU1N0YXR1cyByZXQgPSBDTUJs b2NrQnVmZmVyQ29weURhdGFCeXRlcyhibG9ja19idWZmZXIsIDAsIHBrdC0+c2l6ZSwgcGt0LT5k YXRhKTsKKyAgICAgICAgICAgICAgICByZXQgPSBDTUJsb2NrQnVmZmVyQ29weURhdGFCeXRlcyhi bG9ja19idWZmZXIsIDAsIHBrdC0+c2l6ZSwgcGt0LT5kYXRhKTsKICAgICAgICAgICAgICAgIGlm IChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgewogICAgICAgICAgICAgICAgICAgIHN0YXR1 cyA9IEFWRVJST1IoRUlPKTsKICAgICAgICAgICAgICAgIH0KQEAgLTExMDUsMjEgKzExNDUsNjAg QEAgc3RhdGljIGludCBhdmZfcmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tl dCAqcGt0KQogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChjdHgtPmN1cnJlbnRfYXVk aW9fZnJhbWUgIT0gbmlsKSB7CiAgICAgICAgICAgIENNQmxvY2tCdWZmZXJSZWYgYmxvY2tfYnVm ZmVyID0gQ01TYW1wbGVCdWZmZXJHZXREYXRhQnVmZmVyKGN0eC0+Y3VycmVudF9hdWRpb19mcmFt ZSk7Ci0gICAgICAgICAgICBpbnQgYmxvY2tfYnVmZmVyX3NpemUgICAgICAgICA9IENNQmxvY2tC dWZmZXJHZXREYXRhTGVuZ3RoKGJsb2NrX2J1ZmZlcik7CgotICAgICAgICAgICAgaWYgKCFibG9j a19idWZmZXIgfHwgIWJsb2NrX2J1ZmZlcl9zaXplKSB7Ci0gICAgICAgICAgICAgICAgdW5sb2Nr X2ZyYW1lcyhjdHgpOwotICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTyk7Ci0gICAg ICAgICAgICB9CisgICAgICAgICAgICBzaXplX3QgaW5wdXRfc2l6ZSA9IENNQmxvY2tCdWZmZXJH ZXREYXRhTGVuZ3RoKGJsb2NrX2J1ZmZlcik7CisgICAgICAgICAgICBpbnQgYnVmZmVyX3NpemUg PSBpbnB1dF9zaXplIC8gY3R4LT5hdWRpb19idWZmZXJzOworICAgICAgICAgICAgaW50IG5iX3Nh bXBsZXMgPSBpbnB1dF9zaXplIC8gKGN0eC0+YXVkaW9fY2hhbm5lbHMgKiBjdHgtPmlucHV0X2J5 dGVzX3Blcl9zYW1wbGUpOworICAgICAgICAgICAgaW50IG91dHB1dF9zaXplID0gbmJfc2FtcGxl cyAqIGN0eC0+b3V0cHV0X2J5dGVzX3Blcl9zYW1wbGUgKiBjdHgtPmF1ZGlvX2NoYW5uZWxzOwoK LSAgICAgICAgICAgIGlmIChjdHgtPmF1ZGlvX25vbl9pbnRlcmxlYXZlZCAmJiBibG9ja19idWZm ZXJfc2l6ZSA+IGN0eC0+YXVkaW9fYnVmZmVyX3NpemUpIHsKLSAgICAgICAgICAgICAgICB1bmxv Y2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfQlVGRkVSX1RP T19TTUFMTDsKKyAgICAgICAgICAgIHN0YXR1cyA9IGF2X25ld19wYWNrZXQocGt0LCBvdXRwdXRf c2l6ZSk7CisgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgIENG UmVsZWFzZShhdWRpb19mcmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAg ICAgICAgICAgfQoKLSAgICAgICAgICAgIGlmIChhdl9uZXdfcGFja2V0KHBrdCwgYmxvY2tfYnVm ZmVyX3NpemUpIDwgMCkgewotICAgICAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsKLSAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU8pOworICAgICAgICAgICAgaWYgKGN0eC0+ YXVkaW9fY29udmVydGVyKSB7CisgICAgICAgICAgICAgICAgc2l6ZV90IGlucHV0X2J1ZmZlcl9z aXplID0gb2Zmc2V0b2YoQXVkaW9CdWZmZXJMaXN0LCBtQnVmZmVyc1swXSkgKyAoc2l6ZW9mKEF1 ZGlvQnVmZmVyKSAqIGN0eC0+YXVkaW9fYnVmZmVycyk7CisgICAgICAgICAgICAgICAgQXVkaW9C dWZmZXJMaXN0ICppbnB1dF9idWZmZXIgPSBhdl9tYWxsb2MoaW5wdXRfYnVmZmVyX3NpemUpOwor CisgICAgICAgICAgICAgICAgaW5wdXRfYnVmZmVyLT5tTnVtYmVyQnVmZmVycyA9IGN0eC0+YXVk aW9fYnVmZmVyczsKKworICAgICAgICAgICAgICAgIGZvciAoaW50IGMgPSAwOyBjIDwgY3R4LT5h dWRpb19idWZmZXJzOyBjKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRfYnVmZmVyLT5t QnVmZmVyc1tjXS5tTnVtYmVyQ2hhbm5lbHMgPSAxOworCisgICAgICAgICAgICAgICAgICAgIHJl dCA9IENNQmxvY2tCdWZmZXJHZXREYXRhUG9pbnRlcihibG9ja19idWZmZXIsIGMgKiBidWZmZXJf c2l6ZSwgKHNpemVfdCAqKSZpbnB1dF9idWZmZXItPm1CdWZmZXJzW2NdLm1EYXRhQnl0ZVNpemUs IE5VTEwsICh2b2lkICopJmlucHV0X2J1ZmZlci0+bUJ1ZmZlcnNbY10ubURhdGEpOworCisgICAg ICAgICAgICAgICAgICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgeworICAgICAg ICAgICAgICAgICAgICAgICAgYXZfZnJlZShpbnB1dF9idWZmZXIpOworICAgICAgICAgICAgICAg ICAgICAgICAgdW5sb2NrX2ZyYW1lcyhjdHgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1IoRUlPKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgIEF1ZGlvQnVmZmVyTGlzdCBvdXRwdXRfYnVmZmVyID0gewor ICAgICAgICAgICAgICAgICAgIC5tTnVtYmVyQnVmZmVycyA9IDEsCisgICAgICAgICAgICAgICAg ICAgLm1CdWZmZXJzWzBdICAgID0geworICAgICAgICAgICAgICAgICAgICAgICAubU51bWJlckNo YW5uZWxzID0gY3R4LT5hdWRpb19jaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgLm1E YXRhQnl0ZVNpemUgICA9IHBrdC0+c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgLm1EYXRh ICAgICAgICAgICA9IHBrdC0+ZGF0YQorICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICB9OworCisgICAgICAgICAgICAgICAgcmV0ID0gQXVkaW9Db252ZXJ0ZXJDb252ZXJ0Q29t cGxleEJ1ZmZlcihjdHgtPmF1ZGlvX2NvbnZlcnRlciwgbmJfc2FtcGxlcywgaW5wdXRfYnVmZmVy LCAmb3V0cHV0X2J1ZmZlcik7CisgICAgICAgICAgICAgICAgYXZfZnJlZShpbnB1dF9idWZmZXIp OworCisgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBub0VycikgeworICAgICAgICAgICAgICAg ICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVJTyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcGt0LT5zaXpl ID0gb3V0cHV0X2J1ZmZlci5tQnVmZmVyc1swXS5tRGF0YUJ5dGVTaXplOworICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgcmV0ID0gQ01CbG9ja0J1ZmZlckNvcHlEYXRhQnl0 ZXMoYmxvY2tfYnVmZmVyLCAwLCBwa3QtPnNpemUsIHBrdC0+ZGF0YSk7CisgICAgICAgICAgICAg ICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgeworICAgICAgICAgICAgICAgICAg ICAgdW5sb2NrX2ZyYW1lcyhjdHgpOworICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlPKTsKKyAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBD TUl0ZW1Db3VudCBjb3VudDsKQEAgLTExMzMsNTQgKzEyMTIsMTAgQEAgc3RhdGljIGludCBhdmZf cmVhZF9wYWNrZXQoQVZGb3JtYXRDb250ZXh0ICpzLCBBVlBhY2tldCAqcGt0KQogICAgICAgICAg ICBwa3QtPnN0cmVhbV9pbmRleCAgPSBjdHgtPmF1ZGlvX3N0cmVhbV9pbmRleDsKICAgICAgICAg ICAgcGt0LT5mbGFncyAgICAgICAgfD0gQVZfUEtUX0ZMQUdfS0VZOwoKLSAgICAgICAgICAgIGlm IChjdHgtPmF1ZGlvX25vbl9pbnRlcmxlYXZlZCkgewotICAgICAgICAgICAgICAgIGludCBzYW1w bGUsIGMsIHNoaWZ0LCBudW1fc2FtcGxlczsKLQotICAgICAgICAgICAgICAgIE9TU3RhdHVzIHJl dCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5zaXpl LCBjdHgtPmF1ZGlvX2J1ZmZlcik7Ci0gICAgICAgICAgICAgICAgaWYgKHJldCAhPSBrQ01CbG9j a0J1ZmZlck5vRXJyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4KTsK LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsKLSAgICAgICAgICAgICAg ICB9Ci0KLSAgICAgICAgICAgICAgICBudW1fc2FtcGxlcyA9IHBrdC0+c2l6ZSAvIChjdHgtPmF1 ZGlvX2NoYW5uZWxzICogKGN0eC0+YXVkaW9fYml0c19wZXJfc2FtcGxlID4+IDMpKTsKLQotICAg ICAgICAgICAgICAgIC8vIHRyYW5zZm9ybSBkZWNvZGVkIGZyYW1lIGludG8gb3V0cHV0IGZvcm1h dAotICAgICAgICAgICAgICAgICNkZWZpbmUgSU5URVJMRUFWRV9PVVRQVVQoYnBzKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIHsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBpbnQjI2JwcyMjX3QgKipzcmM7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAg ICAgICAgICBpbnQjI2JwcyMjX3QgKmRlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBzcmMgPSBhdl9tYWxsb2Mo Y3R4LT5hdWRpb19jaGFubmVscyAqIHNpemVvZihpbnQjI2JwcyMjX3QqKSk7ICAgICAgXAotICAg ICAgICAgICAgICAgICAgICBpZiAoIXNyYykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgdW5s b2NrX2ZyYW1lcyhjdHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlPKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAg ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgICAgICAgICBmb3IgKGMgPSAwOyBjIDwgY3R4LT5hdWRpb19jaGFubmVsczsgYysrKSB7ICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgc3JjW2NdID0g KChpbnQjI2JwcyMjX3QqKWN0eC0+YXVkaW9fYnVmZmVyKSArIGMgKiBudW1fc2FtcGxlczsgXAot ICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBkZXN0 ICA9IChpbnQjI2JwcyMjX3QqKXBrdC0+ZGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotICAgICAgICAgICAgICAgICAgICBzaGlmdCA9IGJwcyAtIGN0eC0+YXVkaW9fYml0 c19wZXJfc2FtcGxlOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAg ICAgICBmb3IgKHNhbXBsZSA9IDA7IHNhbXBsZSA8IG51bV9zYW1wbGVzOyBzYW1wbGUrKykgICAg ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjID0gMDsgYyA8 IGN0eC0+YXVkaW9fY2hhbm5lbHM7IGMrKykgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICpkZXN0KysgPSBzcmNbY11bc2FtcGxlXSA8PCBzaGlmdDsg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICBhdl9mcmVlcCgm c3JjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChjdHgtPmF1ZGlvX2Jp dHNfcGVyX3NhbXBsZSA8PSAxNikgewotICAgICAgICAgICAgICAgICAgICBJTlRFUkxFQVZFX09V VFBVVCgxNikKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBJ TlRFUkxFQVZFX09VVFBVVCgzMikKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgIE9TU3RhdHVzIHJldCA9IENNQmxvY2tCdWZmZXJDb3B5RGF0 YUJ5dGVzKGJsb2NrX2J1ZmZlciwgMCwgcGt0LT5zaXplLCBwa3QtPmRhdGEpOwotICAgICAgICAg ICAgICAgIGlmIChyZXQgIT0ga0NNQmxvY2tCdWZmZXJOb0VycikgewotICAgICAgICAgICAgICAg ICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVJTyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAgICAgICAg IENGUmVsZWFzZShjdHgtPmN1cnJlbnRfYXVkaW9fZnJhbWUpOwogICAgICAgICAgICBjdHgtPmN1 cnJlbnRfYXVkaW9fZnJhbWUgPSBuaWw7CisKKyAgICAgICAgICAgIHVubG9ja19mcmFtZXMoY3R4 KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwa3QtPmRhdGEgPSBOVUxMOwogICAgICAg ICAgICB1bmxvY2tfZnJhbWVzKGN0eCk7Ci0tIAoyLjMyLjAgKEFwcGxlIEdpdC0xMzIpCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwg bWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsg YWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJq ZWN0ICJ1bnN1YnNjcmliZSIuCg==