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 44C484B622 for ; Sun, 9 Jun 2024 20:09:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6A34668D319; Sun, 9 Jun 2024 23:09:09 +0300 (EEST) Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5593768D620 for ; Sun, 9 Jun 2024 23:09:02 +0300 (EEST) Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-2eaa89464a3so41852011fa.3 for ; Sun, 09 Jun 2024 13:09:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1717963741; x=1718568541; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=kh/yOOr6TJc42JXfRn2JCAyIBR8rhZI/qorNI/lxsnc=; b=h707GipUElhuIZMErRUi/0wbuHzajjdUiC4BJdoyWbysprO4u2BCxgZIp02hHdnKWl L7eNcsN/j6cJIb3WD4N7kUI+j2YozIZOLOVg/XmuNOCFWOoiSIsOkwp8HzXupB7Al6uG Jz5jy65aq/muWpSXc+vP0IjpFBCu3XN0Di92HEDLoguY4drSE/uCarehooWJCJFRxGb9 SwOeVdc8m9bXq9a3xFxPsz0p/NOAbkgLU4IG1Yo1LJSQPwQuupWJuSyKwhRqyCvKJiwW Sl2edEgZ4EibAmZV4+Q3B3HhbAt/uhRauP7mEO6iHlVgtvudV99FZkX/2MmDJ7UNBh/c njwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717963741; x=1718568541; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=kh/yOOr6TJc42JXfRn2JCAyIBR8rhZI/qorNI/lxsnc=; b=vmrcrbw2R2si8GgWGl1pqQmYxdmjMvbaB3qyNHBd32/qpE3KQ5bzY3/zQKtdsAVR21 isuAdvsh/4D7oEuUfM71Q4z1yWKONdJEEeVjDlYb3DRk/bJTr6UKVr5Q8CI5Pa8ju9wf F7urfosTrwqEgHKWZ7IbLtd7AA1WMjxmsW0w95rTSewyODkuw5etQqav2eKt/2FQnqV3 2f1h4yC/XAWw6aWkLk27j309kHTlmAarHzOOeWczj5GOyxfyaGOk4pmDy1bFAQWK3p1f BqzzgFVo8HtJGpGh8GEda0cgOJraEyJuvI9HkpAN8UVlxCHh8GoMy4i0ElylhfaACunT LaUg== X-Gm-Message-State: AOJu0YzFQChYFJS9znyG0jWlgULZDYyEjb1DfO0FHqzxc12AggDNRo9n N8e32npIlnc4LIQF5KHt0I3U2y654nvJddkcshzCHPljXQKWgJ5kGSQjPi5txgnMifxTWha5gTU tSmyXlIwI+6tqzeFtBRKiLMByE0vWZckP X-Google-Smtp-Source: AGHT+IH7j+6yY9xt7jdCVCulxCL52M26uK0uzmmbVksjzPSqle9Waib65y8Xsap/KyhrH/m2FF691JE/9rnrOGl1MNU= X-Received: by 2002:a2e:990a:0:b0:2eb:e5f6:d661 with SMTP id 38308e7fff4ca-2ebe5f6d6cemr8654281fa.12.1717963740851; Sun, 09 Jun 2024 13:09:00 -0700 (PDT) MIME-Version: 1.0 From: Sean McGovern Date: Sun, 9 Jun 2024 16:08:48 -0400 Message-ID: To: FFmpeg development discussions and patches Content-Type: multipart/mixed; boundary="000000000000833a8b061a7a9a12" Subject: [FFmpeg-devel] remove DEC Alpha DSP & support code X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --000000000000833a8b061a7a9a12 Content-Type: text/plain; charset="UTF-8" Hi, Attached is a patch to do proper removal of support for the DEC Alpha. I hope it is not mangled. Side note: it seems GMail now prevents sending patches directly with git send-email -- I really wish we could move to a CI platform like GitLab or Gitea. -- Sean McGovern --000000000000833a8b061a7a9a12 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-libavcodec-alpha-remove-DSP-support-code.patch" Content-Disposition: attachment; filename="0001-libavcodec-alpha-remove-DSP-support-code.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lx7z7jo70 RnJvbSA2OGQyYmM3NmRmZDhkMTUzZGU1Y2Q2MjQ1YjU0ODVkZThkMjJmMzFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTZWFuIE1jR292ZXJuIDxnc2Vhbm1jZ0BnbWFpbC5jb20+CkRh dGU6IFN1biwgOSBKdW4gMjAyNCAxMzoyMDoyNCAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIGxpYmF2 Y29kZWMvYWxwaGE6IHJlbW92ZSBEU1AgJiBzdXBwb3J0IGNvZGUKCkludHJvZHVjZWQgaW4gMTk5 MiwgdGhlIEFscGhhIHdhcyBhIDY0LWJpdCBSSVNDIHByb2Nlc3NvciBkZXNpZ25lZCB0byByZXBs YWNlIHRoZQpWQVggQ0lTQyBtYWNoaW5lcyBzb2xkIGJ5IERpZ2l0YWwgRXF1aXBtZW50IENvcnBv cmF0aW9uLgoKQWZ0ZXIgRGlnaXRhbCB3YXMgYWNxdWlyZWQgYnkgQ29tcGFxIGluIDE5OTggLS0g d2hvIHRoZW1zZWx2ZXMgd291bGQgYmUgbGF0ZXIKcHVyY2hhc2VkIGJ5IEhld2xldHQtUGFja2Fy ZCwgdGhlIGFyY2hpdGVjdHVyZSB3YXMgcGhhc2VkIG91dCBvdmVyIHRoZSBmb2xsb3dpbmcgZGVj YWRlLgpJdCBiZWNhbWUgZWZmZWN0aXZlbHkgZGVmdW5jdCBpbiAyMDA3LCB0aGUgbGFzdCBwdWJs aWNhbGx5IGF2YWlsYWJsZSBwcm9jZXNzb3IgYmVpbmcgdGhlIEFscGhhIDIxMzY0LgoKRkZtcGVn IGhhcyBub3QgYWRkZWQgYW55IERTUCBjb2RlIGZvciB0aGlzIGFyY2hpdGVjdHVyZSBzaW5jZSBs b3dyZXMyIHdhcyBpbnRyb2R1Y2VkIGluIDIwMTIsCmFuZCBpdCBpcyBtb3JlIHRoYW4gdW5saWtl bHkgc29tZW9uZSBzdGlsbCB3aXNoZXMgdG8gbWFpbnRhaW4gaXQuCgpSZW1vdmUgdGhlIERTUCBh bmQgc3VwcG9ydCBjb2RlLgotLS0KIENoYW5nZWxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMSArCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTUgKy0K IGxpYmF2Y29kZWMvYWxwaGEvTWFrZWZpbGUgICAgICAgICAgICB8ICAxMCAtCiBsaWJhdmNvZGVj L2FscGhhL2FzbS5oICAgICAgICAgICAgICAgfCAxNTMgLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29k ZWMvYWxwaGEvYmxvY2tkc3BfYWxwaGEuYyAgICB8ICA0OSAtLS0tLQogbGliYXZjb2RlYy9hbHBo YS9ocGVsZHNwX2FscGhhLmMgICAgIHwgMjEzIC0tLS0tLS0tLS0tLS0tLS0tLS0KIGxpYmF2Y29k ZWMvYWxwaGEvaHBlbGRzcF9hbHBoYS5oICAgICB8ICAyOCAtLS0KIGxpYmF2Y29kZWMvYWxwaGEv aHBlbGRzcF9hbHBoYV9hc20uUyB8IDEyNSAtLS0tLS0tLS0tLQogbGliYXZjb2RlYy9hbHBoYS9p ZGN0ZHNwX2FscGhhLmMgICAgIHwgMTI3IC0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL2FscGhhL2lk Y3Rkc3BfYWxwaGEuaCAgICAgfCAgMzQgLS0tCiBsaWJhdmNvZGVjL2FscGhhL2lkY3Rkc3BfYWxw aGFfYXNtLlMgfCAxNjcgLS0tLS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL2FscGhhL21lX2NtcF9h bHBoYS5jICAgICAgfCAyNzkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBsaWJhdmNvZGVjL2Fs cGhhL21lX2NtcF9tdmlfYXNtLlMgICAgfCAxNzkgLS0tLS0tLS0tLS0tLS0tLQogbGliYXZjb2Rl Yy9hbHBoYS9tcGVndmlkZW9fYWxwaGEuYyAgIHwgMTEwIC0tLS0tLS0tLS0KIGxpYmF2Y29kZWMv YWxwaGEvcGl4YmxvY2tkc3BfYWxwaGEuYyB8ICA3OSAtLS0tLS0tCiBsaWJhdmNvZGVjL2FscGhh L3JlZ2RlZi5oICAgICAgICAgICAgfCAgNzcgLS0tLS0tLQogbGliYXZjb2RlYy9hbHBoYS9zaW1w bGVfaWRjdF9hbHBoYS5jIHwgMzAzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogbGliYXZj b2RlYy9ibG9ja2RzcC5jICAgICAgICAgICAgICAgIHwgICA0ICstCiBsaWJhdmNvZGVjL2hwZWxk c3AuYyAgICAgICAgICAgICAgICAgfCAgIDIgLQogbGliYXZjb2RlYy9pZGN0ZHNwLmMgICAgICAg ICAgICAgICAgIHwgICAyIC0KIGxpYmF2Y29kZWMvbWVfY21wLmMgICAgICAgICAgICAgICAgICB8 ICAgMiAtCiBsaWJhdmNvZGVjL21wZWd2aWRlby5jICAgICAgICAgICAgICAgfCAgIDQgKy0KIGxp YmF2Y29kZWMvcGl4YmxvY2tkc3AuYyAgICAgICAgICAgICB8ICAgMiAtCiAyMyBmaWxlcyBjaGFu Z2VkLCA2IGluc2VydGlvbnMoKyksIDE5NTkgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2 NDQgbGliYXZjb2RlYy9hbHBoYS9NYWtlZmlsZQogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29k ZWMvYWxwaGEvYXNtLmgKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2FscGhhL2Jsb2Nr ZHNwX2FscGhhLmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2FscGhhL2hwZWxkc3Bf YWxwaGEuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9hbHBo YS5oCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hbHBoYS9ocGVsZHNwX2FscGhhX2Fz bS5TCiBkZWxldGUgbW9kZSAxMDA2NDQgbGliYXZjb2RlYy9hbHBoYS9pZGN0ZHNwX2FscGhhLmMK IGRlbGV0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2FscGhhL2lkY3Rkc3BfYWxwaGEuaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9hbHBoYV9hc20uUwogZGVs ZXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvYWxwaGEvbWVfY21wX2FscGhhLmMKIGRlbGV0ZSBt b2RlIDEwMDY0NCBsaWJhdmNvZGVjL2FscGhhL21lX2NtcF9tdmlfYXNtLlMKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBsaWJhdmNvZGVjL2FscGhhL21wZWd2aWRlb19hbHBoYS5jCiBkZWxldGUgbW9kZSAx MDA2NDQgbGliYXZjb2RlYy9hbHBoYS9waXhibG9ja2RzcF9hbHBoYS5jCiBkZWxldGUgbW9kZSAx MDA2NDQgbGliYXZjb2RlYy9hbHBoYS9yZWdkZWYuaAogZGVsZXRlIG1vZGUgMTAwNjQ0IGxpYmF2 Y29kZWMvYWxwaGEvc2ltcGxlX2lkY3RfYWxwaGEuYwoKZGlmZiAtLWdpdCBhL0NoYW5nZWxvZyBi L0NoYW5nZWxvZwppbmRleCAwM2Q2YjI5YWQ4Li44ODFiMGU2N2EzIDEwMDY0NAotLS0gYS9DaGFu Z2Vsb2cKKysrIGIvQ2hhbmdlbG9nCkBAIC0xMiw2ICsxMiw3IEBAIHZlcnNpb24gPG5leHQ+Ogog LSBxc3ZfcGFyYW1zIG9wdGlvbiBhZGRlZCBmb3IgUVNWIGVuY29kZXJzCiAtIFZWQyBkZWNvZGVy IGNvbXBhdGlibGUgd2l0aCBEVkIgdGVzdCBjb250ZW50CiAtIHhIRS1BQUMgZGVjb2RlcgorLSBy ZW1vdmVkIERFQyBBbHBoYSBEU1AgYW5kIHN1cHBvcnQgY29kZQogCiAKIHZlcnNpb24gNy4wOgpk aWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDZjNWI4YWFiOWEuLmZiYWQ1 N2VlNmUgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTIxMjgsNyAr MjEyOCw2IEBAIEFVVE9ERVRFQ1RfTElCUz0iCiAKIEFSQ0hfTElTVD0iCiAgICAgYWFyY2g2NAot ICAgIGFscGhhCiAgICAgYXJtCiAgICAgYXZyMzIKICAgICBhdnIzMl9hcApAQCAtMjgxNiw4ICsy ODE1LDggQEAgZm9yIGV4dCBpbiAkKGZpbHRlcl9vdXQgbW14ICRBUkNIX0VYVF9MSVNUX1g4Nl9T SU1EKTsgZG8KIGRvbmUKIAogYWxpZ25lZF9zdGFja19pZl9hbnk9ImFhcmNoNjQgcHBjIHg4NiIK LWZhc3RfNjRiaXRfaWZfYW55PSJhYXJjaDY0IGFscGhhIGlhNjQgbWlwczY0IHBhcmlzYzY0IHBw YzY0IHJpc2N2NjQgc3BhcmM2NCB4ODZfNjQiCi1mYXN0X2Nsel9pZl9hbnk9ImFhcmNoNjQgYWxw aGEgYXZyMzIgbWlwcyBwcGMgeDg2IgorZmFzdF82NGJpdF9pZl9hbnk9ImFhcmNoNjQgaWE2NCBt aXBzNjQgcGFyaXNjNjQgcHBjNjQgcmlzY3Y2NCBzcGFyYzY0IHg4Nl82NCIKK2Zhc3RfY2x6X2lm X2FueT0iYWFyY2g2NCBhdnIzMiBtaXBzIHBwYyB4ODYiCiBmYXN0X3VuYWxpZ25lZF9pZl9hbnk9 ImFhcmNoNjQgcHBjIHg4NiIKIHNpbWRfYWxpZ25fMTZfaWZfYW55PSJhbHRpdmVjIG5lb24gc3Nl Igogc2ltZF9hbGlnbl8zMl9pZl9hbnk9ImF2eCIKQEAgLTUyNzgsMTAgKzUyNzcsNiBAQCBpZiBl bmFibGVkIGFhcmNoNjQ7IHRoZW4KICAgICAgICAgOzsKICAgICBlc2FjCiAKLWVsaWYgZW5hYmxl ZCBhbHBoYTsgdGhlbgotCi0gICAgY3B1ZmxhZ3M9Ii1tY3B1PSRjcHUiCi0KIGVsaWYgZW5hYmxl ZCBhcm07IHRoZW4KIAogICAgIGNoZWNrX2FybV9hcmNoKCkgewpAQCAtNTY2Myw3ICs1NjU4LDcg QEAgY2hlY2tfNjRiaXQoKXsKIH0KIAogY2FzZSAiJGFyY2giIGluCi0gICAgYWFyY2g2NHxhbHBo YXxpYTY0KQorICAgIGFhcmNoNjR8aWE2NCkKICAgICAgICAgZW5hYmxlZCBzaGFyZWQgJiYgZW5h YmxlX3dlYWsgcGljCiAgICAgOzsKICAgICBsb29uZ2FyY2gpCkBAIC02MjQyLDEwICs2MjM3LDYg QEAgaWYgZW5hYmxlZCBhYXJjaDY0OyB0aGVuCiAgICAgICAgIGVuYWJsZWRfYW55ICR7dn1fZXh0 ZXJuYWwgJHt2fV9pbmxpbmUgfHwgZGlzYWJsZSAkdgogICAgIGRvbmUKIAotZWxpZiBlbmFibGVk IGFscGhhOyB0aGVuCi0KLSAgICBjaGVja19jZmxhZ3MgLW1pZWVlCi0KIGVsaWYgZW5hYmxlZCBh cm07IHRoZW4KIAogICAgIGVuYWJsZWQgbXN2YyAmJiBjaGVja19jcHBfY29uZGl0aW9uIHRodW1i IHN0ZGRlZi5oICJkZWZpbmVkIF9NX0FSTVQiCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FscGhh L01ha2VmaWxlIGIvbGliYXZjb2RlYy9hbHBoYS9NYWtlZmlsZQpkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNzk2ZDk3NjJiMy4uMDAwMDAwMDAwMAotLS0gYS9saWJhdmNvZGVjL2FscGhh L01ha2VmaWxlCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotT0JKUy0kKENPTkZJR19C TE9DS0RTUCkgICAgICAgICAgICAgICAgICs9IGFscGhhL2Jsb2NrZHNwX2FscGhhLm8KLU9CSlMt JChDT05GSUdfTUVfQ01QKSAgICAgICAgICAgICAgICAgICArPSBhbHBoYS9tZV9jbXBfYWxwaGEu byAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh bHBoYS9tZV9jbXBfbXZpX2FzbS5vCi1PQkpTLSQoQ09ORklHX0hQRUxEU1ApICAgICAgICAgICAg ICAgICAgKz0gYWxwaGEvaHBlbGRzcF9hbHBoYS5vICAgICAgICBcCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGEvaHBlbGRzcF9hbHBoYV9hc20ubwotT0JK Uy0kKENPTkZJR19JRENURFNQKSAgICAgICAgICAgICAgICAgICs9IGFscGhhL2lkY3Rkc3BfYWxw aGEubyAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFscGhhL2lkY3Rkc3BfYWxwaGFfYXNtLm8gICAgXAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFscGhhL3NpbXBsZV9pZGN0X2FscGhhLm8KLU9CSlMtJChDT05G SUdfTVBFR1ZJREVPKSAgICAgICAgICAgICAgICArPSBhbHBoYS9tcGVndmlkZW9fYWxwaGEubwot T0JKUy0kKENPTkZJR19QSVhCTE9DS0RTUCkgICAgICAgICAgICAgICs9IGFscGhhL3BpeGJsb2Nr ZHNwX2FscGhhLm8KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvYXNtLmggYi9saWJhdmNv ZGVjL2FscGhhL2FzbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDg1MGNlY2M2 Li4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvYWxwaGEvYXNtLmgKKysrIC9kZXYvbnVsbApA QCAtMSwxNTMgKzAsMCBAQAotLyoKLSAqIEFscGhhIG9wdGltaXplZCBEU1AgdXRpbHMKLSAqIENv cHlyaWdodCAoYykgMjAwMiBGYWxrIEh1ZWZmbmVyIDxmYWxrQGRlYmlhbi5vcmc+Ci0gKgotICog VGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy c2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGlj ZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwg Qm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgQVZDT0RFQ19BTFBIQV9B U01fSAotI2RlZmluZSBBVkNPREVDX0FMUEhBX0FTTV9ICi0KLSNpbmNsdWRlIDxpbnR0eXBlcy5o PgotCi0jaW5jbHVkZSAibGliYXZ1dGlsL2NvbW1vbi5oIgotCi0jaWYgQVZfR0NDX1ZFUlNJT05f QVRfTEVBU1QoMiw5NikKLSMgZGVmaW5lIGxpa2VseSh4KSAgICAgIF9fYnVpbHRpbl9leHBlY3Qo KHgpICE9IDAsIDEpCi0jIGRlZmluZSB1bmxpa2VseSh4KSAgICBfX2J1aWx0aW5fZXhwZWN0KCh4 KSAhPSAwLCAwKQotI2Vsc2UKLSMgZGVmaW5lIGxpa2VseSh4KSAgICAgICh4KQotIyBkZWZpbmUg dW5saWtlbHkoeCkgICAgKHgpCi0jZW5kaWYKLQotI2RlZmluZSBBTUFTS19CV1ggKDEgPDwgMCkK LSNkZWZpbmUgQU1BU0tfRklYICgxIDw8IDEpCi0jZGVmaW5lIEFNQVNLX0NJWCAoMSA8PCAyKQot I2RlZmluZSBBTUFTS19NVkkgKDEgPDwgOCkKLQotc3RhdGljIGlubGluZSB1aW50NjRfdCBCWVRF X1ZFQyh1aW50NjRfdCB4KQotewotICAgIHggfD0geCA8PCAgODsKLSAgICB4IHw9IHggPDwgMTY7 Ci0gICAgeCB8PSB4IDw8IDMyOwotICAgIHJldHVybiB4OwotfQotc3RhdGljIGlubGluZSB1aW50 NjRfdCBXT1JEX1ZFQyh1aW50NjRfdCB4KQotewotICAgIHggfD0geCA8PCAxNjsKLSAgICB4IHw9 IHggPDwgMzI7Ci0gICAgcmV0dXJuIHg7Ci19Ci0KLSNkZWZpbmUgc2V4dHcoeCkgKChpbnQxNl90 KSAoeCkpCi0KLSNpZmRlZiBfX0dOVUNfXwotI2RlZmluZSBsZHEocCkgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoKChjb25zdCB1bmlvbiB7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHVp bnQ2NF90IF9fbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICBfX3R5cGVvZl9fKCoocCkpIF9fc1tzaXplb2YgKHVpbnQ2NF90KSAvIHNpemVvZiAq KHApXTsgIFwKLSAgICB9ICopIChwKSktPl9fbCkKLSNkZWZpbmUgbGRsKHApICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKCgoY29uc3QgdW5p b24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg ICBpbnQzMl90IF9fbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgX190eXBlb2ZfXygqKHApKSBfX3Nbc2l6ZW9mIChpbnQzMl90KSAvIHNpemVv ZiAqKHApXTsgICBcCi0gICAgfSAqKSAocCkpLT5fX2wpCi0jZGVmaW5lIHN0cShsLCBwKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg ZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0gICAgICAgICgoKHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICB1aW50NjRfdCBfX2w7 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg ICAgICBfX3R5cGVvZl9fKCoocCkpIF9fc1tzaXplb2YgKHVpbnQ2NF90KSAvIHNpemVvZiAqKHAp XTsgICAgICBcCi0gICAgICAgIH0gKikgKHApKS0+X19sKSA9IGw7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoMCkKLSNkZWZpbmUgc3Rs KGwsIHApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKCgodW5pb24geyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGlu dDMyX3QgX19sOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgICAgIF9fdHlwZW9mX18oKihwKSkgX19zW3NpemVvZiAoaW50MzJfdCkgLyBz aXplb2YgKihwKV07ICAgICAgIFwKLSAgICAgICAgfSAqKSAocCkpLT5fX2wpID0gbDsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQot c3RydWN0IHVuYWxpZ25lZF9sb25nIHsgdWludDY0X3QgbDsgfSBfX2F0dHJpYnV0ZV9fKChwYWNr ZWQpKTsKLSNkZWZpbmUgbGRxX3UocCkgICAgICAgICgqKGNvbnN0IHVpbnQ2NF90ICopICgoKHVp bnQ2NF90KSAocCkpICYgfjd1bCkpCi0jZGVmaW5lIHVsZHEoYSkgICAgICAgICAoKChjb25zdCBz dHJ1Y3QgdW5hbGlnbmVkX2xvbmcgKikgKGEpKS0+bCkKLQotI2lmIEFWX0dDQ19WRVJTSU9OX0FU X0xFQVNUKDMsMykKLSNkZWZpbmUgcHJlZmV0Y2gocCkgICAgIF9fYnVpbHRpbl9wcmVmZXRjaCgo cCksIDAsIDEpCi0jZGVmaW5lIHByZWZldGNoX2VuKHApICBfX2J1aWx0aW5fcHJlZmV0Y2goKHAp LCAwLCAwKQotI2RlZmluZSBwcmVmZXRjaF9tKHApICAgX19idWlsdGluX3ByZWZldGNoKChwKSwg MSwgMSkKLSNkZWZpbmUgcHJlZmV0Y2hfbWVuKHApIF9fYnVpbHRpbl9wcmVmZXRjaCgocCksIDEs IDApCi0jZGVmaW5lIGNtcGJnZSAgICAgICAgICBfX2J1aWx0aW5fYWxwaGFfY21wYmdlCi0vKiBB dm9pZCB3YXJuaW5ncy4gICovCi0jZGVmaW5lIGV4dHFsKGEsIGIpICAgICBfX2J1aWx0aW5fYWxw aGFfZXh0cWwoYSwgKHVpbnQ2NF90KSAoYikpCi0jZGVmaW5lIGV4dHdsKGEsIGIpICAgICBfX2J1 aWx0aW5fYWxwaGFfZXh0d2woYSwgKHVpbnQ2NF90KSAoYikpCi0jZGVmaW5lIGV4dHFoKGEsIGIp ICAgICBfX2J1aWx0aW5fYWxwaGFfZXh0cWgoYSwgKHVpbnQ2NF90KSAoYikpCi0jZGVmaW5lIHph cCAgICAgICAgICAgICBfX2J1aWx0aW5fYWxwaGFfemFwCi0jZGVmaW5lIHphcG5vdCAgICAgICAg ICBfX2J1aWx0aW5fYWxwaGFfemFwbm90Ci0jZGVmaW5lIGFtYXNrICAgICAgICAgICBfX2J1aWx0 aW5fYWxwaGFfYW1hc2sKLSNkZWZpbmUgaW1wbHZlciAgICAgICAgIF9fYnVpbHRpbl9hbHBoYV9p bXBsdmVyCi0jZGVmaW5lIHJwY2MgICAgICAgICAgICBfX2J1aWx0aW5fYWxwaGFfcnBjYwotI2Vs c2UKLSNkZWZpbmUgcHJlZmV0Y2gocCkgICAgIF9fYXNtX18gdm9sYXRpbGUoImxkbCAkMzEsJTAi ICA6IDogIm0iKCooY29uc3QgY2hhciAqKSAocCkpIDogIm1lbW9yeSIpCi0jZGVmaW5lIHByZWZl dGNoX2VuKHApICBfX2FzbV9fIHZvbGF0aWxlKCJsZHEgJDMxLCUwIiAgOiA6ICJtIigqKGNvbnN0 IGNoYXIgKikgKHApKSA6ICJtZW1vcnkiKQotI2RlZmluZSBwcmVmZXRjaF9tKHApICAgX19hc21f XyB2b2xhdGlsZSgibGRzICRmMzEsJTAiIDogOiAibSIoKihjb25zdCBjaGFyICopIChwKSkgOiAi bWVtb3J5IikKLSNkZWZpbmUgcHJlZmV0Y2hfbWVuKHApIF9fYXNtX18gdm9sYXRpbGUoImxkdCAk ZjMxLCUwIiA6IDogIm0iKCooY29uc3QgY2hhciAqKSAocCkpIDogIm1lbW9yeSIpCi0jZGVmaW5l IGNtcGJnZShhLCBiKSAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJjbXBiZ2UgICVyMSwlMiwl MCIgIDogIj1yIiAoX19yKSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5l IGV4dHFsKGEsIGIpICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJleHRxbCAgICVyMSwlMiwl MCIgIDogIj1yIiAoX19yKSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5l IGV4dHdsKGEsIGIpICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJleHR3bCAgICVyMSwlMiwl MCIgIDogIj1yIiAoX19yKSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5l IGV4dHFoKGEsIGIpICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJleHRxaCAgICVyMSwlMiwl MCIgIDogIj1yIiAoX19yKSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5l IHphcChhLCBiKSAgICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJ6YXAgICAgICVyMSwlMiwl MCIgIDogIj1yIiAoX19yKSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5l IHphcG5vdChhLCBiKSAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJ6YXBub3QgICVyMSwlMiwl MCIgIDogIj1yIiAoX19yKSA6ICJySiIgIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5l IGFtYXNrKGEpICAgICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJhbWFzayAgICUxLCUwIiAg ICAgIDogIj1yIiAoX19yKSA6ICJySSIgIChhKSk7ICAgICAgICAgICBfX3I7IH0pCi0jZGVmaW5l IGltcGx2ZXIoKSAgICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCJpbXBsdmVyICUwIiAgICAg ICAgIDogIj1yIiAoX19yKSk7ICAgICAgICAgICAgICAgICAgICAgICBfX3I7IH0pCi0jZGVmaW5l IHJwY2MoKSAgICAgICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gdm9sYXRpbGUgKCJycGNjICUw IiAgIDogIj1yIiAoX19yKSk7ICAgICAgICAgICAgICAgICAgICAgICBfX3I7IH0pCi0jZW5kaWYK LSNkZWZpbmUgd2g2NChwKSBfX2FzbV9fIHZvbGF0aWxlKCJ3aDY0ICglMCkiIDogOiAiciIocCkg OiAibWVtb3J5IikKLQotI2lmIEFWX0dDQ19WRVJTSU9OX0FUX0xFQVNUKDMsMykgJiYgZGVmaW5l ZChfX2FscGhhX21heF9fKQotI2RlZmluZSBtaW51YjggIF9fYnVpbHRpbl9hbHBoYV9taW51YjgK LSNkZWZpbmUgbWluc2I4ICBfX2J1aWx0aW5fYWxwaGFfbWluc2I4Ci0jZGVmaW5lIG1pbnV3NCAg X19idWlsdGluX2FscGhhX21pbnV3NAotI2RlZmluZSBtaW5zdzQgIF9fYnVpbHRpbl9hbHBoYV9t aW5zdzQKLSNkZWZpbmUgbWF4dWI4ICBfX2J1aWx0aW5fYWxwaGFfbWF4dWI4Ci0jZGVmaW5lIG1h eHNiOCAgX19idWlsdGluX2FscGhhX21heHNiOAotI2RlZmluZSBtYXh1dzQgIF9fYnVpbHRpbl9h bHBoYV9tYXh1dzQKLSNkZWZpbmUgbWF4c3c0ICBfX2J1aWx0aW5fYWxwaGFfbWF4c3c0Ci0jZGVm aW5lIHBlcnIgICAgX19idWlsdGluX2FscGhhX3BlcnIKLSNkZWZpbmUgcGtsYiAgICBfX2J1aWx0 aW5fYWxwaGFfcGtsYgotI2RlZmluZSBwa3diICAgIF9fYnVpbHRpbl9hbHBoYV9wa3diCi0jZGVm aW5lIHVucGtibCAgX19idWlsdGluX2FscGhhX3VucGtibAotI2RlZmluZSB1bnBrYncgIF9fYnVp bHRpbl9hbHBoYV91bnBrYncKLSNlbHNlCi0jZGVmaW5lIG1pbnViOChhLCBiKSAoeyB1aW50NjRf dCBfX3I7IF9fYXNtX18gKCIuYXJjaCBldjY7IG1pbnViOCAgJXIxLCUyLCUwIiAgOiAiPXIiIChf X3IpIDogIiVySiIgKGEpLCAickkiIChiKSk7IF9fcjsgfSkKLSNkZWZpbmUgbWluc2I4KGEsIGIp ICh7IHVpbnQ2NF90IF9fcjsgX19hc21fXyAoIi5hcmNoIGV2NjsgbWluc2I4ICAlcjEsJTIsJTAi ICA6ICI9ciIgKF9fcikgOiAiJXJKIiAoYSksICJySSIgKGIpKTsgX19yOyB9KQotI2RlZmluZSBt aW51dzQoYSwgYikgKHsgdWludDY0X3QgX19yOyBfX2FzbV9fICgiLmFyY2ggZXY2OyBtaW51dzQg ICVyMSwlMiwlMCIgIDogIj1yIiAoX19yKSA6ICIlckoiIChhKSwgInJJIiAoYikpOyBfX3I7IH0p Ci0jZGVmaW5lIG1pbnN3NChhLCBiKSAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCIuYXJjaCBl djY7IG1pbnN3NCAgJXIxLCUyLCUwIiAgOiAiPXIiIChfX3IpIDogIiVySiIgKGEpLCAickkiIChi KSk7IF9fcjsgfSkKLSNkZWZpbmUgbWF4dWI4KGEsIGIpICh7IHVpbnQ2NF90IF9fcjsgX19hc21f XyAoIi5hcmNoIGV2NjsgbWF4dWI4ICAlcjEsJTIsJTAiICA6ICI9ciIgKF9fcikgOiAiJXJKIiAo YSksICJySSIgKGIpKTsgX19yOyB9KQotI2RlZmluZSBtYXhzYjgoYSwgYikgKHsgdWludDY0X3Qg X19yOyBfX2FzbV9fICgiLmFyY2ggZXY2OyBtYXhzYjggICVyMSwlMiwlMCIgIDogIj1yIiAoX19y KSA6ICIlckoiIChhKSwgInJJIiAoYikpOyBfX3I7IH0pCi0jZGVmaW5lIG1heHV3NChhLCBiKSAo eyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCIuYXJjaCBldjY7IG1heHV3NCAgJXIxLCUyLCUwIiAg OiAiPXIiIChfX3IpIDogIiVySiIgKGEpLCAickkiIChiKSk7IF9fcjsgfSkKLSNkZWZpbmUgbWF4 c3c0KGEsIGIpICh7IHVpbnQ2NF90IF9fcjsgX19hc21fXyAoIi5hcmNoIGV2NjsgbWF4c3c0ICAl cjEsJTIsJTAiICA6ICI9ciIgKF9fcikgOiAiJXJKIiAoYSksICJySSIgKGIpKTsgX19yOyB9KQot I2RlZmluZSBwZXJyKGEsIGIpICAgKHsgdWludDY0X3QgX19yOyBfX2FzbV9fICgiLmFyY2ggZXY2 OyBwZXJyICAgICVyMSwlcjIsJTAiIDogIj1yIiAoX19yKSA6ICIlckoiIChhKSwgInJKIiAoYikp OyBfX3I7IH0pCi0jZGVmaW5lIHBrbGIoYSkgICAgICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18g KCIuYXJjaCBldjY7IHBrbGIgICAgJXIxLCUwIiAgICAgOiAiPXIiIChfX3IpIDogInJKIiAgKGEp KTsgICAgICAgICAgIF9fcjsgfSkKLSNkZWZpbmUgcGt3YihhKSAgICAgICh7IHVpbnQ2NF90IF9f cjsgX19hc21fXyAoIi5hcmNoIGV2NjsgcGt3YiAgICAlcjEsJTAiICAgICA6ICI9ciIgKF9fcikg OiAickoiICAoYSkpOyAgICAgICAgICAgX19yOyB9KQotI2RlZmluZSB1bnBrYmwoYSkgICAgKHsg dWludDY0X3QgX19yOyBfX2FzbV9fICgiLmFyY2ggZXY2OyB1bnBrYmwgICVyMSwlMCIgICAgIDog Ij1yIiAoX19yKSA6ICJySiIgIChhKSk7ICAgICAgICAgICBfX3I7IH0pCi0jZGVmaW5lIHVucGti dyhhKSAgICAoeyB1aW50NjRfdCBfX3I7IF9fYXNtX18gKCIuYXJjaCBldjY7IHVucGtidyAgJXIx LCUwIiAgICAgOiAiPXIiIChfX3IpIDogInJKIiAgKGEpKTsgICAgICAgICAgIF9fcjsgfSkKLSNl bmRpZgotCi0jZWxzZQotI2Vycm9yICJVbmtub3duIGNvbXBpbGVyISIKLSNlbmRpZgotCi0jZW5k aWYgLyogQVZDT0RFQ19BTFBIQV9BU01fSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBo YS9ibG9ja2RzcF9hbHBoYS5jIGIvbGliYXZjb2RlYy9hbHBoYS9ibG9ja2RzcF9hbHBoYS5jCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmYwOTY0NjA3Li4wMDAwMDAwMDAwCi0tLSBh L2xpYmF2Y29kZWMvYWxwaGEvYmxvY2tkc3BfYWxwaGEuYworKysgL2Rldi9udWxsCkBAIC0xLDQ5 ICswLDAgQEAKLS8qCi0gKiBBbHBoYSBvcHRpbWlzZWQgYmxvY2sgb3BlcmF0aW9ucwotICogQ29w eXJpZ2h0IChjKSAyMDAyIEZhbGsgSHVlZmZuZXIgPGZhbGtAZGViaWFuLm9yZz4KLSAqCi0gKiBU aGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCi0gKgotICogRkZtcGVnIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSAqCi0gKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNl bnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl Ci0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0gKi8KLQotI2luY2x1ZGUgPHN0ZGludC5oPgotCi0j aW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL2Js b2NrZHNwLmgiCi0jaW5jbHVkZSAiYXNtLmgiCi0KLXN0YXRpYyB2b2lkIGNsZWFyX2Jsb2Nrc19h eHAoaW50MTZfdCAqYmxvY2tzKSB7Ci0gICAgdWludDY0X3QgKnAgPSAodWludDY0X3QgKikgYmxv Y2tzOwotICAgIGludCBuID0gc2l6ZW9mKGludDE2X3QpICogNiAqIDY0OwotCi0gICAgZG8gewot ICAgICAgICBwWzBdID0gMDsKLSAgICAgICAgcFsxXSA9IDA7Ci0gICAgICAgIHBbMl0gPSAwOwot ICAgICAgICBwWzNdID0gMDsKLSAgICAgICAgcFs0XSA9IDA7Ci0gICAgICAgIHBbNV0gPSAwOwot ICAgICAgICBwWzZdID0gMDsKLSAgICAgICAgcFs3XSA9IDA7Ci0gICAgICAgIHAgKz0gODsKLSAg ICAgICAgbiAtPSA4ICogODsKLSAgICB9IHdoaWxlIChuKTsKLX0KLQotYXZfY29sZCB2b2lkIGZm X2Jsb2NrZHNwX2luaXRfYWxwaGEoQmxvY2tEU1BDb250ZXh0ICpjKQotewotICAgIGMtPmNsZWFy X2Jsb2NrcyA9IGNsZWFyX2Jsb2Nrc19heHA7Ci19CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2Fs cGhhL2hwZWxkc3BfYWxwaGEuYyBiL2xpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9hbHBoYS5jCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDU0ODA3ZDhmLi4wMDAwMDAwMDAwCi0tLSBh L2xpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9hbHBoYS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjEz ICswLDAgQEAKLS8qCi0gKiBBbHBoYSBvcHRpbWl6ZWQgRFNQIHV0aWxzCi0gKiBDb3B5cmlnaHQg KGMpIDIwMDIgRmFsayBIdWVmZm5lciA8ZmFsa0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4x IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot ICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxv bmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMu aCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL2hwZWxkc3AuaCIKLSNpbmNsdWRlICJocGVsZHNwX2Fs cGhhLmgiCi0jaW5jbHVkZSAiYXNtLmgiCi0KLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgYXZnMl9u b19ybmQodWludDY0X3QgYSwgdWludDY0X3QgYikKLXsKLSAgICByZXR1cm4gKGEgJiBiKSArICgo KGEgXiBiKSAmIEJZVEVfVkVDKDB4ZmUpKSA+PiAxKTsKLX0KLQotc3RhdGljIGlubGluZSB1aW50 NjRfdCBhdmcyKHVpbnQ2NF90IGEsIHVpbnQ2NF90IGIpCi17Ci0gICAgcmV0dXJuIChhIHwgYikg LSAoKChhIF4gYikgJiBCWVRFX1ZFQygweGZlKSkgPj4gMSk7Ci19Ci0KLSNpZiAwCi0vKiBUaGUg WFkyIHJvdXRpbmVzIGJhc2ljYWxseSB1dGlsaXplIHRoaXMgc2NoZW1lLCBidXQgcmV1c2UgcGFy dHMgaW4KLSAgIGVhY2ggaXRlcmF0aW9uLiAgKi8KLXN0YXRpYyBpbmxpbmUgdWludDY0X3QgYXZn NCh1aW50NjRfdCBsMSwgdWludDY0X3QgbDIsIHVpbnQ2NF90IGwzLCB1aW50NjRfdCBsNCkKLXsK LSAgICB1aW50NjRfdCByMSA9ICgobDEgJiB+QllURV9WRUMoMHgwMykpID4+IDIpCi0gICAgICAg ICAgICAgICAgKyAoKGwyICYgfkJZVEVfVkVDKDB4MDMpKSA+PiAyKQotICAgICAgICAgICAgICAg ICsgKChsMyAmIH5CWVRFX1ZFQygweDAzKSkgPj4gMikKLSAgICAgICAgICAgICAgICArICgobDQg JiB+QllURV9WRUMoMHgwMykpID4+IDIpOwotICAgIHVpbnQ2NF90IHIyID0gKCggIChsMSAmIEJZ VEVfVkVDKDB4MDMpKQotICAgICAgICAgICAgICAgICAgICArIChsMiAmIEJZVEVfVkVDKDB4MDMp KQotICAgICAgICAgICAgICAgICAgICArIChsMyAmIEJZVEVfVkVDKDB4MDMpKQotICAgICAgICAg ICAgICAgICAgICArIChsNCAmIEJZVEVfVkVDKDB4MDMpKQotICAgICAgICAgICAgICAgICAgICAr IEJZVEVfVkVDKDB4MDIpKSA+PiAyKSAmIEJZVEVfVkVDKDB4MDMpOwotICAgIHJldHVybiByMSAr IHIyOwotfQotI2VuZGlmCi0KLSNkZWZpbmUgT1AoTE9BRCwgU1RPUkUpICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgU1RPUkUoTE9BRChwaXhlbHMpLCBibG9jayk7ICAgICAgICAgICAgIFwK LSAgICAgICAgcGl4ZWxzICs9IGxpbmVfc2l6ZTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ICAgYmxvY2sgKz0gbGluZV9zaXplOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxl ICgtLWgpCi0KLSNkZWZpbmUgT1BfWDIoTE9BRCwgU1RPUkUpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICB1aW50NjRfdCBwaXgxLCBwaXgy OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg IHBpeDEgPSBMT0FEKHBpeGVscyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgICAgICBwaXgyID0gcGl4MSA+PiA4IHwgKCh1aW50NjRfdCkgcGl4ZWxzWzhdIDw8IDU2 KTsgICAgICAgIFwKLSAgICAgICAgU1RPUkUoQVZHMihwaXgxLCBwaXgyKSwgYmxvY2spOyAgICAg ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHBpeGVscyArPSBsaW5lX3NpemU7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBibG9jayArPSBsaW5lX3Np emU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgt LWgpCi0KLSNkZWZpbmUgT1BfWTIoTE9BRCwgU1RPUkUpICAgICAgICAgICAgICAgICAgICAgIFwK LSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ICAgdWludDY0X3QgcGl4ID0gTE9BRChwaXhlbHMpOyAgICAgICAgICAgIFwKLSAgICAgICAgZG8g eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ2 NF90IG5leHRfcGl4OyAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHBpeGVscyArPSBsaW5lX3Np emU7ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5leHRfcGl4ID0gTE9BRChwaXhlbHMp OyAgICAgICAgICAgIFwKLSAgICAgICAgICAgIFNUT1JFKEFWRzIocGl4LCBuZXh0X3BpeCksIGJs b2NrKTsgIFwKLSAgICAgICAgICAgIGJsb2NrICs9IGxpbmVfc2l6ZTsgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgICAgIHBpeCA9IG5leHRfcGl4OyAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgfSB3aGlsZSAoLS1oKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdo aWxlICgwKQotCi0jZGVmaW5lIE9QX1hZMihMT0FELCBTVE9SRSkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgdWludDY0X3QgcGl4MSA9IExPQUQocGl4ZWxzKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHVpbnQ2NF90IHBpeDIgPSBwaXgxID4+IDggfCAo KHVpbnQ2NF90KSBwaXhlbHNbOF0gPDwgNTYpOyAgICAgICAgICAgXAotICAgICAgICB1aW50NjRf dCBwaXhfbCA9IChwaXgxICYgQllURV9WRUMoMHgwMykpICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgKyAocGl4MiAmIEJZVEVfVkVDKDB4MDMpKTsg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHVpbnQ2NF90IHBpeF9oID0gKChw aXgxICYgfkJZVEVfVkVDKDB4MDMpKSA+PiAyKSAgICAgICAgICAgICAgICAgICAgXAotICAgICAg ICAgICAgICAgICAgICAgICArICgocGl4MiAmIH5CWVRFX1ZFQygweDAzKSkgPj4gMik7ICAgICAg ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGRvIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgICAgICAgICAgdWludDY0X3QgbnBpeDEsIG5waXgyOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHVpbnQ2NF90IG5waXhfbCwgbnBp eF9oOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAg ICB1aW50NjRfdCBhdmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHBpeGVscyArPSBs aW5lX3NpemU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g ICAgICAgICAgICBucGl4MSA9IExPQUQocGl4ZWxzKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbnBpeDIgPSBucGl4MSA+PiA4IHwgKCh1 aW50NjRfdCkgcGl4ZWxzWzhdIDw8IDU2KTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIG5w aXhfbCA9IChucGl4MSAmIEJZVEVfVkVDKDB4MDMpKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCi0gICAgICAgICAgICAgICAgICAgKyAobnBpeDIgJiBCWVRFX1ZFQygweDAzKSk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgbnBpeF9oID0gKChucGl4 MSAmIH5CWVRFX1ZFQygweDAzKSkgPj4gMikgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg ICAgICAgICAgICAgICArICgobnBpeDIgJiB+QllURV9WRUMoMHgwMykpID4+IDIpOyAgICAgICAg ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBhdmcgPSAoKChwaXhfbCArIG5waXhfbCArIEFW RzRfUk9VTkRFUikgPj4gMikgJiBCWVRFX1ZFQygweDAzKSkgXAotICAgICAgICAgICAgICAgICsg cGl4X2ggKyBucGl4X2g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKLSAgICAgICAgICAgIFNUT1JFKGF2ZywgYmxvY2spOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg ICAgYmxvY2sgKz0gbGluZV9zaXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKLSAgICAgICAgICAgIHBpeF9sID0gbnBpeF9sOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBwaXhfaCA9IG5w aXhfaDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgICAgICB9IHdoaWxlICgtLWgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIE1BS0VfT1Ao T1BOQU1FLCBTVUZGLCBPUEtJTkQsIFNUT1JFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXAotc3RhdGljIHZvaWQgT1BOQU1FICMjIF9waXhlbHMgIyMgU1VGRiAjIyBfYXhwICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgKHVpbnQ4X3QgKnJlc3RyaWN0IGJs b2NrLCBjb25zdCB1aW50OF90ICpyZXN0cmljdCBwaXhlbHMsICAgICAgICAgICBcCi0gICAgICAg ICBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoKHNpemVfdCkgcGl4 ZWxzICYgMHg3KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0gICAgICAgIE9QS0lORCh1bGRxLCBTVE9SRSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgT1BL SU5EKGxkcSwgU1RPUkUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgdm9pZCBPUE5BTUUgIyMgX3BpeGVsczE2ICMjIFNV RkYgIyMgX2F4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAodWludDhf dCAqcmVzdHJpY3QgYmxvY2ssIGNvbnN0IHVpbnQ4X3QgKnJlc3RyaWN0IHBpeGVscywgICAgICAg ICAgIFwKLSAgICAgICAgIHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIE9Q TkFNRSAjIyBfcGl4ZWxzICMjIFNVRkYgIyMgX2F4cChibG9jaywgICAgIHBpeGVscywgICAgIGxp bmVfc2l6ZSwgaCk7IFwKLSAgICBPUE5BTUUgIyMgX3BpeGVscyAjIyBTVUZGICMjIF9heHAoYmxv Y2sgKyA4LCBwaXhlbHMgKyA4LCBsaW5lX3NpemUsIGgpOyBcCi19Ci0KLSNkZWZpbmUgUElYT1Ao T1BOQU1FLCBTVE9SRSkgICAgICAgICAgICAgICAgICAgIFwKLSAgICBNQUtFX09QKE9QTkFNRSwg LCAgICAgT1AsICAgICBTVE9SRSkgICAgICAgIFwKLSAgICBNQUtFX09QKE9QTkFNRSwgX3gyLCAg T1BfWDIsICBTVE9SRSkgICAgICAgIFwKLSAgICBNQUtFX09QKE9QTkFNRSwgX3kyLCAgT1BfWTIs ICBTVE9SRSkgICAgICAgIFwKLSAgICBNQUtFX09QKE9QTkFNRSwgX3h5MiwgT1BfWFkyLCBTVE9S RSkKLQotLyogUm91bmRpbmcgcHJpbWl0aXZlcy4gICovCi0jZGVmaW5lIEFWRzIgYXZnMgotI2Rl ZmluZSBBVkc0IGF2ZzQKLSNkZWZpbmUgQVZHNF9ST1VOREVSIEJZVEVfVkVDKDB4MDIpCi0jZGVm aW5lIFNUT1JFKGwsIGIpIHN0cShsLCBiKQotUElYT1AocHV0LCBTVE9SRSk7Ci0KLSN1bmRlZiBT VE9SRQotI2RlZmluZSBTVE9SRShsLCBiKSBzdHEoQVZHMihsLCBsZHEoYikpLCBiKTsKLVBJWE9Q KGF2ZywgU1RPUkUpOwotCi0vKiBOb3Qgcm91bmRpbmcgcHJpbWl0aXZlcy4gICovCi0jdW5kZWYg QVZHMgotI3VuZGVmIEFWRzQKLSN1bmRlZiBBVkc0X1JPVU5ERVIKLSN1bmRlZiBTVE9SRQotI2Rl ZmluZSBBVkcyIGF2ZzJfbm9fcm5kCi0jZGVmaW5lIEFWRzQgYXZnNF9ub19ybmQKLSNkZWZpbmUg QVZHNF9ST1VOREVSIEJZVEVfVkVDKDB4MDEpCi0jZGVmaW5lIFNUT1JFKGwsIGIpIHN0cShsLCBi KQotUElYT1AocHV0X25vX3JuZCwgU1RPUkUpOwotCi0jdW5kZWYgU1RPUkUKLSNkZWZpbmUgU1RP UkUobCwgYikgc3RxKEFWRzIobCwgbGRxKGIpKSwgYik7Ci1QSVhPUChhdmdfbm9fcm5kLCBTVE9S RSk7Ci0KLXN0YXRpYyB2b2lkIHB1dF9waXhlbHMxNl9heHBfYXNtKHVpbnQ4X3QgKmJsb2NrLCBj b25zdCB1aW50OF90ICpwaXhlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw dHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCkKLXsKLSAgICBwdXRfcGl4ZWxzX2F4cF9hc20oYmxv Y2ssICAgICBwaXhlbHMsICAgICBsaW5lX3NpemUsIGgpOwotICAgIHB1dF9waXhlbHNfYXhwX2Fz bShibG9jayArIDgsIHBpeGVscyArIDgsIGxpbmVfc2l6ZSwgaCk7Ci19Ci0KLWF2X2NvbGQgdm9p ZCBmZl9ocGVsZHNwX2luaXRfYWxwaGEoSHBlbERTUENvbnRleHQgKmMsIGludCBmbGFncykKLXsK LSAgICBjLT5wdXRfcGl4ZWxzX3RhYlswXVswXSA9IHB1dF9waXhlbHMxNl9heHBfYXNtOwotICAg IGMtPnB1dF9waXhlbHNfdGFiWzBdWzFdID0gcHV0X3BpeGVsczE2X3gyX2F4cDsKLSAgICBjLT5w dXRfcGl4ZWxzX3RhYlswXVsyXSA9IHB1dF9waXhlbHMxNl95Ml9heHA7Ci0gICAgYy0+cHV0X3Bp eGVsc190YWJbMF1bM10gPSBwdXRfcGl4ZWxzMTZfeHkyX2F4cDsKLQotICAgIGMtPnB1dF9ub19y bmRfcGl4ZWxzX3RhYlswXVswXSA9IHB1dF9waXhlbHMxNl9heHBfYXNtOwotICAgIGMtPnB1dF9u b19ybmRfcGl4ZWxzX3RhYlswXVsxXSA9IHB1dF9ub19ybmRfcGl4ZWxzMTZfeDJfYXhwOwotICAg IGMtPnB1dF9ub19ybmRfcGl4ZWxzX3RhYlswXVsyXSA9IHB1dF9ub19ybmRfcGl4ZWxzMTZfeTJf YXhwOwotICAgIGMtPnB1dF9ub19ybmRfcGl4ZWxzX3RhYlswXVszXSA9IHB1dF9ub19ybmRfcGl4 ZWxzMTZfeHkyX2F4cDsKLQotICAgIGMtPmF2Z19waXhlbHNfdGFiWzBdWzBdID0gYXZnX3BpeGVs czE2X2F4cDsKLSAgICBjLT5hdmdfcGl4ZWxzX3RhYlswXVsxXSA9IGF2Z19waXhlbHMxNl94Ml9h eHA7Ci0gICAgYy0+YXZnX3BpeGVsc190YWJbMF1bMl0gPSBhdmdfcGl4ZWxzMTZfeTJfYXhwOwot ICAgIGMtPmF2Z19waXhlbHNfdGFiWzBdWzNdID0gYXZnX3BpeGVsczE2X3h5Ml9heHA7Ci0KLSAg ICBjLT5hdmdfbm9fcm5kX3BpeGVsc190YWJbMF0gPSBhdmdfbm9fcm5kX3BpeGVsczE2X2F4cDsK LSAgICBjLT5hdmdfbm9fcm5kX3BpeGVsc190YWJbMV0gPSBhdmdfbm9fcm5kX3BpeGVsczE2X3gy X2F4cDsKLSAgICBjLT5hdmdfbm9fcm5kX3BpeGVsc190YWJbMl0gPSBhdmdfbm9fcm5kX3BpeGVs czE2X3kyX2F4cDsKLSAgICBjLT5hdmdfbm9fcm5kX3BpeGVsc190YWJbM10gPSBhdmdfbm9fcm5k X3BpeGVsczE2X3h5Ml9heHA7Ci0KLSAgICBjLT5wdXRfcGl4ZWxzX3RhYlsxXVswXSA9IHB1dF9w aXhlbHNfYXhwX2FzbTsKLSAgICBjLT5wdXRfcGl4ZWxzX3RhYlsxXVsxXSA9IHB1dF9waXhlbHNf eDJfYXhwOwotICAgIGMtPnB1dF9waXhlbHNfdGFiWzFdWzJdID0gcHV0X3BpeGVsc195Ml9heHA7 Ci0gICAgYy0+cHV0X3BpeGVsc190YWJbMV1bM10gPSBwdXRfcGl4ZWxzX3h5Ml9heHA7Ci0KLSAg ICBjLT5wdXRfbm9fcm5kX3BpeGVsc190YWJbMV1bMF0gPSBwdXRfcGl4ZWxzX2F4cF9hc207Ci0g ICAgYy0+cHV0X25vX3JuZF9waXhlbHNfdGFiWzFdWzFdID0gcHV0X25vX3JuZF9waXhlbHNfeDJf YXhwOwotICAgIGMtPnB1dF9ub19ybmRfcGl4ZWxzX3RhYlsxXVsyXSA9IHB1dF9ub19ybmRfcGl4 ZWxzX3kyX2F4cDsKLSAgICBjLT5wdXRfbm9fcm5kX3BpeGVsc190YWJbMV1bM10gPSBwdXRfbm9f cm5kX3BpeGVsc194eTJfYXhwOwotCi0gICAgYy0+YXZnX3BpeGVsc190YWJbMV1bMF0gPSBhdmdf cGl4ZWxzX2F4cDsKLSAgICBjLT5hdmdfcGl4ZWxzX3RhYlsxXVsxXSA9IGF2Z19waXhlbHNfeDJf YXhwOwotICAgIGMtPmF2Z19waXhlbHNfdGFiWzFdWzJdID0gYXZnX3BpeGVsc195Ml9heHA7Ci0g ICAgYy0+YXZnX3BpeGVsc190YWJbMV1bM10gPSBhdmdfcGl4ZWxzX3h5Ml9heHA7Ci19CmRpZmYg LS1naXQgYS9saWJhdmNvZGVjL2FscGhhL2hwZWxkc3BfYWxwaGEuaCBiL2xpYmF2Y29kZWMvYWxw aGEvaHBlbGRzcF9hbHBoYS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODUxODJj NjdiLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvYWxwaGEvaHBlbGRzcF9hbHBoYS5oCisr KyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBl ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIElu Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw MSBVU0EKLSAqLwotCi0jaWZuZGVmIEFWQ09ERUNfQUxQSEFfSFBFTERTUF9BTFBIQV9ICi0jZGVm aW5lIEFWQ09ERUNfQUxQSEFfSFBFTERTUF9BTFBIQV9ICi0KLSNpbmNsdWRlIDxzdGRpbnQuaD4K LSNpbmNsdWRlIDxzdGRkZWYuaD4KLQotdm9pZCBwdXRfcGl4ZWxzX2F4cF9hc20odWludDhfdCAq YmxvY2ssIGNvbnN0IHVpbnQ4X3QgKnBpeGVscywKLSAgICAgICAgICAgICAgICAgICAgICAgIHB0 cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKTsKLQotI2VuZGlmIC8qIEFWQ09ERUNfQUxQSEFfSFBF TERTUF9BTFBIQV9IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FscGhhL2hwZWxkc3BfYWxw aGFfYXNtLlMgYi9saWJhdmNvZGVjL2FscGhhL2hwZWxkc3BfYWxwaGFfYXNtLlMKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmMzg2YzQyOWUuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZj b2RlYy9hbHBoYS9ocGVsZHNwX2FscGhhX2FzbS5TCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICsw LDAgQEAKLS8qCi0gKiBBbHBoYSBvcHRpbWl6ZWQgRFNQIHV0aWxzCi0gKiBDb3B5cmlnaHQgKGMp IDIwMDIgRmFsayBIdWVmZm5lciA8ZmFsa0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoK LSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcg d2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5k YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEg MDIxMTAtMTMwMSBVU0EKLSAqLwotCi0vKgotICogVGhlc2UgZnVuY3Rpb25zIGFyZSBzY2hlZHVs ZWQgZm9yIHBjYTU2LiBUaGV5IHNob3VsZCB3b3JrCi0gKiByZWFzb25hYmx5IG9uIGV2NiwgdGhv dWdoLgotICovCi0KLSNpbmNsdWRlICJyZWdkZWYuaCIKLQotCi0gICAgICAgIC5zZXQgbm9hdAot ICAgICAgICAuc2V0IG5vcmVvcmRlcgotICAgICAgICAuYXJjaCBwY2E1NgotICAgICAgICAudGV4 dAotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqCi0gKiB2b2lkIHB1dF9waXhlbHNfYXhwX2FzbSh1aW50OF90 ICpibG9jaywgY29uc3QgdWludDhfdCAqcGl4ZWxzLAotICogICAgICAgICAgICAgICAgICAgICAg ICAgaW50IGxpbmVfc2l6ZSwgaW50IGgpCi0gKi8KLSAgICAgICAgLmFsaWduIDYKLSAgICAgICAg Lmdsb2JsIHB1dF9waXhlbHNfYXhwX2FzbQotICAgICAgICAuZW50IHB1dF9waXhlbHNfYXhwX2Fz bQotcHV0X3BpeGVsc19heHBfYXNtOgotICAgICAgICAuZnJhbWUgc3AsIDAsIHJhCi0gICAgICAg IC5wcm9sb2d1ZSAwCi0KLSAgICAgICAgYW5kICAgICBhMSwgNywgdDAKLSAgICAgICAgYmVxICAg ICB0MCwgJGFsaWduZWQKLQotICAgICAgICAuYWxpZ24gNAotJHVuYWxpZ25lZDoKLSAgICAgICAg bGRxX3UgICB0MCwgMChhMSkKLSAgICAgICAgbGRxX3UgICB0MSwgOChhMSkKLSAgICAgICAgYWRk cSAgICBhMSwgYTIsIGExCi0gICAgICAgIG5vcAotCi0gICAgICAgIGxkcV91ICAgdDIsIDAoYTEp Ci0gICAgICAgIGxkcV91ICAgdDMsIDgoYTEpCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCBhMQot ICAgICAgICBub3AKLQotICAgICAgICBsZHFfdSAgIHQ0LCAwKGExKQotICAgICAgICBsZHFfdSAg IHQ1LCA4KGExKQotICAgICAgICBhZGRxICAgIGExLCBhMiwgYTEKLSAgICAgICAgbm9wCi0KLSAg ICAgICAgbGRxX3UgICB0NiwgMChhMSkKLSAgICAgICAgbGRxX3UgICB0NywgOChhMSkKLSAgICAg ICAgZXh0cWwgICB0MCwgYTEsIHQwCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCBhMQotCi0gICAg ICAgIGV4dHFoICAgdDEsIGExLCB0MQotICAgICAgICBhZGRxICAgIGEwLCBhMiwgdDgKLSAgICAg ICAgZXh0cWwgICB0MiwgYTEsIHQyCi0gICAgICAgIGFkZHEgICAgdDgsIGEyLCB0OQotCi0gICAg ICAgIGV4dHFoICAgdDMsIGExLCB0MwotICAgICAgICBhZGRxICAgIHQ5LCBhMiwgdGEKLSAgICAg ICAgZXh0cWwgICB0NCwgYTEsIHQ0Ci0gICAgICAgIG9yICAgICAgdDAsIHQxLCB0MAotCi0gICAg ICAgIGV4dHFoICAgdDUsIGExLCB0NQotICAgICAgICBvciAgICAgIHQyLCB0MywgdDIKLSAgICAg ICAgZXh0cWwgICB0NiwgYTEsIHQ2Ci0gICAgICAgIG9yICAgICAgdDQsIHQ1LCB0NAotCi0gICAg ICAgIGV4dHFoICAgdDcsIGExLCB0NwotICAgICAgICBvciAgICAgIHQ2LCB0NywgdDYKLSAgICAg ICAgc3RxICAgICB0MCwgMChhMCkKLSAgICAgICAgc3RxICAgICB0MiwgMCh0OCkKLQotICAgICAg ICBzdHEgICAgIHQ0LCAwKHQ5KQotICAgICAgICBzdWJxICAgIGEzLCA0LCBhMwotICAgICAgICBz dHEgICAgIHQ2LCAwKHRhKQotICAgICAgICBhZGRxICAgIHRhLCBhMiwgYTAKLQotICAgICAgICBi bmUgICAgIGEzLCAkdW5hbGlnbmVkCi0gICAgICAgIHJldAotCi0gICAgICAgIC5hbGlnbiA0Ci0k YWxpZ25lZDoKLSAgICAgICAgbGRxICAgICB0MCwgMChhMSkKLSAgICAgICAgYWRkcSAgICBhMSwg YTIsIGExCi0gICAgICAgIGxkcSAgICAgdDEsIDAoYTEpCi0gICAgICAgIGFkZHEgICAgYTEsIGEy LCBhMQotCi0gICAgICAgIGxkcSAgICAgdDIsIDAoYTEpCi0gICAgICAgIGFkZHEgICAgYTEsIGEy LCBhMQotICAgICAgICBsZHEgICAgIHQzLCAwKGExKQotCi0gICAgICAgIGFkZHEgICAgYTAsIGEy LCB0NAotICAgICAgICBhZGRxICAgIGExLCBhMiwgYTEKLSAgICAgICAgYWRkcSAgICB0NCwgYTIs IHQ1Ci0gICAgICAgIHN1YnEgICAgYTMsIDQsIGEzCi0KLSAgICAgICAgc3RxICAgICB0MCwgMChh MCkKLSAgICAgICAgYWRkcSAgICB0NSwgYTIsIHQ2Ci0gICAgICAgIHN0cSAgICAgdDEsIDAodDQp Ci0gICAgICAgIGFkZHEgICAgdDYsIGEyLCBhMAotCi0gICAgICAgIHN0cSAgICAgdDIsIDAodDUp Ci0gICAgICAgIHN0cSAgICAgdDMsIDAodDYpCi0KLSAgICAgICAgYm5lICAgICBhMywgJGFsaWdu ZWQKLSAgICAgICAgcmV0Ci0gICAgICAgIC5lbmQgcHV0X3BpeGVsc19heHBfYXNtCmRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL2FscGhhL2lkY3Rkc3BfYWxwaGEuYyBiL2xpYmF2Y29kZWMvYWxwaGEv aWRjdGRzcF9hbHBoYS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjc3MGMxNWZk Li4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvYWxwaGEvaWRjdGRzcF9hbHBoYS5jCisrKyAv ZGV2L251bGwKQEAgLTEsMTI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgRmFs ayBIdWVmZm5lciA8ZmFsa0BkZWJpYW4ub3JnPgotICoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg TGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNl bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBl ZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICog YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1w ZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIElu Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMw MSBVU0EKLSAqLwotCi0jaW5jbHVkZSAibGliYXZ1dGlsL2F0dHJpYnV0ZXMuaCIKLSNpbmNsdWRl ICJsaWJhdmNvZGVjL2F2Y29kZWMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL2lkY3Rkc3AuaCIK LSNpbmNsdWRlICJpZGN0ZHNwX2FscGhhLmgiCi0jaW5jbHVkZSAiYXNtLmgiCi0KLXZvaWQgcHV0 X3BpeGVsc19jbGFtcGVkX212aV9hc20oY29uc3QgaW50MTZfdCAqYmxvY2ssIHVpbnQ4X3QgKnBp eGVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6 ZSk7Ci12b2lkIGFkZF9waXhlbHNfY2xhbXBlZF9tdmlfYXNtKGNvbnN0IGludDE2X3QgKmJsb2Nr LCB1aW50OF90ICpwaXhlbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRp ZmZfdCBsaW5lX3NpemUpOwotCi12b2lkICgqcHV0X3BpeGVsc19jbGFtcGVkX2F4cF9wKShjb25z dCBpbnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSk7Ci12b2lkICgqYWRkX3BpeGVsc19jbGFt cGVkX2F4cF9wKShjb25zdCBpbnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSk7Ci0KLSNpZiAw Ci0vKiBUaGVzZSBmdW5jdGlvbnMgd2VyZSB0aGUgYmFzZSBmb3IgdGhlIG9wdGltaXplZCBhc3Nl bWJsZXIgcm91dGluZXMsCi0gICBhbmQgcmVtYWluIGhlcmUgZm9yIGRvY3VtZW50YXRpb24gcHVy cG9zZXMuICAqLwotc3RhdGljIHZvaWQgcHV0X3BpeGVsc19jbGFtcGVkX212aShjb25zdCBpbnQx Nl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplKQotewotICAgIGludCBpID0gODsKLSAgICB1aW50 NjRfdCBjbGFtcG1hc2sgPSB6YXAoLTEsIDB4YWEpOyAvKiAweDAwZmYwMGZmMDBmZjAwZmYgKi8K LQotICAgIGRvIHsKLSAgICAgICAgdWludDY0X3Qgc2hvcnRzMCwgc2hvcnRzMTsKLQotICAgICAg ICBzaG9ydHMwID0gbGRxKGJsb2NrKTsKLSAgICAgICAgc2hvcnRzMCA9IG1heHN3NChzaG9ydHMw LCAwKTsKLSAgICAgICAgc2hvcnRzMCA9IG1pbnN3NChzaG9ydHMwLCBjbGFtcG1hc2spOwotICAg ICAgICBzdGwocGt3YihzaG9ydHMwKSwgcGl4ZWxzKTsKLQotICAgICAgICBzaG9ydHMxID0gbGRx KGJsb2NrICsgNCk7Ci0gICAgICAgIHNob3J0czEgPSBtYXhzdzQoc2hvcnRzMSwgMCk7Ci0gICAg ICAgIHNob3J0czEgPSBtaW5zdzQoc2hvcnRzMSwgY2xhbXBtYXNrKTsKLSAgICAgICAgc3RsKHBr d2Ioc2hvcnRzMSksIHBpeGVscyArIDQpOwotCi0gICAgICAgIHBpeGVscyArPSBsaW5lX3NpemU7 Ci0gICAgICAgIGJsb2NrICs9IDg7Ci0gICAgfSB3aGlsZSAoLS1pKTsKLX0KLQotdm9pZCBhZGRf cGl4ZWxzX2NsYW1wZWRfbXZpKGNvbnN0IGludDE2X3QgKmJsb2NrLCB1aW50OF90ICpwaXhlbHMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSkKLXsKLSAg ICBpbnQgaCA9IDg7Ci0gICAgLyogS2VlcCB0aGlzIGZ1bmN0aW9uIGEgbGVhZiBmdW5jdGlvbiBi eSBnZW5lcmF0aW5nIHRoZSBjb25zdGFudHMKLSAgICAgICBtYW51YWxseSAobWFpbmx5IGZvciB0 aGUgaGFjayB2YWx1ZSA7LSkuICAqLwotICAgIHVpbnQ2NF90IGNsYW1wbWFzayA9IHphcCgtMSwg MHhhYSk7IC8qIDB4MDBmZjAwZmYwMGZmMDBmZiAqLwotICAgIHVpbnQ2NF90IHNpZ25tYXNrICA9 IHphcCgtMSwgMHgzMyk7Ci0gICAgc2lnbm1hc2sgXj0gc2lnbm1hc2sgPj4gMTsgIC8qIDB4ODAw MDgwMDA4MDAwODAwMCAqLwotCi0gICAgZG8gewotICAgICAgICB1aW50NjRfdCBzaG9ydHMwLCBw aXgwLCBzaWduczA7Ci0gICAgICAgIHVpbnQ2NF90IHNob3J0czEsIHBpeDEsIHNpZ25zMTsKLQot ICAgICAgICBzaG9ydHMwID0gbGRxKGJsb2NrKTsKLSAgICAgICAgc2hvcnRzMSA9IGxkcShibG9j ayArIDQpOwotCi0gICAgICAgIHBpeDAgICAgPSB1bnBrYncobGRsKHBpeGVscykpOwotICAgICAg ICAvKiBTaWduZWQgc3Vid29yZCBhZGQgKE1NWCBwYWRkdykuICAqLwotICAgICAgICBzaWduczAg ID0gc2hvcnRzMCAmIHNpZ25tYXNrOwotICAgICAgICBzaG9ydHMwICY9IH5zaWdubWFzazsKLSAg ICAgICAgc2hvcnRzMCArPSBwaXgwOwotICAgICAgICBzaG9ydHMwIF49IHNpZ25zMDsKLSAgICAg ICAgLyogQ2xhbXAuICovCi0gICAgICAgIHNob3J0czAgPSBtYXhzdzQoc2hvcnRzMCwgMCk7Ci0g ICAgICAgIHNob3J0czAgPSBtaW5zdzQoc2hvcnRzMCwgY2xhbXBtYXNrKTsKLQotICAgICAgICAv KiBOZXh0IDQuICAqLwotICAgICAgICBwaXgxICAgID0gdW5wa2J3KGxkbChwaXhlbHMgKyA0KSk7 Ci0gICAgICAgIHNpZ25zMSAgPSBzaG9ydHMxICYgc2lnbm1hc2s7Ci0gICAgICAgIHNob3J0czEg Jj0gfnNpZ25tYXNrOwotICAgICAgICBzaG9ydHMxICs9IHBpeDE7Ci0gICAgICAgIHNob3J0czEg Xj0gc2lnbnMxOwotICAgICAgICBzaG9ydHMxID0gbWF4c3c0KHNob3J0czEsIDApOwotICAgICAg ICBzaG9ydHMxID0gbWluc3c0KHNob3J0czEsIGNsYW1wbWFzayk7Ci0KLSAgICAgICAgc3RsKHBr d2Ioc2hvcnRzMCksIHBpeGVscyk7Ci0gICAgICAgIHN0bChwa3diKHNob3J0czEpLCBwaXhlbHMg KyA0KTsKLQotICAgICAgICBwaXhlbHMgKz0gbGluZV9zaXplOwotICAgICAgICBibG9jayArPSA4 OwotICAgIH0gd2hpbGUgKC0taCk7Ci19Ci0jZW5kaWYKLQotYXZfY29sZCB2b2lkIGZmX2lkY3Rk c3BfaW5pdF9hbHBoYShJRENURFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBoaWdoX2JpdF9kZXB0 aCkKLXsKLSAgICAvKiBhbWFzayBjbGVhcnMgYWxsIGJpdHMgdGhhdCBjb3JyZXNwb25kIHRvIHBy ZXNlbnQgZmVhdHVyZXMuICAqLwotICAgIGlmIChhbWFzayhBTUFTS19NVkkpID09IDApIHsKLSAg ICAgICAgYy0+cHV0X3BpeGVsc19jbGFtcGVkID0gcHV0X3BpeGVsc19jbGFtcGVkX212aV9hc207 Ci0gICAgICAgIGMtPmFkZF9waXhlbHNfY2xhbXBlZCA9IGFkZF9waXhlbHNfY2xhbXBlZF9tdmlf YXNtOwotICAgIH0KLQotICAgIHB1dF9waXhlbHNfY2xhbXBlZF9heHBfcCA9IGMtPnB1dF9waXhl bHNfY2xhbXBlZDsKLSAgICBhZGRfcGl4ZWxzX2NsYW1wZWRfYXhwX3AgPSBjLT5hZGRfcGl4ZWxz X2NsYW1wZWQ7Ci0KLSAgICBpZiAoIWhpZ2hfYml0X2RlcHRoICYmICFhdmN0eC0+bG93cmVzICYm Ci0gICAgICAgIChhdmN0eC0+aWRjdF9hbGdvID09IEZGX0lEQ1RfQVVUTykpIHsKLSAgICAgICAg Yy0+aWRjdF9wdXQgPSBmZl9zaW1wbGVfaWRjdF9wdXRfYXhwOwotICAgICAgICBjLT5pZGN0X2Fk ZCA9IGZmX3NpbXBsZV9pZGN0X2FkZF9heHA7Ci0gICAgICAgIGMtPmlkY3QgPSAgICAgZmZfc2lt cGxlX2lkY3RfYXhwOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvaWRj dGRzcF9hbHBoYS5oIGIvbGliYXZjb2RlYy9hbHBoYS9pZGN0ZHNwX2FscGhhLmgKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzk2OWQ3ZGUuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZj b2RlYy9hbHBoYS9pZGN0ZHNwX2FscGhhLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBA Ci0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl cgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCi0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YwotICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0 aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpZm5kZWYgQVZDT0RF Q19BTFBIQV9JRENURFNQX0FMUEhBX0gKLSNkZWZpbmUgQVZDT0RFQ19BTFBIQV9JRENURFNQX0FM UEhBX0gKLQotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2luY2x1ZGUgPHN0ZGludC5oPgotCi1leHRl cm4gdm9pZCAoKnB1dF9waXhlbHNfY2xhbXBlZF9heHBfcCkoY29uc3QgaW50MTZfdCAqYmxvY2ss IHVpbnQ4X3QgKnBpeGVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwdHJkaWZmX3QgbGluZV9zaXplKTsKLWV4dGVybiB2b2lkICgqYWRkX3BpeGVsc19jbGFtcGVk X2F4cF9wKShjb25zdCBpbnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBsaW5lX3NpemUpOwotCi12 b2lkIGZmX3NpbXBsZV9pZGN0X2F4cChpbnQxNl90ICpibG9jayk7Ci12b2lkIGZmX3NpbXBsZV9p ZGN0X3B1dF9heHAodWludDhfdCAqZGVzdCwgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50MTZfdCAq YmxvY2spOwotdm9pZCBmZl9zaW1wbGVfaWRjdF9hZGRfYXhwKHVpbnQ4X3QgKmRlc3QsIHB0cmRp ZmZfdCBsaW5lX3NpemUsIGludDE2X3QgKmJsb2NrKTsKLQotI2VuZGlmIC8qIEFWQ09ERUNfQUxQ SEFfSURDVERTUF9BTFBIQV9IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2FscGhhL2lkY3Rk c3BfYWxwaGFfYXNtLlMgYi9saWJhdmNvZGVjL2FscGhhL2lkY3Rkc3BfYWxwaGFfYXNtLlMKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1NDVkZjllNGYuLjAwMDAwMDAwMDAKLS0tIGEv bGliYXZjb2RlYy9hbHBoYS9pZGN0ZHNwX2FscGhhX2FzbS5TCisrKyAvZGV2L251bGwKQEAgLTEs MTY3ICswLDAgQEAKLS8qCi0gKiBBbHBoYSBvcHRpbWl6ZWQgSURDVC1yZWxhdGVkIHJvdXRpbmVz Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDIgRmFsayBIdWVmZm5lciA8ZmFsa0BkZWJpYW4ub3JnPgot ICoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK LSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK LSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0vKgotICogVGhlc2UgZnVu Y3Rpb25zIGFyZSBzY2hlZHVsZWQgZm9yIHBjYTU2LiBUaGV5IHNob3VsZCB3b3JrCi0gKiByZWFz b25hYmx5IG9uIGV2NiwgdGhvdWdoLgotICovCi0KLSNpbmNsdWRlICJyZWdkZWYuaCIKLQotICAg ICAgICAuc2V0IG5vYXQKLSAgICAgICAgLnNldCBub3Jlb3JkZXIKLSAgICAgICAgLmFyY2ggcGNh NTYKLSAgICAgICAgLnRleHQKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogdm9pZCBwdXRfcGl4ZWxz X2NsYW1wZWRfbXZpX2FzbShjb25zdCBpbnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAot ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplKQot ICovCi0gICAgICAgIC5hbGlnbiA2Ci0gICAgICAgIC5nbG9ibCBwdXRfcGl4ZWxzX2NsYW1wZWRf bXZpX2FzbQotICAgICAgICAuZW50IHB1dF9waXhlbHNfY2xhbXBlZF9tdmlfYXNtCi1wdXRfcGl4 ZWxzX2NsYW1wZWRfbXZpX2FzbToKLSAgICAgICAgLmZyYW1lIHNwLCAwLCByYQotICAgICAgICAu cHJvbG9ndWUgMAotCi0gICAgICAgIGxkYSAgICAgdDgsIC0xCi0gICAgICAgIGxkYSAgICAgdDks IDggICAgICAgICAgICMgbG9vcCBjb3VudGVyCi0gICAgICAgIHphcCAgICAgdDgsIDB4YWEsIHQ4 ICAgICMgMDBmZjAwZmYwMGZmMDBmZgotCi0gICAgICAgIC5hbGlnbiA0Ci0xOiAgICAgIGxkcSAg ICAgdDAsICAwKGEwKQotICAgICAgICBsZHEgICAgIHQxLCAgOChhMCkKLSAgICAgICAgbGRxICAg ICB0MiwgMTYoYTApCi0gICAgICAgIGxkcSAgICAgdDMsIDI0KGEwKQotCi0gICAgICAgIG1heHN3 NCAgdDAsIHplcm8sIHQwCi0gICAgICAgIHN1YnEgICAgdDksIDIsIHQ5Ci0gICAgICAgIG1heHN3 NCAgdDEsIHplcm8sIHQxCi0gICAgICAgIGxkYSAgICAgYTAsIDMyKGEwKQotCi0gICAgICAgIG1h eHN3NCAgdDIsIHplcm8sIHQyCi0gICAgICAgIGFkZHEgICAgYTEsIGEyLCB0YQotICAgICAgICBt YXhzdzQgIHQzLCB6ZXJvLCB0MwotICAgICAgICBtaW5zdzQgIHQwLCB0OCwgdDAKLQotICAgICAg ICBtaW5zdzQgIHQxLCB0OCwgdDEKLSAgICAgICAgbWluc3c0ICB0MiwgdDgsIHQyCi0gICAgICAg IG1pbnN3NCAgdDMsIHQ4LCB0MwotICAgICAgICBwa3diICAgIHQwLCB0MAotCi0gICAgICAgIHBr d2IgICAgdDEsIHQxCi0gICAgICAgIHBrd2IgICAgdDIsIHQyCi0gICAgICAgIHBrd2IgICAgdDMs IHQzCi0gICAgICAgIHN0bCAgICAgdDAsIDAoYTEpCi0KLSAgICAgICAgc3RsICAgICB0MSwgNChh MSkKLSAgICAgICAgYWRkcSAgICB0YSwgYTIsIGExCi0gICAgICAgIHN0bCAgICAgdDIsIDAodGEp Ci0gICAgICAgIHN0bCAgICAgdDMsIDQodGEpCi0KLSAgICAgICAgYm5lICAgICB0OSwgMWIKLSAg ICAgICAgcmV0Ci0gICAgICAgIC5lbmQgcHV0X3BpeGVsc19jbGFtcGVkX212aV9hc20KLQotLyoq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKgotICogdm9pZCBhZGRfcGl4ZWxzX2NsYW1wZWRfbXZpX2FzbShjb25zdCBp bnQxNl90ICpibG9jaywgdWludDhfdCAqcGl4ZWxzLAotICogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplKQotICovCi0gICAgICAgIC5hbGlnbiA2Ci0g ICAgICAgIC5nbG9ibCBhZGRfcGl4ZWxzX2NsYW1wZWRfbXZpX2FzbQotICAgICAgICAuZW50IGFk ZF9waXhlbHNfY2xhbXBlZF9tdmlfYXNtCi1hZGRfcGl4ZWxzX2NsYW1wZWRfbXZpX2FzbToKLSAg ICAgICAgLmZyYW1lIHNwLCAwLCByYQotICAgICAgICAucHJvbG9ndWUgMAotCi0gICAgICAgIGxk YSAgICAgdDEsIC0xCi0gICAgICAgIGxkYSAgICAgdGgsIDgKLSAgICAgICAgemFwICAgICB0MSwg MHgzMywgdGcKLSAgICAgICAgbm9wCi0KLSAgICAgICAgc3JsICAgICB0ZywgMSwgdDAKLSAgICAg ICAgeG9yICAgICB0ZywgdDAsIHRnICAgICAgIyAweDgwMDA4MDAwODAwMDgwMDAKLSAgICAgICAg emFwICAgICB0MSwgMHhhYSwgdGYgICAgIyAweDAwZmYwMGZmMDBmZjAwZmYKLQotICAgICAgICAu YWxpZ24gNAotMTogICAgICBsZGwgICAgIHQxLCAwKGExKSAgICAgICAjIHBpeDAgKHRyeSB0byBo aXQgY2FjaGUgbGluZSBzb29uKQotICAgICAgICBsZGwgICAgIHQ0LCA0KGExKSAgICAgICAjIHBp eDEKLSAgICAgICAgYWRkcSAgICBhMSwgYTIsIHRlICAgICAgIyBwaXhlbHMgKz0gbGluZV9zaXpl Ci0gICAgICAgIGxkcSAgICAgdDAsIDAoYTApICAgICAgICMgc2hvcnRzMAotCi0gICAgICAgIGxk bCAgICAgdDcsIDAodGUpICAgICAgICMgcGl4MiAodHJ5IHRvIGhpdCBjYWNoZSBsaW5lIHNvb24p Ci0gICAgICAgIGxkbCAgICAgdGEsIDQodGUpICAgICAgICMgcGl4MwotICAgICAgICBsZHEgICAg IHQzLCA4KGEwKSAgICAgICAjIHNob3J0czEKLSAgICAgICAgbGRxICAgICB0NiwgMTYoYTApICAg ICAgIyBzaG9ydHMyCi0KLSAgICAgICAgbGRxICAgICB0OSwgMjQoYTApICAgICAgIyBzaG9ydHMz Ci0gICAgICAgIHVucGtidyAgdDEsIHQxICAgICAgICAgICMgMCAwIChxdWFydGVyL29wIG5vLikK LSAgICAgICAgYW5kICAgICB0MCwgdGcsIHQyICAgICAgIyAwIDEKLSAgICAgICAgdW5wa2J3ICB0 NCwgdDQgICAgICAgICAgIyAxIDAKLQotICAgICAgICBiaWMgICAgIHQwLCB0ZywgdDAgICAgICAj IDAgMgotICAgICAgICB1bnBrYncgIHQ3LCB0NyAgICAgICAgICAjIDIgMAotICAgICAgICBhbmQg ICAgIHQzLCB0ZywgdDUgICAgICAjIDEgMQotICAgICAgICBhZGRxICAgIHQwLCB0MSwgdDAgICAg ICAjIDAgMwotCi0gICAgICAgIHhvciAgICAgdDAsIHQyLCB0MCAgICAgICMgMCA0Ci0gICAgICAg IHVucGtidyAgdGEsIHRhICAgICAgICAgICMgMyAwCi0gICAgICAgIGFuZCAgICAgdDYsIHRnLCB0 OCAgICAgICMgMiAxCi0gICAgICAgIG1heHN3NCAgdDAsIHplcm8sIHQwICAgICMgMCA1Ci0KLSAg ICAgICAgYmljICAgICB0MywgdGcsIHQzICAgICAgIyAxIDIKLSAgICAgICAgYmljICAgICB0Niwg dGcsIHQ2ICAgICAgIyAyIDIKLSAgICAgICAgbWluc3c0ICB0MCwgdGYsIHQwICAgICAgIyAwIDYK LSAgICAgICAgYWRkcSAgICB0MywgdDQsIHQzICAgICAgIyAxIDMKLQotICAgICAgICBwa3diICAg IHQwLCB0MCAgICAgICAgICAjIDAgNwotICAgICAgICB4b3IgICAgIHQzLCB0NSwgdDMgICAgICAj IDEgNAotICAgICAgICBtYXhzdzQgIHQzLCB6ZXJvLCB0MyAgICAjIDEgNQotICAgICAgICBhZGRx ICAgIHQ2LCB0NywgdDYgICAgICAjIDIgMwotCi0gICAgICAgIHhvciAgICAgdDYsIHQ4LCB0NiAg ICAgICMgMiA0Ci0gICAgICAgIGFuZCAgICAgdDksIHRnLCB0YiAgICAgICMgMyAxCi0gICAgICAg IG1pbnN3NCAgdDMsIHRmLCB0MyAgICAgICMgMSA2Ci0gICAgICAgIGJpYyAgICAgdDksIHRnLCB0 OSAgICAgICMgMyAyCi0KLSAgICAgICAgbWF4c3c0ICB0NiwgemVybywgdDYgICAgIyAyIDUKLSAg ICAgICAgYWRkcSAgICB0OSwgdGEsIHQ5ICAgICAgIyAzIDMKLSAgICAgICAgc3RsICAgICB0MCwg MChhMSkgICAgICAgIyAwIDgKLSAgICAgICAgbWluc3c0ICB0NiwgdGYsIHQ2ICAgICAgIyAyIDYK LQotICAgICAgICB4b3IgICAgIHQ5LCB0YiwgdDkgICAgICAjIDMgNAotICAgICAgICBtYXhzdzQg IHQ5LCB6ZXJvLCB0OSAgICAjIDMgNQotICAgICAgICBsZGEgICAgIGEwLCAzMihhMCkgICAgICAj IGJsb2NrICs9IDE2OwotICAgICAgICBwa3diICAgIHQzLCB0MyAgICAgICAgICAjIDEgNwotCi0g ICAgICAgIG1pbnN3NCAgdDksIHRmLCB0OSAgICAgICMgMyA2Ci0gICAgICAgIHN1YnEgICAgdGgs IDIsIHRoCi0gICAgICAgIHBrd2IgICAgdDYsIHQ2ICAgICAgICAgICMgMiA3Ci0gICAgICAgIHBr d2IgICAgdDksIHQ5ICAgICAgICAgICMgMyA3Ci0KLSAgICAgICAgc3RsICAgICB0MywgNChhMSkg ICAgICAgIyAxIDgKLSAgICAgICAgYWRkcSAgICB0ZSwgYTIsIGExICAgICAgIyBwaXhlbHMgKz0g bGluZV9zaXplCi0gICAgICAgIHN0bCAgICAgdDYsIDAodGUpICAgICAgICMgMiA4Ci0gICAgICAg IHN0bCAgICAgdDksIDQodGUpICAgICAgICMgMyA4Ci0KLSAgICAgICAgYm5lICAgICB0aCwgMWIK LSAgICAgICAgcmV0Ci0gICAgICAgIC5lbmQgYWRkX3BpeGVsc19jbGFtcGVkX212aV9hc20KZGlm ZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvbWVfY21wX2FscGhhLmMgYi9saWJhdmNvZGVjL2Fs cGhhL21lX2NtcF9hbHBoYS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzFhNGE2 MmM1Li4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMvYWxwaGEvbWVfY21wX2FscGhhLmMKKysr IC9kZXYvbnVsbApAQCAtMSwyNzkgKzAsMCBAQAotLyoKLSAqIEFscGhhIG9wdGltaXplZCBEU1Ag dXRpbHMKLSAqIENvcHlyaWdodCAoYykgMjAwMiBGYWxrIEh1ZWZmbmVyIDxmYWxrQGRlYmlhbi5v cmc+Ci0gKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlm eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0KLSNpbmNsdWRlICJs aWJhdnV0aWwvYXR0cmlidXRlcy5oIgotI2luY2x1ZGUgImxpYmF2Y29kZWMvbWVfY21wLmgiCi0j aW5jbHVkZSAiYXNtLmgiCi0KLWludCBwaXhfYWJzMTZ4MTZfbXZpX2FzbShzdHJ1Y3QgTXBlZ0Vu Y0NvbnRleHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpOwotCi1z dGF0aWMgaW5saW5lIHVpbnQ2NF90IGF2ZzIodWludDY0X3QgYSwgdWludDY0X3QgYikKLXsKLSAg ICByZXR1cm4gKGEgfCBiKSAtICgoKGEgXiBiKSAmIEJZVEVfVkVDKDB4ZmUpKSA+PiAxKTsKLX0K LQotc3RhdGljIGlubGluZSB1aW50NjRfdCBhdmc0KHVpbnQ2NF90IGwxLCB1aW50NjRfdCBsMiwg dWludDY0X3QgbDMsIHVpbnQ2NF90IGw0KQotewotICAgIHVpbnQ2NF90IHIxID0gKChsMSAmIH5C WVRFX1ZFQygweDAzKSkgPj4gMikKLSAgICAgICAgICAgICAgICArICgobDIgJiB+QllURV9WRUMo MHgwMykpID4+IDIpCi0gICAgICAgICAgICAgICAgKyAoKGwzICYgfkJZVEVfVkVDKDB4MDMpKSA+ PiAyKQotICAgICAgICAgICAgICAgICsgKChsNCAmIH5CWVRFX1ZFQygweDAzKSkgPj4gMik7Ci0g ICAgdWludDY0X3QgcjIgPSAoKCAgKGwxICYgQllURV9WRUMoMHgwMykpCi0gICAgICAgICAgICAg ICAgICAgICsgKGwyICYgQllURV9WRUMoMHgwMykpCi0gICAgICAgICAgICAgICAgICAgICsgKGwz ICYgQllURV9WRUMoMHgwMykpCi0gICAgICAgICAgICAgICAgICAgICsgKGw0ICYgQllURV9WRUMo MHgwMykpCi0gICAgICAgICAgICAgICAgICAgICsgQllURV9WRUMoMHgwMikpID4+IDIpICYgQllU RV9WRUMoMHgwMyk7Ci0gICAgcmV0dXJuIHIxICsgcjI7Ci19Ci0KLXN0YXRpYyBpbnQgcGl4X2Fi czh4OF9tdmkoc3RydWN0IE1wZWdFbmNDb250ZXh0ICp2LCBjb25zdCB1aW50OF90ICpwaXgxLCBj b25zdCB1aW50OF90ICpwaXgyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3Qg bGluZV9zaXplLCBpbnQgaCkKLXsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLQotICAgIGlmICgoc2l6 ZV90KSBwaXgyICYgMHg3KSB7Ci0gICAgICAgIC8qIHdvcmtzIG9ubHkgd2hlbiBwaXgyIGlzIGFj dHVhbGx5IHVuYWxpZ25lZCAqLwotICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAvKiBk byA4IHBpeGVsIGEgdGltZSAqLwotICAgICAgICAgICAgdWludDY0X3QgcDEsIHAyOwotCi0gICAg ICAgICAgICBwMSAgPSBsZHEocGl4MSk7Ci0gICAgICAgICAgICBwMiAgPSB1bGRxKHBpeDIpOwot ICAgICAgICAgICAgcmVzdWx0ICs9IHBlcnIocDEsIHAyKTsKLQotICAgICAgICAgICAgcGl4MSAr PSBsaW5lX3NpemU7Ci0gICAgICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLSAgICAgICAgfSB3 aGlsZSAoLS1oKTsKLSAgICB9IGVsc2UgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICB1aW50 NjRfdCBwMSwgcDI7Ci0KLSAgICAgICAgICAgIHAxID0gbGRxKHBpeDEpOwotICAgICAgICAgICAg cDIgPSBsZHEocGl4Mik7Ci0gICAgICAgICAgICByZXN1bHQgKz0gcGVycihwMSwgcDIpOwotCi0g ICAgICAgICAgICBwaXgxICs9IGxpbmVfc2l6ZTsKLSAgICAgICAgICAgIHBpeDIgKz0gbGluZV9z aXplOwotICAgICAgICB9IHdoaWxlICgtLWgpOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7 Ci19Ci0KLXN0YXRpYyBpbnQgcGl4X2FiczE2eDE2X3gyX212aShzdHJ1Y3QgTXBlZ0VuY0NvbnRl eHQgKnYsIGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IGxpbmVfc2l6ZSwgaW50IGgpCi17Ci0g ICAgaW50IHJlc3VsdCA9IDA7Ci0gICAgdWludDY0X3QgZGlzYWxpZ24gPSAoc2l6ZV90KSBwaXgy ICYgMHg3OwotCi0gICAgc3dpdGNoIChkaXNhbGlnbikgewotICAgIGNhc2UgMDoKLSAgICAgICAg ZG8gewotICAgICAgICAgICAgdWludDY0X3QgcDFfbCwgcDFfciwgcDJfbCwgcDJfcjsKLSAgICAg ICAgICAgIHVpbnQ2NF90IGwsIHI7Ci0KLSAgICAgICAgICAgIHAxX2wgPSBsZHEocGl4MSk7Ci0g ICAgICAgICAgICBwMV9yID0gbGRxKHBpeDEgKyA4KTsKLSAgICAgICAgICAgIGwgICAgPSBsZHEo cGl4Mik7Ci0gICAgICAgICAgICByICAgID0gbGRxKHBpeDIgKyA4KTsKLSAgICAgICAgICAgIHAy X2wgPSBhdmcyKGwsIChsID4+IDgpIHwgKCh1aW50NjRfdCkgciA8PCA1NikpOwotICAgICAgICAg ICAgcDJfciA9IGF2ZzIociwgKHIgPj4gOCkgfCAoKHVpbnQ2NF90KSBwaXgyWzE2XSA8PCA1Nikp OwotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7Ci0gICAgICAgICAgICBwaXgyICs9IGxp bmVfc2l6ZTsKLQotICAgICAgICAgICAgcmVzdWx0ICs9IHBlcnIocDFfbCwgcDJfbCkKLSAgICAg ICAgICAgICAgICAgICAgKyBwZXJyKHAxX3IsIHAyX3IpOwotICAgICAgICB9IHdoaWxlICgtLWgp OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIDc6Ci0gICAgICAgIC8qIHwuLi4uLi4ubHxsbGxs bGxscnxycnJycnJyKnwKLSAgICAgICAgICAgVGhpcyBjYXNlIGlzIHNwZWNpYWwgYmVjYXVzZSBk aXNhbGlnbjEgd291bGQgYmUgOCwgd2hpY2gKLSAgICAgICAgICAgZ2V0cyB0cmVhdGVkIGFzIDAg YnkgZXh0cWguICBBdCBsZWFzdCBpdCBpcyBhIGJpdCBmYXN0ZXIKLSAgICAgICAgICAgdGhhdCB3 YXkgOikgICovCi0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIHVpbnQ2NF90IHAxX2wsIHAxX3Is IHAyX2wsIHAyX3I7Ci0gICAgICAgICAgICB1aW50NjRfdCBsLCBtLCByOwotCi0gICAgICAgICAg ICBwMV9sID0gbGRxKHBpeDEpOwotICAgICAgICAgICAgcDFfciA9IGxkcShwaXgxICsgOCk7Ci0g ICAgICAgICAgICBsICAgICA9IGxkcV91KHBpeDIpOwotICAgICAgICAgICAgbSAgICAgPSBsZHFf dShwaXgyICsgOCk7Ci0gICAgICAgICAgICByICAgICA9IGxkcV91KHBpeDIgKyAxNik7Ci0gICAg ICAgICAgICBwMl9sICA9IGF2ZzIoZXh0cWwobCwgZGlzYWxpZ24pIHwgZXh0cWgobSwgZGlzYWxp Z24pLCBtKTsKLSAgICAgICAgICAgIHAyX3IgID0gYXZnMihleHRxbChtLCBkaXNhbGlnbikgfCBl eHRxaChyLCBkaXNhbGlnbiksIHIpOwotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7Ci0g ICAgICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLQotICAgICAgICAgICAgcmVzdWx0ICs9IHBl cnIocDFfbCwgcDJfbCkKLSAgICAgICAgICAgICAgICAgICAgKyBwZXJyKHAxX3IsIHAyX3IpOwot ICAgICAgICB9IHdoaWxlICgtLWgpOwotICAgICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAg ICAgICBkbyB7Ci0gICAgICAgICAgICB1aW50NjRfdCBkaXNhbGlnbjEgPSBkaXNhbGlnbiArIDE7 Ci0gICAgICAgICAgICB1aW50NjRfdCBwMV9sLCBwMV9yLCBwMl9sLCBwMl9yOwotICAgICAgICAg ICAgdWludDY0X3QgbCwgbSwgcjsKLQotICAgICAgICAgICAgcDFfbCAgPSBsZHEocGl4MSk7Ci0g ICAgICAgICAgICBwMV9yICA9IGxkcShwaXgxICsgOCk7Ci0gICAgICAgICAgICBsICAgICA9IGxk cV91KHBpeDIpOwotICAgICAgICAgICAgbSAgICAgPSBsZHFfdShwaXgyICsgOCk7Ci0gICAgICAg ICAgICByICAgICA9IGxkcV91KHBpeDIgKyAxNik7Ci0gICAgICAgICAgICBwMl9sICA9IGF2ZzIo ZXh0cWwobCwgZGlzYWxpZ24pIHwgZXh0cWgobSwgZGlzYWxpZ24pLAotICAgICAgICAgICAgICAg ICAgICAgICAgIGV4dHFsKGwsIGRpc2FsaWduMSkgfCBleHRxaChtLCBkaXNhbGlnbjEpKTsKLSAg ICAgICAgICAgIHAyX3IgID0gYXZnMihleHRxbChtLCBkaXNhbGlnbikgfCBleHRxaChyLCBkaXNh bGlnbiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXh0cWwobSwgZGlzYWxpZ24xKSB8IGV4 dHFoKHIsIGRpc2FsaWduMSkpOwotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7Ci0gICAg ICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLQotICAgICAgICAgICAgcmVzdWx0ICs9IHBlcnIo cDFfbCwgcDJfbCkKLSAgICAgICAgICAgICAgICAgICAgKyBwZXJyKHAxX3IsIHAyX3IpOwotICAg ICAgICB9IHdoaWxlICgtLWgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHJl c3VsdDsKLX0KLQotc3RhdGljIGludCBwaXhfYWJzMTZ4MTZfeTJfbXZpKHN0cnVjdCBNcGVnRW5j Q29udGV4dCAqdiwgY29uc3QgdWludDhfdCAqcGl4MSwgY29uc3QgdWludDhfdCAqcGl4MiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQgaCkK LXsKLSAgICBpbnQgcmVzdWx0ID0gMDsKLQotICAgIGlmICgoc2l6ZV90KSBwaXgyICYgMHg3KSB7 Ci0gICAgICAgIHVpbnQ2NF90IHQsIHAyX2wsIHAyX3I7Ci0gICAgICAgIHQgICAgID0gbGRxX3Uo cGl4MiArIDgpOwotICAgICAgICBwMl9sICA9IGV4dHFsKGxkcV91KHBpeDIpLCBwaXgyKSB8IGV4 dHFoKHQsIHBpeDIpOwotICAgICAgICBwMl9yICA9IGV4dHFsKHQsIHBpeDIpIHwgZXh0cWgobGRx X3UocGl4MiArIDE2KSwgcGl4Mik7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAgICAgdWludDY0 X3QgcDFfbCwgcDFfciwgbnAyX2wsIG5wMl9yOwotICAgICAgICAgICAgdWludDY0X3QgdDsKLQot ICAgICAgICAgICAgcDFfbCAgPSBsZHEocGl4MSk7Ci0gICAgICAgICAgICBwMV9yICA9IGxkcShw aXgxICsgOCk7Ci0gICAgICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLSAgICAgICAgICAgIHQg ICAgID0gbGRxX3UocGl4MiArIDgpOwotICAgICAgICAgICAgbnAyX2wgPSBleHRxbChsZHFfdShw aXgyKSwgcGl4MikgfCBleHRxaCh0LCBwaXgyKTsKLSAgICAgICAgICAgIG5wMl9yID0gZXh0cWwo dCwgcGl4MikgfCBleHRxaChsZHFfdShwaXgyICsgMTYpLCBwaXgyKTsKLQotICAgICAgICAgICAg cmVzdWx0ICs9IHBlcnIocDFfbCwgYXZnMihwMl9sLCBucDJfbCkpCi0gICAgICAgICAgICAgICAg ICAgICsgcGVycihwMV9yLCBhdmcyKHAyX3IsIG5wMl9yKSk7Ci0KLSAgICAgICAgICAgIHBpeDEg Kz0gbGluZV9zaXplOwotICAgICAgICAgICAgcDJfbCAgPSBucDJfbDsKLSAgICAgICAgICAgIHAy X3IgID0gbnAyX3I7Ci0KLSAgICAgICAgfSB3aGlsZSAoLS1oKTsKLSAgICB9IGVsc2UgewotICAg ICAgICB1aW50NjRfdCBwMl9sLCBwMl9yOwotICAgICAgICBwMl9sID0gbGRxKHBpeDIpOwotICAg ICAgICBwMl9yID0gbGRxKHBpeDIgKyA4KTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgdWlu dDY0X3QgcDFfbCwgcDFfciwgbnAyX2wsIG5wMl9yOwotCi0gICAgICAgICAgICBwMV9sID0gbGRx KHBpeDEpOwotICAgICAgICAgICAgcDFfciA9IGxkcShwaXgxICsgOCk7Ci0gICAgICAgICAgICBw aXgyICs9IGxpbmVfc2l6ZTsKLSAgICAgICAgICAgIG5wMl9sID0gbGRxKHBpeDIpOwotICAgICAg ICAgICAgbnAyX3IgPSBsZHEocGl4MiArIDgpOwotCi0gICAgICAgICAgICByZXN1bHQgKz0gcGVy cihwMV9sLCBhdmcyKHAyX2wsIG5wMl9sKSkKLSAgICAgICAgICAgICAgICAgICAgKyBwZXJyKHAx X3IsIGF2ZzIocDJfciwgbnAyX3IpKTsKLQotICAgICAgICAgICAgcGl4MSArPSBsaW5lX3NpemU7 Ci0gICAgICAgICAgICBwMl9sICA9IG5wMl9sOwotICAgICAgICAgICAgcDJfciAgPSBucDJfcjsK LSAgICAgICAgfSB3aGlsZSAoLS1oKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot c3RhdGljIGludCBwaXhfYWJzMTZ4MTZfeHkyX212aShzdHJ1Y3QgTXBlZ0VuY0NvbnRleHQgKnYs IGNvbnN0IHVpbnQ4X3QgKnBpeDEsIGNvbnN0IHVpbnQ4X3QgKnBpeDIsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBsaW5lX3NpemUsIGludCBoKQotewotICAgIGlu dCByZXN1bHQgPSAwOwotCi0gICAgdWludDY0X3QgcDFfbCwgcDFfcjsKLSAgICB1aW50NjRfdCBw Ml9sLCBwMl9yLCBwMl94OwotCi0gICAgcDFfbCA9IGxkcShwaXgxKTsKLSAgICBwMV9yID0gbGRx KHBpeDEgKyA4KTsKLQotICAgIGlmICgoc2l6ZV90KSBwaXgyICYgMHg3KSB7IC8qIGNvdWxkIGJl IG9wdGltaXplZCBhIGxvdCAqLwotICAgICAgICBwMl9sID0gdWxkcShwaXgyKTsKLSAgICAgICAg cDJfciA9IHVsZHEocGl4MiArIDgpOwotICAgICAgICBwMl94ID0gKHVpbnQ2NF90KSBwaXgyWzE2 XSA8PCA1NjsKLSAgICB9IGVsc2UgewotICAgICAgICBwMl9sID0gbGRxKHBpeDIpOwotICAgICAg ICBwMl9yID0gbGRxKHBpeDIgKyA4KTsKLSAgICAgICAgcDJfeCA9IGxkcShwaXgyICsgMTYpIDw8 IDU2OwotICAgIH0KLQotICAgIGRvIHsKLSAgICAgICAgdWludDY0X3QgbnAxX2wsIG5wMV9yOwot ICAgICAgICB1aW50NjRfdCBucDJfbCwgbnAyX3IsIG5wMl94OwotCi0gICAgICAgIHBpeDEgKz0g bGluZV9zaXplOwotICAgICAgICBwaXgyICs9IGxpbmVfc2l6ZTsKLQotICAgICAgICBucDFfbCA9 IGxkcShwaXgxKTsKLSAgICAgICAgbnAxX3IgPSBsZHEocGl4MSArIDgpOwotCi0gICAgICAgIGlm ICgoc2l6ZV90KSBwaXgyICYgMHg3KSB7IC8qIGNvdWxkIGJlIG9wdGltaXplZCBhIGxvdCAqLwot ICAgICAgICAgICAgbnAyX2wgPSB1bGRxKHBpeDIpOwotICAgICAgICAgICAgbnAyX3IgPSB1bGRx KHBpeDIgKyA4KTsKLSAgICAgICAgICAgIG5wMl94ID0gKHVpbnQ2NF90KSBwaXgyWzE2XSA8PCA1 NjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG5wMl9sID0gbGRxKHBpeDIpOwotICAg ICAgICAgICAgbnAyX3IgPSBsZHEocGl4MiArIDgpOwotICAgICAgICAgICAgbnAyX3ggPSBsZHEo cGl4MiArIDE2KSA8PCA1NjsKLSAgICAgICAgfQotCi0gICAgICAgIHJlc3VsdCArPSBwZXJyKHAx X2wsCi0gICAgICAgICAgICAgICAgICAgICAgIGF2ZzQoIHAyX2wsICggcDJfbCA+PiA4KSB8ICgo dWludDY0X3QpICBwMl9yIDw8IDU2KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBucDJf bCwgKG5wMl9sID4+IDgpIHwgKCh1aW50NjRfdCkgbnAyX3IgPDwgNTYpKSkKLSAgICAgICAgICAg ICAgICArIHBlcnIocDFfciwKLSAgICAgICAgICAgICAgICAgICAgICAgYXZnNCggcDJfciwgKCBw Ml9yID4+IDgpIHwgKCh1aW50NjRfdCkgIHAyX3gpLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5wMl9yLCAobnAyX3IgPj4gOCkgfCAoKHVpbnQ2NF90KSBucDJfeCkpKTsKLQotICAgICAg ICBwMV9sID0gbnAxX2w7Ci0gICAgICAgIHAxX3IgPSBucDFfcjsKLSAgICAgICAgcDJfbCA9IG5w Ml9sOwotICAgICAgICBwMl9yID0gbnAyX3I7Ci0gICAgICAgIHAyX3ggPSBucDJfeDsKLSAgICB9 IHdoaWxlICgtLWgpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotYXZfY29sZCB2b2lkIGZm X21lX2NtcF9pbml0X2FscGhhKE1FQ21wQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQgKmF2Y3R4 KQotewotICAgIC8qIGFtYXNrIGNsZWFycyBhbGwgYml0cyB0aGF0IGNvcnJlc3BvbmQgdG8gcHJl c2VudCBmZWF0dXJlcy4gICovCi0gICAgaWYgKGFtYXNrKEFNQVNLX01WSSkgPT0gMCkgewotICAg ICAgICBjLT5zYWRbMF0gICAgICAgICAgID0gcGl4X2FiczE2eDE2X212aV9hc207Ci0gICAgICAg IGMtPnNhZFsxXSAgICAgICAgICAgPSBwaXhfYWJzOHg4X212aTsKLSAgICAgICAgYy0+cGl4X2Fi c1swXVswXSAgICA9IHBpeF9hYnMxNngxNl9tdmlfYXNtOwotICAgICAgICBjLT5waXhfYWJzWzFd WzBdICAgID0gcGl4X2Ficzh4OF9tdmk7Ci0gICAgICAgIGMtPnBpeF9hYnNbMF1bMV0gICAgPSBw aXhfYWJzMTZ4MTZfeDJfbXZpOwotICAgICAgICBjLT5waXhfYWJzWzBdWzJdICAgID0gcGl4X2Fi czE2eDE2X3kyX212aTsKLSAgICAgICAgYy0+cGl4X2Fic1swXVszXSAgICA9IHBpeF9hYnMxNngx Nl94eTJfbXZpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvbWVfY21w X212aV9hc20uUyBiL2xpYmF2Y29kZWMvYWxwaGEvbWVfY21wX212aV9hc20uUwpkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMTgzZmVlYjQwYy4uMDAwMDAwMDAwMAotLS0gYS9saWJhdmNv ZGVjL2FscGhhL21lX2NtcF9tdmlfYXNtLlMKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBA QAotLyoKLSAqIEFscGhhIG9wdGltaXplZCBEU1AgdXRpbHMKLSAqIENvcHlyaWdodCAoYykgMjAw MiBGYWxrIEh1ZWZmbmVyIDxmYWxrQGRlYmlhbi5vcmc+Ci0gKgotICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgotICoKLSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhl IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICog RkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlv biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjEx MC0xMzAxIFVTQQotICovCi0KLSNpbmNsdWRlICJyZWdkZWYuaCIKLQotLyogU29tZSBuaWNlciBy ZWdpc3RlciBuYW1lcy4gICovCi0jZGVmaW5lIHRhIHQxMAotI2RlZmluZSB0YiB0MTEKLSNkZWZp bmUgdGMgdDEyCi0jZGVmaW5lIHRkIEFUCi0vKiBEYW5nZXI6IHRoZXNlIG92ZXJsYXAgd2l0aCB0 aGUgYXJndW1lbnQgbGlzdCBhbmQgdGhlIHJldHVybiB2YWx1ZSAqLwotI2RlZmluZSB0ZSBhNQot I2RlZmluZSB0ZiBhNAotI2RlZmluZSB0ZyBhMwotI2RlZmluZSB0aCB2MAotCi0gICAgICAgIC5z ZXQgbm9hdAotICAgICAgICAuc2V0IG5vcmVvcmRlcgotICAgICAgICAuYXJjaCBwY2E1NgotICAg ICAgICAudGV4dAotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIGludCBwaXhfYWJzMTZ4MTZf bXZpX2FzbShjb25zdCB1aW50OF90ICpwaXgxLCBjb25zdCB1aW50OF90ICpwaXgyLCBpbnQgbGlu ZV9zaXplKQotICoKLSAqIFRoaXMgY29kZSBpcyB3cml0dGVuIHdpdGggYSBwY2E1NiBpbiBtaW5k LiBGb3IgZXY2LCBvbmUgc2hvdWxkCi0gKiByZWFsbHkgdGFrZSB0aGUgaW5jcmVhc2VkIGxhdGVu Y3kgb2YgMyBjeWNsZXMgZm9yIE1WSSBpbnN0cnVjdGlvbnMKLSAqIGludG8gYWNjb3VudC4KLSAq Ci0gKiBJdCBpcyBpbXBvcnRhbnQgdG8ga2VlcCB0aGUgbG9hZGluZyBhbmQgZmlyc3QgdXNlIG9m IGEgcmVnaXN0ZXIgYXMKLSAqIGZhciBhcGFydCBhcyBwb3NzaWJsZSwgYmVjYXVzZSBpZiBhIHJl Z2lzdGVyIGlzIGFjY2Vzc2VkIGJlZm9yZSBpdAotICogaGFzIGJlZW4gZmV0Y2hlZCBmcm9tIG1l bW9yeSwgdGhlIENQVSB3aWxsIHN0YWxsLgotICovCi0gICAgICAgIC5hbGlnbiA0Ci0gICAgICAg IC5nbG9ibCBwaXhfYWJzMTZ4MTZfbXZpX2FzbQotICAgICAgICAuZW50IHBpeF9hYnMxNngxNl9t dmlfYXNtCi1waXhfYWJzMTZ4MTZfbXZpX2FzbToKLSAgICAgICAgLmZyYW1lIHNwLCAwLCByYSwg MAotICAgICAgICAucHJvbG9ndWUgMAotCi0gICAgICAgIGFuZCAgICAgYTIsIDcsIHQwCi0gICAg ICAgIGNsciAgICAgdjAKLSAgICAgICAgYmVxICAgICB0MCwgJGFsaWduZWQKLSAgICAgICAgLmFs aWduIDQKLSR1bmFsaWduZWQ6Ci0gICAgICAgIC8qIFJlZ2lzdGVyczoKLSAgICAgICAgICAgbGlu ZSAwOgotICAgICAgICAgICB0MDogIGxlZnRfdSAtPiBsZWZ0IGxvIC0+IGxlZnQKLSAgICAgICAg ICAgdDE6ICBtaWQKLSAgICAgICAgICAgdDI6ICByaWdodF91IC0+IHJpZ2h0IGhpIC0+IHJpZ2h0 Ci0gICAgICAgICAgIHQzOiAgcmVmIGxlZnQKLSAgICAgICAgICAgdDQ6ICByZWYgcmlnaHQKLSAg ICAgICAgICAgbGluZSAxOgotICAgICAgICAgICB0NTogIGxlZnRfdSAtPiBsZWZ0IGxvIC0+IGxl ZnQKLSAgICAgICAgICAgdDY6ICBtaWQKLSAgICAgICAgICAgdDc6ICByaWdodF91IC0+IHJpZ2h0 IGhpIC0+IHJpZ2h0Ci0gICAgICAgICAgIHQ4OiAgcmVmIGxlZnQKLSAgICAgICAgICAgdDk6ICBy ZWYgcmlnaHQKLSAgICAgICAgICAgdGVtcDoKLSAgICAgICAgICAgdGE6ICBsZWZ0IGhpCi0gICAg ICAgICAgIHRiOiAgcmlnaHQgbG8KLSAgICAgICAgICAgdGM6ICBlcnJvciBsZWZ0Ci0gICAgICAg ICAgIHRkOiAgZXJyb3IgcmlnaHQgICovCi0KLSAgICAgICAgLyogbG9hZCBsaW5lIDAgKi8KLSAg ICAgICAgbGRxX3UgICB0MCwgMChhMikgICAgICAgIyBsZWZ0X3UKLSAgICAgICAgbGRxX3UgICB0 MSwgOChhMikgICAgICAgIyBtaWQKLSAgICAgICAgbGRxX3UgICB0MiwgMTYoYTIpICAgICAgIyBy aWdodF91Ci0gICAgICAgIGxkcSAgICAgdDMsIDAoYTEpICAgICAgICMgcmVmIGxlZnQKLSAgICAg ICAgbGRxICAgICB0NCwgOChhMSkgICAgICAgIyByZWYgcmlnaHQKLSAgICAgICAgYWRkcSAgICBh MSwgYTMsIGExICAgICAgIyBwaXgxCi0gICAgICAgIGFkZHEgICAgYTIsIGEzLCBhMiAgICAgICMg cGl4MgotICAgICAgICAvKiBsb2FkIGxpbmUgMSAqLwotICAgICAgICBsZHFfdSAgIHQ1LCAwKGEy KSAgICAgICAjIGxlZnRfdQotICAgICAgICBsZHFfdSAgIHQ2LCA4KGEyKSAgICAgICAjIG1pZAot ICAgICAgICBsZHFfdSAgIHQ3LCAxNihhMikgICAgICAjIHJpZ2h0X3UKLSAgICAgICAgbGRxICAg ICB0OCwgMChhMSkgICAgICAgIyByZWYgbGVmdAotICAgICAgICBsZHEgICAgIHQ5LCA4KGExKSAg ICAgICAjIHJlZiByaWdodAotICAgICAgICBhZGRxICAgIGExLCBhMywgYTEgICAgICAjIHBpeDEK LSAgICAgICAgYWRkcSAgICBhMiwgYTMsIGEyICAgICAgIyBwaXgyCi0gICAgICAgIC8qIGNhbGMg bGluZSAwICovCi0gICAgICAgIGV4dHFsICAgdDAsIGEyLCB0MCAgICAgICMgbGVmdCBsbwotICAg ICAgICBleHRxaCAgIHQxLCBhMiwgdGEgICAgICAjIGxlZnQgaGkKLSAgICAgICAgZXh0cWwgICB0 MSwgYTIsIHRiICAgICAgIyByaWdodCBsbwotICAgICAgICBvciAgICAgIHQwLCB0YSwgdDAgICAg ICAjIGxlZnQKLSAgICAgICAgZXh0cWggICB0MiwgYTIsIHQyICAgICAgIyByaWdodCBoaQotICAg ICAgICBwZXJyICAgIHQzLCB0MCwgdGMgICAgICAjIGVycm9yIGxlZnQKLSAgICAgICAgb3IgICAg ICB0MiwgdGIsIHQyICAgICAgIyByaWdodAotICAgICAgICBwZXJyICAgIHQ0LCB0MiwgdGQgICAg ICAjIGVycm9yIHJpZ2h0Ci0gICAgICAgIGFkZHEgICAgdjAsIHRjLCB2MCAgICAgICMgYWRkIGVy cm9yIGxlZnQKLSAgICAgICAgYWRkcSAgICB2MCwgdGQsIHYwICAgICAgIyBhZGQgZXJyb3IgbGVm dAotICAgICAgICAvKiBjYWxjIGxpbmUgMSAqLwotICAgICAgICBleHRxbCAgIHQ1LCBhMiwgdDUg ICAgICAjIGxlZnQgbG8KLSAgICAgICAgZXh0cWggICB0NiwgYTIsIHRhICAgICAgIyBsZWZ0IGhp Ci0gICAgICAgIGV4dHFsICAgdDYsIGEyLCB0YiAgICAgICMgcmlnaHQgbG8KLSAgICAgICAgb3Ig ICAgICB0NSwgdGEsIHQ1ICAgICAgIyBsZWZ0Ci0gICAgICAgIGV4dHFoICAgdDcsIGEyLCB0NyAg ICAgICMgcmlnaHQgaGkKLSAgICAgICAgcGVyciAgICB0OCwgdDUsIHRjICAgICAgIyBlcnJvciBs ZWZ0Ci0gICAgICAgIG9yICAgICAgdDcsIHRiLCB0NyAgICAgICMgcmlnaHQKLSAgICAgICAgcGVy ciAgICB0OSwgdDcsIHRkICAgICAgIyBlcnJvciByaWdodAotICAgICAgICBhZGRxICAgIHYwLCB0 YywgdjAgICAgICAjIGFkZCBlcnJvciBsZWZ0Ci0gICAgICAgIGFkZHEgICAgdjAsIHRkLCB2MCAg ICAgICMgYWRkIGVycm9yIGxlZnQKLSAgICAgICAgLyogbG9vcCAqLwotICAgICAgICBzdWJxICAg IGE0LCAgMiwgYTQgICAgICAjIGggLT0gMgotICAgICAgICBibmUgICAgIGE0LCAkdW5hbGlnbmVk Ci0gICAgICAgIHJldAotCi0gICAgICAgIC5hbGlnbiA0Ci0kYWxpZ25lZDoKLSAgICAgICAgLyog bG9hZCBsaW5lIDAgKi8KLSAgICAgICAgbGRxICAgICB0MCwgMChhMikgICAgICAgIyBsZWZ0Ci0g ICAgICAgIGxkcSAgICAgdDEsIDgoYTIpICAgICAgICMgcmlnaHQKLSAgICAgICAgYWRkcSAgICBh MiwgYTMsIGEyICAgICAgIyBwaXgyCi0gICAgICAgIGxkcSAgICAgdDIsIDAoYTEpICAgICAgICMg cmVmIGxlZnQKLSAgICAgICAgbGRxICAgICB0MywgOChhMSkgICAgICAgIyByZWYgcmlnaHQKLSAg ICAgICAgYWRkcSAgICBhMSwgYTMsIGExICAgICAgIyBwaXgxCi0gICAgICAgIC8qIGxvYWQgbGlu ZSAxICovCi0gICAgICAgIGxkcSAgICAgdDQsIDAoYTIpICAgICAgICMgbGVmdAotICAgICAgICBs ZHEgICAgIHQ1LCA4KGEyKSAgICAgICAjIHJpZ2h0Ci0gICAgICAgIGFkZHEgICAgYTIsIGEzLCBh MiAgICAgICMgcGl4MgotICAgICAgICBsZHEgICAgIHQ2LCAwKGExKSAgICAgICAjIHJlZiBsZWZ0 Ci0gICAgICAgIGxkcSAgICAgdDcsIDgoYTEpICAgICAgICMgcmVmIHJpZ2h0Ci0gICAgICAgIGFk ZHEgICAgYTEsIGEzLCBhMSAgICAgICMgcGl4MQotICAgICAgICAvKiBsb2FkIGxpbmUgMiAqLwot ICAgICAgICBsZHEgICAgIHQ4LCAwKGEyKSAgICAgICAjIGxlZnQKLSAgICAgICAgbGRxICAgICB0 OSwgOChhMikgICAgICAgIyByaWdodAotICAgICAgICBhZGRxICAgIGEyLCBhMywgYTIgICAgICAj IHBpeDIKLSAgICAgICAgbGRxICAgICB0YSwgMChhMSkgICAgICAgIyByZWYgbGVmdAotICAgICAg ICBsZHEgICAgIHRiLCA4KGExKSAgICAgICAjIHJlZiByaWdodAotICAgICAgICBhZGRxICAgIGEx LCBhMywgYTEgICAgICAjIHBpeDEKLSAgICAgICAgLyogbG9hZCBsaW5lIDMgKi8KLSAgICAgICAg bGRxICAgICB0YywgMChhMikgICAgICAgIyBsZWZ0Ci0gICAgICAgIGxkcSAgICAgdGQsIDgoYTIp ICAgICAgICMgcmlnaHQKLSAgICAgICAgYWRkcSAgICBhMiwgYTMsIGEyICAgICAgIyBwaXgyCi0g ICAgICAgIGxkcSAgICAgdGUsIDAoYTEpICAgICAgICMgcmVmIGxlZnQKLSAgICAgICAgbGRxICAg ICBhMCwgOChhMSkgICAgICAgIyByZWYgcmlnaHQKLSAgICAgICAgLyogY2FsYyBsaW5lIDAgKi8K LSAgICAgICAgcGVyciAgICB0MCwgdDIsIHQwICAgICAgIyBlcnJvciBsZWZ0Ci0gICAgICAgIGFk ZHEgICAgYTEsIGEzLCBhMSAgICAgICMgcGl4MQotICAgICAgICBwZXJyICAgIHQxLCB0MywgdDEg ICAgICAjIGVycm9yIHJpZ2h0Ci0gICAgICAgIGFkZHEgICAgdjAsIHQwLCB2MCAgICAgICMgYWRk IGVycm9yIGxlZnQKLSAgICAgICAgLyogY2FsYyBsaW5lIDEgKi8KLSAgICAgICAgcGVyciAgICB0 NCwgdDYsIHQwICAgICAgIyBlcnJvciBsZWZ0Ci0gICAgICAgIGFkZHEgICAgdjAsIHQxLCB2MCAg ICAgICMgYWRkIGVycm9yIHJpZ2h0Ci0gICAgICAgIHBlcnIgICAgdDUsIHQ3LCB0MSAgICAgICMg ZXJyb3IgcmlnaHQKLSAgICAgICAgYWRkcSAgICB2MCwgdDAsIHYwICAgICAgIyBhZGQgZXJyb3Ig bGVmdAotICAgICAgICAvKiBjYWxjIGxpbmUgMiAqLwotICAgICAgICBwZXJyICAgIHQ4LCB0YSwg dDAgICAgICAjIGVycm9yIGxlZnQKLSAgICAgICAgYWRkcSAgICB2MCwgdDEsIHYwICAgICAgIyBh ZGQgZXJyb3IgcmlnaHQKLSAgICAgICAgcGVyciAgICB0OSwgdGIsIHQxICAgICAgIyBlcnJvciBy aWdodAotICAgICAgICBhZGRxICAgIHYwLCB0MCwgdjAgICAgICAjIGFkZCBlcnJvciBsZWZ0Ci0g ICAgICAgIC8qIGNhbGMgbGluZSAzICovCi0gICAgICAgIHBlcnIgICAgdGMsIHRlLCB0MCAgICAg ICMgZXJyb3IgbGVmdAotICAgICAgICBhZGRxICAgIHYwLCB0MSwgdjAgICAgICAjIGFkZCBlcnJv ciByaWdodAotICAgICAgICBwZXJyICAgIHRkLCBhMCwgdDEgICAgICAjIGVycm9yIHJpZ2h0Ci0g ICAgICAgIGFkZHEgICAgdjAsIHQwLCB2MCAgICAgICMgYWRkIGVycm9yIGxlZnQKLSAgICAgICAg YWRkcSAgICB2MCwgdDEsIHYwICAgICAgIyBhZGQgZXJyb3IgcmlnaHQKLSAgICAgICAgLyogbG9v cCAqLwotICAgICAgICBzdWJxICAgIGE0LCAgNCwgYTQgICAgICAjIGggLT0gNAotICAgICAgICBi bmUgICAgIGE0LCAkYWxpZ25lZAotICAgICAgICByZXQKLSAgICAgICAgLmVuZCBwaXhfYWJzMTZ4 MTZfbXZpX2FzbQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBoYS9tcGVndmlkZW9fYWxwaGEu YyBiL2xpYmF2Y29kZWMvYWxwaGEvbXBlZ3ZpZGVvX2FscGhhLmMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDEyNmZlMjY0YTEuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZjb2RlYy9hbHBo YS9tcGVndmlkZW9fYWxwaGEuYworKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi0vKgot ICogQWxwaGEgb3B0aW1pemVkIERTUCB1dGlscwotICogQ29weXJpZ2h0IChjKSAyMDAyIEZhbGsg SHVlZmZuZXIgPGZhbGtAZGViaWFuLm9yZz4KLSAqCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBG Rm1wZWcuCi0gKgotICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl c3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5z ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVn OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEg VVNBCi0gKi8KLQotI2luY2x1ZGUgImxpYmF2dXRpbC9hdHRyaWJ1dGVzLmgiCi0jaW5jbHVkZSAi bGliYXZjb2RlYy9tcGVndmlkZW8uaCIKLSNpbmNsdWRlICJhc20uaCIKLQotc3RhdGljIHZvaWQg ZGN0X3VucXVhbnRpemVfaDI2M19heHAoaW50MTZfdCAqYmxvY2ssIGludCBuX2NvZWZmcywKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHFzY2FsZSwgdWludDY0 X3QgcWFkZCkKLXsKLSAgICB1aW50NjRfdCBxbXVsID0gcXNjYWxlIDw8IDE7Ci0gICAgdWludDY0 X3QgY29ycmVjdGlvbiA9IFdPUkRfVkVDKHFtdWwgKiAyNTUgPj4gOCk7Ci0gICAgaW50IGk7Ci0K LSAgICBxYWRkID0gV09SRF9WRUMocWFkZCk7Ci0KLSAgICBmb3IoaSA9IDA7IGkgPD0gbl9jb2Vm ZnM7IGJsb2NrICs9IDQsIGkgKz0gNCkgewotICAgICAgICB1aW50NjRfdCBsZXZlbHMsIG5lZ21h c2ssIHplcm9zLCBhZGQsIHN1YjsKLQotICAgICAgICBsZXZlbHMgPSBsZHEoYmxvY2spOwotICAg ICAgICBpZiAobGV2ZWxzID09IDApCi0gICAgICAgICAgICBjb250aW51ZTsKLQotI2lmZGVmIF9f YWxwaGFfbWF4X18KLSAgICAgICAgLyogSSBkb24ndCB0aGluayB0aGUgc3BlZWQgZGlmZmVyZW5j ZSBqdXN0aWZpZXMgcnVudGltZQotICAgICAgICAgICBkZXRlY3Rpb24uICAqLwotICAgICAgICBu ZWdtYXNrID0gbWF4c3c0KGxldmVscywgLTEpOyAvKiBuZWdhdGl2ZSAtPiBmZmZmICgtMSkgKi8K LSAgICAgICAgbmVnbWFzayA9IG1pbnN3NChuZWdtYXNrLCAwKTsgLyogcG9zaXRpdmUgLT4gMDAw MCAoMCkgKi8KLSNlbHNlCi0gICAgICAgIG5lZ21hc2sgPSBjbXBiZ2UoV09SRF9WRUMoMHg3ZmZm KSwgbGV2ZWxzKTsKLSAgICAgICAgbmVnbWFzayAmPSAobmVnbWFzayA+PiAxKSB8ICgxIDw8IDcp OwotICAgICAgICBuZWdtYXNrID0gemFwKC0xLCBuZWdtYXNrKTsKLSNlbmRpZgotCi0gICAgICAg IHplcm9zID0gY21wYmdlKDAsIGxldmVscyk7Ci0gICAgICAgIHplcm9zICY9IHplcm9zID4+IDE7 Ci0gICAgICAgIC8qIHplcm9zIHw9IHplcm9zIDw8IDEgaXMgbm90IG5lZWRlZCBzaW5jZSBxYWRk IDw9IDI1NSwgc28KLSAgICAgICAgICAgemFwcGluZyB0aGUgbG93ZXIgYnl0ZSBzdWZmaWNlcy4g ICovCi0KLSAgICAgICAgbGV2ZWxzICo9IHFtdWw7Ci0gICAgICAgIGxldmVscyAtPSBjb3JyZWN0 aW9uICYgKG5lZ21hc2sgPDwgMTYpOwotCi0gICAgICAgIGFkZCA9IHFhZGQgJiB+bmVnbWFzazsK LSAgICAgICAgc3ViID0gcWFkZCAmICBuZWdtYXNrOwotICAgICAgICAvKiBTZXQgcWFkZCB0byAw IGZvciBsZXZlbHMgPT0gMC4gICovCi0gICAgICAgIGFkZCA9IHphcChhZGQsIHplcm9zKTsKLSAg ICAgICAgbGV2ZWxzICs9IGFkZDsKLSAgICAgICAgbGV2ZWxzIC09IHN1YjsKLQotICAgICAgICBz dHEobGV2ZWxzLCBibG9jayk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBkY3RfdW5xdWFudGl6 ZV9oMjYzX2ludHJhX2F4cChNcGVnRW5jQ29udGV4dCAqcywgaW50MTZfdCAqYmxvY2ssCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbiwgaW50IHFzY2FsZSkKLXsKLSAg ICBpbnQgbl9jb2VmZnM7Ci0gICAgdWludDY0X3QgcWFkZDsKLSAgICBpbnQxNl90IGJsb2NrMCA9 IGJsb2NrWzBdOwotCi0gICAgaWYgKCFzLT5oMjYzX2FpYykgewotICAgICAgICBpZiAobiA8IDQp Ci0gICAgICAgICAgICBibG9jazAgKj0gcy0+eV9kY19zY2FsZTsKLSAgICAgICAgZWxzZQotICAg ICAgICAgICAgYmxvY2swICo9IHMtPmNfZGNfc2NhbGU7Ci0gICAgICAgIHFhZGQgPSAocXNjYWxl IC0gMSkgfCAxOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHFhZGQgPSAwOwotICAgIH0KLQotICAg IGlmKHMtPmFjX3ByZWQpCi0gICAgICAgIG5fY29lZmZzID0gNjM7Ci0gICAgZWxzZQotICAgICAg ICBuX2NvZWZmcyA9IHMtPmludGVyX3NjYW50YWJsZS5yYXN0ZXJfZW5kW3MtPmJsb2NrX2xhc3Rf aW5kZXhbbl1dOwotCi0gICAgZGN0X3VucXVhbnRpemVfaDI2M19heHAoYmxvY2ssIG5fY29lZmZz LCBxc2NhbGUsIHFhZGQpOwotCi0gICAgYmxvY2tbMF0gPSBibG9jazA7Ci19Ci0KLXN0YXRpYyB2 b2lkIGRjdF91bnF1YW50aXplX2gyNjNfaW50ZXJfYXhwKE1wZWdFbmNDb250ZXh0ICpzLCBpbnQx Nl90ICpibG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuLCBp bnQgcXNjYWxlKQotewotICAgIGludCBuX2NvZWZmcyA9IHMtPmludGVyX3NjYW50YWJsZS5yYXN0 ZXJfZW5kW3MtPmJsb2NrX2xhc3RfaW5kZXhbbl1dOwotICAgIGRjdF91bnF1YW50aXplX2gyNjNf YXhwKGJsb2NrLCBuX2NvZWZmcywgcXNjYWxlLCAocXNjYWxlIC0gMSkgfCAxKTsKLX0KLQotYXZf Y29sZCB2b2lkIGZmX21wdl9jb21tb25faW5pdF9heHAoTXBlZ0VuY0NvbnRleHQgKnMpCi17Ci0g ICAgcy0+ZGN0X3VucXVhbnRpemVfaDI2M19pbnRyYSA9IGRjdF91bnF1YW50aXplX2gyNjNfaW50 cmFfYXhwOwotICAgIHMtPmRjdF91bnF1YW50aXplX2gyNjNfaW50ZXIgPSBkY3RfdW5xdWFudGl6 ZV9oMjYzX2ludGVyX2F4cDsKLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxwaGEvcGl4Ymxv Y2tkc3BfYWxwaGEuYyBiL2xpYmF2Y29kZWMvYWxwaGEvcGl4YmxvY2tkc3BfYWxwaGEuYwpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJmMWExZDc5Yy4uMDAwMDAwMDAwMAotLS0gYS9s aWJhdmNvZGVjL2FscGhhL3BpeGJsb2NrZHNwX2FscGhhLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3 OSArMCwwIEBACi0vKgotICogU0lNRC1vcHRpbWl6ZWQgcGl4ZWwgb3BlcmF0aW9ucwotICoKLSAq IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZl cnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp Y2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0jaW5jbHVkZSAibGliYXZ1dGlsL2F0 dHJpYnV0ZXMuaCIKLSNpbmNsdWRlICJsaWJhdmNvZGVjL3BpeGJsb2NrZHNwLmgiCi0jaW5jbHVk ZSAiYXNtLmgiCi0KLXN0YXRpYyB2b2lkIGdldF9waXhlbHNfbXZpKGludDE2X3QgKnJlc3RyaWN0 IGJsb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCAqcmVzdHJp Y3QgcGl4ZWxzLCBwdHJkaWZmX3Qgc3RyaWRlKQotewotICAgIGludCBoID0gODsKLQotICAgIGRv IHsKLSAgICAgICAgdWludDY0X3QgcDsKLQotICAgICAgICBwID0gbGRxKHBpeGVscyk7Ci0gICAg ICAgIHN0cSh1bnBrYncocCksICAgICAgIGJsb2NrKTsKLSAgICAgICAgc3RxKHVucGtidyhwID4+ IDMyKSwgYmxvY2sgKyA0KTsKLQotICAgICAgICBwaXhlbHMgKz0gc3RyaWRlOwotICAgICAgICBi bG9jayArPSA4OwotICAgIH0gd2hpbGUgKC0taCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpZmZfcGl4 ZWxzX212aShpbnQxNl90ICpibG9jaywgY29uc3QgdWludDhfdCAqczEsIGNvbnN0IHVpbnQ4X3Qg KnMyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0cmRpZmZfdCBzdHJpZGUpCi17Ci0g ICAgaW50IGggPSA4OwotICAgIHVpbnQ2NF90IG1hc2sgPSAweDQwNDA7Ci0KLSAgICBtYXNrIHw9 IG1hc2sgPDwgMTY7Ci0gICAgbWFzayB8PSBtYXNrIDw8IDMyOwotICAgIGRvIHsKLSAgICAgICAg dWludDY0X3QgeCwgeSwgYywgZCwgYTsKLSAgICAgICAgdWludDY0X3Qgc2lnbnM7Ci0KLSAgICAg ICAgeCA9IGxkcShzMSk7Ci0gICAgICAgIHkgPSBsZHEoczIpOwotICAgICAgICBjID0gY21wYmdl KHgsIHkpOwotICAgICAgICBkID0geCAtIHk7Ci0gICAgICAgIGEgPSB6YXAobWFzaywgYyk7ICAg ICAgIC8qIFdlIHVzZSAweDQwNDA0MDQwNDA0MDQwNDAgaGVyZS4uLiAgKi8KLSAgICAgICAgZCAr PSA0ICogYTsgICAgICAgICAgICAgLyogLi4uc28gd2UgY2FuIHVzZSBzNGFkZHEgaGVyZS4gICAg ICAqLwotICAgICAgICBzaWducyA9IHphcCgtMSwgYyk7Ci0KLSAgICAgICAgc3RxKHVucGtidyhk KSAgICAgICB8ICh1bnBrYncoc2lnbnMpICAgICAgIDw8IDgpLCBibG9jayk7Ci0gICAgICAgIHN0 cSh1bnBrYncoZCA+PiAzMikgfCAodW5wa2J3KHNpZ25zID4+IDMyKSA8PCA4KSwgYmxvY2sgKyA0 KTsKLQotICAgICAgICBzMSArPSBzdHJpZGU7Ci0gICAgICAgIHMyICs9IHN0cmlkZTsKLSAgICAg ICAgYmxvY2sgKz0gODsKLSAgICB9IHdoaWxlICgtLWgpOwotfQotCi1hdl9jb2xkIHZvaWQgZmZf cGl4YmxvY2tkc3BfaW5pdF9hbHBoYShQaXhibG9ja0RTUENvbnRleHQgKmMsIEFWQ29kZWNDb250 ZXh0ICphdmN0eCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGhpZ2hfYml0X2RlcHRoKQotewotICAgIGlmIChhbWFzayhBTUFTS19NVkkpID09IDApIHsK LSAgICAgICAgaWYgKCFoaWdoX2JpdF9kZXB0aCkKLSAgICAgICAgICAgIGMtPmdldF9waXhlbHMg PSBnZXRfcGl4ZWxzX212aTsKLSAgICAgICAgYy0+ZGlmZl9waXhlbHMgPSBkaWZmX3BpeGVsc19t dmk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBoYS9yZWdkZWYuaCBiL2xp YmF2Y29kZWMvYWxwaGEvcmVnZGVmLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYw NTU3N2E4OWIuLjAwMDAwMDAwMDAKLS0tIGEvbGliYXZjb2RlYy9hbHBoYS9yZWdkZWYuaAorKysg L2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLS8qCi0gKiBBbHBoYSBvcHRpbWl6ZWQgRFNQIHV0 aWxzCi0gKiBjb3B5cmlnaHQgKGMpIDIwMDIgRmFsayBIdWVmZm5lciA8ZmFsa0BkZWJpYW4ub3Jn PgotICoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4KLSAqCi0gKiBGRm1wZWcgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNz ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm dGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKLSAqLwotCi0vKiBTb21lIEJTRHMg ZG9uJ3Qgc2VlbSB0byBoYXZlIHJlZ2RlZi5oLi4uIHNpZ2ggICovCi0jaWZuZGVmIEFWQ09ERUNf QUxQSEFfUkVHREVGX0gKLSNkZWZpbmUgQVZDT0RFQ19BTFBIQV9SRUdERUZfSAotCi0jZGVmaW5l IHYwICAgICAgJDAgICAgICAvKiBmdW5jdGlvbiByZXR1cm4gdmFsdWUgKi8KLQotI2RlZmluZSB0 MCAgICAgICQxICAgICAgLyogdGVtcG9yYXJ5IHJlZ2lzdGVycyAoY2FsbGVyLXNhdmVkKSAqLwot I2RlZmluZSB0MSAgICAgICQyCi0jZGVmaW5lIHQyICAgICAgJDMKLSNkZWZpbmUgdDMgICAgICAk NAotI2RlZmluZSB0NCAgICAgICQ1Ci0jZGVmaW5lIHQ1ICAgICAgJDYKLSNkZWZpbmUgdDYgICAg ICAkNwotI2RlZmluZSB0NyAgICAgICQ4Ci0KLSNkZWZpbmUgczAgICAgICAkOSAgICAgIC8qIHNh dmVkLXJlZ2lzdGVycyAoY2FsbGVlLXNhdmVkIHJlZ2lzdGVycykgKi8KLSNkZWZpbmUgczEgICAg ICAkMTAKLSNkZWZpbmUgczIgICAgICAkMTEKLSNkZWZpbmUgczMgICAgICAkMTIKLSNkZWZpbmUg czQgICAgICAkMTMKLSNkZWZpbmUgczUgICAgICAkMTQKLSNkZWZpbmUgczYgICAgICAkMTUKLSNk ZWZpbmUgZnAgICAgICBzNiAgICAgIC8qIGZyYW1lLXBvaW50ZXIgKHM2IGluIGZyYW1lLWxlc3Mg cHJvY2VkdXJlcykgKi8KLQotI2RlZmluZSBhMCAgICAgICQxNiAgICAgLyogYXJndW1lbnQgcmVn aXN0ZXJzIChjYWxsZXItc2F2ZWQpICovCi0jZGVmaW5lIGExICAgICAgJDE3Ci0jZGVmaW5lIGEy ICAgICAgJDE4Ci0jZGVmaW5lIGEzICAgICAgJDE5Ci0jZGVmaW5lIGE0ICAgICAgJDIwCi0jZGVm aW5lIGE1ICAgICAgJDIxCi0KLSNkZWZpbmUgdDggICAgICAkMjIgICAgIC8qIG1vcmUgdGVtcHMg KGNhbGxlci1zYXZlZCkgKi8KLSNkZWZpbmUgdDkgICAgICAkMjMKLSNkZWZpbmUgdDEwICAgICAk MjQKLSNkZWZpbmUgdDExICAgICAkMjUKLSNkZWZpbmUgcmEgICAgICAkMjYgICAgIC8qIHJldHVy biBhZGRyZXNzIHJlZ2lzdGVyICovCi0jZGVmaW5lIHQxMiAgICAgJDI3Ci0KLSNkZWZpbmUgcHYg ICAgICB0MTIgICAgIC8qIHByb2NlZHVyZS12YXJpYWJsZSByZWdpc3RlciAqLwotI2RlZmluZSBB VCAgICAgICRhdCAgICAgLyogYXNzZW1ibGVyIHRlbXBvcmFyeSAqLwotI2RlZmluZSBncCAgICAg ICQyOSAgICAgLyogZ2xvYmFsIHBvaW50ZXIgKi8KLSNkZWZpbmUgc3AgICAgICAkMzAgICAgIC8q IHN0YWNrIHBvaW50ZXIgKi8KLSNkZWZpbmUgemVybyAgICAkMzEgICAgIC8qIHJlYWRzIGFzIHpl cm8sIHdyaXRlcyBhcmUgbm9vcHMgKi8KLQotLyogU29tZSBuaWNlciByZWdpc3RlciBuYW1lcy4g ICovCi0jZGVmaW5lIHRhIHQxMAotI2RlZmluZSB0YiB0MTEKLSNkZWZpbmUgdGMgdDEyCi0jZGVm aW5lIHRkIEFUCi0vKiBEYW5nZXI6IHRoZXNlIG92ZXJsYXAgd2l0aCB0aGUgYXJndW1lbnQgbGlz dCBhbmQgdGhlIHJldHVybiB2YWx1ZSAqLwotI2RlZmluZSB0ZSBhNQotI2RlZmluZSB0ZiBhNAot I2RlZmluZSB0ZyBhMwotI2RlZmluZSB0aCB2MAotCi0jZW5kaWYgLyogQVZDT0RFQ19BTFBIQV9S RUdERUZfSCAqLwpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hbHBoYS9zaW1wbGVfaWRjdF9hbHBo YS5jIGIvbGliYXZjb2RlYy9hbHBoYS9zaW1wbGVfaWRjdF9hbHBoYS5jCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA2ZTM3N2VmMjQzLi4wMDAwMDAwMDAwCi0tLSBhL2xpYmF2Y29kZWMv YWxwaGEvc2ltcGxlX2lkY3RfYWxwaGEuYworKysgL2Rldi9udWxsCkBAIC0xLDMwMyArMCwwIEBA Ci0vKgotICogU2ltcGxlIElEQ1QgKEFscGhhIG9wdGltaXplZCkKLSAqCi0gKiBDb3B5cmlnaHQg KGMpIDIwMDEgTWljaGFlbCBOaWVkZXJtYXllciA8bWljaGFlbG5pQGdteC5hdD4KLSAqCi0gKiBi YXNlZCB1cG9uIHNvbWUgb3V0Y29tbWVudGVkIEMgY29kZSBmcm9tIG1wZWcyZGVjIChpZGN0X21t eC5jCi0gKiB3cml0dGVuIGJ5IEFhcm9uIEhvbHR6bWFuIDxhaG9sdHptYUBlc3MuZW5nci51dmlj LmNhPikKLSAqCi0gKiBBbHBoYSBvcHRpbWl6YXRpb25zIGJ5IE3DpW5zIFJ1bGxnw6VyZCA8bWFu c0BtYW5zci5jb20+Ci0gKiAgICAgICAgICAgICAgICAgICAgIGFuZCBGYWxrIEh1ZWZmbmVyIDxm YWxrQGRlYmlhbi5vcmc+Ci0gKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLgotICoK LSAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogRkZtcGVnIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICovCi0K LSNpbmNsdWRlICJpZGN0ZHNwX2FscGhhLmgiCi0jaW5jbHVkZSAiYXNtLmgiCi0KLS8vIGNvcyhp ICogTV9QSSAvIDE2KSAqIHNxcnQoMikgKiAoMSA8PCAxNCkKLS8vIFc0IGlzIGFjdHVhbGx5IGV4 YWN0bHkgMTYzODQsIGJ1dCB1c2luZyAxNjM4MyB3b3JrcyBhcm91bmQKLS8vIGFjY3VtdWxhdGlu ZyByb3VuZGluZyBlcnJvcnMgZm9yIHNvbWUgZW5jb2RlcnMKLSNkZWZpbmUgVzEgMjI3MjUKLSNk ZWZpbmUgVzIgMjE0MDcKLSNkZWZpbmUgVzMgMTkyNjYKLSNkZWZpbmUgVzQgMTYzODMKLSNkZWZp bmUgVzUgMTI4NzMKLSNkZWZpbmUgVzYgIDg4NjcKLSNkZWZpbmUgVzcgIDQ1MjAKLSNkZWZpbmUg Uk9XX1NISUZUIDExCi0jZGVmaW5lIENPTF9TSElGVCAyMAotCi0vKiAwOiBhbGwgZW50cmllcyAw LCAxOiBvbmx5IGZpcnN0IGVudHJ5IG5vbnplcm8sIDI6IG90aGVyd2lzZSAgKi8KLXN0YXRpYyBp bmxpbmUgaW50IGlkY3Rfcm93KGludDE2X3QgKnJvdykKLXsKLSAgICBpbnQgYTAsIGExLCBhMiwg YTMsIGIwLCBiMSwgYjIsIGIzLCB0OwotICAgIHVpbnQ2NF90IGwsIHIsIHQyOwotICAgIGwgPSBs ZHEocm93KTsKLSAgICByID0gbGRxKHJvdyArIDQpOwotCi0gICAgaWYgKGwgPT0gMCAmJiByID09 IDApCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgYTAgPSBXNCAqIHNleHR3KGwpICsgKDEgPDwg KFJPV19TSElGVCAtIDEpKTsKLQotICAgIGlmICgoKGwgJiB+MHhmZmZmVUwpIHwgcikgPT0gMCkg ewotICAgICAgICBhMCA+Pj0gUk9XX1NISUZUOwotICAgICAgICB0MiA9ICh1aW50MTZfdCkgYTA7 Ci0gICAgICAgIHQyIHw9IHQyIDw8IDE2OwotICAgICAgICB0MiB8PSB0MiA8PCAzMjsKLQotICAg ICAgICBzdHEodDIsIHJvdyk7Ci0gICAgICAgIHN0cSh0Miwgcm93ICsgNCk7Ci0gICAgICAgIHJl dHVybiAxOwotICAgIH0KLQotICAgIGExID0gYTA7Ci0gICAgYTIgPSBhMDsKLSAgICBhMyA9IGEw OwotCi0gICAgdCA9IGV4dHdsKGwsIDQpOyAgICAgICAgICAgIC8qIHJvd1syXSAqLwotICAgIGlm ICh0ICE9IDApIHsKLSAgICAgICAgdCA9IHNleHR3KHQpOwotICAgICAgICBhMCArPSBXMiAqIHQ7 Ci0gICAgICAgIGExICs9IFc2ICogdDsKLSAgICAgICAgYTIgLT0gVzYgKiB0OwotICAgICAgICBh MyAtPSBXMiAqIHQ7Ci0gICAgfQotCi0gICAgdCA9IGV4dHdsKHIsIDApOyAgICAgICAgICAgIC8q IHJvd1s0XSAqLwotICAgIGlmICh0ICE9IDApIHsKLSAgICAgICAgdCA9IHNleHR3KHQpOwotICAg ICAgICBhMCArPSBXNCAqIHQ7Ci0gICAgICAgIGExIC09IFc0ICogdDsKLSAgICAgICAgYTIgLT0g VzQgKiB0OwotICAgICAgICBhMyArPSBXNCAqIHQ7Ci0gICAgfQotCi0gICAgdCA9IGV4dHdsKHIs IDQpOyAgICAgICAgICAgIC8qIHJvd1s2XSAqLwotICAgIGlmICh0ICE9IDApIHsKLSAgICAgICAg dCA9IHNleHR3KHQpOwotICAgICAgICBhMCArPSBXNiAqIHQ7Ci0gICAgICAgIGExIC09IFcyICog dDsKLSAgICAgICAgYTIgKz0gVzIgKiB0OwotICAgICAgICBhMyAtPSBXNiAqIHQ7Ci0gICAgfQot Ci0gICAgdCA9IGV4dHdsKGwsIDIpOyAgICAgICAgICAgIC8qIHJvd1sxXSAqLwotICAgIGlmICh0 ICE9IDApIHsKLSAgICAgICAgdCA9IHNleHR3KHQpOwotICAgICAgICBiMCA9IFcxICogdDsKLSAg ICAgICAgYjEgPSBXMyAqIHQ7Ci0gICAgICAgIGIyID0gVzUgKiB0OwotICAgICAgICBiMyA9IFc3 ICogdDsKLSAgICB9IGVsc2UgewotICAgICAgICBiMCA9IDA7Ci0gICAgICAgIGIxID0gMDsKLSAg ICAgICAgYjIgPSAwOwotICAgICAgICBiMyA9IDA7Ci0gICAgfQotCi0gICAgdCA9IGV4dHdsKGws IDYpOyAgICAgICAgICAgIC8qIHJvd1szXSAqLwotICAgIGlmICh0KSB7Ci0gICAgICAgIHQgPSBz ZXh0dyh0KTsKLSAgICAgICAgYjAgKz0gVzMgKiB0OwotICAgICAgICBiMSAtPSBXNyAqIHQ7Ci0g ICAgICAgIGIyIC09IFcxICogdDsKLSAgICAgICAgYjMgLT0gVzUgKiB0OwotICAgIH0KLQotCi0g ICAgdCA9IGV4dHdsKHIsIDIpOyAgICAgICAgICAgIC8qIHJvd1s1XSAqLwotICAgIGlmICh0KSB7 Ci0gICAgICAgIHQgPSBzZXh0dyh0KTsKLSAgICAgICAgYjAgKz0gVzUgKiB0OwotICAgICAgICBi MSAtPSBXMSAqIHQ7Ci0gICAgICAgIGIyICs9IFc3ICogdDsKLSAgICAgICAgYjMgKz0gVzMgKiB0 OwotICAgIH0KLQotICAgIHQgPSBleHR3bChyLCA2KTsgICAgICAgICAgICAvKiByb3dbN10gKi8K LSAgICBpZiAodCkgewotICAgICAgICB0ID0gc2V4dHcodCk7Ci0gICAgICAgIGIwICs9IFc3ICog dDsKLSAgICAgICAgYjEgLT0gVzUgKiB0OwotICAgICAgICBiMiArPSBXMyAqIHQ7Ci0gICAgICAg IGIzIC09IFcxICogdDsKLSAgICB9Ci0KLSAgICByb3dbMF0gPSAoYTAgKyBiMCkgPj4gUk9XX1NI SUZUOwotICAgIHJvd1sxXSA9IChhMSArIGIxKSA+PiBST1dfU0hJRlQ7Ci0gICAgcm93WzJdID0g KGEyICsgYjIpID4+IFJPV19TSElGVDsKLSAgICByb3dbM10gPSAoYTMgKyBiMykgPj4gUk9XX1NI SUZUOwotICAgIHJvd1s0XSA9IChhMyAtIGIzKSA+PiBST1dfU0hJRlQ7Ci0gICAgcm93WzVdID0g KGEyIC0gYjIpID4+IFJPV19TSElGVDsKLSAgICByb3dbNl0gPSAoYTEgLSBiMSkgPj4gUk9XX1NI SUZUOwotICAgIHJvd1s3XSA9IChhMCAtIGIwKSA+PiBST1dfU0hJRlQ7Ci0KLSAgICByZXR1cm4g MjsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGlkY3RfY29sKGludDE2X3QgKmNvbCkKLXsKLSAg ICBpbnQgYTAsIGExLCBhMiwgYTMsIGIwLCBiMSwgYjIsIGIzOwotCi0gICAgY29sWzBdICs9ICgx IDw8IChDT0xfU0hJRlQgLSAxKSkgLyBXNDsKLQotICAgIGEwID0gVzQgKiBjb2xbOCAqIDBdOwot ICAgIGExID0gVzQgKiBjb2xbOCAqIDBdOwotICAgIGEyID0gVzQgKiBjb2xbOCAqIDBdOwotICAg IGEzID0gVzQgKiBjb2xbOCAqIDBdOwotCi0gICAgaWYgKGNvbFs4ICogMl0pIHsKLSAgICAgICAg YTAgKz0gVzIgKiBjb2xbOCAqIDJdOwotICAgICAgICBhMSArPSBXNiAqIGNvbFs4ICogMl07Ci0g ICAgICAgIGEyIC09IFc2ICogY29sWzggKiAyXTsKLSAgICAgICAgYTMgLT0gVzIgKiBjb2xbOCAq IDJdOwotICAgIH0KLQotICAgIGlmIChjb2xbOCAqIDRdKSB7Ci0gICAgICAgIGEwICs9IFc0ICog Y29sWzggKiA0XTsKLSAgICAgICAgYTEgLT0gVzQgKiBjb2xbOCAqIDRdOwotICAgICAgICBhMiAt PSBXNCAqIGNvbFs4ICogNF07Ci0gICAgICAgIGEzICs9IFc0ICogY29sWzggKiA0XTsKLSAgICB9 Ci0KLSAgICBpZiAoY29sWzggKiA2XSkgewotICAgICAgICBhMCArPSBXNiAqIGNvbFs4ICogNl07 Ci0gICAgICAgIGExIC09IFcyICogY29sWzggKiA2XTsKLSAgICAgICAgYTIgKz0gVzIgKiBjb2xb OCAqIDZdOwotICAgICAgICBhMyAtPSBXNiAqIGNvbFs4ICogNl07Ci0gICAgfQotCi0gICAgaWYg KGNvbFs4ICogMV0pIHsKLSAgICAgICAgYjAgPSBXMSAqIGNvbFs4ICogMV07Ci0gICAgICAgIGIx ID0gVzMgKiBjb2xbOCAqIDFdOwotICAgICAgICBiMiA9IFc1ICogY29sWzggKiAxXTsKLSAgICAg ICAgYjMgPSBXNyAqIGNvbFs4ICogMV07Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgYjAgPSAwOwot ICAgICAgICBiMSA9IDA7Ci0gICAgICAgIGIyID0gMDsKLSAgICAgICAgYjMgPSAwOwotICAgIH0K LQotICAgIGlmIChjb2xbOCAqIDNdKSB7Ci0gICAgICAgIGIwICs9IFczICogY29sWzggKiAzXTsK LSAgICAgICAgYjEgLT0gVzcgKiBjb2xbOCAqIDNdOwotICAgICAgICBiMiAtPSBXMSAqIGNvbFs4 ICogM107Ci0gICAgICAgIGIzIC09IFc1ICogY29sWzggKiAzXTsKLSAgICB9Ci0KLSAgICBpZiAo Y29sWzggKiA1XSkgewotICAgICAgICBiMCArPSBXNSAqIGNvbFs4ICogNV07Ci0gICAgICAgIGIx IC09IFcxICogY29sWzggKiA1XTsKLSAgICAgICAgYjIgKz0gVzcgKiBjb2xbOCAqIDVdOwotICAg ICAgICBiMyArPSBXMyAqIGNvbFs4ICogNV07Ci0gICAgfQotCi0gICAgaWYgKGNvbFs4ICogN10p IHsKLSAgICAgICAgYjAgKz0gVzcgKiBjb2xbOCAqIDddOwotICAgICAgICBiMSAtPSBXNSAqIGNv bFs4ICogN107Ci0gICAgICAgIGIyICs9IFczICogY29sWzggKiA3XTsKLSAgICAgICAgYjMgLT0g VzEgKiBjb2xbOCAqIDddOwotICAgIH0KLQotICAgIGNvbFs4ICogMF0gPSAoYTAgKyBiMCkgPj4g Q09MX1NISUZUOwotICAgIGNvbFs4ICogN10gPSAoYTAgLSBiMCkgPj4gQ09MX1NISUZUOwotICAg IGNvbFs4ICogMV0gPSAoYTEgKyBiMSkgPj4gQ09MX1NISUZUOwotICAgIGNvbFs4ICogNl0gPSAo YTEgLSBiMSkgPj4gQ09MX1NISUZUOwotICAgIGNvbFs4ICogMl0gPSAoYTIgKyBiMikgPj4gQ09M X1NISUZUOwotICAgIGNvbFs4ICogNV0gPSAoYTIgLSBiMikgPj4gQ09MX1NISUZUOwotICAgIGNv bFs4ICogM10gPSAoYTMgKyBiMykgPj4gQ09MX1NISUZUOwotICAgIGNvbFs4ICogNF0gPSAoYTMg LSBiMykgPj4gQ09MX1NISUZUOwotfQotCi0vKiBJZiBhbGwgcm93cyBidXQgdGhlIGZpcnN0IG9u ZSBhcmUgemVybyBhZnRlciByb3cgdHJhbnNmb3JtYXRpb24sCi0gICBhbGwgcm93cyB3aWxsIGJl IGlkZW50aWNhbCBhZnRlciBjb2x1bW4gdHJhbnNmb3JtYXRpb24uICAqLwotc3RhdGljIGlubGlu ZSB2b2lkIGlkY3RfY29sMihpbnQxNl90ICpjb2wpCi17Ci0gICAgaW50IGk7Ci0gICAgdWludDY0 X3QgbCwgcjsKLQotICAgIGZvciAoaSA9IDA7IGkgPCA4OyArK2kpIHsKLSAgICAgICAgaW50IGEw ID0gY29sW2ldICsgKDEgPDwgKENPTF9TSElGVCAtIDEpKSAvIFc0OwotCi0gICAgICAgIGEwICo9 IFc0OwotICAgICAgICBjb2xbaV0gPSBhMCA+PiBDT0xfU0hJRlQ7Ci0gICAgfQotCi0gICAgbCA9 IGxkcShjb2wgKyAwICogNCk7IHIgPSBsZHEoY29sICsgMSAqIDQpOwotICAgIHN0cShsLCBjb2wg KyAgMiAqIDQpOyBzdHEociwgY29sICsgIDMgKiA0KTsKLSAgICBzdHEobCwgY29sICsgIDQgKiA0 KTsgc3RxKHIsIGNvbCArICA1ICogNCk7Ci0gICAgc3RxKGwsIGNvbCArICA2ICogNCk7IHN0cShy LCBjb2wgKyAgNyAqIDQpOwotICAgIHN0cShsLCBjb2wgKyAgOCAqIDQpOyBzdHEociwgY29sICsg IDkgKiA0KTsKLSAgICBzdHEobCwgY29sICsgMTAgKiA0KTsgc3RxKHIsIGNvbCArIDExICogNCk7 Ci0gICAgc3RxKGwsIGNvbCArIDEyICogNCk7IHN0cShyLCBjb2wgKyAxMyAqIDQpOwotICAgIHN0 cShsLCBjb2wgKyAxNCAqIDQpOyBzdHEociwgY29sICsgMTUgKiA0KTsKLX0KLQotdm9pZCBmZl9z aW1wbGVfaWRjdF9heHAoaW50MTZfdCAqYmxvY2spCi17Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQg cm93c1plcm8gPSAxOyAgICAgICAgICAgLyogYWxsIHJvd3MgZXhjZXB0IHJvdyAwIHplcm8gKi8K LSAgICBpbnQgcm93c0NvbnN0YW50ID0gMTsgICAgICAgLyogYWxsIHJvd3MgY29uc2lzdCBvZiBh IGNvbnN0YW50IHZhbHVlICovCi0KLSAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0gICAg ICAgIGludCBzcGFyc2VuZXNzID0gaWRjdF9yb3coYmxvY2sgKyA4ICogaSk7Ci0KLSAgICAgICAg aWYgKGkgPiAwICYmIHNwYXJzZW5lc3MgPiAwKQotICAgICAgICAgICAgcm93c1plcm8gPSAwOwot ICAgICAgICBpZiAoc3BhcnNlbmVzcyA9PSAyKQotICAgICAgICAgICAgcm93c0NvbnN0YW50ID0g MDsKLSAgICB9Ci0KLSAgICBpZiAocm93c1plcm8pIHsKLSAgICAgICAgaWRjdF9jb2wyKGJsb2Nr KTsKLSAgICB9IGVsc2UgaWYgKHJvd3NDb25zdGFudCkgewotICAgICAgICBpZGN0X2NvbChibG9j ayk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpICs9IDIpIHsKLSAgICAgICAgICAgIHVp bnQ2NF90IHYgPSAodWludDE2X3QpIGJsb2NrWzBdOwotICAgICAgICAgICAgdWludDY0X3QgdyA9 ICh1aW50MTZfdCkgYmxvY2tbOF07Ci0KLSAgICAgICAgICAgIHYgfD0gdiA8PCAxNjsKLSAgICAg ICAgICAgIHcgfD0gdyA8PCAxNjsKLSAgICAgICAgICAgIHYgfD0gdiA8PCAzMjsKLSAgICAgICAg ICAgIHcgfD0gdyA8PCAzMjsKLSAgICAgICAgICAgIHN0cSh2LCBibG9jayArIDAgKiA0KTsKLSAg ICAgICAgICAgIHN0cSh2LCBibG9jayArIDEgKiA0KTsKLSAgICAgICAgICAgIHN0cSh3LCBibG9j ayArIDIgKiA0KTsKLSAgICAgICAgICAgIHN0cSh3LCBibG9jayArIDMgKiA0KTsKLSAgICAgICAg ICAgIGJsb2NrICs9IDQgKiA0OwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZm9y IChpID0gMDsgaSA8IDg7IGkrKykKLSAgICAgICAgICAgIGlkY3RfY29sKGJsb2NrICsgaSk7Ci0g ICAgfQotfQotCi12b2lkIGZmX3NpbXBsZV9pZGN0X3B1dF9heHAodWludDhfdCAqZGVzdCwgcHRy ZGlmZl90IGxpbmVfc2l6ZSwgaW50MTZfdCAqYmxvY2spCi17Ci0gICAgZmZfc2ltcGxlX2lkY3Rf YXhwKGJsb2NrKTsKLSAgICBwdXRfcGl4ZWxzX2NsYW1wZWRfYXhwX3AoYmxvY2ssIGRlc3QsIGxp bmVfc2l6ZSk7Ci19Ci0KLXZvaWQgZmZfc2ltcGxlX2lkY3RfYWRkX2F4cCh1aW50OF90ICpkZXN0 LCBwdHJkaWZmX3QgbGluZV9zaXplLCBpbnQxNl90ICpibG9jaykKLXsKLSAgICBmZl9zaW1wbGVf aWRjdF9heHAoYmxvY2spOwotICAgIGFkZF9waXhlbHNfY2xhbXBlZF9heHBfcChibG9jaywgZGVz dCwgbGluZV9zaXplKTsKLX0KZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYmxvY2tkc3AuYyBiL2xp YmF2Y29kZWMvYmxvY2tkc3AuYwppbmRleCA3OWE4ODE0MjYyLi41N2NhNDFiZDk2IDEwMDY0NAot LS0gYS9saWJhdmNvZGVjL2Jsb2NrZHNwLmMKKysrIGIvbGliYXZjb2RlYy9ibG9ja2RzcC5jCkBA IC02Myw5ICs2Myw3IEBAIGF2X2NvbGQgdm9pZCBmZl9ibG9ja2RzcF9pbml0KEJsb2NrRFNQQ29u dGV4dCAqYykKICAgICBjLT5maWxsX2Jsb2NrX3RhYlswXSA9IGZpbGxfYmxvY2sxNl9jOwogICAg IGMtPmZpbGxfYmxvY2tfdGFiWzFdID0gZmlsbF9ibG9jazhfYzsKIAotI2lmIEFSQ0hfQUxQSEEK LSAgICBmZl9ibG9ja2RzcF9pbml0X2FscGhhKGMpOwotI2VsaWYgQVJDSF9BUk0KKyNpZiBBUkNI X0FSTQogICAgIGZmX2Jsb2NrZHNwX2luaXRfYXJtKGMpOwogI2VsaWYgQVJDSF9QUEMKICAgICBm Zl9ibG9ja2RzcF9pbml0X3BwYyhjKTsKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvaHBlbGRzcC5j IGIvbGliYXZjb2RlYy9ocGVsZHNwLmMKaW5kZXggMWVjNzZlN2E0NS4uODA0OTRjOTc0OSAxMDA2 NDQKLS0tIGEvbGliYXZjb2RlYy9ocGVsZHNwLmMKKysrIGIvbGliYXZjb2RlYy9ocGVsZHNwLmMK QEAgLTM1Nyw4ICszNTcsNiBAQCBhdl9jb2xkIHZvaWQgZmZfaHBlbGRzcF9pbml0KEhwZWxEU1BD b250ZXh0ICpjLCBpbnQgZmxhZ3MpCiAKICNpZiBBUkNIX0FBUkNINjQKICAgICBmZl9ocGVsZHNw X2luaXRfYWFyY2g2NChjLCBmbGFncyk7Ci0jZWxpZiBBUkNIX0FMUEhBCi0gICAgZmZfaHBlbGRz cF9pbml0X2FscGhhKGMsIGZsYWdzKTsKICNlbGlmIEFSQ0hfQVJNCiAgICAgZmZfaHBlbGRzcF9p bml0X2FybShjLCBmbGFncyk7CiAjZWxpZiBBUkNIX1BQQwpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9pZGN0ZHNwLmMgYi9saWJhdmNvZGVjL2lkY3Rkc3AuYwppbmRleCBkZTg3OWY3MzAyLi40MjU5 YTExN2RjIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2lkY3Rkc3AuYworKysgYi9saWJhdmNvZGVj L2lkY3Rkc3AuYwpAQCAtMjk0LDggKzI5NCw2IEBAIGF2X2NvbGQgdm9pZCBmZl9pZGN0ZHNwX2lu aXQoSURDVERTUENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIAogI2lmIEFSQ0hf QUFSQ0g2NAogICAgIGZmX2lkY3Rkc3BfaW5pdF9hYXJjaDY0KGMsIGF2Y3R4LCBoaWdoX2JpdF9k ZXB0aCk7Ci0jZWxpZiBBUkNIX0FMUEhBCi0gICAgZmZfaWRjdGRzcF9pbml0X2FscGhhKGMsIGF2 Y3R4LCBoaWdoX2JpdF9kZXB0aCk7CiAjZWxpZiBBUkNIX0FSTQogICAgIGZmX2lkY3Rkc3BfaW5p dF9hcm0oYywgYXZjdHgsIGhpZ2hfYml0X2RlcHRoKTsKICNlbGlmIEFSQ0hfUFBDCmRpZmYgLS1n aXQgYS9saWJhdmNvZGVjL21lX2NtcC5jIGIvbGliYXZjb2RlYy9tZV9jbXAuYwppbmRleCBkYjNm YjEyNjBjLi41ZDFjZTM1ODJkIDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL21lX2NtcC5jCisrKyBi L2xpYmF2Y29kZWMvbWVfY21wLmMKQEAgLTEwNTgsOCArMTA1OCw2IEBAIGF2X2NvbGQgdm9pZCBm Zl9tZV9jbXBfaW5pdChNRUNtcENvbnRleHQgKmMsIEFWQ29kZWNDb250ZXh0ICphdmN0eCkKIAog I2lmIEFSQ0hfQUFSQ0g2NAogICAgIGZmX21lX2NtcF9pbml0X2FhcmNoNjQoYywgYXZjdHgpOwot I2VsaWYgQVJDSF9BTFBIQQotICAgIGZmX21lX2NtcF9pbml0X2FscGhhKGMsIGF2Y3R4KTsKICNl bGlmIEFSQ0hfQVJNCiAgICAgZmZfbWVfY21wX2luaXRfYXJtKGMsIGF2Y3R4KTsKICNlbGlmIEFS Q0hfUFBDCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL21wZWd2aWRlby5jIGIvbGliYXZjb2RlYy9t cGVndmlkZW8uYwppbmRleCA3YWY4MjNiOGJkLi4yZTAwZjE4MDE1IDEwMDY0NAotLS0gYS9saWJh dmNvZGVjL21wZWd2aWRlby5jCisrKyBiL2xpYmF2Y29kZWMvbXBlZ3ZpZGVvLmMKQEAgLTMwNCw5 ICszMDQsNyBAQCBzdGF0aWMgYXZfY29sZCBpbnQgZGN0X2luaXQoTXBlZ0VuY0NvbnRleHQgKnMp CiAgICAgZmZfbXB2X2NvbW1vbl9pbml0X25lb24ocyk7CiAjZW5kaWYKIAotI2lmIEFSQ0hfQUxQ SEEKLSAgICBmZl9tcHZfY29tbW9uX2luaXRfYXhwKHMpOwotI2VsaWYgQVJDSF9BUk0KKyNpZiBB UkNIX0FSTQogICAgIGZmX21wdl9jb21tb25faW5pdF9hcm0ocyk7CiAjZWxpZiBBUkNIX1BQQwog ICAgIGZmX21wdl9jb21tb25faW5pdF9wcGMocyk7CmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL3Bp eGJsb2NrZHNwLmMgYi9saWJhdmNvZGVjL3BpeGJsb2NrZHNwLmMKaW5kZXggODcwM2U1YWVhZi4u YmJiZWNhMTYxOCAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy9waXhibG9ja2RzcC5jCisrKyBiL2xp YmF2Y29kZWMvcGl4YmxvY2tkc3AuYwpAQCAtMTAzLDggKzEwMyw2IEBAIGF2X2NvbGQgdm9pZCBm Zl9waXhibG9ja2RzcF9pbml0KFBpeGJsb2NrRFNQQ29udGV4dCAqYywgQVZDb2RlY0NvbnRleHQg KmF2Y3R4KQogCiAjaWYgQVJDSF9BQVJDSDY0CiAgICAgZmZfcGl4YmxvY2tkc3BfaW5pdF9hYXJj aDY0KGMsIGF2Y3R4LCBoaWdoX2JpdF9kZXB0aCk7Ci0jZWxpZiBBUkNIX0FMUEhBCi0gICAgZmZf cGl4YmxvY2tkc3BfaW5pdF9hbHBoYShjLCBhdmN0eCwgaGlnaF9iaXRfZGVwdGgpOwogI2VsaWYg QVJDSF9BUk0KICAgICBmZl9waXhibG9ja2RzcF9pbml0X2FybShjLCBhdmN0eCwgaGlnaF9iaXRf ZGVwdGgpOwogI2VsaWYgQVJDSF9QUEMKLS0gCjIuMzkuMgoK --000000000000833a8b061a7a9a12 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --000000000000833a8b061a7a9a12--