From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2C38C4AB1D1 for ; Thu, 15 Oct 2026 08:52:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792054329; cv=none; b=WXyE4CYtv0oZiUZZ5I7d8VWgXaFL06+n/mnbzxSW4crXQpc0wVVfGjW4LphfMZTX6Fiakw+tG0R/zcT7+4ALqhGu1iWVNolgxUOjtwoqySnE20zqqMjoaOJXluJ3G9UdVU4qvkV6gVLPeDpJbRVRea3JIXwxtuYRYautORAJcJE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1792054329; c=relaxed/simple; bh=fDrhcOFh9XX5adO3JGiGTmVXFHvXHF8xQKySXXeaWZU=; h=Message-ID:Content-Type:MIME-Version:From:To:Cc:Date:Subject; b=AOOd9jcL1l7k+0Vypu9Ws2xrhxRZc6xpoj/tu9LtFtZ5N3Vy32NWUaboqHyB0TtIHoB2MgtINuB7cNgKRVqxnjmUdtbGHjoyDF2aglkzfeeV34hXFE1jLOP7qlWfIzlrq4nsBbwOJ5Sl2uAUolwvwjPJndWpDqe5QMrBgzQfX3M= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lE3vs4ei; arc=none smtp.client-ip=209.85.216.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lE3vs4ei" Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-3ac77270fbfso917180a91.2 for ; Thu, 15 Oct 2026 01:52:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792054324; x=1792659124; darn=vger.kernel.org; h=subject:date:cc:to:from:content-transfer-encoding:mime-version :content-type:message-id:from:to:cc:subject:date:message-id:reply-to :content-type; bh=fDrhcOFh9XX5adO3JGiGTmVXFHvXHF8xQKySXXeaWZU=; b=lE3vs4ei3DEbnnz7AjvpJYyY5jdz3sOv4+L6Xz72tqPnCg3mJfsINjLDRZQcbyWR/N +F844E+1zTyD/PnTmJQUfKuUxAve5AbGv5e/SSvThEyufDtEF7D/MHFoQe2yLiAa11rW /0Z00uaMQzuy17ozWhN/l1RZJCc58PO4nzhvYqB593IED1NJUSUHdw8CAifyHq6V+7WN 8DJUvglbltNb8tYzL8bjiIv2Lm4Fpuo1IJsWP/ubJnyM9KZLuTfU1qntrLnGbIw1aDeD Y6AlVMjLXqYnG3/hT+JrdcdP0qFJDVdCCjEAZAlGTNOGIBoqsCB6SepOcP9QQNoSF4A3 vm9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792054324; x=1792659124; h=subject:date:cc:to:from:content-transfer-encoding:mime-version :content-type:message-id:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to:content-type; bh=fDrhcOFh9XX5adO3JGiGTmVXFHvXHF8xQKySXXeaWZU=; b=SBt3U0sVYLKRenKNkd8CA/aq1XL459RwT71hNHqUpo9yoymcMKXdfvQFCsb6uyh1sS Q3hKTLrjfCOswA699Ye0/VetBhQXNS5rl254x6vz2o7CFnjkVLu452dk+wB972fvE7zK NxjLsbPNO/k7oLuWmMo6OGRjKrLHVGeDfeLWA6iK8vu/YgYzwweoQN2AyNeB1ytUXGzl cMEl2c2YuWQQAm0OzALfeeSOOHY4dec1zfUzCs2kv26CktiJuUzeH8LSYENx/cF/vuGp hFYykiSQil6OTY9mE1C61Mcs7SGiHedMqTs45QqROYLs31eKqzrDOozrXr4geb7NPD4H SKaA== X-Forwarded-Encrypted: i=1; AKwUvBwwI2IoX5ut/+gWhdFWNPlL7ash+nZVNeZ614NFWtljglnzjgv89yPflDGHgLxSitazBQP1Gw6hBCdei1Xrjma0M4M=@vger.kernel.org X-Gm-Message-State: AFq9FYLyhJXRned27l7FVemzSo1UneF21YBWlsm1O9Y8yQ/oWnRaC0Dv PgozQsZrFWS6qu+ddTw58CTJYW+s1PXk+LRiTpicRBnQJfj2zEACnshc X-Gm-Gg: AYBFou0WH6vwamsLE55JxXg/hfi2bJ/Xze91fGOcibhDkwsDATVdjE8rnkx042VfP/F xNnipSW56tK9NLchIAxPWTRoXv38xn1DSXxkBiJy6RzUzr4SSNmGwtxVMi/XJ9qIgeCRl+tPYda pbMhZ48U85dl12/6kEKECVj69VVNM6bnX4fFrQduhpD9z898d9nZoQSxO/ZkDYSyafiZqpfjlLH rNCjUnDtfb0ASC+p6ynN57hf5uMGuMrb66gor5zsnp0/tk1FlFCb50hk5/rmY0vbWr8KWwZWpel dGw2Ft2DjG7j9cuBwxdEJ0RPtDDHwQ8UcboRb8GAuDtJTCpsKT5bHANIQ55gLtMs3MgbkoL98IR r0iyzM6e86dKN13yycXdUsaY1Uw4oP3XQyA5gg3sb+Xk9WHeacHok+gzYpUHkWUD9cjZWNrasGr +VC1YNnp4MaRKZQ8MZfGdgW48OKURl4csnVFeZbhs/Ip5R1mEjNY0236KKNoGB/GOSmQ/2oTYOS M6BgQ== X-Received: by 2002:a17:90b:55c7:b0:3ac:4e18:238c with SMTP id 98e67ed59e1d1-3ac4e182e90mr5720458a91.49.1792054324035; Thu, 15 Oct 2026 01:52:04 -0700 (PDT) Received: from [58.206.202.11] ([104.28.215.68]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3ac943e821csm3312675a91.8.2026.10.15.01.52.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Oct 2026 01:52:03 -0700 (PDT) Message-ID: <6ad09433.a938ce27.3282d8.5f98@mx.google.com> Content-Type: text/plain; charset="utf-8" Precedence: bulk X-Mailing-List: linux-trace-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Haoran Wang To: rostedt@goodmis.org, mhiramat@kernel.org Cc: linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, mathieu.desnoyers@efficios.com, haoranwangsec@gmail.com Date: Thu, 15 Oct 2026 16:51:58 +0800 Subject: [PATCH] tracing: guard trace_event_get_offsets() against an empty fields list RnJvbSA3MTVmNGQ3YThiYmM3YzhkNDgwY2MyZDI3MzEwMjVmNzYwNDc2NjA4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIYW9yYW4gV2FuZyA8aGFvcmFud2FuZ3NlY0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMTUgT2N0IDIwMjYgMTU6NTk6MjggKzA4MDAKU3ViamVjdDogW1BBVENIXSB0 cmFjaW5nOiBndWFyZCB0cmFjZV9ldmVudF9nZXRfb2Zmc2V0cygpIGFnYWluc3QgYW4gZW1wdHkK IGZpZWxkcyBsaXN0Cgp0cmFjZV9ldmVudF9nZXRfb2Zmc2V0cygpIHVuY29uZGl0aW9uYWxseSBk ZXJlZmVyZW5jZXMgdGhlIGZpcnN0IGVudHJ5Cm9mIHRoZSBldmVudCBjbGFzcyBmaWVsZHMgbGlz dCB2aWEgbGlzdF9maXJzdF9lbnRyeSgpLiAgV2hlbiBhCnRyYWNlcG9pbnQgZGVjbGFyZXMgbm8g ZXZlbnQtc3BlY2lmaWMgZmllbGRzLCB0aGUgbGlzdCBzdGF5cyBpbiBpdHMKc3RhdGljLCBzZWxm LXBvaW50aW5nIGVtcHR5IGluaXRpYWxpemF0aW9uLCBzbyBsaXN0X2ZpcnN0X2VudHJ5KCkKcmV0 dXJucyB0aGUgbGlzdCBoZWFkIGl0c2VsZi4gIFRoZSBmb2xsb3dpbmcgdGFpbC0+b2Zmc2V0ICsg dGFpbC0+c2l6ZQp0aGVuIHJlYWRzIHBhc3Qgc3RydWN0IHRyYWNlX2V2ZW50X2NsYXNzLCBhbmQg dGhlIGNvcnJ1cHRlZCByZXN1bHQgaXMKdXNlZCBhcyB0aGUgQlBGIGNvbnRleHQtc2l6ZSBib3Vu ZCBpbiBfX3BlcmZfZXZlbnRfc2V0X2JwZl9wcm9nKCksCndoaWNoIGxldHMgY29udGV4dC1yZWFk aW5nIEJQRiBwcm9iZXMgYnlwYXNzIHRoZSBib3VuZCBhbmQgYmUgYWNjZXB0ZWQuCgpHdWFyZCB0 aGUgbGlzdCB3aXRoIGxpc3RfZW1wdHkoKSBhbmQgcmV0dXJuIDAgKG5vIGFjY2Vzc2libGUgZXZl bnQKb2Zmc2V0KSB3aGVuIGVtcHR5LiAgVGhpcyBwcmV2ZW50cyB0aGUgb3V0LW9mLWJvdW5kcyBy ZWFkIGFuZCByZXN0b3JlcwphIGJvdW5kIHRoYXQgcmVqZWN0cyBjb250ZXh0LXJlYWRpbmcgcHJv YmVzIHdpdGggLUVBQ0NFUy4KClJlcG9ydGVkLWJ5OiBIYW9yYW4gV2FuZyA8aGFvcmFud2FuZ3Nl Y0BnbWFpbC5jb20+ClNpZ25lZC1vZmYtYnk6IEhhb3JhbiBXYW5nIDxoYW9yYW53YW5nc2VjQGdt YWlsLmNvbT4KLS0tCgpGdWxsIGFuYWx5c2lzIGFuZCByZXByb2R1Y2VyIGZvbGxvdyBmb3IgcmVm ZXJlbmNlIChub3QgcGFydCBvZiB0aGUgY29tbWl0IGxvZyk6CgpJJ2QgbGlrZSB0byByZXBvcnQg YW4gaXNzdWUgaW4ga2VybmVsL3RyYWNlL3RyYWNlX2V2ZW50cy5jOjI0NiAoZnVuY3Rpb24KdHJh Y2VfZXZlbnRfZ2V0X29mZnNldHMpLCBmb3VuZCB2aWEgc3RhdGljIGFuYWx5c2lzIG9mIExpbnV4 IDcuMC4xMSBhbmQKdmVyaWZpZWQgYWdhaW5zdCB0aGUgNy4yLjEwIHNvdXJjZSB0cmVlLgoKMS4g U3VtbWFyeQoKdHJhY2VfZXZlbnRfZ2V0X29mZnNldHMoKSBjYWxscyBsaXN0X2ZpcnN0X2VudHJ5 KCkgb24gYW4gZXZlbnQncwpjbGFzcy0+ZmllbGRzIGxpc3Qgd2l0aCBubyBsaXN0X2VtcHR5KCkg Z3VhcmQuIEZvciBhIHRyYWNlcG9pbnQgd2l0aCB6ZXJvCmV2ZW50LXNwZWNpZmljIGZpZWxkcywg Y2xhc3MtPmZpZWxkcyBpcyBlbXB0eSwgc28gbGlzdF9maXJzdF9lbnRyeSgpCmRlcmVmZXJlbmNl cyB0aGUgbGlzdCBoZWFkIGl0c2VsZiBhbmQgcmVhZHMgYWRqYWNlbnQgbWVtb3J5IGFzCnRhaWwt Pm9mZnNldC90YWlsLT5zaXplLiBUaGUgY29ycnVwdGVkIHJldHVybiB2YWx1ZSBpcyB0aGVuIHVz ZWQgYXMgdGhlCkJQRiBjb250ZXh0LXNpemUgdXBwZXIgYm91bmQgaW4gX19wZXJmX2V2ZW50X3Nl dF9icGZfcHJvZygpCihrZXJuZWwvZXZlbnRzL2NvcmUuYzoxMTY1OCksIGFsbG93aW5nIGNvbnRl eHQtcmVhZGluZyBCUEYgcHJvZ3JhbXMgdG8gYmUKYXR0YWNoZWQgdG8gYSB6ZXJvLWZpZWxkIHRy YWNlcG9pbnQgd2hlbiB0aGV5IHNob3VsZCBiZSByZWplY3RlZCB3aXRoCi1FQUNDRVMuIEkgcmVw cm9kdWNlZCB0aGlzIG9uIDcuMi4xMCBrZXJuZWw6IHRocmVlIGNvbnRleHQtcmVhZGluZyBCUEYg CnByb2JlcyB3ZXJlIGFsbCBhY2NlcHRlZCAocmM9MCkgd2hlcmUgYSBmaXhlZCBrZXJuZWwgcmV0 dXJucyBFQUNDRVMuCgoyLiBWdWxuZXJhYmxlIGNvZGUKLSBGaWxlOiBrZXJuZWwvdHJhY2UvdHJh Y2VfZXZlbnRzLmM6MjQ2Ci0gRnVuY3Rpb246IHRyYWNlX2V2ZW50X2dldF9vZmZzZXRzCi0gTWlz dXNlZCBBUEk6IGxpc3RfZmlyc3RfZW50cnkKCmBgYGMKLy8ga2VybmVsL3RyYWNlL3RyYWNlX2V2 ZW50cy5jOjIzNi0yNDgKaW50IHRyYWNlX2V2ZW50X2dldF9vZmZzZXRzKHN0cnVjdCB0cmFjZV9l dmVudF9jYWxsICpjYWxsKQp7CiAgICAgICAgc3RydWN0IGZ0cmFjZV9ldmVudF9maWVsZCAqdGFp bDsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkOwoKICAgICAgICBoZWFkID0gdHJhY2Vf Z2V0X2ZpZWxkcyhjYWxsKTsgICAgICAgICAgLy8gPSAmY2FsbC0+Y2xhc3MtPmZpZWxkcwogICAg ICAgIC8qCiAgICAgICAgICogaGVhZC0+bmV4dCBwb2ludHMgdG8gdGhlIGxhc3QgZmllbGQgd2l0 aCB0aGUgbGFyZ2VzdCBvZmZzZXQsCiAgICAgICAgICogc2luY2UgaXQgd2FzIGFkZGVkIGxhc3Qg YnkgdHJhY2VfZGVmaW5lX2ZpZWxkKCkKICAgICAgICAgKi8KICAgICAgICB0YWlsID0gbGlzdF9m aXJzdF9lbnRyeShoZWFkLCBzdHJ1Y3QgZnRyYWNlX2V2ZW50X2ZpZWxkLCBsaW5rKTsgICAvLyA6 MjQ2ICBubyBlbXB0eSBjaGVjawogICAgICAgIHJldHVybiB0YWlsLT5vZmZzZXQgKyB0YWlsLT5z aXplOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA6MjQ3ICBkZXJlZiAod2ls ZCBpZiBlbXB0eSkKfQpgYGAKClRoZSBvbmx5IHJ1bnRpbWUgY2FsbGVyIGlzIF9fcGVyZl9ldmVu dF9zZXRfYnBmX3Byb2coKQooa2VybmVsL2V2ZW50cy9jb3JlLmM6MTE2NTUtMTE2NjApOgoKYGBg YwogICAgICAgIGlmIChpc190cmFjZXBvaW50IHx8IGlzX3N5c2NhbGxfdHApIHsKICAgICAgICAg ICAgICAgIGludCBvZmYgPSB0cmFjZV9ldmVudF9nZXRfb2Zmc2V0cyhldmVudC0+dHBfZXZlbnQp OyAgIC8vIDoxMTY1NgogICAgICAgICAgICAgICAgaWYgKHByb2ctPmF1eC0+bWF4X2N0eF9vZmZz ZXQgPiBvZmYpICAgICAgICAgICAgICAgICAgLy8gOjExNjU4ICBib3VuZCBjaGVjawogICAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gLUVBQ0NFUzsKICAgICAgICB9CmBgYAoKMy4gUm9vdCBj YXVzZQoKY2xhc3MtPmZpZWxkcyBpcyBwb3B1bGF0ZWQgYnkgZXZlbnRfZGVmaW5lX2ZpZWxkcygp IGF0IGV2ZW50IHJlZ2lzdHJhdGlvbiwKd2hpY2ggaXRlcmF0ZXMgdGhlIGV2ZW50J3MgZmllbGRz X2FycmF5IChkZXJpdmVkIGZyb20gVFBfU1RSVUNUX19lbnRyeSkuIEEKdHJhY2Vwb2ludCB3aXRo IGFuIGVtcHR5IFRQX1NUUlVDVF9fZW50cnkgaGFzIGEgZmllbGRzX2FycmF5IGNvbnRhaW5pbmcK b25seSB0aGUgdGVybWluYXRpbmcgc2VudGluZWwgKGZpZWxkLT50eXBlID09IE5VTEwpLCBzbwpl dmVudF9kZWZpbmVfZmllbGRzKCkgbmV2ZXIgY2FsbHMgdHJhY2VfZGVmaW5lX2ZpZWxkKCkgYW5k IGNsYXNzLT5maWVsZHMKc3RheXMgYXQgaXRzIElOSVRfTElTVF9IRUFEIGVtcHR5IHN0YXRlLgoK bGlzdF9maXJzdF9lbnRyeSgpIGV4cGFuZHMgdG8gY29udGFpbmVyX29mKGhlYWQtPm5leHQsIC4u LikuIE9uIGFuIGVtcHR5Cmxpc3QgaGVhZC0+bmV4dCA9PSBoZWFkLCBzbyBgdGFpbGAgYWxpYXNl cyB0aGUgbGlzdCBoZWFkIGl0c2VsZi4gQmVjYXVzZQpmdHJhY2VfZXZlbnRfZmllbGQubGluayBp cyB0aGUgZmlyc3QgbWVtYmVyIChvZmZzZXQgMCksIGNvbnRhaW5lcl9vZgpwZXJmb3JtcyBubyBv ZmZzZXQgYWRqdXN0bWVudDogdGFpbCA9PSAmY2xhc3MtPmZpZWxkcy4gVGh1cyB0YWlsLT5vZmZz ZXQKcmVhZHMgKihpbnQqKShjbGFzcys4NCkgYW5kIHRhaWwtPnNpemUgcmVhZHMgKihpbnQqKShj bGFzcys4OCkgLS0gYm90aApwYXN0IHRoZSBlbmQgb2YgdGhlIDcyLWJ5dGUgc3RydWN0IHRyYWNl X2V2ZW50X2NsYXNzLCBpbnRvIGFkamFjZW50IG1hcHBlZAprZXJuZWwgbWVtb3J5LiBUaGUgcmV0 dXJuZWQgYG9mZmAgaXMgdGhlcmVmb3JlIGNvcnJ1cHRlZCAoYSBrZXJuZWwtcG9pbnRlcgpmcmFn bWVudCwgbGFyZ2UgYW5kL29yIG5lZ2F0aXZlIGFzIGludCkuCgpUaGF0IGNvcnJ1cHRlZCBgb2Zm YCBpcyB0aGUgc29sZSBib3VuZCBmb3IgdGhlIEJQRiBjb250ZXh0LXNpemUgY2hlY2sgYXQKY29y ZS5jOjExNjU4OiBgaWYgKHByb2ctPmF1eC0+bWF4X2N0eF9vZmZzZXQgPiBvZmYpIHJldHVybiAt RUFDQ0VTYC4gV2l0aApvZmYgY29ycnVwdGVkIHRvIGEgaHVnZS9uZWdhdGl2ZSB2YWx1ZSwgdGhl IGNvbXBhcmlzb24gaXMgYWx3YXlzIGZhbHNlLCBzbwphIGNvbnRleHQtcmVhZGluZyBCUEYgcHJv Z3JhbSBpcyB3cm9uZ2x5IGFjY2VwdGVkIGluc3RlYWQgb2YgcmVqZWN0ZWQuIE9uCmEgZml4ZWQg a2VybmVsIChvZmY9PTAsIGUuZy4gZnJvbSBhIGxpc3RfZW1wdHkoKS0+cmV0dXJuIDAgcGF0aCks IGFueQpjb250ZXh0LXJlYWRpbmcgcHJvZ3JhbSAobWF4X2N0eF9vZmZzZXQgPj0gMSkgaXMgY29y cmVjdGx5IHJlamVjdGVkIHdpdGgKRUFDQ0VTLgoKVGhlIHNhbWUgZmlsZSByZWFkcyB0aGUgc2Ft ZSBmaWVsZHMgbGlzdCBzYWZlbHkgYXQgOjIyNiB3aXRoCmxpc3RfZm9yX2VhY2hfZW50cnkgKGVt cHR5LXNhZmUpOyB0aGUgOjI0NiB1c2Ugb2YgbGlzdF9maXJzdF9lbnRyeQooZW1wdHktdW5zYWZl KSBpcyBhbiBpbmNvbnNpc3RlbnQgb3ZlcnNpZ2h0LiBFdmVuIGEgTlVMTCBjaGVjayB3b3VsZCBu b3QKaGVscCwgYmVjYXVzZSBvbiBhbiBlbXB0eSBsaXN0IGxpc3RfZmlyc3RfZW50cnkoKSByZXR1 cm5zIGEgbm9uLU5VTEwgd2lsZApwb2ludGVyLgoKTm8gaW4tdHJlZSB0cmFjZXBvaW50IGN1cnJl bnRseSBoYXMgemVybyBldmVudC1zcGVjaWZpYyBmaWVsZHMgKEkgc2Nhbm5lZAphbGwgMTY2OSB0 cmFjZXBvaW50cycgZm9ybWF0IGZpbGVzIG9uIGEgYmFzZWxpbmUga2VybmVsOyBhbGwgaGF2ZSA+ PTEKZXZlbnQtc3BlY2lmaWMgZmllbGQpLCBzbyB0aGlzIGlzIGxhdGVudCBmb3IgaW4tdHJlZSBl dmVudHMuIEhvd2V2ZXIsIHRoZQpUUkFDRV9FVkVOVCBtYWNybyBwZXJtaXRzIGEgY3VzdG9tIHpl cm8tZmllbGQgdHJhY2Vwb2ludCAoZS5nLiBhbgpvdXQtb2YtdHJlZSBtb2R1bGUsIHRoZSBzYW1l IHdheSBzeXprYWxsZXIgcmVnaXN0ZXJzIGN1c3RvbSBldmVudHMpLCB3aGljaApjcmVhdGVzIHRo ZSBwcmVjb25kaXRpb24uIFRoZSBkZWZlY3QgaXRzZWxmIGxpdmVzIGluIHRoZSB1bm1vZGlmaWVk CmluLXRyZWUgdHJhY2VfZXZlbnRfZ2V0X29mZnNldHMuCgo0LiBBZmZlY3RlZCB2ZXJzaW9ucwpQ cmVzZW50IGluOiBMaW51eCA3LjAuMTEuIDcuMi4xMDogc3RpbGwgcHJlc2VudCwgdW5maXhlZC4g VGhlIHZ1bG5lcmFibGUKbGlzdF9maXJzdF9lbnRyeSBhdCB0cmFjZV9ldmVudHMuYzoyNDYgYW5k IHRoZSBib3VuZCBjaGVjayBhdCBjb3JlLmM6MTE2NTgKYXJlIHVuY2hhbmdlZC4gUmVwcm9kdWNl ZCBvbiA3LjIuMTAga2VybmVsLgoKNS4gVHJpZ2dlciAvIFByZWNvbmRpdGlvbnMKClB1cmUgdXNl cnNwYWNlLCBubyBoYXJkd2FyZSBkZXBlbmRlbmN5LiBSZXF1aXJlcyBDT05GSUdfQlBGX1NZU0NB TEwsCkNPTkZJR19UUkFDSU5HLCBDT05GSUdfUEVSRl9FVkVOVFMgKGJhc2VsaW5lIGJ1aWx0LWlu KS4gVHJpZ2dlcjoKcGVyZl9ldmVudF9vcGVuKFBFUkZfVFlQRV9UUkFDRVBPSU5ULCA8emVyby1m aWVsZC10cmFjZXBvaW50LWlkPiwKZGlzYWJsZWQ9MSksIHRoZW4gQlBGX1BST0dfTE9BRCBhIHRy YWNlcG9pbnQgcHJvZ3JhbSB0aGF0IHJlYWRzIGN0eCwgdGhlbgppb2N0bChwZXJmX2ZkLCBQRVJG X0VWRU5UX0lPQ19TRVRfQlBGLCBicGZfZmQpLiBUaGUgemVyby1maWVsZCB0cmFjZXBvaW50Cmlz IGNyZWF0ZWQgYnkgYSBsZWdpdGltYXRlIGxvYWRhYmxlIGN1c3RvbS10cmFjZXBvaW50IG1vZHVs ZSAoYW4gZW1wdHkKVFBfU1RSVUNUX19lbnRyeSkuCgo2LiBQcm9vZiBvZiBDb25jZXB0CgpUaGUg cmVwcm9kdWN0aW9uIHJ1bnMgb24gNy4yLjEwIGtlcm5lbC4gQSBjdXN0b20tdHJhY2Vwb2ludCBt b2R1bGUKKHplcm9maWVsZF9tb2QpIHJlZ2lzdGVycyBhIHplcm8tZmllbGQgdHJhY2Vwb2ludCAo ZW1wdHkgVFBfU1RSVUNUX19lbnRyeSkKYW5kIHBsYWNlcyBhbiBpbmVydCA2NC1ieXRlIDB4NTMg c2VudGluZWwgaW4gLnJlZi5kYXRhIHJpZ2h0IGFmdGVyIHRoZQo3Mi1ieXRlIGV2ZW50X2NsYXNz IGdsb2JhbCAoR0NDIGxheXMgb3V0IHNhbWUtc2VjdGlvbiBzdGF0aWNzIGJ5CmRlc2NlbmRpbmcg c2l6ZSksIHNvIHRoZSBrZXJuZWwncyBPT0IgcmVhZCBvZiBjbGFzcys4NC9jbGFzcys4OCBwaWNr cyB1cAoweDUzNTM1MzUzIGluc3RlYWQgb2YgemVybyBzZWN0aW9uIHBhZGRpbmcuIFRoZSBzZW50 aW5lbCBpcyBpbmVydCBkYXRhIC0tCml0IGRvZXMgbm90IGNoYW5nZSBrZXJuZWwgY29udHJvbCBm bG93IG9yIGluamVjdCBhIGJ1ZzsgaXQgb25seSBtYWtlcyB0aGUKcHJlLWV4aXN0aW5nIE9PQiBy ZWFkJ3MgZWZmZWN0IG9ic2VydmFibGUgKG9mZiBiZWNvbWVzIG5vbi16ZXJvIGluc3RlYWQgb2YK c2lsZW50bHkgemVybywgdGhlIGxhdHRlciBiZWluZyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIGEg Zml4ZWQga2VybmVsCnJldHVybmluZyAwKS4KCk1haW4gdXNlcnNwYWNlIHJlcHJvZHVjZXIgKHRy YWNlX2V2ZW50c19wb2MuYykuIEJ1aWxkOiBnY2MgLXN0YXRpYyAtTzIgLW8KdHJhY2VfZXZlbnRz X3BvYyB0cmFjZV9ldmVudHNfcG9jLmMgOyB1c2FnZTogLi90cmFjZV9ldmVudHNfcG9jCjx0cmFj ZXBvaW50X2lkPiB3aGVyZSB0cmFjZXBvaW50X2lkIGlzIHJlYWQgZnJvbQovc3lzL2tlcm5lbC90 cmFjaW5nL2V2ZW50cy96ZXJvZmllbGQvemVyb2ZpZWxkX2V2ZW50L2lkOgoKYGBgYwojZGVmaW5l IF9HTlVfU09VUkNFCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNs dWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGVycm5vLmg+CiNpbmNsdWRlIDx1bmlzdGQuaD4KI2lu Y2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KI2luY2x1ZGUgPHN5cy9zeXNj YWxsLmg+CiNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+CiNpbmNsdWRlIDxsaW51eC9icGYu aD4KCnN0YXRpYyBsb25nIGJwZl9zeXMoaW50IGNtZCwgdW5pb24gYnBmX2F0dHIgKmF0dHIsIHVu c2lnbmVkIGludCBzaXplKQp7CglyZXR1cm4gc3lzY2FsbChfX05SX2JwZiwgY21kLCBhdHRyLCBz aXplKTsKfQoKLyoKICogQnVpbGQgYSBCUEZfUFJPR19UWVBFX1RSQUNFUE9JTlQgcHJvZ3JhbSB0 aGF0IHJlYWRzICoodTY0ICopKGN0eCArIG9mZikgYW5kCiAqIHJldHVybnMgMC4gVGhlIGN0eCBy ZWFkIGZvcmNlcyB0aGUgdmVyaWZpZXIgdG8gcmVjb3JkCiAqIHByb2ctPmF1eC0+bWF4X2N0eF9v ZmZzZXQgPSBvZmYgKyA4ICh2ZXJpZmllci5jOjY0MjUpLCB3aGljaCBpcyB0aGUgdmFsdWUgdGhl CiAqIFNFVF9CUEYgYm91bmQgY2hlY2sgY29tcGFyZXMgYWdhaW5zdCB0aGUgY29ycnVwdGVkIGBv ZmZgLgogKi8Kc3RhdGljIGludCBsb2FkX2N0eF9yZWFkZXJfcHJvZyhpbnQgY3R4X29mZikKewoJ c3RydWN0IGJwZl9pbnNuIGluc25zW10gPSB7CgkJLyogcjAgPSAqKHU2NCAqKShyMSArIGN0eF9v ZmYpICAgLS0gcjEgaXMgY3R4IGZvciB0cmFjZXBvaW50IHByb2dzICovCgkJeyAuY29kZSA9IEJQ Rl9MRFggfCBCUEZfTUVNIHwgQlBGX0RXLAoJCSAgLmRzdF9yZWcgPSBCUEZfUkVHXzAsIC5zcmNf cmVnID0gQlBGX1JFR18xLCAub2ZmID0gKHNob3J0KWN0eF9vZmYsIC5pbW0gPSAwIH0sCgkJLyog cjAgPSAwICovCgkJeyAuY29kZSA9IEJQRl9BTFU2NCB8IEJQRl9NT1YgfCBCUEZfSywgLmRzdF9y ZWcgPSBCUEZfUkVHXzAsIC5pbW0gPSAwIH0sCgkJLyogZXhpdCAqLwoJCXsgLmNvZGUgPSBCUEZf Sk1QIHwgQlBGX0VYSVQgfSwKCX07CgljaGFyIGxvZ1s4MTkyXTsKCXVuaW9uIGJwZl9hdHRyIGF0 dHI7CgoJbWVtc2V0KCZhdHRyLCAwLCBzaXplb2YoYXR0cikpOwoJbWVtc2V0KGxvZywgMCwgc2l6 ZW9mKGxvZykpOwoJYXR0ci5wcm9nX3R5cGUgPSBCUEZfUFJPR19UWVBFX1RSQUNFUE9JTlQ7Cglh dHRyLmluc25zID0gKHVuc2lnbmVkIGxvbmcpaW5zbnM7CglhdHRyLmluc25fY250ID0gc2l6ZW9m KGluc25zKSAvIHNpemVvZihpbnNuc1swXSk7CglhdHRyLmxpY2Vuc2UgPSAodW5zaWduZWQgbG9u ZykiR1BMIjsKCWF0dHIubG9nX2J1ZiA9ICh1bnNpZ25lZCBsb25nKWxvZzsKCWF0dHIubG9nX3Np emUgPSBzaXplb2YobG9nKTsKCWF0dHIubG9nX2xldmVsID0gMTsKCglpbnQgZmQgPSAoaW50KWJw Zl9zeXMoQlBGX1BST0dfTE9BRCwgJmF0dHIsIHNpemVvZihhdHRyKSk7CglpZiAoZmQgPCAwKQoJ CWZwcmludGYoc3RkZXJyLCAiICBbbG9hZCBvZmY9JWRdIEJQRl9QUk9HX0xPQUQgZmFpbGVkOiAl c1xuIiwKCQkJY3R4X29mZiwgc3RyZXJyb3IoZXJybm8pKTsKCXJldHVybiBmZDsKfQoKc3RhdGlj IGludCBvcGVuX3RwX2V2ZW50KHVuc2lnbmVkIGxvbmcgdHBfaWQpCnsKCXN0cnVjdCBwZXJmX2V2 ZW50X2F0dHIgcGU7CgoJbWVtc2V0KCZwZSwgMCwgc2l6ZW9mKHBlKSk7CglwZS5zaXplID0gc2l6 ZW9mKHBlKTsKCXBlLnR5cGUgPSBQRVJGX1RZUEVfVFJBQ0VQT0lOVDsKCXBlLmNvbmZpZyA9IHRw X2lkOwoJcGUuc2FtcGxlX3R5cGUgPSBQRVJGX1NBTVBMRV9SQVc7CglwZS5zYW1wbGVfcGVyaW9k ID0gMTsKCXBlLmRpc2FibGVkID0gMTsKCglpbnQgZmQgPSAoaW50KXN5c2NhbGwoX19OUl9wZXJm X2V2ZW50X29wZW4sICZwZSwgLTEsIDAsIC0xLCBQRVJGX0ZMQUdfRkRfQ0xPRVhFQyk7CglpZiAo ZmQgPCAwKQoJCXBlcnJvcigicGVyZl9ldmVudF9vcGVuIik7CglyZXR1cm4gZmQ7Cn0KCi8qIFRy eSB0byBhdHRhY2ggYSBjdHgtcmVhZGluZyBCUEYgcHJvZyB0byB0aGUgdHJhY2Vwb2ludC4gUmV0 dXJuczoKICogICAxICA9IGF0dGFjaCBBQ0NFUFRFRCAgKG9mZiBjb3JydXB0ZWQgLT4gYm91bmQg YnlwYXNzZWQpCiAqICAgMCAgPSBhdHRhY2ggUkVKRUNURUQgd2l0aCBFQUNDRVMgKG9mZiA8IG1h eF9jdHhfb2Zmc2V0KQogKiAgLTEgID0gb3RoZXIgZXJyb3IgKHBlcmYvYnBmIG9wZW4gb3IgbG9h ZCBmYWlsdXJlLCBub24tRUFDQ0VTIGVycm5vKQogKi8Kc3RhdGljIGludCBwcm9iZV9vZmZzZXQo dW5zaWduZWQgbG9uZyB0cF9pZCwgaW50IGN0eF9vZmYpCnsKCWludCBwZXJmX2ZkID0gb3Blbl90 cF9ldmVudCh0cF9pZCk7CglpZiAocGVyZl9mZCA8IDApCgkJcmV0dXJuIC0xOwoKCWludCBicGZf ZmQgPSBsb2FkX2N0eF9yZWFkZXJfcHJvZyhjdHhfb2ZmKTsKCWlmIChicGZfZmQgPCAwKSB7CgkJ Y2xvc2UocGVyZl9mZCk7CgkJcmV0dXJuIC0xOwoJfQoKCWludCByYyA9IGlvY3RsKHBlcmZfZmQs IFBFUkZfRVZFTlRfSU9DX1NFVF9CUEYsIGJwZl9mZCk7CglpbnQgc2F2ZWRfZXJybm8gPSBlcnJu bzsKCWludCBtYXhfY3R4X29mZnNldCA9IGN0eF9vZmYgKyA4OwoKCXByaW50ZigiICBjdHhfb2Zm PSUtNGQgKG1heF9jdHhfb2Zmc2V0PSUtNWQpOiBTRVRfQlBGIHJjPSVkIiwKCSAgICAgICBjdHhf b2ZmLCBtYXhfY3R4X29mZnNldCwgcmMpOwoJaWYgKHJjID09IDApCgkJcHJpbnRmKCIgIC0+IEFD Q0VQVEVEXG4iKTsKCWVsc2UgaWYgKHNhdmVkX2Vycm5vID09IEVBQ0NFUykKCQlwcmludGYoIiAg LT4gUkVKRUNURUQgKEVBQ0NFUywgb2ZmIDwgJWQpXG4iLCBtYXhfY3R4X29mZnNldCk7CgllbHNl CgkJcHJpbnRmKCIgIC0+IFJFSkVDVEVEIChlcnJubz0lZCAlcylcbiIsIHNhdmVkX2Vycm5vLCBz dHJlcnJvcihzYXZlZF9lcnJubykpOwoKCWNsb3NlKGJwZl9mZCk7CgljbG9zZShwZXJmX2ZkKTsK CglpZiAocmMgPT0gMCkKCQlyZXR1cm4gMTsKCWlmIChzYXZlZF9lcnJubyA9PSBFQUNDRVMpCgkJ cmV0dXJuIDA7CglyZXR1cm4gLTE7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikK ewoJaWYgKGFyZ2MgPCAyKSB7CgkJZnByaW50ZihzdGRlcnIsICJ1c2FnZTogJXMgPHRyYWNlcG9p bnRfaWQ+XG4iLCBhcmd2WzBdKTsKCQlyZXR1cm4gMTsKCX0KCXVuc2lnbmVkIGxvbmcgdHBfaWQg PSBzdHJ0b3VsKGFyZ3ZbMV0sIE5VTEwsIDApOwoJcHJpbnRmKCJbcG9jXSB6ZXJvLWZpZWxkIHRy YWNlcG9pbnQgaWQ9JWx1XG4iLCB0cF9pZCk7CglwcmludGYoIltwb2NdIHByb2JpbmcgQlBGIGN0 eC1yZWFkZXIgYXR0YWNoIChwdXJlIGtlcm5lbCwgbm8gaW5zdHJ1bWVudGF0aW9uKVxuIik7Cglw cmludGYoIltwb2NdIG9uIGEgRklYRUQga2VybmVsLCBldmVyeSBwcm9iZSBiZWxvdyBNVVNUIGJl IFJFSkVDVEVEIChFQUNDRVMpXG4iKTsKCXByaW50ZigiW3BvY10gICBiZWNhdXNlIGEgemVyby1m aWVsZCBldmVudCBzaG91bGQgeWllbGQgb2ZmPT0wLlxuIik7CglwcmludGYoIltwb2NdIG9uIHRo ZSBCVUdHWSBrZXJuZWwsIGEgY29ycnVwdGVkIChsYXJnZS9uZWdhdGl2ZSkgb2ZmIEFDQ0VQVFNc biIpOwoJcHJpbnRmKCJbcG9jXSAgIGNvbnRleHQgcmVhZHMgdGhhdCBvdWdodCB0byBiZSByZWpl Y3RlZCAtPiBib3VuZCBieXBhc3MuXG5cbiIpOwoKCS8qCgkgKiBTd2VlcCBzZXZlcmFsIGN0eCBv ZmZzZXRzLiBUaGUgc21hbGxlc3QgKDggLT4gbWF4X2N0eF9vZmZzZXQ9MTYpIGlzIHRoZQoJICog bW9zdCBzZW5zaXRpdmU6IGl0IGRpc2NyaW1pbmF0ZXMgYXMgbG9uZyBhcyB0aGUgY29ycnVwdGVk IG9mZiBpcyBub3QgaW4KCSAqIFswLDE1XS4gQSBsYXJnZSBvZmZzZXQgKDQwODgpIGJlaW5nIGFj Y2VwdGVkIGlzIGVzcGVjaWFsbHkgdml2aWQgcHJvb2YuCgkgKiBBbnkgc2luZ2xlIEFDQ0VQVCBh bW9uZyB0aGVzZSBwcm92ZXMgdGhlIGJ1Zy4KCSAqLwoJc3RhdGljIGNvbnN0IGludCBvZmZzZXRz W10gPSB7IDgsIDI0OCwgNDA4OCB9OwoJaW50IGFueV9hY2NlcHRlZCA9IDAsIGFueV9lcnJvciA9 IDA7CgoJZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemVvZihvZmZzZXRzKSAvIHNpemVvZihv ZmZzZXRzWzBdKTsgaSsrKSB7CgkJaW50IHIgPSBwcm9iZV9vZmZzZXQodHBfaWQsIG9mZnNldHNb aV0pOwoJCWlmIChyID09IDEpCgkJCWFueV9hY2NlcHRlZCA9IDE7CgkJZWxzZSBpZiAociA8IDAp CgkJCWFueV9lcnJvciA9IDE7Cgl9CgoJcHJpbnRmKCJcbltwb2NdID09PSBWRVJESUNUID09PVxu Iik7CglpZiAoYW55X2FjY2VwdGVkKSB7CgkJcHJpbnRmKCJbcG9jXSBCVUcgVFJJR0dFUkVEOiBh IGNvbnRleHQtcmVhZGluZyBCUEYgcHJvZ3JhbSBhdHRhY2hlZCB0byBhXG4iKTsKCQlwcmludGYo Iltwb2NdIFpFUk8tZmllbGQgdHJhY2Vwb2ludC4gdHJhY2VfZXZlbnRfZ2V0X29mZnNldHMoKSBy ZXR1cm5lZCBhXG4iKTsKCQlwcmludGYoIltwb2NdIGNvcnJ1cHRlZCAobm9uLXplcm8pIG9mZiB2 aWEgbGlzdF9maXJzdF9lbnRyeSBvbiB0aGUgZW1wdHlcbiIpOwoJCXByaW50ZigiW3BvY10gY2xh c3MtPmZpZWxkcyBsaXN0ICh0cmFjZV9ldmVudHMuYzoyNDYpLCBieXBhc3NpbmcgdGhlIEJQRlxu Iik7CgkJcHJpbnRmKCJbcG9jXSBjb250ZXh0LXNpemUgYm91bmQgY2hlY2sgKGNvcmUuYzoxMTY1 OCkuIE9uIGEgZml4ZWQga2VybmVsXG4iKTsKCQlwcmludGYoIltwb2NdIChvZmY9PTApIGFsbCBz dWNoIGF0dGFjaGVzIGFyZSByZWplY3RlZCB3aXRoIEVBQ0NFUy5cbiIpOwoJCXJldHVybiAwOwoJ fQoJaWYgKGFueV9lcnJvcikgewoJCXByaW50ZigiW3BvY10gSU5DT05DTFVTSVZFOiBzZXR1cCBl cnJvcnMgcHJldmVudGVkIHByb2JpbmcuXG4iKTsKCQlyZXR1cm4gMjsKCX0KCXByaW50ZigiW3Bv Y10gTk9UIFRSSUdHRVJFRCB2aWEgdGhpcyBwYXRoOiBldmVyeSBwcm9iZSB3YXMgcmVqZWN0ZWQg KEVBQ0NFUykuXG4iKTsKCXByaW50ZigiW3BvY10gVGhpcyBpcyB0aGUgZml4ZWQta2VybmVsIGJl aGF2aW9yIChvZmY9PTApLiBPbiB0aGUgYnVnZ3kga2VybmVsXG4iKTsKCXByaW50ZigiW3BvY10g aXQgbWVhbnMgdGhlIGNvcnJ1cHRlZCBvZmYgaGFwcGVuZWQgdG8gZmFsbCBpbiBbMCwxNV0gKHZl cnlcbiIpOwoJcHJpbnRmKCJbcG9jXSB1bmxpa2VseSBmb3IgYXJiaXRyYXJ5IC5kYXRhIGJ5dGVz KSAtLSBzZWUgYW5hbHlzaXMgZG9jLlxuIik7CglyZXR1cm4gMzsKfQpgYGAKClRoZSBjb21wYW5p b24ga2VybmVsIG1vZHVsZSAoemVyb2ZpZWxkX21vZC5jKSBpcyBzbWFsbC4gSXRzIGVzc2VudGlh bApwYXJ0cyBhcmUgYW4gaW5lcnQgc2VudGluZWwgYW5kIGEgemVyby1maWVsZCB0cmFjZXBvaW50 OgoKYGBgYwovKiBpbmVydCBzZW50aW5lbDogNjQgYnl0ZXMgb2YgMHg1MyBpbiAucmVmLmRhdGEs IGRlY2xhcmVkIGJlZm9yZSB0aGUgdHJhY2UKICogaGVhZGVyIHNvIGl0IHNvcnRzIEFGVEVSIHRo ZSA3Mi1ieXRlIGV2ZW50X2NsYXNzIChHQ0MgZGVzY2VuZGluZy1zaXplIGxheW91dCkuCiAqIFRo ZSBrZXJuZWwncyBPT0IgcmVhZCBvZiBjbGFzcys4NCAvIGNsYXNzKzg4IHRoZW4gbGFuZHMgaW5z aWRlIHRoaXMgc2VudGluZWwKICogLT4gb2ZmID0gMHg1MzUzNTM1MyArIDB4NTM1MzUzNTMgPSAw eEE2QTZBNkE2IChub24temVybykuICovCnN0YXRpYyB1bnNpZ25lZCBjaGFyIF9fcmVmZGF0YSBf X3VzZWQgX19hbGlnbmVkKDgpIG9vYl9zZW50aW5lbFs2NF0gPSB7CglbMCAuLi4gNjNdID0gMHg1 Mwp9OwojZGVmaW5lIENSRUFURV9UUkFDRV9QT0lOVFMKI2luY2x1ZGUgInplcm9maWVsZF90cC5o IiAgIC8qIFRSQUNFX0VWRU5UKHplcm9maWVsZF9ldmVudCwgVFBfUFJPVE8oaW50IGR1bW15KSwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRQX0FSR1MoZHVtbXkpLCBUUF9TVFJVQ1Rf X2VudHJ5KCAgLy8gZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksIC4uLikg LT4gZW1wdHkgZmllbGRzX2FycmF5IC0+IGNsYXNzLT5maWVsZHMgc3RheXMgZW1wdHkgKi8KYGBg CgoKZG1lc2cgYWZ0ZXIgaW5zbW9kIHplcm9maWVsZF9tb2Qua286CgpgYGAKemVyb2ZpZWxkX21v ZDogemVyby1maWVsZCB0cmFjZXBvaW50ICd6ZXJvZmllbGRfZXZlbnQnIHJlZ2lzdGVyZWQKb29i X3NlbnRpbmVsOiBldmVudF9jbGFzcz1mZmZmZmZmZmEwMjAxMWEwIHNlbnRpbmVsPWZmZmZmZmZm YTAyMDExZTggZ2FwPTcyCm9vYl9zZW50aW5lbDogY2xhc3MrODQ9MHg1MzUzNTM1MyBjbGFzcys4 OD0weDUzNTM1MzUzIC0+IG9mZj0tMTQ5OTAyNzgwMiAoMHhhNmE2YTZhNikKb29iX3NlbnRpbmVs OiBvZmYgbm9uLXplcm8gLT4gQlBGIGN0eCBib3VuZCBieXBhc3Mgb2JzZXJ2YWJsZQpgYGAKClRo ZSBkdW1wIHNob3dzIGNsYXNzKzQ4Lys1NiAoZmllbGRzLm5leHQvcHJldikgYm90aCBlcXVhbCBh MDIwMTFkMCA9CiZmaWVsZHMgKGV2ZW50X2NsYXNzKzB4MzApLCBpLmUuIHNlbGYtcG9pbnRpbmcg LT4gZW1wdHkgbGlzdCwgY29uZmlybWluZwp0aGUgcHJlY29uZGl0aW9uLiBUaGUgemVyb2ZpZWxk X2V2ZW50IGZvcm1hdCBmaWxlIGxpc3RzIG9ubHkgY29tbW9uXyoKZmllbGRzIChubyBldmVudC1z cGVjaWZpYyBmaWVsZCksIGNvcnJvYm9yYXRpbmcgdGhlIGVtcHR5IGNsYXNzLT5maWVsZHMuCgpC UEYgY29udGV4dC1zaXplIGJvdW5kIGJ5cGFzcyBwcm9iZXMgKG9uIGEgZml4ZWQga2VybmVsIGV2 ZXJ5IHByb2JlIGJlbG93Cm11c3QgYmUgUkVKRUNURUQgd2l0aCBFQUNDRVMsIGJlY2F1c2UgYSB6 ZXJvLWZpZWxkIGV2ZW50IHNob3VsZCB5aWVsZApvZmY9PTApOgoKYGBgCmN0eF9vZmY9OCAgICAo bWF4X2N0eF9vZmZzZXQ9MTYgICk6IFNFVF9CUEYgcmM9MCAgLT4gQUNDRVBURUQKY3R4X29mZj0y NDggIChtYXhfY3R4X29mZnNldD0yNTYgKTogU0VUX0JQRiByYz0wICAtPiBBQ0NFUFRFRApjdHhf b2ZmPTQwODggKG1heF9jdHhfb2Zmc2V0PTQwOTYpOiBTRVRfQlBGIHJjPTAgIC0+IEFDQ0VQVEVE CmBgYAoKV2l0aCBvZmYgY29ycnVwdGVkIHRvIDB4YTZhNmE2YTYgKGFzIHUzMiB+Mi43OWU5KSwg bm9uZSBvZiAxNi8yNTYvNDA5NgpleGNlZWRzIGl0LCBzbyBhbGwgdGhyZWUgY29udGV4dC1yZWFk aW5nIGF0dGFjaGVzIGFyZSBhY2NlcHRlZC4gQSBCUEYKcHJvZ3JhbSByZWFkaW5nIGN0eCs0MDg4 ICg4IEtCKSBpcyBhY2NlcHRlZCBvbiBhIHRyYWNlcG9pbnQgdGhhdCBzaG91bGQKcGVybWl0IG5v IGNvbnRleHQgcmVhZCBhdCBhbGwuCgo3LiBJbXBhY3QKCkxvZ2ljL2luZm9ybWF0aW9uIGJ1Zzog dGhlIEJQRiBjb250ZXh0LXNpemUgYm91bmQgY2hlY2sgaXMgYnlwYXNzZWQsCmFsbG93aW5nIGEg QlBGIHByb2dyYW0gYXR0YWNoZWQgdG8gYSB6ZXJvLWZpZWxkIHRyYWNlcG9pbnQgdG8gcmVhZAp0 cmFjZXBvaW50IGNvbnRleHQgYmV5b25kIHdoYXQgc2hvdWxkIGJlIHBlcm1pdHRlZC4gVGhpcyBp cyBhIEJQRi12ZXJpZmllcgpjb250ZXh0LWJvdW5kIGJ5cGFzcyAoYSBwb3RlbnRpYWwgcHJpdmls ZWdlLWVzY2FsYXRpb24gc3VyZmFjZSkuIEl0IGRvZXMKbm90IG5vcm1hbGx5IGNyYXNoLCBiZWNh dXNlIHRoZSB3aWxkIHBvaW50ZXIgbGFuZHMgaW4gbWFwcGVkCmNsYXNzLWFkamFjZW50IG1lbW9y eSwgd2hpY2ggbWFrZXMgaXQgbW9yZSBzdWJ0bGUgdGhhbiBhIE5VTEwgZGVyZWYgYW5kCmhhcmRl ciB0byBzdXJmYWNlIG5hdHVyYWxseS4KCiBrZXJuZWwvdHJhY2UvdHJhY2VfZXZlbnRzLmMgfCAy ICsrCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEva2VybmVs L3RyYWNlL3RyYWNlX2V2ZW50cy5jIGIva2VybmVsL3RyYWNlL3RyYWNlX2V2ZW50cy5jCmluZGV4 IDljNjIyMDIuLjhjMzgxMGYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS90cmFjZV9ldmVudHMu YworKysgYi9rZXJuZWwvdHJhY2UvdHJhY2VfZXZlbnRzLmMKQEAgLTIzOSw2ICsyMzksOCBAQCBp bnQgdHJhY2VfZXZlbnRfZ2V0X29mZnNldHMoc3RydWN0IHRyYWNlX2V2ZW50X2NhbGwgKmNhbGwp CiAJc3RydWN0IGxpc3RfaGVhZCAqaGVhZDsKIAogCWhlYWQgPSB0cmFjZV9nZXRfZmllbGRzKGNh bGwpOworCWlmIChsaXN0X2VtcHR5KGhlYWQpKQorCQlyZXR1cm4gMDsKIAkvKgogCSAqIGhlYWQt Pm5leHQgcG9pbnRzIHRvIHRoZSBsYXN0IGZpZWxkIHdpdGggdGhlIGxhcmdlc3Qgb2Zmc2V0LAog CSAqIHNpbmNlIGl0IHdhcyBhZGRlZCBsYXN0IGJ5IHRyYWNlX2RlZmluZV9maWVsZCgpCi0tIAoy LjQzLjAKCgo=