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 1vXrXM-007ndn-2h for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 01:50:10 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vXrXK-00H3AX-32 for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 01:50:07 +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 1vXrXK-00H3AO-1i for pgsql-hackers@lists.postgresql.org; Tue, 23 Dec 2025 01:50:07 +0000 Received: from mail-ua1-x930.google.com ([2607:f8b0:4864:20::930]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vXrXI-002DBo-1c for pgsql-hackers@postgresql.org; Tue, 23 Dec 2025 01:50:07 +0000 Received: by mail-ua1-x930.google.com with SMTP id a1e0cc1a2514c-9413e5ee53eso2627710241.0 for ; Mon, 22 Dec 2025 17:50:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766454603; x=1767059403; 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=9d8m/4QWCUqEQEDC/8Av5aaTHpkbXvPms09ognfxbDg=; b=gSjHNjxywgyxcFv1Oa7AZnoiIE8E6fQtoTCS6eLG8eqZ5ZaFNqy6gA2ZvfHQSj0aVh QO/752q3wdj8kuful+/+l9McE+rnv43MVs9vfjs021cYxAKy1dz99506Xc08d9XYOnkn f5lGpZ9jNADGB5pSBfPvgGRABfvSIwgACepx3CczMXWSBvdxbjTZsrPa64m2mdnoRWSG cD1apTjHPbn08OtTOeH1FQ02IOg2Sy02kAHG59iMcA5P8+0G163BCvOqXm1/N6PMOHPt ego3tWmW1TMFZzD2GvTeZTQrQMuDakeKbhjaCwqZrxmoj30TTxRa21gVZxtYqbB7yds3 JZQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766454603; x=1767059403; 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=9d8m/4QWCUqEQEDC/8Av5aaTHpkbXvPms09ognfxbDg=; b=qUMnNRWewV1bhAbgUR0HY9FcRfkl9SoVLByUVW6/7wxKQTGLVFOCSYL7EQAZLckt0I cnAGSBd/8NXRnsyi9QSZFGG4No3KJVnvwr+CeyP0YOGnl/Jdnwfp1SXMrh0rqxaXlJuH fpHamyCxDmdQ+HQckuOSKhIt4XHBjjucNYeFYk9lhknrrmBrsvwbEQYXJpToA1vHEL04 I6FyvqznfUEBN1zF59pngxhjo6/lSUb2iMGsOCJwlgIR5tfGyBL8gSLB/VrtCm4NFtc9 oLYn5V5ZwuaUPkq+GJI4rwj0WC/4HXbMfJma6NGkOQ/NVvaNXojBwjZzzHGzwPl+lUKB J/CA== X-Gm-Message-State: AOJu0YxW5RSTK74guq7GkhUo0+dI4CfV4MEJ2cP1lgPeMWujtZ9OnMJx oVdKC3ku63IQxKX10BveNtBdbezQMdjIrqJwqAu8FziDvDj/06KLLRuqzva+t6lDCNRXYkGaNy1 nTLWx3MKw5PycHuxeENy+wN/AuLT1jJ0= X-Gm-Gg: AY/fxX6AO6Ng5SBh4svkp2theqgO12PirXEWMlMXtOz5zSZbbdtwdhUsRE52fP9MTv0 Bwhd6FDmirBCM0SOOUYP6qkWnY0AXLiKIiuPnUPmKH9mnkYicG5EFrnEaDaQ/90t59yuVmyFZar aK8I2QDbJVx86JBc72NQw11xw2fUenSLlFuTWrba5Tp6HY5DnwNm+PBVhWverR8sSR/Yn9J5q7B DVTE9H4UE05m5S3AYKFG57sjDNP6UHqFKbSdOtW46W73bhv4TYNEd5yfXWtgPWCRtutKnS2BgoM pX6v7YF07ZGcx8SBIF4Fac2d6XrwPbSDQs0URTY4it1JDUXfCWrdIOe5ZawahpQfqrcyzYoo0QH G1wz4KiTFBbaHTQPCjuhwv2cVIZBV+p+FNpHwPC8LxJFwd84ZAw9xCCKPjlpyCUAfZr7xr5+w4l Z3vQORr9ZtXbFXUKGMJeGE X-Google-Smtp-Source: AGHT+IH/gEXibcuJ+sGYTCcr4NBIFZbVEPJ2iA+lJjW/gTRB0lKWnnpFibRg1oFxMZ/xmEOZCcCXaWHYHGxIoO4ucmE= X-Received: by 2002:a05:6102:9d9:b0:5df:b7f3:5875 with SMTP id ada2fe7eead31-5eb1a6259a2mr4378235137.3.1766454602630; Mon, 22 Dec 2025 17:50:02 -0800 (PST) MIME-Version: 1.0 References: <2B70C6CA-606B-438C-8EF2-84DCBA1C0813@gmail.com> In-Reply-To: From: jian he Date: Tue, 23 Dec 2025 09:49:26 +0800 X-Gm-Features: AQt7F2qHgRxBP8v1V9LIYCUvPq_s2zQuyJFNicmgZSPFAhgkp5bODkhsFAgKZ7c Message-ID: Subject: Re: let ALTER TABLE DROP COLUMN drop whole-row referenced object To: Chao Li Cc: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000001a23e2064694c37a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001a23e2064694c37a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, I have consolidated the work into two patches. 0001 handles indexes and CHECK constraints that contain whole-row reference= s. 0002 handles policies that contain whole-row references. The difference is that, for policy objects, we cannot use pull_varattnos to= find whole-row references, since we need recurse to Sublink node, Also, a policy= =E2=80=99s whole-row reference may point to an arbitrary relation, while index, check constraint can only reference the relation it is associated with. so the previous v5-0003 scans pg_policy.polrelid to find out whether it's s= afe to drop one relation is wrong, we should use pg_depend. summary: For objects (indexes, constraints, policies) that contain whole-row referen= ces: ALTER TABLE DROP COLUMN will drop these objects too. ALTER COLUMN SET DATA TYPE will error out, saying that the data type cannot= be changed because whole-row=E2=80=93dependent objects exist. -- jian https://www.enterprisedb.com/ --0000000000001a23e2064694c37a Content-Type: text/x-patch; charset="UTF-8"; name="v6-0001-fix-DDL-wholerow-referenced-constraints-and-indexes.patch" Content-Disposition: attachment; filename="v6-0001-fix-DDL-wholerow-referenced-constraints-and-indexes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhxdoi71 RnJvbSA2M2JjZmUxYmFhZDcyYTE2NmY5NTdjMWI2ZWQ3MGQ4OGY2YjQ2OWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjIgRGVjIDIwMjUgMjM6Mjg6MDAgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 IDEvMl0gZml4IERETCB3aG9sZXJvdyByZWZlcmVuY2VkIGNvbnN0cmFpbnRzIGFuZCBpbmRleGVz Ck1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYt OApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CgoxLiBBTFRFUiBUQUJMRSBEUk9QIENP TFVNTi4KQUxURVIgVEFCTEUgRFJPUCBDT0xVTU4gc2hvdWxkIHJlbW92ZSBpbmRleGVzIG9yIGNv bnN0cmFpbnRzIGNvbnRhaW4Kd2hvbGUtcm93IGV4cHJlc3Npb24uCldlIGVudW1lcmF0ZSBhbGwg Y29uc3RyYWludHMgYW5kIGluZGV4ZXMgYW5kIGNoZWNrIG9uZSBieSBvbmUgdG8gZGV0ZXJtaW5l CndoZXRoZXIgaXQgY29udGFpbnMgYSB3aG9sZS1yb3cgVmFyIHJlZmVyZW5jZS4gSWYgc3VjaCBh IHJlZmVyZW5jZSBpcyBmb3VuZCwgd2UKcmVjb3JkIHRoZSBkZXBlbmRlbmN5IGFuZCBsYXRlciBw ZXJmb3JtTXVsdGlwbGVEZWxldGlvbnMgd2lsbCBkbyB0aGUgam9iLgoKZm9yIGV4YW1wbGU6CkNS RUFURSBUQUJMRSB0cyAoYSBpbnQsIGNvbnN0cmFpbnQgY2MgY2hlY2soKHRzID0gUk9XKDEpKSkp OwpDUkVBVEUgSU5ERVggdHNpMyBvbiB0cyAoKHRzIGlzIG51bGwpKTsKQUxURVIgVEFCTEUgRFJP UCBDT0xVTU4gc2hvdWxkIGRyb3AgYWJvdmUgYWxsIGluZGV4ZXMsIGNvbnN0cmFpbnRzIG9uIHRh YmxlIHRzLgoKMi4gQUxURVIgQ09MVU1OIFNFVCBEQVRBIFRZUEUKQUxURVIgQ09MVU1OIFNFVCBE QVRBIFRZUEUgc2hvdWxkIGVycm9yIG91dCB3aGVuIHdob2xlLXJvdyByZWZlcmVuY2VkIG9iamVj dAooaW5kZXgsIGNvbnN0cmFpbnRzLCBldGMpIGV4aXN0cy4KQUxURVIgQ09MVU1OIFNFVCBEQVRB IFRZUEUgZnVuZGFtZW50YWxseSBjaGFuZ2VzIHRoZSB0YWJsZeKAmXMgcmVjb3JkIHR5cGU7IEF0 CnByZXNlbnQsIHdlIGNhbm5vdCBjb21wYXJlIHJlY29yZHMgdGhhdCBjb250YWluIGNvbHVtbnMg b2YgZGlzc2ltaWxhciB0eXBlcywgc2VlCmZ1bmN0aW9uIHJlY29yZF9lcS4gIEFzIGEgcmVzdWx0 LCBBTFRFUiBDT0xVTU4gU0VUIERBVEEgVFlQRSBkb2VzIG5vdCB3b3JrIGZvcgp3aG9sZS1yb3cg cmVmZXJlbmNlIG9iamVjdHMgKHN1Y2ggYXMgY29uc3RyYWludHMgYW5kIGluZGV4ZXMpLCBhbmQg bXVzdAp0aGVyZWZvcmUgcmFpc2UgYW4gZXJyb3IuCgpGb3IgZXhhbXBsZSwgYmVsb3cgQUxURVIg Q09MVU1OIFNFVCBEQVRBIFRZUEUgc2hvdWxkIGZhaWwuCkNSRUFURSBUQUJMRSB0cyAoYSBpbnQs IENPTlNUUkFJTlQgY2MgQ0hFQ0sgKCh0cyA9IFJPVygxKSkpKTsKQ1JFQVRFIElOREVYIE9OIHRz ICgodHMgSVMgTk9UIE5VTEwpKTsKQUxURVIgVEFCTEUgdHMgQUxURVIgQ09MVU1OIGEgU0VUIERB VEEgVFlQRSBpbnQ4OwoKZGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUNKdWZ4R0E2 S1ZReTdEYkhHTFZ3OXM5S0ttcEd5WnQ1TUU2QzdrRWZqRHByMndaQ3dAbWFpbC5nbWFpbC5jb20K LS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgICAgICB8IDI0OCArKysr KysrKysrKysrKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRz Lm91dCB8ICAyNiArKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0ICAg IHwgIDIyICsrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9jb25zdHJhaW50cy5zcWwgICAgICB8ICAy MSArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaW5kZXhpbmcuc3FsICAgICAgICAgfCAgMTMgKysK IDUgZmlsZXMgY2hhbmdlZCwgMzI3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA2YjFhMDBlZDQ3Ny4uYTU0MWI3OTVkNDggMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jCisrKyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCkBAIC03NDUsNiArNzQ1LDkgQEAgc3RhdGljIHZvaWQgQVRF eGVjTWVyZ2VQYXJ0aXRpb25zKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwg UmVsYXRpb24KIHN0YXRpYyB2b2lkIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3cXVldWUs IEFsdGVyZWRUYWJsZUluZm8gKnRhYiwKIAkJCQkJCQkJIFJlbGF0aW9uIHJlbCwgUGFydGl0aW9u Q21kICpjbWQsCiAJCQkJCQkJCSBBbHRlclRhYmxlVXRpbGl0eUNvbnRleHQgKmNvbnRleHQpOwor c3RhdGljIHZvaWQgcmVjb3JkV2hvbGVSb3dEZXBlbmRlbmN5T25PckVycm9yKFJlbGF0aW9uIHJl bCwKKwkJCQkJCQkJCQkJICBjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsCisJCQkJCQkJCQkJ CSAgYm9vbCBlcnJvcl9vdXQpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24KQEAg LTkzOTMsNiArOTM5NiwyMSBAQCBBVEV4ZWNEcm9wQ29sdW1uKExpc3QgKip3cXVldWUsIFJlbGF0 aW9uIHJlbCwgY29uc3QgY2hhciAqY29sTmFtZSwKIAogCVJlbGVhc2VTeXNDYWNoZSh0dXBsZSk7 CiAKKwlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwlvYmplY3Qub2JqZWN0 SWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CisJb2JqZWN0Lm9iamVjdFN1YklkID0gYXR0bnVt OworCisJLyoKKwkgKiBXZSBzaG91bGQgYWxzbyByZW1vdmUgaW5kZXhlcyBvciBjb25zdHJhaW50 cyB0aGF0IGNvbnRhaW4gd2hvbGUtcm93CisJICogZXhwcmVzc2lvbi4gVXNpbmcgcmVjb3JkV2hv bGVSb3dEZXBlbmRlbmN5T25PckVycm9yIHRvIGVzdGFibGlzaCBhCisJICogZGVwZW5kZW5jeSBi ZXR3ZWVuIHRoZSBjb2x1bW4gYW5kIGFueSBjb25zdHJhaW50IG9yIGluZGV4IGludm9sdmluZwor CSAqIHdob2xlLXJvdyBWYXJzLiAgcGVyZm9ybU11bHRpcGxlRGVsZXRpb25zIHdpbGwgdGhlbiB0 YWtlIGNhcmUgb2YKKwkgKiByZW1vdmluZyB0aGVtIGxhdGVyLgorCSAqLworCXJlY29yZFdob2xl Um93RGVwZW5kZW5jeU9uT3JFcnJvcihyZWwsICZvYmplY3QsIGZhbHNlKTsKKworCUNvbW1hbmRD b3VudGVySW5jcmVtZW50KCk7CisKIAkvKgogCSAqIFByb3BhZ2F0ZSB0byBjaGlsZHJlbiBhcyBh cHByb3ByaWF0ZS4gIFVubGlrZSBtb3N0IG90aGVyIEFMVEVSCiAJICogcm91dGluZXMsIHdlIGhh dmUgdG8gZG8gdGhpcyBvbmUgbGV2ZWwgb2YgcmVjdXJzaW9uIGF0IGEgdGltZTsgd2UgY2FuJ3QK QEAgLTk0ODYsOSArOTUwNCw2IEBAIEFURXhlY0Ryb3BDb2x1bW4oTGlzdCAqKndxdWV1ZSwgUmVs YXRpb24gcmVsLCBjb25zdCBjaGFyICpjb2xOYW1lLAogCX0KIAogCS8qIEFkZCBvYmplY3QgdG8g ZGVsZXRlICovCi0Jb2JqZWN0LmNsYXNzSWQgPSBSZWxhdGlvblJlbGF0aW9uSWQ7Ci0Jb2JqZWN0 Lm9iamVjdElkID0gUmVsYXRpb25HZXRSZWxpZChyZWwpOwotCW9iamVjdC5vYmplY3RTdWJJZCA9 IGF0dG51bTsKIAlhZGRfZXhhY3Rfb2JqZWN0X2FkZHJlc3MoJm9iamVjdCwgYWRkcnMpOwogCiAJ aWYgKCFyZWN1cnNpbmcpCkBAIC0xNDc3Myw2ICsxNDc4OCw3IEBAIEFURXhlY0FsdGVyQ29sdW1u VHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJlbCwKIAlTeXNTY2FuRGVzYyBz Y2FuOwogCUhlYXBUdXBsZQlkZXBUdXA7CiAJT2JqZWN0QWRkcmVzcyBhZGRyZXNzOworCU9iamVj dEFkZHJlc3Mgb2JqZWN0OwogCiAJLyoKIAkgKiBDbGVhciBhbGwgdGhlIG1pc3NpbmcgdmFsdWVz IGlmIHdlJ3JlIHJld3JpdGluZyB0aGUgdGFibGUsIHNpbmNlIHRoaXMKQEAgLTE0ODY4LDYgKzE0 ODg0LDE2IEBAIEFURXhlY0FsdGVyQ29sdW1uVHlwZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJl bGF0aW9uIHJlbCwKIAkgKi8KIAlSZW1lbWJlckFsbERlcGVuZGVudEZvclJlYnVpbGRpbmcodGFi LCBBVF9BbHRlckNvbHVtblR5cGUsIHJlbCwgYXR0bnVtLCBjb2xOYW1lKTsKIAorCW9iamVjdC5j bGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCW9iamVjdC5vYmplY3RJZCA9IFJlbGF0aW9u R2V0UmVsaWQocmVsKTsKKwlvYmplY3Qub2JqZWN0U3ViSWQgPSBhdHRudW07CisKKwkvKgorCSAq IENoZWNrIGZvciB3aG9sZS1yb3cgcmVmZXJlbmNlZCBvYmplY3RzIChjb25zdHJhaW50cywgaW5k ZXhlcyBldGMpIC0tCisJICogY2FuJ3QgY29wZQorCSAqLworCXJlY29yZFdob2xlUm93RGVwZW5k ZW5jeU9uT3JFcnJvcihyZWwsICZvYmplY3QsIHRydWUpOworCiAJLyoKIAkgKiBOb3cgc2NhbiBm b3IgZGVwZW5kZW5jaWVzIG9mIHRoaXMgY29sdW1uIG9uIG90aGVyIHRoaW5ncy4gIFRoZSBvbmx5 CiAJICogdGhpbmdzIHdlIHNob3VsZCBmaW5kIGFyZSB0aGUgZGVwZW5kZW5jeSBvbiB0aGUgY29s dW1uIGRhdGF0eXBlIGFuZApAQCAtMjMzMzcsMyArMjMzNjMsMjE5IEBAIEFURXhlY1NwbGl0UGFy dGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCS8qIFJlc3RvcmUgdGhlIHVzZXJpZCBhbmQgc2VjdXJpdHkgY29udGV4dC4gKi8KIAlTZXRV c2VySWRBbmRTZWNDb250ZXh0KHNhdmVfdXNlcmlkLCBzYXZlX3NlY19jb250ZXh0KTsKIH0KKwor LyoKKyAqIFJlY29yZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB3aG9sZS1yb3cgb2JqZWN0cyAoaW5k ZXhlcywgQ0hFQ0sgY29uc3RyYWludHMpCisgKiBhbmQgdGhlIHJlbGF0aW9uJ3MgT2JqZWN0QWRk cmVzcy4KKyAqCisgKiBlcnJvcl9vdXQgbWVhbnMgY2FuIG5vdCBpbnN0YWxsIHN1Y2ggZGVwZW5k ZW5jeSwgZXJyb3Igb3V0IGV4cGxpY2l0bHkuCisgKi8KK3N0YXRpYyB2b2lkCityZWNvcmRXaG9s ZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IoUmVsYXRpb24gcmVsLCBjb25zdCBPYmplY3RBZGRyZXNz ICpvYmplY3QsIGJvb2wgZXJyb3Jfb3V0KQoreworCU5vZGUJICAgKmV4cHIgPSBOVUxMOworCVNj YW5LZXlEYXRhIHNrZXk7CisJUmVsYXRpb24JcGdfaW5kZXg7CisJU3lzU2NhbkRlc2MgaW5kc2Nh bjsKKwlIZWFwVHVwbGUJaHR1cDsKKwlPYmplY3RBZGRyZXNzIGlkeF9vYmo7CisJSGVhcFR1cGxl CWluZGV4VHVwbGU7CisJRm9ybV9wZ19pbmRleCBpbmRleFN0cnVjdDsKKwlMaXN0CSAgICppbmRl eGxpc3QgPSBOSUw7CisJQml0bWFwc2V0ICAqZXhwcl9hdHRycyA9IE5VTEw7CisJRGF0dW0JCWV4 cHJEYXR1bTsKKwljaGFyCSAgICpleHByU3RyaW5nOworCWJvb2wJCWlzbnVsbDsKKwlib29sCQlm aW5kX3dob2xlcm93ID0gZmFsc2U7CisJVHVwbGVDb25zdHIgKmNvbnN0ciA9IFJlbGF0aW9uR2V0 RGVzY3IocmVsKS0+Y29uc3RyOworCisJLyoKKwkgKiBMb29wIHRocm91Z2ggZWFjaCBDSEVDSyBj b25zdHJhaW50LCBzZWUgaWYgaXQgY29udGFpbiB3aG9sZS1yb3cKKwkgKiByZWZlcmVuY2VzIG9y IG5vdAorCSAqLworCWlmIChjb25zdHIgJiYgY29uc3RyLT5udW1fY2hlY2sgPiAwKQorCXsKKwkJ UmVsYXRpb24JcGdfY29uc3RyYWludDsKKwkJU3lzU2NhbkRlc2MgY29uc2NhbjsKKwkJT2JqZWN0 QWRkcmVzcyBjb25fb2JqOworCisJCXBnX2NvbnN0cmFpbnQgPSB0YWJsZV9vcGVuKENvbnN0cmFp bnRSZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCS8qIFNlYXJjaCBwZ19jb25zdHJh aW50IGZvciByZWxldmFudCBlbnRyaWVzICovCisJCVNjYW5LZXlJbml0KCZza2V5LAorCQkJCQlB bnVtX3BnX2NvbnN0cmFpbnRfY29ucmVsaWQsCisJCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwg Rl9PSURFUSwKKwkJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlvbkdldFJlbGlkKHJlbCkpKTsK KworCQljb25zY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHBnX2NvbnN0cmFpbnQsIENvbnN0cmFp bnRSZWxpZFR5cGlkTmFtZUluZGV4SWQsIHRydWUsCisJCQkJCQkJCQkgTlVMTCwgMSwgJnNrZXkp OworCQl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZChodHVwID0gc3lzdGFibGVfZ2V0bmV4dChjb25z Y2FuKSkpCisJCXsKKwkJCUZvcm1fcGdfY29uc3RyYWludCBjb25mb3JtID0gKEZvcm1fcGdfY29u c3RyYWludCkgR0VUU1RSVUNUKGh0dXApOworCisJCQlpZiAoY29uZm9ybS0+Y29udHlwZSAhPSBD T05TVFJBSU5UX0NIRUNLKQorCQkJCWNvbnRpbnVlOworCisJCQkvKiBHcmFiIGFuZCB0ZXN0IGNv bmJpbiBpcyBhY3R1YWxseSBzZXQgKi8KKwkJCWV4cHJEYXR1bSA9IGZhc3RnZXRhdHRyKGh0dXAs CisJCQkJCQkJCQlBbnVtX3BnX2NvbnN0cmFpbnRfY29uYmluLAorCQkJCQkJCQkJUmVsYXRpb25H ZXREZXNjcihwZ19jb25zdHJhaW50KSwgJmlzbnVsbCk7CisJCQlpZiAoaXNudWxsKQorCQkJCWVs b2coV0FSTklORywgIm51bGwgY29uYmluIGZvciByZWxhdGlvbiBcIiVzXCIiLAorCQkJCQkgUmVs YXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSk7CisJCQllbHNlCisJCQl7CisJCQkJY2hhcgkgICAq cyA9IFRleHREYXR1bUdldENTdHJpbmcoZXhwckRhdHVtKTsKKworCQkJCWV4cHIgPSBzdHJpbmdU b05vZGUocyk7CisJCQkJcGZyZWUocyk7CisKKwkJCQkvKiBGaW5kIGFsbCBhdHRyaWJ1dGVzIHJl ZmVyZW5jZWQgKi8KKwkJCQlwdWxsX3ZhcmF0dG5vcyhleHByLCAxLCAmZXhwcl9hdHRycyk7CisK KwkJCQlmaW5kX3dob2xlcm93ID0gYm1zX2lzX21lbWJlcigwIC0gRmlyc3RMb3dJbnZhbGlkSGVh cEF0dHJpYnV0ZU51bWJlciwKKwkJCQkJCQkJCQkJICBleHByX2F0dHJzKTsKKworCQkJCWlmIChm aW5kX3dob2xlcm93KQorCQkJCXsKKwkJCQkJaWYgKGVycm9yX291dCkKKwkJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJ CQkJCWVycm1zZygiY2Fubm90IGFsdGVyIHRhYmxlIFwiJXNcIiBiZWNhdXNlIGNvbnN0cmFpbnQg XCIlc1wiIHVzZXMgaXRzIHJvdyB0eXBlIiwKKwkJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbCksCisJCQkJCQkJCQkgICBOYW1lU3RyKGNvbmZvcm0tPmNvbm5hbWUpKSwKKwkJ CQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBjb25zdHJhaW50IFwiJXNcIiBm aXJzdCIsCisJCQkJCQkJCQkJTmFtZVN0cihjb25mb3JtLT5jb25uYW1lKSkpOworCQkJCQllbHNl CisJCQkJCXsKKwkJCQkJCWNvbl9vYmouY2xhc3NJZCA9IENvbnN0cmFpbnRSZWxhdGlvbklkOwor CQkJCQkJY29uX29iai5vYmplY3RJZCA9IGNvbmZvcm0tPm9pZDsKKwkJCQkJCWNvbl9vYmoub2Jq ZWN0U3ViSWQgPSAwOworCisJCQkJCQkvKgorCQkJCQkJICogcmVjb3JkIGRlcGVuZGVuY3kgZm9y IGNvbnN0cmFpbnRzIHRoYXQgcmVmZXJlbmNlcworCQkJCQkJICogd2hvbGUtcm93CisJCQkJCQkg Ki8KKwkJCQkJCXJlY29yZERlcGVuZGVuY3lPbigmY29uX29iaiwgb2JqZWN0LCBERVBFTkRFTkNZ X0FVVE8pOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJCXN5c3RhYmxlX2VuZHNjYW4oY29u c2Nhbik7CisJCXRhYmxlX2Nsb3NlKHBnX2NvbnN0cmFpbnQsIEFjY2Vzc1NoYXJlTG9jayk7CisJ fQorCisJLyogbm93IGNoZWNraW5nIGluZGV4ZXMgY29udGFpbiB3aG9sZS1yb3cgcmVmZXJlbmNl cyBvciBub3QgKi8KKwkvKiBQcmVwYXJlIHRvIHNjYW4gcGdfaW5kZXggZm9yIGVudHJpZXMgaGF2 aW5nIGluZHJlbGlkID0gdGhpcyByZWwgKi8KKwlTY2FuS2V5SW5pdCgmc2tleSwKKwkJCQlBbnVt X3BnX2luZGV4X2luZHJlbGlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwK KwkJCQlPYmplY3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCisJcGdfaW5k ZXggPSB0YWJsZV9vcGVuKEluZGV4UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKworCWlu ZHNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocGdfaW5kZXgsIEluZGV4SW5kcmVsaWRJbmRleElk LCB0cnVlLAorCQkJCQkJCQkgTlVMTCwgMSwgJnNrZXkpOworCXdoaWxlIChIZWFwVHVwbGVJc1Zh bGlkKGh0dXAgPSBzeXN0YWJsZV9nZXRuZXh0KGluZHNjYW4pKSkKKwl7CisJCUZvcm1fcGdfaW5k ZXggaW5kZXggPSAoRm9ybV9wZ19pbmRleCkgR0VUU1RSVUNUKGh0dXApOworCisJCS8qIGFkZCBp bmRleCdzIE9JRCB0byByZXN1bHQgbGlzdCAqLworCQlpbmRleGxpc3QgPSBsYXBwZW5kX29pZChp bmRleGxpc3QsIGluZGV4LT5pbmRleHJlbGlkKTsKKwl9CisJc3lzdGFibGVfZW5kc2NhbihpbmRz Y2FuKTsKKworCXRhYmxlX2Nsb3NlKHBnX2luZGV4LCBBY2Nlc3NTaGFyZUxvY2spOworCisJZm9y ZWFjaF9vaWQoaW5kZXhvaWQsIGluZGV4bGlzdCkKKwl7CisJCWluZGV4VHVwbGUgPSBTZWFyY2hT eXNDYWNoZTEoSU5ERVhSRUxJRCwgT2JqZWN0SWRHZXREYXR1bShpbmRleG9pZCkpOworCQlpZiAo IUhlYXBUdXBsZUlzVmFsaWQoaW5kZXhUdXBsZSkpCisJCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9v a3VwIGZhaWxlZCBmb3IgaW5kZXggJXUiLCBpbmRleG9pZCk7CisJCWluZGV4U3RydWN0ID0gKEZv cm1fcGdfaW5kZXgpIEdFVFNUUlVDVChpbmRleFR1cGxlKTsKKworCQlpZiAoIWhlYXBfYXR0aXNu dWxsKGluZGV4VHVwbGUsIEFudW1fcGdfaW5kZXhfaW5kZXhwcnMsIE5VTEwpKQorCQl7CisJCQll eHByX2F0dHJzID0gTlVMTDsKKworCQkJLyogQ29udmVydCB0ZXh0IHN0cmluZyB0byBub2RlIHRy ZWUgKi8KKwkJCWV4cHJEYXR1bSA9IFN5c0NhY2hlR2V0QXR0ck5vdE51bGwoSU5ERVhSRUxJRCwg aW5kZXhUdXBsZSwKKwkJCQkJCQkJCQkJICAgQW51bV9wZ19pbmRleF9pbmRleHBycyk7CisJCQll eHByU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByRGF0dW0pOworCQkJZXhwciA9IChO b2RlICopIHN0cmluZ1RvTm9kZShleHByU3RyaW5nKTsKKwkJCXBmcmVlKGV4cHJTdHJpbmcpOwor CisJCQlwdWxsX3ZhcmF0dG5vcyhleHByLCAxLCAmZXhwcl9hdHRycyk7CisKKwkJCWZpbmRfd2hv bGVyb3cgPSBibXNfaXNfbWVtYmVyKDAgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVt YmVyLAorCQkJCQkJCQkJCSAgZXhwcl9hdHRycyk7CisKKwkJCWlmIChmaW5kX3dob2xlcm93KQor CQkJeworCQkJCWlmIChlcnJvcl9vdXQpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJy Y29kZShFUlJDT0RFX0RBVEFUWVBFX01JU01BVENIKSwKKwkJCQkJCQllcnJtc2coImNhbm5vdCBh bHRlciB0YWJsZSBcIiVzXCIgYmVjYXVzZSBpbmRleCBcIiVzXCIgdXNlcyBpdHMgcm93IHR5cGUi LAorCQkJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkgICBn ZXRfcmVsX25hbWUoaW5kZXhTdHJ1Y3QtPmluZGV4cmVsaWQpKSwKKwkJCQkJCQllcnJoaW50KCJZ b3UgbWlnaHQgbmVlZCB0byBkcm9wIGluZGV4IFwiJXNcIiBmaXJzdCIsCisJCQkJCQkJCQlnZXRf cmVsX25hbWUoaW5kZXhTdHJ1Y3QtPmluZGV4cmVsaWQpKSk7CisJCQkJZWxzZQorCQkJCXsKKwkJ CQkJaWR4X29iai5jbGFzc0lkID0gUmVsYXRpb25SZWxhdGlvbklkOworCQkJCQlpZHhfb2JqLm9i amVjdElkID0gaW5kZXhTdHJ1Y3QtPmluZGV4cmVsaWQ7CisJCQkJCWlkeF9vYmoub2JqZWN0U3Vi SWQgPSAwOworCisJCQkJCS8qIHJlY29yZCBkZXBlbmRlbmN5IGZvciBpbmRleGVzIHRoYXQgcmVm ZXJlbmNlcyB3aG9sZS1yb3cgKi8KKwkJCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZpZHhfb2JqLCBv YmplY3QsIERFUEVOREVOQ1lfQVVUTyk7CisKKwkJCQkJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVw bGUpOworCisJCQkJCWNvbnRpbnVlOworCQkJCX0KKwkJCX0KKwkJfQorCisJCWlmICghaGVhcF9h dHRpc251bGwoaW5kZXhUdXBsZSwgQW51bV9wZ19pbmRleF9pbmRwcmVkLCBOVUxMKSkKKwkJewor CQkJZXhwcl9hdHRycyA9IE5VTEw7CisKKwkJCS8qIENvbnZlcnQgdGV4dCBzdHJpbmcgdG8gbm9k ZSB0cmVlICovCisJCQlleHByRGF0dW0gPSBTeXNDYWNoZUdldEF0dHJOb3ROdWxsKElOREVYUkVM SUQsIGluZGV4VHVwbGUsCisJCQkJCQkJCQkJCSAgIEFudW1fcGdfaW5kZXhfaW5kcHJlZCk7CisJ CQlleHByU3RyaW5nID0gVGV4dERhdHVtR2V0Q1N0cmluZyhleHByRGF0dW0pOworCQkJZXhwciA9 IChOb2RlICopIHN0cmluZ1RvTm9kZShleHByU3RyaW5nKTsKKwkJCXBmcmVlKGV4cHJTdHJpbmcp OworCisJCQlwdWxsX3ZhcmF0dG5vcyhleHByLCAxLCAmZXhwcl9hdHRycyk7CisKKwkJCWZpbmRf d2hvbGVyb3cgPSBibXNfaXNfbWVtYmVyKDAgLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRl TnVtYmVyLAorCQkJCQkJCQkJCSAgZXhwcl9hdHRycyk7CisJCQlpZiAoZmluZF93aG9sZXJvdykK KwkJCXsKKwkJCQlpZiAoZXJyb3Jfb3V0KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkJZXJybXNnKCJjYW5ub3Qg YWx0ZXIgdGFibGUgXCIlc1wiIGJlY2F1c2UgaW5kZXggXCIlc1wiIHVzZXMgaXRzIHJvdyB0eXBl IiwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwKKwkJCQkJCQkJICAg Z2V0X3JlbF9uYW1lKGluZGV4U3RydWN0LT5pbmRleHJlbGlkKSksCisJCQkJCQkJZXJyaGludCgi WW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBpbmRleCBcIiVzXCIgZmlyc3QiLAorCQkJCQkJCQkJZ2V0 X3JlbF9uYW1lKGluZGV4U3RydWN0LT5pbmRleHJlbGlkKSkpOworCQkJCWVsc2UKKwkJCQl7CisJ CQkJCWlkeF9vYmouY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKKwkJCQkJaWR4X29iai5v YmplY3RJZCA9IGluZGV4U3RydWN0LT5pbmRleHJlbGlkOworCQkJCQlpZHhfb2JqLm9iamVjdFN1 YklkID0gMDsKKworCQkJCQkvKiByZWNvcmQgZGVwZW5kZW5jeSBmb3IgaW5kZXhlcyB0aGF0IHJl ZmVyZW5jZXMgd2hvbGUtcm93ICovCisJCQkJCXJlY29yZERlcGVuZGVuY3lPbigmaWR4X29iaiwg b2JqZWN0LCBERVBFTkRFTkNZX0FVVE8pOworCisJCQkJCVJlbGVhc2VTeXNDYWNoZShpbmRleFR1 cGxlKTsKKworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQl9CisJCX0KKwkJUmVsZWFzZVN5c0Nh Y2hlKGluZGV4VHVwbGUpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvY29uc3RyYWludHMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9jb25zdHJh aW50cy5vdXQKaW5kZXggMWJiZjU5Y2NhMDIuLjZlMjZlOWZiY2ZjIDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2NvbnN0cmFpbnRzLm91dApAQCAtMjU0LDYgKzI1NCwzMiBAQCBFUlJPUjog IHN5c3RlbSBjb2x1bW4gImN0aWQiIHJlZmVyZW5jZSBpbiBjaGVjayBjb25zdHJhaW50IGlzIGlu dmFsaWQKIExJTkUgMzogICAgICAgQ0hFQ0sgKE5PVCAoaXNfY2FwaXRhbCBBTkQgY3RpZDo6dGV4 dCA9ICdzeXNfY29sX2NoZWNrLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KIC0tCistLSBEcm9wIGNvbHVtbiBhbHNvIGRyb3AgY2hlY2sgY29uc3RyYWludHMg dGhhdCBoYXZlIHdob2xlLXJvdyByZWZlcmVuY2UKKy0tCitDUkVBVEUgVEFCTEUgRFJPUF9DT0xf Q0hFQ0tfVEJMICgKKyAgICBjaXR5IFRFWFQsIHN0YXRlIFRFWFQsCisgICAgQ09OU1RSQUlOVCBj YzAgQ0hFQ0sgKERST1BfQ09MX0NIRUNLX1RCTCBpcyBudWxsKSBOT1QgRU5GT1JDRUQsCisgICAg Q09OU1RSQUlOVCBjYzEgQ0hFQ0sgKERST1BfQ09MX0NIRUNLX1RCTCBpcyBub3QgbnVsbCkgTk9U IEVORk9SQ0VEKTsKK0FMVEVSIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENPTFVNTiBj aXR5OworXGQgRFJPUF9DT0xfQ0hFQ0tfVEJMCisgICAgICAgVGFibGUgInB1YmxpYy5kcm9wX2Nv bF9jaGVja190YmwiCisgQ29sdW1uIHwgVHlwZSB8IENvbGxhdGlvbiB8IE51bGxhYmxlIHwgRGVm YXVsdCAKKy0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLQor IHN0YXRlICB8IHRleHQgfCAgICAgICAgICAgfCAgICAgICAgICB8IAorCitEUk9QIFRBQkxFIERS T1BfQ09MX0NIRUNLX1RCTDsKKy0tCistLSBDaGFuZ2UgY29sdW1uIGRhdGEgdHlwZSBzaG91bGQg ZXJyb3Igb3V0IGJlY2F1c2UgdGhlIHdob2xlLXJvdyByZWZlcmVuY2VkCistLSBjaGVjayBjb25z dHJhaW50IGlzIHN0aWxsIG5lZWQgaXQuCistLQorQ1JFQVRFIFRBQkxFIEFMVEVSX0NPTF9DSEVD S19UQkwgKAorICAgIGNpdHkgSU5ULCBzdGF0ZSBURVhULAorICAgIENPTlNUUkFJTlQgY2MxIENI RUNLIChBTFRFUl9DT0xfQ0hFQ0tfVEJMIGlzIG5vdCBudWxsKSBOT1QgRU5GT1JDRUQpOworQUxU RVIgVEFCTEUgQUxURVJfQ09MX0NIRUNLX1RCTCBBTFRFUiBDT0xVTU4gY2l0eSBTRVQgREFUQSBU WVBFIGludDg7CitFUlJPUjogIGNhbm5vdCBhbHRlciB0YWJsZSAiYWx0ZXJfY29sX2NoZWNrX3Ri bCIgYmVjYXVzZSBjb25zdHJhaW50ICJjYzEiIHVzZXMgaXRzIHJvdyB0eXBlCitISU5UOiAgWW91 IG1pZ2h0IG5lZWQgdG8gZHJvcCBjb25zdHJhaW50ICJjYzEiIGZpcnN0CitEUk9QIFRBQkxFIEFM VEVSX0NPTF9DSEVDS19UQkw7CistLQogLS0gQ2hlY2sgaW5oZXJpdGFuY2Ugb2YgZGVmYXVsdHMg YW5kIGNvbnN0cmFpbnRzCiAtLQogQ1JFQVRFIFRBQkxFIElOU0VSVF9DSElMRCAoY3ggSU5UIGRl ZmF1bHQgNDIsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2luZGV4aW5n Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaW5kZXhpbmcub3V0CmluZGV4IDRkMjlm Yjg1MjkzLi40YjY4M2M2NzlhOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9pbmRleGluZy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9pbmRleGluZy5v dXQKQEAgLTY1NCw2ICs2NTQsMjggQEAgYWx0ZXIgdGFibGUgaWR4cGFydDIgZHJvcCBjb2x1bW4g YzsKICBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKIAogZHJvcCB0 YWJsZSBpZHhwYXJ0LCBpZHhwYXJ0MjsKK2NyZWF0ZSB0YWJsZSBpZHhwYXJ0IChhIGludCwgYiBp bnQsIGMgaW50KTsKK2NyZWF0ZSBpbmRleCBvbiBpZHhwYXJ0KGMpOworY3JlYXRlIGluZGV4IGlk eHBhcnRfaWR4MSBvbiBpZHhwYXJ0KChpZHhwYXJ0IGlzIG5vdCBudWxsKSk7CitjcmVhdGUgaW5k ZXggaWR4cGFydF9pZHgyIG9uIGlkeHBhcnQoYSkgd2hlcmUgaWR4cGFydCBpcyBub3QgbnVsbDsK K2FsdGVyIHRhYmxlIGlkeHBhcnQgZHJvcCBjb2x1bW4gYzsKK1xkIGlkeHBhcnQKKyAgICAgICAg ICAgICAgVGFibGUgInB1YmxpYy5pZHhwYXJ0IgorIENvbHVtbiB8ICBUeXBlICAgfCBDb2xsYXRp b24gfCBOdWxsYWJsZSB8IERlZmF1bHQgCistLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0KKyBhICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAg ICAgICAgfCAKKyBiICAgICAgfCBpbnRlZ2VyIHwgICAgICAgICAgIHwgICAgICAgICAgfCAKKwor Y3JlYXRlIGluZGV4IGlkeHBhcnRfaWR4MSBvbiBpZHhwYXJ0KChpZHhwYXJ0IGlzIG5vdCBudWxs KSk7CitjcmVhdGUgaW5kZXggaWR4cGFydF9pZHgyIG9uIGlkeHBhcnQoYSkgd2hlcmUgaWR4cGFy dCBpcyBub3QgbnVsbDsKK2FsdGVyIHRhYmxlIGlkeHBhcnQgYWx0ZXIgY29sdW1uIGEgc2V0IGRh dGEgdHlwZSBpbnQ4OyAtLWVycm9yCitFUlJPUjogIGNhbm5vdCBhbHRlciB0YWJsZSAiaWR4cGFy dCIgYmVjYXVzZSBpbmRleCAiaWR4cGFydF9pZHgxIiB1c2VzIGl0cyByb3cgdHlwZQorSElOVDog IFlvdSBtaWdodCBuZWVkIHRvIGRyb3AgaW5kZXggImlkeHBhcnRfaWR4MSIgZmlyc3QKK2Ryb3Ag aW5kZXggaWR4cGFydF9pZHgxOworYWx0ZXIgdGFibGUgaWR4cGFydCBhbHRlciBjb2x1bW4gYiBz ZXQgZGF0YSB0eXBlIGludDg7IC0tZXJyb3IKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxlICJp ZHhwYXJ0IiBiZWNhdXNlIGluZGV4ICJpZHhwYXJ0X2lkeDIiIHVzZXMgaXRzIHJvdyB0eXBlCitI SU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBpbmRleCAiaWR4cGFydF9pZHgyIiBmaXJzdAor ZHJvcCB0YWJsZSBpZHhwYXJ0OwogLS0gVmVyaWZ5IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGlu aGVyaXQgY29ycmVjdGx5CiBjcmVhdGUgdGFibGUgaWR4cGFydCAoYSBpbnQsIGIgaW50KSBwYXJ0 aXRpb24gYnkgcmFuZ2UgKGEpOwogY3JlYXRlIHRhYmxlIGlkeHBhcnQxIChsaWtlIGlkeHBhcnQp OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMuc3FsCmluZGV4IDczM2ExZGJjY2ZlLi5jN2Fl M2ZiNjY0MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29uc3RyYWludHMuc3Fs CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2NvbnN0cmFpbnRzLnNxbApAQCAtMTY1LDYgKzE2 NSwyNyBAQCBDUkVBVEUgVEFCTEUgU1lTX0NPTF9DSEVDS19UQkwgKGNpdHkgdGV4dCwgc3RhdGUg dGV4dCwgaXNfY2FwaXRhbCBib29sLAogICAgICAgICAgICAgICAgICAgYWx0aXR1ZGUgaW50LAog CQkJCSAgQ0hFQ0sgKE5PVCAoaXNfY2FwaXRhbCBBTkQgY3RpZDo6dGV4dCA9ICdzeXNfY29sX2No ZWNrX3RibCcpKSk7CiAKKy0tCistLSBEcm9wIGNvbHVtbiBhbHNvIGRyb3AgY2hlY2sgY29uc3Ry YWludHMgdGhhdCBoYXZlIHdob2xlLXJvdyByZWZlcmVuY2UKKy0tCitDUkVBVEUgVEFCTEUgRFJP UF9DT0xfQ0hFQ0tfVEJMICgKKyAgICBjaXR5IFRFWFQsIHN0YXRlIFRFWFQsCisgICAgQ09OU1RS QUlOVCBjYzAgQ0hFQ0sgKERST1BfQ09MX0NIRUNLX1RCTCBpcyBudWxsKSBOT1QgRU5GT1JDRUQs CisgICAgQ09OU1RSQUlOVCBjYzEgQ0hFQ0sgKERST1BfQ09MX0NIRUNLX1RCTCBpcyBub3QgbnVs bCkgTk9UIEVORk9SQ0VEKTsKK0FMVEVSIFRBQkxFIERST1BfQ09MX0NIRUNLX1RCTCBEUk9QIENP TFVNTiBjaXR5OworXGQgRFJPUF9DT0xfQ0hFQ0tfVEJMCitEUk9QIFRBQkxFIERST1BfQ09MX0NI RUNLX1RCTDsKKworLS0KKy0tIENoYW5nZSBjb2x1bW4gZGF0YSB0eXBlIHNob3VsZCBlcnJvciBv dXQgYmVjYXVzZSB0aGUgd2hvbGUtcm93IHJlZmVyZW5jZWQKKy0tIGNoZWNrIGNvbnN0cmFpbnQg aXMgc3RpbGwgbmVlZCBpdC4KKy0tCitDUkVBVEUgVEFCTEUgQUxURVJfQ09MX0NIRUNLX1RCTCAo CisgICAgY2l0eSBJTlQsIHN0YXRlIFRFWFQsCisgICAgQ09OU1RSQUlOVCBjYzEgQ0hFQ0sgKEFM VEVSX0NPTF9DSEVDS19UQkwgaXMgbm90IG51bGwpIE5PVCBFTkZPUkNFRCk7CitBTFRFUiBUQUJM RSBBTFRFUl9DT0xfQ0hFQ0tfVEJMIEFMVEVSIENPTFVNTiBjaXR5IFNFVCBEQVRBIFRZUEUgaW50 ODsKK0RST1AgVEFCTEUgQUxURVJfQ09MX0NIRUNLX1RCTDsKKwogLS0KIC0tIENoZWNrIGluaGVy aXRhbmNlIG9mIGRlZmF1bHRzIGFuZCBjb25zdHJhaW50cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4 aW5nLnNxbAppbmRleCBiNWNiMDFjMmQ3MC4uYjdjMDhjOWZmNWEgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL2luZGV4aW5nLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9p bmRleGluZy5zcWwKQEAgLTI5NSw2ICsyOTUsMTkgQEAgYWx0ZXIgdGFibGUgaWR4cGFydDIgZHJv cCBjb2x1bW4gYzsKIFxkIGlkeHBhcnQyCiBkcm9wIHRhYmxlIGlkeHBhcnQsIGlkeHBhcnQyOwog CitjcmVhdGUgdGFibGUgaWR4cGFydCAoYSBpbnQsIGIgaW50LCBjIGludCk7CitjcmVhdGUgaW5k ZXggb24gaWR4cGFydChjKTsKK2NyZWF0ZSBpbmRleCBpZHhwYXJ0X2lkeDEgb24gaWR4cGFydCgo aWR4cGFydCBpcyBub3QgbnVsbCkpOworY3JlYXRlIGluZGV4IGlkeHBhcnRfaWR4MiBvbiBpZHhw YXJ0KGEpIHdoZXJlIGlkeHBhcnQgaXMgbm90IG51bGw7CithbHRlciB0YWJsZSBpZHhwYXJ0IGRy b3AgY29sdW1uIGM7CitcZCBpZHhwYXJ0CitjcmVhdGUgaW5kZXggaWR4cGFydF9pZHgxIG9uIGlk eHBhcnQoKGlkeHBhcnQgaXMgbm90IG51bGwpKTsKK2NyZWF0ZSBpbmRleCBpZHhwYXJ0X2lkeDIg b24gaWR4cGFydChhKSB3aGVyZSBpZHhwYXJ0IGlzIG5vdCBudWxsOworYWx0ZXIgdGFibGUgaWR4 cGFydCBhbHRlciBjb2x1bW4gYSBzZXQgZGF0YSB0eXBlIGludDg7IC0tZXJyb3IKK2Ryb3AgaW5k ZXggaWR4cGFydF9pZHgxOworYWx0ZXIgdGFibGUgaWR4cGFydCBhbHRlciBjb2x1bW4gYiBzZXQg ZGF0YSB0eXBlIGludDg7IC0tZXJyb3IKK2Ryb3AgdGFibGUgaWR4cGFydDsKKwogLS0gVmVyaWZ5 IHRoYXQgZXhwcmVzc2lvbiBpbmRleGVzIGluaGVyaXQgY29ycmVjdGx5CiBjcmVhdGUgdGFibGUg aWR4cGFydCAoYSBpbnQsIGIgaW50KSBwYXJ0aXRpb24gYnkgcmFuZ2UgKGEpOwogY3JlYXRlIHRh YmxlIGlkeHBhcnQxIChsaWtlIGlkeHBhcnQpOwotLSAKMi4zNC4xCgo= --0000000000001a23e2064694c37a Content-Type: text/x-patch; charset="US-ASCII"; name="v6-0002-disallow-ALTER-TABLE-ALTER-COLUMN-when-wholerow-referenced-policy.patch" Content-Disposition: attachment; filename="v6-0002-disallow-ALTER-TABLE-ALTER-COLUMN-when-wholerow-referenced-policy.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjhxdohz0 RnJvbSA5NmMxZmI2Y2E2NzQzNjhkNGQ5YWVhMDk4MGE2YWYxNjU4YWJkNWNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IE1vbiwgMjIgRGVjIDIwMjUgMjM6MjU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 IDIvMl0gZGlzYWxsb3cgQUxURVIgVEFCTEUgQUxURVIgQ09MVU1OIHdoZW4gd2hvbGVyb3cKIHJl ZmVyZW5jZWQgcG9saWN5IGV4aXN0cwoKUG9saWN5IGhhdmUgYSBERVBFTkRFTkNZX05PUk1BTCB0 eXBlIHdpdGggdGhlaXIgc291cmNlIHRhYmxlLiAgUG9saWN5J3MgcXVhbCBhbmQKd2l0aCBjaGVj ayBxdWFsIGFyZSBxdWl0ZSB1bmNvbnN0cmFpbmVkIChhbGxvd2luZyBzdWJxdWVyaWVzKSwgd2Ug Y2FuJ3QgcmVsaWFibHkKdXNlIHB1bGxfdmFyYXR0bm9zIHRvIGRldGVjdCBpZiB0aGV5IGNvbnRh aW4gc3VicXVlcmllcy4gIEEgZnVydGhlciBjb21wbGljYXRpb24KaXMgdGhhdCB0aGUgcXVhbCBh bmQgd2l0aCBjaGVjayBxdWFsIHdob2xlLXJvdyBWYXIgbWF5IG5vdCBvbmx5IHJlZmVyZW5jZXMg dGhlaXIKb3duIHRhYmxlIGJ1dCBhbHNvIGZvciBvdGhlciB1bnJlbGF0ZWQgdGFibGVzLgoKVGhl cmVmb3JlIFdlIHNob3VsZCBjaGVjayBwZ19kZXBlbmQsIG5vdCBwZ19wb2xpY3ksIHRvIHNlZSBp ZiBkcm9wcGluZyB0aGlzCnRhYmxlIGFmZmVjdHMgYW55IHBvbGljeSBvYmplY3RzLiBBZnRlciBj b2xsZWN0aW5nIHRoZSBwb2xpY2llcyBpbXBhY3RlZCBieSB0aGUKQUxURVIgVEFCTEUgY29tbWFu ZCwgY2hlY2sgZWFjaCBwb2xpY3kgcXVhbCBhbmQgd2l0aCBjaGVjayBxdWFsLCBzZWUgaWYKd2hv bGUtcm93IHJlZmVyZW5jZXMgb3Igbm90LgoKZGVtbzoKQ1JFQVRFIFRBQkxFIHJsc190YmwgKGEg aW50LCBiIGludCwgYyBpbnQpOwpDUkVBVEUgVEFCTEUgdCAoYSBpbnQpOwpDUkVBVEUgUE9MSUNZ IHAxIE9OIHJsc190YmwgVVNJTkcgKHJsc190YmwgPj0gUk9XKDEsMSwxKSBhbmQgKHNlbGVjdCB0 IGlzIG51bGwgZnJvbSB0KSk7CgpBTFRFUiBUQUJMRSB0IERST1AgQ09MVU1OIGE7IC0tZXJyb3IK RVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gYSBvZiB0YWJsZSB0IGJlY2F1c2Ugb3RoZXIgb2Jq ZWN0cyBkZXBlbmQgb24gaXQKREVUQUlMOiAgcG9saWN5IHAxIG9uIHRhYmxlIHJsc190YmwgZGVw ZW5kcyBvbiBjb2x1bW4gYSBvZiB0YWJsZSB0CkhJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0 byBkcm9wIHRoZSBkZXBlbmRlbnQgb2JqZWN0cyB0b28uCgpBTFRFUiBUQUJMRSBybHNfdGJsIERS T1AgQ09MVU1OIGI7IC0tZXJyb3IKRVJST1I6ICBjYW5ub3QgZHJvcCBjb2x1bW4gYiBvZiB0YWJs ZSBybHNfdGJsIGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKREVUQUlMOiAgcG9s aWN5IHAxIG9uIHRhYmxlIHJsc190YmwgZGVwZW5kcyBvbiBjb2x1bW4gYiBvZiB0YWJsZSBybHNf dGJsCkhJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2Jq ZWN0cyB0b28uCgpBTFRFUiBUQUJMRSBybHNfdGJsIEFMVEVSIENPTFVNTiBiIFNFVCBEQVRBIFRZ UEUgQklHSU5UOyAtLWVycm9yCkVSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxlICJybHNfdGJsIiBi ZWNhdXNlIHNlY3VyaXR5IHBvbGljeSAicDEiIHVzZXMgaXRzIHJvdyB0eXBlCkhJTlQ6ICBZb3Ug bWlnaHQgbmVlZCB0byBkcm9wIHBvbGljeSAicDEiIGZpcnN0CgpBTFRFUiBUQUJMRSB0IEFMVEVS IENPTFVNTiBhIFNFVCBEQVRBIFRZUEUgQklHSU5UOyAtLWVycm9yCkVSUk9SOiAgY2Fubm90IGFs dGVyIHRhYmxlICJ0IiBiZWNhdXNlIHNlY3VyaXR5IHBvbGljeSAicDEiIHVzZXMgaXRzIHJvdyB0 eXBlCkhJTlQ6ICBZb3UgbWlnaHQgbmVlZCB0byBkcm9wIHNlY3VyaXR5IHBvbGljeSAicDEiIGZp cnN0CgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQ0p1ZnhHQTZLVlF5N0RiSEdM Vnc5czlLS21wR3ladDVNRTZDN2tFZmpEcHIyd1pDd0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9i YWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jICAgICAgICAgIHwgMTQ3ICsrKysrKysrKysrKysr KysrKysrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Zhci5jICAgICAgICAgIHwgIDU5 ICsrKysrKysrKwogc3JjL2luY2x1ZGUvb3B0aW1pemVyL29wdGltaXplci5oICAgICAgICAgfCAg IDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dzZWN1cml0eS5vdXQgfCAgMjkgKysr Ky0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbCAgICAgIHwgIDE3ICsrKwog c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAgICAgfCAgIDEgKwogNiBmaWxl cyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3RhYmxlY21kcy5jCmluZGV4IGE1NDFiNzk1ZDQ4Li42ZmRhY2FiN2M2NiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdGFibGVjbWRzLmMKQEAgLTc0OSw2ICs3NDksOCBAQCBzdGF0aWMgdm9pZCByZWNvcmRXaG9s ZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IoUmVsYXRpb24gcmVsLAogCQkJCQkJCQkJCQkgIGNvbnN0 IE9iamVjdEFkZHJlc3MgKm9iamVjdCwKIAkJCQkJCQkJCQkJICBib29sIGVycm9yX291dCk7CiAK K3N0YXRpYyBMaXN0ICpHZXRBbGxQb2xpY2llc1JlbGF0aW9ucyhSZWxhdGlvbiByZWwpOworCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24KICAqCQkJCUNyZWF0ZXMgYSBuZXcgcmVsYXRp b24uCkBAIC0yMzM2NSw3ICsyMzM2Nyw3IEBAIEFURXhlY1NwbGl0UGFydGl0aW9uKExpc3QgKip3 cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVsLAogfQogCiAvKgotICog UmVjb3JkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHdob2xlLXJvdyBvYmplY3RzIChpbmRleGVzLCBD SEVDSyBjb25zdHJhaW50cykKKyAqIFJlY29yZCBkZXBlbmRlbmNpZXMgYmV0d2VlbiB3aG9sZS1y b3cgb2JqZWN0cyAoaW5kZXhlcywgQ0hFQ0sgY29uc3RyYWludHMsIHBvbGljaWVzKQogICogYW5k IHRoZSByZWxhdGlvbidzIE9iamVjdEFkZHJlc3MuCiAgKgogICogZXJyb3Jfb3V0IG1lYW5zIGNh biBub3QgaW5zdGFsbCBzdWNoIGRlcGVuZGVuY3ksIGVycm9yIG91dCBleHBsaWNpdGx5LgpAQCAt MjMzODYsNiArMjMzODgsOSBAQCByZWNvcmRXaG9sZVJvd0RlcGVuZGVuY3lPbk9yRXJyb3IoUmVs YXRpb24gcmVsLCBjb25zdCBPYmplY3RBZGRyZXNzICpvYmplY3QsIGJvbwogCURhdHVtCQlleHBy RGF0dW07CiAJY2hhcgkgICAqZXhwclN0cmluZzsKIAlib29sCQlpc251bGw7CisJTGlzdAkgICAq cG9scyA9IE5JTDsKKwlSZWxhdGlvbglwZ19wb2xpY3k7CisJT2lkCQkJcmVsdHlwaWQ7CiAJYm9v bAkJZmluZF93aG9sZXJvdyA9IGZhbHNlOwogCVR1cGxlQ29uc3RyICpjb25zdHIgPSBSZWxhdGlv bkdldERlc2NyKHJlbCktPmNvbnN0cjsKIApAQCAtMjM1NzgsNCArMjM1ODMsMTQ0IEBAIHJlY29y ZFdob2xlUm93RGVwZW5kZW5jeU9uT3JFcnJvcihSZWxhdGlvbiByZWwsIGNvbnN0IE9iamVjdEFk ZHJlc3MgKm9iamVjdCwgYm9vCiAJCX0KIAkJUmVsZWFzZVN5c0NhY2hlKGluZGV4VHVwbGUpOwog CX0KKworCXJlbHR5cGlkID0gZ2V0X3JlbF90eXBlX2lkKFJlbGF0aW9uR2V0UmVsaWQocmVsKSk7 CisKKwlwZ19wb2xpY3kgPSB0YWJsZV9vcGVuKFBvbGljeVJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJl TG9jayk7CisKKwlwb2xzID0gR2V0QWxsUG9saWNpZXNSZWxhdGlvbnMocmVsKTsKKworCWZvcmVh Y2hfb2lkKHBvbGljeW9pZCwgcG9scykKKwl7CisJCU9iamVjdEFkZHJlc3MgcG9sX29iajsKKwkJ U3lzU2NhbkRlc2Mgc3NjYW47CisJCUhlYXBUdXBsZQlwb2xpY3lfdHVwbGU7CisJCVNjYW5LZXlE YXRhIHBvbHNrZXlbMV07CisKKwkJU2NhbktleUluaXQoJnBvbHNrZXlbMF0sCisJCQkJCUFudW1f cGdfcG9saWN5X29pZCwKKwkJCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX09JREVRLAorCQkJ CQlPYmplY3RJZEdldERhdHVtKHBvbGljeW9pZCkpOworCQlzc2NhbiA9IHN5c3RhYmxlX2JlZ2lu c2NhbihwZ19wb2xpY3ksCisJCQkJCQkJCSAgIFBvbGljeU9pZEluZGV4SWQsIHRydWUsIE5VTEws IDEsCisJCQkJCQkJCSAgIHBvbHNrZXkpOworCQl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZChwb2xp Y3lfdHVwbGUgPSBzeXN0YWJsZV9nZXRuZXh0KHNzY2FuKSkpCisJCXsKKwkJCUZvcm1fcGdfcG9s aWN5IHBvbGljeSA9IChGb3JtX3BnX3BvbGljeSkgR0VUU1RSVUNUKHBvbGljeV90dXBsZSk7CisK KwkJCS8qIEdldCBwb2xpY3kgcXVhbCAqLworCQkJZXhwckRhdHVtID0gaGVhcF9nZXRhdHRyKHBv bGljeV90dXBsZSwgQW51bV9wZ19wb2xpY3lfcG9scXVhbCwKKwkJCQkJCQkJCSBSZWxhdGlvbkdl dERlc2NyKHBnX3BvbGljeSksICZpc251bGwpOworCQkJaWYgKCFpc251bGwpCisJCQl7CisJCQkJ ZXhwclN0cmluZyA9IFRleHREYXR1bUdldENTdHJpbmcoZXhwckRhdHVtKTsKKwkJCQlleHByID0g KE5vZGUgKikgc3RyaW5nVG9Ob2RlKGV4cHJTdHJpbmcpOworCQkJCXBmcmVlKGV4cHJTdHJpbmcp OworCisJCQkJZmluZF93aG9sZXJvdyA9IEV4cHJDb250YWluV2hvbGVSb3coZXhwciwgcmVsdHlw aWQpOworCisJCQkJaWYgKGZpbmRfd2hvbGVyb3cgJiYgIWVycm9yX291dCkKKwkJCQl7CisJCQkJ CXBvbF9vYmouY2xhc3NJZCA9IFBvbGljeVJlbGF0aW9uSWQ7CisJCQkJCXBvbF9vYmoub2JqZWN0 SWQgPSBwb2xpY3ktPm9pZDsKKwkJCQkJcG9sX29iai5vYmplY3RTdWJJZCA9IDA7CisKKwkJCQkJ LyoKKwkJCQkJICogcmVjb3JkIGRlcGVuZGVuY3kgZm9yIHBvbGljaWVzIHRoYXQgcmVmZXJlbmNl cworCQkJCQkgKiB3aG9sZS1yb3cgVmFyCisJCQkJCSAqLworCQkJCQlyZWNvcmREZXBlbmRlbmN5 T24oJnBvbF9vYmosIG9iamVjdCwgREVQRU5ERU5DWV9OT1JNQUwpOworCisJCQkJCWNvbnRpbnVl OworCQkJCX0KKworCQkJCWlmIChmaW5kX3dob2xlcm93ICYmIGVycm9yX291dCkKKwkJCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfREFUQVRZUEVfTUlTTUFUQ0gpLAor CQkJCQkJCWVycm1zZygiY2Fubm90IGFsdGVyIHRhYmxlIFwiJXNcIiBiZWNhdXNlIHNlY3VyaXR5 IHBvbGljeSBcIiVzXCIgdXNlcyBpdHMgcm93IHR5cGUiLAorCQkJCQkJCQkgICBSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWwpLAorCQkJCQkJCQkgICBOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkp LAorCQkJCQkJCWVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGRyb3Agc2VjdXJpdHkgcG9saWN5 IFwiJXNcIiBmaXJzdCIsCisJCQkJCQkJCQlOYW1lU3RyKHBvbGljeS0+cG9sbmFtZSkpKTsKKwkJ CX0KKworCQkJZXhwckRhdHVtID0gaGVhcF9nZXRhdHRyKHBvbGljeV90dXBsZSwgQW51bV9wZ19w b2xpY3lfcG9sd2l0aGNoZWNrLAorCQkJCQkJCQkJIFJlbGF0aW9uR2V0RGVzY3IocGdfcG9saWN5 KSwgJmlzbnVsbCk7CisJCQlpZiAoIWlzbnVsbCkKKwkJCXsKKwkJCQlleHByU3RyaW5nID0gVGV4 dERhdHVtR2V0Q1N0cmluZyhleHByRGF0dW0pOworCQkJCWV4cHIgPSAoTm9kZSAqKSBzdHJpbmdU b05vZGUoZXhwclN0cmluZyk7CisJCQkJcGZyZWUoZXhwclN0cmluZyk7CisKKwkJCQlmaW5kX3do b2xlcm93ID0gRXhwckNvbnRhaW5XaG9sZVJvdyhleHByLCByZWx0eXBpZCk7CisKKwkJCQlpZiAo ZmluZF93aG9sZXJvdyAmJiAhZXJyb3Jfb3V0KQorCQkJCXsKKwkJCQkJcG9sX29iai5jbGFzc0lk ID0gUG9saWN5UmVsYXRpb25JZDsKKwkJCQkJcG9sX29iai5vYmplY3RJZCA9IHBvbGljeS0+b2lk OworCQkJCQlwb2xfb2JqLm9iamVjdFN1YklkID0gMDsKKworCQkJCQkvKgorCQkJCQkgKiByZWNv cmQgZGVwZW5kZW5jeSBmb3IgcG9saWNpZXMgdGhhdCByZWZlcmVuY2VzCisJCQkJCSAqIHdob2xl LXJvdyBWYXIKKwkJCQkJICovCisJCQkJCXJlY29yZERlcGVuZGVuY3lPbigmcG9sX29iaiwgb2Jq ZWN0LCBERVBFTkRFTkNZX05PUk1BTCk7CisJCQkJfQorCisJCQkJaWYgKGZpbmRfd2hvbGVyb3cg JiYgZXJyb3Jfb3V0KQorCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9EQVRBVFlQRV9NSVNNQVRDSCksCisJCQkJCQkJZXJybXNnKCJjYW5ub3QgYWx0ZXIgdGFibGUg XCIlc1wiIGJlY2F1c2Ugc2VjdXJpdHkgcG9saWN5IFwiJXNcIiB1c2VzIGl0cyByb3cgdHlwZSIs CisJCQkJCQkJCSAgIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksCisJCQkJCQkJCSAgIE5h bWVTdHIocG9saWN5LT5wb2xuYW1lKSksCisJCQkJCQkJZXJyaGludCgiWW91IG1pZ2h0IG5lZWQg dG8gZHJvcCBzZWN1cml0eSBwb2xpY3kgXCIlc1wiIGZpcnN0IiwKKwkJCQkJCQkJCU5hbWVTdHIo cG9saWN5LT5wb2xuYW1lKSkpOworCQkJfQorCQl9CisJCXN5c3RhYmxlX2VuZHNjYW4oc3NjYW4p OworCX0KKwl0YWJsZV9jbG9zZShwZ19wb2xpY3ksIEFjY2Vzc1NoYXJlTG9jayk7Cit9CisKK3N0 YXRpYyBMaXN0ICoKK0dldEFsbFBvbGljaWVzUmVsYXRpb25zKFJlbGF0aW9uIHJlbCkKK3sKKwlS ZWxhdGlvbglkZXBSZWw7CisJU2NhbktleURhdGEga2V5WzNdOworCVN5c1NjYW5EZXNjIHNjYW47 CisJSGVhcFR1cGxlCWRlcFR1cDsKKwlMaXN0CSAgICpyZXN1bHQgPSBOSUw7CisKKwlkZXBSZWwg PSB0YWJsZV9vcGVuKERlcGVuZFJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCVNjYW5L ZXlJbml0KCZrZXlbMF0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVmY2xhc3NpZCwKKwkJCQlCVEVx dWFsU3RyYXRlZ3lOdW1iZXIsIEZfT0lERVEsCisJCQkJT2JqZWN0SWRHZXREYXR1bShSZWxhdGlv blJlbGF0aW9uSWQpKTsKKwlTY2FuS2V5SW5pdCgma2V5WzFdLAorCQkJCUFudW1fcGdfZGVwZW5k X3JlZm9iamlkLAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmpl Y3RJZEdldERhdHVtKFJlbGF0aW9uR2V0UmVsaWQocmVsKSkpOworCVNjYW5LZXlJbml0KCZrZXlb Ml0sCisJCQkJQW51bV9wZ19kZXBlbmRfcmVmb2Jqc3ViaWQsCisJCQkJQlRFcXVhbFN0cmF0ZWd5 TnVtYmVyLCBGX0lOVDRFUSwKKwkJCQlJbnQzMkdldERhdHVtKChpbnQzMikgMCkpOworCisJc2Nh biA9IHN5c3RhYmxlX2JlZ2luc2NhbihkZXBSZWwsIERlcGVuZFJlZmVyZW5jZUluZGV4SWQsIHRy dWUsCisJCQkJCQkJICBOVUxMLCAzLCBrZXkpOworCXdoaWxlIChIZWFwVHVwbGVJc1ZhbGlkKGRl cFR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2NhbikpKQorCXsKKwkJRm9ybV9wZ19kZXBlbmQgZm91 bmREZXAgPSAoRm9ybV9wZ19kZXBlbmQpIEdFVFNUUlVDVChkZXBUdXApOworCQlPYmplY3RBZGRy ZXNzIGZvdW5kT2JqZWN0OworCisJCWZvdW5kT2JqZWN0LmNsYXNzSWQgPSBmb3VuZERlcC0+Y2xh c3NpZDsKKwkJZm91bmRPYmplY3Qub2JqZWN0SWQgPSBmb3VuZERlcC0+b2JqaWQ7CisJCWZvdW5k T2JqZWN0Lm9iamVjdFN1YklkID0gZm91bmREZXAtPm9ianN1YmlkOworCisJCWlmIChmb3VuZE9i amVjdC5jbGFzc0lkID09IFBvbGljeVJlbGF0aW9uSWQpCisJCQlyZXN1bHQgPSBsaXN0X2FwcGVu ZF91bmlxdWVfb2lkKHJlc3VsdCwgZm91bmRPYmplY3Qub2JqZWN0SWQpOworCX0KKwlzeXN0YWJs ZV9lbmRzY2FuKHNjYW4pOworCXRhYmxlX2Nsb3NlKGRlcFJlbCwgTm9Mb2NrKTsKKworCXJldHVy biByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC92YXIu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3Zhci5jCmluZGV4IDgwNjUyMzdhMTg5Li4y NDRjODY2YzE3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMK KysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMKQEAgLTQ5LDYgKzQ5LDExIEBA IHR5cGVkZWYgc3RydWN0CiAJaW50CQkJc3VibGV2ZWxzX3VwOwogfSBwdWxsX3ZhcnNfY29udGV4 dDsKIAordHlwZWRlZiBzdHJ1Y3QKK3sKKwlPaWQJCQlyZWx0eXBpZDsJLyogdGhlIHdob2xlLXJv dyB0eXBlaWQgKi8KK30gY29udGFpbl93aG9sZXJvd19jb250ZXh0OworCiB0eXBlZGVmIHN0cnVj dAogewogCWludAkJCXZhcl9sb2NhdGlvbjsKQEAgLTczLDYgKzc4LDcgQEAgdHlwZWRlZiBzdHJ1 Y3QKIHN0YXRpYyBib29sIHB1bGxfdmFybm9zX3dhbGtlcihOb2RlICpub2RlLAogCQkJCQkJCSAg IHB1bGxfdmFybm9zX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wgcHVsbF92YXJhdHRu b3Nfd2Fsa2VyKE5vZGUgKm5vZGUsIHB1bGxfdmFyYXR0bm9zX2NvbnRleHQgKmNvbnRleHQpOwor c3RhdGljIGJvb2wgRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIoTm9kZSAqbm9kZSwgY29udGFp bl93aG9sZXJvd19jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyBib29sIHB1bGxfdmFyc193YWxr ZXIoTm9kZSAqbm9kZSwgcHVsbF92YXJzX2NvbnRleHQgKmNvbnRleHQpOwogc3RhdGljIGJvb2wg Y29udGFpbl92YXJfY2xhdXNlX3dhbGtlcihOb2RlICpub2RlLCB2b2lkICpjb250ZXh0KTsKIHN0 YXRpYyBib29sIGNvbnRhaW5fdmFyc19vZl9sZXZlbF93YWxrZXIoTm9kZSAqbm9kZSwgaW50ICpz dWJsZXZlbHNfdXApOwpAQCAtMzI3LDYgKzMzMyw1OSBAQCBwdWxsX3ZhcmF0dG5vc193YWxrZXIo Tm9kZSAqbm9kZSwgcHVsbF92YXJhdHRub3NfY29udGV4dCAqY29udGV4dCkKIAlyZXR1cm4gZXhw cmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBwdWxsX3ZhcmF0dG5vc193YWxrZXIsIGNvbnRleHQp OwogfQogCitzdGF0aWMgYm9vbAorRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIoTm9kZSAqbm9k ZSwgY29udGFpbl93aG9sZXJvd19jb250ZXh0ICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5V TEwpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChJc0Eobm9kZSwgVmFyKSkKKwl7CisJCVZhcgkJ ICAgKnZhciA9IChWYXIgKikgbm9kZTsKKworCQlpZiAodmFyLT52YXJhdHRubyA9PSBJbnZhbGlk QXR0ck51bWJlciAmJgorCQkJdmFyLT52YXJ0eXBlID09IGNvbnRleHQtPnJlbHR5cGlkKQorCQkJ cmV0dXJuIHRydWU7CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChJc0Eobm9kZSwgUXVl cnkpKQorCXsKKwkJYm9vbAkJcmVzdWx0OworCisJCXJlc3VsdCA9IHF1ZXJ5X3RyZWVfd2Fsa2Vy KChRdWVyeSAqKSBub2RlLCBFeHByQ29udGFpbldob2xlUm93X3dhbGtlciwKKwkJCQkJCQkJICAg Y29udGV4dCwgMCk7CisJCXJldHVybiByZXN1bHQ7CisJfQorCisJcmV0dXJuIGV4cHJlc3Npb25f dHJlZV93YWxrZXIobm9kZSwgRXhwckNvbnRhaW5XaG9sZVJvd193YWxrZXIsIGNvbnRleHQpOwor fQorCisvKgorICogRXhwckNvbnRhaW5XaG9sZVJvdyAtCisgKgorICogRGV0ZXJtaW5lIHdoZXRo ZXIgYW4gZXhwcmVzc2lvbiBjb250YWlucyBhIHdob2xlLXJvdyBWYXIsIHJlY3Vyc2luZyBhcyBu ZWVkZWQuCisgKiBGb3Igc2ltcGxlIGV4cHJlc3Npb25zIHdpdGhvdXQgc3VibGlua3MsIHB1bGxf dmFyYXR0bm9zIGlzIHVzdWFsbHkgc3VmZmljaWVudAorICogdG8gZGV0ZWN0IGEgd2hvbGUtcm93 IFZhci4gQnV0IGlmIHRoZSBub2RlIGNvbnRhaW5zIHN1YmxpbmtzICh1bnBsYW5uZWQKKyAqIHN1 YnF1ZXJpZXMpLCB0aGUgY2hlY2sgbXVzdCBpbnN0ZWFkIHJlbHkgb24gdGhlIHdob2xlLXJvdyB0 eXBlIE9JRC4KKyAqIFVzZSBFeHByQ29udGFpbldob2xlUm93IHRvIGNoZWNrIHdob2xlLXJvdyB2 YXIgZXhpc3RzZW5jZSB3aGVuIGluIGRvdWJ0LgorICovCitib29sCitFeHByQ29udGFpbldob2xl Um93KE5vZGUgKm5vZGUsIE9pZCByZWx0eXBpZCkKK3sKKwljb250YWluX3dob2xlcm93X2NvbnRl eHQgY29udGV4dDsKKworCWNvbnRleHQucmVsdHlwaWQgPSByZWx0eXBpZDsKKworCUFzc2VydChP aWRJc1ZhbGlkKHJlbHR5cGlkKSk7CisKKwlyZXR1cm4gcXVlcnlfb3JfZXhwcmVzc2lvbl90cmVl X3dhbGtlcihub2RlLAorCQkJCQkJCQkJCSAgIEV4cHJDb250YWluV2hvbGVSb3dfd2Fsa2VyLAor CQkJCQkJCQkJCSAgICZjb250ZXh0LAorCQkJCQkJCQkJCSAgIDApOworfQorCiAKIC8qCiAgKiBw dWxsX3ZhcnNfb2ZfbGV2ZWwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRp bWl6ZXIuaCBiL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRpbWl6ZXIuaAppbmRleCA0NGVjNTI5 NmExOC4uMzRiOGU3ZmFjYjcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL29wdGltaXplci9vcHRp bWl6ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvb3B0aW1pemVyLmgKQEAgLTE5OSw2 ICsxOTksNyBAQCBleHRlcm4gU29ydEdyb3VwQ2xhdXNlICpnZXRfc29ydGdyb3VwcmVmX2NsYXVz ZV9ub2VycihJbmRleCBzb3J0cmVmLAogZXh0ZXJuIEJpdG1hcHNldCAqcHVsbF92YXJub3MoUGxh bm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUpOwogZXh0ZXJuIEJpdG1hcHNldCAqcHVsbF92YXJu b3Nfb2ZfbGV2ZWwoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKm5vZGUsIGludCBsZXZlbHN1cCk7 CiBleHRlcm4gdm9pZCBwdWxsX3ZhcmF0dG5vcyhOb2RlICpub2RlLCBJbmRleCB2YXJubywgQml0 bWFwc2V0ICoqdmFyYXR0bm9zKTsKK2V4dGVybiBib29sIEV4cHJDb250YWluV2hvbGVSb3coTm9k ZSAqbm9kZSwgT2lkIHJlbHR5cGlkKTsKIGV4dGVybiBMaXN0ICpwdWxsX3ZhcnNfb2ZfbGV2ZWwo Tm9kZSAqbm9kZSwgaW50IGxldmVsc3VwKTsKIGV4dGVybiBib29sIGNvbnRhaW5fdmFyX2NsYXVz ZShOb2RlICpub2RlKTsKIGV4dGVybiBib29sIGNvbnRhaW5fdmFyc19vZl9sZXZlbChOb2RlICpu b2RlLCBpbnQgbGV2ZWxzdXApOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9yb3dzZWN1cml0eS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5 Lm91dAppbmRleCBjOTU4ZWY0ZDcwYS4uMWVmZjZlNTVlZjMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0CkBAIC0yNjM3LDYgKzI2MzcsMzIgQEAgU0VMRUNUICog RlJPTSBkb2N1bWVudDsKICAgMTQgfCAgMTEgfCAgICAgIDEgfCByZWdyZXNzX3Jsc19ib2IgICB8 IG5ldyBub3ZlbCAgICAgICAgICAgICAgICAgICAgICAgIHwgCiAoMTYgcm93cykKIAorLS1jaGVj ayBkcm9wIGNvbHVtbiAobm8gQ0FTQ0FERSkgb3IgYWx0ZXIgY29sdW1uIGRhdGEgdHlwZSB3aWxs IGZhaWwgYmVjYXVzZSBvZgorLS13aG9sZS1yb3cgcmVmZXJlbmNlZCBzZWN1cml0eSBwb2xpY3kg ZXhpc3RzLgorRFJPUCBUQUJMRSAgcGFydF9kb2N1bWVudDsKK0FMVEVSIFRBQkxFIGRvY3VtZW50 IEFERCBDT0xVTU4gZHVtbXkgSU5UNCwgQUREIENPTFVNTiBkdW1teTEgSU5UNDsKK0NSRUFURSBQ T0xJQ1kgcDcgT04gZG9jdW1lbnQgQVMgUEVSTUlTU0lWRQorICAgIFVTSU5HIChjaWQgSVMgTk9U IE5VTEwgQU5ECisgICAgKFdJVEggY3RlIEFTIChTRUxFQ1QgVFJVRSBGUk9NIHVhY2NvdW50Cisg ICAgICAgIFdIRVJFIEVYSVNUUyAoU0VMRUNUIGRvY3VtZW50IEZST00gdWFjY291bnQgV0hFUkUg dWFjY291bnQgSVMgTlVMTCkpCisgICAgU0VMRUNUICogRlJPTSBjdGUpKTsKK0FMVEVSIFRBQkxF IHVhY2NvdW50IEFMVEVSIENPTFVNTiBzZWNsdiBTRVQgREFUQSBUWVBFIEJJR0lOVDsgLS1lcnJy b3IKK0VSUk9SOiAgY2Fubm90IGFsdGVyIHRhYmxlICJ1YWNjb3VudCIgYmVjYXVzZSBzZWN1cml0 eSBwb2xpY3kgInA3IiB1c2VzIGl0cyByb3cgdHlwZQorSElOVDogIFlvdSBtaWdodCBuZWVkIHRv IGRyb3Agc2VjdXJpdHkgcG9saWN5ICJwNyIgZmlyc3QKK0FMVEVSIFRBQkxFIGRvY3VtZW50IEFM VEVSIENPTFVNTiBkdW1teSBTRVQgREFUQSBUWVBFIEJJR0lOVDsgLS1lcnJvcgorRVJST1I6ICBj YW5ub3QgYWx0ZXIgdGFibGUgImRvY3VtZW50IiBiZWNhdXNlIHNlY3VyaXR5IHBvbGljeSAicDci IHVzZXMgaXRzIHJvdyB0eXBlCitISU5UOiAgWW91IG1pZ2h0IG5lZWQgdG8gZHJvcCBzZWN1cml0 eSBwb2xpY3kgInA3IiBmaXJzdAorQUxURVIgVEFCTEUgZG9jdW1lbnQgRFJPUCBDT0xVTU4gZHVt bXk7IC0tZXJyb3IKK0VSUk9SOiAgY2Fubm90IGRyb3AgY29sdW1uIGR1bW15IG9mIHRhYmxlIGRv Y3VtZW50IGJlY2F1c2Ugb3RoZXIgb2JqZWN0cyBkZXBlbmQgb24gaXQKK0RFVEFJTDogIHBvbGlj eSBwNyBvbiB0YWJsZSBkb2N1bWVudCBkZXBlbmRzIG9uIGNvbHVtbiBkdW1teSBvZiB0YWJsZSBk b2N1bWVudAorSElOVDogIFVzZSBEUk9QIC4uLiBDQVNDQURFIHRvIGRyb3AgdGhlIGRlcGVuZGVu dCBvYmplY3RzIHRvby4KK0FMVEVSIFRBQkxFIHVhY2NvdW50IERST1AgQ09MVU1OIHNlY2x2OyAt LWVycm9yCitFUlJPUjogIGNhbm5vdCBkcm9wIGNvbHVtbiBzZWNsdiBvZiB0YWJsZSB1YWNjb3Vu dCBiZWNhdXNlIG90aGVyIG9iamVjdHMgZGVwZW5kIG9uIGl0CitERVRBSUw6ICBwb2xpY3kgcDcg b24gdGFibGUgZG9jdW1lbnQgZGVwZW5kcyBvbiBjb2x1bW4gc2VjbHYgb2YgdGFibGUgdWFjY291 bnQKK0hJTlQ6ICBVc2UgRFJPUCAuLi4gQ0FTQ0FERSB0byBkcm9wIHRoZSBkZXBlbmRlbnQgb2Jq ZWN0cyB0b28uCitBTFRFUiBUQUJMRSBkb2N1bWVudCBEUk9QIENPTFVNTiBkdW1teSBDQVNDQURF OyAtLW9rCitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHBvbGljeSBwNyBvbiB0YWJsZSBkb2N1 bWVudAorQUxURVIgVEFCTEUgdWFjY291bnQgRFJPUCBDT0xVTU4gc2VjbHYgQ0FTQ0FERTsgLS1v awogLS0KIC0tIFJPTEUvR1JPVVAKIC0tCkBAIC01MTA1LDEyICs1MTMxLDExIEBAIGRyb3AgdGFi bGUgcmxzX3QsIHRlc3RfdDsKIC0tCiBSRVNFVCBTRVNTSU9OIEFVVEhPUklaQVRJT047CiBEUk9Q IFNDSEVNQSByZWdyZXNzX3Jsc19zY2hlbWEgQ0FTQ0FERTsKLU5PVElDRTogIGRyb3AgY2FzY2Fk ZXMgdG8gMzAgb3RoZXIgb2JqZWN0cworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byAyOSBvdGhl ciBvYmplY3RzCiBERVRBSUw6ICBkcm9wIGNhc2NhZGVzIHRvIGZ1bmN0aW9uIGZfbGVhayh0ZXh0 KQogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSB1YWNjb3VudAogZHJvcCBjYXNjYWRlcyB0byB0YWJs ZSBjYXRlZ29yeQogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBkb2N1bWVudAotZHJvcCBjYXNjYWRl cyB0byB0YWJsZSBwYXJ0X2RvY3VtZW50CiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGRlcGVuZGVu dAogZHJvcCBjYXNjYWRlcyB0byB0YWJsZSByZWMxCiBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIHJl YzIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbCBiL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbAppbmRleCA1ZDkyM2M1Y2EzYi4uNzY0 ODdiNWU0YmEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNx bAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0eS5zcWwKQEAgLTExNjMsNiAr MTE2MywyMyBAQCBEUk9QIFBPTElDWSBwMSBPTiBkb2N1bWVudDsKIC0tIEp1c3QgY2hlY2sgZXZl cnl0aGluZyB3ZW50IHBlciBwbGFuCiBTRUxFQ1QgKiBGUk9NIGRvY3VtZW50OwogCistLWNoZWNr IGRyb3AgY29sdW1uIChubyBDQVNDQURFKSBvciBhbHRlciBjb2x1bW4gZGF0YSB0eXBlIHdpbGwg ZmFpbCBiZWNhdXNlIG9mCistLXdob2xlLXJvdyByZWZlcmVuY2VkIHNlY3VyaXR5IHBvbGljeSBl eGlzdHMuCitEUk9QIFRBQkxFICBwYXJ0X2RvY3VtZW50OworQUxURVIgVEFCTEUgZG9jdW1lbnQg QUREIENPTFVNTiBkdW1teSBJTlQ0LCBBREQgQ09MVU1OIGR1bW15MSBJTlQ0OworQ1JFQVRFIFBP TElDWSBwNyBPTiBkb2N1bWVudCBBUyBQRVJNSVNTSVZFCisgICAgVVNJTkcgKGNpZCBJUyBOT1Qg TlVMTCBBTkQKKyAgICAoV0lUSCBjdGUgQVMgKFNFTEVDVCBUUlVFIEZST00gdWFjY291bnQKKyAg ICAgICAgV0hFUkUgRVhJU1RTIChTRUxFQ1QgZG9jdW1lbnQgRlJPTSB1YWNjb3VudCBXSEVSRSB1 YWNjb3VudCBJUyBOVUxMKSkKKyAgICBTRUxFQ1QgKiBGUk9NIGN0ZSkpOworQUxURVIgVEFCTEUg dWFjY291bnQgQUxURVIgQ09MVU1OIHNlY2x2IFNFVCBEQVRBIFRZUEUgQklHSU5UOyAtLWVycnJv cgorQUxURVIgVEFCTEUgZG9jdW1lbnQgQUxURVIgQ09MVU1OIGR1bW15IFNFVCBEQVRBIFRZUEUg QklHSU5UOyAtLWVycm9yCisKK0FMVEVSIFRBQkxFIGRvY3VtZW50IERST1AgQ09MVU1OIGR1bW15 OyAtLWVycm9yCitBTFRFUiBUQUJMRSB1YWNjb3VudCBEUk9QIENPTFVNTiBzZWNsdjsgLS1lcnJv cgorQUxURVIgVEFCTEUgZG9jdW1lbnQgRFJPUCBDT0xVTU4gZHVtbXkgQ0FTQ0FERTsgLS1vawor QUxURVIgVEFCTEUgdWFjY291bnQgRFJPUCBDT0xVTU4gc2VjbHYgQ0FTQ0FERTsgLS1vaworCiAt LQogLS0gUk9MRS9HUk9VUAogLS0KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMDQ4NDVk NWU2ODAuLjFmYzIzMWIwYzYwIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRl ZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMzU3NCw2 ICszNTc0LDcgQEAgY29ubl9vYXV0aF9zY29wZV9mdW5jCiBjb25uX3Nhc2xfc3RhdGVfZnVuYwog Y29udGFpbl9hZ2dzX29mX2xldmVsX2NvbnRleHQKIGNvbnRhaW5fcGxhY2Vob2xkZXJfcmVmZXJl bmNlc19jb250ZXh0Citjb250YWluX3dob2xlcm93X2NvbnRleHQKIGNvbnZlcnRfdGVzdGV4cHJf Y29udGV4dAogY29weV9kYXRhX2Rlc3RfY2IKIGNvcHlfZGF0YV9zb3VyY2VfY2IKLS0gCjIuMzQu MQoK --0000000000001a23e2064694c37a--