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 2B6334545C for ; Fri, 31 Mar 2023 15:30:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DA0AD68C292; Fri, 31 Mar 2023 18:30:00 +0300 (EEST) Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B515968C283 for ; Fri, 31 Mar 2023 18:29:54 +0300 (EEST) Received: by mail-pj1-f43.google.com with SMTP id gp15-20020a17090adf0f00b0023d1bbd9f9eso25802156pjb.0 for ; Fri, 31 Mar 2023 08:29:54 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680276593; x=1682868593; 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=3oGhi5GVrGfvtAtmM68mLwbE4I70EF+hnMjTQxxB3uc=; b=T7CCM9nYguCywUWWb/UrBb3jLnJXKlaoMQCNtek8JFTckoBqdhYYeeQnCKoSJrkFaU 05+P9D0vMH93SsLu6HVk3OaNaOEOklKeMeR3EwTpCWKBlGHHI2Gp8R79o8bSWokYIwMD CQdv+NIj9A78Ty0CxuAnzjSKM/WHJtLO+5qq9P0nYE6F+MISNawIHTNO0riS0eNxeKLR SXdT2hrxg8afUeUw3ZCHOIDoZoxGXtAsfdiSD6WPBg4/ZYToXw6XibO9lGKiAz9ieZW7 BtUFoU7VMCrJTvhuo6P59Wmmz/usMOwYw+o2SwVdUgTiu5yJqQoKjqY8LKE0z4ZsgLzc RB8w== X-Gm-Message-State: AAQBX9fE7HSR7Hi0YyWs9yNeHDnJcJJuP+AhSqkoQRIGMLRSQaMUsKHa l+wYxrGhHKJl92CRdWs8X5uERXn5Jzc= X-Google-Smtp-Source: AKy350ZdqWseyKAHXAqZXquB52x18oulXW3QTqXH4eNirrwdOqsqTnPT36ut1vFSEsAy+gAVFpGJ2g== X-Received: by 2002:a17:90b:4a8d:b0:240:6a1d:a14b with SMTP id lp13-20020a17090b4a8d00b002406a1da14bmr25731853pjb.28.1680276591958; Fri, 31 Mar 2023 08:29:51 -0700 (PDT) Received: from localhost (76-14-89-2.sf-cable.astound.net. [76.14.89.2]) by smtp.gmail.com with ESMTPSA id x6-20020a1709028ec600b001a1ea1d6d65sm1679429plo.272.2023.03.31.08.29.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 31 Mar 2023 08:29:51 -0700 (PDT) Received: by localhost (sSMTP sendmail emulation); Fri, 31 Mar 2023 08:29:48 -0700 From: pal@sandflow.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 31 Mar 2023 08:29:40 -0700 Message-Id: <20230331152941.21879-2-pal@sandflow.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20230331152941.21879-1-pal@sandflow.com> References: <20230331152941.21879-1-pal@sandflow.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v1 2/3] avcodec/jpeg2000dec: add support for HTJ2K block decoding 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: caleb 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: RnJvbTogY2FsZWIgPGV0ZW1lc2ljYWxlYkBnbWFpbC5jb20+CgotLS0KIGxpYmF2Y29kZWMvTWFr ZWZpbGUgICAgICAgIHwgICAgMiArLQogbGliYXZjb2RlYy9qcGVnMjAwMC5oICAgICAgfCAgICA1 ICstCiBsaWJhdmNvZGVjL2pwZWcyMDAwZGVjLmMgICB8ICAgNzMgKy0KIGxpYmF2Y29kZWMvanBl ZzIwMDBodGRlYy5jIHwgMTQ1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK IGxpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5oIHwgICAzNCArCiA1IGZpbGVzIGNoYW5nZWQsIDE1 NDggaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2pw ZWcyMDAwaHRkZWMuaAoKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJhdmNv ZGVjL01ha2VmaWxlCmluZGV4IDcxMWQyNjkwZDAuLmRkNmQzMDFhYjEgMTAwNjQ0Ci0tLSBhL2xp YmF2Y29kZWMvTWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpAQCAtNDY5LDcgKzQ2 OSw3IEBAIE9CSlMtJChDT05GSUdfSkFDT1NVQl9ERUNPREVSKSAgICAgICAgICs9IGphY29zdWJk ZWMubyBhc3MubwogT0JKUy0kKENPTkZJR19KUEVHMjAwMF9FTkNPREVSKSAgICAgICAgKz0gajJr ZW5jLm8gbXFjZW5jLm8gbXFjLm8ganBlZzIwMDAubyBcCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBqcGVnMjAwMGR3dC5vCiBPQkpTLSQoQ09ORklHX0pQRUcyMDAw X0RFQ09ERVIpICAgICAgICArPSBqcGVnMjAwMGRlYy5vIGpwZWcyMDAwLm8ganBlZzIwMDBkc3Au byBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcGVnMjAwMGR3 dC5vIG1xY2RlYy5vIG1xYy5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBqcGVnMjAwMGR3dC5vIG1xY2RlYy5vIG1xYy5vIGpwZWcyMDAwaHRkZWMubwogT0JKUy0k KENPTkZJR19KUEVHTFNfREVDT0RFUikgICAgICAgICAgKz0ganBlZ2xzZGVjLm8ganBlZ2xzLm8K IE9CSlMtJChDT05GSUdfSlBFR0xTX0VOQ09ERVIpICAgICAgICAgICs9IGpwZWdsc2VuYy5vIGpw ZWdscy5vCiBPQkpTLSQoQ09ORklHX0pWX0RFQ09ERVIpICAgICAgICAgICAgICArPSBqdmRlYy5v CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2pwZWcyMDAwLmggYi9saWJhdmNvZGVjL2pwZWcyMDAw LmgKaW5kZXggZTVlY2I0Y2JmOS4uZDAwNGMwOGYxMCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9q cGVnMjAwMC5oCisrKyBiL2xpYmF2Y29kZWMvanBlZzIwMDAuaApAQCAtMTExLDcgKzExMSw3IEBA IGVudW0gSnBlZzIwMDBRdWFudHN0eSB7IC8vIHF1YW50aXphdGlvbiBzdHlsZQogI2RlZmluZSBK UEVHMjAwMF9DU1RZX1NPUCAgICAgICAweDAyIC8vIFNPUCBtYXJrZXIgcHJlc2VudAogI2RlZmlu ZSBKUEVHMjAwMF9DU1RZX0VQSCAgICAgICAweDA0IC8vIEVQSCBtYXJrZXIgcHJlc2VudAogI2Rl ZmluZSBKUEVHMjAwMF9DVFNZX0hUSjJLX0YgICAweDQwIC8vIE9ubHkgSFQgY29kZS1ibG9ja3Mg KFJlYy4gSVRVLVQgVC44MTQgfCBJU08vSUVDIDE1NDQ0LTE1KSBhcmUgcHJlc2VudAotI2RlZmlu ZSBKUEVHMjAwMF9DVFNZX0hUSjJLX00gICAweEMwIC8vIEhUIGNvZGUgYmxvY2tzIChSZWMuIElU VS1UIFQuODE0IHwgSVNPL0lFQyAxNTQ0NC0xNSkgY2FuIGJlIHByZXNlbnQKKyNkZWZpbmUgSlBF RzIwMDBfQ1RTWV9IVEoyS19NICAgMHhDMCAvLyBIVCBjb2RlLWJsb2NrcyAoUmVjLiBJVFUtVCBU LjgxNCB8IElTTy9JRUMgMTU0NDQtMTUpIGNhbiBiZSBwcmVzZW50CiAKIC8vIFByb2dyZXNzaW9u IG9yZGVycwogI2RlZmluZSBKUEVHMjAwMF9QR09EX0xSQ1AgICAgICAweDAwICAvLyBMYXllci1y ZXNvbHV0aW9uIGxldmVsLWNvbXBvbmVudC1wb3NpdGlvbiBwcm9ncmVzc2lvbgpAQCAtMTg5LDYg KzE4OSw5IEBAIHR5cGVkZWYgc3RydWN0IEpwZWcyMDAwQ2JsayB7CiAgICAgSnBlZzIwMDBQYXNz ICpwYXNzZXM7CiAgICAgSnBlZzIwMDBMYXllciAqbGF5ZXJzOwogICAgIGludCBjb29yZFsyXVsy XTsgLy8gYm9yZGVyIGNvb3JkaW5hdGVzIHt7eDAsIHgxfSwge3kwLCB5MX19CisgICAgLyogc3Bl Y2lmaWMgdG8gSFQgY29kZS1ibG9ja3MgKi8KKyAgICBpbnQgemJwOworICAgIGludCBwYXNzX2xl bmd0aHNbMl07CiB9IEpwZWcyMDAwQ2JsazsgLy8gY29kZSBibG9jawogCiB0eXBlZGVmIHN0cnVj dCBKcGVnMjAwMFByZWMgewpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9qcGVnMjAwMGRlYy5jIGIv bGliYXZjb2RlYy9qcGVnMjAwMGRlYy5jCmluZGV4IDU5OTRlMjlhZTMuLjU4MjU1ODljNzkgMTAw NjQ0Ci0tLSBhL2xpYmF2Y29kZWMvanBlZzIwMDBkZWMuYworKysgYi9saWJhdmNvZGVjL2pwZWcy MDAwZGVjLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJqcGVnMjAwMGRzcC5oIgogI2lu Y2x1ZGUgInByb2ZpbGVzLmgiCiAjaW5jbHVkZSAianBlZzIwMDBkZWMuaCIKKyNpbmNsdWRlICJq cGVnMjAwMGh0ZGVjLmgiCiAKICNkZWZpbmUgSlAyX1NJR19UWVBFICAgIDB4NkE1MDIwMjAKICNk ZWZpbmUgSlAyX1NJR19WQUxVRSAgIDB4MEQwQTg3MEEKQEAgLTQzNiwxMiArNDM3LDEzIEBAIHN0 YXRpYyBpbnQgZ2V0X2NveChKcGVnMjAwMERlY29kZXJDb250ZXh0ICpzLCBKcGVnMjAwMENvZGlu Z1N0eWxlICpjKQogICAgIGMtPmNibGtfc3R5bGUgPSBieXRlc3RyZWFtMl9nZXRfYnl0ZXUoJnMt PmcpOwogICAgIGlmIChjLT5jYmxrX3N0eWxlICE9IDApIHsgLy8gY2JsayBzdHlsZQogICAgICAg ICBpZiAoYy0+Y2Jsa19zdHlsZSAmIEpQRUcyMDAwX0NUU1lfSFRKMktfTSB8fCBjLT5jYmxrX3N0 eWxlICYgSlBFRzIwMDBfQ1RTWV9IVEoyS19GKSB7Ci0gICAgICAgICAgICBhdl9sb2cocy0+YXZj dHgsIEFWX0xPR19FUlJPUiwgIlN1cHBvcnQgZm9yIEhpZ2ggdGhyb3VnaHB1dCBKUEVHIDIwMDAg aXMgbm90IHlldCBhdmFpbGFibGVcbiIpOwotICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfUEFU Q0hXRUxDT01FOworICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LEFWX0xPR19UUkFDRSwiSGln aCBUaHJvdWdocHV0IGpwZWcgMjAwMCBjb2Rlc3RyZWFtLlxuIik7CisgICAgICAgICAgICBzLT5p c19odGoyayA9IDE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhdl9sb2cocy0+YXZj dHgsIEFWX0xPR19XQVJOSU5HLCAiZXh0cmEgY2JsayBzdHlsZXMgJVhcbiIsIGMtPmNibGtfc3R5 bGUpOworICAgICAgICAgICAgaWYgKGMtPmNibGtfc3R5bGUgJiBKUEVHMjAwMF9DQkxLX0JZUEFT UykKKyAgICAgICAgICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19XQVJOSU5HLCAiU2Vs ZWN0aXZlIGFyaXRobWV0aWMgY29kaW5nIGJ5cGFzc1xuIik7CiAgICAgICAgIH0KLSAgICAgICAg YXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklORywgImV4dHJhIGNibGsgc3R5bGVzICVYXG4i LCBjLT5jYmxrX3N0eWxlKTsKLSAgICAgICAgaWYgKGMtPmNibGtfc3R5bGUgJiBKUEVHMjAwMF9D QkxLX0JZUEFTUykKLSAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9HX1dBUk5JTkcs ICJTZWxlY3RpdmUgYXJpdGhtZXRpYyBjb2RpbmcgYnlwYXNzXG4iKTsKICAgICB9CiAgICAgYy0+ dHJhbnNmb3JtID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGV1KCZzLT5nKTsgLy8gRFdUIHRyYW5zZm9y bWF0aW9uIHR5cGUKICAgICAvKiBzZXQgaW50ZWdlciA5LzcgRFdUIGluIGNhc2Ugb2YgQklURVhB Q1QgZmxhZyAqLwpAQCAtMTA2NiwxMyArMTA2OCwxNSBAQCBzdGF0aWMgaW50IGpwZWcyMDAwX2Rl Y29kZV9wYWNrZXQoSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBUaWxlICp0aWxl LAogICAgICAgICAgICAgICAgIHJldHVybiBpbmNsOwogCiAgICAgICAgICAgICBpZiAoIWNibGst Pm5wYXNzZXMpIHsKLSAgICAgICAgICAgICAgICBpbnQgdiA9IGV4cG5bYmFuZG5vXSArIG51bWdi aXRzIC0gMSAtCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWdfdHJlZV9kZWNvZGUocywgcHJl Yy0+emVyb2JpdHMgKyBjYmxrbm8sIDEwMCk7CisgICAgICAgICAgICAgICAgaW50IHpicCA9IHRh Z190cmVlX2RlY29kZShzLCBwcmVjLT56ZXJvYml0cyArIGNibGtubywgMTAwKTsKKyAgICAgICAg ICAgICAgICBpbnQgdiA9IGV4cG5bYmFuZG5vXSArIG51bWdiaXRzIC0gMSAtIHpicDsKKwogICAg ICAgICAgICAgICAgIGlmICh2IDwgMCB8fCB2ID4gMzApIHsKICAgICAgICAgICAgICAgICAgICAg YXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfRVJST1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAibm9uemVyb2JpdHMgJWQgaW52YWxpZCBvciB1bnN1cHBvcnRlZFxuIiwgdik7CiAgICAgICAg ICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwogICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICBjYmxrLT56YnAgPSB6YnA7CiAgICAgICAgICAgICAgICAgY2Js ay0+bm9uemVyb2JpdHMgPSB2OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKChuZXdw YXNzZXMgPSBnZXRucGFzc2VzKHMpKSA8IDApCkBAIC0xMTEzLDggKzExMTcsMjkgQEAgc3RhdGlj IGludCBqcGVnMjAwMF9kZWNvZGVfcGFja2V0KEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpw ZWcyMDAwVGlsZSAqdGlsZSwKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg IH0KIAotICAgICAgICAgICAgICAgIGlmICgocmV0ID0gZ2V0X2JpdHMocywgYXZfbG9nMihuZXdw YXNzZXMxKSArIGNibGstPmxibG9jaykpIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKKyAgICAgICAgICAgICAgICBpZiAobmV3cGFzc2VzID4gMSAmJiBzLT5pc19odGoyaykg eworICAgICAgICAgICAgICAgICAgICAvLyBSZXRyaWV2ZSBwYXNzIGxlbmd0aHMgZm9yIGVhY2gg cGFzcworICAgICAgICAgICAgICAgICAgICBpbnQgaHJlZl9wYXNzZXMgPSAgKGNibGstPm5wYXNz ZXMgKyBuZXdwYXNzZXMgLSAxKSAlIDM7CisgICAgICAgICAgICAgICAgICAgIGludCBzZWdtZW50 X3Bhc3NlcyA9IG5ld3Bhc3NlcyAtIGhyZWZfcGFzc2VzOworICAgICAgICAgICAgICAgICAgICBp bnQgcGFzc19ib3VuZCA9IDI7CisgICAgICAgICAgICAgICAgICAgIGludCBlYiA9IDA7CisgICAg ICAgICAgICAgICAgICAgIGludCBleHRyYV9iaXQgPSBuZXdwYXNzZXMgPiAyID8gMSA6IDA7Cisg ICAgICAgICAgICAgICAgICAgIHdoaWxlIChwYXNzX2JvdW5kIDw9c2VnbWVudF9wYXNzZXMpIHsK KyAgICAgICAgICAgICAgICAgICAgICAgIGViKys7CisgICAgICAgICAgICAgICAgICAgICAgICBw YXNzX2JvdW5kICs9cGFzc19ib3VuZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICBpZiAoKHJldCA9IGdldF9iaXRzKHMsIGxsZW4gKyBlYiArIDMpKSA8IDApCisg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAgICAgICBj YmxrLT5wYXNzX2xlbmd0aHNbMF0gPSByZXQ7CisgICAgICAgICAgICAgICAgICAgIGlmICgocmV0 ID0gZ2V0X2JpdHMocywgbGxlbiArIDMgKyBleHRyYV9iaXQpKSA8IDApCisgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gcmV0OworICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNzX2xl bmd0aHNbMV0gPSByZXQ7CisgICAgICAgICAgICAgICAgICAgIHJldCA9IGNibGstPnBhc3NfbGVu Z3Roc1swXSArIGNibGstPnBhc3NfbGVuZ3Roc1sxXTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgICAgICBpZiAoKHJldCA9IGdldF9iaXRzKHMsIGF2X2xvZzIobmV3 cGFzc2VzMSkgKyBjYmxrLT5sYmxvY2spKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gcmV0OworICAgICAgICAgICAgICAgICAgICBjYmxrLT5wYXNzX2xlbmd0aHNbMF0gPSBy ZXQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChyZXQgPiBjYmxrLT5k YXRhX2FsbG9jYXRlZCkgewogICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmV3X3NpemUgPSBG Rk1BWCgyKmNibGstPmRhdGFfYWxsb2NhdGVkLCByZXQpOwogICAgICAgICAgICAgICAgICAgICB2 b2lkICpuZXcgPSBhdl9yZWFsbG9jKGNibGstPmRhdGEsIG5ld19zaXplKTsKQEAgLTE4NjMsOSAr MTg4OCwxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tzKGNvbnN0IEpwZWcy MDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZQogCiAgICAgLyogTG9vcCBvbiB0aWxl IGNvbXBvbmVudHMgKi8KICAgICBmb3IgKGNvbXBubyA9IDA7IGNvbXBubyA8IHMtPm5jb21wb25l bnRzOyBjb21wbm8rKykgewotICAgICAgICBKcGVnMjAwMENvbXBvbmVudCAqY29tcCAgICAgPSB0 aWxlLT5jb21wICsgY29tcG5vOwotICAgICAgICBKcGVnMjAwMENvZGluZ1N0eWxlICpjb2RzdHkg PSB0aWxlLT5jb2RzdHkgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwQ29tcG9uZW50ICpjb21w ICAgICAgPSB0aWxlLT5jb21wICAgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwQ29kaW5nU3R5 bGUgKmNvZHN0eSAgPSB0aWxlLT5jb2RzdHkgKyBjb21wbm87CisgICAgICAgIEpwZWcyMDAwUXVh bnRTdHlsZSAqcXVhbnRzdHkgPSB0aWxlLT5xbnRzdHkgKyBjb21wbm87CisKICAgICAgICAgaW50 IGNvZGVkID0gMDsKKyAgICAgICAgaW50IHN1YmJhbmRubyA9IDA7CiAKICAgICAgICAgdDEuc3Ry aWRlID0gKDE8PGNvZHN0eS0+bG9nMl9jYmxrX3dpZHRoKSArIDI7CiAKQEAgLTE4NzMsNyArMTkw MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB0aWxlX2NvZGVibG9ja3MoY29uc3QgSnBlZzIwMDBE ZWNvZGVyQ29udGV4dCAqcywgSnBlZzIwMDBUaWxlCiAgICAgICAgIGZvciAocmVzbGV2ZWxubyA9 IDA7IHJlc2xldmVsbm8gPCBjb2RzdHktPm5yZXNsZXZlbHMyZGVjb2RlOyByZXNsZXZlbG5vKysp IHsKICAgICAgICAgICAgIEpwZWcyMDAwUmVzTGV2ZWwgKnJsZXZlbCA9IGNvbXAtPnJlc2xldmVs ICsgcmVzbGV2ZWxubzsKICAgICAgICAgICAgIC8qIExvb3Agb24gYmFuZHMgKi8KLSAgICAgICAg ICAgIGZvciAoYmFuZG5vID0gMDsgYmFuZG5vIDwgcmxldmVsLT5uYmFuZHM7IGJhbmRubysrKSB7 CisgICAgICAgICAgICBmb3IgKGJhbmRubyA9IDA7IGJhbmRubyA8IHJsZXZlbC0+bmJhbmRzOyBi YW5kbm8rKywgc3ViYmFuZG5vKyspIHsKICAgICAgICAgICAgICAgICBpbnQgbmJfcHJlY2luY3Rz LCBwcmVjbm87CiAgICAgICAgICAgICAgICAgSnBlZzIwMDBCYW5kICpiYW5kID0gcmxldmVsLT5i YW5kICsgYmFuZG5vOwogICAgICAgICAgICAgICAgIGludCBjYmxrbm8gPSAwLCBiYW5kcG9zOwpA QCAtMTg5MywxMiArMTkyMSwyMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdGlsZV9jb2RlYmxvY2tz KGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsIEpwZWcyMDAwVGlsZQogICAgICAgICAg ICAgICAgICAgICBmb3IgKGNibGtubyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgY2Js a25vIDwgcHJlYy0+bmJfY29kZWJsb2Nrc193aWR0aCAqIHByZWMtPm5iX2NvZGVibG9ja3NfaGVp Z2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgIGNibGtubysrKSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgICBpbnQgeCwgeTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LCB5LCBy ZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBTZWUgUmVjLiBJVFUtVCBULjgxNCwgRXF1 YXRpb24gRS0yICovCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWFncCA9IHF1YW50c3R5 LT5leHBuW3N1YmJhbmRub10gKyBxdWFudHN0eS0+bmd1YXJkYml0cyAtIDE7CisKICAgICAgICAg ICAgICAgICAgICAgICAgIEpwZWcyMDAwQ2JsayAqY2JsayA9IHByZWMtPmNibGsgKyBjYmxrbm87 Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmV0ID0gZGVjb2RlX2NibGsocywgY29kc3R5 LCAmdDEsIGNibGssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5j b29yZFswXVsxXSAtIGNibGstPmNvb3JkWzBdWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY2Jsay0+Y29vcmRbMV1bMV0gLSBjYmxrLT5jb29yZFsxXVswXSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbmRwb3MsIGNvbXAtPnJvaV9zaGlmdCk7 CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzLT5pc19odGoyaykKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICByZXQgPSBmZl9qcGVnMjAwMF9kZWNvZGVfaHRqMmsocywgY29kc3R5 LCAmdDEsIGNibGssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNibGstPmNvb3JkWzBdWzFdIC0gY2Jsay0+Y29vcmRbMF1bMF0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNibGstPmNvb3JkWzFdWzFdIC0gY2Jsay0+Y29vcmRbMV1bMF0sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ3AsIGNvbXAtPnJv aV9zaGlmdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcmV0ID0gZGVjb2RlX2NibGsocywgY29kc3R5LCAmdDEsIGNibGssCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Jsay0+Y29vcmRbMF1b MV0gLSBjYmxrLT5jb29yZFswXVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjYmxrLT5jb29yZFsxXVsxXSAtIGNibGstPmNvb3JkWzFdWzBdLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhbmRwb3MsIGNvbXAt PnJvaV9zaGlmdCk7CisKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXQpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29kZWQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAg ZWxzZQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMgYi9saWJhdmNvZGVj L2pwZWcyMDAwaHRkZWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5i OTM0ZTgzYTkzCi0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmMK QEAgLTAsMCArMSwxNDUzIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDIyIENhbGViIEV0ZW1l c2kgPGV0ZW1lc2ljYWxlYkBnbWFpbC5jb20+CisgKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg RkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vu c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogRkZtcGVn IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBl ZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5j LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAx IFVTQQorICovCisKKy8qCisgKiBDb3B5cmlnaHQgMjAxOSAtIDIwMjEsIE9zYW11IFdhdGFuYWJl CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt cywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyAqIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo dCBub3RpY2UsIHRoaXMKKyAqICAgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyLgorICoKKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKKyAqICAgIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3Vt ZW50YXRpb24KKyAqICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg ZGlzdHJpYnV0aW9uLgorICoKKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdo dCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUg dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dAorICogICAgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT IEFORCBDT05UUklCVVRPUlMg4oCcQVMgSVPigJ0gQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBM SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF IENPUFlSSUdIVCBIT0xERVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBE SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN QUdFLgorICovCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlICJsaWJhdnV0aWwvYXR0 cmlidXRlcy5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9jb21tb24uaCIKKyNpbmNsdWRlICJsaWJh dnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJqcGVnMjAwMGh0ZGVjLmgiCisjaW5jbHVkZSAi anBlZzIwMDAuaCIKKyNpbmNsdWRlICJqcGVnMjAwMGRlYy5oIgorCisjZGVmaW5lIEoyS19RMSAw CisjZGVmaW5lIEoyS19RMiAxCisKKyNkZWZpbmUgSFRfU0hJRlRfU0lHTUEgMAorI2RlZmluZSBI VF9TSElGVF9TQ0FOIDQKKyNkZWZpbmUgSFRfU0hJRlRfUkVGIDMKKyNkZWZpbmUgSFRfU0hJRlRf UkVGX0lORCAyCisKKy8qIFNlZSBSZWMuIElUVS1UIFQuODAwLCBUYWJsZSAyICovCitjb25zdCBz dGF0aWMgdWludDhfdCBtZWxfZVsxM10gPSB7IDAsIDAsIDAsIDEsIDEsIDEsIDIsIDIsIDIsIDMs IDMsIDQsIDUgfTsKKworc3RhdGljIGNvbnN0IHVpbnQxNl90IGRlY19jeHRfdmxjX3RhYmxlMVsx MDI0XTsKK3N0YXRpYyBjb25zdCB1aW50MTZfdCBkZWNfY3h0X3ZsY190YWJsZTBbMTAyNF07CisK K3R5cGVkZWYgc3RydWN0IFN0YXRlVmFycyB7CisgICAgaW50MzJfdCBwb3M7CisgICAgdWludDMy X3QgYml0czsKKyAgICB1aW50MzJfdCB0bXA7CisgICAgdWludDMyX3QgbGFzdDsKKyAgICB1aW50 OF90IGJpdHNfbGVmdDsKKyAgICB1aW50NjRfdCBiaXRfYnVmOworfSBTdGF0ZVZhcnM7CisKK3R5 cGVkZWYgc3RydWN0IE1lbERlY29kZXJTdGF0ZSB7CisgICAgdWludDhfdCBrOworICAgIHVpbnQ4 X3QgcnVuOworICAgIHVpbnQ4X3Qgb25lOworfSBNZWxEZWNvZGVyU3RhdGU7CisKKy8qKgorICog IEdpdmVuIGEgcHJlY29tcHV0ZWQgYywgY2hlY2tzIHdoZXRoZXIgbiAlIGQgPT0gMC4gYyBpcyBw cmVjb21wdXRlZCBmcm9tIGQKKyAqICB1c2luZyBwcmVjb21wdXRlX2MoKS4KKyAqLworYXZfYWx3 YXlzX2lubGluZQorc3RhdGljIHVpbnQzMl90IGlzX2RpdmlzaWJsZSh1aW50MzJfdCBuLCB1aW50 NjRfdCBjKQoreworICAgIHJldHVybiBuICogYyA8PSBjIC0gMTsKK30KKworLyoqCisgKiAgUHJl Y29tcHV0ZSB0aGUgbnVtYmVyIGMgdXNlZCBieSBpc19kaXZpc2libGUoKS4KKyAqLworYXZfYWx3 YXlzX2lubGluZQorc3RhdGljIHVpbnQ2NF90IHByZWNvbXB1dGVfYyh1aW50MzJfdCBkKQorewor ICAgIHJldHVybiAxICsgKDB4ZmZmZmZmZmZmZmZmZmZmZnVsIC8gZCk7Cit9CisKK3N0YXRpYyB2 b2lkIGpwZWcyMDAwX2luaXRfemVybyhTdGF0ZVZhcnMgKnMpCit7CisgICAgcy0+Yml0c19sZWZ0 ID0gMDsKKyAgICBzLT5iaXRfYnVmICAgPSAwOworICAgIHMtPnRtcCAgICAgICA9IDA7CisgICAg cy0+Yml0cyAgICAgID0gMDsKKyAgICBzLT5wb3MgICAgICAgPSAwOworICAgIHMtPmxhc3QgICAg ICA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIGpwZWcyMDAwX2luaXRfbWVsKFN0YXRlVmFycyAqcywg dWludDMyX3QgUGN1cCkKK3sKKyAgICBqcGVnMjAwMF9pbml0X3plcm8ocyk7CisgICAgcy0+cG9z ID0gUGN1cDsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF9tYWdfcmVmKFN0YXRlVmFy cyAqcywgdWludDMyX3QgTHJlZikKK3sKKyAgICBzLT5wb3MgICAgICAgPSBMcmVmIC0gMjsKKyAg ICBzLT5iaXRzICAgICAgPSAwOworICAgIHMtPmxhc3QgICAgICA9IDB4RkY7CisgICAgcy0+dG1w ICAgICAgID0gMDsKKyAgICBzLT5iaXRzX2xlZnQgPSAwOworICAgIHMtPmJpdF9idWYgICA9IDA7 Cit9CisKK3N0YXRpYyB2b2lkIGpwZWcyMDAwX2luaXRfbWVsX2RlY29kZXIoTWVsRGVjb2RlclN0 YXRlICptZWxfc3RhdGUpCit7CisgICAgbWVsX3N0YXRlLT5rICAgPSAwOworICAgIG1lbF9zdGF0 ZS0+cnVuID0gMDsKKyAgICBtZWxfc3RhdGUtPm9uZSA9IDA7Cit9CisKKy8qKgorICogUmVmaWxs IHRoZSBidWZmZXIgYmFja3dhcmRzIGluIGxpdHRsZSBlbmRpYW4gd2hpbGUgc2tpcHBpbmcgb3Zl ciBzdHVmZmluZworICogYml0cy4gU3R1ZmZpbmcgYml0cyBhcmUgdGhvc2UgdGhhdCBhcHBlYXIg aW4gdGhlIHBvc2l0aW9uIG9mIGFueSBieXRlIHdob3NlCisgKiBMU0JzIGFyZSBhbGwgMSdzIGlm IHRoZSBsYXN0IGNvbnN1bWVkIGJ5dGUgd2FzIGxhcmdlciB0aGFuIDB4OEYuCisgKi8KK3N0YXRp YyBpbnQganBlZzIwMDBfYml0YnVmX3JlZmlsbF9iYWNrd2FyZHMoU3RhdGVWYXJzICpidWZmZXIs IGNvbnN0IHVpbnQ4X3QgKmFycmF5KQoreworICAgIHVpbnQ2NF90IHRtcCA9IDA7CisgICAgaW50 MzJfdCBwb3NpdGlvbiA9IGJ1ZmZlci0+cG9zOworICAgIHVpbnQzMl90IG5ld19iaXRzID0gMzI7 CisKKyAgICBpZiAoYnVmZmVyLT5iaXRzX2xlZnQgPiAzMikKKyAgICAgICAgcmV0dXJuIDA7IC8v IGVub3VnaCBkYXRhLCBubyBuZWVkIHRvIHB1bGwgaW4gbW9yZSBiaXRzCisKKyAgICAvKioKKyAg ICAgKiBXZSBhcmUgcmVhZGluZyBieXRlcyBmcm9tIGVuZCB0byBzdGFydCBhbmQgbmVlZCB0byBo YW5kbGUgYmVpbmcgY2xvc2UgdG8KKyAgICAgKiB0aGUgZW5kLiBTdWJ0cmFjdGluZyBieSA0IG1l YW5zIHdlIHdpbGwgcmVhZCBzb21lIG9mIHRoZSBieXRlcyBvZiB0aGUgTUVMCisgICAgICogYnl0 ZSBzdHJlYW0gc2luY2UgdGhlIE1FTCBieXRlIHN0cmVhbSBlbmRzIGF0IHRoZSBzdGFydCBvZiB0 aGUgVkxDIGJ5dGUKKyAgICAgKiBzdHJlYW0uIFRoaXMgaXMgb2theSBhcyB0aGV5IGFyZSBtYXNr ZWQgYXdheSBzaW5jZSB3ZSBjaGVjayBmb3IgY2FzZXMKKyAgICAgKiB3aGVyZSB0aGF0IG9jY3Vy cyAod2hlbiB0aGUgcG9zaXRpb24gaXMgbGVzcyB0aGFuIDQpLgorICAgICAqLworICAgIHBvc2l0 aW9uIC09IDQ7CisKKyAgICB0bXAgPSBBVl9SQjMyKCZhcnJheVtwb3NpdGlvbiArIDFdKTsKKwor ICAgIGlmIChidWZmZXItPnBvcyA8IDQpeworICAgICAgICAvKiBtYXNrIHVuLW5lZWRlZCBiaXRz IGlmIHdlIGFyZSBjbG9zZSB0byBpbnB1dCBlbmQgKi8KKyAgICAgICAgdWludDY0X3QgbWFzayA9 ICgxdWwgPDwgKGJ1ZmZlci0+cG9zICsgMSkgKiA4KSAtIDE7CisgICAgICAgIHRtcCAmPSBtYXNr OworICAgIH0KKworICAgIC8qKgorICAgICAqICBVbnN0dWZmIGJpdHMuIExvYWQgYSB0ZW1wb3Jh cnkgYnl0ZSwgd2hpY2ggcHJlY2VkZXMgdGhlIHBvc2l0aW9uIHdlCisgICAgICogIGN1cnJlbnRs eSBhdCwgdG8gZW5zdXJlIHRoYXQgd2UgY2FuIGFsc28gdW4tc3R1ZmYgaWYgdGhlIHN0dWZmZWQg Yml0IGlzCisgICAgICogIHRoZSBib3R0b20gbW9zdCBiaXRzLgorICAgICAqLworICAgIHRtcCA8 PD0gODsKKyAgICB0bXAgfD0gYXJyYXlbYnVmZmVyLT5wb3MgKyAxXTsKKworICAgIGlmICgodG1w ICYgMHg3RkZGMDAwMDAwKSA+IDB4N0Y4RjAwMDAwMCkgeworICAgICAgICB0bXAgJj0gMHg3RkZG RkZGRkZGOworICAgICAgICBuZXdfYml0cy0tOworICAgIH0KKyAgICBpZiAoKHRtcCAmIDB4MDA3 RkZGMDAwMCkgPiAweDAwN0Y4RjAwMDApIHsKKyAgICAgICAgdG1wID0gKHRtcCAmIDB4MDA3RkZG RkZGRikgKyAoKHRtcCAmIDB4RkYwMDAwMDAwMCkgPj4gMSk7CisgICAgICAgIG5ld19iaXRzLS07 CisgICAgfQorICAgIGlmICgodG1wICYgMHgwMDAwN0ZGRjAwKSA+IDB4MDAwMDdGOEYwMCkgewor ICAgICAgICB0bXAgPSAodG1wICYgMHgwMDAwN0ZGRkZGKSArICgodG1wICYgMHhGRkZGMDAwMDAw KSA+PiAxKTsKKyAgICAgICAgbmV3X2JpdHMtLTsKKyAgICB9CisgICAgaWYgKCh0bXAgJiAweDAw MDAwMDdGRkYpID4gMHgwMDAwMDA3RjhGKSB7CisgICAgICAgIHRtcCA9ICh0bXAgJiAweDAwMDAw MDdGRkYpICsgKCh0bXAgJiAweEZGRkZGRjAwMDApID4+IDEpOworICAgICAgICBuZXdfYml0cy0t OworICAgIH0KKworICAgIHRtcCA+Pj0gODsgLy8gUmVtb3ZlIHRlbXBvcmFyeSBieXRlIGxvYWRl ZAorCisgICAgLyogQWRkIGJpdHMgdG8gdGhlIE1TQiBvZiB0aGUgYml0IGJ1ZmZlciAqLworICAg IGJ1ZmZlci0+Yml0X2J1ZiB8PSB0bXAgPDwgYnVmZmVyLT5iaXRzX2xlZnQ7CisgICAgYnVmZmVy LT5iaXRzX2xlZnQgKz0gbmV3X2JpdHM7CisgICAgYnVmZmVyLT5wb3MgPSBGRk1BWCgwLCBwb3Np dGlvbik7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICogUmVmaWxsIHRoZSBiaXQtYnVmZmVy IHJlYWRpbmcgbmV3IGJpdHMgZ29pbmcgZm9yd2FyZAorICogaW4gdGhlIHN0cmVhbSB3aGlsZSBz a2lwcGluZyBvdmVyIHN0dWZmZWQgYml0cy4KKyAqLworc3RhdGljIHZvaWQganBlZzIwMDBfYml0 YnVmX3JlZmlsbF9mb3J3YXJkKFN0YXRlVmFycyAqYnVmZmVyLCBjb25zdCB1aW50OF90ICphcnJh eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBs ZW5ndGgpCit7CisgICAgd2hpbGUgKGJ1ZmZlci0+Yml0c19sZWZ0IDwgMzIpIHsKKyAgICAgICAg YnVmZmVyLT50bXAgPSAweEZGOworICAgICAgICBidWZmZXItPmJpdHMgPSAoYnVmZmVyLT5sYXN0 ID09IDB4RkYpID8gNyA6IDg7CisgICAgICAgIGlmIChidWZmZXItPnBvcyA8PSBsZW5ndGgpIHsK KyAgICAgICAgICAgIGJ1ZmZlci0+dG1wID0gYXJyYXlbYnVmZmVyLT5wb3NdOworICAgICAgICAg ICAgYnVmZmVyLT5wb3MgKz0gMTsKKyAgICAgICAgICAgIGJ1ZmZlci0+bGFzdCA9IGJ1ZmZlci0+ dG1wOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlci0+Yml0X2J1ZiB8PSAoKHVpbnQ2NF90KSBi dWZmZXItPnRtcCkgPDwgYnVmZmVyLT5iaXRzX2xlZnQ7CisgICAgICAgIGJ1ZmZlci0+Yml0c19s ZWZ0ICs9IGJ1ZmZlci0+Yml0czsKKyAgICB9Cit9CisKKy8qKgorICogRHJvcHMgYml0cyBmcm9t IGxvd2VyIGJpdHMgaW4gdGhlIGJpdCBidWZmZXIuIGJ1ZiBjb250YWlucyB0aGUgYml0IGJ1ZmZl cnMuCisgKiBuYml0cyBpcyB0aGUgbnVtYmVyIG9mIGJpdHMgdG8gcmVtb3ZlLgorICovCithdl9h bHdheXNfaW5saW5lCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYihT dGF0ZVZhcnMgKmJ1ZiwgdWludDhfdCBuYml0cykKK3sKKyAgICBpZiAoYnVmLT5iaXRzX2xlZnQg PCBuYml0cykgeworICAgICAgICBhdl9sb2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiSW52YWxpZCBi aXQgcmVhZCBvZiAlZCwgYml0cyBpbiBidWZmZXIgYXJlICVkXG4iLCBuYml0cywgYnVmLT5iaXRz X2xlZnQpOworICAgICAgICBhdl9hc3NlcnQwKDApOworICAgIH0KKyAgICBidWYtPmJpdF9idWYg Pj49IG5iaXRzOworICAgIGJ1Zi0+Yml0c19sZWZ0IC09IG5iaXRzOworfQorCisvKioKKyAqIEdl dCBiaXRzIGZyb20gdGhlIGJpdCBidWZmZXIgcmVhZGluZyB0aGVtIGZyb20gdGhlIGxlYXN0IHNp Z25pZmljYW50IGJpdHMKKyAqIG1vdmluZyB0byB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXRzLiBJ biBjYXNlIHRoZXJlIGFyZSBmZXdlciBiaXRzLCByZWZpbGwKKyAqIGZyb20gYnVmIG1vdmluZyBi YWNrd2FyZHMuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50NjRfdCBqcGVnMjAw MF9iaXRidWZfZ2V0X2JpdHNfbHNiKFN0YXRlVmFycyAqYml0X3N0cmVhbSwgdWludDhfdCBuYml0 cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVp bnQ4X3QgKmJ1ZikKK3sKKyAgICB1aW50NjRfdCBiaXRzOworICAgIHVpbnQ2NF90IG1hc2sgPSAo MXVsbCA8PCBuYml0cykgLSAxOworICAgIGlmIChiaXRfc3RyZWFtLT5iaXRzX2xlZnQgPCBuYml0 cykKKyAgICAgICAganBlZzIwMDBfYml0YnVmX3JlZmlsbF9iYWNrd2FyZHMoYml0X3N0cmVhbSwg YnVmKTsKKyAgICBiaXRzID0gYml0X3N0cmVhbS0+Yml0X2J1ZiAmIG1hc2s7CisgICAganBlZzIw MDBfYml0YnVmX2Ryb3BfYml0c19sc2IoYml0X3N0cmVhbSwgbmJpdHMpOworICAgIHJldHVybiBi aXRzOworfQorCisvKioKKyAqIEdldCBiaXRzIGZyb20gdGhlIGJpdCBidWZmZXIgcmVhZGluZyB0 aGVtIGZyb20gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdHMKKyAqIG1vdmluZyB0byB0aGUgbW9z dCBzaWduaWZpY2FudCBiaXRzLiBJbiBjYXNlIHRoZXJlIGFyZSBmZXdlciBiaXRzLCByZWZpbGwg ZnJvbQorICogYnVmIG1vdmluZyBmb3J3YXJkLgorICovCithdl9hbHdheXNfaW5saW5lCitzdGF0 aWMgdWludDY0X3QganBlZzIwMDBfYml0YnVmX2dldF9iaXRzX2xzYl9mb3J3YXJkKFN0YXRlVmFy cyAqYml0X3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDhfdCBuYml0cywgY29uc3QgdWludDhfdCAqYnVmLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBsZW5n dGgpCit7CisgICAgdWludDY0X3QgYml0czsKKyAgICB1aW50NjRfdCBtYXNrID0gKDF1bGwgPDwg bmJpdHMpIC0gMTsKKworICAgIGlmIChiaXRfc3RyZWFtLT5iaXRzX2xlZnQgPD0gbmJpdHMpCisg ICAgICAgIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfZm9yd2FyZChiaXRfc3RyZWFtLCBidWYsIGxl bmd0aCk7CisgICAgYml0cyA9IGJpdF9zdHJlYW0tPmJpdF9idWYgJiBtYXNrOworICAgIGpwZWcy MDAwX2JpdGJ1Zl9kcm9wX2JpdHNfbHNiKGJpdF9zdHJlYW0sIG5iaXRzKTsKKyAgICByZXR1cm4g Yml0czsKK30KKworLyoqCisgKiBMb29rIGFoZWFkIGJpdCBidWZmZXIgd2l0aG91dCBkaXNjYXJk aW5nIGJpdHMuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50NjRfdCBqcGVnMjAw MF9iaXRidWZfcGVla19iaXRzX2xzYihTdGF0ZVZhcnMgKnN0cmVhbSwgdWludDhfdCBuYml0cykK K3sKKyAgICB1aW50NjRfdCBtYXNrID0gKDF1bGwgPDwgbmJpdHMpIC0gMTsKKyAgICByZXR1cm4g c3RyZWFtLT5iaXRfYnVmICYgbWFzazsKK30KKworc3RhdGljIHZvaWQganBlZzIwMDBfaW5pdF92 bGMoU3RhdGVWYXJzICpzLCB1aW50MzJfdCBMY3VwLCB1aW50MzJfdCBQY3VwLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqRGN1cCkKK3sKKyAgICBzLT5iaXRz X2xlZnQgPSAwOworICAgIHMtPmJpdF9idWYgICA9IDA7CisgICAgcy0+cG9zICAgICAgID0gTGN1 cCAtIDIgLSBQY3VwOworICAgIHMtPmxhc3QgICAgICA9IERjdXBbTGN1cCAtIDJdOworICAgIHMt PnRtcCAgICAgICA9IChzLT5sYXN0KSA+PiA0OworICAgIHMtPmJpdHMgICAgICA9ICgocy0+dG1w ICYgNykgPCA3KSA/IDQgOiAzOworCisgICAganBlZzIwMDBfYml0YnVmX3JlZmlsbF9iYWNrd2Fy ZHMocywgRGN1cCArIFBjdXApOworICAgIGpwZWcyMDAwX2JpdGJ1Zl9kcm9wX2JpdHNfbHNiKHMs IDQpOworfQorCisvKioKKyAqIERlY29kZSBwcmVmaXggY29kZXMgZm9yIFZMQyBzZWdtZW50LiBT ZWUgUmVjLiBJVFUtVCBULjgxNCwgNy4zLjUuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRp YyBpbnQgIGpwZWcyMDAwX2RlY29kZV9jdHhfdmxjKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRl eHQgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZVZhcnMgKnZs Y19zdHJlYW0sIGNvbnN0IHVpbnQxNl90ICp0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKkRjdXAsIHVpbnQ4X3QgKnNpZ19wYXQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICpyZXNfb2ZmLCB1aW50OF90 ICplbWJfcGF0X2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90 ICplbWJfcGF0XzEsIHVpbnQ4X3QgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgUGN1cCwgdWludDE2X3QgY29udGV4dCkKK3sKKyAgICB1aW50MzJfdCB2 YWx1ZTsKKyAgICB1aW50OF90IGxlbjsKKyAgICB1aW50NjRfdCBpbmRleDsKKyAgICB1aW50NjRf dCBjb2RlX3dvcmQ7CisKKyAgICBqcGVnMjAwMF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyh2bGNf c3RyZWFtLCBEY3VwICsgUGN1cCk7CisKKyAgICBjb2RlX3dvcmQgPSB2bGNfc3RyZWFtLT5iaXRf YnVmICYgMHg3ZjsKKyAgICBpbmRleCA9IGNvZGVfd29yZCArIChjb250ZXh0IDw8IDcpOworCisg ICAgLyogVGhlIEN4dFZMQyB0YWJsZSBoYXMgMTAyNCBlbnRyaWVzLiAqLworICAgIGF2X2Fzc2Vy dDAoaW5kZXggPCAxMDI0KTsKKworICAgIHZhbHVlID0gdGFibGVbaW5kZXhdOworCisgICAgbGVu ID0gKHZhbHVlICYgMHgwMDBGKSA+PiAxOworCisgICAgcmVzX29mZltwb3NdID0gKHVpbnQ4X3Qp ICh2YWx1ZSAmIDEpOworICAgIHNpZ19wYXRbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHgw MEYwKSA+PiA0KTsKKyAgICBlbWJfcGF0X2tbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHgw RjAwKSA+PiA4KTsKKyAgICBlbWJfcGF0XzFbcG9zXSA9ICh1aW50OF90KSAoKHZhbHVlICYgMHhG MDAwKSA+PiAxMik7CisKKyAgICBqcGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3Ry ZWFtLCBsZW4pOworICAgIHJldHVybiAwOworfQorCisvKioKKyAqIERlY29kZSB2YXJpYWJsZSBs ZW5ndGggdS12bGMgcHJlZml4LiBTZWUgZGVjb2RlVVByZWZpeCBwcm9jZWR1cmUgYXQgUmVjLgor ICogSVRVLVQgVC44MTQsIDcuMy42LgorICovCithdl9hbHdheXNfaW5saW5lCitzdGF0aWMgdWlu dDhfdCB2bGNfZGVjb2RlX3VfcHJlZml4KFN0YXRlVmFycyAqdmxjX3N0cmVhbSwgY29uc3QgdWlu dDhfdCAqcmVmaWxsX2FycmF5KQoreworICAgIHN0YXRpYyBjb25zdCB1aW50OF90IHJldHVybl92 YWx1ZVs4XSA9IHsgNSwgMSwgMiwgMSwgMywgMSwgMiwgMSB9OworICAgIHN0YXRpYyBjb25zdCB1 aW50OF90IGRyb3BfYml0c1s4XSAgICA9IHsgMywgMSwgMiwgMSwgMywgMSwgMiwgMSB9OworCisg ICAgdWludDhfdCBiaXRzOworCisgICAgaWYgKHZsY19zdHJlYW0tPmJpdHNfbGVmdCA8IDMpCisg ICAgICAgIGpwZWcyMDAwX2JpdGJ1Zl9yZWZpbGxfYmFja3dhcmRzKHZsY19zdHJlYW0sIHJlZmls bF9hcnJheSk7CisKKyAgICBiaXRzID0ganBlZzIwMDBfYml0YnVmX3BlZWtfYml0c19sc2Iodmxj X3N0cmVhbSwgMyk7CisKKyAgICBqcGVnMjAwMF9iaXRidWZfZHJvcF9iaXRzX2xzYih2bGNfc3Ry ZWFtLCBkcm9wX2JpdHNbYml0c10pOworICAgIHJldHVybiByZXR1cm5fdmFsdWVbYml0c107Cit9 CisKKy8qKgorICogRGVjb2RlIHZhcmlhYmxlIGxlbmd0aCB1LXZsYyBzdWZmaXguIFNlZSBkZWNv ZGVVU3VmZml4IHByb2NlZHVyZSBhdCBSZWMuCisgKiBJVFUtVCBULjgxNCwgNy4zLjYuCisgKi8K K2F2X2Fsd2F5c19pbmxpbmUKK3N0YXRpYyB1aW50OF90IHZsY19kZWNvZGVfdV9zdWZmaXgoU3Rh dGVWYXJzICp2bGNfc3RyZWFtLCB1aW50OF90IHN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcmVmaWxsX2FycmF5KQoreworICAgIHN0YXRp YyBjb25zdCBpbnQgbWFza1tdICAgICAgPSB7IDEsIDMxIH07CisgICAgc3RhdGljIGNvbnN0IGlu dCBkcm9wX2JpdHNbXSA9IHsgMSwgNSAgfTsKKworICAgIHVpbnQ4X3QgYml0czsKKyAgICBpbnQg Y29uZCA9IHN1ZmZpeCAhPSAzOworICAgIGlmIChzdWZmaXggPCAzKQorICAgICAgICByZXR1cm4g MDsKKworICAgIGlmICh2bGNfc3RyZWFtLT5iaXRzX2xlZnQgPCA1KQorICAgICAgICBqcGVnMjAw MF9iaXRidWZfcmVmaWxsX2JhY2t3YXJkcyh2bGNfc3RyZWFtLCByZWZpbGxfYXJyYXkpOworCisg ICAgYml0cyA9IGpwZWcyMDAwX2JpdGJ1Zl9wZWVrX2JpdHNfbHNiKHZsY19zdHJlYW0sIDUpOwor CisgICAganBlZzIwMDBfYml0YnVmX2Ryb3BfYml0c19sc2IodmxjX3N0cmVhbSwgZHJvcF9iaXRz W2NvbmRdKTsKKyAgICByZXR1cm4gYml0cyAmIG1hc2tbY29uZF07Cit9CisKKy8qKgorICogRGVj b2RlIHUtdmxjIGV4dGVuc2lvbiB2YWx1ZXMuIFNlZSBkZWNvZGVVRXh0ZW5zaW9uIHByb2NlZHVy ZSBhdCBSZWMuIElUVS1UCisgKiBULjgxNCwgNy4zLjYuCisgKi8KK2F2X2Fsd2F5c19pbmxpbmUK K3N0YXRpYyB1aW50OF90IHZsY19kZWNvZGVfdV9leHRlbnNpb24oU3RhdGVWYXJzICp2bGNfc3Ry ZWFtLCB1aW50OF90IHN1ZmZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdWludDhfdCAqcmVmaWxsX2FycmF5KQoreworICAgIHJldHVybiBqcGVnMjAwMF9i aXRidWZfZ2V0X2JpdHNfbHNiKHZsY19zdHJlYW0sIDQgKiAoc3VmZml4ID49IDI4KSwgcmVmaWxs X2FycmF5KTsKK30KKworLyoqCisgKiBNYWduaXR1ZGUgYW5kIFNpZ24gZGVjb2RlIHByb2NlZHVy ZXMuIFNlZSBkZWNvZGVNYWdTZ25WYWx1ZSBwcm9jZWR1cmUgYXQgUmVjLgorICogSVRVLVQgVC44 MTQsIDcuMy44LgorICovCithdl9hbHdheXNfaW5saW5lCitzdGF0aWMgaW50MzJfdCBqcGVnMjAw MF9kZWNvZGVfbWFnX3NnbihTdGF0ZVZhcnMgKm1hZ19zZ25fc3RyZWFtLCBpbnQzMl90IG1fbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaV9uLCBjb25z dCB1aW50OF90ICpidWYsIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAgICBpbnQzMl90IHZhbCA9IDA7 CisgICAgaWYgKG1fbiA+IDApIHsKKyAgICAgICAgdmFsID0ganBlZzIwMDBfYml0YnVmX2dldF9i aXRzX2xzYl9mb3J3YXJkKG1hZ19zZ25fc3RyZWFtLG1fbixidWYsbGVuZ3RoKTsKKyAgICAgICAg dmFsICs9IChpX24gPDwgbV9uKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbDsKK30KKworYXZfYWx3 YXlzX2lubGluZQorc3RhdGljIHZvaWQgcmVjb3Zlcl9tYWdfc2duKFN0YXRlVmFycyAqbWFnX3Nn biwgdWludDhfdCBwb3MsIHVpbnQxNl90IHEsIGludDMyX3QgbV9uWzJdLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludDMyX3Qga25vd25fMVsyXSwgY29uc3QgdWludDhfdCBlbWJfcGF0 XzFbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB2WzJdWzRdLCBpbnQz Ml90IG1bMl1bNF0sIHVpbnQ4X3QgKkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgKm11X24sIGNvbnN0IHVpbnQ4X3QgKkRjdXAsIHVpbnQzMl90IFBjdXAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgcExTQikKK3sKKyAgICBmb3IgKGludCBpID0g MDsgaSA8IDQ7IGkrKykgeworICAgICAgICBpbnQzMl90IG4gPSA0ICogcSArIGk7CisgICAgICAg IG1fbltwb3NdID0gbVtwb3NdW2ldOworICAgICAgICBrbm93bl8xW3Bvc10gPSAoZW1iX3BhdF8x W3Bvc10gPj4gaSkgJiAxOworICAgICAgICB2W3Bvc11baV0gPSBqcGVnMjAwMF9kZWNvZGVfbWFn X3NnbihtYWdfc2duLCBtX25bcG9zXSwga25vd25fMVtwb3NdLCBEY3VwLCBQY3VwKTsKKworICAg ICAgICBpZiAobV9uW3Bvc10gIT0gMCkgeworICAgICAgICAgICAgRVtuXSA9IDMyIC0gZmZfY2x6 KHZbcG9zXVtpXSB8IDEpOworICAgICAgICAgICAgbXVfbltuXSA9ICh2W3Bvc11baV0gPj4gMSkg KyAxOworICAgICAgICAgICAgbXVfbltuXSA8PD0gcExTQjsKKyAgICAgICAgICAgIG11X25bbl0g fD0gKCh1aW50MzJfdCkgKHZbcG9zXVtpXSAmIDEpKSA8PCAzMTsgLy8gc2lnbiBiaXQuCisgICAg ICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQganBlZzIwMDBfaW1wb3J0X2JpdChTdGF0ZVZh cnMgKnN0cmVhbSwgY29uc3QgdWludDhfdCAqYXJyYXksIHVpbnQzMl90IGxlbmd0aCkKK3sKKyAg ICBpbnQgY29uZCA9IHN0cmVhbS0+cG9zIDw9IGxlbmd0aDsKKyAgICBpbnQgcG9zID0gRkZNSU4o c3RyZWFtLT5wb3MsIGxlbmd0aCk7CisgICAgaWYgKHN0cmVhbS0+Yml0cyA9PSAwKSB7CisgICAg ICAgIHN0cmVhbS0+Yml0cyA9IChzdHJlYW0tPnRtcCA9PSAweEZGKSA/IDcgOiA4OworICAgICAg ICBzdHJlYW0tPnBvcyArPSBjb25kOworICAgICAgICBzdHJlYW0tPnRtcCA9IGNvbmQgPyBhcnJh eVtwb3NdIDogMHhGRjsKKyAgICB9CisgICAgc3RyZWFtLT5iaXRzIC09IDE7CisgICAgcmV0dXJu IChzdHJlYW0tPnRtcCA+PiBzdHJlYW0tPmJpdHMpICYgMTsKK30KKworc3RhdGljIGludCBqcGVn MjAwMF9wZWVrX2JpdChTdGF0ZVZhcnMgKnN0cmVhbSwgY29uc3QgdWludDhfdCAqYXJyYXksIHVp bnQzMl90IGxlbmd0aCkKK3sKKyAgICBpZiAoc3RyZWFtLT5iaXRzID09IDApIHsKKyAgICAgICAg aW50IGNvbmQgPSBzdHJlYW0tPnBvcyA8PSBsZW5ndGg7CisgICAgICAgIGludCBwb3MgPSBGRk1J TihzdHJlYW0tPnBvcywgbGVuZ3RoKTsKKyAgICAgICAgc3RyZWFtLT5iaXRzID0gKHN0cmVhbS0+ dG1wID09IDB4RkYpID8gNyA6IDg7CisgICAgICAgIHN0cmVhbS0+cG9zICs9IGNvbmQ7CisgICAg ICAgIHN0cmVhbS0+dG1wID0gY29uZCA/IGFycmF5W3Bvc10gOiAweEZGOworICAgIH0KKyAgICBy ZXR1cm4gKHN0cmVhbS0+dG1wID4+IHN0cmVhbS0+Yml0cykgJiAxOworfQorCitzdGF0aWMgaW50 IGpwZWcyMDAwX2RlY29kZV9tZWxfc3ltKE1lbERlY29kZXJTdGF0ZSAqbWVsX3N0YXRlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZVZhcnMgKm1lbF9zdHJlYW0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKkRjdXAsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IExjdXApCit7CisKKyAg ICBpZiAobWVsX3N0YXRlLT5ydW4gPT0gMCAmJiBtZWxfc3RhdGUtPm9uZSA9PSAwKSB7CisgICAg ICAgIHVpbnQ4X3QgZXZhbDsKKyAgICAgICAgdWludDhfdCBiaXQ7CisKKyAgICAgICAgZXZhbCA9 IG1lbF9lW21lbF9zdGF0ZS0+a107CisgICAgICAgIGJpdCA9IGpwZWcyMDAwX2ltcG9ydF9iaXQo bWVsX3N0cmVhbSwgRGN1cCwgTGN1cCk7CisgICAgICAgIGlmIChiaXQgPT0gMSkgeworICAgICAg ICAgICAgbWVsX3N0YXRlLT5ydW4gPSAxIDw8IGV2YWw7CisgICAgICAgICAgICBtZWxfc3RhdGUt PmsgPSBGRk1JTigxMiwgbWVsX3N0YXRlLT5rICsgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICBtZWxfc3RhdGUtPnJ1biA9IDA7CisgICAgICAgICAgICB3aGlsZSAoZXZhbCA+IDAp IHsKKyAgICAgICAgICAgICAgICBiaXQgPSBqcGVnMjAwMF9pbXBvcnRfYml0KG1lbF9zdHJlYW0s IERjdXAsIExjdXApOworICAgICAgICAgICAgICAgIG1lbF9zdGF0ZS0+cnVuID0gKDIgKiAobWVs X3N0YXRlLT5ydW4pKSArIGJpdDsKKyAgICAgICAgICAgICAgICBldmFsIC09IDE7CisgICAgICAg ICAgICB9CisgICAgICAgICAgICBtZWxfc3RhdGUtPmsgPSBGRk1BWCgwLCBtZWxfc3RhdGUtPmsg LSAxKTsKKyAgICAgICAgICAgIG1lbF9zdGF0ZS0+b25lID0gMTsKKyAgICAgICAgfQorICAgIH0K KyAgICBpZiAobWVsX3N0YXRlLT5ydW4gPiAwKSB7CisgICAgICAgIG1lbF9zdGF0ZS0+cnVuIC09 IDE7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAgICAgIG1lbF9zdGF0ZS0+ b25lID0gMDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCisvKioKKyAqIE1hZ3JlZiBk ZWNvZGluZyBwcm9jZWR1cmVzLgorICovCithdl9hbHdheXNfaW5saW5lCitzdGF0aWMgaW50IGpw ZWcyMDAwX2ltcG9ydF9tYWdyZWZfYml0KFN0YXRlVmFycyAqc3RyZWFtLCBjb25zdCB1aW50OF90 ICphcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg bGVuZ3RoKQoreworICAgIHJldHVybiBqcGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiKHN0cmVh bSwgMSwgYXJyYXkpOworfQorCisvKioKKyAqIFNpZ25hbCBFTUIgZGVjb2RlLgorICovCitzdGF0 aWMgaW50IGpwZWcyMDAwX2RlY29kZV9zaWdfZW1iKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRl eHQgKnMsIE1lbERlY29kZXJTdGF0ZSAqbWVsX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTdGF0ZVZhcnMgKm1lbF9zdHJlYW0sIFN0YXRlVmFycyAqdmxjX3N0cmVh bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QgKnZs Y190YWJsZSwgY29uc3QgdWludDhfdCAqRGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDhfdCAqc2lnX3BhdCwgdWludDhfdCAqcmVzX29mZiwgdWludDhfdCAqZW1i X3BhdF9rLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90ICplbWJf cGF0XzEsIHVpbnQ4X3QgcG9zLCB1aW50MTZfdCBjb250ZXh0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1aW50MzJfdCBMY3VwLCB1aW50MzJfdCBQY3VwKQoreworICAgIGlm IChjb250ZXh0ID09IDApIHsKKyAgICAgICAgdWludDhfdCBzeW07CisgICAgICAgIHN5bSA9IGpw ZWcyMDAwX2RlY29kZV9tZWxfc3ltKG1lbF9zdGF0ZSwgbWVsX3N0cmVhbSwgRGN1cCwgTGN1cCk7 CisgICAgICAgIGlmIChzeW0gPT0gMCkgeworICAgICAgICAgICAgc2lnX3BhdFtwb3NdID0gMDsK KyAgICAgICAgICAgIHJlc19vZmZbcG9zXSA9IDA7CisgICAgICAgICAgICBlbWJfcGF0X2tbcG9z XSA9IDA7CisgICAgICAgICAgICBlbWJfcGF0XzFbcG9zXSA9IDA7CisgICAgICAgICAgICByZXR1 cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ganBlZzIwMDBfZGVjb2RlX2N0eF92 bGMocywgdmxjX3N0cmVhbSwgdmxjX3RhYmxlLCBEY3VwLCBzaWdfcGF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZXNfb2ZmLCBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgcG9z LCBQY3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0KTsKK30K KworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIGludCBqcGVnMjAwMF9nZXRfc3RhdGUoaW50IHgx LCBpbnQgeDIsIGludCB3aWR0aCwgaW50IHNoaWZ0X2J5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgdWludDhfdCAqYmxvY2tfc3RhdGVzKQoreworICAgIHJldHVybiAoYmxv Y2tfc3RhdGVzWyh4MSArIDEpICogKHdpZHRoICsgMikgKyAoeDIgKyAxKV0gPj4gc2hpZnRfYnkp ICYgMTsKK30KKworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIHZvaWQganBlZzIwMDBfbW9kaWZ5 X3N0YXRlKGludCB4MSwgaW50IHgyLCBpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgdmFsdWUsIHVpbnQ4X3QgKmJsb2NrX3N0YXRlcykKK3sKKyAgICBibG9j a19zdGF0ZXNbKHgxICsgMSkgKiAod2lkdGggKyAyKSArICh4MiArIDEpXSB8PSB2YWx1ZTsKK30K KworYXZfYWx3YXlzX2lubGluZQorc3RhdGljIGludCBqcGVnMjAwMF9kZWNvZGVfaHRfY2xlYW51 cF9zZWdtZW50KGNvbnN0IEpwZWcyMDAwRGVjb2RlckNvbnRleHQgKnMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnBlZzIwMDBDYmxrICpjYmxrLCBKcGVn MjAwMFQxQ29udGV4dCAqdDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTWVsRGVjb2RlclN0YXRlICptZWxfc3RhdGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGVWYXJzICptZWxfc3RyZWFtLCBTdGF0ZVZh cnMgKnZsY19zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU3RhdGVWYXJzICptYWdfc2duX3N0cmVhbSwgY29uc3QgdWludDhfdCAqRGN1cCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBMY3Vw LCB1aW50MzJfdCBQY3VwLCB1aW50OF90IHBMU0IsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQzMl90ICpzYW1w bGVfYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVp bnQ4X3QgKmJsb2NrX3N0YXRlcykKK3sKKyAgICB1aW50MTZfdCBxICAgICAgICAgICAgICAgICAg ICAgID0gMDsgICAgIC8vIFJlcHJlc2VudHMgY3VycmVudCBxdWFkIHBvc2l0aW9uCisgICAgdWlu dDE2X3QgcTEsIHEyOworICAgIHVpbnQxNl90IGNvbnRleHQxLCBjb250ZXh0MjsKKyAgICB1aW50 MTZfdCBjb250ZXh0ICAgICAgICAgICAgICAgID0gMDsKKworICAgIHVpbnQ4X3Qgc2lnX3BhdFsy XSAgICAgICAgICAgICAgPSB7IDAgfTsgLy8gc2lnbmlmaWNhbmNlIHBhdHRlcm4KKyAgICB1aW50 OF90IHJlc19vZmZbMl0gICAgICAgICAgICAgID0geyAwIH07IC8vIHJlc2lkdWFsIG9mZnNldAor ICAgIHVpbnQ4X3QgZW1iX3BhdF9rWzJdICAgICAgICAgICAgPSB7IDAgfTsgLy8gZXhwb25lbnQg TWF4IEJvdW5kIHBhdHRlcm4gSworICAgIHVpbnQ4X3QgZW1iX3BhdF8xWzJdICAgICAgICAgICAg PSB7IDAgfTsgLy8gZXhwb25lbnQgTWF4IEJvdW5kIHBhdHRlcm4gMQorICAgIHVpbnQ4X3QgZ2Ft bWFbMl0gICAgICAgICAgICAgICAgPSB7IDAgfTsKKworICAgIHVpbnQ4X3QgRV9uWzJdICAgICAg ICAgICAgICAgICAgPSB7IDAgfTsKKyAgICB1aW50OF90IEVfbmVbMl0gICAgICAgICAgICAgICAg ID0geyAwIH07CisgICAgdWludDhfdCBFX253WzJdICAgICAgICAgICAgICAgICA9IHsgMCB9Owor ICAgIHVpbnQ4X3QgRV9uZlsyXSAgICAgICAgICAgICAgICAgPSB7IDAgfTsKKworICAgIHVpbnQ4 X3QgbWF4X2VbMl0gICAgICAgICAgICAgICAgPSB7IDAgfTsKKyAgICB1aW50OF90IHVfcGZ4WzJd ICAgICAgICAgICAgICAgID0geyAwIH07CisgICAgdWludDhfdCB1X3NmeFsyXSAgICAgICAgICAg ICAgICA9IHsgMCB9OworICAgIHVpbnQ4X3QgdV9leHRbMl0gICAgICAgICAgICAgICAgPSB7IDAg fTsKKworICAgIGludDMyX3QgdVsyXSAgICAgICAgICAgICAgICAgICAgPSB7IDAgfTsKKyAgICBp bnQzMl90IFVbMl0gICAgICAgICAgICAgICAgICAgID0geyAwIH07IC8vIGV4cG9uZW50IGJvdW5k CisgICAgaW50MzJfdCBtX25bMl0gICAgICAgICAgICAgICAgICA9IHsgMCB9OworICAgIGludDMy X3Qga25vd25fMVsyXSAgICAgICAgICAgICAgPSB7IDAgfTsKKworICAgIGludDMyX3QgbVsyXVs0 XSAgICAgICAgICAgICAgICAgPSB7IDAgfTsKKyAgICBpbnQzMl90IHZbMl1bNF0gICAgICAgICAg ICAgICAgID0geyAwIH07CisKKyAgICB1aW50OF90IGthcHBhWzJdICAgICAgICAgICAgICAgID0g eyAxLCAxIH07CisKKyAgICBpbnQgcmV0ICAgICAgICAgICAgICAgICAgICAgICAgID0gMDsKKwor ICAgIGludCBzcDsKKworICAgIHVpbnQ2NF90IGM7CisKKyAgICB1aW50OF90ICpzaWdtYTsKKyAg ICB1aW50MzJfdCAqbXU7CisKKyAgICBjb25zdCB1aW50OF90ICp2bGNfYnVmID0gRGN1cCArIFBj dXA7CisKKyAgICAvKiBjb252ZXJ0IHRvIHJhc3Rlci1zY2FuICovCisgICAgY29uc3QgdWludDE2 X3QgaXNfYm9yZGVyX3ggPSB3aWR0aCAlIDI7CisgICAgY29uc3QgdWludDE2X3QgaXNfYm9yZGVy X3kgPSBoZWlnaHQgJSAyOworCisgICAgY29uc3QgdWludDE2X3QgcXVhZF93aWR0aCAgPSBmZl9q cGVnMjAwMF9jZWlsZGl2cG93Mih3aWR0aCwgMSk7CisgICAgY29uc3QgdWludDE2X3QgcXVhZF9o ZWlnaHQgPSBmZl9qcGVnMjAwMF9jZWlsZGl2cG93MihoZWlnaHQsIDEpOworCisgICAgc2l6ZV90 IGJ1Zl9zaXplID0gNCAqIHF1YWRfd2lkdGggKiBxdWFkX2hlaWdodDsKKworICAgIHVpbnQ4X3Qg KnNpZ21hX24gPSBhdl9jYWxsb2MoYnVmX3NpemUsIHNpemVvZih1aW50OF90KSk7CisgICAgdWlu dDhfdCAqRSAgICAgICA9IGF2X2NhbGxvYyhidWZfc2l6ZSwgc2l6ZW9mKHVpbnQ4X3QpKTsKKyAg ICB1aW50MzJfdCAqbXVfbiAgID0gYXZfY2FsbG9jKGJ1Zl9zaXplLCBzaXplb2YodWludDMyX3Qp KTsKKworICAgIGlmICghc2lnbWFfbiB8fCAhRSB8fCAhbXVfbikgeworICAgICAgICByZXQgPSBB VkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisKKyAgICBzaWdtYSA9 IHNpZ21hX247CisgICAgbXUgPSBtdV9uOworCisgICAgd2hpbGUgKHEgPCBxdWFkX3dpZHRoIC0g MSkgeworICAgICAgICBxMSA9IHE7CisgICAgICAgIHEyID0gcTEgKyAxOworCisgICAgICAgIGlm ICgocmV0ID0ganBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFt LCB2bGNfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlY19jeHRfdmxjX3RhYmxlMCwgRGN1cCwgc2lnX3BhdCwgcmVzX29mZiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwgSjJL X1ExLCBjb250ZXh0LCBMY3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBjdXApKSA8IDApCisgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMSArIGld ID0gKHNpZ19wYXRbSjJLX1ExXSA+PiBpKSAmIDE7CisKKyAgICAgICAgLyogY2FsY3VsYXRlIGNv bnRleHQgKi8KKyAgICAgICAgY29udGV4dCAgPSBzaWdtYV9uWzQgKiBxMV07ICAgICAgICAgICAv LyBmCisgICAgICAgIGNvbnRleHQgfD0gc2lnbWFfbls0ICogcTEgKyAxXTsgICAgICAgLy8gc2YK KyAgICAgICAgY29udGV4dCArPSBzaWdtYV9uWzQgKiBxMSArIDJdIDw8IDE7ICAvLyB3IDw8IDEK KyAgICAgICAgY29udGV4dCArPSBzaWdtYV9uWzQgKiBxMSArIDNdIDw8IDI7CisKKyAgICAgICAg aWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfc2lnX2VtYihzLCBtZWxfc3RhdGUsIG1lbF9zdHJl YW0sIHZsY19zdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVjX2N4dF92bGNfdGFibGUwLCBEY3VwLCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBK MktfUTIsIGNvbnRleHQsIExjdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUGN1cCkpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZnJlZTsKKworICAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgIHNpZ21hX25bNCAqIHEyICsg aV0gPSAoc2lnX3BhdFtKMktfUTJdID4+IGkpICYgMTsKKworICAgICAgICAvKiBjYWxjdWxhdGUg Y29udGV4dCBmb3IgdGhlIG5leHQgcXVhZCAqLworICAgICAgICBjb250ZXh0ICA9IHNpZ21hX25b NCAqIHEyXTsgICAgICAgICAgIC8vIGYKKyAgICAgICAgY29udGV4dCB8PSBzaWdtYV9uWzQgKiBx MiArIDFdOyAgICAgICAvLyBzZgorICAgICAgICBjb250ZXh0ICs9IHNpZ21hX25bNCAqIHEyICsg Ml0gPDwgMTsgIC8vIHcgPDwgMQorICAgICAgICBjb250ZXh0ICs9IHNpZ21hX25bNCAqIHEyICsg M10gPDwgMjsgIC8vIHN3IDw8IDIKKworICAgICAgICB1WzBdID0gMDsKKyAgICAgICAgdVsxXSA9 IDA7CisKKyAgICAgICAganBlZzIwMDBfYml0YnVmX3JlZmlsbF9iYWNrd2FyZHModmxjX3N0cmVh bSwgdmxjX2J1Zik7CisKKyAgICAgICAgaWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxICYmIHJlc19v ZmZbSjJLX1EyXSA9PSAxKSB7CisKKyAgICAgICAgICAgIGlmIChqcGVnMjAwMF9kZWNvZGVfbWVs X3N5bShtZWxfc3RhdGUsIG1lbF9zdHJlYW0sIERjdXAsIExjdXApID09IDEpIHsKKworICAgICAg ICAgICAgICAgIHVfcGZ4W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0s IHZsY19idWYpOworICAgICAgICAgICAgICAgIHVfcGZ4W0oyS19RMl0gPSB2bGNfZGVjb2RlX3Vf cHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOworCisgICAgICAgICAgICAgICAgdV9zZnhbSjJL X1ExXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1ExXSwgdmxj X2J1Zik7CisgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZm aXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1EyXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAg ICB1X2V4dFtKMktfUTFdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3Nm eFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTJdID0gdmxj X2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTJdLCB2bGNfYnVmKTsK KworICAgICAgICAgICAgICAgIHVbSjJLX1ExXSA9IDIgKyB1X3BmeFtKMktfUTFdICsgdV9zZnhb SjJLX1ExXSArICh1X2V4dFtKMktfUTFdICogNCk7CisgICAgICAgICAgICAgICAgdVtKMktfUTJd ID0gMiArIHVfcGZ4W0oyS19RMl0gKyB1X3NmeFtKMktfUTJdICsgKHVfZXh0W0oyS19RMl0gKiA0 KTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1X3BmeFtKMktfUTFd ID0gdmxjX2RlY29kZV91X3ByZWZpeCh2bGNfc3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAg ICAgICAgIGlmICh1X3BmeFtKMktfUTFdID4gMikgeworICAgICAgICAgICAgICAgICAgICB1W0oy S19RMl0gPSBqcGVnMjAwMF9iaXRidWZfZ2V0X2JpdHNfbHNiKHZsY19zdHJlYW0sIDEsIHZsY19i dWYpICsgMTsKKyAgICAgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVf dV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbSjJLX1ExXSwgdmxjX2J1Zik7CisgICAgICAgICAg ICAgICAgICAgIHVfZXh0W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJl YW0sIHVfc2Z4W0oyS19RMV0sIHZsY19idWYpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICAgICAgICAgIHVfcGZ4W0oyS19RMl0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZs Y19zdHJlYW0sIHZsY19idWYpOworICAgICAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0g dmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsK KyAgICAgICAgICAgICAgICAgICAgdV9zZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgo dmxjX3N0cmVhbSwgdV9wZnhbSjJLX1EyXSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgICAg IHVfZXh0W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4 W0oyS19RMV0sIHZsY19idWYpOworICAgICAgICAgICAgICAgICAgICB1X2V4dFtKMktfUTJdID0g dmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTJdLCB2bGNfYnVm KTsKKyAgICAgICAgICAgICAgICAgICAgdVtKMktfUTJdID0gdV9wZnhbSjJLX1EyXSArIHVfc2Z4 W0oyS19RMl0gKyAodV9leHRbSjJLX1EyXSAqIDQpOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgICAvKiBTZWUgUmVjLiBJVFUtVCBULjgxNCwgNy4zLjYoMykgKi8KKyAgICAgICAg ICAgICAgICB1W0oyS19RMV0gPSB1X3BmeFtKMktfUTFdICsgdV9zZnhbSjJLX1ExXSArICh1X2V4 dFtKMktfUTFdICogNCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlmIChyZXNf b2ZmW0oyS19RMV0gPT0gMSB8fCByZXNfb2ZmW0oyS19RMl0gPT0gMSkgeworICAgICAgICAgICAg dWludDhfdCBwb3MgPSByZXNfb2ZmW0oyS19RMV0gPT0gMSA/IDAgOiAxOworICAgICAgICAgICAg dV9wZnhbcG9zXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7Cisg ICAgICAgICAgICB1X3NmeFtwb3NdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1 X3BmeFtwb3NdLCB2bGNfYnVmKTsKKyAgICAgICAgICAgIHVfZXh0W3Bvc10gPSB2bGNfZGVjb2Rl X3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W3Bvc10sIHZsY19idWYpOworICAgICAgICAg ICAgdVtwb3NdID0gdV9wZnhbcG9zXSArIHVfc2Z4W3Bvc10gKyAodV9leHRbcG9zXSAqIDQpOwor ICAgICAgICB9CisgICAgICAgIFVbSjJLX1ExXSA9IGthcHBhW0oyS19RMV0gKyB1W0oyS19RMV07 CisgICAgICAgIFVbSjJLX1EyXSA9IGthcHBhW0oyS19RMl0gKyB1W0oyS19RMl07CisKKyAgICAg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspIHsKKyAgICAgICAgICAgIG1bSjJLX1ExXVtp XSA9IHNpZ21hX25bNCAqIHExICsgaV0gKiBVW0oyS19RMV0gLSAoKGVtYl9wYXRfa1tKMktfUTFd ID4+IGkpICYgMSk7CisgICAgICAgICAgICBtW0oyS19RMl1baV0gPSBzaWdtYV9uWzQgKiBxMiAr IGldICogVVtKMktfUTJdIC0gKChlbWJfcGF0X2tbSjJLX1EyXSA+PiBpKSAmIDEpOworICAgICAg ICB9CisKKyAgICAgICAgcmVjb3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTEsIHEx LCBtX24sIGtub3duXzEsIGVtYl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAg IEUsIG11X24sIERjdXAsIFBjdXAsIHBMU0IpOworCisgICAgICAgIHJlY292ZXJfbWFnX3Nnbiht YWdfc2duX3N0cmVhbSwgSjJLX1EyLCBxMiwgbV9uLCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0s CisgICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKwor ICAgICAgICBxICs9IDI7IC8vIE1vdmUgdG8gdGhlIG5leHQgcXVhZCBwYWlyCisgICAgfQorCisg ICAgaWYgKHF1YWRfd2lkdGggJSAyID09IDEpIHsKKyAgICAgICAgcTEgPSBxOworCisgICAgICAg IGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3Ry ZWFtLCB2bGNfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlY19jeHRfdmxjX3RhYmxlMCwgRGN1cCwgc2lnX3BhdCwgcmVzX29mZiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwg SjJLX1ExLCBjb250ZXh0LCBMY3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBjdXApKSA8IDApCisgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMSAr IGldID0gKHNpZ19wYXRbSjJLX1ExXSA+PiBpKSAmIDE7CisKKyAgICAgICAgdVtKMktfUTFdID0g MDsKKworICAgICAgICBpZiAocmVzX29mZltKMktfUTFdID09IDEpIHsKKyAgICAgICAgICAgIHVf cGZ4W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfcHJlZml4KHZsY19zdHJlYW0sIHZsY19idWYpOwor ICAgICAgICAgICAgdV9zZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVh bSwgdV9wZnhbSjJLX1ExXSwgdmxjX2J1Zik7CisgICAgICAgICAgICB1X2V4dFtKMktfUTFdID0g dmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1X3NmeFtKMktfUTFdLCB2bGNfYnVm KTsKKyAgICAgICAgICAgIHVbSjJLX1ExXSA9IHVfcGZ4W0oyS19RMV0gKyB1X3NmeFtKMktfUTFd ICsgKHVfZXh0W0oyS19RMV0gKiA0KTsKKyAgICAgICAgfQorCisgICAgICAgIFVbSjJLX1ExXSA9 IGthcHBhW0oyS19RMV0gKyB1W0oyS19RMV07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCA0OyBpKyspCisgICAgICAgICAgICBtW0oyS19RMV1baV0gPSBzaWdtYV9uWzQgKiBxMSArIGld ICogVVtKMktfUTFdIC0gKChlbWJfcGF0X2tbSjJLX1ExXSA+PiBpKSAmIDEpOworCisgICAgICAg IHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVhbSwgSjJLX1ExLCBxMSwgbV9uLCBrbm93bl8x LCBlbWJfcGF0XzEsIHYsIG0sCisgICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3Vw LCBQY3VwLCBwTFNCKTsKKworICAgICAgICBxKys7IC8vIG1vdmUgdG8gbmV4dCBxdWFkIHBhaXIK KyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsIGxpbmUgcGFpciBlbmQuIEFzIGFuIG9w dGltaXphdGlvbiwgd2UgY2FuIHJlcGxhY2UgbW9kdWxvCisgICAgICogb3BlcmF0aW9ucyB3aXRo IGNoZWNraW5nIGlmIGEgbnVtYmVyIGlzIGRpdmlzaWJsZSAsIHNpbmNlIHRoYXQncyB0aGUgb25s eQorICAgICAqIHRoaW5nIHdlIG5lZWQuIFRoaXMgaXMgcGFpcmVkIHdpdGggaXNfZGl2aXNpYmxl LiBDcmVkaXRzIHRvIERhbmllbCBMZW1pcmUKKyAgICAgKiBibG9nIHBvc3QgWzFdLgorICAgICAq CisgICAgICogWzFdCisgICAgICogaHR0cHM6Ly9sZW1pcmUubWUvYmxvZy8yMDE5LzAyLzA4L2Zh c3Rlci1yZW1haW5kZXJzLXdoZW4tdGhlLWRpdmlzb3ItaXMtYS1jb25zdGFudC1iZWF0aW5nLWNv bXBpbGVycy1hbmQtbGliZGl2aWRlLworICAgICAqCisgICAgICogSXQncyBVQiBvbiB6ZXJvLCBi dXQgdGhlIHNwZWMgZG9lc24ndCBhbGxvdyBhIHF1YWQgYmVpbmcgemVybywgc28gd2UKKyAgICAg KiBlcnJvciBvdXQgZWFybHkgaW4gY2FzZSB0aGF0J3MgdGhlIGNhc2UuCisgICAgICovCisgICAg YyA9IHByZWNvbXB1dGVfYyhxdWFkX3dpZHRoKTsKKworICAgIGZvciAoaW50IHJvdyA9IDE7IHJv dyA8IHF1YWRfaGVpZ2h0OyByb3crKykgeworICAgICAgICB3aGlsZSAoKHEgLSAocm93ICogcXVh ZF93aWR0aCkpIDwgcXVhZF93aWR0aCAtIDEgJiYgcSA8IChxdWFkX2hlaWdodCAqIHF1YWRfd2lk dGgpKSB7CisgICAgICAgICAgICBxMSA9IHE7CisgICAgICAgICAgICBxMiA9IHEgKyAxOworICAg ICAgICAgICAgY29udGV4dDEgID0gc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsK KyAgICAgICAgICAgIGNvbnRleHQxICs9IHNpZ21hX25bNCAqIChxMSAtIHF1YWRfd2lkdGgpICsg M10gPDwgMjsgICAgICAgICAgICAgIC8vIG5lCisKKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNp YmxlKHExLCBjKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQxIHw9IHNpZ21hX25bNCAqIChx MSAtIHF1YWRfd2lkdGgpIC0gMV07ICAgICAgICAgICAgICAgLy8gbncKKyAgICAgICAgICAgICAg ICBjb250ZXh0MSArPSAoc2lnbWFfbls0ICogcTEgLSAxXSB8IHNpZ21hX25bNCAqIHExIC0gMl0p IDw8IDE7IC8vIHN3IHwgcQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFpc19kaXZp c2libGUocTEgKyAxLCBjKSkKKyAgICAgICAgICAgICAgICBjb250ZXh0MSB8PSBzaWdtYV9uWzQg KiAocTEgLSBxdWFkX3dpZHRoKSArIDVdIDw8IDI7CisKKyAgICAgICAgICAgIGlmICgocmV0ID0g anBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRlLCBtZWxfc3RyZWFtLCB2bGNfc3Ry ZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNf Y3h0X3ZsY190YWJsZTEsIERjdXAsIHNpZ19wYXQsIHJlc19vZmYsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYl9wYXRfaywgZW1iX3BhdF8xLCBKMktf UTEsIGNvbnRleHQxLCBMY3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQY3VwKSkKKyAgICAgICAgICAgICAgICA8IDApCisgICAgICAgICAgICAgICAg Z290byBmcmVlOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykKKyAg ICAgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMSArIGldID0gKHNpZ19wYXRbSjJLX1ExXSA+PiBp KSAmIDE7CisKKyAgICAgICAgICAgIGNvbnRleHQyICA9IHNpZ21hX25bNCAqIChxMiAtIHF1YWRf d2lkdGgpICsgMV07CisgICAgICAgICAgICBjb250ZXh0MiArPSBzaWdtYV9uWzQgKiAocTIgLSBx dWFkX3dpZHRoKSArIDNdIDw8IDI7CisKKyAgICAgICAgICAgIGlmICghaXNfZGl2aXNpYmxlKHEy LCBjKSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQyIHw9IHNpZ21hX25bNCAqIChxMiAtIHF1 YWRfd2lkdGgpIC0gMV07CisgICAgICAgICAgICAgICAgY29udGV4dDIgKz0gKHNpZ21hX25bNCAq IHEyIC0gMV0gfCBzaWdtYV9uWzQgKiBxMiAtIDJdKSA8PCAxOworICAgICAgICAgICAgfQorICAg ICAgICAgICAgaWYgKCFpc19kaXZpc2libGUocTIgKyAxLCBjKSkKKyAgICAgICAgICAgICAgICBj b250ZXh0MiB8PSBzaWdtYV9uWzQgKiAocTIgLSBxdWFkX3dpZHRoKSArIDVdIDw8IDI7CisKKyAg ICAgICAgICAgIGlmICgocmV0ID0ganBlZzIwMDBfZGVjb2RlX3NpZ19lbWIocywgbWVsX3N0YXRl LCBtZWxfc3RyZWFtLCB2bGNfc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkZWNfY3h0X3ZsY190YWJsZTEsIERjdXAsIHNpZ19wYXQsIHJlc19v ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtYl9w YXRfaywgZW1iX3BhdF8xLCBKMktfUTIsIGNvbnRleHQyLCBMY3VwLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQY3VwKSkKKyAgICAgICAgICAgICAgICA8 IDApCisgICAgICAgICAgICAgICAgZ290byBmcmVlOworCisgICAgICAgICAgICBmb3IgKGludCBp ID0gMDsgaSA8IDQ7IGkrKykKKyAgICAgICAgICAgICAgICBzaWdtYV9uWzQgKiBxMiArIGldID0g KHNpZ19wYXRbSjJLX1EyXSA+PiBpKSAmIDE7CisKKyAgICAgICAgICAgIHVbSjJLX1ExXSA9IDA7 CisgICAgICAgICAgICB1W0oyS19RMl0gPSAwOworCisgICAgICAgICAgICBqcGVnMjAwMF9iaXRi dWZfcmVmaWxsX2JhY2t3YXJkcyh2bGNfc3RyZWFtLCB2bGNfYnVmKTsKKworICAgICAgICAgICAg aWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxICYmIHJlc19vZmZbSjJLX1EyXSA9PSAxKSB7CisgICAg ICAgICAgICAgICAgdV9wZnhbSjJLX1ExXSA9IHZsY19kZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVh bSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgdV9wZnhbSjJLX1EyXSA9IHZsY19kZWNvZGVf dV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1X3NmeFtK MktfUTFdID0gdmxjX2RlY29kZV91X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2 bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTJdID0gdmxjX2RlY29kZV91X3N1 ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTJdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAg ICAgIHVfZXh0W0oyS19RMV0gPSB2bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVf c2Z4W0oyS19RMV0sIHZsY19idWYpOworICAgICAgICAgICAgICAgIHVfZXh0W0oyS19RMl0gPSB2 bGNfZGVjb2RlX3VfZXh0ZW5zaW9uKHZsY19zdHJlYW0sIHVfc2Z4W0oyS19RMl0sIHZsY19idWYp OworCisgICAgICAgICAgICAgICAgdVtKMktfUTFdID0gdV9wZnhbSjJLX1ExXSArIHVfc2Z4W0oy S19RMV0gKyAodV9leHRbSjJLX1ExXSA8PCAyKTsKKyAgICAgICAgICAgICAgICB1W0oyS19RMl0g PSB1X3BmeFtKMktfUTJdICsgdV9zZnhbSjJLX1EyXSArICh1X2V4dFtKMktfUTJdIDw8IDIpOwor CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc19vZmZbSjJLX1ExXSA9PSAxIHx8IHJlc19vZmZb SjJLX1EyXSA9PSAxKSB7CisgICAgICAgICAgICAgICAgdWludDhfdCBwb3MgPSByZXNfb2ZmW0oy S19RMV0gPT0gMSA/IDAgOiAxOworCisgICAgICAgICAgICAgICAgdV9wZnhbcG9zXSA9IHZsY19k ZWNvZGVfdV9wcmVmaXgodmxjX3N0cmVhbSwgdmxjX2J1Zik7CisgICAgICAgICAgICAgICAgdV9z ZnhbcG9zXSA9IHZsY19kZWNvZGVfdV9zdWZmaXgodmxjX3N0cmVhbSwgdV9wZnhbcG9zXSwgdmxj X2J1Zik7CisgICAgICAgICAgICAgICAgdV9leHRbcG9zXSA9IHZsY19kZWNvZGVfdV9leHRlbnNp b24odmxjX3N0cmVhbSwgdV9zZnhbcG9zXSwgdmxjX2J1Zik7CisKKyAgICAgICAgICAgICAgICB1 W3Bvc10gPSB1X3BmeFtwb3NdICsgdV9zZnhbcG9zXSArICh1X2V4dFtwb3NdIDw8IDIpOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgc3AgPSBzaWdfcGF0W0oyS19RMV07CisKKyAgICAgICAg ICAgIGdhbW1hW0oyS19RMV0gPSAxOworCisgICAgICAgICAgICBpZiAoc3AgPT0gMCB8fCBzcCA9 PSAxIHx8IHNwID09IDIgfHwgc3AgPT0gNCB8fCBzcCA9PSA4KQorICAgICAgICAgICAgICAgIGdh bW1hW0oyS19RMV0gPSAwOworCisgICAgICAgICAgICBzcCA9IHNpZ19wYXRbSjJLX1EyXTsKKwor ICAgICAgICAgICAgZ2FtbWFbSjJLX1EyXSA9IDE7CisKKyAgICAgICAgICAgIGlmIChzcCA9PSAw IHx8IHNwID09IDEgfHwgc3AgPT0gMiB8fCBzcCA9PSA0IHx8IHNwID09IDgpCisgICAgICAgICAg ICAgICAgZ2FtbWFbSjJLX1EyXSA9IDA7CisKKyAgICAgICAgICAgIEVfbltKMktfUTFdID0gRVs0 ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsKKyAgICAgICAgICAgIEVfbltKMktfUTJdID0gRVs0 ICogKHEyIC0gcXVhZF93aWR0aCkgKyAxXTsKKworICAgICAgICAgICAgRV9uZVtKMktfUTFdID0g RVs0ICogKHExIC0gcXVhZF93aWR0aCkgKyAzXTsKKyAgICAgICAgICAgIEVfbmVbSjJLX1EyXSA9 IEVbNCAqIChxMiAtIHF1YWRfd2lkdGgpICsgM107CisKKyAgICAgICAgICAgIEVfbndbSjJLX1Ex XSA9ICghaXNfZGl2aXNpYmxlKHExLCBjKSkgKiBFW0ZGTUFYKCg0ICogKHExIC0gcXVhZF93aWR0 aCkgLSAxKSwgMCldOworICAgICAgICAgICAgRV9ud1tKMktfUTJdID0gKCFpc19kaXZpc2libGUo cTIsIGMpKSAqIEVbRkZNQVgoKDQgKiAocTIgLSBxdWFkX3dpZHRoKSAtIDEpLCAwKV07CisKKyAg ICAgICAgICAgIEVfbmZbSjJLX1ExXSA9ICghaXNfZGl2aXNpYmxlKHExICsgMSwgYykpICogRVs0 ICogKHExIC0gcXVhZF93aWR0aCkgKyA1XTsKKyAgICAgICAgICAgIEVfbmZbSjJLX1EyXSA9ICgh aXNfZGl2aXNpYmxlKHEyICsgMSwgYykpICogRVs0ICogKHEyIC0gcXVhZF93aWR0aCkgKyA1XTsK KworICAgICAgICAgICAgbWF4X2VbSjJLX1ExXSA9IEZGTUFYKEVfbndbSjJLX1ExXSwgRkZNQVgz KEVfbltKMktfUTFdLCBFX25lW0oyS19RMV0sIEVfbmZbSjJLX1ExXSkpOworICAgICAgICAgICAg bWF4X2VbSjJLX1EyXSA9IEZGTUFYKEVfbndbSjJLX1EyXSwgRkZNQVgzKEVfbltKMktfUTJdLCBF X25lW0oyS19RMl0sIEVfbmZbSjJLX1EyXSkpOworCisgICAgICAgICAgICBrYXBwYVtKMktfUTFd ID0gRkZNQVgoMSwgZ2FtbWFbSjJLX1ExXSAqIChtYXhfZVtKMktfUTFdIC0gMSkpOworICAgICAg ICAgICAga2FwcGFbSjJLX1EyXSA9IEZGTUFYKDEsIGdhbW1hW0oyS19RMl0gKiAobWF4X2VbSjJL X1EyXSAtIDEpKTsKKworICAgICAgICAgICAgVVtKMktfUTFdID0ga2FwcGFbSjJLX1ExXSArIHVb SjJLX1ExXTsKKyAgICAgICAgICAgIFVbSjJLX1EyXSA9IGthcHBhW0oyS19RMl0gKyB1W0oyS19R Ml07CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKSB7CisgICAgICAg ICAgICAgICAgbVtKMktfUTFdW2ldID0gc2lnbWFfbls0ICogcTEgKyBpXSAqIFVbSjJLX1ExXSAt ICgoZW1iX3BhdF9rW0oyS19RMV0gPj4gaSkgJiAxKTsKKyAgICAgICAgICAgICAgICBtW0oyS19R Ml1baV0gPSBzaWdtYV9uWzQgKiBxMiArIGldICogVVtKMktfUTJdIC0gKChlbWJfcGF0X2tbSjJL X1EyXSA+PiBpKSAmIDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVjb3Zlcl9tYWdf c2duKG1hZ19zZ25fc3RyZWFtLCBKMktfUTEsIHExLCBtX24sIGtub3duXzEsIGVtYl9wYXRfMSwg diwgbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBw TFNCKTsKKworICAgICAgICAgICAgcmVjb3Zlcl9tYWdfc2duKG1hZ19zZ25fc3RyZWFtLCBKMktf UTIsIHEyLCBtX24sIGtub3duXzEsIGVtYl9wYXRfMSwgdiwgbSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFLCBtdV9uLCBEY3VwLCBQY3VwLCBwTFNCKTsKKworICAgICAgICAgICAgcSAr PSAyOyAvLyBNb3ZlIHRvIHRoZSBuZXh0IHF1YWQgcGFpcgorICAgICAgICB9CisKKyAgICAgICAg aWYgKHF1YWRfd2lkdGggJSAyID09IDEpIHsKKyAgICAgICAgICAgIHExID0gcTsKKworICAgICAg ICAgICAgLyogY2FsY3VsYXRlIGNvbnRleHQgZm9yIGN1cnJlbnQgcXVhZCAqLworICAgICAgICAg ICAgY29udGV4dDEgID0gc2lnbWFfbls0ICogKHExIC0gcXVhZF93aWR0aCkgKyAxXTsKKyAgICAg ICAgICAgIGNvbnRleHQxICs9IChzaWdtYV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDNdIDw8 IDIpOworCisgICAgICAgICAgICBpZiAoIWlzX2RpdmlzaWJsZShxMSwgYykpIHsKKyAgICAgICAg ICAgICAgICBjb250ZXh0MSB8PSBzaWdtYV9uWzQgKiAocTEgLSBxdWFkX3dpZHRoKSAtIDFdOwor ICAgICAgICAgICAgICAgIGNvbnRleHQxICs9IChzaWdtYV9uWzQgKiBxMSAtIDFdIHwgc2lnbWFf bls0ICogcTEgLSAyXSkgPDwgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaXNf ZGl2aXNpYmxlKHExICsgMSwgYykpCisgICAgICAgICAgICAgICAgY29udGV4dDEgfD0gc2lnbWFf bls0ICogKHExIC0gcXVhZF93aWR0aCkgKyA1XSA8PCAyOworCisgICAgICAgICAgICBpZiAoKHJl dCA9IGpwZWcyMDAwX2RlY29kZV9zaWdfZW1iKHMsIG1lbF9zdGF0ZSwgbWVsX3N0cmVhbSwgdmxj X3N0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVjX2N4dF92bGNfdGFibGUxLCBEY3VwLCBzaWdfcGF0LCByZXNfb2ZmLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJfcGF0X2ssIGVtYl9wYXRfMSwg SjJLX1ExLCBjb250ZXh0MSwgTGN1cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUGN1cCkpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIGZyZWU7CisK KyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgICAg IHNpZ21hX25bNCAqIHExICsgaV0gPSAoc2lnX3BhdFtKMktfUTFdID4+IGkpICYgMTsKKworICAg ICAgICAgICAgdVtKMktfUTFdID0gMDsKKworICAgICAgICAgICAgLyogUmVjb3ZlciBtYWdfc2du IHZhbHVlICovCisgICAgICAgICAgICBpZiAocmVzX29mZltKMktfUTFdID09IDEpIHsKKyAgICAg ICAgICAgICAgICB1X3BmeFtKMktfUTFdID0gdmxjX2RlY29kZV91X3ByZWZpeCh2bGNfc3RyZWFt LCB2bGNfYnVmKTsKKyAgICAgICAgICAgICAgICB1X3NmeFtKMktfUTFdID0gdmxjX2RlY29kZV91 X3N1ZmZpeCh2bGNfc3RyZWFtLCB1X3BmeFtKMktfUTFdLCB2bGNfYnVmKTsKKyAgICAgICAgICAg ICAgICB1X2V4dFtKMktfUTFdID0gdmxjX2RlY29kZV91X2V4dGVuc2lvbih2bGNfc3RyZWFtLCB1 X3NmeFtKMktfUTFdLCB2bGNfYnVmKTsKKworICAgICAgICAgICAgICAgIHVbSjJLX1ExXSA9IHVf cGZ4W0oyS19RMV0gKyB1X3NmeFtKMktfUTFdICsgKHVfZXh0W0oyS19RMV0gPDwgMik7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIHNwID0gc2lnX3BhdFtKMktfUTFdOworCisgICAgICAg ICAgICBnYW1tYVtKMktfUTFdID0gMTsKKworICAgICAgICAgICAgaWYgKHNwID09IDAgfHwgc3Ag PT0gMSB8fCBzcCA9PSAyIHx8IHNwID09IDQgfHwgc3AgPT0gOCkKKyAgICAgICAgICAgICAgICBn YW1tYVtKMktfUTFdID0gMDsKKworICAgICAgICAgICAgRV9uW0oyS19RMV0gPSBFWzQgKiAocTEg LSBxdWFkX3dpZHRoKSArIDFdOworCisgICAgICAgICAgICBFX25lW0oyS19RMV0gPSBFWzQgKiAo cTEgLSBxdWFkX3dpZHRoKSArIDNdOworCisgICAgICAgICAgICBFX253W0oyS19RMV0gPSAoIWlz X2RpdmlzaWJsZShxMSwgYykpICogRVtGRk1BWCgoNCAqIChxMSAtIHF1YWRfd2lkdGgpIC0gMSks IDApXTsKKworICAgICAgICAgICAgRV9uZltKMktfUTFdID0gKCFpc19kaXZpc2libGUocTEgKyAx LCBjKSkgKiBFWzQgKiAocTEgLSBxdWFkX3dpZHRoKSArIDVdOworCisgICAgICAgICAgICBtYXhf ZVtKMktfUTFdID0gRkZNQVgoRV9ud1tKMktfUTFdLCBGRk1BWDMoRV9uW0oyS19RMV0sIEVfbmVb SjJLX1ExXSwgRV9uZltKMktfUTFdKSk7CisKKyAgICAgICAgICAgIGthcHBhW0oyS19RMV0gPSBG Rk1BWCgxLCBnYW1tYVtKMktfUTFdICogKG1heF9lW0oyS19RMV0gLSAxKSk7CisKKyAgICAgICAg ICAgIFVbSjJLX1ExXSA9IGthcHBhW0oyS19RMV0gKyB1W0oyS19RMV07CisKKyAgICAgICAgICAg IGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICAgICAgICAgIG1bSjJLX1ExXVtp XSA9IHNpZ21hX25bNCAqIHExICsgaV0gKiBVW0oyS19RMV0gLSAoKGVtYl9wYXRfa1tKMktfUTFd ID4+IGkpICYgMSk7CisKKyAgICAgICAgICAgIHJlY292ZXJfbWFnX3NnbihtYWdfc2duX3N0cmVh bSwgSjJLX1ExLCBxMSwgbV9uLCBrbm93bl8xLCBlbWJfcGF0XzEsIHYsIG0sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRSwgbXVfbiwgRGN1cCwgUGN1cCwgcExTQik7CisgICAgICAgICAg ICBxICs9IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBjb252ZXJ0IHRvIHJhc3Rlci1z Y2FuCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBxdWFkX2hlaWdodDsgeSsrKSB7CisgICAgICAg IGZvciAoaW50IHggPSAwOyB4IDwgcXVhZF93aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBpbnQg ajEsIGoyOworICAgICAgICAgICAgaW50IHgxLCB4MiAsIHgzOworCisgICAgICAgICAgICBqMSA9 IDIgKiB5OworICAgICAgICAgICAgajIgPSAyICogeDsKKworICAgICAgICAgICAgc2FtcGxlX2J1 ZltqMiArIChqMSAqIHdpZHRoKV0gPSAoaW50MzJfdCkqbXU7CisgICAgICAgICAgICBqcGVnMjAw MF9tb2RpZnlfc3RhdGUoajEsIGoyLCB3aWR0aCwgKnNpZ21hLCBibG9ja19zdGF0ZXMpOworICAg ICAgICAgICAgc2lnbWEgKz0gMTsKKyAgICAgICAgICAgIG11ICs9IDE7CisKKyAgICAgICAgICAg IHgxID0geSAhPSBxdWFkX2hlaWdodCAtIDEgfHwgaXNfYm9yZGVyX3kgPT0gMDsKKyAgICAgICAg ICAgIHNhbXBsZV9idWZbajIgKyAoKGoxICsgMSkgKiB3aWR0aCldID0gKChpbnQzMl90KSptdSkg KiB4MTsKKyAgICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShqMSArIDEsIGoyLCB3aWR0 aCwgKCpzaWdtYSkgKiB4MSwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAgIHNpZ21hICs9IDE7 CisgICAgICAgICAgICBtdSArPSAxOworCisgICAgICAgICAgICB4MiA9IHggIT0gcXVhZF93aWR0 aCAtIDEgfHwgaXNfYm9yZGVyX3ggPT0gMDsKKyAgICAgICAgICAgIHNhbXBsZV9idWZbKGoyICsg MSkgKyAoajEgKiB3aWR0aCldID0gKChpbnQzMl90KSptdSkgKiB4MjsKKyAgICAgICAgICAgIGpw ZWcyMDAwX21vZGlmeV9zdGF0ZShqMSwgajIgKyAxLCB3aWR0aCwgKCpzaWdtYSkgKiB4MiwgYmxv Y2tfc3RhdGVzKTsKKyAgICAgICAgICAgIHNpZ21hICs9IDE7CisgICAgICAgICAgICBtdSArPSAx OworCisgICAgICAgICAgICB4MyA9IHgxIHwgeDI7CisgICAgICAgICAgICBzYW1wbGVfYnVmWyhq MiArIDEpICsgKGoxICsgMSkgKiB3aWR0aF0gPSAoKGludDMyX3QpKm11KSAqIHgzOworICAgICAg ICAgICAganBlZzIwMDBfbW9kaWZ5X3N0YXRlKGoxICsgMSwgajIgKyAxLCB3aWR0aCwgKCpzaWdt YSkgKiB4MywgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAgIHNpZ21hICs9IDE7CisgICAgICAg ICAgICBtdSArPSAxOworICAgICAgICB9CisgICAgfQorICAgIHJldCA9IDE7CitmcmVlOgorICAg IGF2X2ZyZWVwKCZzaWdtYV9uKTsKKyAgICBhdl9mcmVlcCgmRSk7CisgICAgYXZfZnJlZXAoJm11 X24pOworICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGpwZWcyMDAwX2NhbGNfbWJy KHVpbnQ4X3QgKm1iciwgY29uc3QgdWludDE2X3QgaSwgY29uc3QgdWludDE2X3QgaiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IG1icl9pbmZvLCB1aW50OF90 IGNhdXNhbF9jb25kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqYmxv Y2tfc3RhdGVzLCBpbnQgd2lkdGgpCit7CisgICAgaW50IGxvY2FsX21iciA9IDA7CisKKyAgICBs b2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lkdGgsIEhUX1NI SUZUX1NJR01BLCBibG9ja19zdGF0ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRf c3RhdGUoaSAtIDEsIGogKyAwLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcyk7 CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwgaiArIDEsIHdpZHRo LCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKTsKKworICAgIGxvY2FsX21iciB8PSBqcGVn MjAwMF9nZXRfc3RhdGUoaSArIDAsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2Nr X3N0YXRlcyk7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMCwgaiAr IDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKTsKKworICAgIGxvY2FsX21i ciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDEsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0lH TUEsIGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29uZDsKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIw MDBfZ2V0X3N0YXRlKGkgKyAxLCBqICsgMCwgd2lkdGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19z dGF0ZXMpICogY2F1c2FsX2NvbmQ7CisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0 ZShpICsgMSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9TSUdNQSwgYmxvY2tfc3RhdGVzKSAqIGNh dXNhbF9jb25kOworCisgICAgbG9jYWxfbWJyIHw9IGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwg aiAtIDEsIHdpZHRoLCBIVF9TSElGVF9SRUYsICAgYmxvY2tfc3RhdGVzKSAqCisgICAgICAgICAg ICAgICAgIGpwZWcyMDAwX2dldF9zdGF0ZShpIC0gMSwgaiAtIDEsIHdpZHRoLCBIVF9TSElGVF9T Q0FOLCAgYmxvY2tfc3RhdGVzKTsKKyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRl KGkgLSAxLCBqICsgMCwgd2lkdGgsIEhUX1NISUZUX1JFRiwgICBibG9ja19zdGF0ZXMpICoKKyAg ICAgICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgLSAxLCBqIC0gMSwgd2lkdGgsIEhU X1NISUZUX1NDQU4sICBibG9ja19zdGF0ZXMpOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9n ZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgIGJsb2NrX3N0YXRl cykgKgorICAgICAgICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3RhdGUoaSAtIDEsIGogKyAxLCB3 aWR0aCwgSFRfU0hJRlRfU0NBTiwgIGJsb2NrX3N0YXRlcyk7CisKKyAgICBsb2NhbF9tYnIgfD0g anBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAwLCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1JFRiwgICBi bG9ja19zdGF0ZXMpICoKKyAgICAgICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAw LCBqIC0gMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4sICBibG9ja19zdGF0ZXMpOworICAgIGxvY2Fs X21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUoaSArIDAsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRf UkVGLCAgIGJsb2NrX3N0YXRlcykgKgorICAgICAgICAgICAgICAgICBqcGVnMjAwMF9nZXRfc3Rh dGUoaSArIDAsIGogKyAxLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgIGJsb2NrX3N0YXRlcyk7CisK KyAgICBsb2NhbF9tYnIgfD0ganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAxLCBqIC0gMSwgd2lkdGgs IEhUX1NISUZUX1JFRiwgIGJsb2NrX3N0YXRlcykgKgorICAgICAgICAgICAgICAgICBqcGVnMjAw MF9nZXRfc3RhdGUoaSArIDEsIGogLSAxLCB3aWR0aCwgSFRfU0hJRlRfU0NBTiwgYmxvY2tfc3Rh dGVzKSAqIGNhdXNhbF9jb25kOworICAgIGxvY2FsX21iciB8PSBqcGVnMjAwMF9nZXRfc3RhdGUo aSArIDEsIGogKyAwLCB3aWR0aCwgSFRfU0hJRlRfUkVGLCAgYmxvY2tfc3RhdGVzKSAqCisgICAg ICAgICAgICAgICAgIGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMSwgaiArIDAsIHdpZHRoLCBIVF9T SElGVF9TQ0FOLCBibG9ja19zdGF0ZXMpICogY2F1c2FsX2NvbmQ7CisgICAgbG9jYWxfbWJyIHw9 IGpwZWcyMDAwX2dldF9zdGF0ZShpICsgMSwgaiArIDEsIHdpZHRoLCBIVF9TSElGVF9SRUYsICBi bG9ja19zdGF0ZXMpICoKKyAgICAgICAgICAgICAgICAganBlZzIwMDBfZ2V0X3N0YXRlKGkgKyAx LCBqICsgMSwgd2lkdGgsIEhUX1NISUZUX1NDQU4sIGJsb2NrX3N0YXRlcykgKiBjYXVzYWxfY29u ZDsKKworICAgICptYnIgfD0gbG9jYWxfbWJyOworfQorCitzdGF0aWMgdm9pZCBqcGVnMjAwMF9w cm9jZXNzX3N0cmlwZXNfYmxvY2soU3RhdGVWYXJzICpzaWdfcHJvcCwgaW50IGlfcywgaW50IGpf cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd2lkdGgs IGludCBoZWlnaHQsIGludCBzdHJpZGUsIGludCBwTFNCLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKnNhbXBsZV9idWYsIHVpbnQ4X3QgKmJsb2Nr X3N0YXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 OF90ICptYWdyZWZfc2VnbWVudCwgdWludDMyX3QgbWFncmVmX2xlbmd0aCkKK3sKKyAgICBmb3Ig KGludCBqID0gal9zOyBqIDwgal9zICsgd2lkdGg7IGorKykgeworICAgICAgICB1aW50MzJfdCAg bWJyX2luZm8gPSAwOworICAgICAgICBmb3IgKGludCBpID0gaV9zOyBpIDwgaV9zICsgaGVpZ2h0 OyBpKyspIHsKKyAgICAgICAgICAgIGludCBtb2RpZnlfc3RhdGUsIGNvbmQ7CisgICAgICAgICAg ICB1aW50OF90IGJpdDsKKyAgICAgICAgICAgIHVpbnQ4X3QgY2F1c2FsX2NvbmQgPSBpICE9IChp X3MgKyBoZWlnaHQgLSAxKTsKKyAgICAgICAgICAgIGludDMyX3QgKnNwID0gJnNhbXBsZV9idWZb aiArIChpICogKHN0cmlkZSAtIDIpKV07CisgICAgICAgICAgICB1aW50OF90IG1iciA9IDA7CisK KyAgICAgICAgICAgIGlmIChqcGVnMjAwMF9nZXRfc3RhdGUoaSwgaiwgc3RyaWRlIC0gMiwgSFRf U0hJRlRfU0lHTUEsIGJsb2NrX3N0YXRlcykgPT0gMCkKKyAgICAgICAgICAgICAgICBqcGVnMjAw MF9jYWxjX21icigmbWJyLCBpLCBqLCBtYnJfaW5mbyAmIDB4MUVGLCBjYXVzYWxfY29uZCwgYmxv Y2tfc3RhdGVzLCBzdHJpZGUgLSAyKTsKKyAgICAgICAgICAgIG1icl9pbmZvID4+PSAzOworICAg ICAgICAgICAgY29uZCA9IG1iciAhPSAwOworICAgICAgICAgICAgYml0ID0ganBlZzIwMDBfcGVl a19iaXQoc2lnX3Byb3AsIG1hZ3JlZl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKTsKKyAgICAgICAg ICAgICpzcCB8PSAoYml0ICogY29uZCkgPDwgcExTQjsKKyAgICAgICAgICAgIHNpZ19wcm9wLT5i aXRzIC09IGNvbmQ7CisgICAgICAgICAgICBtb2RpZnlfc3RhdGUgPSAoKCgxIDw8IEhUX1NISUZU X1JFRl9JTkQpIHwgKDEgPDwgSFRfU0hJRlRfUkVGKSkgKiBjb25kKSB8IDEgPDwgSFRfU0hJRlRf U0NBTjsKKyAgICAgICAgICAgIGpwZWcyMDAwX21vZGlmeV9zdGF0ZShpLCBqLCBzdHJpZGUgLSAy LCBtb2RpZnlfc3RhdGUsIGJsb2NrX3N0YXRlcyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8q KgorICogU2VlIHByb2NlZHVyZSBkZWNvZGVTaWdQcm9wTWFnIGF0IFJlYy4gSVRVLVQgVC44MTQs IDcuNC4KKyovCithdl9ub2lubGluZQorc3RhdGljIHZvaWQganBlZzIwMDBfZGVjb2RlX3NpZ3By b3Bfc2VnbWVudChKcGVnMjAwMENibGsgKmNibGssIHVpbnQxNl90IHdpZHRoLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCBoZWlnaHQsIHVpbnQ4 X3QgKm1hZ3JlZl9zZWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCBtYWdyZWZfbGVuZ3RoLCB1aW50OF90IHBMU0IsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKnNhbXBsZV9idWYsIHVp bnQ4X3QgKmJsb2NrX3N0YXRlcykKK3sKKyAgICBTdGF0ZVZhcnMgc3BfZGVjOworCisgICAgY29u c3QgdWludDE2X3QgbnVtX3Zfc3RyaXBlID0gaGVpZ2h0IC8gNDsKKyAgICBjb25zdCB1aW50MTZf dCBudW1faF9zdHJpcGUgPSB3aWR0aCAvIDQ7CisgICAgaW50IGJfd2lkdGggICAgICAgICAgICAg ICAgID0gNDsKKyAgICBpbnQgYl9oZWlnaHQgICAgICAgICAgICAgICAgPSA0OworICAgIGludCBz dHJpZGUgICAgICAgICAgICAgICAgICA9IHdpZHRoICsgMjsKKworICAgIGludCBsYXN0X3dpZHRo OworICAgIHVpbnQxNl90IGkgPSAwLCBqID0gMDsKKworICAgIGpwZWcyMDAwX2luaXRfemVybygm c3BfZGVjKTsKKworICAgIGZvciAoaW50IG4xID0gMDsgbjEgPCBudW1fdl9zdHJpcGU7IG4xKysp IHsKKyAgICAgICAgaiA9IDA7CisgICAgICAgIGZvciAoaW50IG4yID0gMDsgbjIgPCBudW1faF9z dHJpcGU7IG4yKyspIHsKKyAgICAgICAgICAgIGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9j aygmc3BfZGVjLCBpLCBqLCBiX3dpZHRoLCBiX2hlaWdodCwgc3RyaWRlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMU0IsIHNhbXBsZV9idWYsIGJsb2NrX3N0 YXRlcywgbWFncmVmX3NlZ21lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWFncmVmX2xlbmd0aCk7CisgICAgICAgICAgICBqICs9IDQ7CisgICAgICAgIH0K KyAgICAgICAgbGFzdF93aWR0aCA9IHdpZHRoICUgNDsKKyAgICAgICAgaWYgKGxhc3Rfd2lkdGgp CisgICAgICAgICAgICBqcGVnMjAwMF9wcm9jZXNzX3N0cmlwZXNfYmxvY2soJnNwX2RlYywgaSwg aiwgbGFzdF93aWR0aCwgYl9oZWlnaHQsIHN0cmlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwTFNCLCBzYW1wbGVfYnVmLCBibG9ja19zdGF0ZXMsIG1hZ3Jl Zl9zZWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1h Z3JlZl9sZW5ndGgpOworICAgICAgICBpICs9IDQ7CisgICAgfQorCisgICAgLyogRGVjb2RlIHJl bWFpbmluZyBoZWlnaHQgc3RyaXBlcyAqLworICAgIGJfaGVpZ2h0ID0gaGVpZ2h0ICUgNDsKKyAg ICBqID0gMDsKKyAgICBmb3IgKGludCBuMiA9IDA7IG4yIDwgbnVtX2hfc3RyaXBlOyBuMisrKSB7 CisgICAgICAgIGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9jaygmc3BfZGVjLCBpLCBqLCBi X3dpZHRoLCBiX2hlaWdodCwgc3RyaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcExTQiwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzLCBtYWdyZWZfc2VnbWVudCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ3JlZl9sZW5ndGgpOwor ICAgICAgICBqICs9IDQ7CisgICAgfQorICAgIGxhc3Rfd2lkdGggPSB3aWR0aCAlIDQ7CisgICAg aWYgKGxhc3Rfd2lkdGgpCisgICAgICAgIGpwZWcyMDAwX3Byb2Nlc3Nfc3RyaXBlc19ibG9jaygm c3BfZGVjLCBpLCBqLCBsYXN0X3dpZHRoLCBiX2hlaWdodCwgc3RyaWRlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcExTQiwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVz LCBtYWdyZWZfc2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG1hZ3JlZl9sZW5ndGgpOworfQorCisvKioKKyAqIFNlZSBwcm9jZWR1cmUgZGVjb2RlU2lnUHJv cE1hZyBhdCBSZWMuIElUVS1UIFQuODE0LCA3LjUuCisqLworc3RhdGljIGludAoranBlZzIwMDBf ZGVjb2RlX21hZ3JlZl9zZWdtZW50KEpwZWcyMDAwQ2JsayAqY2JsaywgdWludDE2X3Qgd2lkdGgs IHVpbnQxNl90IGJsb2NrX2hlaWdodCwgdWludDhfdCAqbWFncmVmX3NlZ21lbnQsCisgICAgICAg ICAgICAgICAgICAgICAgIHVpbnQzMl90IG1hZ3JlZl9sZW5ndGgsIHVpbnQ4X3QgcExTQiwgaW50 MzJfdCAqc2FtcGxlX2J1ZiwgdWludDhfdCAqYmxvY2tfc3RhdGVzKQoreworCisgICAgU3RhdGVW YXJzIG1hZ19yZWYgICAgICAgICAgID0geyAwIH07CisgICAgY29uc3QgdWludDE2X3QgbnVtX3Zf c3RyaXBlID0gYmxvY2tfaGVpZ2h0IC8gNDsKKyAgICB1aW50MTZfdCBoZWlnaHQgICAgICAgICAg ICAgPSA0OworICAgIHVpbnQxNl90IGlfc3RhcnQgICAgICAgICAgICA9IDA7CisgICAgaW50MzJf dCAqc3A7CisKKyAgICBqcGVnMjAwMF9pbml0X21hZ19yZWYoJm1hZ19yZWYsIG1hZ3JlZl9sZW5n dGgpOworCisgICAgZm9yIChpbnQgbjEgPSAwOyBuMSA8IG51bV92X3N0cmlwZTsgbjErKykgewor ICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgIGZv ciAoaW50IGkgPSBpX3N0YXJ0OyBpIDwgaV9zdGFydCArIGhlaWdodDsgaSsrKSB7CisgICAgICAg ICAgICAgICAgLyoqCisgICAgICAgICAgICAgICAgICogIFdlIG1vdmUgY29sdW1uIHdpc2UsIGdv aW5nIGZyb20gb25lIHF1YWQgdG8gYW5vdGhlci4gU2VlCisgICAgICAgICAgICAgICAgICogIFJl Yy4gSVRVLVQgVC44MTQsIEZpZ3VyZSA3LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAg ICAgICAgIHNwID0gJnNhbXBsZV9idWZbaiArIGkgKiB3aWR0aF07CisgICAgICAgICAgICAgICAg aWYgKGpwZWcyMDAwX2dldF9zdGF0ZShpLCBqLCB3aWR0aCwgSFRfU0hJRlRfU0lHTUEsIGJsb2Nr X3N0YXRlcykgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBqcGVnMjAwMF9tb2RpZnlfc3Rh dGUoaSwgaiwgd2lkdGgsIDEgPDwgSFRfU0hJRlRfUkVGX0lORCwgYmxvY2tfc3RhdGVzKTsKKyAg ICAgICAgICAgICAgICAgICAgKnNwIHw9IGpwZWcyMDAwX2ltcG9ydF9tYWdyZWZfYml0KCZtYWdf cmVmLCBtYWdyZWZfc2VnbWVudCwgbWFncmVmX2xlbmd0aCkgPDwgcExTQjsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaV9zdGFydCArPSA0Owor ICAgIH0KKyAgICBoZWlnaHQgPSBibG9ja19oZWlnaHQgJSA0OworICAgIGZvciAoaW50IGogPSAw OyBqIDwgd2lkdGg7IGorKykgeworICAgICAgICBmb3IgKGludCBpID0gaV9zdGFydDsgaSA8IGlf c3RhcnQgKyBoZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgc3AgPSAmc2FtcGxlX2J1ZltqICsg aSAqIHdpZHRoXTsKKyAgICAgICAgICAgIGlmIChqcGVnMjAwMF9nZXRfc3RhdGUoaSwgaiwgd2lk dGgsIEhUX1NISUZUX1NJR01BLCBibG9ja19zdGF0ZXMpICE9IDApIHsKKyAgICAgICAgICAgICAg ICBqcGVnMjAwMF9tb2RpZnlfc3RhdGUoaSwgaiwgd2lkdGgsIDEgPDwgSFRfU0hJRlRfUkVGX0lO RCwgYmxvY2tfc3RhdGVzKTsKKyAgICAgICAgICAgICAgICAqc3AgfD0ganBlZzIwMDBfaW1wb3J0 X21hZ3JlZl9iaXQoJm1hZ19yZWYsIG1hZ3JlZl9zZWdtZW50LCBtYWdyZWZfbGVuZ3RoKSA8PCBw TFNCOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAxOworfQor CisKK2ludAorZmZfanBlZzIwMDBfZGVjb2RlX2h0ajJrKGNvbnN0IEpwZWcyMDAwRGVjb2RlckNv bnRleHQgKnMsIEpwZWcyMDAwQ29kaW5nU3R5bGUgKmNvZHN0eSwgSnBlZzIwMDBUMUNvbnRleHQg KnQxLCBKcGVnMjAwMENibGsgKmNibGssCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdp ZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFncCwgdWludDhfdCByb2lfc2hpZnQpCit7CisgICAgdWlu dDhfdCBwMCA9IDA7ICAgICAgICAgICAgIC8vIE51bWJlciBvZiBwbGFjZWhvbGRlciBwYXNzZXMK KyAgICB1aW50MzJfdCBMY3VwOyAgICAgICAgICAgICAgLy8gTGVuZ3RoIG9mIEhUIGNsZWFudXAg c2VnbWVudAorICAgIHVpbnQzMl90IExyZWY7ICAgICAgICAgICAgICAvLyBMZW5ndGggb2YgUmVm aW5lbWVudCBzZWdtZW50CisgICAgdWludDMyX3QgU2N1cDsgICAgICAgICAgICAgIC8vIEhUIGNs ZWFudXAgc2VnbWVudCBzdWZmaXggbGVuZ3RoCisgICAgdWludDMyX3QgUGN1cDsgICAgICAgICAg ICAgIC8vIEhUIGNsZWFudXAgc2VnbWVudCBwcmVmaXggbGVuZ3RoCisKKyAgICB1aW50OF90IFNf YmxrOyAgICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHNraXBwZWQgbWFnbml0dWRlIGJpdHBsYW5l cworICAgIHVpbnQ4X3QgcExTQjsKKworICAgIHVpbnQ4X3QgKkRjdXA7ICAgICAgICAgICAgICAv LyBCeXRlIG9mIGFuIEhUIGNsZWFudXAgc2VnbWVudAorICAgIHVpbnQ4X3QgKkRyZWY7ICAgICAg ICAgICAgICAvLyBCeXRlIG9mIGFuIEhUIHJlZmluZW1lbnQgc2VnbWVudAorCisgICAgaW50IHpf YmxrOyAgICAgICAgICAgICAgICAgIC8vIE51bWJlciBvZiBodCBjb2RpbmcgcGFzcworCisgICAg dWludDhfdCBlbXB0eV9wYXNzZXM7CisKKyAgICBTdGF0ZVZhcnMgbWFnX3NnbjsgICAgICAgICAg Ly8gTWFnbml0dWRlIGFuZCBTaWduCisgICAgU3RhdGVWYXJzIG1lbDsgICAgICAgICAgICAgIC8v IEFkYXB0aXZlIHJ1bi1sZW5ndGggY29kaW5nCisgICAgU3RhdGVWYXJzIHZsYzsgICAgICAgICAg ICAgIC8vIFZhcmlhYmxlIExlbmd0aCBjb2RpbmcKKyAgICBTdGF0ZVZhcnMgc2lnX3Byb3A7ICAg ICAgICAgLy8gU2lnbmlmaWNhbmNlIHByb3BhZ2F0aW9uCisKKyAgICBNZWxEZWNvZGVyU3RhdGUg bWVsX3N0YXRlOworCisgICAgaW50IHJldDsKKworICAgIC8qIFRlbXBvcmFyeSBidWZmZXJzICov CisgICAgaW50MzJfdCAqc2FtcGxlX2J1ZjsKKyAgICB1aW50OF90ICpibG9ja19zdGF0ZXM7CisK KyAgICBpbnQzMl90IG4sIHZhbDsgICAgICAgICAgICAgLy8gUG9zdC1wcm9jZXNzaW5nCisKKyAg ICBpbnQzMl90IE1fYiA9IG1hZ3A7CisgICAgYXZfYXNzZXJ0MCh3aWR0aCA8PSAxMDI0VSAmJiBo ZWlnaHQgPD0gMTAyNFUpOworICAgIGF2X2Fzc2VydDAod2lkdGggKiBoZWlnaHQgPD0gNDA5Nik7 CisgICAgYXZfYXNzZXJ0MCh3aWR0aCAqIGhlaWdodCA+IDApOworCisgICAgbWVtc2V0KHQxLT5k YXRhLCAwLCB0MS0+c3RyaWRlICogaGVpZ2h0ICogc2l6ZW9mKCp0MS0+ZGF0YSkpOworICAgIG1l bXNldCh0MS0+ZmxhZ3MsIDAsIHQxLT5zdHJpZGUgKiAoaGVpZ2h0ICsgMikgKiBzaXplb2YoKnQx LT5mbGFncykpOworCisgICAgaWYgKGNibGstPm5wYXNzZXMgPT0gMCkKKyAgICAgICAgcmV0dXJu IDA7CisKKyAgICBpZiAoY2Jsay0+bnBhc3NlcyA+IDMpCisgICAgICAgIHAwID0gMDsKKyAgICBl bHNlIGlmIChjYmxrLT5sZW5ndGggPT0gMCkKKyAgICAgICAgcDAgPSAxOworCisgICAgZW1wdHlf cGFzc2VzID0gcDAgKiAzOworICAgIHpfYmxrID0gY2Jsay0+bnBhc3NlcyAtIGVtcHR5X3Bhc3Nl czsKKworICAgIGlmICh6X2JsayA8PSAwKQorICAgICAgICByZXR1cm4gMDsgLy8gTm8gcGFzc2Vz IHdpdGhpbiB0aGlzIHNldCwgY29udGludWUKKworICAgIExjdXAgPSBjYmxrLT5wYXNzX2xlbmd0 aHNbMF07CisgICAgTHJlZiA9IGNibGstPnBhc3NfbGVuZ3Roc1sxXTsKKworICAgIGlmIChMY3Vw IDwgMikgeworICAgICAgICBhdl9sb2cocy0+YXZjdHgsIEFWX0xPR19FUlJPUiwKKyAgICAgICAg ICAgICAgICJDbGVhbnVwIHBhc3MgbGVuZ3RoIG11c3QgYmUgYXQgbGVhc3QgMiBieXRlcyBpbiBs ZW5ndGhcbiIpOworICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKKyAgICB9Cisg ICAgRGN1cCA9IGNibGstPmRhdGE7CisgICAgRHJlZiAgPSBjYmxrLT5kYXRhICsgTGN1cDsgLy8g RHJlZiBjb21lcyBhZnRlciB0aGUgcmVmaW5lbWVudCBzZWdtZW50CisgICAgU19ibGsgPSBwMCAr IGNibGstPnpicDsKKyAgICBwTFNCICA9IDMwIC0gU19ibGs7CisKKyAgICBTY3VwID0gKERjdXBb TGN1cCAtIDFdIDw8IDQpICsgKERjdXBbTGN1cCAtIDJdICYgMHgwRik7CisKKyAgICBpZiAoU2N1 cCA8IDIgfHwgU2N1cCA+IExjdXAgfHwgU2N1cCA+IDQwNzkpIHsKKyAgICAgICAgYXZfbG9nKHMt PmF2Y3R4LCBBVl9MT0dfRVJST1IsICJDbGVhbnVwIHBhc3Mgc3VmZml4IGxlbmd0aCBpcyBpbnZh bGlkICVkXG4iLAorICAgICAgICAgICAgICAgU2N1cCk7CisgICAgICAgIHJldCA9IEFWRVJST1Jf SU5WQUxJRERBVEE7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9CisgICAgUGN1cCA9IExjdXAg LSBTY3VwOworCisgICAgLyogbW9kRGN1cCBzaGFsbCBiZSBkb25lIGJlZm9yZSB0aGUgY3JlYXRp b24gb2YgdmxjIGluc3RhbmNlLiAqLworICAgIERjdXBbTGN1cCAtIDFdID0gMHhGRjsKKyAgICBE Y3VwW0xjdXAgLSAyXSB8PSAweDBGOworCisgICAgLyogTWFnbml0dWRlIGFuZCByZWZpbmVtZW50 ICovCisgICAganBlZzIwMDBfaW5pdF96ZXJvKCZtYWdfc2duKTsKKyAgICBqcGVnMjAwMF9iaXRi dWZfcmVmaWxsX2ZvcndhcmQoJm1hZ19zZ24sIERjdXAsIFBjdXApOworCisgICAgLyogU2lnbmlm aWNhbmNlIHByb3BhZ2F0aW9uICovCisgICAganBlZzIwMDBfaW5pdF96ZXJvKCZzaWdfcHJvcCk7 CisKKyAgICAvKiBBZGFwdGl2ZSBydW4gbGVuZ3RoICovCisgICAganBlZzIwMDBfaW5pdF9tZWwo Jm1lbCwgUGN1cCk7CisKKyAgICAvKiBWYXJpYWJsZSBMZW5ndGggY29kaW5nICovCisgICAganBl ZzIwMDBfaW5pdF92bGMoJnZsYywgTGN1cCwgUGN1cCwgRGN1cCk7CisKKyAgICBqcGVnMjAwMF9p bml0X21lbF9kZWNvZGVyKCZtZWxfc3RhdGUpOworCisgICAgc2FtcGxlX2J1ZiA9IGF2X2NhbGxv Yygod2lkdGggKyA0KSAqIChoZWlnaHQgKyA0KSwgc2l6ZW9mKGludDMyX3QpKTsKKyAgICBibG9j a19zdGF0ZXMgPSBhdl9jYWxsb2MoKHdpZHRoICsgNCkgKiAoaGVpZ2h0ICsgNCksIHNpemVvZih1 aW50OF90KSk7CisKKyAgICBpZiAoIXNhbXBsZV9idWYgfHwgIWJsb2NrX3N0YXRlcykgeworICAg ICAgICByZXQgPSBBVkVSUk9SKEVOT01FTSk7CisgICAgICAgIGdvdG8gZnJlZTsKKyAgICB9Cisg ICAgaWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVfaHRfY2xlYW51cF9zZWdtZW50KHMsIGNibGss IHQxLCAmbWVsX3N0YXRlLCAmbWVsLCAmdmxjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJm1hZ19zZ24sIERjdXAsIExjdXAsIFBjdXAsIHBMU0IsIHdpZHRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0LCBzYW1wbGVf YnVmLCBibG9ja19zdGF0ZXMpKSA8IDApCisgICAgICAgIGdvdG8gZnJlZTsKKworICAgIGlmIChj YmxrLT5ucGFzc2VzID4gMSkKKyAgICAgICAganBlZzIwMDBfZGVjb2RlX3NpZ3Byb3Bfc2VnbWVu dChjYmxrLCB3aWR0aCwgaGVpZ2h0LCBEcmVmLCBMcmVmLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwTFNCIC0gMSwgc2FtcGxlX2J1ZiwgYmxvY2tfc3RhdGVzKTsKKworICAgIGlm IChjYmxrLT5ucGFzc2VzID4gMikKKyAgICAgICAgaWYgKChyZXQgPSBqcGVnMjAwMF9kZWNvZGVf bWFncmVmX3NlZ21lbnQoY2Jsaywgd2lkdGgsIGhlaWdodCwgRHJlZiwgTHJlZiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBMU0IgLSAxLCBzYW1wbGVfYnVmLCBi bG9ja19zdGF0ZXMpKSA8IDApCisgICAgICAgICAgICBnb3RvIGZyZWU7CisKKyAgICBwTFNCID0g MzEgLSBNX2I7CisKKyAgICAvKiBSZWNvbnN0cnVjdCB0aGUgc2FtcGxlIHZhbHVlcyAqLworICAg IGZvciAoaW50IHkgPSAwOyB5IDwgaGVpZ2h0OyB5KyspIHsKKyAgICAgICAgZm9yIChpbnQgeCA9 IDA7IHggPCB3aWR0aDsgeCsrKSB7CisgICAgICAgICAgICBuID0geCArICh5ICogdDEtPnN0cmlk ZSk7CisgICAgICAgICAgICB2YWwgPSBzYW1wbGVfYnVmW3ggKyAoeSAqIHdpZHRoKV07CisgICAg ICAgICAgICAvKiBDb252ZXJ0IHNpZ24tbWFnbml0dWRlIHRvIHR3bydzIGNvbXBsZW1lbnQuICov CisgICAgICAgICAgICB2YWwgPSB2YWwgPj4gMzEgPyAweDgwMDAwMDAwIC0gdmFsIDogdmFsOwor ICAgICAgICAgICAgdmFsID4+PSAocExTQiAtIDEpOworICAgICAgICAgICAgdDEtPmRhdGFbbl0g PSB2YWw7CisgICAgICAgIH0KKyAgICB9CitmcmVlOgorICAgIGF2X2ZyZWVwKCZzYW1wbGVfYnVm KTsKKyAgICBhdl9mcmVlcCgmYmxvY2tfc3RhdGVzKTsKKyAgICByZXR1cm4gcmV0OworfQorCisv KioKKyAqIEN0eFZMQyB0YWJsZXMgKHNlZSBSZWMuIElUVS1UIFQuODAwLCBBbm5leCBDKSBhcyBm b3VuZCBhdAorICogaHR0cHM6Ly9naXRodWIuY29tL29zYW11NjIwL09wZW5IVEoySyAoYXV0aG9y OiBPc2FtdSBXYXRhbmFiZSkKKyAqLworc3RhdGljIGNvbnN0IHVpbnQxNl90IGRlY19jeHRfdmxj X3RhYmxlMVsxMDI0XSA9IHsKKyAgICAgICAgMHgwMDE2LCAweDAwNkEsIDB4MDA0NiwgMHgwMERE LCAweDAwODYsIDB4ODg4QiwgMHgwMDI2LCAweDQ0NEQsIDB4MDAxNiwgMHgwMEFBLCAweDAwNDYs IDB4ODhBRCwgMHgwMDg2LAorICAgICAgICAweDAwM0EsIDB4MDAyNiwgMHgwMERFLCAweDAwMTYs IDB4MDBDQSwgMHgwMDQ2LCAweDAwOUQsIDB4MDA4NiwgMHgwMDVBLCAweDAwMjYsIDB4MjIyRCwg MHgwMDE2LCAweDAwOUEsCisgICAgICAgIDB4MDA0NiwgMHgwMDdELCAweDAwODYsIDB4MDFGRCwg MHgwMDI2LCAweDAwN0UsIDB4MDAxNiwgMHgwMDZBLCAweDAwNDYsIDB4ODhDRCwgMHgwMDg2LCAw eDg4OEIsIDB4MDAyNiwKKyAgICAgICAgMHgxMTFELCAweDAwMTYsIDB4MDBBQSwgMHgwMDQ2LCAw eDAwNUQsIDB4MDA4NiwgMHgwMDNBLCAweDAwMjYsIDB4MDBFRSwgMHgwMDE2LCAweDAwQ0EsIDB4 MDA0NiwgMHgwMEJELAorICAgICAgICAweDAwODYsIDB4MDA1QSwgMHgwMDI2LCAweDExRkYsIDB4 MDAxNiwgMHgwMDlBLCAweDAwNDYsIDB4MDAzRCwgMHgwMDg2LCAweDA0RUQsIDB4MDAyNiwgMHgy QUFGLCAweDAwMTYsCisgICAgICAgIDB4MDA2QSwgMHgwMDQ2LCAweDAwREQsIDB4MDA4NiwgMHg4 ODhCLCAweDAwMjYsIDB4NDQ0RCwgMHgwMDE2LCAweDAwQUEsIDB4MDA0NiwgMHg4OEFELCAweDAw ODYsIDB4MDAzQSwKKyAgICAgICAgMHgwMDI2LCAweDQ0RUYsIDB4MDAxNiwgMHgwMENBLCAweDAw NDYsIDB4MDA5RCwgMHgwMDg2LCAweDAwNUEsIDB4MDAyNiwgMHgyMjJELCAweDAwMTYsIDB4MDA5 QSwgMHgwMDQ2LAorICAgICAgICAweDAwN0QsIDB4MDA4NiwgMHgwMUZELCAweDAwMjYsIDB4MDBC RSwgMHgwMDE2LCAweDAwNkEsIDB4MDA0NiwgMHg4OENELCAweDAwODYsIDB4ODg4QiwgMHgwMDI2 LCAweDExMUQsCisgICAgICAgIDB4MDAxNiwgMHgwMEFBLCAweDAwNDYsIDB4MDA1RCwgMHgwMDg2 LCAweDAwM0EsIDB4MDAyNiwgMHg0Q0NGLCAweDAwMTYsIDB4MDBDQSwgMHgwMDQ2LCAweDAwQkQs IDB4MDA4NiwKKyAgICAgICAgMHgwMDVBLCAweDAwMjYsIDB4MDBGRSwgMHgwMDE2LCAweDAwOUEs IDB4MDA0NiwgMHgwMDNELCAweDAwODYsIDB4MDRFRCwgMHgwMDI2LCAweDAwNkYsIDB4MDAwMiwg MHgwMDg4LAorICAgICAgICAweDAwMDIsIDB4MDA1QywgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwg MHgwMERFLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwOUMsIDB4MDAwMiwgMHgwMDRBLCAw eDAwMDIsCisgICAgICAgIDB4MDA3RSwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMENDLCAw eDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDg4OEYsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4 MDBGRSwKKyAgICAgICAgMHgwMDAyLCAweDAwM0EsIDB4MDAwMiwgMHgyMjJGLCAweDAwMDIsIDB4 MDA4OCwgMHgwMDAyLCAweDA0RkQsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsIDB4MDBCRSwgMHgw MDAyLAorICAgICAgICAweDAwMjgsIDB4MDAwMiwgMHgwMEJGLCAweDAwMDIsIDB4MDA0QSwgMHgw MDAyLCAweDAwNkUsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDBBQywgMHgwMDAyLCAweDAw MTgsCisgICAgICAgIDB4MDAwMiwgMHg0NDRGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAw RUUsIDB4MDAwMiwgMHgwMDNBLCAweDAwMDIsIDB4MTEzRiwgMHgwMDAyLCAweDAwODgsIDB4MDAw MiwKKyAgICAgICAgMHgwMDVDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwQ0YsIDB4MDAw MiwgMHgwMDI4LCAweDAwMDIsIDB4MDA5QywgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgwMDZG LAorICAgICAgICAweDAwMDIsIDB4MDA4OCwgMHgwMDAyLCAweDAwQ0MsIDB4MDAwMiwgMHgwMDE4 LCAweDAwMDIsIDB4MDA5RiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgwMEVGLCAweDAwMDIs CisgICAgICAgIDB4MDAzQSwgMHgwMDAyLCAweDIzM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIs IDB4MDRGRCwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMEFGLCAweDAwMDIsIDB4MDAyOCwK KyAgICAgICAgMHgwMDAyLCAweDQ0RkYsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIsIDB4MDA1Riwg MHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMEFDLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLAor ICAgICAgICAweDAwN0YsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDBERiwgMHgwMDAyLCAw eDAwM0EsIDB4MDAwMiwgMHgxMTFGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDAwNUMsCisg ICAgICAgIDB4MDAwMiwgMHgwMDhBLCAweDAwMDIsIDB4MDBCRiwgMHgwMDAyLCAweDAwMTgsIDB4 MDAwMiwgMHgwMEZFLCAweDAwMDIsIDB4MDBDQywgMHgwMDAyLCAweDAwN0UsIDB4MDAwMiwKKyAg ICAgICAgMHgwMDI4LCAweDAwMDIsIDB4OEZGRiwgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHgw MDdGLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDAwREYsIDB4MDAwMiwgMHgwMEFDLAorICAg ICAgICAweDAwMDIsIDB4MTMzRiwgMHgwMDAyLCAweDAwMjgsIDB4MDAwMiwgMHgyMjJELCAweDAw MDIsIDB4MDA4QSwgMHgwMDAyLCAweDAwQkUsIDB4MDAwMiwgMHgwMDE4LCAweDAwMDIsCisgICAg ICAgIDB4NDRFRiwgMHgwMDAyLCAweDJBQUQsIDB4MDAwMiwgMHgwMDZFLCAweDAwMDIsIDB4MDAy OCwgMHgwMDAyLCAweDE1RkYsIDB4MDAwMiwgMHgwMDRBLCAweDAwMDIsIDB4MDA5RSwKKyAgICAg ICAgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMENGLCAweDAwMDIsIDB4MDAzQywgMHgwMDAy LCAweDIyM0YsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4MDA1QywgMHgwMDAyLAorICAgICAg ICAweDAwOEEsIDB4MDAwMiwgMHgyQkJGLCAweDAwMDIsIDB4MDAxOCwgMHgwMDAyLCAweDA0RUYs IDB4MDAwMiwgMHgwMENDLCAweDAwMDIsIDB4MDA2RiwgMHgwMDAyLCAweDAwMjgsCisgICAgICAg IDB4MDAwMiwgMHgyN0ZGLCAweDAwMDIsIDB4MDA0QSwgMHgwMDAyLCAweDAwOUYsIDB4MDAwMiwg MHgwMDE4LCAweDAwMDIsIDB4MDBERSwgMHgwMDAyLCAweDAwQUMsIDB4MDAwMiwKKyAgICAgICAg MHg0NDRGLCAweDAwMDIsIDB4MDAyOCwgMHgwMDAyLCAweDIyMkQsIDB4MDAwMiwgMHgwMDhBLCAw eDAwMDIsIDB4OEFBRiwgMHgwMDAyLCAweDAwMTgsIDB4MDAwMiwgMHgwMEVFLAorICAgICAgICAw eDAwMDIsIDB4MkFBRCwgMHgwMDAyLCAweDAwNUYsIDB4MDAwMiwgMHgwMDI4LCAweDAwMDIsIDB4 NDRGRiwgMHgwMDAyLCAweDAwNEEsIDB4MDAwMiwgMHg4ODhGLCAweDAwMDIsCisgICAgICAgIDB4 MDAxOCwgMHgwMDAyLCAweEFBQUYsIDB4MDAwMiwgMHgwMDNDLCAweDAwMDIsIDB4MTExRiwgMHgw MDA0LCAweDhGRkQsIDB4MDAyOCwgMHgwMDVDLCAweDAwMDQsIDB4MDBCQywKKyAgICAgICAgMHgw MDhBLCAweDY2RkYsIDB4MDAwNCwgMHgwMENELCAweDAwMTgsIDB4MTExRCwgMHgwMDA0LCAweDAw OUMsIDB4MDAzQSwgMHg4QUFGLCAweDAwMDQsIDB4MDBGQywgMHgwMDI4LAorICAgICAgICAweDEz M0QsIDB4MDAwNCwgMHgwMEFDLCAweDAwNEEsIDB4M0JCRiwgMHgwMDA0LCAweDJCQkQsIDB4MDAx OCwgMHg1RkZGLCAweDAwMDQsIDB4MDA2QywgMHgxNTdELCAweDQ1NUYsCisgICAgICAgIDB4MDAw NCwgMHgyRkZELCAweDAwMjgsIDB4MjIyRCwgMHgwMDA0LCAweDIyQUQsIDB4MDA4QSwgMHg0NEVG LCAweDAwMDQsIDB4MDBDQywgMHgwMDE4LCAweDRGRkYsIDB4MDAwNCwKKyAgICAgICAgMHgwMDdD LCAweDAwM0EsIDB4NDQ3RiwgMHgwMDA0LCAweDA0REQsIDB4MDAyOCwgMHgyMzNELCAweDAwMDQs IDB4MDA5RCwgMHgwMDRBLCAweDAwREUsIDB4MDAwNCwgMHg4OEJELAorICAgICAgICAweDAwMTgs IDB4QUZGRiwgMHgwMDA0LCAweDExNUQsIDB4MUZGRCwgMHg0NDRGLCAweDAwMDQsIDB4OEZGRCwg MHgwMDI4LCAweDAwNUMsIDB4MDAwNCwgMHgwMEJDLCAweDAwOEEsCisgICAgICAgIDB4OENFRiwg MHgwMDA0LCAweDAwQ0QsIDB4MDAxOCwgMHgxMTFELCAweDAwMDQsIDB4MDA5QywgMHgwMDNBLCAw eDg4OEYsIDB4MDAwNCwgMHgwMEZDLCAweDAwMjgsIDB4MTMzRCwKKyAgICAgICAgMHgwMDA0LCAw eDAwQUMsIDB4MDA0QSwgMHg0NERGLCAweDAwMDQsIDB4MkJCRCwgMHgwMDE4LCAweDhBRkYsIDB4 MDAwNCwgMHgwMDZDLCAweDE1N0QsIDB4MDA2RiwgMHgwMDA0LAorICAgICAgICAweDJGRkQsIDB4 MDAyOCwgMHgyMjJELCAweDAwMDQsIDB4MjJBRCwgMHgwMDhBLCAweDAwRUUsIDB4MDAwNCwgMHgw MENDLCAweDAwMTgsIDB4MkVFRiwgMHgwMDA0LCAweDAwN0MsCisgICAgICAgIDB4MDAzQSwgMHgy NzdGLCAweDAwMDQsIDB4MDRERCwgMHgwMDI4LCAweDIzM0QsIDB4MDAwNCwgMHgwMDlELCAweDAw NEEsIDB4MUJCRiwgMHgwMDA0LCAweDg4QkQsIDB4MDAxOCwKKyAgICAgICAgMHgzN0ZGLCAweDAw MDQsIDB4MTE1RCwgMHgxRkZELCAweDMzM0YsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsIDB4MDJF RCwgMHgwMDAyLCAweDAwQ0EsIDB4MDAwMiwgMHg0Q0NGLAorICAgICAgICAweDAwMDIsIDB4MDA0 OCwgMHgwMDAyLCAweDIzRkYsIDB4MDAwMiwgMHgwMDFBLCAweDAwMDIsIDB4ODg4RiwgMHgwMDAy LCAweDAwODgsIDB4MDAwMiwgMHgwMDZDLCAweDAwMDIsCisgICAgICAgIDB4MDAyQSwgMHgwMDAy LCAweDAwQUYsIDB4MDAwMiwgMHgwMDQ4LCAweDAwMDIsIDB4MjJFRiwgMHgwMDAyLCAweDAwQUMs IDB4MDAwMiwgMHgwMDVGLCAweDAwMDIsIDB4MDA4OCwKKyAgICAgICAgMHgwMDAyLCAweDQ0NEQs IDB4MDAwMiwgMHgwMENBLCAweDAwMDIsIDB4Q0NDRiwgMHgwMDAyLCAweDAwNDgsIDB4MDAwMiwg MHgwMEZFLCAweDAwMDIsIDB4MDAxQSwgMHgwMDAyLAorICAgICAgICAweDAwNkYsIDB4MDAwMiwg MHgwMDg4LCAweDAwMDIsIDB4MDA1QywgMHgwMDAyLCAweDAwMkEsIDB4MDAwMiwgMHgwMDlGLCAw eDAwMDIsIDB4MDA0OCwgMHgwMDAyLCAweDAwREYsCisgICAgICAgIDB4MDAwMiwgMHgwM0ZELCAw eDAwMDIsIDB4MjIyRiwgMHgwMDAyLCAweDAwODgsIDB4MDAwMiwgMHgwMkVELCAweDAwMDIsIDB4 MDBDQSwgMHgwMDAyLCAweDhDQ0YsIDB4MDAwMiwKKyAgICAgICAgMHgwMDQ4LCAweDAwMDIsIDB4 MTFGRiwgMHgwMDAyLCAweDAwMUEsIDB4MDAwMiwgMHgwMDdFLCAweDAwMDIsIDB4MDA4OCwgMHgw MDAyLCAweDAwNkMsIDB4MDAwMiwgMHgwMDJBLAorICAgICAgICAweDAwMDIsIDB4MDA3RiwgMHgw MDAyLCAweDAwNDgsIDB4MDAwMiwgMHgwMEVFLCAweDAwMDIsIDB4MDBBQywgMHgwMDAyLCAweDAw M0UsIDB4MDAwMiwgMHgwMDg4LCAweDAwMDIsCisgICAgICAgIDB4NDQ0RCwgMHgwMDAyLCAweDAw Q0EsIDB4MDAwMiwgMHgwMEJFLCAweDAwMDIsIDB4MDA0OCwgMHgwMDAyLCAweDAwQkYsIDB4MDAw MiwgMHgwMDFBLCAweDAwMDIsIDB4MDAzRiwKKyAgICAgICAgMHgwMDAyLCAweDAwODgsIDB4MDAw MiwgMHgwMDVDLCAweDAwMDIsIDB4MDAyQSwgMHgwMDAyLCAweDAwOUUsIDB4MDAwMiwgMHgwMDQ4 LCAweDAwMDIsIDB4MDBERSwgMHgwMDAyLAorICAgICAgICAweDAzRkQsIDB4MDAwMiwgMHgxMTFG LCAweDAwMDQsIDB4OEFFRCwgMHgwMDQ4LCAweDg4OEQsIDB4MDAwNCwgMHgwMERDLCAweDAwQ0Es IDB4M0ZGRiwgMHgwMDA0LCAweENGRkQsCisgICAgICAgIDB4MDAyQSwgMHgwMDNELCAweDAwMDQs IDB4MDBCQywgMHgwMDVBLCAweDhEREYsIDB4MDAwNCwgMHg4RkZELCAweDAwNDgsIDB4MDA2Qywg MHgwMDA0LCAweDAyN0QsIDB4MDA4QSwKKyAgICAgICAgMHg5OUZGLCAweDAwMDQsIDB4MDBFQywg MHgwMEZBLCAweDAwM0MsIDB4MDAwNCwgMHgwMEFDLCAweDAwMUEsIDB4MDA5RiwgMHgwMDA0LCAw eDJGRkQsIDB4MDA0OCwgMHgwMDdDLAorICAgICAgICAweDAwMDQsIDB4NDRDRCwgMHgwMENBLCAw eDY3RkYsIDB4MDAwNCwgMHgxRkZELCAweDAwMkEsIDB4NDQ0RCwgMHgwMDA0LCAweDAwQUQsIDB4 MDA1QSwgMHg4Q0NGLCAweDAwMDQsCisgICAgICAgIDB4NEZGRCwgMHgwMDQ4LCAweDQ0NUQsIDB4 MDAwNCwgMHgwMUJELCAweDAwOEEsIDB4NEVFRiwgMHgwMDA0LCAweDQ1REQsIDB4MDBGQSwgMHgx MTFELCAweDAwMDQsIDB4MDA5QywKKyAgICAgICAgMHgwMDFBLCAweDIyMkYsIDB4MDAwNCwgMHg4 QUVELCAweDAwNDgsIDB4ODg4RCwgMHgwMDA0LCAweDAwREMsIDB4MDBDQSwgMHhBRkZGLCAweDAw MDQsIDB4Q0ZGRCwgMHgwMDJBLAorICAgICAgICAweDAwM0QsIDB4MDAwNCwgMHgwMEJDLCAweDAw NUEsIDB4MTFCRiwgMHgwMDA0LCAweDhGRkQsIDB4MDA0OCwgMHgwMDZDLCAweDAwMDQsIDB4MDI3 RCwgMHgwMDhBLCAweDIyRUYsCisgICAgICAgIDB4MDAwNCwgMHgwMEVDLCAweDAwRkEsIDB4MDAz QywgMHgwMDA0LCAweDAwQUMsIDB4MDAxQSwgMHgyMjdGLCAweDAwMDQsIDB4MkZGRCwgMHgwMDQ4 LCAweDAwN0MsIDB4MDAwNCwKKyAgICAgICAgMHg0NENELCAweDAwQ0EsIDB4NURGRiwgMHgwMDA0 LCAweDFGRkQsIDB4MDAyQSwgMHg0NDRELCAweDAwMDQsIDB4MDBBRCwgMHgwMDVBLCAweDAwNkYs IDB4MDAwNCwgMHg0RkZELAorICAgICAgICAweDAwNDgsIDB4NDQ1RCwgMHgwMDA0LCAweDAxQkQs IDB4MDA4QSwgMHgxMURGLCAweDAwMDQsIDB4NDVERCwgMHgwMEZBLCAweDExMUQsIDB4MDAwNCwg MHgwMDlDLCAweDAwMUEsCisgICAgICAgIDB4MTU1RiwgMHgwMDA2LCAweDAwRkMsIDB4MDAxOCwg MHgxMTFELCAweDAwNDgsIDB4ODg4RCwgMHgwMEFBLCAweDREREYsIDB4MDAwNiwgMHgyQUFELCAw eDAwNUEsIDB4NjdGRiwKKyAgICAgICAgMHgwMDI4LCAweDIyM0QsIDB4MDBCQywgMHhBQUFGLCAw eDAwMDYsIDB4MDBFQywgMHgwMDE4LCAweDVGRkYsIDB4MDA0OCwgMHgwMDZDLCAweDAwOEEsIDB4 Q0NDRiwgMHgwMDA2LAorICAgICAgICAweDAwOUQsIDB4MDBDQSwgMHg0NEVGLCAweDAwMjgsIDB4 MDAzQywgMHg4RkZELCAweDEzN0YsIDB4MDAwNiwgMHg4RUVELCAweDAwMTgsIDB4MUZGRiwgMHgw MDQ4LCAweDAwN0MsCisgICAgICAgIDB4MDBBQSwgMHg0Q0NGLCAweDAwMDYsIDB4MjI3RCwgMHgw MDVBLCAweDFEREYsIDB4MDAyOCwgMHg0NDRELCAweDRGRkQsIDB4MTU1RiwgMHgwMDA2LCAweDAw REMsIDB4MDAxOCwKKyAgICAgICAgMHgyRUVGLCAweDAwNDgsIDB4NDQ1RCwgMHgwMDhBLCAweDIy QkYsIDB4MDAwNiwgMHgwMDlDLCAweDAwQ0EsIDB4OENERiwgMHgwMDI4LCAweDIyMkQsIDB4MkZG RCwgMHgyMjZGLAorICAgICAgICAweDAwMDYsIDB4MDBGQywgMHgwMDE4LCAweDExMUQsIDB4MDA0 OCwgMHg4ODhELCAweDAwQUEsIDB4MUJCRiwgMHgwMDA2LCAweDJBQUQsIDB4MDA1QSwgMHgzM0ZG LCAweDAwMjgsCisgICAgICAgIDB4MjIzRCwgMHgwMEJDLCAweDhBQUYsIDB4MDAwNiwgMHgwMEVD LCAweDAwMTgsIDB4OUJGRiwgMHgwMDQ4LCAweDAwNkMsIDB4MDA4QSwgMHg4QUJGLCAweDAwMDYs IDB4MDA5RCwKKyAgICAgICAgMHgwMENBLCAweDRFRUYsIDB4MDAyOCwgMHgwMDNDLCAweDhGRkQs IDB4NDY2RiwgMHgwMDA2LCAweDhFRUQsIDB4MDAxOCwgMHhDRkZGLCAweDAwNDgsIDB4MDA3Qywg MHgwMEFBLAorICAgICAgICAweDhDQ0YsIDB4MDAwNiwgMHgyMjdELCAweDAwNUEsIDB4QUVFRiwg MHgwMDI4LCAweDQ0NEQsIDB4NEZGRCwgMHg0NzdGLCAweDAwMDYsIDB4MDBEQywgMHgwMDE4LCAw eEFGRkYsCisgICAgICAgIDB4MDA0OCwgMHg0NDVELCAweDAwOEEsIDB4MkJCRiwgMHgwMDA2LCAw eDAwOUMsIDB4MDBDQSwgMHg0NERGLCAweDAwMjgsIDB4MjIyRCwgMHgyRkZELCAweDEzM0YsIDB4 MDBGNiwKKyAgICAgICAgMHhBRkZELCAweDFGRkIsIDB4MDAzQywgMHgwMDA4LCAweDIzQkQsIDB4 MDA3QSwgMHgxMURGLCAweDAwRjYsIDB4NDVERCwgMHgyRkZCLCAweDRFRUYsIDB4MDBEQSwgMHgx NzdELAorICAgICAgICAweENGRkQsIDB4Mzc3RiwgMHgwMEY2LCAweDNGRkQsIDB4OEZGQiwgMHgx MTFELCAweDAwMDgsIDB4MDA5QywgMHgwMDVBLCAweDFCQkYsIDB4MDBGNiwgMHgwMENELCAweDAw QkEsCisgICAgICAgIDB4OERERiwgMHg0RkZCLCAweDAwNkMsIDB4OUJGRCwgMHg0NTVGLCAweDAw RjYsIDB4NjdGRCwgMHgxRkZCLCAweDAwMkMsIDB4MDAwOCwgMHgwMEFDLCAweDAwN0EsIDB4MDA5 RiwKKyAgICAgICAgMHgwMEY2LCAweDAwQUQsIDB4MkZGQiwgMHg3RkZGLCAweDAwREEsIDB4MDA0 QywgMHg1RkZELCAweDQ3N0YsIDB4MDBGNiwgMHgwMEVDLCAweDhGRkIsIDB4MDAxQywgMHgwMDA4 LAorICAgICAgICAweDAwOEMsIDB4MDA1QSwgMHg4ODhGLCAweDAwRjYsIDB4MDBDQywgMHgwMEJB LCAweDJFRUYsIDB4NEZGQiwgMHgxMTVELCAweDhBRUQsIDB4MTEzRiwgMHgwMEY2LCAweEFGRkQs CisgICAgICAgIDB4MUZGQiwgMHgwMDNDLCAweDAwMDgsIDB4MjNCRCwgMHgwMDdBLCAweDFEREYs IDB4MDBGNiwgMHg0NURELCAweDJGRkIsIDB4QkZGRiwgMHgwMERBLCAweDE3N0QsIDB4Q0ZGRCwK KyAgICAgICAgMHg0NDdGLCAweDAwRjYsIDB4M0ZGRCwgMHg4RkZCLCAweDExMUQsIDB4MDAwOCwg MHgwMDlDLCAweDAwNUEsIDB4Mjc3RiwgMHgwMEY2LCAweDAwQ0QsIDB4MDBCQSwgMHgyMkVGLAor ICAgICAgICAweDRGRkIsIDB4MDA2QywgMHg5QkZELCAweDQ0NEYsIDB4MDBGNiwgMHg2N0ZELCAw eDFGRkIsIDB4MDAyQywgMHgwMDA4LCAweDAwQUMsIDB4MDA3QSwgMHgxMUJGLCAweDAwRjYsCisg ICAgICAgIDB4MDBBRCwgMHgyRkZCLCAweEZGRkYsIDB4MDBEQSwgMHgwMDRDLCAweDVGRkQsIDB4 MjMzRiwgMHgwMEY2LCAweDAwRUMsIDB4OEZGQiwgMHgwMDFDLCAweDAwMDgsIDB4MDA4QywKKyAg ICAgICAgMHgwMDVBLCAweDAwNkYsIDB4MDBGNiwgMHgwMENDLCAweDAwQkEsIDB4OEJCRiwgMHg0 RkZCLCAweDExNUQsIDB4OEFFRCwgMHgyMjJGfTsKKworc3RhdGljIGNvbnN0IHVpbnQxNl90IGRl Y19jeHRfdmxjX3RhYmxlMFsxMDI0XSA9IHsKKyAgICAgICAgMHgwMDI2LCAweDAwQUEsIDB4MDA0 NiwgMHgwMDZDLCAweDAwODYsIDB4OEFFRCwgMHgwMDE4LCAweDhEREYsIDB4MDAyNiwgMHgwMUJE LCAweDAwNDYsIDB4NUZGRiwgMHgwMDg2LAorICAgICAgICAweDAyN0QsIDB4MDA1QSwgMHgxNTVG LCAweDAwMjYsIDB4MDAzQSwgMHgwMDQ2LCAweDQ0NEQsIDB4MDA4NiwgMHg0Q0NELCAweDAwMTgs IDB4Q0NDRiwgMHgwMDI2LCAweDJFRkQsCisgICAgICAgIDB4MDA0NiwgMHg5OUZGLCAweDAwODYs IDB4MDA5QywgMHgwMENBLCAweDEzM0YsIDB4MDAyNiwgMHgwMEFBLCAweDAwNDYsIDB4NDQ1RCwg MHgwMDg2LCAweDhDQ0QsIDB4MDAxOCwKKyAgICAgICAgMHgxMURGLCAweDAwMjYsIDB4NEZGRCwg MHgwMDQ2LCAweENGRkYsIDB4MDA4NiwgMHgwMDlELCAweDAwNUEsIDB4MDA3RSwgMHgwMDI2LCAw eDAwM0EsIDB4MDA0NiwgMHgxRkZGLAorICAgICAgICAweDAwODYsIDB4ODhBRCwgMHgwMDE4LCAw eDAwQkUsIDB4MDAyNiwgMHg4RkZELCAweDAwNDYsIDB4NEVFRiwgMHgwMDg2LCAweDg4OEQsIDB4 MDBDQSwgMHgxMTFGLCAweDAwMjYsCisgICAgICAgIDB4MDBBQSwgMHgwMDQ2LCAweDAwNkMsIDB4 MDA4NiwgMHg4QUVELCAweDAwMTgsIDB4NDVERiwgMHgwMDI2LCAweDAxQkQsIDB4MDA0NiwgMHgy MkVGLCAweDAwODYsIDB4MDI3RCwKKyAgICAgICAgMHgwMDVBLCAweDIyN0YsIDB4MDAyNiwgMHgw MDNBLCAweDAwNDYsIDB4NDQ0RCwgMHgwMDg2LCAweDRDQ0QsIDB4MDAxOCwgMHgxMUJGLCAweDAw MjYsIDB4MkVGRCwgMHgwMDQ2LAorICAgICAgICAweDAwRkUsIDB4MDA4NiwgMHgwMDlDLCAweDAw Q0EsIDB4MjIzRiwgMHgwMDI2LCAweDAwQUEsIDB4MDA0NiwgMHg0NDVELCAweDAwODYsIDB4OEND RCwgMHgwMDE4LCAweDAwREUsCisgICAgICAgIDB4MDAyNiwgMHg0RkZELCAweDAwNDYsIDB4QUJG RiwgMHgwMDg2LCAweDAwOUQsIDB4MDA1QSwgMHgwMDZGLCAweDAwMjYsIDB4MDAzQSwgMHgwMDQ2 LCAweDZFRkYsIDB4MDA4NiwKKyAgICAgICAgMHg4OEFELCAweDAwMTgsIDB4MkFBRiwgMHgwMDI2 LCAweDhGRkQsIDB4MDA0NiwgMHgwMEVFLCAweDAwODYsIDB4ODg4RCwgMHgwMENBLCAweDIyMkYs IDB4MDAwNCwgMHgwMENBLAorICAgICAgICAweDAwODgsIDB4MDI3RCwgMHgwMDA0LCAweDRDQ0Qs IDB4MDAyOCwgMHgwMEZFLCAweDAwMDQsIDB4MkFGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwg MHgwMDlELCAweDAwMTgsCisgICAgICAgIDB4MDBERSwgMHgwMDA0LCAweDAxQkQsIDB4MDA4OCwg MHgwMDZDLCAweDAwMDQsIDB4ODhBRCwgMHgwMDI4LCAweDExREYsIDB4MDAwNCwgMHg4QUVELCAw eDAwNDgsIDB4MDAzQywKKyAgICAgICAgMHgwMDA0LCAweDg4OEQsIDB4MDAxOCwgMHgxMTFGLCAw eDAwMDQsIDB4MDBDQSwgMHgwMDg4LCAweDAwNkQsIDB4MDAwNCwgMHg4OENELCAweDAwMjgsIDB4 ODhGRiwgMHgwMDA0LAorICAgICAgICAweDhCRkQsIDB4MDA0OCwgMHg0NDRELCAweDAwMDQsIDB4 MDA5QywgMHgwMDE4LCAweDAwQkUsIDB4MDAwNCwgMHg0RUZELCAweDAwODgsIDB4NDQ1RCwgMHgw MDA0LCAweDAwQUMsCisgICAgICAgIDB4MDAyOCwgMHgwMEVFLCAweDAwMDQsIDB4NDVERCwgMHgw MDQ4LCAweDIyMkQsIDB4MDAwNCwgMHgwMDNELCAweDAwMTgsIDB4MDA3RSwgMHgwMDA0LCAweDAw Q0EsIDB4MDA4OCwKKyAgICAgICAgMHgwMjdELCAweDAwMDQsIDB4NENDRCwgMHgwMDI4LCAweDFG RkYsIDB4MDAwNCwgMHgyQUZELCAweDAwNDgsIDB4MDA1QywgMHgwMDA0LCAweDAwOUQsIDB4MDAx OCwgMHgxMUJGLAorICAgICAgICAweDAwMDQsIDB4MDFCRCwgMHgwMDg4LCAweDAwNkMsIDB4MDAw NCwgMHg4OEFELCAweDAwMjgsIDB4MjJFRiwgMHgwMDA0LCAweDhBRUQsIDB4MDA0OCwgMHgwMDND LCAweDAwMDQsCisgICAgICAgIDB4ODg4RCwgMHgwMDE4LCAweDIyN0YsIDB4MDAwNCwgMHgwMENB LCAweDAwODgsIDB4MDA2RCwgMHgwMDA0LCAweDg4Q0QsIDB4MDAyOCwgMHg0RUVGLCAweDAwMDQs IDB4OEJGRCwKKyAgICAgICAgMHgwMDQ4LCAweDQ0NEQsIDB4MDAwNCwgMHgwMDlDLCAweDAwMTgs IDB4MkFBRiwgMHgwMDA0LCAweDRFRkQsIDB4MDA4OCwgMHg0NDVELCAweDAwMDQsIDB4MDBBQywg MHgwMDI4LAorICAgICAgICAweDhEREYsIDB4MDAwNCwgMHg0NURELCAweDAwNDgsIDB4MjIyRCwg MHgwMDA0LCAweDAwM0QsIDB4MDAxOCwgMHgxNTVGLCAweDAwMDQsIDB4MDA1QSwgMHgwMDg4LCAw eDAwNkMsCisgICAgICAgIDB4MDAwNCwgMHg4OERELCAweDAwMjgsIDB4MjNGRiwgMHgwMDA0LCAw eDExRkQsIDB4MDA0OCwgMHg0NDRELCAweDAwMDQsIDB4MDBBRCwgMHgwMDE4LCAweDAwQkUsIDB4 MDAwNCwKKyAgICAgICAgMHgxMzdELCAweDAwODgsIDB4MTU1RCwgMHgwMDA0LCAweDAwQ0MsIDB4 MDAyOCwgMHgwMERFLCAweDAwMDQsIDB4MDJFRCwgMHgwMDQ4LCAweDExMUQsIDB4MDAwNCwgMHgw MDlELAorICAgICAgICAweDAwMTgsIDB4MDA3RSwgMHgwMDA0LCAweDAwNUEsIDB4MDA4OCwgMHg0 NTVELCAweDAwMDQsIDB4NDRDRCwgMHgwMDI4LCAweDAwRUUsIDB4MDAwNCwgMHgxRkZELCAweDAw NDgsCisgICAgICAgIDB4MDAzQywgMHgwMDA0LCAweDAwQUMsIDB4MDAxOCwgMHg1NTVGLCAweDAw MDQsIDB4NDdGRCwgMHgwMDg4LCAweDExM0QsIDB4MDAwNCwgMHgwMkJELCAweDAwMjgsIDB4NDc3 RiwKKyAgICAgICAgMHgwMDA0LCAweDRDREQsIDB4MDA0OCwgMHg4RkZGLCAweDAwMDQsIDB4MDA5 QywgMHgwMDE4LCAweDIyMkYsIDB4MDAwNCwgMHgwMDVBLCAweDAwODgsIDB4MDA2QywgMHgwMDA0 LAorICAgICAgICAweDg4REQsIDB4MDAyOCwgMHgwMEZFLCAweDAwMDQsIDB4MTFGRCwgMHgwMDQ4 LCAweDQ0NEQsIDB4MDAwNCwgMHgwMEFELCAweDAwMTgsIDB4ODg4RiwgMHgwMDA0LCAweDEzN0Qs CisgICAgICAgIDB4MDA4OCwgMHgxNTVELCAweDAwMDQsIDB4MDBDQywgMHgwMDI4LCAweDhDQ0Ys IDB4MDAwNCwgMHgwMkVELCAweDAwNDgsIDB4MTExRCwgMHgwMDA0LCAweDAwOUQsIDB4MDAxOCwK KyAgICAgICAgMHgwMDZGLCAweDAwMDQsIDB4MDA1QSwgMHgwMDg4LCAweDQ1NUQsIDB4MDAwNCwg MHg0NENELCAweDAwMjgsIDB4MURERiwgMHgwMDA0LCAweDFGRkQsIDB4MDA0OCwgMHgwMDNDLAor ICAgICAgICAweDAwMDQsIDB4MDBBQywgMHgwMDE4LCAweDIyN0YsIDB4MDAwNCwgMHg0N0ZELCAw eDAwODgsIDB4MTEzRCwgMHgwMDA0LCAweDAyQkQsIDB4MDAyOCwgMHgyMkJGLCAweDAwMDQsCisg ICAgICAgIDB4NENERCwgMHgwMDQ4LCAweDIyRUYsIDB4MDAwNCwgMHgwMDlDLCAweDAwMTgsIDB4 MjMzRiwgMHgwMDA2LCAweDREREQsIDB4NEZGQiwgMHhDRkZGLCAweDAwMTgsIDB4MTEzRCwKKyAg ICAgICAgMHgwMDVBLCAweDg4OEYsIDB4MDAwNiwgMHgyM0JELCAweDAwOEEsIDB4MDBFRSwgMHgw MDJBLCAweDE1NUQsIDB4QUFGRCwgMHgyNzdGLCAweDAwMDYsIDB4NDRDRCwgMHg4RkZCLAorICAg ICAgICAweDQ0RUYsIDB4MDAxOCwgMHg0NjdELCAweDAwNEEsIDB4MkFBRiwgMHgwMDA2LCAweDAw QUMsIDB4NTU1QiwgMHg5OURGLCAweDFGRkIsIDB4MDAzQywgMHg1RkZELCAweDI2NkYsCisgICAg ICAgIDB4MDAwNiwgMHgxRERELCAweDRGRkIsIDB4NkVGRiwgMHgwMDE4LCAweDE3N0QsIDB4MDA1 QSwgMHgxQkJGLCAweDAwMDYsIDB4ODhBRCwgMHgwMDhBLCAweDVEREYsIDB4MDAyQSwKKyAgICAg ICAgMHg0NDRELCAweDJGRkQsIDB4NjY3RiwgMHgwMDA2LCAweDAwQ0MsIDB4OEZGQiwgMHgyRUVG LCAweDAwMTgsIDB4NDU1RCwgMHgwMDRBLCAweDExOUYsIDB4MDAwNiwgMHgwMDlDLAorICAgICAg ICAweDU1NUIsIDB4OENDRiwgMHgxRkZCLCAweDExMUQsIDB4OENFRCwgMHgwMDZFLCAweDAwMDYs IDB4NERERCwgMHg0RkZCLCAweDNGRkYsIDB4MDAxOCwgMHgxMTNELCAweDAwNUEsCisgICAgICAg IDB4MTFCRiwgMHgwMDA2LCAweDIzQkQsIDB4MDA4QSwgMHg4RERGLCAweDAwMkEsIDB4MTU1RCwg MHhBQUZELCAweDIyMkYsIDB4MDAwNiwgMHg0NENELCAweDhGRkIsIDB4MDBGRSwKKyAgICAgICAg MHgwMDE4LCAweDQ2N0QsIDB4MDA0QSwgMHg4OTlGLCAweDAwMDYsIDB4MDBBQywgMHg1NTVCLCAw eDAwREUsIDB4MUZGQiwgMHgwMDNDLCAweDVGRkQsIDB4NDQ2RiwgMHgwMDA2LAorICAgICAgICAw eDFEREQsIDB4NEZGQiwgMHg5QkZGLCAweDAwMTgsIDB4MTc3RCwgMHgwMDVBLCAweDAwQkUsIDB4 MDAwNiwgMHg4OEFELCAweDAwOEEsIDB4Q0RERiwgMHgwMDJBLCAweDQ0NEQsCisgICAgICAgIDB4 MkZGRCwgMHgwMDdFLCAweDAwMDYsIDB4MDBDQywgMHg4RkZCLCAweDRFRUYsIDB4MDAxOCwgMHg0 NTVELCAweDAwNEEsIDB4Mzc3RiwgMHgwMDA2LCAweDAwOUMsIDB4NTU1QiwKKyAgICAgICAgMHg4 QkJGLCAweDFGRkIsIDB4MTExRCwgMHg4Q0VELCAweDIzM0YsIDB4MDAwNCwgMHgwMEFBLCAweDAw ODgsIDB4MDQ3RCwgMHgwMDA0LCAweDAxREQsIDB4MDAyOCwgMHgxMURGLAorICAgICAgICAweDAw MDQsIDB4MjdGRCwgMHgwMDQ4LCAweDAwNUMsIDB4MDAwNCwgMHg4QUFELCAweDAwMTgsIDB4MkJC RiwgMHgwMDA0LCAweDAwOUMsIDB4MDA4OCwgMHgwMDZDLCAweDAwMDQsCisgICAgICAgIDB4MDBD QywgMHgwMDI4LCAweDAwRUUsIDB4MDAwNCwgMHg4Q0VELCAweDAwNDgsIDB4MjIyRCwgMHgwMDA0 LCAweDg4OEQsIDB4MDAxOCwgMHgwMDdFLCAweDAwMDQsIDB4MDBBQSwKKyAgICAgICAgMHgwMDg4 LCAweDAwNkQsIDB4MDAwNCwgMHg4OENELCAweDAwMjgsIDB4MDBGRSwgMHgwMDA0LCAweDE5RkQs IDB4MDA0OCwgMHgwMDNDLCAweDAwMDQsIDB4MkFBRCwgMHgwMDE4LAorICAgICAgICAweEFBQUYs IDB4MDAwNCwgMHg4QkZELCAweDAwODgsIDB4MDA1RCwgMHgwMDA0LCAweDAwQkQsIDB4MDAyOCwg MHg0Q0NGLCAweDAwMDQsIDB4NDRFRCwgMHgwMDQ4LCAweDRGRkYsCisgICAgICAgIDB4MDAwNCwg MHgyMjNELCAweDAwMTgsIDB4MTExRiwgMHgwMDA0LCAweDAwQUEsIDB4MDA4OCwgMHgwNDdELCAw eDAwMDQsIDB4MDFERCwgMHgwMDI4LCAweDk5RkYsIDB4MDAwNCwKKyAgICAgICAgMHgyN0ZELCAw eDAwNDgsIDB4MDA1QywgMHgwMDA0LCAweDhBQUQsIDB4MDAxOCwgMHgwMEJFLCAweDAwMDQsIDB4 MDA5QywgMHgwMDg4LCAweDAwNkMsIDB4MDAwNCwgMHgwMENDLAorICAgICAgICAweDAwMjgsIDB4 MDBERSwgMHgwMDA0LCAweDhDRUQsIDB4MDA0OCwgMHgyMjJELCAweDAwMDQsIDB4ODg4RCwgMHgw MDE4LCAweDQ0NEYsIDB4MDAwNCwgMHgwMEFBLCAweDAwODgsCisgICAgICAgIDB4MDA2RCwgMHgw MDA0LCAweDg4Q0QsIDB4MDAyOCwgMHgyRUVGLCAweDAwMDQsIDB4MTlGRCwgMHgwMDQ4LCAweDAw M0MsIDB4MDAwNCwgMHgyQUFELCAweDAwMTgsIDB4NDQ3RiwKKyAgICAgICAgMHgwMDA0LCAweDhC RkQsIDB4MDA4OCwgMHgwMDVELCAweDAwMDQsIDB4MDBCRCwgMHgwMDI4LCAweDAwOUYsIDB4MDAw NCwgMHg0NEVELCAweDAwNDgsIDB4NjdGRiwgMHgwMDA0LAorICAgICAgICAweDIyM0QsIDB4MDAx OCwgMHgxMzNGLCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDlERkYsIDB4MkZGQiwgMHg0NjdE LCAweDFGRkQsIDB4OTlCRiwgMHgwMDA2LCAweDJBQUQsCisgICAgICAgIDB4MDAyQSwgMHg2NkVG LCAweDRGRkIsIDB4MDA1QywgMHgyRUVELCAweDM3N0YsIDB4MDAwNiwgMHg4OUJELCAweDAwNEEs IDB4MDBGRSwgMHg4RkZCLCAweDAwNkMsIDB4NjdGRCwKKyAgICAgICAgMHg4ODlGLCAweDAwMDYs IDB4ODg4RCwgMHgwMDFBLCAweDVEREYsIDB4MDBBQSwgMHgyMjJELCAweDg5REQsIDB4NDQ0Riwg MHgwMDA2LCAweDJCQkQsIDB4MDA4QSwgMHhDRkZGLAorICAgICAgICAweDJGRkIsIDB4MjI2RCwg MHgwMDlDLCAweDAwQkUsIDB4MDAwNiwgMHhBQUFELCAweDAwMkEsIDB4MURERiwgMHg0RkZCLCAw eDAwM0MsIDB4NERERCwgMHg0NjZGLCAweDAwMDYsCisgICAgICAgIDB4OEFBRCwgMHgwMDRBLCAw eEFFRUYsIDB4OEZGQiwgMHg0NDVELCAweDhFRUQsIDB4MTc3RiwgMHgwMDA2LCAweDIzM0QsIDB4 MDAxQSwgMHg0Q0NGLCAweDAwQUEsIDB4QUZGRiwKKyAgICAgICAgMHg4OENELCAweDEzM0YsIDB4 MDAwNiwgMHgwMENDLCAweDAwOEEsIDB4NzdGRiwgMHgyRkZCLCAweDQ2N0QsIDB4MUZGRCwgMHgz QkJGLCAweDAwMDYsIDB4MkFBRCwgMHgwMDJBLAorICAgICAgICAweDAwRUUsIDB4NEZGQiwgMHgw MDVDLCAweDJFRUQsIDB4MDA3RSwgMHgwMDA2LCAweDg5QkQsIDB4MDA0QSwgMHg0RUVGLCAweDhG RkIsIDB4MDA2QywgMHg2N0ZELCAweDY2N0YsCisgICAgICAgIDB4MDAwNiwgMHg4ODhELCAweDAw MUEsIDB4MDBERSwgMHgwMEFBLCAweDIyMkQsIDB4ODlERCwgMHgzMzNGLCAweDAwMDYsIDB4MkJC RCwgMHgwMDhBLCAweDU3RkYsIDB4MkZGQiwKKyAgICAgICAgMHgyMjZELCAweDAwOUMsIDB4MTk5 RiwgMHgwMDA2LCAweEFBQUQsIDB4MDAyQSwgMHg5OURGLCAweDRGRkIsIDB4MDAzQywgMHg0RERE LCAweDE1NUYsIDB4MDAwNiwgMHg4QUFELAorICAgICAgICAweDAwNEEsIDB4Q0VFRiwgMHg4RkZC LCAweDQ0NUQsIDB4OEVFRCwgMHgyNzdGLCAweDAwMDYsIDB4MjMzRCwgMHgwMDFBLCAweDFCQkYs IDB4MDBBQSwgMHgzRkZGLCAweDg4Q0QsCisgICAgICAgIDB4MTExRiwgMHgwMDA2LCAweDQ1REQs IDB4MkZGQiwgMHgxMTFELCAweDAwMTgsIDB4NDY3RCwgMHg4RkZELCAweENDQ0YsIDB4MDAwNiwg MHgxOUJELCAweDAwNEEsIDB4MjJFRiwKKyAgICAgICAgMHgwMDJBLCAweDIyMkQsIDB4M0ZGRCwg MHg4ODhGLCAweDAwMDYsIDB4MDBDQywgMHgwMDhBLCAweDAwRkUsIDB4MDAxOCwgMHgxMTVELCAw eENGRkQsIDB4OEFBRiwgMHgwMDA2LAorICAgICAgICAweDAwQUMsIDB4MDAzQSwgMHg4Q0RGLCAw eDFGRkIsIDB4MTMzRCwgMHg2NkZELCAweDQ2NkYsIDB4MDAwNiwgMHg4Q0NELCAweDJGRkIsIDB4 NUZGRiwgMHgwMDE4LCAweDAwNkMsCisgICAgICAgIDB4NEZGRCwgMHhBQkJGLCAweDAwMDYsIDB4 MjJBRCwgMHgwMDRBLCAweDAwRUUsIDB4MDAyQSwgMHgyMzNELCAweEFFRkQsIDB4Mzc3RiwgMHgw MDA2LCAweDJCQkQsIDB4MDA4QSwKKyAgICAgICAgMHg1NURGLCAweDAwMTgsIDB4MDA1QywgMHgx NzdELCAweDExOUYsIDB4MDAwNiwgMHgwMDlDLCAweDAwM0EsIDB4NENDRiwgMHgxRkZCLCAweDMz M0QsIDB4OEVFRCwgMHg0NDRGLAorICAgICAgICAweDAwMDYsIDB4NDVERCwgMHgyRkZCLCAweDEx MUQsIDB4MDAxOCwgMHg0NjdELCAweDhGRkQsIDB4OTlCRiwgMHgwMDA2LCAweDE5QkQsIDB4MDA0 QSwgMHgyRUVGLCAweDAwMkEsCisgICAgICAgIDB4MjIyRCwgMHgzRkZELCAweDY2N0YsIDB4MDAw NiwgMHgwMENDLCAweDAwOEEsIDB4NEVFRiwgMHgwMDE4LCAweDExNUQsIDB4Q0ZGRCwgMHg4OTlG LCAweDAwMDYsIDB4MDBBQywKKyAgICAgICAgMHgwMDNBLCAweDAwREUsIDB4MUZGQiwgMHgxMzNE LCAweDY2RkQsIDB4MjI2RiwgMHgwMDA2LCAweDhDQ0QsIDB4MkZGQiwgMHg5QkZGLCAweDAwMTgs IDB4MDA2QywgMHg0RkZELAorICAgICAgICAweDAwQkUsIDB4MDAwNiwgMHgyMkFELCAweDAwNEEs IDB4MURERiwgMHgwMDJBLCAweDIzM0QsIDB4QUVGRCwgMHgwMDdFLCAweDAwMDYsIDB4MkJCRCwg MHgwMDhBLCAweENFRUYsCisgICAgICAgIDB4MDAxOCwgMHgwMDVDLCAweDE3N0QsIDB4Mjc3Riwg MHgwMDA2LCAweDAwOUMsIDB4MDAzQSwgMHg4QkJGLCAweDFGRkIsIDB4MzMzRCwgMHg4RUVELCAw eDQ1NUYsIDB4MUZGOSwKKyAgICAgICAgMHgxRERELCAweEFGRkIsIDB4MDBERSwgMHg4RkY5LCAw eDAwMUMsIDB4RkZGQiwgMHg0NzdGLCAweDRGRjksIDB4MTc3RCwgMHgzRkZCLCAweDNCQkYsIDB4 MkZGOSwgMHhBRUVGLAorICAgICAgICAweDhFRUQsIDB4NDQ0RiwgMHgxRkY5LCAweDIyQUQsIDB4 MDAwQSwgMHg4QkJGLCAweDhGRjksIDB4MDBGRSwgMHhDRkZELCAweDAwN0UsIDB4NEZGOSwgMHgx MTVELCAweDVGRkIsCisgICAgICAgIDB4NTc3RiwgMHgyRkY5LCAweDhEREYsIDB4MkVFRCwgMHgz MzNGLCAweDFGRjksIDB4MkJCRCwgMHhBRkZCLCAweDg4Q0YsIDB4OEZGOSwgMHhCRkZGLCAweEZG RkIsIDB4Mzc3RiwKKyAgICAgICAgMHg0RkY5LCAweDAwNkQsIDB4M0ZGQiwgMHgwMEJFLCAweDJG RjksIDB4NjZFRiwgMHg5RkZELCAweDEzM0YsIDB4MUZGOSwgMHgwMDlELCAweDAwMEEsIDB4QUJC RiwgMHg4RkY5LAorICAgICAgICAweERGRkYsIDB4NkZGRCwgMHgwMDZFLCAweDRGRjksIDB4MDAy QywgMHg1RkZCLCAweDg4OEYsIDB4MkZGOSwgMHhDRERGLCAweDREREQsIDB4MjIyRiwgMHgxRkY5 LCAweDFEREQsCisgICAgICAgIDB4QUZGQiwgMHg0Q0NGLCAweDhGRjksIDB4MDAxQywgMHhGRkZC LCAweDI3N0YsIDB4NEZGOSwgMHgxNzdELCAweDNGRkIsIDB4OTlCRiwgMHgyRkY5LCAweENFRUYs IDB4OEVFRCwKKyAgICAgICAgMHgwMDRFLCAweDFGRjksIDB4MjJBRCwgMHgwMDBBLCAweDAwQUUs IDB4OEZGOSwgMHg3RkZGLCAweENGRkQsIDB4MDA1RSwgMHg0RkY5LCAweDExNUQsIDB4NUZGQiwg MHgwMDlFLAorICAgICAgICAweDJGRjksIDB4NURERiwgMHgyRUVELCAweDAwM0UsIDB4MUZGOSwg MHgyQkJELCAweEFGRkIsIDB4MDBDRSwgMHg4RkY5LCAweEVGRkYsIDB4RkZGQiwgMHg2NjdGLCAw eDRGRjksCisgICAgICAgIDB4MDA2RCwgMHgzRkZCLCAweDhBQUYsIDB4MkZGOSwgMHgwMEVFLCAw eDlGRkQsIDB4MjMzRiwgMHgxRkY5LCAweDAwOUQsIDB4MDAwQSwgMHgxQkJGLCAweDhGRjksIDB4 NEVFRiwKKyAgICAgICAgMHg2RkZELCAweDQ1NUYsIDB4NEZGOSwgMHgwMDJDLCAweDVGRkIsIDB4 MDA4RSwgMHgyRkY5LCAweDk5REYsIDB4NERERCwgMHgxMTFGfTsKZGlmZiAtLWdpdCBhL2xpYmF2 Y29kZWMvanBlZzIwMDBodGRlYy5oIGIvbGliYXZjb2RlYy9qcGVnMjAwMGh0ZGVjLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTcyZDA5NWM5MgotLS0gL2Rldi9udWxs CisrKyBiL2xpYmF2Y29kZWMvanBlZzIwMDBodGRlYy5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisg KiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FsZWIgRXRlbWVzaSA8ZXRlbWVzaWNhbGViQGdtYWlsLmNv bT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVz c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi bGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG cmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNP REVDX0pQRUcyMDAwSFRERUNfSAorI2RlZmluZSBBVkNPREVDX0pQRUcyMDAwSFRERUNfSAorCisj aW5jbHVkZSAianBlZzIwMDBkZWMuaCIKKworLyoqCisgKiBIVCBCbG9jayBkZWNvZGVyIGFzIHNw ZWNpZmllZCBpbiBSZWMuIElUVS1UIFQuODE0IHwgSVNPL0lFQyAxNTQ0NC0xNQorICovCisKK2lu dCBmZl9qcGVnMjAwMF9kZWNvZGVfaHRqMmsoY29uc3QgSnBlZzIwMDBEZWNvZGVyQ29udGV4dCAq cywgSnBlZzIwMDBDb2RpbmdTdHlsZSAqY29kc3R5LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEpwZWcyMDAwVDFDb250ZXh0ICp0MSwgSnBlZzIwMDBDYmxrICpjYmxrLCBpbnQgd2lkdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwgaW50IG1hZ3AsIHVpbnQ4 X3Qgcm9pX3NoaWZ0KTsKKworI2VuZGlmIC8qIEFWQ09ERUNfSlBFRzIwMDBIVERFQ19IICovCi0t IAoyLjI1LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKaHR0cHM6 Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpUbyB1bnN1YnNjcmli ZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJlcXVlc3RAZmZtcGVn Lm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K