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 5BC3D44ED3 for ; Fri, 27 Jan 2023 14:30:15 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8980368BE35; Fri, 27 Jan 2023 16:29:50 +0200 (EET) Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CC07968BE21 for ; Fri, 27 Jan 2023 16:29:43 +0200 (EET) Received: by mail-ej1-f41.google.com with SMTP id k4so8706425eje.1 for ; Fri, 27 Jan 2023 06:29:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=HYutBP70zc4brBJ5SAk0qlFR7w86g5rl+8MXIEBQRQY=; b=A/ROwpJuVthk2vDIPo5Lz2aeJPiMznCY/86PR6RrNHuA3BEg8e5Od/hSKN5mLreE6M PaH9rJhFSorlxVqZo8v71m8FxZq+NnwUihEsGTmBTGk+htFpSDwpycYroY7QZBBJgNLP vpxW+mCqQ4ObwrhKejRxwfUkbpQVaeNDcTD0DzsovyW9h9IQ0t2cvHxTFL4vZmcFRGCm PGghg6/PN3TaiOoe9WsOxR2QTKSVQaBtjB0AVOv7EKNoXqX9HFPgzwyIsCm04IEpsMMg +5cA7mQhEIbSsasfmyjp5AHBNDPNBKYhAWTKfrdQvXioSIBzNcB2ytMQ+s4FLR1h7XPP TPvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HYutBP70zc4brBJ5SAk0qlFR7w86g5rl+8MXIEBQRQY=; b=HKF5vaiy+KVLBmc9S54tvIDueX8RSgCznD+18sSF/wzqsk5pC1L8MgTcJzETWJ27jY v6Lo/OFIbXnTl2+1rE4MOpOaUz1VQXvyp35fStmkRO+3409yrNuIk6+1LgeAueAFWoMy gErVp9025pYALJuVJTWTZayk7tZJWFhv5xgmQ/hgRsKnIF7iC5B3L8kcjiLeTV4MG/qX QPUrBuK7x3r6mzKN879fPY0F6AZs6fV2EmRHjRLAhS8aYr2yxlNrE0XPBdZeoVW14znD QGh8Y8F/UQImss72qol2aHX+Cn1eK4s5LDwjwhDYntfjdOkr/pKLPeOVooCf08q8SHSK +7dA== X-Gm-Message-State: AFqh2kpmYU0pj71MO+uQIr7ZcPUKRyxur/05j4S3+GMbsBnMLkNYUJXa YU2Sn0od4LEhfnWFRUWGMzPQV18mWMo= X-Google-Smtp-Source: AMrXdXvAsuQrpf2V6IK0+1rTZMuYURAPJ2X6i96COJPrFpDYf31Hik0tAFBwfl26glRUE0p9s905FQ== X-Received: by 2002:a17:907:8a07:b0:7c1:5ee1:4c57 with SMTP id sc7-20020a1709078a0700b007c15ee14c57mr49115483ejc.8.1674829783110; Fri, 27 Jan 2023 06:29:43 -0800 (PST) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id cm20-20020a170907939400b00871cb1b8f63sm2326387ejc.26.2023.01.27.06.29.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Jan 2023 06:29:42 -0800 (PST) From: =?UTF-8?q?Jan=20Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 27 Jan 2023 16:29:31 +0200 Message-Id: <20230127142931.35061-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230127142931.35061-1-jeebjp@gmail.com> References: <20230127142931.35061-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v7 3/3] ffmpeg: add video heartbeat capability to fix_sub_duration 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 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: RnJvbTogSmFuIEVrc3Ryw7ZtIDxqYW4uZWtzdHJvbUAyNGkuY29tPgoKU3BsaXRzIHRoZSBjdXJy ZW50bHkgaGFuZGxlZCBzdWJ0aXRsZSBhdCByYW5kb20gYWNjZXNzIHBvaW50CnBhY2tldHMgdGhh dCBjYW4gYmUgY29uZmlndXJlZCB0byBmb2xsb3cgYSBzcGVjaWZpYyBvdXRwdXQgc3RyZWFtLgpD dXJyZW50bHkgb25seSBzdWJ0aXRsZSBzdHJlYW1zIHdoaWNoIGFyZSBkaXJlY3RseSBtYXBwZWQg aW50byB0aGUKc2FtZSBvdXRwdXQgaW4gd2hpY2ggdGhlIGhlYXJ0YmVhdCBzdHJlYW0gcmVzaWRl cyBhcmUgYWZmZWN0ZWQuCgpUaGlzIHdheSB0aGUgc3VidGl0bGUgLSB3aGljaCBpcyBrbm93biB0 byBiZSBzaG93biBhdCB0aGlzIHRpbWUKY2FuIGJlIHNwbGl0IGFuZCBwYXNzZWQgdG8gbXV4ZXIg YmVmb3JlIGl0cyBmdWxsIGR1cmF0aW9uIGlzCnlldCBrbm93bi4gVGhpcyBpcyBhbHNvIGEgZHJh d2JhY2ssIGFzIHRoaXMgZXNzZW50aWFsbHkgb3V0cHV0cwptdWx0aXBsZSBzdWJ0aXRsZXMgZnJv bSBhIHNpbmdsZSBpbnB1dCBzdWJ0aXRsZSB0aGF0IGNvbnRpbnVlcwpvdmVyIG11bHRpcGxlIHJh bmRvbSBhY2Nlc3MgcG9pbnRzLiBUaHVzIHRoaXMgZmVhdHVyZSBzaG91bGQgbm90CmJlIHV0aWxp emVkIGluIGNhc2VzIHdoZXJlIHN1YnRpdGxlIG91dHB1dCBsYXRlbmN5IGRvZXMgbm90IG1hdHRl ci4KCkNvLWF1dGhvcmVkLWJ5OiBBbmRyemVqIE5hZGFjaG93c2tpIDxhbmRyemVqLm5hZGFjaG93 c2tpQDI0aS5jb20+CkNvLWF1dGhvcmVkLWJ5OiBCZXJuYXJkIEJvdWxheSA8YmVybmFyZC5ib3Vs YXlAMjRpLmNvbT4KClNpZ25lZC1vZmYtYnk6IEphbiBFa3N0csO2bSA8amFuLmVrc3Ryb21AMjRp LmNvbT4KLS0tCiBkb2MvZmZtcGVnLnRleGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTYgKysKIGZmdG9vbHMvZmZtcGVnLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 IDE0OCArKysrKysrKysrKysrKysrKysKIGZmdG9vbHMvZmZtcGVnLmggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgOCArCiBmZnRvb2xzL2ZmbXBlZ19tdXhfaW5pdC5jICAgICAgICAg ICAgICAgICAgICAgfCAgIDQgKwogZmZ0b29scy9mZm1wZWdfb3B0LmMgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICA1ICsKIHRlc3RzL2ZhdGUvZmZtcGVnLm1hayAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAxNSArKwogLi4uL2ZhdGUvZmZtcGVnLWZpeF9zdWJfZHVyYXRpb25faGVhcnRi ZWF0ICAgIHwgIDQ4ICsrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAyNDQgaW5zZXJ0aW9ucygrKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL3JlZi9mYXRlL2ZmbXBlZy1maXhfc3ViX2R1cmF0aW9u X2hlYXJ0YmVhdAoKZGlmZiAtLWdpdCBhL2RvYy9mZm1wZWcudGV4aSBiL2RvYy9mZm1wZWcudGV4 aQppbmRleCA2N2IzMjk0MjU2Li4wZWI3OTFlNmU5IDEwMDY0NAotLS0gYS9kb2MvZmZtcGVnLnRl eGkKKysrIGIvZG9jL2ZmbXBlZy50ZXhpCkBAIC0xMzQ0LDYgKzEzNDQsMjIgQEAgTGlzdCBhbGwg aGFyZHdhcmUgYWNjZWxlcmF0aW9uIGNvbXBvbmVudHMgZW5hYmxlZCBpbiB0aGlzIGJ1aWxkIG9m IGZmbXBlZy4KIEFjdHVhbCBydW50aW1lIGF2YWlsYWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBoYXJk d2FyZSBhbmQgaXRzIHN1aXRhYmxlIGRyaXZlcgogYmVpbmcgaW5zdGFsbGVkLgogCitAaXRlbSAt Zml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXRbOkB2YXJ7c3RyZWFtX3NwZWNpZmllcn1dCitTZXQg YSBzcGVjaWZpYyBvdXRwdXQgdmlkZW8gc3RyZWFtIGFzIHRoZSBoZWFydGJlYXQgc3RyZWFtIGFj Y29yZGluZyB0byB3aGljaAordG8gc3BsaXQgYW5kIHB1c2ggdGhyb3VnaCBjdXJyZW50bHkgaW4t cHJvZ3Jlc3Mgc3VidGl0bGUgdXBvbiByZWNlaXB0IG9mIGEKK3JhbmRvbSBhY2Nlc3MgcGFja2V0 LgorCitUaGlzIGxvd2VycyB0aGUgbGF0ZW5jeSBvZiBzdWJ0aXRsZXMgZm9yIHdoaWNoIHRoZSBl bmQgcGFja2V0IG9yIHRoZSBmb2xsb3dpbmcKK3N1YnRpdGxlIGhhcyBub3QgeWV0IGJlZW4gcmVj ZWl2ZWQuIEFzIGEgZHJhd2JhY2ssIHRoaXMgd2lsbCBtb3N0IGxpa2VseSBsZWFkCit0byBkdXBs aWNhdGlvbiBvZiBzdWJ0aXRsZSBldmVudHMgaW4gb3JkZXIgdG8gY292ZXIgdGhlIGZ1bGwgZHVy YXRpb24sIHNvCit3aGVuIGRlYWxpbmcgd2l0aCB1c2UgY2FzZXMgd2hlcmUgbGF0ZW5jeSBvZiB3 aGVuIHRoZSBzdWJ0aXRsZSBldmVudCBpcyBwYXNzZWQKK29uIHRvIG91dHB1dCBpcyBub3QgcmVs ZXZhbnQgdGhpcyBvcHRpb24gc2hvdWxkIG5vdCBiZSB1dGlsaXplZC4KKworUmVxdWlyZXMgQG9w dGlvbnstZml4X3N1Yl9kdXJhdGlvbn0gdG8gYmUgc2V0IGZvciB0aGUgcmVsZXZhbnQgaW5wdXQg c3VidGl0bGUKK3N0cmVhbSBmb3IgdGhpcyB0byBoYXZlIGFueSBlZmZlY3QsIGFzIHdlbGwgYXMg Zm9yIHRoZSBpbnB1dCBzdWJ0aXRsZSBzdHJlYW0KK2hhdmluZyB0byBiZSBkaXJlY3RseSBtYXBw ZWQgdG8gdGhlIHNhbWUgb3V0cHV0IGluIHdoaWNoIHRoZSBoZWFydGJlYXQgc3RyZWFtCityZXNp ZGVzLgorCiBAZW5kIHRhYmxlCiAKIEBzZWN0aW9uIEF1ZGlvIE9wdGlvbnMKZGlmZiAtLWdpdCBh L2ZmdG9vbHMvZmZtcGVnLmMgYi9mZnRvb2xzL2ZmbXBlZy5jCmluZGV4IDM1YWY1NjUwMTUuLjA2 OTg3OGU4OTYgMTAwNjQ0Ci0tLSBhL2ZmdG9vbHMvZmZtcGVnLmMKKysrIGIvZmZ0b29scy9mZm1w ZWcuYwpAQCAtMTE5LDYgKzExOSw3IEBAIHR5cGVkZWYgc3RydWN0IEJlbmNobWFya1RpbWVTdGFt cHMgewogICAgIGludDY0X3Qgc3lzX3VzZWM7CiB9IEJlbmNobWFya1RpbWVTdGFtcHM7CiAKK3N0 YXRpYyBpbnQgdHJpZ2dlcl9maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdChPdXRwdXRTdHJlYW0g Km9zdCwgY29uc3QgQVZQYWNrZXQgKnBrdCk7CiBzdGF0aWMgQmVuY2htYXJrVGltZVN0YW1wcyBn ZXRfYmVuY2htYXJrX3RpbWVfc3RhbXBzKHZvaWQpOwogc3RhdGljIGludDY0X3QgZ2V0bWF4cnNz KHZvaWQpOwogc3RhdGljIGludCBpZmlsdGVyX2hhc19hbGxfaW5wdXRfZm9ybWF0cyhGaWx0ZXJH cmFwaCAqZmcpOwpAQCAtODcwLDYgKzg3MSwxMyBAQCBzdGF0aWMgaW50IGVuY29kZV9mcmFtZShP dXRwdXRGaWxlICpvZiwgT3V0cHV0U3RyZWFtICpvc3QsIEFWRnJhbWUgKmZyYW1lKQogICAgICAg ICAgICAgICAgICAgIGF2X3RzMnN0cihwa3QtPmR1cmF0aW9uKSwgYXZfdHMydGltZXN0cihwa3Qt PmR1cmF0aW9uLCAmZW5jLT50aW1lX2Jhc2UpKTsKICAgICAgICAgfQogCisgICAgICAgIGlmICgo cmV0ID0gdHJpZ2dlcl9maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdChvc3QsIHBrdCkpIDwgMCkg eworICAgICAgICAgICAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwKKyAgICAgICAgICAgICAg ICAgICAiU3VidGl0bGUgaGVhcnRiZWF0IGxvZ2ljIGZhaWxlZCBpbiAlcyEgKCVzKVxuIiwKKyAg ICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgYXZfZXJyMnN0cihyZXQpKTsKKyAgICAgICAgICAg IGV4aXRfcHJvZ3JhbSgxKTsKKyAgICAgICAgfQorCiAgICAgICAgIG9zdC0+ZGF0YV9zaXplX2Vu YyArPSBwa3QtPnNpemU7CiAKICAgICAgICAgaWYgKGVuYy0+Y29kZWNfdHlwZSA9PSBBVk1FRElB X1RZUEVfVklERU8pCkBAIC0xODMyLDYgKzE4NDAsMTYgQEAgc3RhdGljIHZvaWQgZG9fc3RyZWFt Y29weShJbnB1dFN0cmVhbSAqaXN0LCBPdXRwdXRTdHJlYW0gKm9zdCwgY29uc3QgQVZQYWNrZXQg KnAKIAogICAgIG9wa3QtPmR1cmF0aW9uID0gYXZfcmVzY2FsZV9xKHBrdC0+ZHVyYXRpb24sIGlz dC0+c3QtPnRpbWVfYmFzZSwgb3N0LT5tdXhfdGltZWJhc2UpOwogCisgICAgeworICAgICAgICBp bnQgcmV0ID0gdHJpZ2dlcl9maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdChvc3QsIHBrdCk7Cisg ICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0VS Uk9SLAorICAgICAgICAgICAgICAgICAgICJTdWJ0aXRsZSBoZWFydGJlYXQgbG9naWMgZmFpbGVk IGluICVzISAoJXMpXG4iLAorICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBhdl9lcnIyc3Ry KHJldCkpOworICAgICAgICAgICAgZXhpdF9wcm9ncmFtKDEpOworICAgICAgICB9CisgICAgfQor CiAgICAgb2Zfb3V0cHV0X3BhY2tldChvZiwgb3BrdCwgb3N0LCAwKTsKIAogICAgIG9zdC0+c3Ry ZWFtY29weV9zdGFydGVkID0gMTsKQEAgLTIyNTgsNiArMjI3NiwxMzYgQEAgb3V0OgogICAgIHJl dHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgY29weV9hdl9zdWJ0aXRsZShBVlN1YnRpdGxlICpk c3QsIEFWU3VidGl0bGUgKnNyYykKK3sKKyAgICBpbnQgcmV0ID0gQVZFUlJPUl9CVUc7CisgICAg QVZTdWJ0aXRsZSB0bXAgPSB7CisgICAgICAgIC5mb3JtYXQgPSBzcmMtPmZvcm1hdCwKKyAgICAg ICAgLnN0YXJ0X2Rpc3BsYXlfdGltZSA9IHNyYy0+c3RhcnRfZGlzcGxheV90aW1lLAorICAgICAg ICAuZW5kX2Rpc3BsYXlfdGltZSA9IHNyYy0+ZW5kX2Rpc3BsYXlfdGltZSwKKyAgICAgICAgLm51 bV9yZWN0cyA9IDAsCisgICAgICAgIC5yZWN0cyA9IE5VTEwsCisgICAgICAgIC5wdHMgPSBzcmMt PnB0cworICAgIH07CisKKyAgICBpZiAoIXNyYy0+bnVtX3JlY3RzKQorICAgICAgICBnb3RvIHN1 Y2Nlc3M7CisKKyAgICBpZiAoISh0bXAucmVjdHMgPSBhdl9jYWxsb2Moc3JjLT5udW1fcmVjdHMs IHNpemVvZigqdG1wLnJlY3RzKSkpKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwor CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzcmMtPm51bV9yZWN0czsgaSsrKSB7CisgICAgICAg IEFWU3VidGl0bGVSZWN0ICpzcmNfcmVjdCA9IHNyYy0+cmVjdHNbaV07CisgICAgICAgIEFWU3Vi dGl0bGVSZWN0ICpkc3RfcmVjdDsKKworICAgICAgICBpZiAoIShkc3RfcmVjdCA9IHRtcC5yZWN0 c1tpXSA9IGF2X21hbGxvY3ooc2l6ZW9mKCp0bXAucmVjdHNbMF0pKSkpIHsKKyAgICAgICAgICAg IHJldCA9IEFWRVJST1IoRU5PTUVNKTsKKyAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAg ICAgfQorCisgICAgICAgIHRtcC5udW1fcmVjdHMrKzsKKworICAgICAgICBkc3RfcmVjdC0+dHlw ZSAgICAgID0gc3JjX3JlY3QtPnR5cGU7CisgICAgICAgIGRzdF9yZWN0LT5mbGFncyAgICAgPSBz cmNfcmVjdC0+ZmxhZ3M7CisKKyAgICAgICAgZHN0X3JlY3QtPnggICAgICAgICA9IHNyY19yZWN0 LT54OworICAgICAgICBkc3RfcmVjdC0+eSAgICAgICAgID0gc3JjX3JlY3QtPnk7CisgICAgICAg IGRzdF9yZWN0LT53ICAgICAgICAgPSBzcmNfcmVjdC0+dzsKKyAgICAgICAgZHN0X3JlY3QtPmgg ICAgICAgICA9IHNyY19yZWN0LT5oOworICAgICAgICBkc3RfcmVjdC0+bmJfY29sb3JzID0gc3Jj X3JlY3QtPm5iX2NvbG9yczsKKworICAgICAgICBpZiAoc3JjX3JlY3QtPnRleHQpCisgICAgICAg ICAgICBpZiAoIShkc3RfcmVjdC0+dGV4dCA9IGF2X3N0cmR1cChzcmNfcmVjdC0+dGV4dCkpKSB7 CisgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOworICAgICAgICAgICAgICAg IGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIH0KKworICAgICAgICBpZiAoc3JjX3JlY3QtPmFz cykKKyAgICAgICAgICAgIGlmICghKGRzdF9yZWN0LT5hc3MgPSBhdl9zdHJkdXAoc3JjX3JlY3Qt PmFzcykpKSB7CisgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOworICAgICAg ICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIH0KKworICAgICAgICBmb3IgKGlu dCBqID0gMDsgaiA8IDQ7IGorKykgeworICAgICAgICAgICAgLy8gU1VCVElUTEVfQklUTUFQIGlt YWdlcyBhcmUgc3BlY2lhbCBpbiB0aGUgc2Vuc2UgdGhhdCB0aGV5CisgICAgICAgICAgICAvLyBh cmUgbGlrZSBQQUw4IGltYWdlcy4gZmlyc3QgcG9pbnRlciB0byBkYXRhLCBzZWNvbmQgdG8KKyAg ICAgICAgICAgIC8vIHBhbGV0dGUuIFRoaXMgbWFrZXMgdGhlIHNpemUgY2FsY3VsYXRpb24gbWF0 Y2ggdGhpcy4KKyAgICAgICAgICAgIHNpemVfdCBidWZfc2l6ZSA9IHNyY19yZWN0LT50eXBlID09 IFNVQlRJVExFX0JJVE1BUCAmJiBqID09IDEgPworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQVZQQUxFVFRFX1NJWkUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jl Y3QtPmggKiBzcmNfcmVjdC0+bGluZXNpemVbal07CisKKyAgICAgICAgICAgIGlmICghc3JjX3Jl Y3QtPmRhdGFbal0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlm ICghKGRzdF9yZWN0LT5kYXRhW2pdID0gYXZfbWVtZHVwKHNyY19yZWN0LT5kYXRhW2pdLCBidWZf c2l6ZSkpKSB7CisgICAgICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9NRU0pOworICAgICAg ICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRzdF9y ZWN0LT5saW5lc2l6ZVtqXSA9IHNyY19yZWN0LT5saW5lc2l6ZVtqXTsKKyAgICAgICAgfQorICAg IH0KKworc3VjY2VzczoKKyAgICAqZHN0ID0gdG1wOworCisgICAgcmV0dXJuIDA7CisKK2NsZWFu dXA6CisgICAgYXZzdWJ0aXRsZV9mcmVlKCZ0bXApOworCisgICAgcmV0dXJuIHJldDsKK30KKwor c3RhdGljIGludCBmaXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdChJbnB1dFN0cmVhbSAqaXN0LCBp bnQ2NF90IHNpZ25hbF9wdHMpCit7CisgICAgaW50IHJldCA9IEFWRVJST1JfQlVHOworICAgIGlu dCBnb3Rfb3V0cHV0ID0gMTsKKyAgICBBVlN1YnRpdGxlICpwcmV2X3N1YnRpdGxlID0gJmlzdC0+ cHJldl9zdWIuc3VidGl0bGU7CisgICAgQVZTdWJ0aXRsZSBzdWJ0aXRsZTsKKworICAgIGlmICgh aXN0LT5maXhfc3ViX2R1cmF0aW9uIHx8ICFwcmV2X3N1YnRpdGxlLT5udW1fcmVjdHMgfHwKKyAg ICAgICAgc2lnbmFsX3B0cyA8PSBwcmV2X3N1YnRpdGxlLT5wdHMpCisgICAgICAgIHJldHVybiAw OworCisgICAgaWYgKChyZXQgPSBjb3B5X2F2X3N1YnRpdGxlKCZzdWJ0aXRsZSwgcHJldl9zdWJ0 aXRsZSkpIDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIHN1YnRpdGxlLnB0cyA9IHNp Z25hbF9wdHM7CisKKyAgICByZXR1cm4gcHJvY2Vzc19zdWJ0aXRsZShpc3QsICZzdWJ0aXRsZSwg JmdvdF9vdXRwdXQpOworfQorCitzdGF0aWMgaW50IHRyaWdnZXJfZml4X3N1Yl9kdXJhdGlvbl9o ZWFydGJlYXQoT3V0cHV0U3RyZWFtICpvc3QsIGNvbnN0IEFWUGFja2V0ICpwa3QpCit7CisgICAg T3V0cHV0RmlsZSAqb2YgPSBvdXRwdXRfZmlsZXNbb3N0LT5maWxlX2luZGV4XTsKKyAgICBpbnQ2 NF90IHNpZ25hbF9wdHMgPSBhdl9yZXNjYWxlX3EocGt0LT5wdHMsIG9zdC0+bXV4X3RpbWViYXNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9USU1FX0JBU0VfUSk7 CisKKyAgICBpZiAoIW9zdC0+Zml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQgfHwgIShwa3QtPmZs YWdzICYgQVZfUEtUX0ZMQUdfS0VZKSkKKyAgICAgICAgLy8gd2UgYXJlIG9ubHkgaW50ZXJlc3Rl ZCBpbiBoZWFydGJlYXRzIG9uIHN0cmVhbXMgY29uZmlndXJlZCwgYW5kCisgICAgICAgIC8vIG9u bHkgb24gcmFuZG9tIGFjY2VzcyBwb2ludHMuCisgICAgICAgIHJldHVybiAwOworCisgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBvZi0+bmJfc3RyZWFtczsgaSsrKSB7CisgICAgICAgIE91dHB1dFN0 cmVhbSAqaXRlcl9vc3QgPSBvZi0+c3RyZWFtc1tpXTsKKyAgICAgICAgSW5wdXRTdHJlYW0gICpp c3QgICAgICA9IGl0ZXJfb3N0LT5pc3Q7CisgICAgICAgIGludCByZXQgPSBBVkVSUk9SX0JVRzsK KworICAgICAgICBpZiAoaXRlcl9vc3QgPT0gb3N0IHx8ICFpc3QgfHwgIWlzdC0+ZGVjb2Rpbmdf bmVlZGVkIHx8CisgICAgICAgICAgICBpc3QtPmRlY19jdHgtPmNvZGVjX3R5cGUgIT0gQVZNRURJ QV9UWVBFX1NVQlRJVExFKQorICAgICAgICAgICAgLy8gV2Ugd2lzaCB0byBza2lwIHRoZSBzdHJl YW0gdGhhdCBjYXVzZXMgdGhlIGhlYXJ0YmVhdCwKKyAgICAgICAgICAgIC8vIG91dHB1dCBzdHJl YW1zIHdpdGhvdXQgYW4gaW5wdXQgc3RyZWFtLCBzdHJlYW1zIG5vdCBkZWNvZGVkCisgICAgICAg ICAgICAvLyAoYXMgZml4X3N1Yl9kdXJhdGlvbiBpcyBvbmx5IGRvbmUgZm9yIGRlY29kZWQgc3Vi dGl0bGVzKSBhcworICAgICAgICAgICAgLy8gd2VsbCBhcyBub24tc3VidGl0bGUgc3RyZWFtcy4K KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICgocmV0ID0gZml4X3N1Yl9kdXJh dGlvbl9oZWFydGJlYXQoaXN0LCBzaWduYWxfcHRzKSkgPCAwKQorICAgICAgICAgICAgcmV0dXJu IHJldDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwogc3RhdGljIGludCB0cmFuc2NvZGVf c3VidGl0bGVzKElucHV0U3RyZWFtICppc3QsIEFWUGFja2V0ICpwa3QsIGludCAqZ290X291dHB1 dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmRlY29kZV9mYWlsZWQpCiB7 CmRpZmYgLS1naXQgYS9mZnRvb2xzL2ZmbXBlZy5oIGIvZmZ0b29scy9mZm1wZWcuaAppbmRleCA1 NTI3ZGJlNDliLi44OTYyOTdmZWY2IDEwMDY0NAotLS0gYS9mZnRvb2xzL2ZmbXBlZy5oCisrKyBi L2ZmdG9vbHMvZmZtcGVnLmgKQEAgLTIyNCw2ICsyMjQsOCBAQCB0eXBlZGVmIHN0cnVjdCBPcHRp b25zQ29udGV4dCB7CiAgICAgaW50ICAgICAgICBuYl9yZWluaXRfZmlsdGVyczsKICAgICBTcGVj aWZpZXJPcHQgKmZpeF9zdWJfZHVyYXRpb247CiAgICAgaW50ICAgICAgICBuYl9maXhfc3ViX2R1 cmF0aW9uOworICAgIFNwZWNpZmllck9wdCAqZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQ7Cisg ICAgaW50ICAgICAgICBuYl9maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdDsKICAgICBTcGVjaWZp ZXJPcHQgKmNhbnZhc19zaXplczsKICAgICBpbnQgICAgICAgIG5iX2NhbnZhc19zaXplczsKICAg ICBTcGVjaWZpZXJPcHQgKnBhc3M7CkBAIC02MjUsNiArNjI3LDEyIEBAIHR5cGVkZWYgc3RydWN0 IE91dHB1dFN0cmVhbSB7CiAKICAgICBpbnQgc3FfaWR4X2VuY29kZTsKICAgICBpbnQgc3FfaWR4 X211eDsKKworICAgIC8qCisgICAgICogYm9vbCBvbiB3aGV0aGVyIHRoaXMgc3RyZWFtIHNob3Vs ZCBiZSB1dGlsaXplZCBmb3Igc3BsaXR0aW5nCisgICAgICogc3VidGl0bGVzIHV0aWxpemluZyBm aXhfc3ViX2R1cmF0aW9uIGF0IHJhbmRvbSBhY2Nlc3MgcG9pbnRzLgorICAgICAqLworICAgIHVu c2lnbmVkIGludCBmaXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdDsKIH0gT3V0cHV0U3RyZWFtOwog CiB0eXBlZGVmIHN0cnVjdCBPdXRwdXRGaWxlIHsKZGlmZiAtLWdpdCBhL2ZmdG9vbHMvZmZtcGVn X211eF9pbml0LmMgYi9mZnRvb2xzL2ZmbXBlZ19tdXhfaW5pdC5jCmluZGV4IDllZWE4NjM5ZGMu LmQyNTk0Y2MzMDkgMTAwNjQ0Ci0tLSBhL2ZmdG9vbHMvZmZtcGVnX211eF9pbml0LmMKKysrIGIv ZmZ0b29scy9mZm1wZWdfbXV4X2luaXQuYwpAQCAtNTcsNiArNTcsNyBAQCBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3Qgb3B0X25hbWVfZGlzcG9zaXRpb25bXSAgICAgICAgICAgICAgID0geyJkaXNw b3NpdGlvbiIsCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgb3B0X25hbWVfZW5jX3RpbWVfYmFz ZXNbXSAgICAgICAgICAgID0geyJlbmNfdGltZV9iYXNlIiwgTlVMTH07CiBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3Qgb3B0X25hbWVfZmlsdGVyc1tdICAgICAgICAgICAgICAgICAgID0geyJmaWx0 ZXIiLCAiYWYiLCAidmYiLCBOVUxMfTsKIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBvcHRfbmFt ZV9maWx0ZXJfc2NyaXB0c1tdICAgICAgICAgICAgPSB7ImZpbHRlcl9zY3JpcHQiLCBOVUxMfTsK K3N0YXRpYyBjb25zdCBjaGFyICpjb25zdCBvcHRfbmFtZV9maXhfc3ViX2R1cmF0aW9uX2hlYXJ0 YmVhdFtdID0geyJmaXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdCIsIE5VTEx9Owogc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IG9wdF9uYW1lX2Zwc19tb2RlW10gICAgICAgICAgICAgICAgICA9IHsi ZnBzX21vZGUiLCBOVUxMfTsKIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBvcHRfbmFtZV9mb3Jj ZV9mcHNbXSAgICAgICAgICAgICAgICAgPSB7ImZvcmNlX2ZwcyIsIE5VTEx9Owogc3RhdGljIGNv bnN0IGNoYXIgKmNvbnN0IG9wdF9uYW1lX2ZvcmNlZF9rZXlfZnJhbWVzW10gICAgICAgICA9IHsi Zm9yY2VkX2tleV9mcmFtZXMiLCBOVUxMfTsKQEAgLTM0Miw2ICszNDMsOSBAQCBzdGF0aWMgT3V0 cHV0U3RyZWFtICpuZXdfb3V0cHV0X3N0cmVhbShNdXhlciAqbXV4LCBjb25zdCBPcHRpb25zQ29u dGV4dCAqbywKICAgICBNQVRDSF9QRVJfU1RSRUFNX09QVChiaXRzX3Blcl9yYXdfc2FtcGxlLCBp LCBvc3QtPmJpdHNfcGVyX3Jhd19zYW1wbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgb2Ms IHN0KTsKIAorICAgIE1BVENIX1BFUl9TVFJFQU1fT1BUKGZpeF9zdWJfZHVyYXRpb25faGVhcnRi ZWF0LCBpLCBvc3QtPmZpeF9zdWJfZHVyYXRpb25faGVhcnRiZWF0LAorICAgICAgICAgICAgICAg ICAgICAgICAgIG9jLCBzdCk7CisKICAgICBpZiAob2MtPm9mb3JtYXQtPmZsYWdzICYgQVZGTVRf R0xPQkFMSEVBREVSICYmIG9zdC0+ZW5jX2N0eCkKICAgICAgICAgb3N0LT5lbmNfY3R4LT5mbGFn cyB8PSBBVl9DT0RFQ19GTEFHX0dMT0JBTF9IRUFERVI7CiAKZGlmZiAtLWdpdCBhL2ZmdG9vbHMv ZmZtcGVnX29wdC5jIGIvZmZ0b29scy9mZm1wZWdfb3B0LmMKaW5kZXggM2RmMDJiN2Q3Zi4uZDE4 N2RhODhhMCAxMDA2NDQKLS0tIGEvZmZ0b29scy9mZm1wZWdfb3B0LmMKKysrIGIvZmZ0b29scy9m Zm1wZWdfb3B0LmMKQEAgLTE2NDgsNiArMTY0OCwxMSBAQCBjb25zdCBPcHRpb25EZWYgb3B0aW9u c1tdID0gewogICAgIHsgImF1dG9zY2FsZSIsICAgICAgICBIQVNfQVJHIHwgT1BUX0JPT0wgfCBP UFRfU1BFQyB8CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QVF9FWFBFUlQgfCBPUFRfT1VU UFVULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC5vZmYgPSBPRkZTRVQoYXV0b3Nj YWxlKSB9LAogICAgICAgICAiYXV0b21hdGljYWxseSBpbnNlcnQgYSBzY2FsZSBmaWx0ZXIgYXQg dGhlIGVuZCBvZiB0aGUgZmlsdGVyIGdyYXBoIiB9LAorICAgIHsgImZpeF9zdWJfZHVyYXRpb25f aGVhcnRiZWF0IiwgT1BUX1ZJREVPIHwgT1BUX0JPT0wgfCBPUFRfRVhQRVJUIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QVF9TUEVDIHwgT1BUX09VVFBVVCwgICAgICAg ICAgICAgICAgICAgICAgIHsgLm9mZiA9IE9GRlNFVChmaXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVh dCkgfSwKKyAgICAgICAgInNldCB0aGlzIHZpZGVvIG91dHB1dCBzdHJlYW0gdG8gYmUgYSBoZWFy dGJlYXQgc3RyZWFtIGZvciAiCisgICAgICAgICJmaXhfc3ViX2R1cmF0aW9uLCBhY2NvcmRpbmcg dG8gd2hpY2ggc3VidGl0bGVzIHNob3VsZCBiZSBzcGxpdCBhdCAiCisgICAgICAgICJyYW5kb20g YWNjZXNzIHBvaW50cyIgfSwKIAogICAgIC8qIGF1ZGlvIG9wdGlvbnMgKi8KICAgICB7ICJhZnJh bWVzIiwgICAgICAgIE9QVF9BVURJTyB8IEhBU19BUkcgIHwgT1BUX1BFUkZJTEUgfCBPUFRfT1VU UFVULCAgICAgICAgICAgeyAuZnVuY19hcmcgPSBvcHRfYXVkaW9fZnJhbWVzIH0sCmRpZmYgLS1n aXQgYS90ZXN0cy9mYXRlL2ZmbXBlZy5tYWsgYi90ZXN0cy9mYXRlL2ZmbXBlZy5tYWsKaW5kZXgg ZDg3NjM5YzU5Ni4uMGYzM2MyYTBlZCAxMDA2NDQKLS0tIGEvdGVzdHMvZmF0ZS9mZm1wZWcubWFr CisrKyBiL3Rlc3RzL2ZhdGUvZmZtcGVnLm1hawpAQCAtMTE3LDYgKzExNywyMSBAQCBmYXRlLWZm bXBlZy1maXhfc3ViX2R1cmF0aW9uOiBDTUQgPSBmbXRzdGRvdXQgc3J0IC1maXhfc3ViX2R1cmF0 aW9uIFwKICAgLXJlYWxfdGltZSAxIC1mIGxhdmZpIFwKICAgLWkgIm1vdmllPSQoVEFSR0VUX1NB TVBMRVMpL3N1Yi9DbG9zZWRjYXB0aW9uX3JvbGx1cC5tMnZbb3V0MCtzdWJjY10iCiAKKyMgQmFz aWMgdGVzdCBmb3IgZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQsIHdoaWNoIGNhdXNlcyBhIGJ1 ZmZlcmVkIHN1YnRpdGxlCisjIHRvIGJlIHB1c2hlZCBvdXQgd2hlbiBhIHZpZGVvIGtleWZyYW1l IGlzIHJlY2VpdmVkIGZyb20gYW4gZW5jb2Rlci4KK0ZBVEVfU0FNUExFU19GRk1QRUctJChjYWxs IEZJTFRFUkRFTURFQ0VOQ01VWCwgTU9WSUUsIE1QRUdWSURFTywgXAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgTVBFRzJWSURFTywgU1VCUklQLCBTUlQsIExBVkZJX0lOREVWICBcCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBNUEVHVklERU9fUEFSU0VSIENDQVBUSU9OX0RFQ09ERVIg XAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBFRzJWSURFT19FTkNPREVSIE5VTExfTVVY RVIgUElQRV9QUk9UT0NPTCkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gZmF0ZS1m Zm1wZWctZml4X3N1Yl9kdXJhdGlvbl9oZWFydGJlYXQKK2ZhdGUtZmZtcGVnLWZpeF9zdWJfZHVy YXRpb25faGVhcnRiZWF0OiBDTUQgPSBmbXRzdGRvdXQgc3J0IC1maXhfc3ViX2R1cmF0aW9uIFwK KyAgLXJlYWxfdGltZSAxIC1mIGxhdmZpIFwKKyAgLWkgIm1vdmllPSQoVEFSR0VUX1NBTVBMRVMp L3N1Yi9DbG9zZWRjYXB0aW9uX3JvbGx1cC5tMnZbb3V0MCtzdWJjY10iIFwKKyAgLW1hcCAwOnYg IC1tYXAgMDpzIC1maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdDp2OjAgXAorICAtYzp2IG1wZWcy dmlkZW8gLWI6diAyTSAtZyAzMCAtc2NfdGhyZXNob2xkIDEwMDAwMDAwMDAgXAorICAtYzpzIHNy dCBcCisgIC1mIG51bGwgLQorCiBGQVRFX1NUUkVBTUNPUFktJChjYWxsIFJFTVVYLCBNUDQgTU9W LCBFQUMzX0RFTVVYRVIpICs9IGZhdGUtY29weS10cmFjMzA3NAogZmF0ZS1jb3B5LXRyYWMzMDc0 OiBDTUQgPSB0cmFuc2NvZGUgZWFjMyAkKFRBUkdFVF9TQU1QTEVTKS9lYWMzL2NzaV9taWFtaV9z dGVyZW9fMTI4X3NweC5lYWMzXAogICAgICAgICAgICAgICAgICAgICAgbXA0ICItY29kZWMgY29w eSAtbWFwIDAiICItY29kZWMgY29weSIKZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZi9mYXRlL2ZmbXBl Zy1maXhfc3ViX2R1cmF0aW9uX2hlYXJ0YmVhdCBiL3Rlc3RzL3JlZi9mYXRlL2ZmbXBlZy1maXhf c3ViX2R1cmF0aW9uX2hlYXJ0YmVhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi45NTdhNDEwOTIxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvcmVmL2ZhdGUvZmZtcGVn LWZpeF9zdWJfZHVyYXRpb25faGVhcnRiZWF0CkBAIC0wLDAgKzEsNDggQEAKKzEKKzAwOjAwOjAw LDk2OCAtLT4gMDA6MDA6MDEsMDAxCis8Zm9udCBmYWNlPSJNb25vc3BhY2UiPntcYW43fSg8L2Zv bnQ+CisKKzIKKzAwOjAwOjAxLDAwMSAtLT4gMDA6MDA6MDEsMTY4Cis8Zm9udCBmYWNlPSJNb25v c3BhY2UiPntcYW43fSg8L2ZvbnQ+CisKKzMKKzAwOjAwOjAxLDE2OCAtLT4gMDA6MDA6MDEsMzY4 Cis8Zm9udCBmYWNlPSJNb25vc3BhY2UiPntcYW43fSg8aT4gaW5hdWRpYmw8L2k+PC9mb250Pgor Cis0CiswMDowMDowMSwzNjggLS0+IDAwOjAwOjAxLDU2OAorPGZvbnQgZmFjZT0iTW9ub3NwYWNl Ij57XGFuN30oPGk+IGluYXVkaWJsZSByYWRpbyBjaGF0PC9pPjwvZm9udD4KKworNQorMDA6MDA6 MDEsNTY4IC0tPiAwMDowMDowMiwwMDIKKzxmb250IGZhY2U9Ik1vbm9zcGFjZSI+e1xhbjd9KDxp PiBpbmF1ZGlibGUgcmFkaW8gY2hhdHRlcjwvaT4gKTwvZm9udD4KKworNgorMDA6MDA6MDIsMDAy IC0tPiAwMDowMDowMywwMDMKKzxmb250IGZhY2U9Ik1vbm9zcGFjZSI+e1xhbjd9KDxpPiBpbmF1 ZGlibGUgcmFkaW8gY2hhdHRlcjwvaT4gKTwvZm9udD4KKworNworMDA6MDA6MDMsMDAzIC0tPiAw MDowMDowMywxMDMKKzxmb250IGZhY2U9Ik1vbm9zcGFjZSI+e1xhbjd9KDxpPiBpbmF1ZGlibGUg cmFkaW8gY2hhdHRlcjwvaT4gKTwvZm9udD4KKworOAorMDA6MDA6MDMsMTAzIC0tPiAwMDowMDow MywzMDMKKzxmb250IGZhY2U9Ik1vbm9zcGFjZSI+e1xhbjd9KDxpPiBpbmF1ZGlibGUgcmFkaW8g Y2hhdHRlcjwvaT4gKQorPj48L2ZvbnQ+CisKKzkKKzAwOjAwOjAzLDMwMyAtLT4gMDA6MDA6MDMs NTAzCis8Zm9udCBmYWNlPSJNb25vc3BhY2UiPntcYW43fSg8aT4gaW5hdWRpYmxlIHJhZGlvIGNo YXR0ZXI8L2k+ICkKKz4+IFNhZmV0eSByZW1hPC9mb250PgorCisxMAorMDA6MDA6MDMsNTA0IC0t PiAwMDowMDowMyw3MDQKKzxmb250IGZhY2U9Ik1vbm9zcGFjZSI+e1xhbjd9KDxpPiBpbmF1ZGli bGUgcmFkaW8gY2hhdHRlcjwvaT4gKQorPj4gU2FmZXR5IHJlbWFpbnMgb3VyIG51bWI8L2ZvbnQ+ CisKKzExCiswMDowMDowMyw3MDQgLS0+IDAwOjAwOjA0LDAwNAorPGZvbnQgZmFjZT0iTW9ub3Nw YWNlIj57XGFuN30oPGk+IGluYXVkaWJsZSByYWRpbyBjaGF0dGVyPC9pPiApCis+PiBTYWZldHkg cmVtYWlucyBvdXIgbnVtYmVyIG9uZTwvZm9udD4KKwotLSAKMi4zOS4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCg==