From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id D893D4D1E3 for ; Fri, 13 Feb 2026 17:18:16 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'OGB4V6mu5sbBo4TPNhHVSXuQXE+C8SJnl3FvHrR2BrI=', expected b'nnqDZlI8a6THI7v23DSGPpMoTKwlpcqPQD99SfV3tuc=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1771003061; h=content-type : mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-transfer-encoding : from; bh=OGB4V6mu5sbBo4TPNhHVSXuQXE+C8SJnl3FvHrR2BrI=; b=ixJe6KgGEIW1r+UTIUDVhpfLb6nOgp3SpPXwAM51UyEPALSN/QCscPHLLfiAW3YvRB/sD V2oTLCDTAehiPZGsNEX3RKCJJxA//VJ5Qjz5l2fxNcxw5eWfeHT5vtCGq0q1OABIMMJt4q1 k12Kg8P3IcaFxlV4IdilYBr1+ttO1U6nRPSr+i5RrqTxo497vfrLHEfQ0PHNDJvZbdggOA3 SSItEpAwKjq5cGXbPgv3Sl1nXO2123ldswd51JE07MRa3QKCAT6US64abq/uxbIGrOH6sof 41cEJI2rzRhXNeGp2++aBF55SDy/+urvd9ct8XiDwqwJJrEnAXWg0nZrBxQw== Received: from [172.20.0.3] (unknown [172.20.0.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id C4D04691107; Fri, 13 Feb 2026 19:17:41 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1771003051; b=U0JaQe+dDY9T49uUymL3HWqj5Ba0wmvUiVedy69JiUgBU3LEkLMLZ8Yhl8SziPqYxzorV vNefsw4yg2697KiJmuRagHGtvXzLlnOZFnXKVtYaodoVNHohYjV/R785os1QJ6nRju1Wi3h cK3nLWEGtcB9EbIUkcS/fNlHWVWlWQhMzBKRLWo6lcD+f5Gqrb5irtUTgXizaDFvPSeCmF+ wa3byQq3CcFSti2lotqYj/UVf2wHk6cCLQxem5M/AO/E9FqMogiNJbNyTf8NBqYYZlNE59X nqvj3AvHh6JEWB689dycTf8L2uMHxSvA+S8JNYN6cFXh+Rk6BNLDIJtCG1wA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1771003051; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=OGB4V6mu5sbBo4TPNhHVSXuQXE+C8SJnl3FvHrR2BrI=; b=HB/Nm3Vip1Xc6WTnx+QWfkv57M3Eo/WwxYS7u1BGDwdY4El/1nYfeRzdQPw5CSG0/VJZT 8vrOBj8N4d/NJlhJ7I/G2UTfupc2a45Xkl65RChycTfaF6gSQRDZGUq9H2tYMmwTacjWrKn UPm+uPSfxgMyxhsJTcgfiSIg16JRN1HdZn/abb+HFvqdCoLMJUw5Y0ag/Wn8UnaIpIZ61Iz 4Ign6sUnurRkAbEMyOPj7d+E/c3CmH6rryIXpo+DD2qCDNJKiWQEhiFAyyUj8d+tFwQL5Sa CSxTB/9+RSB7dzbbUC+Wnuf8SoLdmFI/ftMHOhl4Kg7nKkGvvyiOfNExlYbA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1771003043; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=nnqDZlI8a6THI7v23DSGPpMoTKwlpcqPQD99SfV3tuc=; b=JvmCAmMg9DrKdw7MPNO3ATZ9XDGfWVfLQp4yLHRmY7alhcDgHvb2/QYzYVh43uCD+cSZa 9PO355Bbcc/EHPfym6PoyMtX3ZRHBJvg9BIB+BsZzT5t1IDsshTYOWdrywp4vqOfev6Azd5 23UBggEN6wQjpj114e85EDrd0RNb163QqJRcIS8KEmdZtDeRMQSTPaQMmuLuMoFz4mLqdGq bKPxbb5zABiqQtRyZ1KgwKobwy4SzSzJT24O+zJUtLi0b7zXAdkkby+KyDLCRAjWuRnAf8W jYsVAhkb2Yde90A9UK2AXQv4vJutB/EF5bC2KzodmnBsq9FK9jTV3dbtGjFA== Received: from c8d966988b92 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id C60746910A5 for ; Fri, 13 Feb 2026 19:17:23 +0200 (EET) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Fri, 13 Feb 2026 17:17:23 -0000 Message-ID: <177100304402.25.3463696960615278331@009cbcb3d8cd> Message-ID-Hash: RXQXMOVQIIKOLPJSVEKL6XLZBBNHRBHO X-Message-ID-Hash: RXQXMOVQIIKOLPJSVEKL6XLZBBNHRBHO X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PR] avfilter/dnn: implement asynchronous execution for LibTorch backend (PR #21747) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Raja-89 via ffmpeg-devel Cc: Raja-89 Content-Transfer-Encoding: base64 Archived-At: List-Archive: List-Post: UFIgIzIxNzQ3IG9wZW5lZCBieSBSYWphLTg5ClVSTDogaHR0cHM6Ly9jb2RlLmZmbXBlZy5vcmcv RkZtcGVnL0ZGbXBlZy9wdWxscy8yMTc0NwpQYXRjaCBVUkw6IGh0dHBzOi8vY29kZS5mZm1wZWcu b3JnL0ZGbXBlZy9GRm1wZWcvcHVsbHMvMjE3NDcucGF0Y2gKCiMjIyBPdmVydmlldw0KDQpUaGlz IHBhdGNoIGltcGxlbWVudHMgdGhlIGFzeW5jaHJvbm91cyBleGVjdXRpb24gcGF0aCBmb3IgdGhl IExpYlRvcmNoIGJhY2tlbmQgdXNpbmcgRkZtcGVnJ3MgY29tbW9uIEROTiBmcmFtZXdvcmsgKERO TkFzeW5jRXhlY01vZHVsZSkuIFRoaXMgYWxsb3dzIHRoZSBkbm5fcHJvY2Vzc2luZyBmaWx0ZXIg dG8gcnVuIGluZmVyZW5jZSB3aXRob3V0IGJsb2NraW5nIHRoZSBtYWluIGZpbHRlcmdyYXBoIGV4 ZWN1dGlvbi4NCktleSBDaGFuZ2VzDQoNCi0gICAgIEFzeW5jaHJvbm91cyBJbnRlZ3JhdGlvbjog UHJvcGVybHkgdXRpbGl6ZXMgZmZfZG5uX3N0YXJ0X2luZmVyZW5jZV9hc3luYyB0byBvZmZsb2Fk IGluZmVyZW5jZSB0byB0aGUgY29tbW9uIEROTiB0aHJlYWQgcG9vbC4NCi0gICAgIFBlcnNpc3Rl bnQgQnVmZmVyIE1hbmFnZW1lbnQ6IEltcGxlbWVudGVkIHBlcnNpc3RlbnQgaW5wdXQvb3V0cHV0 IGJ1ZmZlcnMgaW4gVEhJbmZlclJlcXVlc3QuIFRoaXMgZWxpbWluYXRlcyBwZXItZnJhbWUgbWVt b3J5IGFsbG9jYXRpb24vZGVhbGxvY2F0aW9uIG92ZXJoZWFkLCBzaWduaWZpY2FudGx5IGltcHJv dmluZyBwZXJmb3JtYW5jZS4NCi0gICAgIERldmljZSBNYW5hZ2VtZW50OiBBZGRlZCBleHBsaWNp dCBjaGVja3MgYW5kIHN5bmNocm9uaXphdGlvbiB0byBlbnN1cmUgdGVuc29ycyBhcmUgbW92ZWQg dG8gdGhlIGNvcnJlY3QgZGV2aWNlIChDUFUvWFBVKSBiZWZvcmUgYW5kIGFmdGVyIGluZmVyZW5j ZS4NCi0gICAgIFJlZmluZWQgRXJyb3IgSGFuZGxpbmc6IFN0YW5kYXJkaXplZCByZXR1cm4gY29k ZXMgdXNpbmcgQVZFUlJPUiBhbmQgc2ltcGxpZmllZCBsb2dpYyBmbG93IGJ5IHJlbW92aW5nIHJl ZHVuZGFudCBnb3RvIHN0YXRlbWVudHMuDQoNCiMjIyBTdHlsZSAmIENsZWFubGluZXNzDQoNCi0g ICAgIFN0cmljdCBGb3JtYXR0aW5nOiBBZGhlcmVzIHRvIEZGbXBlZ+KAmXMgNC1zcGFjZSBpbmRl bnRhdGlvbiBzdGFuZGFyZCBhbmQgYXZvaWRzIHJlZHVuZGFudCBicmFjZXMuDQotICAgICBNaW5p bWFsIERpZmYgTm9pc2U6IFJlLXN1Ym1pdHRlZCBmcm9tIGEgY2xlYW4gYnJhbmNoIHRvIGVuc3Vy ZSBvbmx5IGVzc2VudGlhbCBjaGFuZ2VzIGFyZSBpbmNsdWRlZCwgYWRkcmVzc2luZyBwcmV2aW91 cyByZXZpZXdlciBjb25jZXJucyByZWdhcmRpbmcgZm9ybWF0dGluZyBub2lzZS4NCi0gICAgIFRv b2wgVmVyaWZpY2F0aW9uOiBTdWNjZXNzZnVsbHkgcGFzc2VkIHRvb2xzL3BhdGNoZWNrLg0KDQoj IyMgVGVzdGluZyBDb25kdWN0ZWQNCg0KLSAgICAgVmVyaWZpZWQgd2l0aCB0ZXN0c3JjIHVzaW5n IGJvdGggYXN5bmM9MSAoYXN5bmNocm9ub3VzKSBhbmQgYXN5bmM9MCAoc3luY2hyb25vdXMpIG1v ZGVzLg0KLSAgICAgQnVpbGQgY29uZmlybWVkIG9uIFVidW50dSB3aXRoIGdjYyAxNSBhbmQgTGli VG9yY2ggdjIueC4NCi0gICAgIFZlcmlmaWVkIGJhY2tlbmQgcmVnaXN0cmF0aW9uIHZpYSAuL2Zm bXBlZyAtaCBmaWx0ZXI9ZG5uX3Byb2Nlc3NpbmcuCgoKRnJvbSAxOGFhODg3Y2RjMzhiODg4Yjdi MWU5YzVhODg4N2U1MzRlOWM4ZGUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWph IFJhdGhvdXIgPGltcmFqYTcyOUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgMTMgRmViIDIwMjYgMjI6 NDM6NDAgKzA1MzAKU3ViamVjdDogW1BBVENIXSBhdmZpbHRlci9kbm46IGltcGxlbWVudCBhc3lu YyBleGVjdXRpb24gZm9yIGxpYnRvcmNoIGJhY2tlbmQKCi0tLQogQ2hhbmdlbG9nICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBsaWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRf Y29tbW9uLmggIHwgICAxICsKIGxpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF90b3JjaC5jcHAg fCAzMzQgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KIGxpYmF2ZmlsdGVyL3ZmX2Rubl9wcm9j ZXNzaW5nLmMgICAgICAgfCAgIDMgKwogNCBmaWxlcyBjaGFuZ2VkLCAxMzIgaW5zZXJ0aW9ucygr KSwgMjA4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0NoYW5nZWxvZyBiL0NoYW5nZWxvZwpp bmRleCBhOWQ2OGIzNjllLi5mMjRjN2Q0YjllIDEwMDY0NAotLS0gYS9DaGFuZ2Vsb2cKKysrIGIv Q2hhbmdlbG9nCkBAIC0yMjU2LDMgKzIyNTYsNSBAQCB2ZXJzaW9uIDAuMy4xOiBhZGRlZCBhdmkv ZGl2eCBzdXBwb3J0CiAKIAogdmVyc2lvbiAwLjM6IGluaXRpYWwgcHVibGljIHJlbGVhc2UKKwor LSAqIGxpYmF2ZmlsdGVyL2RubjogYXN5bmNocm9ub3VzIGV4ZWN1dGlvbiBzdXBwb3J0IGZvciBM aWJUb3JjaCBiYWNrZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv bGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5kX2NvbW1vbi5oIGIvbGliYXZmaWx0ZXIvZG5uL2Ru bl9iYWNrZW5kX2NvbW1vbi5oCmluZGV4IDlmNWQzN2IzZTAuLjgwM2E2NmE1ZjYgMTAwNjQ0Ci0t LSBhL2xpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF9jb21tb24uaAorKysgYi9saWJhdmZpbHRl ci9kbm4vZG5uX2JhY2tlbmRfY29tbW9uLmgKQEAgLTE1Niw1ICsxNTYsNiBAQCBETk5Bc3luY1N0 YXR1c1R5cGUgZmZfZG5uX2dldF9yZXN1bHRfY29tbW9uKFF1ZXVlICp0YXNrX3F1ZXVlLCBBVkZy YW1lICoqaW4sIEFWRgogICogQHJldHVybnMgMCBpZiBzdWNjZXNzZnVsIG9yIGVycm9yIGNvZGUg b3RoZXJ3aXNlLgogICovCiBpbnQgZmZfZG5uX2ZpbGxfZ2V0dGluZ291dHB1dF90YXNrKFRhc2tJ dGVtICp0YXNrLCBETk5FeGVjQmFzZVBhcmFtcyAqZXhlY19wYXJhbXMsIHZvaWQgKmJhY2tlbmRf bW9kZWwsIGludCBpbnB1dF9oZWlnaHQsIGludCBpbnB1dF93aWR0aCwgdm9pZCAqY3R4KTsKK2lu dCBmZl9kbm5fYXN5bmNfbW9kdWxlX3N1Ym1pdChETk5Bc3luY0V4ZWNNb2R1bGUgKmFzeW5jX21v ZHVsZSk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZmaWx0ZXIvZG5uL2Rubl9iYWNrZW5k X3RvcmNoLmNwcCBiL2xpYmF2ZmlsdGVyL2Rubi9kbm5fYmFja2VuZF90b3JjaC5jcHAKaW5kZXgg ZDNjNDk2NmMwOS4uNmMwMDUzNTNiMCAxMDA2NDQKLS0tIGEvbGliYXZmaWx0ZXIvZG5uL2Rubl9i YWNrZW5kX3RvcmNoLmNwcAorKysgYi9saWJhdmZpbHRlci9kbm4vZG5uX2JhY2tlbmRfdG9yY2gu Y3BwCkBAIC0yNSwyMCArMjUsMjQgQEAKIAogI2luY2x1ZGUgPHRvcmNoL3RvcmNoLmg+CiAjaW5j bHVkZSA8dG9yY2gvc2NyaXB0Lmg+Ci0jaW5jbHVkZSA8dGhyZWFkPgotI2luY2x1ZGUgPG11dGV4 PgotI2luY2x1ZGUgPGNvbmRpdGlvbl92YXJpYWJsZT4KLSNpbmNsdWRlIDxhdG9taWM+CiAKIGV4 dGVybiAiQyIgewotI2luY2x1ZGUgImRubl9pb19wcm9jLmgiCi0jaW5jbHVkZSAiZG5uX2JhY2tl bmRfY29tbW9uLmgiCiAjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgogI2luY2x1ZGUgImxpYmF2 dXRpbC9tZW0uaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICIu Li9kbm5faW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiZG5uX2JhY2tlbmRfY29tbW9uLmgiCisjaW5j bHVkZSAiZG5uX2lvX3Byb2MuaCIKICNpbmNsdWRlICJxdWV1ZS5oIgogI2luY2x1ZGUgInNhZmVf cXVldWUuaCIKIH0KIAorc3RhdGljIGludCBnZXRfaW5wdXRfdGgoRE5OTW9kZWwgKm1vZGVsLCBE Tk5EYXRhICppbnB1dCwgY29uc3QgY2hhciAqaW5wdXRfbmFtZSk7CitzdGF0aWMgaW50IGdldF9v dXRwdXRfdGgoRE5OTW9kZWwgKm1vZGVsLCBjb25zdCBjaGFyICppbnB1dF9uYW1lLCBpbnQgaW5w dXRfd2lkdGgsIGludCBpbnB1dF9oZWlnaHQsIGNvbnN0IGNoYXIgKm91dHB1dF9uYW1lLCBpbnQg Km91dHB1dF93aWR0aCwgaW50ICpvdXRwdXRfaGVpZ2h0KTsKK3N0YXRpYyB2b2lkIGRubl9mcmVl X21vZGVsX3RoKEROTk1vZGVsICoqbW9kZWwpOworc3RhdGljIGludCB0aF9zdGFydF9pbmZlcmVu Y2Uodm9pZCAqYXJncyk7CitzdGF0aWMgdm9pZCBpbmZlcl9jb21wbGV0aW9uX2NhbGxiYWNrKHZv aWQgKmFyZ3MpOworCiB0eXBlZGVmIHN0cnVjdCBUSE1vZGVsIHsKICAgICBETk5Nb2RlbCBtb2Rl bDsKICAgICBEbm5Db250ZXh0ICpjdHg7CkBAIC00NiwxNiArNTAsMTMgQEAgdHlwZWRlZiBzdHJ1 Y3QgVEhNb2RlbCB7CiAgICAgU2FmZVF1ZXVlICpyZXF1ZXN0X3F1ZXVlOwogICAgIFF1ZXVlICp0 YXNrX3F1ZXVlOwogICAgIFF1ZXVlICpsbHRhc2tfcXVldWU7Ci0gICAgU2FmZVF1ZXVlICpwZW5k aW5nX3F1ZXVlOyAgICAgICAvLy88IHJlcXVlc3RzIHdhaXRpbmcgZm9yIGluZmVyZW5jZQotICAg IHN0ZDo6dGhyZWFkICp3b3JrZXJfdGhyZWFkOyAgICAgLy8vPCBiYWNrZ3JvdW5kIHdvcmtlciB0 aHJlYWQKLSAgICBzdGQ6Om11dGV4ICptdXRleDsgICAgICAgICAgICAgIC8vLzwgbXV0ZXggZm9y IHRoZSBjb25kaXRpb24gdmFyaWFibGUKLSAgICBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSAqY29u ZDsgIC8vLzwgY29uZGl0aW9uIHZhcmlhYmxlIGZvciB3b3JrZXIgd2FrZXVwCi0gICAgc3RkOjph dG9taWM8Ym9vbD4gd29ya2VyX3N0b3A7ICAvLy88IHNpZ25hbCBmb3IgdGhyZWFkIGV4aXQKIH0g VEhNb2RlbDsKIAogdHlwZWRlZiBzdHJ1Y3QgVEhJbmZlclJlcXVlc3QgewogICAgIHRvcmNoOjpU ZW5zb3IgKm91dHB1dDsKICAgICB0b3JjaDo6VGVuc29yICppbnB1dF90ZW5zb3I7CisgICAgdWlu dDhfdCAqaW5wdXRfZGF0YTsKKyAgICBzaXplX3QgaW5wdXRfZGF0YV9zaXplOwogfSBUSEluZmVy UmVxdWVzdDsKIAogdHlwZWRlZiBzdHJ1Y3QgVEhSZXF1ZXN0SXRlbSB7CkBAIC0xMDQsNyArMTA1 LDEwIEBAIHN0YXRpYyB2b2lkIHRoX2ZyZWVfcmVxdWVzdChUSEluZmVyUmVxdWVzdCAqcmVxdWVz dCkKICAgICAgICAgZGVsZXRlKHJlcXVlc3QtPmlucHV0X3RlbnNvcik7CiAgICAgICAgIHJlcXVl c3QtPmlucHV0X3RlbnNvciA9IE5VTEw7CiAgICAgfQotICAgIHJldHVybjsKKyAgICBpZiAocmVx dWVzdC0+aW5wdXRfZGF0YSkgeworICAgICAgICBhdl9mcmVlcCgmcmVxdWVzdC0+aW5wdXRfZGF0 YSk7CisgICAgfQorICAgIHJlcXVlc3QtPmlucHV0X2RhdGFfc2l6ZSA9IDA7CiB9CiAKIHN0YXRp YyBpbmxpbmUgdm9pZCBkZXN0cm95X3JlcXVlc3RfaXRlbShUSFJlcXVlc3RJdGVtICoqYXJnKQpA QCAtMTI5LDM4ICsxMzMsNiBAQCBzdGF0aWMgdm9pZCBkbm5fZnJlZV9tb2RlbF90aChETk5Nb2Rl bCAqKm1vZGVsKQogCiAgICAgdGhfbW9kZWwgPSAoVEhNb2RlbCAqKSgqbW9kZWwpOwogCi0gICAg LyogMS4gU3RvcCBhbmQgam9pbiB0aGUgd29ya2VyIHRocmVhZCBpZiBpdCBleGlzdHMgKi8KLSAg ICBpZiAodGhfbW9kZWwtPndvcmtlcl90aHJlYWQpIHsKLSAgICAgICAgewotICAgICAgICAgICAg c3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IGxvY2soKnRoX21vZGVsLT5tdXRleCk7Ci0gICAg ICAgICAgICB0aF9tb2RlbC0+d29ya2VyX3N0b3AgPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAg IHRoX21vZGVsLT5jb25kLT5ub3RpZnlfYWxsKCk7Ci0gICAgICAgIHRoX21vZGVsLT53b3JrZXJf dGhyZWFkLT5qb2luKCk7Ci0gICAgICAgIGRlbGV0ZSB0aF9tb2RlbC0+d29ya2VyX3RocmVhZDsK LSAgICAgICAgdGhfbW9kZWwtPndvcmtlcl90aHJlYWQgPSBOVUxMOwotICAgIH0KLQotICAgIC8q IDIuIFNhZmVseSBkZWxldGUgQysrIHN5bmNocm9uaXphdGlvbiBvYmplY3RzICovCi0gICAgaWYg KHRoX21vZGVsLT5tdXRleCkgewotICAgICAgICBkZWxldGUgdGhfbW9kZWwtPm11dGV4OwotICAg ICAgICB0aF9tb2RlbC0+bXV0ZXggPSBOVUxMOwotICAgIH0KLSAgICBpZiAodGhfbW9kZWwtPmNv bmQpIHsKLSAgICAgICAgZGVsZXRlIHRoX21vZGVsLT5jb25kOwotICAgICAgICB0aF9tb2RlbC0+ Y29uZCA9IE5VTEw7Ci0gICAgfQotCi0gICAgLyogMy4gQ2xlYW4gdXAgdGhlIHBlbmRpbmcgcXVl dWUgKi8KLSAgICBpZiAodGhfbW9kZWwtPnBlbmRpbmdfcXVldWUpIHsKLSAgICAgICAgd2hpbGUg KGZmX3NhZmVfcXVldWVfc2l6ZSh0aF9tb2RlbC0+cGVuZGluZ19xdWV1ZSkgPiAwKSB7Ci0gICAg ICAgICAgICBUSFJlcXVlc3RJdGVtICppdGVtID0gKFRIUmVxdWVzdEl0ZW0gKilmZl9zYWZlX3F1 ZXVlX3BvcF9mcm9udCh0aF9tb2RlbC0+cGVuZGluZ19xdWV1ZSk7Ci0gICAgICAgICAgICBkZXN0 cm95X3JlcXVlc3RfaXRlbSgmaXRlbSk7Ci0gICAgICAgIH0KLSAgICAgICAgZmZfc2FmZV9xdWV1 ZV9kZXN0cm95KHRoX21vZGVsLT5wZW5kaW5nX3F1ZXVlKTsKLSAgICB9Ci0KLSAgICAvKiA0LiBD bGVhbiB1cCBzdGFuZGFyZCBiYWNrZW5kIHF1ZXVlcyAqLwogICAgIGlmICh0aF9tb2RlbC0+cmVx dWVzdF9xdWV1ZSkgewogICAgICAgICB3aGlsZSAoZmZfc2FmZV9xdWV1ZV9zaXplKHRoX21vZGVs LT5yZXF1ZXN0X3F1ZXVlKSAhPSAwKSB7CiAgICAgICAgICAgICBUSFJlcXVlc3RJdGVtICppdGVt ID0gKFRIUmVxdWVzdEl0ZW0gKilmZl9zYWZlX3F1ZXVlX3BvcF9mcm9udCh0aF9tb2RlbC0+cmVx dWVzdF9xdWV1ZSk7CkBAIC0xODcsNyArMTU5LDYgQEAgc3RhdGljIHZvaWQgZG5uX2ZyZWVfbW9k ZWxfdGgoRE5OTW9kZWwgKiptb2RlbCkKICAgICAgICAgZmZfcXVldWVfZGVzdHJveSh0aF9tb2Rl bC0+dGFza19xdWV1ZSk7CiAgICAgfQogCi0gICAgLyogNS4gRmluYWwgbW9kZWwgY2xlYW51cCAq LwogICAgIGlmICh0aF9tb2RlbC0+aml0X21vZGVsKQogICAgICAgICBkZWxldGUgdGhfbW9kZWwt PmppdF9tb2RlbDsKIApAQCAtMjA3LDQ0ICsxNzgsNjAgQEAgc3RhdGljIGludCBnZXRfaW5wdXRf dGgoRE5OTW9kZWwgKm1vZGVsLCBETk5EYXRhICppbnB1dCwgY29uc3QgY2hhciAqaW5wdXRfbmFt ZSkKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZGVsZXRlcih2b2lkICphcmcpCi17 Ci0gICAgYXZfZnJlZXAoJmFyZyk7Ci19Ci0KIHN0YXRpYyBpbnQgZmlsbF9tb2RlbF9pbnB1dF90 aChUSE1vZGVsICp0aF9tb2RlbCwgVEhSZXF1ZXN0SXRlbSAqcmVxdWVzdCkKIHsKLSAgICBMYXN0 TGV2ZWxUYXNrSXRlbSAqbGx0YXNrID0gTlVMTDsKLSAgICBUYXNrSXRlbSAqdGFzayA9IE5VTEw7 CiAgICAgVEhJbmZlclJlcXVlc3QgKmluZmVyX3JlcXVlc3QgPSBOVUxMOworICAgIFRhc2tJdGVt ICp0YXNrID0gTlVMTDsKKyAgICBMYXN0TGV2ZWxUYXNrSXRlbSAqbGx0YXNrID0gTlVMTDsKICAg ICBETk5EYXRhIGlucHV0ID0geyAwIH07CiAgICAgRG5uQ29udGV4dCAqY3R4ID0gdGhfbW9kZWwt PmN0eDsKICAgICBpbnQgcmV0LCB3aWR0aF9pZHgsIGhlaWdodF9pZHgsIGNoYW5uZWxfaWR4Owor ICAgIHNpemVfdCBjdXJfc2l6ZTsKIAogICAgIGxsdGFzayA9IChMYXN0TGV2ZWxUYXNrSXRlbSAq KWZmX3F1ZXVlX3BvcF9mcm9udCh0aF9tb2RlbC0+bGx0YXNrX3F1ZXVlKTsKLSAgICBpZiAoIWxs dGFzaykgewotICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Ci0gICAgICAgIGdvdG8gZXJy OwotICAgIH0KKyAgICBpZiAoIWxsdGFzaykKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsKKwogICAgIHJlcXVlc3QtPmxsdGFzayA9IGxsdGFzazsKICAgICB0YXNrID0gbGx0YXNrLT50 YXNrOwogICAgIGluZmVyX3JlcXVlc3QgPSByZXF1ZXN0LT5pbmZlcl9yZXF1ZXN0OwogCiAgICAg cmV0ID0gZ2V0X2lucHV0X3RoKCZ0aF9tb2RlbC0+bW9kZWwsICZpbnB1dCwgTlVMTCk7Ci0gICAg aWYgKCByZXQgIT0gMCkgeworICAgIGlmIChyZXQgIT0gMCkKICAgICAgICAgZ290byBlcnI7Ci0g ICAgfQorCiAgICAgd2lkdGhfaWR4ID0gZG5uX2dldF93aWR0aF9pZHhfYnlfbGF5b3V0KGlucHV0 LmxheW91dCk7CiAgICAgaGVpZ2h0X2lkeCA9IGRubl9nZXRfaGVpZ2h0X2lkeF9ieV9sYXlvdXQo aW5wdXQubGF5b3V0KTsKICAgICBjaGFubmVsX2lkeCA9IGRubl9nZXRfY2hhbm5lbF9pZHhfYnlf bGF5b3V0KGlucHV0LmxheW91dCk7CisKICAgICBpbnB1dC5kaW1zW2hlaWdodF9pZHhdID0gdGFz ay0+aW5fZnJhbWUtPmhlaWdodDsKICAgICBpbnB1dC5kaW1zW3dpZHRoX2lkeF0gPSB0YXNrLT5p bl9mcmFtZS0+d2lkdGg7Ci0gICAgaW5wdXQuZGF0YSA9IGF2X21hbGxvYyhpbnB1dC5kaW1zW2hl aWdodF9pZHhdICogaW5wdXQuZGltc1t3aWR0aF9pZHhdICoKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlucHV0LmRpbXNbY2hhbm5lbF9pZHhdICogc2l6ZW9mKGZsb2F0KSk7Ci0gICAgaWYg KCFpbnB1dC5kYXRhKQotICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwotICAgIGluZmVy X3JlcXVlc3QtPmlucHV0X3RlbnNvciA9IG5ldyB0b3JjaDo6VGVuc29yKCk7Ci0gICAgaW5mZXJf cmVxdWVzdC0+b3V0cHV0ID0gbmV3IHRvcmNoOjpUZW5zb3IoKTsKKworICAgIC8vIENhbGN1bGF0 ZSByZXF1aXJlZCBzaXplIGZvciB0aGUgY3VycmVudCBmcmFtZQorICAgIGN1cl9zaXplID0gKHNp emVfdClpbnB1dC5kaW1zW2hlaWdodF9pZHhdICogaW5wdXQuZGltc1t3aWR0aF9pZHhdICoKKyAg ICAgICAgICAgICAgIGlucHV0LmRpbXNbY2hhbm5lbF9pZHhdICogc2l6ZW9mKGZsb2F0KTsKKwor ICAgIC8qKgorICAgICAqIFJldXNlIHRoZSBwZXJzaXN0ZW50IGJ1ZmZlci4gCisgICAgICogT25s eSByZWFsbG9jYXRlIGlmIHRoZSBleGlzdGluZyBidWZmZXIgaXMgdG9vIHNtYWxsIG9yIGRvZXNu J3QgZXhpc3QuCisgICAgICovCisgICAgaWYgKCFpbmZlcl9yZXF1ZXN0LT5pbnB1dF9kYXRhIHx8 IGluZmVyX3JlcXVlc3QtPmlucHV0X2RhdGFfc2l6ZSA8IGN1cl9zaXplKSB7CisgICAgICAgIGF2 X2ZyZWVwKCZpbmZlcl9yZXF1ZXN0LT5pbnB1dF9kYXRhKTsKKyAgICAgICAgaW5mZXJfcmVxdWVz dC0+aW5wdXRfZGF0YSA9ICh1aW50OF90ICopYXZfbWFsbG9jKGN1cl9zaXplKTsKKyAgICAgICAg aWYgKCFpbmZlcl9yZXF1ZXN0LT5pbnB1dF9kYXRhKSB7CisgICAgICAgICAgICByZXQgPSBBVkVS Uk9SKEVOT01FTSk7CisgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgfQorICAgICAgICBp bmZlcl9yZXF1ZXN0LT5pbnB1dF9kYXRhX3NpemUgPSBjdXJfc2l6ZTsKKyAgICB9CisKKyAgICBp bnB1dC5kYXRhID0gaW5mZXJfcmVxdWVzdC0+aW5wdXRfZGF0YTsKKworICAgIC8vIEluaXRpYWxp emUgdGVuc29ycyBpZiB0aGV5IGRvbid0IGV4aXN0CisgICAgaWYgKCFpbmZlcl9yZXF1ZXN0LT5p bnB1dF90ZW5zb3IpCisgICAgICAgIGluZmVyX3JlcXVlc3QtPmlucHV0X3RlbnNvciA9IG5ldyB0 b3JjaDo6VGVuc29yKCk7CisgICAgaWYgKCFpbmZlcl9yZXF1ZXN0LT5vdXRwdXQpCisgICAgICAg IGluZmVyX3JlcXVlc3QtPm91dHB1dCA9IG5ldyB0b3JjaDo6VGVuc29yKCk7CiAKICAgICBzd2l0 Y2ggKHRoX21vZGVsLT5tb2RlbC5mdW5jX3R5cGUpIHsKICAgICBjYXNlIERGVF9QUk9DRVNTX0ZS QU1FOgpAQCAtMjU4LDEyICsyNDUsMjAgQEAgc3RhdGljIGludCBmaWxsX21vZGVsX2lucHV0X3Ro KFRITW9kZWwgKnRoX21vZGVsLCBUSFJlcXVlc3RJdGVtICpyZXF1ZXN0KQogICAgICAgICB9CiAg ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICAgIGF2cHJpdl9yZXBvcnRfbWlzc2lu Z19mZWF0dXJlKE5VTEwsICJtb2RlbCBmdW5jdGlvbiB0eXBlICVkIiwgdGhfbW9kZWwtPm1vZGVs LmZ1bmNfdHlwZSk7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBhdnByaXZfcmVwb3J0X21pc3Np bmdfZmVhdHVyZShjdHgsICJtb2RlbCBmdW5jdGlvbiB0eXBlICVkIiwgdGhfbW9kZWwtPm1vZGVs LmZ1bmNfdHlwZSk7CisgICAgICAgIHJldCA9IEFWRVJST1IoRU5PU1lTKTsKKyAgICAgICAgZ290 byBlcnI7CiAgICAgfQorCisgICAgLyoqCisgICAgICogTWFwIHRoZSBidWZmZXIgdG8gYSBUb3Jj aCB0ZW5zb3IuIAorICAgICAqIE5vdGU6IFdlIGRvIE5PVCBwYXNzICdkZWxldGVyJyBoZXJlIGJl Y2F1c2UgJ2lucHV0X2RhdGEnIGlzIG93bmVkIAorICAgICAqIGJ5IFRISW5mZXJSZXF1ZXN0IGFu ZCB3aWxsIGJlIGZyZWVkIGluIGRubl9mcmVlX21vZGVsX3RoLgorICAgICAqLwogICAgICppbmZl cl9yZXF1ZXN0LT5pbnB1dF90ZW5zb3IgPSB0b3JjaDo6ZnJvbV9ibG9iKGlucHV0LmRhdGEsCiAg ICAgICAgIHsxLCBpbnB1dC5kaW1zW2NoYW5uZWxfaWR4XSwgaW5wdXQuZGltc1toZWlnaHRfaWR4 XSwgaW5wdXQuZGltc1t3aWR0aF9pZHhdfSwKLSAgICAgICAgZGVsZXRlciwgdG9yY2g6OmtGbG9h dDMyKTsKKyAgICAgICAgdG9yY2g6OmtGbG9hdDMyKTsKKwogICAgIHJldHVybiAwOwogCiBlcnI6 CkBAIC0zMTIsODMgKzMwNyw1NyBAQCBzdGF0aWMgaW50IHRoX3N0YXJ0X2luZmVyZW5jZSh2b2lk ICphcmdzKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBpbmZlcl9jb21wbGV0aW9u X2NhbGxiYWNrKHZvaWQgKmFyZ3MpIHsKLSAgICBUSFJlcXVlc3RJdGVtICpyZXF1ZXN0ID0gKFRI UmVxdWVzdEl0ZW0qKWFyZ3M7CitzdGF0aWMgdm9pZCBpbmZlcl9jb21wbGV0aW9uX2NhbGxiYWNr KHZvaWQgKmFyZ3MpCit7CisgICAgVEhSZXF1ZXN0SXRlbSAqcmVxdWVzdCA9IChUSFJlcXVlc3RJ dGVtICopYXJnczsKICAgICBMYXN0TGV2ZWxUYXNrSXRlbSAqbGx0YXNrID0gcmVxdWVzdC0+bGx0 YXNrOwogICAgIFRhc2tJdGVtICp0YXNrID0gbGx0YXNrLT50YXNrOwotICAgIEROTkRhdGEgb3V0 cHV0cyA9IHsgMCB9OwotICAgIFRISW5mZXJSZXF1ZXN0ICppbmZlcl9yZXF1ZXN0ID0gcmVxdWVz dC0+aW5mZXJfcmVxdWVzdDsKICAgICBUSE1vZGVsICp0aF9tb2RlbCA9IChUSE1vZGVsICopdGFz ay0+bW9kZWw7CisgICAgVEhJbmZlclJlcXVlc3QgKmluZmVyX3JlcXVlc3QgPSByZXF1ZXN0LT5p bmZlcl9yZXF1ZXN0OwogICAgIHRvcmNoOjpUZW5zb3IgKm91dHB1dCA9IGluZmVyX3JlcXVlc3Qt Pm91dHB1dDsKKyAgICBETk5EYXRhIG91dHB1dHMgPSB7IDAgfTsKKyAgICBjMTA6OkludEFycmF5 UmVmIHNpemVzOwogCi0gICAgYzEwOjpJbnRBcnJheVJlZiBzaXplcyA9IG91dHB1dC0+c2l6ZXMo KTsKLSAgICBvdXRwdXRzLm9yZGVyID0gRENPX1JHQjsKLSAgICBvdXRwdXRzLmxheW91dCA9IERM X05DSFc7Ci0gICAgb3V0cHV0cy5kdCA9IEROTl9GTE9BVDsKLSAgICBpZiAoc2l6ZXMuc2l6ZSgp ID09IDQpIHsKLSAgICAgICAgLy8gNCBkaW1lbnNpb25zOiBbYmF0Y2hfc2l6ZSwgY2hhbm5lbCwg aGVpZ2h0LCB3aWR0aF0KLSAgICAgICAgLy8gdGhpcyBmb3JtYXQgb2YgZGF0YSBpcyBub3JtYWxs eSB1c2VkIGZvciB2aWRlbyBmcmFtZSBTUgotICAgICAgICBvdXRwdXRzLmRpbXNbMF0gPSBzaXpl cy5hdCgwKTsgLy8gTgotICAgICAgICBvdXRwdXRzLmRpbXNbMV0gPSBzaXplcy5hdCgxKTsgLy8g QwotICAgICAgICBvdXRwdXRzLmRpbXNbMl0gPSBzaXplcy5hdCgyKTsgLy8gSAotICAgICAgICBv dXRwdXRzLmRpbXNbM10gPSBzaXplcy5hdCgzKTsgLy8gVwotICAgIH0gZWxzZSB7Ci0gICAgICAg IGF2cHJpdl9yZXBvcnRfbWlzc2luZ19mZWF0dXJlKHRoX21vZGVsLT5jdHgsICJTdXBwb3J0IG9m IHRoaXMga2luZCBvZiBtb2RlbCIpOworICAgIGlmICghb3V0cHV0IHx8IG91dHB1dC0+bmRpbWVu c2lvbigpICE9IDQpIHsKKyAgICAgICAgYXZwcml2X3JlcG9ydF9taXNzaW5nX2ZlYXR1cmUodGhf bW9kZWwtPmN0eCwgInRvcmNoIG1vZGVsIG91dHB1dCBkaW1lbnNpb25zICE9IDQiKTsKICAgICAg ICAgZ290byBlcnI7CiAgICAgfQogCi0gICAgc3dpdGNoICh0aF9tb2RlbC0+bW9kZWwuZnVuY190 eXBlKSB7Ci0gICAgY2FzZSBERlRfUFJPQ0VTU19GUkFNRToKKyAgICBzaXplcyA9IG91dHB1dC0+ c2l6ZXMoKTsKKyAgICBvdXRwdXRzLm9yZGVyICA9IERDT19SR0I7CisgICAgb3V0cHV0cy5sYXlv dXQgPSBETF9OQ0hXOworICAgIG91dHB1dHMuZHQgICAgID0gRE5OX0ZMT0FUOworICAgIG91dHB1 dHMuZGltc1swXSA9IHNpemVzLmF0KDApOworICAgIG91dHB1dHMuZGltc1sxXSA9IHNpemVzLmF0 KDEpOworICAgIG91dHB1dHMuZGltc1syXSA9IHNpemVzLmF0KDIpOworICAgIG91dHB1dHMuZGlt c1szXSA9IHNpemVzLmF0KDMpOworCisgICAgaWYgKHRoX21vZGVsLT5tb2RlbC5mdW5jX3R5cGUg PT0gREZUX1BST0NFU1NfRlJBTUUpIHsKICAgICAgICAgaWYgKHRhc2stPmRvX2lvcHJvYykgewot ICAgICAgICAgICAgLy8gUG9zdCBwcm9jZXNzIGNhbiBvbmx5IGRlYWwgd2l0aCBDUFUgbWVtb3J5 LgogICAgICAgICAgICAgaWYgKG91dHB1dC0+ZGV2aWNlKCkgIT0gdG9yY2g6OmtDUFUpCiAgICAg ICAgICAgICAgICAgKm91dHB1dCA9IG91dHB1dC0+dG8odG9yY2g6OmtDUFUpOwogICAgICAgICAg ICAgb3V0cHV0cy5zY2FsZSA9IDI1NTsKICAgICAgICAgICAgIG91dHB1dHMuZGF0YSA9IG91dHB1 dC0+ZGF0YV9wdHIoKTsKLSAgICAgICAgICAgIGlmICh0aF9tb2RlbC0+bW9kZWwuZnJhbWVfcG9z dF9wcm9jICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmICh0aF9tb2RlbC0+bW9kZWwuZnJhbWVf cG9zdF9wcm9jKQogICAgICAgICAgICAgICAgIHRoX21vZGVsLT5tb2RlbC5mcmFtZV9wb3N0X3By b2ModGFzay0+b3V0X2ZyYW1lLCAmb3V0cHV0cywgdGhfbW9kZWwtPm1vZGVsLmZpbHRlcl9jdHgp OwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg ICBmZl9wcm9jX2Zyb21fZG5uX3RvX2ZyYW1lKHRhc2stPm91dF9mcmFtZSwgJm91dHB1dHMsIHRo X21vZGVsLT5jdHgpOwotICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgdGFzay0+b3V0X2ZyYW1lLT53aWR0aCA9IG91dHB1dHMuZGltc1tkbm5fZ2V0X3dpZHRoX2lk eF9ieV9sYXlvdXQob3V0cHV0cy5sYXlvdXQpXTsKKyAgICAgICAgICAgIHRhc2stPm91dF9mcmFt ZS0+d2lkdGggID0gb3V0cHV0cy5kaW1zW2Rubl9nZXRfd2lkdGhfaWR4X2J5X2xheW91dChvdXRw dXRzLmxheW91dCldOwogICAgICAgICAgICAgdGFzay0+b3V0X2ZyYW1lLT5oZWlnaHQgPSBvdXRw dXRzLmRpbXNbZG5uX2dldF9oZWlnaHRfaWR4X2J5X2xheW91dChvdXRwdXRzLmxheW91dCldOwog ICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6CisgICAgfSBlbHNlIHsKICAg ICAgICAgYXZwcml2X3JlcG9ydF9taXNzaW5nX2ZlYXR1cmUodGhfbW9kZWwtPmN0eCwgIm1vZGVs IGZ1bmN0aW9uIHR5cGUgJWQiLCB0aF9tb2RlbC0+bW9kZWwuZnVuY190eXBlKTsKICAgICAgICAg Z290byBlcnI7CiAgICAgfQorCiAgICAgdGFzay0+aW5mZXJlbmNlX2RvbmUrKzsKICAgICBhdl9m cmVlcCgmcmVxdWVzdC0+bGx0YXNrKTsKKwogZXJyOgogICAgIHRoX2ZyZWVfcmVxdWVzdChpbmZl cl9yZXF1ZXN0KTsKLQogICAgIGlmIChmZl9zYWZlX3F1ZXVlX3B1c2hfYmFjayh0aF9tb2RlbC0+ cmVxdWVzdF9xdWV1ZSwgcmVxdWVzdCkgPCAwKSB7CiAgICAgICAgIGRlc3Ryb3lfcmVxdWVzdF9p dGVtKCZyZXF1ZXN0KTsKLSAgICAgICAgYXZfbG9nKHRoX21vZGVsLT5jdHgsIEFWX0xPR19FUlJP UiwgIlVuYWJsZSB0byBwdXNoIGJhY2sgcmVxdWVzdF9xdWV1ZSB3aGVuIGZhaWxlZCB0byBzdGFy dCBpbmZlcmVuY2UuXG4iKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIHRoX3dvcmtlcl90aHJl YWQoVEhNb2RlbCAqdGhfbW9kZWwpIHsKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBUSFJl cXVlc3RJdGVtICpyZXF1ZXN0ID0gTlVMTDsKLSAgICAgICAgewotICAgICAgICAgICAgc3RkOjp1 bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2NrKCp0aF9tb2RlbC0+bXV0ZXgpOwotICAgICAgICAg ICAgdGhfbW9kZWwtPmNvbmQtPndhaXQobG9jaywgWyZdewotICAgICAgICAgICAgICAgIHJldHVy biB0aF9tb2RlbC0+d29ya2VyX3N0b3AgfHwgZmZfc2FmZV9xdWV1ZV9zaXplKHRoX21vZGVsLT5w ZW5kaW5nX3F1ZXVlKSA+IDA7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgaWYgKHRo X21vZGVsLT53b3JrZXJfc3RvcCAmJiBmZl9zYWZlX3F1ZXVlX3NpemUodGhfbW9kZWwtPnBlbmRp bmdfcXVldWUpID09IDApCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIHJl cXVlc3QgPSAoVEhSZXF1ZXN0SXRlbSAqKWZmX3NhZmVfcXVldWVfcG9wX2Zyb250KHRoX21vZGVs LT5wZW5kaW5nX3F1ZXVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyZXF1ZXN0KSB7Ci0g ICAgICAgICAgICB0aF9zdGFydF9pbmZlcmVuY2UocmVxdWVzdCk7Ci0gICAgICAgICAgICBpbmZl cl9jb21wbGV0aW9uX2NhbGxiYWNrKHJlcXVlc3QpOwotICAgICAgICB9CiAgICAgfQogfQogCkBA IC00MDUsMzEgKzM3NCwyMSBAQCBzdGF0aWMgaW50IGV4ZWN1dGVfbW9kZWxfdGgoVEhSZXF1ZXN0 SXRlbSAqcmVxdWVzdCwgUXVldWUgKmxsdGFza19xdWV1ZSkKICAgICB9CiAKICAgICBsbHRhc2sg PSAoTGFzdExldmVsVGFza0l0ZW0gKilmZl9xdWV1ZV9wZWVrX2Zyb250KGxsdGFza19xdWV1ZSk7 Ci0gICAgaWYgKGxsdGFzayA9PSBOVUxMKSB7Ci0gICAgICAgIGF2X2xvZyhOVUxMLCBBVl9MT0df RVJST1IsICJGYWlsZWQgdG8gZ2V0IExhc3RMZXZlbFRhc2tJdGVtXG4iKTsKLSAgICAgICAgcmV0 ID0gQVZFUlJPUihFSU5WQUwpOwotICAgICAgICBnb3RvIGVycjsKKyAgICBpZiAoIWxsdGFzaykg eworICAgICAgICBkZXN0cm95X3JlcXVlc3RfaXRlbSgmcmVxdWVzdCk7CisgICAgICAgIHJldHVy biBBVkVSUk9SKEVJTlZBTCk7CiAgICAgfQogICAgIHRhc2sgPSBsbHRhc2stPnRhc2s7CiAgICAg dGhfbW9kZWwgPSAoVEhNb2RlbCAqKXRhc2stPm1vZGVsOwogCiAgICAgcmV0ID0gZmlsbF9tb2Rl bF9pbnB1dF90aCh0aF9tb2RlbCwgcmVxdWVzdCk7Ci0gICAgaWYgKCByZXQgIT0gMCkgewotICAg ICAgICBnb3RvIGVycjsKLSAgICB9CisgICAgaWYgKHJldCAhPSAwKSBnb3RvIGVycjsKKwogICAg IGlmICh0YXNrLT5hc3luYykgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4g bG9jaygqdGhfbW9kZWwtPm11dGV4KTsKLSAgICAgICAgaWYgKGZmX3NhZmVfcXVldWVfcHVzaF9i YWNrKHRoX21vZGVsLT5wZW5kaW5nX3F1ZXVlLCByZXF1ZXN0KSA8IDApIHsKLSAgICAgICAgICAg IHJldHVybiBBVkVSUk9SKEVOT01FTSk7Ci0gICAgICAgIH0KLSAgICAgICAgdGhfbW9kZWwtPmNv bmQtPm5vdGlmeV9vbmUoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBmZl9k bm5fc3RhcnRfaW5mZXJlbmNlX2FzeW5jKHRoX21vZGVsLT5jdHgsICZyZXF1ZXN0LT5leGVjX21v ZHVsZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgLy8gU3luY2hyb25vdXMgZXhlY3V0aW9uIHBh dGgKLSAgICAgICAgcmV0ID0gdGhfc3RhcnRfaW5mZXJlbmNlKCh2b2lkICopKHJlcXVlc3QpKTsK LSAgICAgICAgaWYgKHJldCAhPSAwKSB7Ci0gICAgICAgICAgICBnb3RvIGVycjsKLSAgICAgICAg fQorICAgICAgICByZXQgPSB0aF9zdGFydF9pbmZlcmVuY2UocmVxdWVzdCk7CisgICAgICAgIGlm IChyZXQgIT0gMCkgZ290byBlcnI7CiAgICAgICAgIGluZmVyX2NvbXBsZXRpb25fY2FsbGJhY2so cmVxdWVzdCk7CiAgICAgICAgIHJldHVybiAodGFzay0+aW5mZXJlbmNlX2RvbmUgPT0gdGFzay0+ aW5mZXJlbmNlX3RvZG8pID8gMCA6IEROTl9HRU5FUklDX0VSUk9SOwogICAgIH0KQEAgLTQ0Miwx MSArNDAxLDIwIEBAIGVycjoKICAgICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgVEhJbmZlclJl cXVlc3QgKnRoX2NyZWF0ZV9pbmZlcmVuY2VfcmVxdWVzdCh2b2lkKQoreworICAgIFRISW5mZXJS ZXF1ZXN0ICpyZXF1ZXN0ID0gKFRISW5mZXJSZXF1ZXN0ICopYXZfbWFsbG9jeihzaXplb2YoVEhJ bmZlclJlcXVlc3QpKTsKKyAgICBpZiAoIXJlcXVlc3QpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7 CisgICAgfQorICAgIHJldHVybiByZXF1ZXN0OworfQorCiBzdGF0aWMgaW50IGdldF9vdXRwdXRf dGgoRE5OTW9kZWwgKm1vZGVsLCBjb25zdCBjaGFyICppbnB1dF9uYW1lLCBpbnQgaW5wdXRfd2lk dGgsIGludCBpbnB1dF9oZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKm91dHB1dF9uYW1lLCBpbnQgKm91dHB1dF93aWR0aCwgaW50ICpvdXRwdXRf aGVpZ2h0KQogewogICAgIGludCByZXQgPSAwOwotICAgIFRITW9kZWwgKnRoX21vZGVsID0gKFRI TW9kZWwqKSBtb2RlbDsKKyAgICBUSE1vZGVsICp0aF9tb2RlbCA9IChUSE1vZGVsICopIG1vZGVs OwogICAgIERubkNvbnRleHQgKmN0eCA9IHRoX21vZGVsLT5jdHg7CiAgICAgVGFza0l0ZW0gdGFz ayA9IHsgMCB9OwogICAgIFRIUmVxdWVzdEl0ZW0gKnJlcXVlc3QgPSBOVUxMOwpAQCAtNDU3LDIw ICs0MjUsMTcgQEAgc3RhdGljIGludCBnZXRfb3V0cHV0X3RoKEROTk1vZGVsICptb2RlbCwgY29u c3QgY2hhciAqaW5wdXRfbmFtZSwgaW50IGlucHV0X3dpZHQKICAgICAgICAgLmluX2ZyYW1lICAg ICAgID0gTlVMTCwKICAgICAgICAgLm91dF9mcmFtZSAgICAgID0gTlVMTCwKICAgICB9OworCiAg ICAgcmV0ID0gZmZfZG5uX2ZpbGxfZ2V0dGluZ291dHB1dF90YXNrKCZ0YXNrLCAmZXhlY19wYXJh bXMsIHRoX21vZGVsLCBpbnB1dF9oZWlnaHQsIGlucHV0X3dpZHRoLCBjdHgpOwotICAgIGlmICgg cmV0ICE9IDApIHsKKyAgICBpZiAocmV0ICE9IDApCiAgICAgICAgIGdvdG8gZXJyOwotICAgIH0K IAogICAgIHJldCA9IGV4dHJhY3RfbGx0YXNrX2Zyb21fdGFzaygmdGFzaywgdGhfbW9kZWwtPmxs dGFza19xdWV1ZSk7Ci0gICAgaWYgKCByZXQgIT0gMCkgewotICAgICAgICBhdl9sb2coY3R4LCBB Vl9MT0dfRVJST1IsICJ1bmFibGUgdG8gZXh0cmFjdCBsYXN0IGxldmVsIHRhc2sgZnJvbSB0YXNr LlxuIik7CisgICAgaWYgKHJldCAhPSAwKQogICAgICAgICBnb3RvIGVycjsKLSAgICB9CiAKICAg ICByZXF1ZXN0ID0gKFRIUmVxdWVzdEl0ZW0qKSBmZl9zYWZlX3F1ZXVlX3BvcF9mcm9udCh0aF9t b2RlbC0+cmVxdWVzdF9xdWV1ZSk7CiAgICAgaWYgKCFyZXF1ZXN0KSB7Ci0gICAgICAgIGF2X2xv ZyhjdHgsIEFWX0xPR19FUlJPUiwgInVuYWJsZSB0byBnZXQgaW5mZXIgcmVxdWVzdC5cbiIpOwog ICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0K QEAgLTQ4NSw0NCArNDUwLDIxIEBAIGVycjoKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMg VEhJbmZlclJlcXVlc3QgKnRoX2NyZWF0ZV9pbmZlcmVuY2VfcmVxdWVzdCh2b2lkKQotewotICAg IFRISW5mZXJSZXF1ZXN0ICpyZXF1ZXN0ID0gKFRISW5mZXJSZXF1ZXN0ICopYXZfbWFsbG9jKHNp emVvZihUSEluZmVyUmVxdWVzdCkpOwotICAgIGlmICghcmVxdWVzdCkgewotICAgICAgICByZXR1 cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVxdWVzdC0+aW5wdXRfdGVuc29yID0gTlVMTDsKLSAgICBy ZXF1ZXN0LT5vdXRwdXQgPSBOVUxMOwotICAgIHJldHVybiByZXF1ZXN0OwotfQotCiBzdGF0aWMg RE5OTW9kZWwgKmRubl9sb2FkX21vZGVsX3RoKERubkNvbnRleHQgKmN0eCwgRE5ORnVuY3Rpb25U eXBlIGZ1bmNfdHlwZSwgQVZGaWx0ZXJDb250ZXh0ICpmaWx0ZXJfY3R4KQogewotICAgIEROTk1v ZGVsICptb2RlbCA9IE5VTEw7Ci0gICAgVEhNb2RlbCAqdGhfbW9kZWwgPSBOVUxMOworICAgIFRI TW9kZWwgKnRoX21vZGVsID0gKFRITW9kZWwgKilhdl9tYWxsb2N6KHNpemVvZihUSE1vZGVsKSk7 CiAgICAgVEhSZXF1ZXN0SXRlbSAqaXRlbSA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZGV2aWNl X25hbWUgPSBjdHgtPmRldmljZSA/IGN0eC0+ZGV2aWNlIDogImNwdSI7CiAKLSAgICB0aF9tb2Rl bCA9IChUSE1vZGVsICopYXZfbWFsbG9jeihzaXplb2YoVEhNb2RlbCkpOwogICAgIGlmICghdGhf bW9kZWwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIG1vZGVsID0gJnRoX21vZGVsLT5tb2Rl bDsKKwogICAgIHRoX21vZGVsLT5jdHggPSBjdHg7CiAKKyAgICAvLyBEZXZpY2UgYW5kIFhQVSBJ bml0aWFsaXphdGlvbgogICAgIGMxMDo6RGV2aWNlIGRldmljZSA9IGMxMDo6RGV2aWNlKGRldmlj ZV9uYW1lKTsKICAgICBpZiAoZGV2aWNlLmlzX3hwdSgpKSB7Ci0gICAgICAgIGlmICghYXQ6Omhh c1hQVSgpKSB7Ci0gICAgICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJObyBYUFUg ZGV2aWNlIGZvdW5kXG4iKTsKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgfQotI2lm IFRPUkNIX1ZFUlNJT05fTUFKT1IgPiAyIHx8IChUT1JDSF9WRVJTSU9OX01BSk9SID09IDIgJiYg VE9SQ0hfVkVSU0lPTl9NSU5PUiA+PSA2KQotICAgICAgICBhdDo6ZGV0YWlsOjpnZXRYUFVIb29r cygpLmluaXQoKTsKLSNlbHNlCiAgICAgICAgIGF0OjpkZXRhaWw6OmdldFhQVUhvb2tzKCkuaW5p dFhQVSgpOwotI2VuZGlmCi0gICAgfSBlbHNlIGlmICghZGV2aWNlLmlzX2NwdSgpKSB7Ci0gICAg ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIk5vdCBzdXBwb3J0ZWQgZGV2aWNlOlwiJXNc IlxuIiwgZGV2aWNlX25hbWUpOwotICAgICAgICBnb3RvIGZhaWw7CiAgICAgfQogCiAgICAgdHJ5 IHsKQEAgLTUzNSw2MSArNDc3LDM3IEBAIHN0YXRpYyBETk5Nb2RlbCAqZG5uX2xvYWRfbW9kZWxf dGgoRG5uQ29udGV4dCAqY3R4LCBETk5GdW5jdGlvblR5cGUgZnVuY190eXBlLCBBCiAgICAgfQog CiAgICAgdGhfbW9kZWwtPnJlcXVlc3RfcXVldWUgPSBmZl9zYWZlX3F1ZXVlX2NyZWF0ZSgpOwot ICAgIGlmICghdGhfbW9kZWwtPnJlcXVlc3RfcXVldWUpIHsKKyAgICB0aF9tb2RlbC0+dGFza19x dWV1ZSA9IGZmX3F1ZXVlX2NyZWF0ZSgpOworICAgIHRoX21vZGVsLT5sbHRhc2tfcXVldWUgPSBm Zl9xdWV1ZV9jcmVhdGUoKTsKKworICAgIGlmICghdGhfbW9kZWwtPnJlcXVlc3RfcXVldWUgfHwg IXRoX21vZGVsLT50YXNrX3F1ZXVlIHx8ICF0aF9tb2RlbC0+bGx0YXNrX3F1ZXVlKQogICAgICAg ICBnb3RvIGZhaWw7Ci0gICAgfQogCiAgICAgaXRlbSA9IChUSFJlcXVlc3RJdGVtICopYXZfbWFs bG9jeihzaXplb2YoVEhSZXF1ZXN0SXRlbSkpOwotICAgIGlmICghaXRlbSkgeworICAgIGlmICgh aXRlbSkKICAgICAgICAgZ290byBmYWlsOwotICAgIH0KLSAgICBpdGVtLT5sbHRhc2sgPSBOVUxM OworCiAgICAgaXRlbS0+aW5mZXJfcmVxdWVzdCA9IHRoX2NyZWF0ZV9pbmZlcmVuY2VfcmVxdWVz dCgpOwotICAgIGlmICghaXRlbS0+aW5mZXJfcmVxdWVzdCkgewotICAgICAgICBhdl9sb2coTlVM TCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgVG9yY2ggaW5m ZXJlbmNlIHJlcXVlc3RcbiIpOworICAgIGlmICghaXRlbS0+aW5mZXJfcmVxdWVzdCkKICAgICAg ICAgZ290byBmYWlsOwotICAgIH0KKworICAgIC8vIFNldHVwIHRoZSBhc3luYyBtb2R1bGUgY2Fs bGJhY2tzIGZvciB0aGUgY29tbW9uIGluZnJhc3RydWN0dXJlCiAgICAgaXRlbS0+ZXhlY19tb2R1 bGUuc3RhcnRfaW5mZXJlbmNlID0gJnRoX3N0YXJ0X2luZmVyZW5jZTsKICAgICBpdGVtLT5leGVj X21vZHVsZS5jYWxsYmFjayA9ICZpbmZlcl9jb21wbGV0aW9uX2NhbGxiYWNrOwogICAgIGl0ZW0t PmV4ZWNfbW9kdWxlLmFyZ3MgPSBpdGVtOwogCi0gICAgaWYgKGZmX3NhZmVfcXVldWVfcHVzaF9i YWNrKHRoX21vZGVsLT5yZXF1ZXN0X3F1ZXVlLCBpdGVtKSA8IDApIHsKKyAgICBpZiAoZmZfc2Fm ZV9xdWV1ZV9wdXNoX2JhY2sodGhfbW9kZWwtPnJlcXVlc3RfcXVldWUsIGl0ZW0pIDwgMCkKICAg ICAgICAgZ290byBmYWlsOwotICAgIH0KLSAgICBpdGVtID0gTlVMTDsKIAotICAgIHRoX21vZGVs LT50YXNrX3F1ZXVlID0gZmZfcXVldWVfY3JlYXRlKCk7Ci0gICAgaWYgKCF0aF9tb2RlbC0+dGFz a19xdWV1ZSkgewotICAgICAgICBnb3RvIGZhaWw7Ci0gICAgfQorICAgIHRoX21vZGVsLT5tb2Rl bC5nZXRfaW5wdXQgPSAmZ2V0X2lucHV0X3RoOworICAgIHRoX21vZGVsLT5tb2RlbC5nZXRfb3V0 cHV0ID0gJmdldF9vdXRwdXRfdGg7CisgICAgdGhfbW9kZWwtPm1vZGVsLmZpbHRlcl9jdHggPSBm aWx0ZXJfY3R4OworICAgIHRoX21vZGVsLT5tb2RlbC5mdW5jX3R5cGUgPSBmdW5jX3R5cGU7CiAK LSAgICB0aF9tb2RlbC0+bGx0YXNrX3F1ZXVlID0gZmZfcXVldWVfY3JlYXRlKCk7Ci0gICAgaWYg KCF0aF9tb2RlbC0+bGx0YXNrX3F1ZXVlKSB7Ci0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0K LSAgICB0aF9tb2RlbC0+cGVuZGluZ19xdWV1ZSA9IGZmX3NhZmVfcXVldWVfY3JlYXRlKCk7Ci0g ICAgaWYgKCF0aF9tb2RlbC0+cGVuZGluZ19xdWV1ZSkgewotICAgICAgICBnb3RvIGZhaWw7Ci0g ICAgfQotCi0gICAgdGhfbW9kZWwtPm11dGV4ID0gbmV3IHN0ZDo6bXV0ZXgoKTsKLSAgICB0aF9t b2RlbC0+Y29uZCA9IG5ldyBzdGQ6OmNvbmRpdGlvbl92YXJpYWJsZSgpOwotICAgIHRoX21vZGVs LT53b3JrZXJfc3RvcCA9IGZhbHNlOwotICAgIHRoX21vZGVsLT53b3JrZXJfdGhyZWFkID0gbmV3 IHN0ZDo6dGhyZWFkKHRoX3dvcmtlcl90aHJlYWQsIHRoX21vZGVsKTsKLQotICAgIG1vZGVsLT5n ZXRfaW5wdXQgPSAmZ2V0X2lucHV0X3RoOwotICAgIG1vZGVsLT5nZXRfb3V0cHV0ID0gJmdldF9v dXRwdXRfdGg7Ci0gICAgbW9kZWwtPmZpbHRlcl9jdHggPSBmaWx0ZXJfY3R4OwotICAgIG1vZGVs LT5mdW5jX3R5cGUgPSBmdW5jX3R5cGU7Ci0gICAgcmV0dXJuIG1vZGVsOworICAgIHJldHVybiAm dGhfbW9kZWwtPm1vZGVsOwogCiBmYWlsOgotICAgIGlmIChpdGVtKSB7Ci0gICAgICAgIGRlc3Ry b3lfcmVxdWVzdF9pdGVtKCZpdGVtKTsKLSAgICAgICAgYXZfZnJlZXAoJml0ZW0pOwotICAgIH0K LSAgICBkbm5fZnJlZV9tb2RlbF90aCgmbW9kZWwpOworICAgIGRubl9mcmVlX21vZGVsX3RoKChE Tk5Nb2RlbCoqKSZ0aF9tb2RlbCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKZGlmZiAtLWdpdCBh L2xpYmF2ZmlsdGVyL3ZmX2Rubl9wcm9jZXNzaW5nLmMgYi9saWJhdmZpbHRlci92Zl9kbm5fcHJv Y2Vzc2luZy5jCmluZGV4IDA3NzFjZWI1ZmMuLjI3ZDRlMDg4Y2IgMTAwNjQ0Ci0tLSBhL2xpYmF2 ZmlsdGVyL3ZmX2Rubl9wcm9jZXNzaW5nLmMKKysrIGIvbGliYXZmaWx0ZXIvdmZfZG5uX3Byb2Nl c3NpbmcuYwpAQCAtNTIsNiArNTIsOSBAQCBzdGF0aWMgY29uc3QgQVZPcHRpb24gZG5uX3Byb2Nl c3Npbmdfb3B0aW9uc1tdID0gewogI2VuZGlmCiAjaWYgKENPTkZJR19MSUJUT1JDSCA9PSAxKQog ICAgIHsgInRvcmNoIiwgICAgICAgInRvcmNoIGJhY2tlbmQgZmxhZyIsICAgICAgICAgMCwgICAg ICAgICAgICAgICAgICAgICAgICBBVl9PUFRfVFlQRV9DT05TVCwgICAgIHsgLmk2NCA9IEROTl9U SCB9LCAgICAwLCAwLCBGTEFHUywgImJhY2tlbmQiIH0sCisjZW5kaWYKKyNpZiAoQ09ORklHX0xJ QlRPUkNIKQorICAgIHsgInRvcmNoIiwgICAgICAgInRvcmNoIGJhY2tlbmQiLCAgICAgICAgICAg ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICBBVl9PUFRfVFlQRV9DT05TVCwgICAgIHsgLmk2 NCA9IEROTl9USCB9LCAwLCAwLCBGTEFHUywgLnVuaXQgPSAiYmFja2VuZCIgfSwKICNlbmRpZgog ICAgIHsgTlVMTCB9CiB9OwotLSAKMi41Mi4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0IC0tIGZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnClRvIHVuc3Vic2NyaWJlIHNlbmQgYW4gZW1haWwgdG8gZmZtcGVnLWRl dmVsLWxlYXZlQGZmbXBlZy5vcmcK