Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w55Zt-002so0-1W for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 17:30:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w55Zr-008FUc-39 for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Mar 2026 17:30:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w55Zr-008FUU-1q for pgsql-hackers@lists.postgresql.org; Tue, 24 Mar 2026 17:30:04 +0000 Received: from mail-ot1-x336.google.com ([2607:f8b0:4864:20::336]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w55Zp-00000000ukm-0gOr for pgsql-hackers@postgresql.org; Tue, 24 Mar 2026 17:30:03 +0000 Received: by mail-ot1-x336.google.com with SMTP id 46e09a7af769-7d7f09aa39fso4475162a34.0 for ; Tue, 24 Mar 2026 10:30:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774373399; cv=none; d=google.com; s=arc-20240605; b=gXx7OIAN3YRcGWWIbweGy/vreXT5wckEQ2I/P8VGqQkeMjJNjPFaWN4SbowxZ9WQlt tiUICO1/2ts7WVjah5mDFXs7v4meuToJiPy7z+plVtpi2QC9j88bbi3jZZbYeyz2RdsO mRdw+V8IkobYCL24ekMRdqxAhqV/CNCfrnSfgekeqXEkYqbJ8mHP5YuBi51SmS2mOABq Og/S13L7+gYOsYA5DeUJsAg/CRnEMt/jXn3xLpwDaoNeoQ6VC629jpYJCL/mhGTsJsjH mxAZMB03ujZJwwkU5+r89piPG1oWnKQ7oKcSet6ktfdkiRrd4sQBMhTRad5YmaAyv3ZW +paw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=tuR6w4reUuuGIFrllKlry21Y25VPYz5DJZmT6FR4hFc=; fh=RVSNpGflg44olhNK+aVD+dClPeVkyHaSDOEhw/Ad7gY=; b=i4zfOJzG+wQCpiPRY2aCq3Xvc9AngSPF0wZMGModWudP89d7aJW5IJw5hARcAHwbBX e2PeMYmf+mBrMCyLSBqzLBmMJM7p877iZVbUUKmjXBZ3762Kutzk1dpyqnwGXJsr748m ho3zHL4B6aie+B6M1h+MtNl72YhHoLvHxKAKEEvOWNBRC7rahY7e+ZG7pi+QxU5sru0z dBRn0kwAx599HSNAqoVpfOlapLhuK8zRJi1V5vYZ/4dWgFoEmja12QY8K10AUXMsIMim BpJ0j73OVxsKK/uWnREKdpuUeYViy3dCUOC+9QsqdoJ/NK3Go9OJGnQzPpV7jYZ+9+G+ TFxg==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774373399; x=1774978199; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=tuR6w4reUuuGIFrllKlry21Y25VPYz5DJZmT6FR4hFc=; b=eJM2AsV45/Tos+tN8nd22Khj4BBxyRF9epA+WJPUY0F7jlcOfUWQuyUlkLWTfhg7R1 5OX+wYi7cEDQd4wL8xeTOUwGEYYw+E3el9XbJlO45KKSci2JQp6LyAt+UTg+ZgHGsEl3 gqYNRSf2+7AApVNLOmFjsy/AmGj1ye2QfTKCXYlaiEzpACPsjQtEh96cX0/vnQALDV7t 3XDBwIkfOREZcw0Ta/bYZx+ShuILI4u/rk3wu8svW60xx08nWevqYsuwDIC6YN90F374 EJkEXbKD0yHSJwxx2nFbhu0AEwqZlo20nXfKIGTS3AHT9g4YxrxfwLpLY2SAiXJidu8c SSYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774373399; x=1774978199; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=tuR6w4reUuuGIFrllKlry21Y25VPYz5DJZmT6FR4hFc=; b=U+gdQsiwJhE9hjZmdcp3w/hntoIzNl08qJimCStP9WmLi+lo9c9WlB+87hexQTi0Rq csAz03IdHg6zM8mdN/yjzZ545Np8r2GAAiMS89G7q7ZRR8MEWrmZBg0jYuN2viCGn664 EM9xklqWVtVs6uimx3QOAsvFqho2bVu1kLhLGqMhc0Ve35RXinE94qklLhSAv+PfHH+i 2OJljxWTsc8Z+0YzyN/+frO5weMydFUD48Io0CJeOP//Z4/x4P2cbtrL3Un4tuMKMrzf WhbeGXG+6GFkZd8QNHOL6wrpeEgtmFa48BAezoyfcRRpJGLiLjJpFtI09JukMTCgU+hm UmQg== X-Gm-Message-State: AOJu0YyTZt5zO7mAJeIY/xSUBvnZGUoFw4gTGv0KZwJPK5SxLu8C2uxj GVtNR/Bp8qhcQPwL4zvL03DHKx1E6JU4TfWpi4BKH6c8N+EevZjqlbiXrvBES7i9n9Q+RwtJSrV 7kujyl6ysKJKOnz8fi4zaIllNGaL1ruy/RsyD X-Gm-Gg: ATEYQzyL3FwBgBKhOI9Ao8VStiMBKIezoSiwTfJxKR6ATVkZe0vgXmMf2zQm3pofgci OeVwL+zI7toj6Q8C8iGiVDlJdmsGlAZCttFm8XuK2H7Z/PeQ67ag7/bAE21A6jbN5UIzHbWTeQp Mc4DMaqfrfISf0+/lDnZUvNfBAp6xGy5DQ742iyaCM7wr7ZgXF19I5bhh273diXjZ+ZRV4XZlIb el+LGOK+/uhATXO+rDx+4AKDideSkaGVaRwKJRyf8S7JlWCCO32y/GOubllKkwASTkAg+MWtb66 RPdwCtfS5shmc5Ljk77dAqRCvTPBVPatMAhenlzThQ== X-Received: by 2002:a05:6820:3108:b0:67b:da6d:1672 with SMTP id 006d021491bc7-67dff582c17mr333359eaf.63.1774373399438; Tue, 24 Mar 2026 10:29:59 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: shihao zhong Date: Tue, 24 Mar 2026 13:29:48 -0400 X-Gm-Features: AQROBzCVn8UDKum6mRJpvmmYQLtegUICbkVwKRX2C7cvJZscpbH3sHFwqwTDrwo Message-ID: Subject: Re: [Patch] New pg_stat_tablespace view To: songjinzhou Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000002c4592064dc88001" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002c4592064dc88001 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Mar 24, 2026 at 3:22=E2=80=AFAM songjinzhou wrote: > > =E5=9C=A8 2026/3/24 10:49, shihao zhong =E5=86=99=E9=81=93: > > On Mon, Mar 23, 2026 at 3:08=E2=80=AFPM shihao zhong wrote: > >> > >> Hi hackers, > >> > >> I=E2=80=99ve been working on extending the cumulative statistics syste= m to > >> provide better visibility into tablespace-level workloads, and I'd > >> like to propose a patch to add a new system view: pg_stat_tablespace. > >> > >> Currently, PostgreSQL provides statistics per database (e.g., > >> pg_stat_database) and per relation (e.g., pg_statio_user_tables). > >> However, because tablespaces can span multiple databases, it is > >> difficult for DBAs to analyze storage hotspots across the cluster or > >> verify if a specific tablespace (such as a high-performance SSD vs a > >> slow HDD array) is experiencing I/O bottlenecks or excessive temporary > >> file usage. > >> > >> The pg_stat_tablespace view bridges this gap by providing an aggregate > >> view of block I/O and temporary file usage grouped by tablespace, > >> making it easier to optimize storage architectures. > >> > >> Thanks, > >> Shihao > > > > New version fix the CI/CD > > Hello, shihao > > I applied it on master and did a simple test. Here are some minor review > comments: > > 1. The type of temp_bytes in monitoring.sgml should be bigint, but it > was written as numeric here. > > 2. The pgstat_drop_tablespace function doesn't seem to be called. > > Thank you. > > -- > regards, > songjinzhou Hi SongJin, Thanks for your reviewing, the v2 patch addresses both 1 and 2. Thanks, Shihao --0000000000002c4592064dc88001 Content-Type: application/octet-stream; name="pg_stat_tablespace_final_v2.patch" Content-Disposition: attachment; filename="pg_stat_tablespace_final_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn4w2ngv0 RnJvbSBmNjM4YjQ4NWVkMGJkMjEyYjZiOTFlYWRmZmUxMzE0MGY2OWZiN2I5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGloYW8gemhvbmcgPHpob25nOTUwNDE5QGdtYWlsLmNvbT4K RGF0ZTogVHVlLCAyNCBNYXIgMjAyNiAxNzoxNjo0OSArMDAwMApTdWJqZWN0OiBbUEFUQ0hdIEFk ZCBwZ19zdGF0X3RhYmxlc3BhY2Ugc3RhdGlzdGljcyB2aWV3CgpJbXBsZW1lbnQgcGdfc3RhdF90 YWJsZXNwYWNlIHRvIHRyYWNrIGJsb2NrIHJlYWRzLCBoaXRzLCBJL08gdGltaW5nLAphbmQgdGVt cG9yYXJ5IGZpbGUgdXNhZ2UgcGVyIHRhYmxlc3BhY2UuIFRoaXMgYWxsb3dzIERCQXMgdG8gYW5h bHl6ZQp0YWJsZXNwYWNlLWxldmVsIHdvcmtsb2FkIGhvdHNwb3RzLgoKVGhlIHZpZXcgaW5jbHVk ZXM6Ci0gdGFibGVzcGFjZV9pZAotIHRhYmxlc3BhY2VfbmFtZQotIGJsb2Nrc19mZXRjaGVkCi0g YmxvY2tzX2hpdAotIGJsa19yZWFkX3RpbWUKLSBibGtfd3JpdGVfdGltZQotIHRlbXBfZmlsZXMK LSB0ZW1wX2J5dGVzCgpJbmNsdWRlcyBjb21wcmVoZW5zaXZlIGZpZWxkIGNvdmVyYWdlIGNoZWNr cyBpbiBzdGF0cy5zcWwuCi0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAg ICAgICAgICAgIHwgMTQzICsrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgIDE0ICsrCiBzcmMvYmFja2VuZC9jb21tYW5kcy90 YWJsZXNwYWNlLmMgICAgICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9maWxl L2ZkLmMgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv bWVzb24uYnVpbGQgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bn c3RhdC5jICAgICAgICAgICB8ICAxNiArKwogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdz dGF0X2RhdGFiYXNlLmMgIHwgIDQ3ICsrKysrLQogc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkv cGdzdGF0X3JlbGF0aW9uLmMgIHwgIDE4ICsrKwogLi4uL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90 YWJsZXNwYWNlLmMgICAgICAgIHwgIDk5ICsrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3Bnc3RhdGZ1bmNzLmMgICAgICAgICAgIHwgIDgxICsrKysrKysrKy0KIHNyYy9pbmNsdWRl L2NhdGFsb2cvY2F0dmVyc2lvbi5oICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL3Bn c3RhdC5oICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArKysKIHNyYy9pbmNsdWRlL3V0 aWxzL2JhY2tlbmRfc3RhdHVzLmggICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvdXRp bHMvcGdzdGF0X2ludGVybmFsLmggICAgICAgICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3Bnc3RhdF9raW5kLmggICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQgICAgICAgICAgIHwgIDExICsrCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3N0YXRzLm91dCAgICAgICAgICAgfCAgODMgKysrKysrKysrLQogc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc3RhdHMuc3FsICAgICAgICAgICAgICAgIHwgIDM2ICsrKysrCiAyMCBmaWxlcyBj aGFuZ2VkLCA1OTQgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfdGFibGVzcGFjZS5jCgpkaWZm IC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwKaW5kZXggNDYyMDE5YTk3MmMuLjU3Njc1Zjc3MDgyIDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5n LnNnbWwKQEAgLTUyNiw2ICs1MjYsMTQgQEAgcG9zdGdyZXMgICAyNzA5MyAgMC4wICAwLjAgIDMw MDk2ICAyNzUyID8gICAgICAgIFNzICAgMTE6MzQgICAwOjAwIHBvc3RncmVzOiBzZXIKICAgICAg IDwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PHN0cnVj dG5hbWU+cGdfc3RhdF90YWJsZXNwYWNlPC9zdHJ1Y3RuYW1lPjxpbmRleHRlcm0+PHByaW1hcnk+ cGdfc3RhdF90YWJsZXNwYWNlPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvZW50cnk+CisgICAgICA8 ZW50cnk+T25lIHJvdyBwZXIgdGFibGVzcGFjZSwgc2hvd2luZyBzdGF0aXN0aWNzIGFib3V0IEkv TyBhbmQgdGVtcG9yYXJ5IGZpbGVzLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5kPSJtb25pdG9y aW5nLXBnLXN0YXQtdGFibGVzcGFjZS12aWV3Ij4KKyAgICAgICA8c3RydWN0bmFtZT5wZ19zdGF0 X3RhYmxlc3BhY2U8L3N0cnVjdG5hbWU+PC9saW5rPiBmb3IgZGV0YWlscy4KKyAgICAgIDwvZW50 cnk+CisgICAgIDwvcm93PgorCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PHN0cnVjdG5hbWU+ cGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHM8L3N0cnVjdG5hbWU+PGluZGV4dGVybT48cHJpbWFy eT5wZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0czwvcHJpbWFyeT48L2luZGV4dGVybT48L2VudHJ5 PgogICAgICAgPGVudHJ5Pk9uZSByb3cgcGVyIHN1YnNjcmlwdGlvbiwgc2hvd2luZyBzdGF0aXN0 aWNzIGFib3V0IGVycm9ycyBhbmQgY29uZmxpY3RzLgpAQCAtNTE1Miw2ICs1MTYwLDE0MSBAQCBk ZXNjcmlwdGlvbiB8IFdhaXRpbmcgZm9yIGEgbmV3bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8g cmVhY2ggZHVyYWJsZSBzdG9yYWdlCiAKICA8L3NlY3QyPgogCisgIDxzZWN0MiBpZD0ibW9uaXRv cmluZy1wZy1zdGF0LXRhYmxlc3BhY2UtdmlldyI+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+cGdf c3RhdF90YWJsZXNwYWNlPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CisKKyAgIDxpbmRleHRlcm0+Cisg ICAgPHByaW1hcnk+cGdfc3RhdF90YWJsZXNwYWNlPC9wcmltYXJ5PgorICAgPC9pbmRleHRlcm0+ CisKKyAgIDxwYXJhPgorICAgIFRoZSA8c3RydWN0bmFtZT5wZ19zdGF0X3RhYmxlc3BhY2U8L3N0 cnVjdG5hbWU+IHZpZXcgd2lsbCBjb250YWluIG9uZSByb3cKKyAgICBmb3IgZWFjaCB0YWJsZXNw YWNlLCBzaG93aW5nIHN0YXRpc3RpY3MgYWJvdXQgSS9PIG9wZXJhdGlvbnMgYW5kIHRlbXBvcmFy eQorICAgIGZpbGUgdXNhZ2UgaW4gdGhhdCB0YWJsZXNwYWNlLgorICAgPC9wYXJhPgorCisgICA8 dGFibGUgaWQ9InBnLXN0YXQtdGFibGVzcGFjZS12aWV3IiB4cmVmbGFiZWw9InBnX3N0YXRfdGFi bGVzcGFjZSI+CisgICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0YXRfdGFibGVzcGFjZTwvc3Ry dWN0bmFtZT4gVmlldzwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIxIj4KKyAgICAgPHRoZWFk PgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ CisgICAgICAgIDxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICAgIENvbHVt biBUeXBlCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBEZXNjcmlw dGlvbgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAg ICA8L3RoZWFkPgorCisgICAgIDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgICA8c3RydWN0ZmllbGQ+dGFibGVzcGFjZV9pZDwvc3RydWN0Zmll bGQ+IDx0eXBlPm9pZDwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAg ICAgICAgIE9JRCBvZiB0aGUgdGFibGVzcGFjZQorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9l bnRyeT4KKyAgICAgIDwvcm93PgorCisgICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRp b24iPgorICAgICAgICAgPHN0cnVjdGZpZWxkPnRhYmxlc3BhY2VfbmFtZTwvc3RydWN0ZmllbGQ+ IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAg ICAgICBOYW1lIG9mIHRoZSB0YWJsZXNwYWNlCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2Vu dHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CisgICAgICAgICA8c3RydWN0ZmllbGQ+YmxrX3JlYWRfdGltZTwvc3RydWN0ZmllbGQ+IDx0 eXBlPmRvdWJsZSBwcmVjaXNpb248L3R5cGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBUaW1lIHNwZW50IHJlYWRpbmcgZGF0YSBibG9ja3MgYnkgYmFja2VuZHMg aW4gdGhpcyB0YWJsZXNwYWNlLCBpbiBtaWxsaXNlY29uZHMKKyAgICAgICAgIChpZiA8eHJlZiBs aW5rZW5kPSJndWMtdHJhY2staW8tdGltaW5nIi8+IGlzIGVuYWJsZWQsIG90aGVyd2lzZSB6ZXJv KQorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93PgorCisgICAg ICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAg ICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICAgPHN0cnVjdGZpZWxk PmJsa193cml0ZV90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZG91YmxlIHByZWNpc2lvbjwvdHlw ZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRpbWUgc3BlbnQg d3JpdGluZyBkYXRhIGJsb2NrcyBieSBiYWNrZW5kcyBpbiB0aGlzIHRhYmxlc3BhY2UsIGluIG1p bGxpc2Vjb25kcworICAgICAgICAgKGlmIDx4cmVmIGxpbmtlbmQ9Imd1Yy10cmFjay1pby10aW1p bmciLz4gaXMgZW5hYmxlZCwgb3RoZXJ3aXNlIHplcm8pCisgICAgICAgIDwvcGFyYT4KKyAgICAg ICA8L2VudHJ5PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPgorICAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVm aW5pdGlvbiI+CisgICAgICAgICA8c3RydWN0ZmllbGQ+YmxvY2tzX2ZldGNoZWQ8L3N0cnVjdGZp ZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+ CisgICAgICAgICBOdW1iZXIgb2YgZGF0YSBibG9ja3MgcmVhZCBmcm9tIGRpc2sgaW4gdGhpcyB0 YWJsZXNwYWNlCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5PgorICAgICAgPC9yb3c+ CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PgorICAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgICA8c3Ry dWN0ZmllbGQ+YmxvY2tzX2hpdDwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2ludDwvdHlwZT4KKyAg ICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIE51bWJlciBvZiBkYXRhIGJs b2NrcyBmb3VuZCBpbiBzaGFyZWQgYnVmZmVyIGNhY2hlIGluIHRoaXMgdGFibGVzcGFjZQorICAg ICAgICA8L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93PgorCisgICAgICA8cm93 PgorICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAgICAgICAgPHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICAgPHN0cnVjdGZpZWxkPnRlbXBf ZmlsZXM8L3N0cnVjdGZpZWxkPiA8dHlwZT5iaWdpbnQ8L3R5cGU+CisgICAgICAgIDwvcGFyYT4K KyAgICAgICAgPHBhcmE+CisgICAgICAgICBOdW1iZXIgb2YgdGVtcG9yYXJ5IGZpbGVzIGNyZWF0 ZWQgaW4gdGhpcyB0YWJsZXNwYWNlCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2VudHJ5Pgor ICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2df dGFibGVfZW50cnkiPgorICAgICAgICA8cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Cisg ICAgICAgICA8c3RydWN0ZmllbGQ+dGVtcF9ieXRlczwvc3RydWN0ZmllbGQ+IDx0eXBlPmJpZ2lu dDwvdHlwZT4KKyAgICAgICAgPC9wYXJhPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRvdGFs IGFtb3VudCBvZiBkYXRhIHdyaXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGluIHRoaXMgdGFibGVz cGFjZQorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93PgorCisg ICAgICA8cm93PgorICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij4KKyAg ICAgICAgPHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgICAgPHN0cnVjdGZp ZWxkPnN0YXRzX3Jlc2V0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6 b25lPC90eXBlPgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGlt ZSBhdCB3aGljaCB0aGVzZSBzdGF0aXN0aWNzIHdlcmUgbGFzdCByZXNldAorICAgICAgICA8L3Bh cmE+CisgICAgICAgPC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3Rib2R5PgorICAgIDwv dGdyb3VwPgorICAgPC90YWJsZT4KKyAgPC9zZWN0Mj4KKwogIDxzZWN0MiBpZD0ibW9uaXRvcmlu Zy1zdGF0cy1mdW5jdGlvbnMiPgogICA8dGl0bGU+U3RhdGlzdGljcyBGdW5jdGlvbnM8L3RpdGxl PgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjFlZDdiNThmMTMuLjI4 NzZjNWZkNjQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5z cWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0xMTE5LDYg KzExMTksMjAgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF9yZXBsaWNhdGlvbl9zbG90cyBBUwogICAg ICAgICBMQVRFUkFMIHBnX3N0YXRfZ2V0X3JlcGxpY2F0aW9uX3Nsb3Qoc2xvdF9uYW1lKSBhcyBz CiAgICAgV0hFUkUgci5kYXRvaWQgSVMgTk9UIE5VTEw7IC0tIGV4Y2x1ZGluZyBwaHlzaWNhbCBz bG90cwogCitDUkVBVEUgVklFVyBwZ19zdGF0X3RhYmxlc3BhY2UgQVMKKyAgICBTRUxFQ1QKKyAg ICAgICAgVC5vaWQgQVMgdGFibGVzcGFjZV9pZCwKKyAgICAgICAgVC5zcGNuYW1lIEFTIHRhYmxl c3BhY2VfbmFtZSwKKyAgICAgICAgUy5ibGtfcmVhZF90aW1lLAorICAgICAgICBTLmJsa193cml0 ZV90aW1lLAorICAgICAgICBTLmJsb2Nrc19mZXRjaGVkLAorICAgICAgICBTLmJsb2Nrc19oaXQs CisgICAgICAgIFMudGVtcF9maWxlcywKKyAgICAgICAgUy50ZW1wX2J5dGVzLAorICAgICAgICBT LnN0YXRzX3Jlc2V0CisgICAgRlJPTSBwZ190YWJsZXNwYWNlIFQKKyAgICBMRUZUIEpPSU4gTEFU RVJBTCBwZ19zdGF0X2dldF90YWJsZXNwYWNlKFQub2lkKSBTIE9OIHRydWU7CisKIENSRUFURSBW SUVXIHBnX3N0YXRfZGF0YWJhc2UgQVMKICAgICBTRUxFQ1QKICAgICAgICAgICAgIEQub2lkIEFT IGRhdGlkLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jCmluZGV4IGVkMmE5M2EwOWRiLi42MDU2 Y2FlOGZmMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVzcGFjZS5jCisr KyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlc3BhY2UuYwpAQCAtNzksNiArNzksNyBAQAog I2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5j bHVkZSAidXRpbHMvdmFybGVuYS5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgogCiAvKiBHVUMgdmFy aWFibGVzICovCiBjaGFyCSAgICpkZWZhdWx0X3RhYmxlc3BhY2UgPSBOVUxMOwpAQCAtNTQ1LDYg KzU0Niw5IEBAIERyb3BUYWJsZVNwYWNlKERyb3BUYWJsZVNwYWNlU3RtdCAqc3RtdCkKIAkJKHZv aWQpIFhMb2dJbnNlcnQoUk1fVEJMU1BDX0lELCBYTE9HX1RCTFNQQ19EUk9QKTsKIAl9CiAKKwkv KiBLZWVwIGN1bXVsYXRpdmUgc3RhdHMgc3lzdGVtIHVwLXRvLWRhdGUgKi8KKwlwZ3N0YXRfZHJv cF90YWJsZXNwYWNlKHRhYmxlc3BhY2VvaWQpOworCiAJLyoKIAkgKiBOb3RlOiBiZWNhdXNlIHdl IGNoZWNrZWQgdGhhdCB0aGUgdGFibGVzcGFjZSB3YXMgZW1wdHksIHRoZXJlIHNob3VsZCBiZQog CSAqIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgZmx1c2hpbmcgc2hhcmVkIGJ1ZmZlcnMgb3IgZnJl ZSBzcGFjZSBtYXAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvZmlsZS9mZC5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9maWxlL2ZkLmMKaW5kZXggMDFmMWJkNmU2ODcuLjAzYzQ3YWJh MTdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2ZpbGUvZmQuYwpAQCAtMTUxNSw3ICsxNTE1LDcgQEAgRmlsZUFjY2Vz cyhGaWxlIGZpbGUpCiBzdGF0aWMgdm9pZAogUmVwb3J0VGVtcG9yYXJ5RmlsZVVzYWdlKGNvbnN0 IGNoYXIgKnBhdGgsIHBnb2ZmX3Qgc2l6ZSkKIHsKLQlwZ3N0YXRfcmVwb3J0X3RlbXBmaWxlKHNp emUpOworCXBnc3RhdF9yZXBvcnRfdGVtcGZpbGUoc2l6ZSwgcGF0aCk7CiAKIAlpZiAobG9nX3Rl bXBfZmlsZXMgPj0gMCkKIAl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0 eS9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L01ha2VmaWxlCmluZGV4IGMz N2JmYjM1MGJiLi4yNTU2ZWIzMDgyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvTWFrZWZpbGUK QEAgLTMxLDYgKzMxLDcgQEAgT0JKUyA9IFwKIAlwZ3N0YXRfc2htZW0ubyBcCiAJcGdzdGF0X3Ns cnUubyBcCiAJcGdzdGF0X3N1YnNjcmlwdGlvbi5vIFwKKwlwZ3N0YXRfdGFibGVzcGFjZS5vIFwK IAlwZ3N0YXRfd2FsLm8gXAogCXBnc3RhdF94YWN0Lm8gXAogCXdhaXRfZXZlbnQubyBcCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9tZXNvbi5idWlsZCBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L21lc29uLmJ1aWxkCmluZGV4IDUzYmQ1YTI0NmNhLi45N2QxMjU2 NmFmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQK KysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvbWVzb24uYnVpbGQKQEAgLTE2LDYgKzE2 LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGdzdGF0X3NobWVtLmMnLAogICAn cGdzdGF0X3NscnUuYycsCiAgICdwZ3N0YXRfc3Vic2NyaXB0aW9uLmMnLAorICAncGdzdGF0X3Rh Ymxlc3BhY2UuYycsCiAgICdwZ3N0YXRfd2FsLmMnLAogICAncGdzdGF0X3hhY3QuYycsCiApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXQuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdC5jCmluZGV4IDExYmI3MWNhZDVhLi42MGMyYzgwYWRj MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0LmMKQEAgLTMwMCw2ICszMDAsMjIgQEAg c3RhdGljIGNvbnN0IFBnU3RhdF9LaW5kSW5mbyBwZ3N0YXRfa2luZF9idWlsdGluX2luZm9zW1BH U1RBVF9LSU5EX0JVSUxUSU5fU0laRV0KIAkJLnJlc2V0X3RpbWVzdGFtcF9jYiA9IHBnc3RhdF9k YXRhYmFzZV9yZXNldF90aW1lc3RhbXBfY2IsCiAJfSwKIAorCVtQR1NUQVRfS0lORF9UQUJMRVNQ QUNFXSA9IHsKKwkJLm5hbWUgPSAidGFibGVzcGFjZSIsCisKKwkJLmZpeGVkX2Ftb3VudCA9IGZh bHNlLAorCQkud3JpdGVfdG9fZmlsZSA9IHRydWUsCisJCS5hY2Nlc3NlZF9hY3Jvc3NfZGF0YWJh c2VzID0gdHJ1ZSwKKworCQkuc2hhcmVkX3NpemUgPSBzaXplb2YoUGdTdGF0U2hhcmVkX1RhYmxl c3BhY2UpLAorCQkuc2hhcmVkX2RhdGFfb2ZmID0gb2Zmc2V0b2YoUGdTdGF0U2hhcmVkX1RhYmxl c3BhY2UsIHN0YXRzKSwKKwkJLnNoYXJlZF9kYXRhX2xlbiA9IHNpemVvZigoKFBnU3RhdFNoYXJl ZF9UYWJsZXNwYWNlICopIDApLT5zdGF0cyksCisJCS5wZW5kaW5nX3NpemUgPSBzaXplb2YoUGdT dGF0X1N0YXRUYWJzcGFjZUVudHJ5KSwKKworCQkuZmx1c2hfcGVuZGluZ19jYiA9IHBnc3RhdF90 YWJsZXNwYWNlX2ZsdXNoX2NiLAorCQkucmVzZXRfdGltZXN0YW1wX2NiID0gcGdzdGF0X3RhYmxl c3BhY2VfcmVzZXRfdGltZXN0YW1wX2NiLAorCX0sCisKIAlbUEdTVEFUX0tJTkRfUkVMQVRJT05d ID0gewogCQkubmFtZSA9ICJyZWxhdGlvbiIsCiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3Bnc3RhdF9kYXRhYmFzZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvcGdzdGF0X2RhdGFiYXNlLmMKaW5kZXggOTMzZGNiNWNhZTUuLjgzZDI2NzVkNTExIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfZGF0YWJhc2UuYwpAQCAtMTcsOSAr MTcsMTEgQEAKIAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKKyNpbmNsdWRlICJtaXNjYWRtaW4u aCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnkuaCIKICNpbmNsdWRlICJ1dGlscy9wZ3N0YXRf aW50ZXJuYWwuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJjYXRh bG9nL3BnX3RhYmxlc3BhY2VfZC5oIgogCiAKIHN0YXRpYyBib29sIHBnc3RhdF9zaG91bGRfcmVw b3J0X2Nvbm5zdGF0KHZvaWQpOwpAQCAtMjE0LDIwICsyMTYsNjMgQEAgcGdzdGF0X3JlcG9ydF9j aGVja3N1bV9mYWlsdXJlc19pbl9kYihPaWQgZGJvaWQsIGludCBmYWlsdXJlY291bnQpCiAJcGdz dGF0X3VubG9ja19lbnRyeShlbnRyeV9yZWYpOwogfQogCisvKgorICogSGVscGVyIGZ1bmN0aW9u IHRvIHBhcnNlIHRhYmxlc3BhY2Ugb2lkIGZyb20gdGVtcG9yYXJ5IGZpbGUgcGF0aC4KKyAqLwor c3RhdGljIE9pZAorZ2V0X3RhYmxlc3BhY2VfZnJvbV90ZW1wZmlsZV9wYXRoKGNvbnN0IGNoYXIg KnBhdGgpCit7CisJLyoKKwkgKiBXZSBtYXRjaCB0aGUgcGF0aCBhZ2FpbnN0IGtub3duIHRhYmxl c3BhY2UgcHJlZml4ZXMgdG8gYXZvaWQgbW9kaWZ5aW5nCisJICogZmQuYy9maWxlc2V0LmMgYW5k IFZmZCBzdHJ1Y3R1cmVzLgorCSAqLworCWlmIChwYXRoID09IE5VTEwpCisJCXJldHVybiBJbnZh bGlkT2lkOworCisJaWYgKHN0cm5jbXAocGF0aCwgInBnX3RibHNwYy8iLCAxMCkgPT0gMCkKKwl7 CisJCXJldHVybiBhdG9vaWQocGF0aCArIDEwKTsKKwl9CisJZWxzZSBpZiAoc3RybmNtcChwYXRo LCAiYmFzZS8iLCA1KSA9PSAwKQorCXsKKwkJcmV0dXJuIERFRkFVTFRUQUJMRVNQQUNFX09JRDsK Kwl9CisJZWxzZSBpZiAoc3RybmNtcChwYXRoLCAiZ2xvYmFsLyIsIDcpID09IDApCisJeworCQly ZXR1cm4gR0xPQkFMVEFCTEVTUEFDRV9PSUQ7CisJfQorCisJcmV0dXJuIEludmFsaWRPaWQ7Cit9 CisKIC8qCiAgKiBSZXBvcnQgY3JlYXRpb24gb2YgdGVtcG9yYXJ5IGZpbGUuCiAgKi8KIHZvaWQK LXBnc3RhdF9yZXBvcnRfdGVtcGZpbGUoc2l6ZV90IGZpbGVzaXplKQorcGdzdGF0X3JlcG9ydF90 ZW1wZmlsZShzaXplX3QgZmlsZXNpemUsIGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAJUGdTdGF0X1N0 YXREQkVudHJ5ICpkYmVudDsKKwlQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKnRzZW50OworCU9p ZAkJCXRhYmxlc3BhY2Vfb2lkOwogCiAJaWYgKCFwZ3N0YXRfdHJhY2tfY291bnRzKQogCQlyZXR1 cm47CiAKKwl0YWJsZXNwYWNlX29pZCA9IGdldF90YWJsZXNwYWNlX2Zyb21fdGVtcGZpbGVfcGF0 aChwYXRoKTsKKwogCWRiZW50ID0gcGdzdGF0X3ByZXBfZGF0YWJhc2VfcGVuZGluZyhNeURhdGFi YXNlSWQpOwogCWRiZW50LT50ZW1wX2J5dGVzICs9IGZpbGVzaXplOwogCWRiZW50LT50ZW1wX2Zp bGVzKys7CisKKwlpZiAoT2lkSXNWYWxpZCh0YWJsZXNwYWNlX29pZCkpCisJeworCQl0c2VudCA9 IHBnc3RhdF9wcmVwX3RhYmxlc3BhY2VfcGVuZGluZyh0YWJsZXNwYWNlX29pZCk7CisJCWlmICh0 c2VudCkKKwkJeworCQkJdHNlbnQtPnRlbXBfYnl0ZXMgKz0gZmlsZXNpemU7CisJCQl0c2VudC0+ dGVtcF9maWxlcysrOworCQl9CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvcGdzdGF0X3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfcmVsYXRpb24uYwppbmRleCBiYzhjNDNiOTZhYS4uMTZiZmEyODVmODMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9yZWxhdGlvbi5jCkBAIC0yMCw2 ICsyMCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlX3JtZ3IuaCIKICNpbmNsdWRlICJh Y2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNhdGFsb2cvY2F0YWxvZy5oIgorI2luY2x1ZGUgIm1p c2NhZG1pbi5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRpbHMv cGdzdGF0X2ludGVybmFsLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCkBAIC0xNDIsNiArMTQz LDcgQEAgcGdzdGF0X2Fzc29jX3JlbGF0aW9uKFJlbGF0aW9uIHJlbCkKIAogCS8qIG1hcmsgdGhp cyByZWxhdGlvbiBhcyB0aGUgb3duZXIgKi8KIAlyZWwtPnBnc3RhdF9pbmZvLT5yZWxhdGlvbiA9 IHJlbDsKKwlyZWwtPnBnc3RhdF9pbmZvLT5yZWx0YWJsZXNwYWNlID0gcmVsLT5yZF9sb2NhdG9y LnNwY09pZDsKIH0KIAogLyoKQEAgLTg5Nyw2ICs4OTksMjIgQEAgcGdzdGF0X3JlbGF0aW9uX2Zs dXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCkKIAlkYmVudHJ5 LT5ibG9ja3NfZmV0Y2hlZCArPSBsc3RhdHMtPmNvdW50cy5ibG9ja3NfZmV0Y2hlZDsKIAlkYmVu dHJ5LT5ibG9ja3NfaGl0ICs9IGxzdGF0cy0+Y291bnRzLmJsb2Nrc19oaXQ7CiAKKwkvKiBUaGUg ZW50cnkgd2FzIHN1Y2Nlc3NmdWxseSBmbHVzaGVkLCBhZGQgdGhlIHNhbWUgdG8gdGFibGVzcGFj ZSBzdGF0cyAqLworCXsKKwkJT2lkIHRzaWQgPSAobHN0YXRzLT5yZWx0YWJsZXNwYWNlID09IElu dmFsaWRPaWQpID8gTXlEYXRhYmFzZVRhYmxlU3BhY2UgOiBsc3RhdHMtPnJlbHRhYmxlc3BhY2U7 CisKKwkJaWYgKE9pZElzVmFsaWQodHNpZCkpCisJCXsKKwkJCVBnU3RhdF9TdGF0VGFic3BhY2VF bnRyeSAqdHNlbnRyeSA9IHBnc3RhdF9wcmVwX3RhYmxlc3BhY2VfcGVuZGluZyh0c2lkKTsKKwor CQkJaWYgKHRzZW50cnkpCisJCQl7CisJCQkJdHNlbnRyeS0+YmxvY2tzX2ZldGNoZWQgKz0gbHN0 YXRzLT5jb3VudHMuYmxvY2tzX2ZldGNoZWQ7CisJCQkJdHNlbnRyeS0+YmxvY2tzX2hpdCArPSBs c3RhdHMtPmNvdW50cy5ibG9ja3NfaGl0OworCQkJfQorCQl9CisJfQorCiAJcmV0dXJuIHRydWU7 CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90YWJs ZXNwYWNlLmMgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfdGFibGVzcGFjZS5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lODVmZmY3NTY5YgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90YWJsZXNw YWNlLmMKQEAgLTAsMCArMSw5OSBAQAorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnc3Rh dF90YWJsZXNwYWNlLmMKKyAqCSAgSW1wbGVtZW50YXRpb24gb2YgdGFibGVzcGFjZSBzdGF0aXN0 aWNzLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAwMS0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF90YWJsZXNwYWNlLmMKKyAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJ1dGlscy9wZ3N0YXRfaW50 ZXJuYWwuaCIKKyNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKKworCisvKgorICogUmVtb3Zl IGVudHJ5IGZvciB0aGUgdGFibGVzcGFjZSBiZWluZyBkcm9wcGVkLgorICovCit2b2lkCitwZ3N0 YXRfZHJvcF90YWJsZXNwYWNlKE9pZCB0YWJsZXNwYWNlaWQpCit7CisJcGdzdGF0X2Ryb3BfdHJh bnNhY3Rpb25hbChQR1NUQVRfS0lORF9UQUJMRVNQQUNFLCBJbnZhbGlkT2lkLCB0YWJsZXNwYWNl aWQpOworfQorCisvKgorICogRmV0Y2ggdGFibGVzcGFjZSBzdGF0aXN0aWNzLgorICovCitQZ1N0 YXRfU3RhdFRhYnNwYWNlRW50cnkgKgorcGdzdGF0X2ZldGNoX3N0YXRfdGFic3BhY2VlbnRyeShP aWQgdGFibGVzcGFjZWlkKQoreworCXJldHVybiAoUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5ICop CisJCXBnc3RhdF9mZXRjaF9lbnRyeShQR1NUQVRfS0lORF9UQUJMRVNQQUNFLCBJbnZhbGlkT2lk LCB0YWJsZXNwYWNlaWQpOworfQorCisvKgorICogRmx1c2ggb3V0IHBlbmRpbmcgc3RhdHMgZm9y IHRoZSBlbnRyeS4KKyAqLworYm9vbAorcGdzdGF0X3RhYmxlc3BhY2VfZmx1c2hfY2IoUGdTdGF0 X0VudHJ5UmVmICplbnRyeV9yZWYsIGJvb2wgbm93YWl0KQoreworCVBnU3RhdFNoYXJlZF9UYWJs ZXNwYWNlICpzaGFyZWRlbnQ7CisJUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5ICpwZW5kaW5nZW50 OworCisJcGVuZGluZ2VudCA9IChQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKikgZW50cnlfcmVm LT5wZW5kaW5nOworCXNoYXJlZGVudCA9IChQZ1N0YXRTaGFyZWRfVGFibGVzcGFjZSAqKSBlbnRy eV9yZWYtPnNoYXJlZF9zdGF0czsKKworCWlmICghcGdzdGF0X2xvY2tfZW50cnkoZW50cnlfcmVm LCBub3dhaXQpKQorCQlyZXR1cm4gZmFsc2U7CisKKyNkZWZpbmUgUEdTVEFUX0FDQ1VNX1RBQlNQ QUNFQ09VTlQoaXRlbSkJCVwKKwkoc2hhcmVkZW50KS0+c3RhdHMuaXRlbSArPSAocGVuZGluZ2Vu dCktPml0ZW0KKworCVBHU1RBVF9BQ0NVTV9UQUJTUEFDRUNPVU5UKGJsb2Nrc19mZXRjaGVkKTsK KwlQR1NUQVRfQUNDVU1fVEFCU1BBQ0VDT1VOVChibG9ja3NfaGl0KTsKKwlQR1NUQVRfQUNDVU1f VEFCU1BBQ0VDT1VOVChibGtfcmVhZF90aW1lKTsKKwlQR1NUQVRfQUNDVU1fVEFCU1BBQ0VDT1VO VChibGtfd3JpdGVfdGltZSk7CisJUEdTVEFUX0FDQ1VNX1RBQlNQQUNFQ09VTlQodGVtcF9maWxl cyk7CisJUEdTVEFUX0FDQ1VNX1RBQlNQQUNFQ09VTlQodGVtcF9ieXRlcyk7CisKKyN1bmRlZiBQ R1NUQVRfQUNDVU1fVEFCU1BBQ0VDT1VOVAorCisJcGdzdGF0X3VubG9ja19lbnRyeShlbnRyeV9y ZWYpOworCisJLyogQ2xlYXIgcGVuZGluZyBzdGF0cyBzaW5jZSB0aGV5IGhhdmUgYmVlbiBmbHVz aGVkICovCisJbWVtc2V0KHBlbmRpbmdlbnQsIDAsIHNpemVvZigqcGVuZGluZ2VudCkpOworCisJ cmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBSZXNldCBzdGF0cyByZXNldCB0aW1lc3RhbXAuCisg Ki8KK3ZvaWQKK3Bnc3RhdF90YWJsZXNwYWNlX3Jlc2V0X3RpbWVzdGFtcF9jYihQZ1N0YXRTaGFy ZWRfQ29tbW9uICpoZWFkZXIsIFRpbWVzdGFtcFR6IHRzKQoreworCSgoUGdTdGF0U2hhcmVkX1Rh Ymxlc3BhY2UgKikgaGVhZGVyKS0+c3RhdHMuc3RhdF9yZXNldF90aW1lc3RhbXAgPSB0czsKK30K KworLyoKKyAqIFByZXBhcmUgZm9yIHJlcG9ydGluZyB0YWJsZXNwYWNlIHN0YXRzLgorICovCitQ Z1N0YXRfU3RhdFRhYnNwYWNlRW50cnkgKgorcGdzdGF0X3ByZXBfdGFibGVzcGFjZV9wZW5kaW5n KE9pZCB0YWJsZXNwYWNlaWQpCit7CisJUGdTdGF0X0VudHJ5UmVmICplbnRyeV9yZWY7CisKKwkv KgorCSAqIElmIHN0YXRzIGNvbGxlY3Rpb24gaXMgZGlzYWJsZWQsIHdlIGRvbid0IGhhdmUgYW55 d2hlcmUgdG8gcHV0IHRoZSBjb3VudGVycy4KKwkgKi8KKwlpZiAoIXBnc3RhdF90cmFja19jb3Vu dHMpCisJCXJldHVybiBOVUxMOworCisJZW50cnlfcmVmID0gcGdzdGF0X3ByZXBfcGVuZGluZ19l bnRyeShQR1NUQVRfS0lORF9UQUJMRVNQQUNFLAorCQkJCQkJCQkJCSAgSW52YWxpZE9pZCwgdGFi bGVzcGFjZWlkLCBOVUxMKTsKKworCXJldHVybiAoUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5ICop IGVudHJ5X3JlZi0+cGVuZGluZzsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fk dC9wZ3N0YXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Bnc3RhdGZ1bmNzLmMKaW5k ZXggNWY5MDczMzU5OTAuLmI4YjM5NTc5YjE3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvcGdzdGF0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdzdGF0ZnVu Y3MuYwpAQCAtMTkyOCw2ICsxOTI4LDcgQEAgcGdfc3RhdF9yZXNldF9zaGFyZWQoUEdfRlVOQ1RJ T05fQVJHUykKIAkJWExvZ1ByZWZldGNoUmVzZXRTdGF0cygpOwogCQlwZ3N0YXRfcmVzZXRfb2Zf a2luZChQR1NUQVRfS0lORF9TTFJVKTsKIAkJcGdzdGF0X3Jlc2V0X29mX2tpbmQoUEdTVEFUX0tJ TkRfV0FMKTsKKwkJcGdzdGF0X3Jlc2V0X29mX2tpbmQoUEdTVEFUX0tJTkRfVEFCTEVTUEFDRSk7 CiAKIAkJUEdfUkVUVVJOX1ZPSUQoKTsKIAl9CkBAIC0xOTQ4LDExICsxOTQ5LDEzIEBAIHBnX3N0 YXRfcmVzZXRfc2hhcmVkKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCXBnc3RhdF9yZXNldF9vZl9raW5k KFBHU1RBVF9LSU5EX1NMUlUpOwogCWVsc2UgaWYgKHN0cmNtcCh0YXJnZXQsICJ3YWwiKSA9PSAw KQogCQlwZ3N0YXRfcmVzZXRfb2Zfa2luZChQR1NUQVRfS0lORF9XQUwpOworCWVsc2UgaWYgKHN0 cmNtcCh0YXJnZXQsICJ0YWJsZXNwYWNlIikgPT0gMCkKKwkJcGdzdGF0X3Jlc2V0X29mX2tpbmQo UEdTVEFUX0tJTkRfVEFCTEVTUEFDRSk7CiAJZWxzZQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShl cnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coInVu cmVjb2duaXplZCByZXNldCB0YXJnZXQ6IFwiJXNcIiIsIHRhcmdldCksCi0JCQkJIGVycmhpbnQo IlRhcmdldCBtdXN0IGJlIFwiYXJjaGl2ZXJcIiwgXCJiZ3dyaXRlclwiLCBcImNoZWNrcG9pbnRl clwiLCBcImlvXCIsIFwicmVjb3ZlcnlfcHJlZmV0Y2hcIiwgXCJzbHJ1XCIsIG9yIFwid2FsXCIu IikpKTsKKwkJCQkgZXJyaGludCgiVGFyZ2V0IG11c3QgYmUgXCJhcmNoaXZlclwiLCBcImJnd3Jp dGVyXCIsIFwiY2hlY2twb2ludGVyXCIsIFwiaW9cIiwgXCJyZWNvdmVyeV9wcmVmZXRjaFwiLCBc InNscnVcIiwgXCJ3YWxcIiwgb3IgXCJ0YWJsZXNwYWNlXCIuIikpKTsKIAogCVBHX1JFVFVSTl9W T0lEKCk7CiB9CkBAIC0yMzA5LDYgKzIzMTIsODIgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9u X3N0YXRzKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0RBVFVNKEhlYXBUdXBsZUdldERh dHVtKGhlYXBfZm9ybV90dXBsZSh0dXBkZXNjLCB2YWx1ZXMsIG51bGxzKSkpOwogfQogCisvKgor ICogUmV0dXJucyB0YWJsZXNwYWNlIHN0YXRpc3RpY3MgZm9yIHRoZSBnaXZlbiB0YWJsZXNwYWNl LiBJZiB0aGUgdGFibGVzcGFjZQorICogc3RhdGlzdGljcyBpcyBub3QgYXZhaWxhYmxlLCByZXR1 cm4gYWxsLXplcm9zIHN0YXRzLgorICovCitEYXR1bQorcGdfc3RhdF9nZXRfdGFibGVzcGFjZShQ R19GVU5DVElPTl9BUkdTKQoreworI2RlZmluZSBQR19TVEFUX0dFVF9UQUJMRVNQQUNFX0NPTFMJ NworCU9pZAkJCXNwY29pZCA9IFBHX0dFVEFSR19PSUQoMCk7CisJVHVwbGVEZXNjCXR1cGRlc2M7 CisJRGF0dW0JCXZhbHVlc1tQR19TVEFUX0dFVF9UQUJMRVNQQUNFX0NPTFNdID0gezB9OworCWJv b2wJCW51bGxzW1BHX1NUQVRfR0VUX1RBQkxFU1BBQ0VfQ09MU10gPSB7MH07CisJUGdTdGF0X1N0 YXRUYWJzcGFjZUVudHJ5ICp0c2VudHJ5OworCVBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSBhbGx6 ZXJvOworCWludAkJCWkgPSAwOworCisJLyogR2V0IHRhYmxlc3BhY2Ugc3RhdHMgKi8KKwl0c2Vu dHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfdGFic3BhY2VlbnRyeShzcGNvaWQpOworCisJLyogSW5p dGlhbGlzZSBhdHRyaWJ1dGVzIGluZm9ybWF0aW9uIGluIHRoZSB0dXBsZSBkZXNjcmlwdG9yICov CisJdHVwZGVzYyA9IENyZWF0ZVRlbXBsYXRlVHVwbGVEZXNjKFBHX1NUQVRfR0VUX1RBQkxFU1BB Q0VfQ09MUyk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSAxLCAi YmxrX3JlYWRfdGltZSIsCisJCQkJCSAgIEZMT0FUOE9JRCwgLTEsIDApOworCVR1cGxlRGVzY0lu aXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgMiwgImJsa193cml0ZV90aW1lIiwKKwkJCQkJ ICAgRkxPQVQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRy TnVtYmVyKSAzLCAiYmxvY2tzX2ZldGNoZWQiLAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJ VHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2MsIChBdHRyTnVtYmVyKSA0LCAiYmxvY2tzX2hpdCIs CisJCQkJCSAgIElOVDhPSUQsIC0xLCAwKTsKKwlUdXBsZURlc2NJbml0RW50cnkodHVwZGVzYywg KEF0dHJOdW1iZXIpIDUsICJ0ZW1wX2ZpbGVzIiwKKwkJCQkJICAgSU5UOE9JRCwgLTEsIDApOwor CVR1cGxlRGVzY0luaXRFbnRyeSh0dXBkZXNjLCAoQXR0ck51bWJlcikgNiwgInRlbXBfYnl0ZXMi LAorCQkJCQkgICBJTlQ4T0lELCAtMSwgMCk7CisJVHVwbGVEZXNjSW5pdEVudHJ5KHR1cGRlc2Ms IChBdHRyTnVtYmVyKSA3LCAic3RhdHNfcmVzZXQiLAorCQkJCQkgICBUSU1FU1RBTVBUWk9JRCwg LTEsIDApOworCisJVHVwbGVEZXNjRmluYWxpemUodHVwZGVzYyk7CisJdHVwZGVzYyA9IEJsZXNz VHVwbGVEZXNjKHR1cGRlc2MpOworCisJaWYgKCF0c2VudHJ5KQorCXsKKwkJLyogSWYgdGhlIHRh Ymxlc3BhY2UgaXMgbm90IGZvdW5kLCBpbml0aWFsaXNlIGl0cyBzdGF0cyAqLworCQltZW1zZXQo JmFsbHplcm8sIDAsIHNpemVvZihQZ1N0YXRfU3RhdFRhYnNwYWNlRW50cnkpKTsKKwkJdHNlbnRy eSA9ICZhbGx6ZXJvOworCX0KKworCS8qIGJsa19yZWFkX3RpbWUgKi8KKwl2YWx1ZXNbaSsrXSA9 IEZsb2F0OEdldERhdHVtKHBnX3N0YXRfdXNfdG9fbXModHNlbnRyeS0+YmxrX3JlYWRfdGltZSkp OworCisJLyogYmxrX3dyaXRlX3RpbWUgKi8KKwl2YWx1ZXNbaSsrXSA9IEZsb2F0OEdldERhdHVt KHBnX3N0YXRfdXNfdG9fbXModHNlbnRyeS0+YmxrX3dyaXRlX3RpbWUpKTsKKworCS8qIGJsb2Nr c19mZXRjaGVkICovCisJdmFsdWVzW2krK10gPSBJbnQ2NEdldERhdHVtKHRzZW50cnktPmJsb2Nr c19mZXRjaGVkKTsKKworCS8qIGJsb2Nrc19oaXQgKi8KKwl2YWx1ZXNbaSsrXSA9IEludDY0R2V0 RGF0dW0odHNlbnRyeS0+YmxvY2tzX2hpdCk7CisKKwkvKiB0ZW1wX2ZpbGVzICovCisJdmFsdWVz W2krK10gPSBJbnQ2NEdldERhdHVtKHRzZW50cnktPnRlbXBfZmlsZXMpOworCisJLyogdGVtcF9i eXRlcyAqLworCXZhbHVlc1tpKytdID0gSW50NjRHZXREYXR1bSh0c2VudHJ5LT50ZW1wX2J5dGVz KTsKKworCS8qIHN0YXRzX3Jlc2V0ICovCisJaWYgKHRzZW50cnktPnN0YXRfcmVzZXRfdGltZXN0 YW1wID09IDApCisJCW51bGxzW2ldID0gdHJ1ZTsKKwllbHNlCisJCXZhbHVlc1tpXSA9IFRpbWVz dGFtcFR6R2V0RGF0dW0odHNlbnRyeS0+c3RhdF9yZXNldF90aW1lc3RhbXApOworCisJQXNzZXJ0 KGkgKyAxID09IFBHX1NUQVRfR0VUX1RBQkxFU1BBQ0VfQ09MUyk7CisKKwkvKiBSZXR1cm5zIHRo ZSByZWNvcmQgYXMgRGF0dW0gKi8KKwlQR19SRVRVUk5fREFUVU0oSGVhcFR1cGxlR2V0RGF0dW0o aGVhcF9mb3JtX3R1cGxlKHR1cGRlc2MsIHZhbHVlcywgbnVsbHMpKSk7Cit9CisKIC8qCiAgKiBD aGVja3MgZm9yIHByZXNlbmNlIG9mIHN0YXRzIGZvciBvYmplY3Qgd2l0aCBwcm92aWRlZCBraW5k LCBkYXRhYmFzZSBvaWQsCiAgKiBvYmplY3Qgb2lkLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9jYXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaApp bmRleCA0MjA4NTAyOTNmOC4uMzU5YzE0NTNmNDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nh dGFsb2cvY2F0dmVyc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5o CkBAIC01Nyw2ICs1Nyw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVmaW5l IENBVEFMT0dfVkVSU0lPTl9OTwkyMDI2MDMyMDEKKyNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05P CTIwMjYwMzIwMgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDg0ZTdhZGRl MGU1Li5iOGE2MGI5ZjMwYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC02MDg4LDYgKzYw ODgsMTQgQEAKICAgcHJvYXJnbmFtZXMgPT4gJ3tuYW1lLGJsa3NfemVyb2VkLGJsa3NfaGl0LGJs a3NfcmVhZCxibGtzX3dyaXR0ZW4sYmxrc19leGlzdHMsZmx1c2hlcyx0cnVuY2F0ZXMsc3RhdHNf cmVzZXR9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF9zbHJ1JyB9LAogCit7IG9pZCA9PiAn ODQ1OScsIGRlc2NyID0+ICdzdGF0aXN0aWNzOiB0YWJsZXNwYWNlIHN0YXRpc3RpY3MnLAorICBw cm9uYW1lID0+ICdwZ19zdGF0X2dldF90YWJsZXNwYWNlJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAor ICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVz ID0+ICdvaWQnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxmbG9hdDgsZmxvYXQ4LGludDgs aW50OCxpbnQ4LGludDgsdGltZXN0YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxv LG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3t0YWJsZXNwYWNlaWQsYmxrX3JlYWRfdGlt ZSxibGtfd3JpdGVfdGltZSxibG9ja3NfZmV0Y2hlZCxibG9ja3NfaGl0LHRlbXBfZmlsZXMsdGVt cF9ieXRlcyxzdGF0c19yZXNldH0nLAorICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3RhYmxlc3Bh Y2UnIH0sCisKIHsgb2lkID0+ICcyOTc4JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IG51bWJlciBv ZiBmdW5jdGlvbiBjYWxscycsCiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2Z1bmN0aW9uX2Nh bGxzJywgcHJvdm9sYXRpbGUgPT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5 cGUgPT4gJ2ludDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3Bnc3RhdC5oIGIvc3JjL2luY2x1ZGUvcGdzdGF0LmgKaW5kZXggMjE2YjkzNDkyYmEuLmQ1 MWVhMjA4ZGRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wZ3N0YXQuaAorKysgYi9zcmMvaW5j bHVkZS9wZ3N0YXQuaApAQCAtMTgwLDYgKzE4MCw3IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9U YWJsZVN0YXR1cwogewogCU9pZAkJCWlkOwkJCQkvKiB0YWJsZSdzIE9JRCAqLwogCWJvb2wJCXNo YXJlZDsJCQkvKiBpcyBpdCBhIHNoYXJlZCBjYXRhbG9nPyAqLworCU9pZAkJCXJlbHRhYmxlc3Bh Y2U7CS8qIHRhYmxlc3BhY2UgT0lEICovCiAJc3RydWN0IFBnU3RhdF9UYWJsZVhhY3RTdGF0dXMg KnRyYW5zOwkvKiBsb3dlc3Qgc3VieGFjdCdzIGNvdW50cyAqLwogCVBnU3RhdF9UYWJsZUNvdW50 cyBjb3VudHM7CS8qIGV2ZW50IGNvdW50cyB0byBiZSBzZW50ICovCiAJUmVsYXRpb24JcmVsYXRp b247CQkvKiByZWwgdGhhdCBpcyB1c2luZyB0aGlzIGVudHJ5ICovCkBAIC0zODMsNiArMzg0LDE4 IEBAIHR5cGVkZWYgc3RydWN0IFBnU3RhdF9TdGF0REJFbnRyeQogCVRpbWVzdGFtcFR6IHN0YXRf cmVzZXRfdGltZXN0YW1wOwogfSBQZ1N0YXRfU3RhdERCRW50cnk7CiAKK3R5cGVkZWYgc3RydWN0 IFBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeQoreworCVBnU3RhdF9Db3VudGVyIGJsa19yZWFkX3Rp bWU7CS8qIHRpbWVzIGluIG1pY3Jvc2Vjb25kcyAqLworCVBnU3RhdF9Db3VudGVyIGJsa193cml0 ZV90aW1lOworCVBnU3RhdF9Db3VudGVyIGJsb2Nrc19mZXRjaGVkOworCVBnU3RhdF9Db3VudGVy IGJsb2Nrc19oaXQ7CisJUGdTdGF0X0NvdW50ZXIgdGVtcF9maWxlczsKKwlQZ1N0YXRfQ291bnRl ciB0ZW1wX2J5dGVzOworCisJVGltZXN0YW1wVHogc3RhdF9yZXNldF90aW1lc3RhbXA7Cit9IFBn U3RhdF9TdGF0VGFic3BhY2VFbnRyeTsKKwogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0X1N0YXRGdW5j RW50cnkKIHsKIAlQZ1N0YXRfQ291bnRlciBudW1jYWxsczsKQEAgLTc0Myw2ICs3NTYsMTUgQEAg ZXh0ZXJuIFBnU3RhdF9TdGF0VGFiRW50cnkgKnBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5X2V4 dChib29sIHNoYXJlZCwKIGV4dGVybiBQZ1N0YXRfVGFibGVTdGF0dXMgKmZpbmRfdGFic3RhdF9l bnRyeShPaWQgcmVsX2lkKTsKIAogCisvKgorICogRnVuY3Rpb25zIGluIHBnc3RhdF90YWJsZXNw YWNlLmMKKyAqLworCitleHRlcm4gdm9pZCBwZ3N0YXRfZHJvcF90YWJsZXNwYWNlKE9pZCB0YWJs ZXNwYWNlaWQpOworZXh0ZXJuIFBnU3RhdF9TdGF0VGFic3BhY2VFbnRyeSAqcGdzdGF0X2ZldGNo X3N0YXRfdGFic3BhY2VlbnRyeShPaWQgdGFibGVzcGFjZWlkKTsKK2V4dGVybiBQZ1N0YXRfU3Rh dFRhYnNwYWNlRW50cnkgKnBnc3RhdF9wcmVwX3RhYmxlc3BhY2VfcGVuZGluZyhPaWQgdGFibGVz cGFjZWlkKTsKKworCiAvKgogICogRnVuY3Rpb25zIGluIHBnc3RhdF9yZXBsc2xvdC5jCiAgKi8K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmggYi9zcmMvaW5j bHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCmluZGV4IGRkZDA2MzA0ZTk3Li5hMmM1MDFlZGYw MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaAorKysgYi9z cmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCkBAIC0zMjMsNyArMzIzLDcgQEAgZXh0 ZXJuIHZvaWQgcGdzdGF0X2NsZWFyX2JhY2tlbmRfYWN0aXZpdHlfc25hcHNob3Qodm9pZCk7CiBl eHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KEJhY2tlbmRTdGF0ZSBzdGF0ZSwgY29u c3QgY2hhciAqY21kX3N0cik7CiBleHRlcm4gdm9pZCBwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKGlu dDY0IHF1ZXJ5X2lkLCBib29sIGZvcmNlKTsKIGV4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRfcGxh bl9pZChpbnQ2NCBwbGFuX2lkLCBib29sIGZvcmNlKTsKLWV4dGVybiB2b2lkIHBnc3RhdF9yZXBv cnRfdGVtcGZpbGUoc2l6ZV90IGZpbGVzaXplKTsKK2V4dGVybiB2b2lkIHBnc3RhdF9yZXBvcnRf dGVtcGZpbGUoc2l6ZV90IGZpbGVzaXplLCBjb25zdCBjaGFyICpwYXRoKTsKIGV4dGVybiB2b2lk IHBnc3RhdF9yZXBvcnRfYXBwbmFtZShjb25zdCBjaGFyICphcHBuYW1lKTsKIGV4dGVybiB2b2lk IHBnc3RhdF9yZXBvcnRfeGFjdF90aW1lc3RhbXAoVGltZXN0YW1wVHogdHN0YW1wKTsKIGV4dGVy biBjb25zdCBjaGFyICpwZ3N0YXRfZ2V0X2JhY2tlbmRfY3VycmVudF9hY3Rpdml0eShpbnQgcGlk LCBib29sIGNoZWNrVXNlcik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9wZ3N0YXRf aW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9pbnRlcm5hbC5oCmluZGV4IDli OGZiYWUwMGVkLi5mZjBhZDRmZGE1NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcGdz dGF0X2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcGdzdGF0X2ludGVybmFsLmgK QEAgLTQ5NCw2ICs0OTQsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX0RhdGFiYXNl CiAJUGdTdGF0X1N0YXREQkVudHJ5IHN0YXRzOwogfSBQZ1N0YXRTaGFyZWRfRGF0YWJhc2U7CiAK K3R5cGVkZWYgc3RydWN0IFBnU3RhdFNoYXJlZF9UYWJsZXNwYWNlCit7CisJUGdTdGF0U2hhcmVk X0NvbW1vbiBoZWFkZXI7CisJUGdTdGF0X1N0YXRUYWJzcGFjZUVudHJ5IHN0YXRzOworfSBQZ1N0 YXRTaGFyZWRfVGFibGVzcGFjZTsKKwogdHlwZWRlZiBzdHJ1Y3QgUGdTdGF0U2hhcmVkX1JlbGF0 aW9uCiB7CiAJUGdTdGF0U2hhcmVkX0NvbW1vbiBoZWFkZXI7CkBAIC03MzEsNiArNzM3LDggQEAg ZXh0ZXJuIFBnU3RhdF9TdGF0REJFbnRyeSAqcGdzdGF0X3ByZXBfZGF0YWJhc2VfcGVuZGluZyhP aWQgZGJvaWQpOwogZXh0ZXJuIHZvaWQgcGdzdGF0X3Jlc2V0X2RhdGFiYXNlX3RpbWVzdGFtcChP aWQgZGJvaWQsIFRpbWVzdGFtcFR6IHRzKTsKIGV4dGVybiBib29sIHBnc3RhdF9kYXRhYmFzZV9m bHVzaF9jYihQZ1N0YXRfRW50cnlSZWYgKmVudHJ5X3JlZiwgYm9vbCBub3dhaXQpOwogZXh0ZXJu IHZvaWQgcGdzdGF0X2RhdGFiYXNlX3Jlc2V0X3RpbWVzdGFtcF9jYihQZ1N0YXRTaGFyZWRfQ29t bW9uICpoZWFkZXIsIFRpbWVzdGFtcFR6IHRzKTsKK2V4dGVybiBib29sIHBnc3RhdF90YWJsZXNw YWNlX2ZsdXNoX2NiKFBnU3RhdF9FbnRyeVJlZiAqZW50cnlfcmVmLCBib29sIG5vd2FpdCk7Citl eHRlcm4gdm9pZCBwZ3N0YXRfdGFibGVzcGFjZV9yZXNldF90aW1lc3RhbXBfY2IoUGdTdGF0U2hh cmVkX0NvbW1vbiAqaGVhZGVyLCBUaW1lc3RhbXBUeiB0cyk7CiAKIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3V0aWxzL3Bnc3RhdF9raW5kLmggYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0 YXRfa2luZC5oCmluZGV4IGMzMGI2MjM1NjIzLi5hMjFkNmMzYjkyNSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvdXRpbHMvcGdzdGF0X2tpbmQuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wZ3N0 YXRfa2luZC5oCkBAIC0zOCw5ICszOCwxMCBAQAogI2RlZmluZSBQR1NUQVRfS0lORF9JTwkxMAog I2RlZmluZSBQR1NUQVRfS0lORF9TTFJVCTExCiAjZGVmaW5lIFBHU1RBVF9LSU5EX1dBTAkxMgor I2RlZmluZSBQR1NUQVRfS0lORF9UQUJMRVNQQUNFCTEzCiAKICNkZWZpbmUgUEdTVEFUX0tJTkRf QlVJTFRJTl9NSU4gUEdTVEFUX0tJTkRfREFUQUJBU0UKLSNkZWZpbmUgUEdTVEFUX0tJTkRfQlVJ TFRJTl9NQVggUEdTVEFUX0tJTkRfV0FMCisjZGVmaW5lIFBHU1RBVF9LSU5EX0JVSUxUSU5fTUFY IFBHU1RBVF9LSU5EX1RBQkxFU1BBQ0UKICNkZWZpbmUgUEdTVEFUX0tJTkRfQlVJTFRJTl9TSVpF IChQR1NUQVRfS0lORF9CVUlMVElOX01BWCArIDEpCiAKIC8qIEN1c3RvbSBzdGF0cyBraW5kcyAq LwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAzMmJlYTU4ZGIyYy4uNzJkYTJh NzdkN2QgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0yMzAxLDYgKzIzMDEs MTcgQEAgcGdfc3RhdF9zeXNfdGFibGVzfCBTRUxFQ1QgcmVsaWQsCiAgICAgc3RhdHNfcmVzZXQK ICAgIEZST00gcGdfc3RhdF9hbGxfdGFibGVzCiAgIFdIRVJFICgoc2NoZW1hbmFtZSA9IEFOWSAo QVJSQVlbJ3BnX2NhdGFsb2cnOjpuYW1lLCAnaW5mb3JtYXRpb25fc2NoZW1hJzo6bmFtZV0pKSBP UiAoc2NoZW1hbmFtZSB+ICdecGdfdG9hc3QnOjp0ZXh0KSk7CitwZ19zdGF0X3RhYmxlc3BhY2V8 IFNFTEVDVCB0Lm9pZCBBUyB0YWJsZXNwYWNlX2lkLAorICAgIHQuc3BjbmFtZSBBUyB0YWJsZXNw YWNlX25hbWUsCisgICAgcy5ibGtfcmVhZF90aW1lLAorICAgIHMuYmxrX3dyaXRlX3RpbWUsCisg ICAgcy5ibG9ja3NfZmV0Y2hlZCwKKyAgICBzLmJsb2Nrc19oaXQsCisgICAgcy50ZW1wX2ZpbGVz LAorICAgIHMudGVtcF9ieXRlcywKKyAgICBzLnN0YXRzX3Jlc2V0CisgICBGUk9NIChwZ190YWJs ZXNwYWNlIHQKKyAgICAgTEVGVCBKT0lOIExBVEVSQUwgcGdfc3RhdF9nZXRfdGFibGVzcGFjZSh0 Lm9pZCkgcyhibGtfcmVhZF90aW1lLCBibGtfd3JpdGVfdGltZSwgYmxvY2tzX2ZldGNoZWQsIGJs b2Nrc19oaXQsIHRlbXBfZmlsZXMsIHRlbXBfYnl0ZXMsIHN0YXRzX3Jlc2V0KSBPTiAodHJ1ZSkp OwogcGdfc3RhdF91c2VyX2Z1bmN0aW9uc3wgU0VMRUNUIHAub2lkIEFTIGZ1bmNpZCwKICAgICBu Lm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKICAgICBwLnByb25hbWUgQVMgZnVuY25hbWUsCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N0YXRzLm91dCBiL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3RhdHMub3V0CmluZGV4IGI5OTQ2MmJmOTQ2Li40ZDJkYjMxMmU0NyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdGF0cy5vdXQKQEAgLTExMzAsNyArMTEzMCw3IEBAIFNF TEVDVCBzdGF0c19yZXNldCA+IDond2FsX3Jlc2V0X3RzJzo6dGltZXN0YW1wdHogRlJPTSBwZ19z dGF0X3dhbDsKIC0tIFRlc3QgZXJyb3IgY2FzZSBmb3IgcmVzZXRfc2hhcmVkIHdpdGggdW5rbm93 biBzdGF0cyB0eXBlCiBTRUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ3Vua25vd24nKTsKIEVS Uk9SOiAgdW5yZWNvZ25pemVkIHJlc2V0IHRhcmdldDogInVua25vd24iCi1ISU5UOiAgVGFyZ2V0 IG11c3QgYmUgImFyY2hpdmVyIiwgImJnd3JpdGVyIiwgImNoZWNrcG9pbnRlciIsICJpbyIsICJy ZWNvdmVyeV9wcmVmZXRjaCIsICJzbHJ1Iiwgb3IgIndhbCIuCitISU5UOiAgVGFyZ2V0IG11c3Qg YmUgImFyY2hpdmVyIiwgImJnd3JpdGVyIiwgImNoZWNrcG9pbnRlciIsICJpbyIsICJyZWNvdmVy eV9wcmVmZXRjaCIsICJzbHJ1IiwgIndhbCIsIG9yICJ0YWJsZXNwYWNlIi4KIC0tIFRlc3QgdGhh dCByZXNldCB3b3JrcyBmb3IgcGdfc3RhdF9kYXRhYmFzZSBhbmQgcGdfc3RhdF9kYXRhYmFzZV9j b25mbGljdHMKIC0tIFNpbmNlIHBnX3N0YXRfZGF0YWJhc2Ugc3RhdHNfcmVzZXQgc3RhcnRzIG91 dCBhcyBOVUxMLCByZXNldCBpdCBvbmNlIGZpcnN0IHNvIHRoYXQgd2UKIC0tIGhhdmUgYSBiYXNl bGluZSBmb3IgY29tcGFyaXNvbi4gVGhlIHNhbWUgZm9yIHBnX3N0YXRfZGF0YWJhc2VfY29uZmxp Y3RzIGFzIGl0IHNoYXJlcwpAQCAtMTk1OCw0ICsxOTU4LDg1IEBAIFNFTEVDVCAqIEZST00gY2hl Y2tfZXN0aW1hdGVkX3Jvd3MoJ1NFTEVDVCAqIEZST00gdGFibGVfZmlsbGZhY3RvcicpOwogKDEg cm93KQogCiBEUk9QIFRBQkxFIHRhYmxlX2ZpbGxmYWN0b3I7CistLSBUZXN0IHBnX3N0YXRfdGFi bGVzcGFjZQorU0VMRUNUIGNvdW50KCopID4gMCBGUk9NIHBnX3N0YXRfdGFibGVzcGFjZTsKKyA/ Y29sdW1uPyAKKy0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFTEVDVCB0YWJsZXNwYWNlX25h bWUgRlJPTSBwZ19zdGF0X3RhYmxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lIElOICgncGdf ZGVmYXVsdCcsICdwZ19nbG9iYWwnKSBPUkRFUiBCWSB0YWJsZXNwYWNlX25hbWU7CisgdGFibGVz cGFjZV9uYW1lIAorLS0tLS0tLS0tLS0tLS0tLS0KKyBwZ19kZWZhdWx0CisgcGdfZ2xvYmFsCiso MiByb3dzKQorCistLSBUZXN0IGJsb2NrIHN0YXRzIGluIHBnX3N0YXRfdGFibGVzcGFjZQorU0VU IHRyYWNrX2lvX3RpbWluZyA9IG9uOworQ1JFQVRFIFRBQkxFIHRlc3RfdGFibGVzcGFjZV9zdGF0 cyAoYSBpbnQpOworSU5TRVJUIElOVE8gdGVzdF90YWJsZXNwYWNlX3N0YXRzIFNFTEVDVCBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKTsKK1NFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFibGVzcGFj ZV9zdGF0czsKKyBjb3VudCAKKy0tLS0tLS0KKyAgIDEwMAorKDEgcm93KQorCitTRUxFQ1QgcGdf c3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAKKygxIHJvdykKKworU0VMRUNUIGJsb2Nrc19mZXRj aGVkID49IDAgQVMgaGFzX2Jsb2Nrc19mZXRjaGVkLCBibG9ja3NfaGl0ID49IDAgQVMgaGFzX2Js b2Nrc19oaXQsIGJsa19yZWFkX3RpbWUgPj0gMCBBUyBoYXNfYmxrX3JlYWRfdGltZSwgYmxrX3dy aXRlX3RpbWUgPj0gMCBBUyBoYXNfYmxrX3dyaXRlX3RpbWUgRlJPTSBwZ19zdGF0X3RhYmxlc3Bh Y2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2RlZmF1bHQnOworIGhhc19ibG9ja3NfZmV0 Y2hlZCB8IGhhc19ibG9ja3NfaGl0IHwgaGFzX2Jsa19yZWFkX3RpbWUgfCBoYXNfYmxrX3dyaXRl X3RpbWUgCistLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgICAgICAgfCB0ICAg ICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCitEUk9QIFRBQkxF IHRlc3RfdGFibGVzcGFjZV9zdGF0czsKKy0tIFRlc3QgdGVtcCBmaWxlIHN0YXRzIGluIHBnX3N0 YXRfdGFibGVzcGFjZQorLS0gVXNlIGEgc29ydCB0aGF0IGV4Y2VlZHMgd29ya19tZW0gdG8gZm9y Y2UgdGVtcCBmaWxlIHVzYWdlCitTRVQgd29ya19tZW0gPSAnNjRrQic7CitTRUxFQ1QgY291bnQo KikgRlJPTSAoU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMDApIEFTIHMgT1JE RVIgQlkgcyBERVNDKSBBUyBmb287CisgY291bnQgCistLS0tLS0tCisgMTAwMDAKKygxIHJvdykK KworUkVTRVQgd29ya19tZW07CitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7Cisg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAK KygxIHJvdykKKworLS0gV2UgZXhwZWN0IHRlbXAgZmlsZXMgdG8gYmUgaW4gcGdfZGVmYXVsdCBp ZiBub3Qgc3BlY2lmaWVkIG90aGVyd2lzZQorU0VMRUNUIHRlbXBfZmlsZXMgPiAwIEFTIGhhc190 ZW1wX2ZpbGVzLCB0ZW1wX2J5dGVzID4gMCBBUyBoYXNfdGVtcF9ieXRlcyBGUk9NIHBnX3N0YXRf dGFibGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdfZGVmYXVsdCc7CisgaGFzX3Rl bXBfZmlsZXMgfCBoYXNfdGVtcF9ieXRlcyAKKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLQorIHQgICAgICAgICAgICAgIHwgdAorKDEgcm93KQorCistLSBUZXN0IHJlc2V0IGZvciBw Z19zdGF0X3RhYmxlc3BhY2UKKy0tIEVuc3VyZSB3ZSBoYXZlIGEgdGltZXN0YW1wIHRvIGNvbXBh cmUKK1NFTEVDVCBwZ19zdGF0X3Jlc2V0X3NoYXJlZCgndGFibGVzcGFjZScpOworIHBnX3N0YXRf cmVzZXRfc2hhcmVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIAorKDEgcm93KQorCitTRUxF Q1Qgc3RhdHNfcmVzZXQgQVMgdHNfcmVzZXRfYmVmb3JlIEZST00gcGdfc3RhdF90YWJsZXNwYWNl IFdIRVJFIHRhYmxlc3BhY2VfbmFtZSA9ICdwZ19kZWZhdWx0JyBcZ3NldAorU0VMRUNUIHBnX3N0 YXRfcmVzZXRfc2hhcmVkKCd0YWJsZXNwYWNlJyk7CisgcGdfc3RhdF9yZXNldF9zaGFyZWQgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSByb3cpCisKK1NFTEVDVCBzdGF0c19yZXNldCA+ IDondHNfcmVzZXRfYmVmb3JlJzo6dGltZXN0YW1wdHogRlJPTSBwZ19zdGF0X3RhYmxlc3BhY2Ug V0hFUkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2RlZmF1bHQnOworID9jb2x1bW4/IAorLS0tLS0t LS0tLQorIHQKKygxIHJvdykKKwogLS0gRW5kIG9mIFN0YXRzIFRlc3QKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N0YXRz LnNxbAppbmRleCA5NDEyMjJjZjBiZS4uNTlkOTJjMDZmMmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3N0YXRzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdGF0cy5z cWwKQEAgLTk2NCw0ICs5NjQsNDAgQEAgU0VMRUNUICogRlJPTSBjaGVja19lc3RpbWF0ZWRfcm93 cygnU0VMRUNUICogRlJPTSB0YWJsZV9maWxsZmFjdG9yJyk7CiAKIERST1AgVEFCTEUgdGFibGVf ZmlsbGZhY3RvcjsKIAorLS0gVGVzdCBwZ19zdGF0X3RhYmxlc3BhY2UKK1NFTEVDVCBjb3VudCgq KSA+IDAgRlJPTSBwZ19zdGF0X3RhYmxlc3BhY2U7CisKK1NFTEVDVCB0YWJsZXNwYWNlX25hbWUg RlJPTSBwZ19zdGF0X3RhYmxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lIElOICgncGdfZGVm YXVsdCcsICdwZ19nbG9iYWwnKSBPUkRFUiBCWSB0YWJsZXNwYWNlX25hbWU7CisKKy0tIFRlc3Qg YmxvY2sgc3RhdHMgaW4gcGdfc3RhdF90YWJsZXNwYWNlCitTRVQgdHJhY2tfaW9fdGltaW5nID0g b247CitDUkVBVEUgVEFCTEUgdGVzdF90YWJsZXNwYWNlX3N0YXRzIChhIGludCk7CitJTlNFUlQg SU5UTyB0ZXN0X3RhYmxlc3BhY2Vfc3RhdHMgU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCAxMDAp OworU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJsZXNwYWNlX3N0YXRzOworCitTRUxFQ1Qg cGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CisKK1NFTEVDVCBibG9ja3NfZmV0Y2hlZCA+PSAw IEFTIGhhc19ibG9ja3NfZmV0Y2hlZCwgYmxvY2tzX2hpdCA+PSAwIEFTIGhhc19ibG9ja3NfaGl0 LCBibGtfcmVhZF90aW1lID49IDAgQVMgaGFzX2Jsa19yZWFkX3RpbWUsIGJsa193cml0ZV90aW1l ID49IDAgQVMgaGFzX2Jsa193cml0ZV90aW1lIEZST00gcGdfc3RhdF90YWJsZXNwYWNlIFdIRVJF IHRhYmxlc3BhY2VfbmFtZSA9ICdwZ19kZWZhdWx0JzsKKworRFJPUCBUQUJMRSB0ZXN0X3RhYmxl c3BhY2Vfc3RhdHM7CistLSBUZXN0IHRlbXAgZmlsZSBzdGF0cyBpbiBwZ19zdGF0X3RhYmxlc3Bh Y2UKKy0tIFVzZSBhIHNvcnQgdGhhdCBleGNlZWRzIHdvcmtfbWVtIHRvIGZvcmNlIHRlbXAgZmls ZSB1c2FnZQorU0VUIHdvcmtfbWVtID0gJzY0a0InOworU0VMRUNUIGNvdW50KCopIEZST00gKFNF TEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwKSBBUyBzIE9SREVSIEJZIHMgREVT QykgQVMgZm9vOworCitSRVNFVCB3b3JrX21lbTsKK1NFTEVDVCBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKKworLS0gV2UgZXhwZWN0IHRlbXAgZmlsZXMgdG8gYmUgaW4gcGdfZGVmYXVsdCBp ZiBub3Qgc3BlY2lmaWVkIG90aGVyd2lzZQorU0VMRUNUIHRlbXBfZmlsZXMgPiAwIEFTIGhhc190 ZW1wX2ZpbGVzLCB0ZW1wX2J5dGVzID4gMCBBUyBoYXNfdGVtcF9ieXRlcyBGUk9NIHBnX3N0YXRf dGFibGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdfZGVmYXVsdCc7CisKKy0tIFRl c3QgcmVzZXQgZm9yIHBnX3N0YXRfdGFibGVzcGFjZQorLS0gRW5zdXJlIHdlIGhhdmUgYSB0aW1l c3RhbXAgdG8gY29tcGFyZQorU0VMRUNUIHBnX3N0YXRfcmVzZXRfc2hhcmVkKCd0YWJsZXNwYWNl Jyk7CisKK1NFTEVDVCBzdGF0c19yZXNldCBBUyB0c19yZXNldF9iZWZvcmUgRlJPTSBwZ19zdGF0 X3RhYmxlc3BhY2UgV0hFUkUgdGFibGVzcGFjZV9uYW1lID0gJ3BnX2RlZmF1bHQnIFxnc2V0CitT RUxFQ1QgcGdfc3RhdF9yZXNldF9zaGFyZWQoJ3RhYmxlc3BhY2UnKTsKKworU0VMRUNUIHN0YXRz X3Jlc2V0ID4gOid0c19yZXNldF9iZWZvcmUnOjp0aW1lc3RhbXB0eiBGUk9NIHBnX3N0YXRfdGFi bGVzcGFjZSBXSEVSRSB0YWJsZXNwYWNlX25hbWUgPSAncGdfZGVmYXVsdCc7CisKIC0tIEVuZCBv ZiBTdGF0cyBUZXN0Ci0tIAoyLjUzLjAuMTAxOC5nMmJiMGU1MTI0My1nb29nCgo= --0000000000002c4592064dc88001--