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.94.2) (envelope-from ) id 1v2DWm-001Qzw-Ql for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Sep 2025 18:50:45 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v2DWk-005Aw5-S3 for pgsql-hackers@arkaria.postgresql.org; Fri, 26 Sep 2025 18:50:43 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v2DWk-005Avu-4V for pgsql-hackers@lists.postgresql.org; Fri, 26 Sep 2025 18:50:43 +0000 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v2DWi-0004t5-0E for pgsql-hackers@postgresql.org; Fri, 26 Sep 2025 18:50:41 +0000 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-62ecd3c21d3so4596753a12.0 for ; Fri, 26 Sep 2025 11:50:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pgguru-net.20230601.gappssmtp.com; s=20230601; t=1758912639; x=1759517439; 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=PtO8aR5Mve+MohmOxqzi552UqVwqdah8slWqkYi/kj0=; b=DC4ewatTr8H9N0K9ot9331C+IWbIxPDfiyAqtD0FDEuU2kuepCoVPshy2bRxY+SvkD 2hK5BaUTfYx454RTctCWwWkSfgGSZgPOVQRobT9Yjx2LKspXYD7KRU1X2h66AEZlfKAy d2tqiFZqC8JlOoW5E43D4Iys8F7CNCFa5SpTkoxMNNd54ulIYUVFi+kOTZOdhscm3gMk 3LO43VmtKKCTnqCOMLo67if6Pn4eT2joYCOu1aBrV2bI7LUR1esweGkmKDBAb+KwaYON GV4s27AivNCzHROqjM7opTpKpHl5VBQhwVOHoTpxPm5RRN84kqNxDoD/+9m5bAP70Cc7 680g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758912639; x=1759517439; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=PtO8aR5Mve+MohmOxqzi552UqVwqdah8slWqkYi/kj0=; b=NGWHxwWELvYNoRHDzRZqIHgN48xIYa1zM3FnleycTX60T3UnQSf6RLxc5IOhI5CsE3 cusd+L2YHl36t9tB3yv/34WJhntgSBA9Bu6uPlOuaeOGNkwKCA8MasOBasM3u4eQ+GZ1 YH7zfFGUkRUD+jlf0ReOJdSUwYXy8XY1wBdLogRc1d199slS+YwvSFYGi8MGNIUSBvZe 1a0x+jLi9GQEAUOtgWEcMruRaSFVP7nH/5FHtZKK1nmOuAfJD6RJ96lrTQELYhHyg1ab 2yAc48BL5TZYGkAiq5HMafQynB/158TRZf2hYoEJK4OGCrSnEnH581rCmf6PKfKYIFuj xRaQ== X-Forwarded-Encrypted: i=1; AJvYcCVOakgHTdpvVB8VO3n6teO6nDmF464M5wTRoQCgPFshniJ2S81gYlD/rFdp5Vwew/tKSBRT/CmO8f272sAw@postgresql.org X-Gm-Message-State: AOJu0Yyoydj+wZ3WCuHVws96ESmop0z4mExK5tDZcMlVrRxYRLDEjZgG QGrf7qCq0L6OjHZgU4Yifsj4RSSDVI039qmqVmrb6x8ZIMSvEVtNmQezcMQbBfCymE+wPOgVVQ+ yKTCmrynqcqoTGHdSk6wbs9cZLng4tcisBWRrJs4VOA== X-Gm-Gg: ASbGnctxJNZOrOVYzmL3xhA4KwUZczMAPkIzuxwrOpvcSfpjFZ3ve05/L5G0UWyODkO nI79VEFOQPdL0tRvDiKCpercJ9tTXueNrmiVRuXMOABNGoaqL5HcByTNxoBDHsl+gOq1ng46Fdp aAwOQdXAGJGNYIVGM7PQ56wA0EzCbmJayb80bQyOqSS+T16M6qGoVzV2byeCaJjh6vnF9PhJrDH LIpYso6zUayVV+JYQlsdDteAMkTSl+Wu+9J19leSA== X-Google-Smtp-Source: AGHT+IGdNFslBhdEw6bH31j047+xHH6Qnhc7+Kml1DJsM3OCX4WPjUWVyagHOets03GjyXGZ+Fed+2zenqf3F3uSOLg= X-Received: by 2002:a17:907:1c15:b0:b2d:d73:de59 with SMTP id a640c23a62f3a-b34b9f599a7mr905377666b.9.1758912638767; Fri, 26 Sep 2025 11:50:38 -0700 (PDT) MIME-Version: 1.0 References: <4D2047B0-E8D8-472B-B7E8-61206B1E6AFA@yandex-team.ru> <4096523.1758908779@sss.pgh.pa.us> In-Reply-To: <4096523.1758908779@sss.pgh.pa.us> From: David Christensen Date: Fri, 26 Sep 2025 13:50:27 -0500 X-Gm-Features: AS18NWAOhlJ2fPtHoYbBWSe_tJ2Q93GbFTVl60Zo5YUDKJ8rnloF10u79oDoo-U Message-ID: Subject: Re: [PATCH] GROUP BY ALL To: Tom Lane Cc: jian he , Andrey Borodin , Peter Eisentraut , pgsql-hackers , "David G. Johnston" , Jelte Fennema-Nio Content-Type: multipart/mixed; boundary="00000000000006d54c063fb8c3d5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000006d54c063fb8c3d5 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Sep 26, 2025 at 12:46=E2=80=AFPM Tom Lane wrote= : > Some random comments: [snip] Great feedback, thanks; attached is v4 which should address these comments. David --00000000000006d54c063fb8c3d5 Content-Type: application/octet-stream; name="v4-0001-Add-GROUP-BY-ALL.patch" Content-Disposition: attachment; filename="v4-0001-Add-GROUP-BY-ALL.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mg175ul10 RnJvbSA4NDJiYmE2NTFkNmZkMTg0NDAyYmNjNDA0YWFkNmE3MDljOTg4NjE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBDaHJpc3RlbnNlbiA8ZGF2aWQuY2hyaXN0ZW5zZW5A Y3J1bmNoeWRhdGEuY29tPgpEYXRlOiBNb24sIDExIE1hciAyMDI0IDEwOjM3OjA1IC0wNDAwClN1 YmplY3Q6IFtQQVRDSCB2NF0gQWRkIEdST1VQIEJZIEFMTAoKR1JPVVAgQlkgQUxMIGlzIGEgZm9y bSBvZiBHUk9VUCBCWSB3aGljaCBhZGRzIGFueSBUYXJnZXRFeHByIHRoYXQgZG9lcyBub3QKY29u dGFpbiBhbiBBZ2dyZWYgaW50byB0aGUgZ3JvdXBDbGF1c2Ugb2YgdGhlIHF1ZXJ5LCBlZmZlY3Rp dmVseSBtYWtpbmcgaXQKZXhhY3RseSBlcXVpdmFsZW50IHRvIHNwZWNpZnlpbmcgdGhvc2Ugc2Ft ZSBleHByZXNzaW9ucyBpbiBhbiBleHBsaWNpdCBHUk9VUCBCWSBsaXN0LgoKU2luY2UgdGhpcyBp cyBleGNsdXNpdmUgd2l0aCBhbnkgb3RoZXIgR1JPVVAgQlkgZm9ybSwgdGhpcyBpcyBmYWlybHkg c2ltcGxlIHRvCmFkZCBpbnRvIHRoZSBncmFtbWFyIGFuZCBoYW5kbGUgd2l0aG91dCBuZWVkaW5n IHRvIGdldCBpbnRvIGdyb3VwaW5nIHNldHMgb3IKb3RoZXIgbW9yZSBjb21wbGljYXRlZCBmb3Jt cy4KClRoaXMgZ3JlYXRseSBpbXByb3ZlcyBkYXRhIGV4cGxvcmF0aW9uIGluIHBhcnRpY3VsYXIs IGFzIHdlbGwgYXMgbWFraW5nIGl0IHNvCnlvdSBkb24ndCBuZWVkIHRvIHRyaXZpYWxseSB3cmFw IG1vcmUgY29tcGxpY2F0ZWQgcXVlcmllcyBpbiBhIHN1YnF1ZXJ5IG9yCnJlcHJvZHVjZSBsb25n LCBjb21wbGljYXRlZCBleHByZXNzaW9ucyBpbiB0aGUgbGl0ZXJhbCBHUk9VUCBCWS4KLS0tCiBz cmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICAgIHwgIDE2ICsrLQogc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2NsYXVzZS5jICAgICAgICB8ICA0MSArKysrKystCiBzcmMvYmFja2VuZC91 dGlscy9hZHQvcnVsZXV0aWxzLmMgICAgICAgIHwgICA1ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggICAgICAgICAgIHwgICAzICsKIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9j bGF1c2UuaCAgICAgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVn YXRlcy5vdXQgfCAxNDggKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2FnZ3JlZ2F0ZXMuc3FsICAgICAgfCAgNjIgKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2Vk LCAyNzggaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9wYXJzZXIvYW5hbHl6ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwppbmRl eCBiOTc2M2VhMTcxNC4uOTkxYTU5MTlhYjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNl ci9hbmFseXplLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtNDgsNiAr NDgsNyBAQAogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQuaCIKICNpbmNsdWRlICJwYXJz ZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKKyNpbmNsdWRl ICJyZXdyaXRlL3Jld3JpdGVNYW5pcC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVz LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIK QEAgLTE0NDQsOCArMTQ0NSwxMCBAQCB0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBz dGF0ZSwgU2VsZWN0U3RtdCAqc3RtdCkKIAkJCQkJCQkJCQkJJnFyeS0+dGFyZ2V0TGlzdCwKIAkJ CQkJCQkJCQkJcXJ5LT5zb3J0Q2xhdXNlLAogCQkJCQkJCQkJCQlFWFBSX0tJTkRfR1JPVVBfQlks Ci0JCQkJCQkJCQkJCWZhbHNlIC8qIGFsbG93IFNRTDkyIHJ1bGVzICovICk7CisJCQkJCQkJCQkJ CWZhbHNlIC8qIGFsbG93IFNRTDkyIHJ1bGVzICovLAorCQkJCQkJCQkJCQlzdG10LT5ncm91cEFs bCk7CiAJcXJ5LT5ncm91cERpc3RpbmN0ID0gc3RtdC0+Z3JvdXBEaXN0aW5jdDsKKwlxcnktPmdy b3VwQWxsID0gc3RtdC0+Z3JvdXBBbGw7CiAKIAlpZiAoc3RtdC0+ZGlzdGluY3RDbGF1c2UgPT0g TklMKQogCXsKQEAgLTI5MzQsNyArMjkzNyw4IEBAIHRyYW5zZm9ybVBMQXNzaWduU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFBMQXNzaWduU3RtdCAqc3RtdCkKIAkJCQkJCQkJCQkJJnFyeS0+dGFy Z2V0TGlzdCwKIAkJCQkJCQkJCQkJcXJ5LT5zb3J0Q2xhdXNlLAogCQkJCQkJCQkJCQlFWFBSX0tJ TkRfR1JPVVBfQlksCi0JCQkJCQkJCQkJCWZhbHNlIC8qIGFsbG93IFNRTDkyIHJ1bGVzICovICk7 CisJCQkJCQkJCQkJCWZhbHNlIC8qIGFsbG93IFNRTDkyIHJ1bGVzICovLAorCQkJCQkJCQkJCQlx cnktPmdyb3VwQWxsKTsKIAogCWlmIChzc3RtdC0+ZGlzdGluY3RDbGF1c2UgPT0gTklMKQogCXsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJz ZXIvZ3JhbS55CmluZGV4IDlmZDQ4YWNiMWY4Li4zZDk3Y2VkZGMxZSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBA IC0xMjAsNiArMTIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2VsZWN0TGltaXQKIHR5cGVkZWYgc3Ry dWN0IEdyb3VwQ2xhdXNlCiB7CiAJYm9vbAkJZGlzdGluY3Q7CisJYm9vbAkJYWxsOwogCUxpc3QJ ICAgKmxpc3Q7CiB9IEdyb3VwQ2xhdXNlOwogCkBAIC0xMjk5Myw2ICsxMjk5NCw3IEBAIHNpbXBs ZV9zZWxlY3Q6CiAJCQkJCW4tPndoZXJlQ2xhdXNlID0gJDY7CiAJCQkJCW4tPmdyb3VwQ2xhdXNl ID0gKCQ3KS0+bGlzdDsKIAkJCQkJbi0+Z3JvdXBEaXN0aW5jdCA9ICgkNyktPmRpc3RpbmN0Owor CQkJCQluLT5ncm91cEFsbCA9ICgkNyktPmFsbDsKIAkJCQkJbi0+aGF2aW5nQ2xhdXNlID0gJDg7 CiAJCQkJCW4tPndpbmRvd0NsYXVzZSA9ICQ5OwogCQkJCQkkJCA9IChOb2RlICopIG47CkBAIC0x MzAxMCw2ICsxMzAxMiw3IEBAIHNpbXBsZV9zZWxlY3Q6CiAJCQkJCW4tPndoZXJlQ2xhdXNlID0g JDY7CiAJCQkJCW4tPmdyb3VwQ2xhdXNlID0gKCQ3KS0+bGlzdDsKIAkJCQkJbi0+Z3JvdXBEaXN0 aW5jdCA9ICgkNyktPmRpc3RpbmN0OworCQkJCQluLT5ncm91cEFsbCA9ICgkNyktPmFsbDsKIAkJ CQkJbi0+aGF2aW5nQ2xhdXNlID0gJDg7CiAJCQkJCW4tPndpbmRvd0NsYXVzZSA9ICQ5OwogCQkJ CQkkJCA9IChOb2RlICopIG47CkBAIC0xMzUwMiwxMiArMTM1MDUsMjEgQEAgZmlyc3Rfb3JfbmV4 dDogRklSU1RfUAkJCQkJCQkJeyAkJCA9IDA7IH0KICAqIEdyb3VwaW5nU2V0IG5vZGUgb2Ygc29t ZSB0eXBlLgogICovCiBncm91cF9jbGF1c2U6Ci0JCQlHUk9VUF9QIEJZIHNldF9xdWFudGlmaWVy IGdyb3VwX2J5X2xpc3QKKwkJCUdST1VQX1AgQlkgQUxMCisJCQkJeworCQkJCQlHcm91cENsYXVz ZSAqbiA9IChHcm91cENsYXVzZSAqKSBwYWxsb2Moc2l6ZW9mKEdyb3VwQ2xhdXNlKSk7CisJCQkJ CW4tPmRpc3RpbmN0ID0gZmFsc2U7CisJCQkJCW4tPmxpc3QgPSBOSUw7CisJCQkJCW4tPmFsbCA9 IHRydWU7CisJCQkJCSQkID0gbjsKKwkJCQl9CisJCQl8IEdST1VQX1AgQlkgc2V0X3F1YW50aWZp ZXIgZ3JvdXBfYnlfbGlzdAogCQkJCXsKIAkJCQkJR3JvdXBDbGF1c2UgKm4gPSAoR3JvdXBDbGF1 c2UgKikgcGFsbG9jKHNpemVvZihHcm91cENsYXVzZSkpOwogCiAJCQkJCW4tPmRpc3RpbmN0ID0g JDMgPT0gU0VUX1FVQU5USUZJRVJfRElTVElOQ1Q7CiAJCQkJCW4tPmxpc3QgPSAkNDsKKwkJCQkJ bi0+YWxsID0gZmFsc2U7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IC8qRU1QVFkqLwpAQCAt MTM1MTYsNiArMTM1MjgsNyBAQCBncm91cF9jbGF1c2U6CiAKIAkJCQkJbi0+ZGlzdGluY3QgPSBm YWxzZTsKIAkJCQkJbi0+bGlzdCA9IE5JTDsKKwkJCQkJbi0+YWxsID0gZmFsc2U7CiAJCQkJCSQk ID0gbjsKIAkJCQl9CiAJCTsKQEAgLTE3NjE4LDYgKzE3NjMxLDcgQEAgUExwZ1NRTF9FeHByOiBv cHRfZGlzdGluY3RfY2xhdXNlIG9wdF90YXJnZXRfbGlzdAogCQkJCQluLT53aGVyZUNsYXVzZSA9 ICQ0OwogCQkJCQluLT5ncm91cENsYXVzZSA9ICgkNSktPmxpc3Q7CiAJCQkJCW4tPmdyb3VwRGlz dGluY3QgPSAoJDUpLT5kaXN0aW5jdDsKKwkJCQkJbi0+Z3JvdXBBbGwgPSAoJDUpLT5hbGw7CiAJ CQkJCW4tPmhhdmluZ0NsYXVzZSA9ICQ2OwogCQkJCQluLT53aW5kb3dDbGF1c2UgPSAkNzsKIAkJ CQkJbi0+c29ydENsYXVzZSA9ICQ4OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2NsYXVzZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jCmluZGV4IDlm MjBhNzBjZTEzLi43MzcxYTk4ZTFmMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3Bh cnNlX2NsYXVzZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpAQCAt MjU5OCw2ICsyNTk4LDkgQEAgdHJhbnNmb3JtR3JvdXBpbmdTZXQoTGlzdCAqKmZsYXRyZXN1bHQs CiAgKiBHUk9VUCBCWSBpdGVtcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSB0YXJnZXRsaXN0IChhcyBy ZXNqdW5rIGNvbHVtbnMpCiAgKiBpZiBub3QgYWxyZWFkeSBwcmVzZW50LCBzbyB0aGUgdGFyZ2V0 bGlzdCBtdXN0IGJlIHBhc3NlZCBieSByZWZlcmVuY2UuCiAgKgorICogSWYgR1JPVVAgQlkgQUxM IGlzIHNwZWNpZmllZCwgdGhlIGdyb3VwQ2xhdXNlIHdpbGwgYmUgaW5mZXJyZWQgdG8gYmUgYWxs CisgKiBub24tYWdncmVnYXRlIGV4cHJlc3Npb25zIGluIHRoZSB0YXJnZXRsaXN0LgorICoKICAq IFRoaXMgaXMgYWxzbyB1c2VkIGZvciB3aW5kb3cgUEFSVElUSU9OIEJZIGNsYXVzZXMgKHdoaWNo IGFjdCBhbG1vc3QgdGhlCiAgKiBzYW1lLCBidXQgYXJlIGFsd2F5cyBpbnRlcnByZXRlZCBwZXIg U1FMOTkgcnVsZXMpLgogICoKQEAgLTI2MjcsMTEgKzI2MzAsMTIgQEAgdHJhbnNmb3JtR3JvdXBp bmdTZXQoTGlzdCAqKmZsYXRyZXN1bHQsCiAgKiBzb3J0Q2xhdXNlCU9SREVSIEJZIGNsYXVzZSAo U29ydEdyb3VwQ2xhdXNlIG5vZGVzKQogICogZXhwcktpbmQJCWV4cHJlc3Npb24ga2luZAogICog dXNlU1FMOTkJCVNRTDk5IHJhdGhlciB0aGFuIFNRTDkyIHN5bnRheAorICogZ3JvdXBCeUFsbAlp cyB0aGlzIGEgR1JPVVAgQlkgQUxMIHN0YXRlbWVudD8KICAqLwogTGlzdCAqCiB0cmFuc2Zvcm1H cm91cENsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmdyb3VwbGlzdCwgTGlzdCAqKmdy b3VwaW5nU2V0cywKIAkJCQkJIExpc3QgKip0YXJnZXRsaXN0LCBMaXN0ICpzb3J0Q2xhdXNlLAot CQkJCQkgUGFyc2VFeHByS2luZCBleHByS2luZCwgYm9vbCB1c2VTUUw5OSkKKwkJCQkJIFBhcnNl RXhwcktpbmQgZXhwcktpbmQsIGJvb2wgdXNlU1FMOTksIGJvb2wgZ3JvdXBCeUFsbCkKIHsKIAlM aXN0CSAgICpyZXN1bHQgPSBOSUw7CiAJTGlzdAkgICAqZmxhdF9ncm91cGxpc3Q7CkBAIC0yNjQw LDYgKzI2NDQsMzggQEAgdHJhbnNmb3JtR3JvdXBDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBM aXN0ICpncm91cGxpc3QsIExpc3QgKipncm91cGluZ1NldHMsCiAJYm9vbAkJaGFzR3JvdXBpbmdT ZXRzID0gZmFsc2U7CiAJQml0bWFwc2V0ICAqc2Vlbl9sb2NhbCA9IE5VTEw7CiAKKworCS8qCisJ ICogSWYgd2UgaGF2ZSBHUk9VUCBCWSBBTEwsIHdlIGNhbm5vdCAoYnkgZGVmaW5pdGlvbikgaGF2 ZSBvdGhlciBHUk9VUCBCWQorCSAqIG9wdGlvbnMsIGluY2x1ZGluZyBncm91cGluZyBzZXRzLgor CSAqLworCisJaWYgKGdyb3VwQnlBbGwpCisJeworCQlBc3NlcnQoZ3JvdXBsaXN0ID09IE5VTEwp OworCisJCS8qCisJCSAqIEl0ZXJhdGUgb3ZlciB0YXJnZXRzLCBhbnkgbm9uLWFnZ3JlZ2F0ZSBn ZXRzIGFkZGVkIGFzIGEgVGFyZ2V0LgorCQkgKiBOb3RlIHRoYXQgaXQncyBub3QgZW5vdWdoIHRv IGNoZWNrIGZvciBhIHRvcC1sZXZlbCBBZ2dyZWY7IHdlIG5lZWQKKwkJICogdG8gZW5zdXJlIHRo YXQgYW55IHN1Yi1leHByZXNzaW9uIGhlcmUgZG9lcyBub3QgaW5jbHVkZSBhbiBBZ2dyZWYKKwkJ ICogKGZvciBpbnN0YW5jZSBhbiBleHByZXNzaW9uIHN1Y2ggYXMgYHN1bShjb2wpICsgNGAgc2hv dWxkIG5vdCBiZQorCQkgKiBhZGRlZCBhcyBhIGdyb3VwaW5nIHRhcmdldCkuCisJCSAqCisJCSAq IFdlIGFsc28gbmVlZCB0byBza2lwIGFueSByZXNqdW5rIGNvbHVtbnMsIHNpbmNlIHdlIG9ubHkg d2FudCB0bworCQkgKiBncm91cCBieSByZWFsIFRMRXMuCisJCSAqLworCQlmb3JlYWNoX3B0ciAo VGFyZ2V0RW50cnksIHRsZSwgKnRhcmdldGxpc3QpCisJCXsKKwkJCWlmICh0bGUtPnJlc2p1bmsp CisJCQkJY29udGludWU7CisKKwkJCWlmICghY29udGFpbl9hZ2dzX29mX2xldmVsKChOb2RlICop dGxlLT5leHByLCAwKSkKKwkJCQlyZXN1bHQgPSBhZGRUYXJnZXRUb0dyb3VwTGlzdChwc3RhdGUs IHRsZSwgcmVzdWx0LCAqdGFyZ2V0bGlzdCwgZXhwckxvY2F0aW9uKChOb2RlICopdGxlKSk7CisJ CX0KKworCQlyZXR1cm4gcmVzdWx0OworCX0KKwogCS8qCiAJICogUmVjdXJzaXZlbHkgZmxhdHRl biBpbXBsaWNpdCBSb3dFeHBycy4gKFRlY2huaWNhbGx5IHRoaXMgaXMgb25seSBuZWVkZWQKIAkg KiBmb3IgR1JPVVAgQlksIHBlciB0aGUgc3ludGF4IHJ1bGVzIGZvciBncm91cGluZyBzZXRzLCBi dXQgd2UgZG8gaXQKQEAgLTI4MjIsNyArMjg1OCw4IEBAIHRyYW5zZm9ybVdpbmRvd0RlZmluaXRp b25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJCQkJCQkJCQkJICAgdGFyZ2V0bGlzdCwKIAkJCQkJ CQkJCQkJICAgb3JkZXJDbGF1c2UsCiAJCQkJCQkJCQkJCSAgIEVYUFJfS0lORF9XSU5ET1dfUEFS VElUSU9OLAotCQkJCQkJCQkJCQkgICB0cnVlIC8qIGZvcmNlIFNRTDk5IHJ1bGVzICovICk7CisJ CQkJCQkJCQkJCSAgIHRydWUgLyogZm9yY2UgU1FMOTkgcnVsZXMgKi8sCisJCQkJCQkJCQkJCSAg IGZhbHNlIC8qIGdyb3VwIGJ5IGFsbCAqLyApOwogCiAJCS8qCiAJCSAqIEFuZCBwcmVwYXJlIHRo ZSBuZXcgV2luZG93Q2xhdXNlLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCmluZGV4IGRlZmNk YWE4YjM0Li5hYTk3Y2MxMWM3OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1 bGV1dGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwpAQCAtNjE4 Niw3ICs2MTg2LDEwIEBAIGdldF9iYXNpY19zZWxlY3RfcXVlcnkoUXVlcnkgKnF1ZXJ5LCBkZXBh cnNlX2NvbnRleHQgKmNvbnRleHQpCiAJCXNhdmVfaW5ncm91cGJ5ID0gY29udGV4dC0+aW5Hcm91 cEJ5OwogCQljb250ZXh0LT5pbkdyb3VwQnkgPSB0cnVlOwogCi0JCWlmIChxdWVyeS0+Z3JvdXBp bmdTZXRzID09IE5JTCkKKwkJaWYgKHF1ZXJ5LT5ncm91cEFsbCkKKwkJCWFwcGVuZENvbnRleHRL ZXl3b3JkKGNvbnRleHQsICIgQUxMICIsCisJCQkJCQkJCSAtUFJFVFRZSU5ERU5UX1NURCwgUFJF VFRZSU5ERU5UX1NURCwgMSk7CisJCWVsc2UgaWYgKHF1ZXJ5LT5ncm91cGluZ1NldHMgPT0gTklM KQogCQl7CiAJCQlzZXAgPSAiIjsKIAkJCWZvcmVhY2gobCwgcXVlcnktPmdyb3VwQ2xhdXNlKQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGYxNzA2ZGY1OGZkLi5mYTM4ZDMwM2QyYyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaApAQCAtMjE1LDYgKzIxNSw4IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5 CiAKIAlMaXN0CSAgICpncm91cENsYXVzZTsJLyogYSBsaXN0IG9mIFNvcnRHcm91cENsYXVzZSdz ICovCiAJYm9vbAkJZ3JvdXBEaXN0aW5jdDsJLyogaXMgdGhlIGdyb3VwIGJ5IGNsYXVzZSBkaXN0 aW5jdD8gKi8KKwlib29sCQlncm91cEFsbDsJCS8qIGlzIHRoZSBncm91cCBieSBmb3IgYWxsIG5v bi1hZ2dyZWdhdGUKKwkJCQkJCQkgCSAqIGNvbHVtbnM/ICovCiAKIAlMaXN0CSAgICpncm91cGlu Z1NldHM7CS8qIGEgbGlzdCBvZiBHcm91cGluZ1NldCdzIGlmIHByZXNlbnQgKi8KIApAQCAtMjE5 Miw2ICsyMTk0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU2VsZWN0U3RtdAogCU5vZGUJICAgKndoZXJl Q2xhdXNlOwkvKiBXSEVSRSBxdWFsaWZpY2F0aW9uICovCiAJTGlzdAkgICAqZ3JvdXBDbGF1c2U7 CS8qIEdST1VQIEJZIGNsYXVzZXMgKi8KIAlib29sCQlncm91cERpc3RpbmN0OwkvKiBJcyB0aGlz IEdST1VQIEJZIERJU1RJTkNUPyAqLworCWJvb2wJCWdyb3VwQWxsOwkJLyogSXMgdGhpcyBHUk9V UCBCWSBBTEw/ICovCiAJTm9kZQkgICAqaGF2aW5nQ2xhdXNlOwkvKiBIQVZJTkcgY29uZGl0aW9u YWwtZXhwcmVzc2lvbiAqLwogCUxpc3QJICAgKndpbmRvd0NsYXVzZTsJLyogV0lORE9XIHdpbmRv d19uYW1lIEFTICguLi4pLCAuLi4gKi8KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX2NsYXVzZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2NsYXVzZS5oCmluZGV4 IDNlOTg5NDkyNmRlLi5hYThiNTRhYjVjNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2Vy L3BhcnNlX2NsYXVzZS5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9jbGF1c2UuaApA QCAtMjgsNyArMjgsNyBAQCBleHRlcm4gTm9kZSAqdHJhbnNmb3JtTGltaXRDbGF1c2UoUGFyc2VT dGF0ZSAqcHN0YXRlLCBOb2RlICpjbGF1c2UsCiBleHRlcm4gTGlzdCAqdHJhbnNmb3JtR3JvdXBD bGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpncm91cGxpc3QsCiAJCQkJCQkJCSAgTGlz dCAqKmdyb3VwaW5nU2V0cywKIAkJCQkJCQkJICBMaXN0ICoqdGFyZ2V0bGlzdCwgTGlzdCAqc29y dENsYXVzZSwKLQkJCQkJCQkJICBQYXJzZUV4cHJLaW5kIGV4cHJLaW5kLCBib29sIHVzZVNRTDk5 KTsKKwkJCQkJCQkJICBQYXJzZUV4cHJLaW5kIGV4cHJLaW5kLCBib29sIHVzZVNRTDk5LCBib29s IGdyb3VwQnlBbGwpOwogZXh0ZXJuIExpc3QgKnRyYW5zZm9ybVNvcnRDbGF1c2UoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBMaXN0ICpvcmRlcmxpc3QsCiAJCQkJCQkJCSBMaXN0ICoqdGFyZ2V0bGlzdCwg UGFyc2VFeHByS2luZCBleHByS2luZCwKIAkJCQkJCQkJIGJvb2wgdXNlU1FMOTkpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9hZ2dyZWdhdGVzLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKaW5kZXggMWYyNGY2ZmZkMWYuLjc2ZTc3 MjhjNjc4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRlcy5vdXQKQEAgLTE1 NTcsNiArMTU1NywxNTQgQEAgZHJvcCB0YWJsZSB0MjsKIGRyb3AgdGFibGUgdDM7CiBkcm9wIHRh YmxlIHBfdDE7CiAtLQorLS0gVGVzdCBHUk9VUCBCWSBBTEwKKy0tCistLSBXZSBkb24ndCBjYXJl IGFib3V0IHRoZSBkYXRhIGhlcmUsIGp1c3QgdGhlIHByb3BlciB0cmFuc2Zvcm1hdGlvbiBvZiB0 aGUKKy0tIHJlc3VsdHMsIHNvIHRlc3Qgc29tZSBxdWVyaWVzIGFuZCB2ZXJpZnkgdGhlIEVYUExB SU4gcGxhbnMuCitDUkVBVEUgVEVNUCBUQUJMRSB0MSAoCisgIGEgaW50LAorICBiIGludCwKKyAg YyBpbnQKKyk7CistLSBiYXNpYyBmaWVsZCBjaGVjaworRVhQTEFJTiAoQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBiLCBDT1VOVCgqKSBGUk9N IHQxIEdST1VQIEJZIEFMTDsKKyAgICAgIFFVRVJZIFBMQU4gICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBHcm91cCBLZXk6IGIKKyAgIC0+ICBTZXEgU2Nh biBvbiB0MQorKDMgcm93cykKKworLS0gdGhyb3cgYSBudWxsIGluIHRoZSB2YWx1ZXMgdG9vCitF WFBMQUlOIChDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBCVUZGRVJTIE9GRikg U0VMRUNUIGEsIENPVU5UKGEpIEZST00gdDEgR1JPVVAgQlkgQUxMOworICAgICAgUVVFUlkgUExB TiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2hBZ2dyZWdhdGUKKyAgIEdyb3Vw IEtleTogYQorICAgLT4gIFNlcSBTY2FuIG9uIHQxCisoMyByb3dzKQorCistLSBtdWx0aXBsZSBj b2x1bW5zLCBub24tY29uc2VjdXRpdmUgb3JkZXIKK0VYUExBSU4gKENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBTRUxFQ1QgYSwgU1VNKGIpLCBiIEZST00g dDEgR1JPVVAgQlkgQUxMOworICAgICAgUVVFUlkgUExBTiAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIEhhc2hBZ2dyZWdhdGUKKyAgIEdyb3VwIEtleTogYSwgYgorICAgLT4gIFNlcSBT Y2FuIG9uIHQxCisoMyByb3dzKQorCistLSBtdWx0aSBjb2x1bW5zLCBubyBhZ2dyZWdhdGUKK0VY UExBSU4gKENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBT RUxFQ1QgYSArIGIgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisgICAgICBRVUVSWSBQTEFOICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSGFzaEFnZ3JlZ2F0ZQorICAgR3JvdXAgS2V5OiAo YSArIGIpCisgICAtPiAgU2VxIFNjYW4gb24gdDEKKygzIHJvd3MpCisKKy0tIG5vbi10b3AtbGV2 ZWwgZXhwcmVzc2lvbgorRVhQTEFJTiAoQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBhLCBTVU0oYikgKyA0IEZST00gdDEgR1JPVVAgQlkgQUxM OworICAgICAgUVVFUlkgUExBTiAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEhhc2hB Z2dyZWdhdGUKKyAgIEdyb3VwIEtleTogYQorICAgLT4gIFNlcSBTY2FuIG9uIHQxCisoMyByb3dz KQorCistLSBpbmNsdWRpbmcgZ3JvdXBlZCBjb2x1bW4KK0VYUExBSU4gKENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBTRUxFQ1QgYSwgU1VNKGIpICsgYSBG Uk9NIHQxIEdST1VQIEJZIEFMTDsKKyAgICAgIFFVRVJZIFBMQU4gICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBHcm91cCBLZXk6IGEKKyAgIC0+ICBTZXEg U2NhbiBvbiB0MQorKDMgcm93cykKKworLS0gb29wcyBhbGwgYWdncmVnYXRlcworRVhQTEFJTiAo Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBD T1VOVChhKSwgU1VNKGIpIEZST00gdDEgR1JPVVAgQlkgQUxMOworICAgICAgUVVFUlkgUExBTiAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIEFnZ3JlZ2F0ZQorICAgLT4gIFNlcSBTY2Fu IG9uIHQxCisoMiByb3dzKQorCistLSBlbXB0eSBjb2x1bW4gbGlzdAorRVhQTEFJTiAoQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBGUk9NIHQx IEdST1VQIEJZIEFMTDsKKyAgIFFVRVJZIFBMQU4gICAKKy0tLS0tLS0tLS0tLS0tLS0KKyBTZXEg U2NhbiBvbiB0MQorKDEgcm93KQorCistLSBmaWx0ZXIKK0VYUExBSU4gKENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBTRUxFQ1QgYSwgQ09VTlQoYSkgRklM VEVSKFdIRVJFIGIgPSAyKSBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKyAgICAgIFFVRVJZIFBMQU4g ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBHcm91cCBL ZXk6IGEKKyAgIC0+ICBTZXEgU2NhbiBvbiB0MQorKDMgcm93cykKKworLS0gYWxsIGNvbHMKK0VY UExBSU4gKENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBT RUxFQ1QgKiBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKyAgICAgIFFVRVJZIFBMQU4gICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBHcm91cCBLZXk6IGEsIGIs IGMKKyAgIC0+ICBTZXEgU2NhbiBvbiB0MQorKDMgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCAqLCBjb3VudCgq KSBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKyAgICAgIFFVRVJZIFBMQU4gICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBHcm91cCBLZXk6IGEsIGIsIGMKKyAg IC0+ICBTZXEgU2NhbiBvbiB0MQorKDMgcm93cykKKworLS0gZXhwcmVzc2lvbiB3aXRob3V0IGlu Y2x1ZGluZyBhZ2dyZWdhdGUgY29sdW1ucworRVhQTEFJTiAoQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBhLCBTVU0oYikgKyBjIEZST00gdDEg R1JPVVAgQlkgQUxMOworRVJST1I6ICBjb2x1bW4gInQxLmMiIG11c3QgYXBwZWFyIGluIHRoZSBH Uk9VUCBCWSBjbGF1c2Ugb3IgYmUgdXNlZCBpbiBhbiBhZ2dyZWdhdGUgZnVuY3Rpb24KK0xJTkUg MTogLi4uT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBhLCBTVU0oYikgKyBj IEZST00gdDEgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgorLS0gc3VicXVlcnkKK0VYUExBSU4gKENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBTRUxFQ1QgKFNFTEVDVCBhIEZST00g dDEgTElNSVQgMSksIFNVTShiKSBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKyAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEdyb3VwQWdncmVnYXRlCisgICBJbml0UGxhbiAxCisgICAgIC0+ICBMaW1pdAorICAgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gdDEgdDFfMQorICAgLT4gIFNlcSBTY2FuIG9uIHQxCisoNSBy b3dzKQorCistLSBjdGUKK0VYUExBSU4gKENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYsIEJVRkZFUlMgT0ZGKSBXSVRIIGFfcXVlcnkgQVMgKFNFTEVDVCBhLCBTVU0oYikgQVMgc3Vt X2IgRlJPTSB0MSBHUk9VUCBCWSBBTEwpCitTRUxFQ1QgQVZHKGEpLCBzdW1fYiAgRlJPTSBhX3F1 ZXJ5IEdST1VQIEJZIEFMTDsKKyAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBIYXNoQWdncmVnYXRlCisgICBHcm91cCBLZXk6IHN1bSh0 MS5iKQorICAgLT4gIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgIEdyb3VwIEtleTogdDEuYQorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHQxCisoNSByb3dzKQorCistLSB2ZXJpZnkgZGVwYXJzZQor Q1JFQVRFIFZJRVcgdjEgQVMgU0VMRUNUIGIsIENPVU5UKCopIEZST00gdDEgR1JPVVAgQlkgQUxM OworTk9USUNFOiAgdmlldyAidjEiIHdpbGwgYmUgYSB0ZW1wb3JhcnkgdmlldworU0VMRUNUIHBn X2dldF92aWV3ZGVmKCd2MSc6OnJlZ2NsYXNzKTsKKyAgICBwZ19nZXRfdmlld2RlZiAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgYiwgICAgICAgICAgICsKKyAgICAgY291 bnQoKikgQVMgY291bnQrCisgICAgRlJPTSB0MSAgICAgICAgICAgKworICAgR1JPVVAgQlkgICAg ICAgICAgICsKKyAgIEFMTCA7CisoMSByb3cpCisKK0RST1AgVklFVyB2MTsKK0RST1AgVEFCTEUg dDE7CistLQogLS0gVGVzdCBHUk9VUCBCWSBtYXRjaGluZyBvZiBqb2luIGNvbHVtbnMgdGhhdCBh cmUgdHlwZS1jb2VyY2VkIGR1ZSB0byBVU0lORwogLS0KIGNyZWF0ZSB0ZW1wIHRhYmxlIHQxKGYx IGludCwgZjIgaW50KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0 ZXMuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwKaW5kZXggNjI1NDBi MWZmYTQuLjEwYzZkNGRkMWE0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dy ZWdhdGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9hZ2dyZWdhdGVzLnNxbApAQCAt NTQ5LDYgKzU0OSw2OCBAQCBkcm9wIHRhYmxlIHQyOwogZHJvcCB0YWJsZSB0MzsKIGRyb3AgdGFi bGUgcF90MTsKIAorCistLQorLS0gVGVzdCBHUk9VUCBCWSBBTEwKKy0tCisKKy0tIFdlIGRvbid0 IGNhcmUgYWJvdXQgdGhlIGRhdGEgaGVyZSwganVzdCB0aGUgcHJvcGVyIHRyYW5zZm9ybWF0aW9u IG9mIHRoZQorLS0gcmVzdWx0cywgc28gdGVzdCBzb21lIHF1ZXJpZXMgYW5kIHZlcmlmeSB0aGUg RVhQTEFJTiBwbGFucy4KKworQ1JFQVRFIFRFTVAgVEFCTEUgdDEgKAorICBhIGludCwKKyAgYiBp bnQsCisgIGMgaW50CispOworCistLSBiYXNpYyBmaWVsZCBjaGVjaworRVhQTEFJTiAoQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBiLCBDT1VO VCgqKSBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKworLS0gdGhyb3cgYSBudWxsIGluIHRoZSB2YWx1 ZXMgdG9vCitFWFBMQUlOIChDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBCVUZG RVJTIE9GRikgU0VMRUNUIGEsIENPVU5UKGEpIEZST00gdDEgR1JPVVAgQlkgQUxMOworCistLSBt dWx0aXBsZSBjb2x1bW5zLCBub24tY29uc2VjdXRpdmUgb3JkZXIKK0VYUExBSU4gKENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBTRUxFQ1QgYSwgU1VNKGIp LCBiIEZST00gdDEgR1JPVVAgQlkgQUxMOworCistLSBtdWx0aSBjb2x1bW5zLCBubyBhZ2dyZWdh dGUKK0VYUExBSU4gKENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMg T0ZGKSBTRUxFQ1QgYSArIGIgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisKKy0tIG5vbi10b3AtbGV2 ZWwgZXhwcmVzc2lvbgorRVhQTEFJTiAoQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBhLCBTVU0oYikgKyA0IEZST00gdDEgR1JPVVAgQlkgQUxM OworCistLSBpbmNsdWRpbmcgZ3JvdXBlZCBjb2x1bW4KK0VYUExBSU4gKENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYsIEJVRkZFUlMgT0ZGKSBTRUxFQ1QgYSwgU1VNKGIpICsgYSBG Uk9NIHQxIEdST1VQIEJZIEFMTDsKKworLS0gb29wcyBhbGwgYWdncmVnYXRlcworRVhQTEFJTiAo Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFNFTEVDVCBD T1VOVChhKSwgU1VNKGIpIEZST00gdDEgR1JPVVAgQlkgQUxMOworCistLSBlbXB0eSBjb2x1bW4g bGlzdAorRVhQTEFJTiAoQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVS UyBPRkYpIFNFTEVDVCBGUk9NIHQxIEdST1VQIEJZIEFMTDsKKworLS0gZmlsdGVyCitFWFBMQUlO IChDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBCVUZGRVJTIE9GRikgU0VMRUNU IGEsIENPVU5UKGEpIEZJTFRFUihXSEVSRSBiID0gMikgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisK Ky0tIGFsbCBjb2xzCitFWFBMQUlOIChDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG LCBCVUZGRVJTIE9GRikgU0VMRUNUICogRlJPTSB0MSBHUk9VUCBCWSBBTEw7CitFWFBMQUlOIChD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBCVUZGRVJTIE9GRikgU0VMRUNUICos IGNvdW50KCopIEZST00gdDEgR1JPVVAgQlkgQUxMOworCistLSBleHByZXNzaW9uIHdpdGhvdXQg aW5jbHVkaW5nIGFnZ3JlZ2F0ZSBjb2x1bW5zCitFWFBMQUlOIChDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGLCBCVUZGRVJTIE9GRikgU0VMRUNUIGEsIFNVTShiKSArIGMgRlJPTSB0 MSBHUk9VUCBCWSBBTEw7CisKKy0tIHN1YnF1ZXJ5CitFWFBMQUlOIChDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGLCBCVUZGRVJTIE9GRikgU0VMRUNUIChTRUxFQ1QgYSBGUk9NIHQx IExJTUlUIDEpLCBTVU0oYikgRlJPTSB0MSBHUk9VUCBCWSBBTEw7CisKKy0tIGN0ZQorRVhQTEFJ TiAoQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgQlVGRkVSUyBPRkYpIFdJVEgg YV9xdWVyeSBBUyAoU0VMRUNUIGEsIFNVTShiKSBBUyBzdW1fYiBGUk9NIHQxIEdST1VQIEJZIEFM TCkKK1NFTEVDVCBBVkcoYSksIHN1bV9iICBGUk9NIGFfcXVlcnkgR1JPVVAgQlkgQUxMOworCist LSB2ZXJpZnkgZGVwYXJzZQorQ1JFQVRFIFZJRVcgdjEgQVMgU0VMRUNUIGIsIENPVU5UKCopIEZS T00gdDEgR1JPVVAgQlkgQUxMOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCd2MSc6OnJlZ2NsYXNz KTsKKworRFJPUCBWSUVXIHYxOworRFJPUCBUQUJMRSB0MTsKKwogLS0KIC0tIFRlc3QgR1JPVVAg QlkgbWF0Y2hpbmcgb2Ygam9pbiBjb2x1bW5zIHRoYXQgYXJlIHR5cGUtY29lcmNlZCBkdWUgdG8g VVNJTkcKIC0tCi0tIAoyLjQ5LjAKCg== --00000000000006d54c063fb8c3d5--