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 1wLN5C-001jwl-0l for pgsql-hackers@arkaria.postgresql.org; Fri, 08 May 2026 15:25:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wLN5B-00A7x7-0P for pgsql-hackers@arkaria.postgresql.org; Fri, 08 May 2026 15:25:41 +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.96) (envelope-from ) id 1wLN5A-00A7wu-17 for pgsql-hackers@lists.postgresql.org; Fri, 08 May 2026 15:25:40 +0000 Received: from mail-ot1-x32e.google.com ([2607:f8b0:4864:20::32e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wLN55-00000000pVP-268l for pgsql-hackers@lists.postgresql.org; Fri, 08 May 2026 15:25:39 +0000 Received: by mail-ot1-x32e.google.com with SMTP id 46e09a7af769-7dbe437b072so1083093a34.2 for ; Fri, 08 May 2026 08:25:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1778253935; cv=none; d=google.com; s=arc-20240605; b=KgI0/X021eQkXTyeubSoeQ8BD0Yv9i25oLtSBp9eBacZcoQh504/+v6vlJ2zcN5Qns 2YeWYbbAtcAIhcHKu9IESkQmiIcHMjAm/ex1O/gyu+o4kKxZQk8fv4dUjVjv8HdVA2ej 59yMucI00d647bkxk1CTho9F/+bwKsmJtYvZAFzrB9WfrEXeIi46YUVo6u12dMOA2/3F IL5ma1yashSmZyW/GJPGJWqTIEbMWo4B3AC2MzWl37cDQcbtIDWEM3In364wpfH7W6F7 GlNFoUrRHORovbi8ib9/RnsnRHO0SIdLb7HC/JabUU+ciExfIn4+sJR5W7OO+Ud8+hST N7YA== 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=YXrNAYj5dZIrvJOktjRwXRIZfN8pKiVVG0Jn3AncUvU=; fh=kdbceXG2Tndqbn4yiNK8K+gb63Y0BngxpVvRjZm+r2s=; b=h/0asSqPF5iKtgnBJYPGyR2vSKt9pZYnPTWKT9dC0HWsTZ5gZcih4AC7PvnN7/7BFT jls8YoSKcZNIYvPs+n8zN6w5wSmEXFVaE4NZygCWAfXXcuIdWNb14bICvN5Mol129kRR izZcJEnCKZmkh7TaP1RxCSLKngdJFSLAgeYRgxPNfLd/QJhJ1mrhCw3LLqwbpUxtfoHz v7Kx+XSljmwHD4pTipEIEpyL7JeoFIIhyimvBm+b1BBszaJpXtohz4Ap2th4D8HLCRWl 9Q5a2Kk/rqSaWKhRulgATEjmFqgKRmM9ELiWzcssLQkTA93+hSqSs+T1L4T1kXFYl5jQ Daug==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20251104.gappssmtp.com; s=20251104; t=1778253935; x=1778858735; darn=lists.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=YXrNAYj5dZIrvJOktjRwXRIZfN8pKiVVG0Jn3AncUvU=; b=F1+fUgjr89mbresWNE+uMhrHqpEpICPWu6NDaLRnlNGpDLbBAuwvMVVWTA2nRqZubs rCOofxTBb0tcHk30uYGUi0iiFiIaTSzP7oXqkK81qvPLuLPbv0DV8Gfu6C1uylcaoBzO 1HmkWQgMYLEgPRGawdST3J4VrjlkZvBlFSo8fTNB4PKe67uwHLKaybEjxMOJWSVsVfsI ZgakdhqFfSz2xizA0L0MCFbrRxTIqLk/ofjsPtejgLJzVJTq+BwdBnA4/OXMp9w6oLop Lg5hjY0MvTUvW7tr8modBz3rAHd64NL6JSokQE7g2KKJlOvmytYIDPXlnwyAcLKOjXB2 LGew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778253935; x=1778858735; 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=YXrNAYj5dZIrvJOktjRwXRIZfN8pKiVVG0Jn3AncUvU=; b=gAsr/QDhLvp8mytc4T9Nw3QDWzpl99SAxoXvDNnRC4yEjQyfnpoj7rwPrISIFCt6Mg GayQ7mZI9+9ErUGHfhgXQdWIRq4tpygpZSSbas0owyLTcAC+9chhLyMte949wYVgPhRo AxQnLUxHlD1LH1H2JOHrdcAsCs+vSmnCqHXZBEn8skiXQCAo5WCgQV/J31C8Nj2lqklQ Ilen1FWMCNSKjHdJaU+7sM0+9n13iuvWcJleQgtwlPfY2a2Anbdnc/lSQH0io7NR22S3 7pCZpxGiL1n9/6W0QOaE9ExC92Lz/dFNqdnzadlHHuyGoUKbfM2iHk5njLy42mr9nlSV 4UYw== X-Forwarded-Encrypted: i=1; AFNElJ9/h3wZJMHAsPJoRHxPJP9RPrA9YvSMF1aRSJWTf493Y3a78RnX+mJWX5cp4NDtdSVlMSo6VmSkzgYIeZ9L@lists.postgresql.org X-Gm-Message-State: AOJu0YznTEjoNS0AAfB4qXMjqUMcqJKO2fYW7oxB6MmZU7DwEIUGJen7 a6aAAB/TAQi6gMyvxngJtDHXbJlTgwHwAWq69gBqfmB+q+ccn+S+yesHYcY99ZIXBJtK3vGWbOV Bzdtur2P0vC3qIclfrY7c7S7tjn2zI6yQGI+ndIYJcA== X-Gm-Gg: AeBDietQnp36OK3pikJSVKquJPUU/hvDZVTAgpSFhh4KbA/U/7ZLzBp2CxJKIvl586h gQXaYsy+nIVrxtplDt2k+ctqGvOsVXSQuzcEPMNOMGjwjpQuqwMiWLrH7PN01yGQTRvckIArc/6 gy049MEHbykdyrxdXxq3iaFqwS5FZdTRbRfQGu+8aGCnVG4uiZVkWByzny1NluLoDAKFPVgmGAb CFC0iKjrZvRyxr+5X6MdDkOJ3g8UAeRi54G85kyj63mg+CttWZecOGXpp6ugkIg/I7cH7wmOvPE 9CRY2wam5gs2zXWe03U= X-Received: by 2002:a05:6820:983:b0:694:97b4:58ff with SMTP id 006d021491bc7-69998cd8264mr6625887eaf.26.1778253935158; Fri, 08 May 2026 08:25:35 -0700 (PDT) MIME-Version: 1.0 References: <27BD5D23-19C9-4FD1-8935-9C788C3C9869@gmail.com> <66C1555B-CA54-4ED1-AB4F-0EE97D24A006@gmail.com> <91B35E0F-5DC1-4417-A1B9-FAF4A3DCD2BD@gmail.com> <74C1863C-2C2A-423A-BDE7-0228889F1D80@gmail.com> In-Reply-To: <74C1863C-2C2A-423A-BDE7-0228889F1D80@gmail.com> From: Paul A Jungwirth Date: Fri, 8 May 2026 08:25:22 -0700 X-Gm-Features: AVHnY4KBsH49zeBEY8g5SRJ_Qcd9NcoXsphnR8v5tc1voBiCplLnvtB3nMOhQDM Message-ID: Subject: Re: FOR PORTION OF does not recompute GENERATED STORED columns that depend on the range column To: Chao Li Cc: Peter Eisentraut , jian he , SATYANARAYANA NARLAPURAM , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="00000000000020682f0651500230" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000020682f0651500230 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, May 8, 2026 at 12:10=E2=80=AFAM Chao Li wr= ote: > > > > Thanks for updating the patch and making the separation. After reading v1= 1, I still have a few comments for 0001. > > ``` > + if (relinfo->ri_forPortionOf) > + { > + AttrNumber rangeAttno =3D relinfo->ri_forPortionOf->fp_r= angeAttno; > + > + if (!bms_is_member(rangeAttno - FirstLowInvalidHeapAttrib= uteNumber, > + updatedCols)) > + { > + MemoryContext oldContext; > + > + oldContext =3D MemoryContextSwitchTo(estate->es_q= uery_cxt); > + > + updatedCols =3D bms_copy(updatedCols); > + updatedCols =3D > + bms_add_member(updatedCols, > + rangeAttno - F= irstLowInvalidHeapAttributeNumber); > + > + MemoryContextSwitchTo(oldContext); > + } > } > ``` > > 1. I don=E2=80=99t think we should unconditionally do bms_copy, only if (= updatedCols =3D=3D perminfo->updatedCols), we need to make the copy. You're saying we can skip the copy if execute_attr_map_cols already made a new bms above. That's true. Since we're going to just use the current memory context (see below), that seems safe. > 2. I doubt if we need to switch to estate->es_query_cxt. Because ExecGetU= pdatedCols() is called by ExecGetAllUpdatedCols(), and its header comment s= ays the function runs in per-tuple memory context: > ``` > /* > * Return columns being updated, including generated columns > * > * The bitmap is allocated in per-tuple memory context. It's up to the cal= ler to > * copy it into a different context with the appropriate lifespan, if need= ed. > */ > Bitmapset * > ExecGetAllUpdatedCols(ResultRelInfo *relinfo, EState *estate) > ``` > > So I think bms_copy and bms_add_member should be just done in the current= memory context. Okay. I think using the current memory context is more correct anyway. There are other callers, and using the query memory context isn't necessarily what they want. Also the bms (potentially) allocated by execute_attr_map_cols is in the current memory context, so doing something different feels surprising. And it's safer not to change the behavior. Maybe there is a memory leak because of a long-lived context, but then it exists already. I added a comment to ExecGetUpdatedCols to call out that we use the current memory context. > 3. "rangeAttno - FirstLowInvalidHeapAttributeNumber=E2=80=9D appears twic= e, maybe add a local variable to avoid the duplication. Okay. v12 attached. Yours, --=20 Paul ~{:-) pj@illuminatedcomputing.com --00000000000020682f0651500230 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0001-Fix-FOR-PORTION-OF-column-dependency-tracking.patch" Content-Disposition: attachment; filename="v12-0001-Fix-FOR-PORTION-OF-column-dependency-tracking.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mox2fudb0 RnJvbSAwMWNiY2ZjNDE1ZjFkMTMzMWVhYmExZWYyZmMwZjc4ZDllNjNhMGYwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFRodSwgNyBNYXkgMjAyNiAxMzowNTo1NCAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjEyIDEvMl0gRml4IEZPUiBQT1JUSU9OIE9GIGNvbHVtbiBkZXBlbmRlbmN5IHRy YWNraW5nCgpXaGVuIEZPUiBQT1JUSU9OIE9GIGNoYW5nZXMgdGhlIGFwcGxpY2F0aW9uLXRpbWUg Y29sdW1uLCB3ZSBuZWVkIHRvIG1hcmsgdGhlCmNvbHVtbiBhcyB1cGRhdGVkLCBzbyB0aGF0IG90 aGVyIEdFTkVSQVRFRCBTVE9SRUQgY29sdW1ucyByZWNvbXB1dGUgaWYgdGhleQpkZXBlbmQgb24g aXQsIGFuZCBzaW1pbGFybHkgc28gdGhhdCBVUERBVEUgT0YgdHJpZ2dlcnMgZmlyZS4gV2UgZG9u J3Qgc2ltcGx5CnJlY29yZCB0aGUgY29sdW1uIGluIHVwZGF0ZWRDb2xzIG9mIFJURVBlcm1pc3Np b25JbmZvLCBiZWNhdXNlIHRoZSBVUERBVEUvREVMRVRFCnNob3VsZCB3b3JrIGV2ZW4gd2l0aG91 dCBwZXJtaXNzaW9uIHRvIHVwZGF0ZSB0aGF0IGNvbHVtbi4KCkRpc2N1c3Npb246IGh0dHBzOi8v cG9zdGdyLmVzL20vQ0FIZytRRGNkPXQ2OWdMZjl5UWV4TzA3RUoybXgwWjcwTkZIbzZoOTRYMUVE QT1oTTBnQG1haWwuZ21haWwuY29tCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FI ZytRRGNzWHNVVmFaK0p3TTAyeURSUUVpPWNMX3JUSF9ST0xEWWdPeDAwNHNRdTdBQG1haWwuZ21h aWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMgICAgICAgICAgICAg fCAzOSArKysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29m Lm91dCB8IDgwICsrKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwgICAgICB8IDU4ICsrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDE3NCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxz LmMKaW5kZXggMWViNmI5ZjFmNDAuLmVmYWZlYmFmYjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRp bHMuYwpAQCAtMTQwMywyNSArMTQwMyw1OCBAQCBFeGVjR2V0SW5zZXJ0ZWRDb2xzKFJlc3VsdFJl bEluZm8gKnJlbGluZm8sIEVTdGF0ZSAqZXN0YXRlKQogCXJldHVybiBwZXJtaW5mby0+aW5zZXJ0 ZWRDb2xzOwogfQogCi0vKiBSZXR1cm4gYSBiaXRtYXAgcmVwcmVzZW50aW5nIGNvbHVtbnMgYmVp bmcgdXBkYXRlZCAqLworLyoKKyAqIFJldHVybiBhIGJpdG1hcCByZXByZXNlbnRpbmcgY29sdW1u cyBiZWluZyB1cGRhdGVkLiAgSWYgd2UgYWxsb2NhdGUgYSBuZXcKKyAqIEJpdG1hcHNldCBpdCB3 aWxsIGJlIGluIHRoZSBjdXJyZW50IG1lbW9yeSBjb250ZXh0LgorICovCiBCaXRtYXBzZXQgKgog RXhlY0dldFVwZGF0ZWRDb2xzKFJlc3VsdFJlbEluZm8gKnJlbGluZm8sIEVTdGF0ZSAqZXN0YXRl KQogewogCVJURVBlcm1pc3Npb25JbmZvICpwZXJtaW5mbyA9IEdldFJlc3VsdFJURVBlcm1pc3Np b25JbmZvKHJlbGluZm8sIGVzdGF0ZSk7CisJQml0bWFwc2V0ICAqdXBkYXRlZENvbHM7CiAKIAlp ZiAocGVybWluZm8gPT0gTlVMTCkKIAkJcmV0dXJuIE5VTEw7CiAKKwl1cGRhdGVkQ29scyA9IHBl cm1pbmZvLT51cGRhdGVkQ29sczsKKwogCS8qIE1hcCB0aGUgY29sdW1ucyB0byBjaGlsZCdzIGF0 dHJpYnV0ZSBudW1iZXJzIGlmIG5lZWRlZC4gKi8KIAlpZiAocmVsaW5mby0+cmlfUm9vdFJlc3Vs dFJlbEluZm8pCiAJewogCQlUdXBsZUNvbnZlcnNpb25NYXAgKm1hcCA9IEV4ZWNHZXRSb290VG9D aGlsZE1hcChyZWxpbmZvLCBlc3RhdGUpOwogCiAJCWlmIChtYXApCi0JCQlyZXR1cm4gZXhlY3V0 ZV9hdHRyX21hcF9jb2xzKG1hcC0+YXR0ck1hcCwgcGVybWluZm8tPnVwZGF0ZWRDb2xzKTsKKwkJ CXVwZGF0ZWRDb2xzID0gZXhlY3V0ZV9hdHRyX21hcF9jb2xzKG1hcC0+YXR0ck1hcCwgdXBkYXRl ZENvbHMpOworCX0KKworCS8qCisJICogRm9yIFVQREFURSAuLi4gRk9SIFBPUlRJT04gT0YsIHRo ZSByYW5nZSBjb2x1bW4gaXMgYmVpbmcgbW9kaWZpZWQKKwkgKiAobmFycm93ZWQgdmlhIGludGVy c2VjdGlvbiksIGJ1dCBpdCBpcyBub3QgaW5jbHVkZWQgaW4gdXBkYXRlZENvbHMKKwkgKiBiZWNh dXNlIHRoZSB1c2VyIGRvZXMgbm90IG5lZWQgVVBEQVRFIHBlcm1pc3Npb24gb24gaXQuIE5vdyBt YW51YWxseQorCSAqIGFkZCBpdCB0byB1cGRhdGVkQ29scy4KKwkgKgorCSAqIEZvciBwYXJ0aXRp b25lZCB0YWJsZXMsIHJpX2ZvclBvcnRpb25PZi0+ZnBfcmFuZ2VBdHRubyBpcyBhbHJlYWR5CisJ ICogbWFwcGVkIGZvciB0aGUgY2hpbGQgcGFydGl0aW9uLCBzbyB3ZSBoYXZlIHRvIGFkZCBpdCBh ZnRlciB0aGUgbWFwcGluZworCSAqIGp1c3QgYWJvdmUuIEFsc28gdGhhdCBtYWtlcyBpdCB1bnNh ZmUgdG8gbXV0YXRlIHBlcm1pbmZvLiBXZSBtYWtlIGFuCisJICogZXhwbGljaXQgY29weSBvZiB0 aGUgQml0bWFwc2V0IHNpbmNlIGJtc19hZGRfbWVtYmVyIG1heSBjaGFuZ2UgaXQKKwkgKiBpbi1w bGFjZS4gWFhYOiBBbHdheXMgYWRkIHRoZSB1bm1hcHBlZCBhdHRubyBpbnN0ZWFkIChiZWZvcmUg bWFwcGluZyksCisJICogYW5kIG11dGF0ZSBwZXJtaW5mbywgdG8gYXZvaWQgcmVwZWF0ZWQgYWxs b2NhdGlvbnM/CisJICovCisJaWYgKHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZikKKwl7CisJCUF0 dHJOdW1iZXIJcmFuZ2VBdHRubyA9IHJlbGluZm8tPnJpX2ZvclBvcnRpb25PZi0+ZnBfcmFuZ2VB dHRubyAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXI7CisKKwkJaWYgKCFibXNf aXNfbWVtYmVyKHJhbmdlQXR0bm8sIHVwZGF0ZWRDb2xzKSkKKwkJeworCQkJLyogU2tpcCB0aGUg Y29weSBpZiBleGVjdXRlX2F0dHJfbWFwX2NvbHMgZGlkIGl0IGFscmVhZHkuICovCisJCQlpZiAo dXBkYXRlZENvbHMgPT0gcGVybWluZm8tPnVwZGF0ZWRDb2xzKQorCQkJCXVwZGF0ZWRDb2xzID0g Ym1zX2NvcHkodXBkYXRlZENvbHMpOworCisJCQl1cGRhdGVkQ29scyA9IGJtc19hZGRfbWVtYmVy KHVwZGF0ZWRDb2xzLCByYW5nZUF0dG5vKTsKKwkJfQogCX0KIAotCXJldHVybiBwZXJtaW5mby0+ dXBkYXRlZENvbHM7CisJcmV0dXJuIHVwZGF0ZWRDb2xzOwogfQogCiAvKiBSZXR1cm4gYSBiaXRt YXAgcmVwcmVzZW50aW5nIGdlbmVyYXRlZCBjb2x1bW5zIGJlaW5nIHVwZGF0ZWQgKi8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKaW5kZXggMGMwYTIwNWM0 NGIuLjA5NDAyMmQ1M2VhIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zv cl9wb3J0aW9uX29mLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0 aW9uX29mLm91dApAQCAtMjE1Miw0ICsyMTUyLDg0IEBAIFNFTEVDVCAqIEZST00gZnBvX3J1bGUg T1JERVIgQlkgZjE7CiAoMiByb3dzKQogCiBEUk9QIFRBQkxFIGZwb19ydWxlOworLS0gVVBEQVRF IEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVkIHN0b3JlZCBjb2x1bW5zCistLSBUaGUgZ2Vu ZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSByYW5nZSBjb2x1bW4sIHNvIGl0IG11c3QgYmUK Ky0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElPTiBPRiBuYXJyb3dzIHRoZSByYW5nZS4KK0NS RUFURSBUQUJMRSBmcG9fZ2VuZXJhdGVkICgKKyAgaWQgaW50LAorICB2YWxpZF9hdCBpbnQ0cmFu Z2UsCisgIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBwZXIodmFsaWRfYXQp IC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCisgIHJhbmdlX2xlbnYgaW50IEdFTkVSQVRFRCBB TFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSkKKyk7CitJTlNFUlQg SU5UTyBmcG9fZ2VuZXJhdGVkIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoMSwgJ1sxMCwxMDApJyk7 CitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2 YWxpZF9hdCB8IHJhbmdlX2xlbiB8IHJhbmdlX2xlbnYgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgIDEgfCBbMTAsMTAwKSB8ICAgICAgICA5MCB8ICAgICAgICAg OTAKKygxIHJvdykKKworLS0gQWZ0ZXIgdGhlIEZPUiBQT1JUSU9OIE9GIChGUE8pIHVwZGF0ZSwg YWxsIHRocmVlIHJlc3VsdGluZyByb3dzCistLSAobGVmdG92ZXItYmVmb3JlLCB1cGRhdGVkLCBh bmQgbGVmdG92ZXItYWZ0ZXIpIG11c3QgY29udGFpbiB0aGUgY29ycmVjdAorLS0gdmFsdWVzIGZv ciByYW5nZV9sZW4gYW5kIHJhbmdlX2xlbnYuCitVUERBVEUgZnBvX2dlbmVyYXRlZAorICBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7CitTRUxFQ1Qg KiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8 IHJhbmdlX2xlbiB8IHJhbmdlX2xlbnYgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tCisgIDEgfCBbMTAsMzApICB8ICAgICAgICAyMCB8ICAgICAgICAgMjAKKyAgMiB8 IFszMCw3MCkgIHwgICAgICAgIDQwIHwgICAgICAgICA0MAorICAxIHwgWzcwLDEwMCkgfCAgICAg ICAgMzAgfCAgICAgICAgIDMwCisoMyByb3dzKQorCistLSBBbHNvIHRlc3Qgd2l0aCBhIGdlbmVy YXRlZCBjb2x1bW4gdGhhdCByZWZlcmVuY2VzIGJvdGggYSBTRVQgY29sdW1uCistLSBhbmQgdGhl IHJhbmdlIGNvbHVtbi4KK0RST1AgVEFCTEUgZnBvX2dlbmVyYXRlZDsKK0NSRUFURSBUQUJMRSBm cG9fZ2VuZXJhdGVkICgKKyAgaWQgaW50LAorICB2YWxpZF9hdCBpbnQ0cmFuZ2UsCisgIGlkX3Bs dXNfbGVuIGludCBHRU5FUkFURUQgQUxXQVlTIEFTIChpZCArIHVwcGVyKHZhbGlkX2F0KSAtIGxv d2VyKHZhbGlkX2F0KSkgU1RPUkVELAorICBpZF9wbHVzX2xlbnYgaW50IEdFTkVSQVRFRCBBTFdB WVMgQVMgKGlkICsgdXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKQorKTsKK0lOU0VS VCBJTlRPIGZwb19nZW5lcmF0ZWQgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgxLCAnWzEwLDEwMCkn KTsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8 IHZhbGlkX2F0IHwgaWRfcGx1c19sZW4gfCBpZF9wbHVzX2xlbnYgCistLS0tKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLQorICAxIHwgWzEwLDEwMCkgfCAgICAgICAgICA5 MSB8ICAgICAgICAgICA5MQorKDEgcm93KQorCitVUERBVEUgZnBvX2dlbmVyYXRlZAorICBGT1Ig UE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7CitTRUxFQ1Qg KiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8 IGlkX3BsdXNfbGVuIHwgaWRfcGx1c19sZW52IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0KKyAgMSB8IFsxMCwzMCkgIHwgICAgICAgICAgMjEgfCAgICAgICAg ICAgMjEKKyAgMiB8IFszMCw3MCkgIHwgICAgICAgICAgNDIgfCAgICAgICAgICAgNDIKKyAgMSB8 IFs3MCwxMDApIHwgICAgICAgICAgMzEgfCAgICAgICAgICAgMzEKKygzIHJvd3MpCisKK0RST1Ag VEFCTEUgZnBvX2dlbmVyYXRlZDsKKy0tIFRlc3QgdGhhdCBVUERBVEUgT0YgY29sbmFtZSB0cmln Z2VycyBmaXJlIGlmIGNvbG5hbWUgaXMgdmFsaWRfYXQ6CitDUkVBVEUgVEFCTEUgZnBvX3VwZGF0 ZV9vZl90cmlnZ2VyICgKKyAgaWQgaW50LAorICB2YWxpZF9hdCBpbnQ0cmFuZ2UKKyk7CitJTlNF UlQgSU5UTyBmcG9fdXBkYXRlX29mX3RyaWdnZXIgKGlkLCB2YWxpZF9hdCkgVkFMVUVTICgxLCAn WzEwLDEwMCknKTsKK0NSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfcm93MQorICBCRUZPUkUgVVBE QVRFIE9GIHZhbGlkX2F0IE9OIGZwb191cGRhdGVfb2ZfdHJpZ2dlcgorICBGT1IgRUFDSCBST1cg RVhFQ1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitDUkVBVEUgVFJJ R0dFUiBmcG9fYmVmb3JlX3JvdzIKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBmcG9f dXBkYXRlX29mX3RyaWdnZXIKKyAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJF IGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOworVVBEQVRFIGZwb191cGRhdGVfb2ZfdHJpZ2dl cgorICBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NIDMwIFRPIDcwCisgIFNFVCBpZCA9IDI7 CitOT1RJQ0U6ICBmcG9fYmVmb3JlX3JvdzI6IEJFRk9SRSBVUERBVEUgU1RBVEVNRU5UOgorTk9U SUNFOiAgICBvbGQ6IDxOVUxMPgorTk9USUNFOiAgICBuZXc6IDxOVUxMPgorTk9USUNFOiAgZnBv X2JlZm9yZV9yb3cxOiBCRUZPUkUgVVBEQVRFIFJPVzoKK05PVElDRTogICAgb2xkOiBbMTAsMTAw KQorTk9USUNFOiAgICBuZXc6IFszMCw3MCkKK0RST1AgVEFCTEUgZnBvX3VwZGF0ZV9vZl90cmln Z2VyOwogUkVTRVQgZGF0ZXN0eWxlOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv Zm9yX3BvcnRpb25fb2Yuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yu c3FsCmluZGV4IGZkNzlhOWI3OGU3Li5hYzViY2U1NTNlYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvZm9yX3BvcnRpb25fb2Yuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2Zvcl9wb3J0aW9uX29mLnNxbApAQCAtMTM5OCw0ICsxMzk4LDYyIEBAIFNFTEVDVCAqIEZST00g ZnBvX3J1bGUgT1JERVIgQlkgZjE7CiAKIERST1AgVEFCTEUgZnBvX3J1bGU7CiAKKy0tIFVQREFU RSBGT1IgUE9SVElPTiBPRiB3aXRoIGdlbmVyYXRlZCBzdG9yZWQgY29sdW1ucworLS0gVGhlIGdl bmVyYXRlZCBjb2x1bW4gZGVwZW5kcyBvbiB0aGUgcmFuZ2UgY29sdW1uLCBzbyBpdCBtdXN0IGJl CistLSByZWNvbXB1dGVkIHdoZW4gRk9SIFBPUlRJT04gT0YgbmFycm93cyB0aGUgcmFuZ2UuCitD UkVBVEUgVEFCTEUgZnBvX2dlbmVyYXRlZCAoCisgIGlkIGludCwKKyAgdmFsaWRfYXQgaW50NHJh bmdlLAorICByYW5nZV9sZW4gaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKHVwcGVyKHZhbGlkX2F0 KSAtIGxvd2VyKHZhbGlkX2F0KSkgU1RPUkVELAorICByYW5nZV9sZW52IGludCBHRU5FUkFURUQg QUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpCispOworSU5TRVJU IElOVE8gZnBvX2dlbmVyYXRlZCAoaWQsIHZhbGlkX2F0KSBWQUxVRVMgKDEsICdbMTAsMTAwKScp OworCitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisKKy0t IEFmdGVyIHRoZSBGT1IgUE9SVElPTiBPRiAoRlBPKSB1cGRhdGUsIGFsbCB0aHJlZSByZXN1bHRp bmcgcm93cworLS0gKGxlZnRvdmVyLWJlZm9yZSwgdXBkYXRlZCwgYW5kIGxlZnRvdmVyLWFmdGVy KSBtdXN0IGNvbnRhaW4gdGhlIGNvcnJlY3QKKy0tIHZhbHVlcyBmb3IgcmFuZ2VfbGVuIGFuZCBy YW5nZV9sZW52LgorVVBEQVRFIGZwb19nZW5lcmF0ZWQKKyAgRk9SIFBPUlRJT04gT0YgdmFsaWRf YXQgRlJPTSAzMCBUTyA3MAorICBTRVQgaWQgPSAyOworCitTRUxFQ1QgKiBGUk9NIGZwb19nZW5l cmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisKKy0tIEFsc28gdGVzdCB3aXRoIGEgZ2VuZXJhdGVk IGNvbHVtbiB0aGF0IHJlZmVyZW5jZXMgYm90aCBhIFNFVCBjb2x1bW4KKy0tIGFuZCB0aGUgcmFu Z2UgY29sdW1uLgorRFJPUCBUQUJMRSBmcG9fZ2VuZXJhdGVkOworQ1JFQVRFIFRBQkxFIGZwb19n ZW5lcmF0ZWQgKAorICBpZCBpbnQsCisgIHZhbGlkX2F0IGludDRyYW5nZSwKKyAgaWRfcGx1c19s ZW4gaW50IEdFTkVSQVRFRCBBTFdBWVMgQVMgKGlkICsgdXBwZXIodmFsaWRfYXQpIC0gbG93ZXIo dmFsaWRfYXQpKSBTVE9SRUQsCisgIGlkX3BsdXNfbGVudiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAoaWQgKyB1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpCispOworCitJTlNFUlQg SU5UTyBmcG9fZ2VuZXJhdGVkIChpZCwgdmFsaWRfYXQpIFZBTFVFUyAoMSwgJ1sxMCwxMDApJyk7 CitTRUxFQ1QgKiBGUk9NIGZwb19nZW5lcmF0ZWQgT1JERVIgQlkgdmFsaWRfYXQ7CisKK1VQREFU RSBmcG9fZ2VuZXJhdGVkCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMzAgVE8gNzAK KyAgU0VUIGlkID0gMjsKK1NFTEVDVCAqIEZST00gZnBvX2dlbmVyYXRlZCBPUkRFUiBCWSB2YWxp ZF9hdDsKK0RST1AgVEFCTEUgZnBvX2dlbmVyYXRlZDsKKworLS0gVGVzdCB0aGF0IFVQREFURSBP RiBjb2xuYW1lIHRyaWdnZXJzIGZpcmUgaWYgY29sbmFtZSBpcyB2YWxpZF9hdDoKK0NSRUFURSBU QUJMRSBmcG9fdXBkYXRlX29mX3RyaWdnZXIgKAorICBpZCBpbnQsCisgIHZhbGlkX2F0IGludDRy YW5nZQorKTsKK0lOU0VSVCBJTlRPIGZwb191cGRhdGVfb2ZfdHJpZ2dlciAoaWQsIHZhbGlkX2F0 KSBWQUxVRVMgKDEsICdbMTAsMTAwKScpOworQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9yb3cx CisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04gZnBvX3VwZGF0ZV9vZl90cmlnZ2VyCisg IEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNl KTsKK0NSRUFURSBUUklHR0VSIGZwb19iZWZvcmVfcm93MgorICBCRUZPUkUgVVBEQVRFIE9GIHZh bGlkX2F0IE9OIGZwb191cGRhdGVfb2ZfdHJpZ2dlcgorICBGT1IgRUFDSCBTVEFURU1FTlQgRVhF Q1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitVUERBVEUgZnBvX3Vw ZGF0ZV9vZl90cmlnZ2VyCisgIEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gMzAgVE8gNzAK KyAgU0VUIGlkID0gMjsKK0RST1AgVEFCTEUgZnBvX3VwZGF0ZV9vZl90cmlnZ2VyOworCiBSRVNF VCBkYXRlc3R5bGU7Ci0tIAoyLjQ3LjMKCg== --00000000000020682f0651500230 Content-Type: text/x-patch; charset="US-ASCII"; name="v12-0002-Fix-FOR-PORTION-OF-with-partitions-and-inheritan.patch" Content-Disposition: attachment; filename="v12-0002-Fix-FOR-PORTION-OF-with-partitions-and-inheritan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mox2fwi41 RnJvbSA5MWE0MDA4ZTZjMzhmY2FlZjQ5ZDMzMjBhYmZkZWRhM2QwMDhmMjAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiUGF1bCBBLiBKdW5nd2lydGgiIDxwakBpbGx1bWluYXRlZGNv bXB1dGluZy5jb20+CkRhdGU6IFRodSwgNyBNYXkgMjAyNiAxNTozMToxMiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjEyIDIvMl0gRml4IEZPUiBQT1JUSU9OIE9GIHdpdGggcGFydGl0aW9ucyBhbmQg aW5oZXJpdGFuY2UKCi0gRml4ZWQgaW5zZXJ0aW5nIGxlZnRvdmVycyB3aXRoIHRyYWRpdGlvbmFs IHRhYmxlIGluaGVyaXRhbmNlLiBTaW5jZSB0aGVyZSBpcwogIG5vIHR1cGxlIHJvdXRpbmcsIHdl IG11c3QgYWRkIHRoZW0gZGlyZWN0bHkgdG8gdGhlIGNoaWxkIHRhYmxlLiBBbHNvIHRoaXMKICBw cmVzZXJ2ZXMgZXh0cmEgY29sdW1ucyBpbiB0aGF0IHRhYmxlLgotIEFkZGVkIEV4ZWNJbml0Rm9y UG9ydGlvbk9mLiBUaGlzIHNldHMgdXAgZXhlY3V0b3Igc3RhdGUgZm9yIGNoaWxkIHBhcnRpdGlv bnMuCiAgUHJldmlvdXNseSB3ZSBkaWQgdGhpcyBpbiBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJz LCBidXQgZG9pbmcgaXQgZWFybGllciBsZXRzCiAgdXMgdXNlIHRoZSBjaGlsZC0+cGFyZW50IGF0 dHIgbWFwcGluZyBpbiB1cGRhdGVkQ29scyAodXNlZCB0byByZWNvbXB1dGUKICBHRU5FUkFURUQg U1RPUkVEIGNvbHVtbnMgYW5kIGNhbGwgVVBEQVRFIE9GIHRyaWdnZXJzLCBpZiB0aGUgY29sdW1u IGhhcwogIGNoYW5nZWQpLgotIENsYXJpZmllZCBhIGNvbW1lbnQgYWJvdXQgdGhlIHJhbmdldHlw ZSBzdG9yZWQgaW4gRm9yUG9ydGlvbk9mU3RhdGUuCgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rn ci5lcy9tL0NBSGcrUURjZD10NjlnTGY5eVFleE8wN0VKMm14MFo3ME5GSG82aDk0WDFFREE9aE0w Z0BtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSGcrUURj c1hzVVZhWitKd00wMnlEUlFFaT1jTF9yVEhfUk9MRFlnT3gwMDRzUXU3QUBtYWlsLmdtYWlsLmNv bQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jICAgICAgIHwgMTUw ICsrKysrKysrLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgICAg ICAgfCAgIDMgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0 IHwgMjQxICsrKysrKysrKysrKysrKy0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0 aW9uX29mLnNxbCAgICAgIHwgIDkxICsrKysrKy0KIDQgZmlsZXMgY2hhbmdlZCwgMzg4IGluc2Vy dGlvbnMoKyksIDk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVNb2RpZnlUYWJsZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMKaW5kZXggNGNiMDU3Y2E0ZjkuLjdiN2Y2YjBmYzEwIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtMTk4LDYgKzE5OCw4IEBAIHN0YXRpYyBUdXBsZVRhYmxl U2xvdCAqRXhlY01lcmdlTm90TWF0Y2hlZChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiBz dGF0aWMgdm9pZCBFeGVjU2V0dXBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRlKE1vZGlmeVRhYmxlU3Rh dGUgKm10c3RhdGUsIEVTdGF0ZSAqZXN0YXRlKTsKIHN0YXRpYyB2b2lkIGZpcmVCU1RyaWdnZXJz KE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpOwogc3RhdGljIHZvaWQgZmlyZUFTVHJpZ2dlcnMoTW9k aWZ5VGFibGVTdGF0ZSAqbm9kZSk7CitzdGF0aWMgdm9pZCBFeGVjSW5pdEZvclBvcnRpb25PZihN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLCBFU3RhdGUgKmVzdGF0ZSwKKwkJCQkJCQkJIFJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm8pOwogCiAKIC8qCkBAIC0xNDA5LDcgKzE0MTEsNiBAQCBF eGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwKIAlN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlID0gY29udGV4dC0+bXRzdGF0ZTsKIAlNb2RpZnlUYWJs ZSAqbm9kZSA9IChNb2RpZnlUYWJsZSAqKSBtdHN0YXRlLT5wcy5wbGFuOwogCUZvclBvcnRpb25P ZkV4cHIgKmZvclBvcnRpb25PZiA9IChGb3JQb3J0aW9uT2ZFeHByICopIG5vZGUtPmZvclBvcnRp b25PZjsKLQlBdHRyTnVtYmVyCXJhbmdlQXR0bm87CiAJRGF0dW0JCW9sZFJhbmdlOwogCVR5cGVD YWNoZUVudHJ5ICp0eXBjYWNoZTsKIAlGb3JQb3J0aW9uT2ZTdGF0ZSAqZnBvU3RhdGU7CkBAIC0x NDI0LDM3ICsxNDI1LDEwIEBAIEV4ZWNGb3JQb3J0aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVD b250ZXh0ICpjb250ZXh0LAogCVJldHVyblNldEluZm8gcnNpOwogCWJvb2wJCWRpZEluaXQgPSBm YWxzZTsKIAlib29sCQlzaG91bGRGcmVlID0gZmFsc2U7CisJUmVzdWx0UmVsSW5mbyAqcm9vdFJl bEluZm8gPSBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbzsKIAogCUxPQ0FMX0ZDSU5GTyhmY2lu Zm8sIDIpOwogCi0JaWYgKCFyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YpCi0JewotCQkv KgotCQkgKiBJZiB3ZSBkb24ndCBoYXZlIGEgRm9yUG9ydGlvbk9mU3RhdGUgeWV0LCB3ZSBtdXN0 IGJlIGEgcGFydGl0aW9uCi0JCSAqIGNoaWxkIGJlaW5nIGhpdCBmb3IgdGhlIGZpcnN0IHRpbWUu IE1ha2UgYSBjb3B5IGZyb20gdGhlIHJvb3QsIHdpdGgKLQkJICogb3VyIG93biBUdXBsZVRhYmxl U2xvdC4gV2UgZG8gdGhpcyBsYXppbHkgc28gdGhhdCB3ZSBkb24ndCBwYXkgdGhlCi0JCSAqIHBy aWNlIG9mIHVudXNlZCBwYXJ0aXRpb25zLgotCQkgKi8KLQkJRm9yUG9ydGlvbk9mU3RhdGUgKmxl YWZTdGF0ZSA9IG1ha2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKLQotCQlpZiAoIW10c3RhdGUt PnJvb3RSZXN1bHRSZWxJbmZvKQotCQkJZWxvZyhFUlJPUiwgIm5vIHJvb3QgcmVsYXRpb24gYnV0 IHJpX2ZvclBvcnRpb25PZiBpcyB1bmluaXRpYWxpemVkIik7Ci0KLQkJZnBvU3RhdGUgPSBtdHN0 YXRlLT5yb290UmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOwotCQlBc3NlcnQoZnBvU3Rh dGUpOwotCi0JCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VOYW1lID0gZnBvU3RhdGUtPmZwX3JhbmdlTmFt ZTsKLQkJbGVhZlN0YXRlLT5mcF9yYW5nZVR5cGUgPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VUeXBlOwot CQlsZWFmU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubzsKLQkJ bGVhZlN0YXRlLT5mcF90YXJnZXRSYW5nZSA9IGZwb1N0YXRlLT5mcF90YXJnZXRSYW5nZTsKLQkJ bGVhZlN0YXRlLT5mcF9MZWZ0b3ZlciA9IGZwb1N0YXRlLT5mcF9MZWZ0b3ZlcjsKLQkJLyogRWFj aCBwYXJ0aXRpb24gbmVlZHMgYSBzbG90IG1hdGNoaW5nIGl0cyB0dXBsZSBkZXNjcmlwdG9yICov Ci0JCWxlYWZTdGF0ZS0+ZnBfRXhpc3RpbmcgPQotCQkJdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0 UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAotCQkJCQkJCSAgJm10c3RhdGUtPnBzLnN0YXRlLT5l c190dXBsZVRhYmxlKTsKLQotCQlyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YgPSBsZWFm U3RhdGU7Ci0JfQogCWZwb1N0YXRlID0gcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOwog CW9sZHR1cGxlU2xvdCA9IGZwb1N0YXRlLT5mcF9FeGlzdGluZzsKIAlsZWZ0b3ZlclNsb3QgPSBm cG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CkBAIC0xNDc1LDIxICsxNDQ5LDEzIEBAIEV4ZWNGb3JQb3J0 aW9uT2ZMZWZ0b3ZlcnMoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCWlmICghdGFibGVf dHVwbGVfZmV0Y2hfcm93X3ZlcnNpb24ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLCB0 dXBsZWlkLCBTbmFwc2hvdEFueSwgb2xkdHVwbGVTbG90KSkKIAkJZWxvZyhFUlJPUiwgImZhaWxl ZCB0byBmZXRjaCB0dXBsZSBmb3IgRk9SIFBPUlRJT04gT0YiKTsKIAotCS8qCi0JICogR2V0IHRo ZSBvbGQgcmFuZ2Ugb2YgdGhlIHJlY29yZCBiZWluZyB1cGRhdGVkL2RlbGV0ZWQuIE11c3QgcmVh ZCB3aXRoCi0JICogdGhlIGF0dG5vIG9mIHRoZSBsZWFmIHBhcnRpdGlvbiBiZWluZyB1cGRhdGVk LgotCSAqLwotCi0JcmFuZ2VBdHRubyA9IGZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5v OwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKLQkJbWFwID0gRXhl Y0dldENoaWxkVG9Sb290TWFwKHJlc3VsdFJlbEluZm8pOwotCWlmIChtYXAgIT0gTlVMTCkKLQkJ cmFuZ2VBdHRubyA9IG1hcC0+YXR0ck1hcC0+YXR0bnVtc1tyYW5nZUF0dG5vIC0gMV07CiAJc2xv dF9nZXRhbGxhdHRycyhvbGR0dXBsZVNsb3QpOwogCi0JaWYgKG9sZHR1cGxlU2xvdC0+dHRzX2lz bnVsbFtyYW5nZUF0dG5vIC0gMV0pCisJLyogR2V0IHRoZSBvbGQgcmFuZ2Ugb2YgdGhlIHJlY29y ZCBiZWluZyB1cGRhdGVkL2RlbGV0ZWQuICovCisKKwlpZiAob2xkdHVwbGVTbG90LT50dHNfaXNu dWxsW2Zwb1N0YXRlLT5mcF9yYW5nZUF0dG5vIC0gMV0pCiAJCWVsb2coRVJST1IsICJmb3VuZCBh IE5VTEwgcmFuZ2UgaW4gYSB0ZW1wb3JhbCB0YWJsZSIpOwotCW9sZFJhbmdlID0gb2xkdHVwbGVT bG90LT50dHNfdmFsdWVzW3JhbmdlQXR0bm8gLSAxXTsKKwlvbGRSYW5nZSA9IG9sZHR1cGxlU2xv dC0+dHRzX3ZhbHVlc1tmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubyAtIDFdOwogCiAJLyoKIAkgKiBH ZXQgdGhlIHJhbmdlJ3MgdHlwZSBjYWNoZSBlbnRyeS4gVGhpcyBpcyB3b3J0aCBjYWNoaW5nIGZv ciB0aGUgd2hvbGUKQEAgLTE1MjcsMTIgKzE0OTMsMjAgQEAgRXhlY0ZvclBvcnRpb25PZkxlZnRv dmVycyhNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJZmNpbmZvLT5hcmdzWzFdLmlzbnVs bCA9IGZhbHNlOwogCiAJLyoKLQkgKiBJZiB0aGVyZSBhcmUgcGFydGl0aW9ucywgd2UgbXVzdCBp bnNlcnQgaW50byB0aGUgcm9vdCB0YWJsZSwgc28gd2UgZ2V0Ci0JICogdHVwbGUgcm91dGluZy4g V2UgYWxyZWFkeSBzZXQgdXAgbGVmdG92ZXJTbG90IHdpdGggdGhlIHJvb3QgdHVwbGUKLQkgKiBk ZXNjcmlwdG9yLgorCSAqIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIG11c3QgcmVhZCBsZWZ0 b3ZlcnMgd2l0aCB0aGUgdHVwbGUKKwkgKiBkZXNjcmlwdG9yIG9mIHRoZSBjaGlsZCB0YWJsZSwg YnV0IGluc2VydCBpbnRvIHRoZSByb290IHRhYmxlIHRvIGVuYWJsZQorCSAqIHR1cGxlIHJvdXRp bmcuICBTbyBsZWZ0b3ZlclNsb3QgaXMgY29uZmlndXJlZCB3aXRoIHRoZSByb290J3MgdHVwbGUK KwkgKiBkZXNjcmlwdG9yLiAgSG93ZXZlciwgZm9yIHRyYWRpdGlvbmFsIHRhYmxlIGluaGVyaXRh bmNlLCB3ZSBkb24ndCBuZWVkCisJICogdHVwbGUgcm91dGluZyBhbmQganVzdCBpbnNlcnQgZGly ZWN0bHkgaW50byB0aGUgY2hpbGQgdGFibGUgdG8gcHJlc2VydmUKKwkgKiBjaGlsZC1zcGVjaWZp YyBjb2x1bW5zLiAgSW4gdGhhdCBjYXNlLCBsZWZ0b3ZlclNsb3QgdXNlcyB0aGUgY2hpbGQncwor CSAqIChyZXN1bHRSZWxJbmZvKSB0dXBsZSBkZXNjcmlwdG9yLgogCSAqLwotCWlmIChyZXN1bHRS ZWxJbmZvLT5yaV9Sb290UmVzdWx0UmVsSW5mbykKKwlpZiAocm9vdFJlbEluZm8gJiYKKwkJcm9v dFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYy0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpCisJeworCQltYXAgPSBFeGVjR2V0Q2hpbGRUb1Jvb3RNYXAocmVzdWx0 UmVsSW5mbyk7CiAJCXJlc3VsdFJlbEluZm8gPSByZXN1bHRSZWxJbmZvLT5yaV9Sb290UmVzdWx0 UmVsSW5mbzsKKwl9CiAKIAkvKgogCSAqIEluc2VydCBhIGxlZnRvdmVyIGZvciBlYWNoIHZhbHVl IHJldHVybmVkIGJ5IHRoZSB3aXRob3V0X3BvcnRpb24gaGVscGVyCkBAIC0xNjAxLDggKzE1NzUs OCBAQCBFeGVjRm9yUG9ydGlvbk9mTGVmdG92ZXJzKE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwKIAkJCWRpZEluaXQgPSB0cnVlOwogCQl9CiAKLQkJbGVmdG92ZXJTbG90LT50dHNfdmFsdWVz W2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0gMV0gPSBsZWZ0b3ZlcjsKLQkJbGVm dG92ZXJTbG90LT50dHNfaXNudWxsW2ZvclBvcnRpb25PZi0+cmFuZ2VWYXItPnZhcmF0dG5vIC0g MV0gPSBmYWxzZTsKKwkJbGVmdG92ZXJTbG90LT50dHNfdmFsdWVzW3Jlc3VsdFJlbEluZm8tPnJp X2ZvclBvcnRpb25PZi0+ZnBfcmFuZ2VBdHRubyAtIDFdID0gbGVmdG92ZXI7CisJCWxlZnRvdmVy U2xvdC0+dHRzX2lzbnVsbFtyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YtPmZwX3Jhbmdl QXR0bm8gLSAxXSA9IGZhbHNlOwogCQlFeGVjTWF0ZXJpYWxpemVTbG90KGxlZnRvdmVyU2xvdCk7 CiAKIAkJLyoKQEAgLTQ3NzcsNiArNDc1MSwxOCBAQCBFeGVjTW9kaWZ5VGFibGUoUGxhblN0YXRl ICpwc3RhdGUpCiAJCQkJCQkJCQkJCQkJCSBmYWxzZSwgdHJ1ZSk7CiAJCX0KIAorCQkvKgorCQkg KiBJZiB3ZSBkb24ndCBoYXZlIGEgRm9yUG9ydGlvbk9mU3RhdGUgeWV0LCB3ZSBtdXN0IGJlIGEg cGFydGl0aW9uIG9yCisJCSAqIGluaGVyaXRhbmNlIGNoaWxkIGJlaW5nIGhpdCBmb3IgdGhlIGZp cnN0IHRpbWUuIE1ha2UgYSBjb3B5IGZyb20KKwkJICogdGhlIHJvb3QsIHdpdGggb3VyIG93biBU dXBsZVRhYmxlU2xvdC4gV2UgZG8gdGhpcyBsYXppbHkgc28gdGhhdCB3ZQorCQkgKiBkb24ndCBw YXkgdGhlIHByaWNlIG9mIHVudXNlZCBwYXJ0aXRpb25zLgorCQkgKi8KKwkJaWYgKCgoKE1vZGlm eVRhYmxlICopIGNvbnRleHQubXRzdGF0ZS0+cHMucGxhbiktPmZvclBvcnRpb25PZikgJiYKKwkJ CSFyZXN1bHRSZWxJbmZvLT5yaV9mb3JQb3J0aW9uT2YpCisJCXsKKwkJCUV4ZWNJbml0Rm9yUG9y dGlvbk9mKGNvbnRleHQubXRzdGF0ZSwgZXN0YXRlLCByZXN1bHRSZWxJbmZvKTsKKwkJfQorCiAJ CS8qCiAJCSAqIElmIHJlc3VsdFJlbEluZm8tPnJpX3VzZXNGZHdEaXJlY3RNb2RpZnkgaXMgdHJ1 ZSwgYWxsIHdlIG5lZWQgdG8gZG8KIAkJICogaGVyZSBpcyBjb21wdXRlIHRoZSBSRVRVUk5JTkcg ZXhwcmVzc2lvbnMuCkBAIC01ODYwLDMgKzU4NDYsNzMgQEAgRXhlY1JlU2Nhbk1vZGlmeVRhYmxl KE1vZGlmeVRhYmxlU3RhdGUgKm5vZGUpCiAJICovCiAJZWxvZyhFUlJPUiwgIkV4ZWNSZVNjYW5N b2RpZnlUYWJsZSBpcyBub3QgaW1wbGVtZW50ZWQiKTsKIH0KKworLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoJCUV4 ZWNJbml0Rm9yUG9ydGlvbk9mCisgKgorICoJCUluaXRpYWxpemVzIHJlc3VsdFJlbEluZm8tPnJp X2ZvclBvcnRpb25PZiBmb3IgY2hpbGQgdGFibGVzLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMg dm9pZAorRXhlY0luaXRGb3JQb3J0aW9uT2YoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0 YXRlICplc3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8pCit7CisJTWVtb3J5Q29u dGV4dCBvbGRjeHQ7CisJRm9yUG9ydGlvbk9mU3RhdGUgKmxlYWZTdGF0ZTsKKwlSZXN1bHRSZWxJ bmZvICpyb290UmVsSW5mbyA9IG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvOworCUZvclBvcnRp b25PZlN0YXRlICpmcG9TdGF0ZTsKKwlUdXBsZUNvbnZlcnNpb25NYXAgKm1hcDsKKworCWlmICgh cm9vdFJlbEluZm8pCisJCWVsb2coRVJST1IsICJubyByb290IHJlbGF0aW9uIGJ1dCByaV9mb3JQ b3J0aW9uT2YgaXMgdW5pbml0aWFsaXplZCIpOworCisJZnBvU3RhdGUgPSBtdHN0YXRlLT5yb290 UmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9mOworCisJLyogVGhpbmdzIGJ1aWx0IGhlcmUg aGF2ZSB0byBsYXN0IGZvciB0aGUgcXVlcnkgZHVyYXRpb24uICovCisJb2xkY3h0ID0gTWVtb3J5 Q29udGV4dFN3aXRjaFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKKworCWxlYWZTdGF0ZSA9IG1h a2VOb2RlKEZvclBvcnRpb25PZlN0YXRlKTsKKworCWxlYWZTdGF0ZS0+ZnBfcmFuZ2VOYW1lID0g ZnBvU3RhdGUtPmZwX3JhbmdlTmFtZTsKKwlsZWFmU3RhdGUtPmZwX3JhbmdlVHlwZSA9IGZwb1N0 YXRlLT5mcF9yYW5nZVR5cGU7CisJbGVhZlN0YXRlLT5mcF90YXJnZXRSYW5nZSA9IGZwb1N0YXRl LT5mcF90YXJnZXRSYW5nZTsKKwltYXAgPSBFeGVjR2V0Q2hpbGRUb1Jvb3RNYXAocmVzdWx0UmVs SW5mbyk7CisKKwkvKgorCSAqIGZwX3JhbmdlQXR0bm8gbXVzdCBtYXRjaCB0aGUgdHVwbGUgbGF5 b3V0IHVzZWQgZm9yIHJlYWRpbmcgdGhlIG9sZAorCSAqIHJhbmdlIHZhbHVlLiAgVGhlIHF1ZXJ5 IHVzZXMgdGhlIHRhcmdldCByZWxhdGlvbidzIGF0dG5vLCBzbyB0cmFuc2xhdGUKKwkgKiBpdCB0 byB0aGUgY2hpbGQgYXR0bm8gd2hlbiB0aGUgY2hpbGQgaGFzIGEgZGlmZmVyZW50IGNvbHVtbiBs YXlvdXQuCisJICovCisJaWYgKG1hcCkKKwkJbGVhZlN0YXRlLT5mcF9yYW5nZUF0dG5vID0gbWFw LT5hdHRyTWFwLT5hdHRudW1zW2Zwb1N0YXRlLT5mcF9yYW5nZUF0dG5vIC0gMV07CisJZWxzZQor CQlsZWFmU3RhdGUtPmZwX3JhbmdlQXR0bm8gPSBmcG9TdGF0ZS0+ZnBfcmFuZ2VBdHRubzsKKwor CS8qCisJICogRm9yIHBhcnRpdGlvbmVkIHRhYmxlcyB3ZSBtdXN0IHJlYWQgdGhlIGxlZnRvdmVy cyB1c2luZyB0aGUgY2hpbGQKKwkgKiB0YWJsZSdzIHR1cGxlIGRlc2NyaXB0b3IsIGJ1dCB0aGVu IGluc2VydCB0aGVtIGludG8gdGhlIHJvb3QgdGFibGUKKwkgKiAodXNpbmcgaXRzIHR1cGxlIGRl c2NyaXB0b3IpIHNvIHdlIGdldCB0dXBsZSByb3V0aW5nLgorCSAqCisJICogRm9yIHRyYWRpdGlv bmFsIHRhYmxlIGluaGVyaXRhbmNlLCB3ZSByZWFkIGFuZCBpbnNlcnQgZGlyZWN0bHkgaW50bwor CSAqIHRoaXMgcmVzdWx0UmVsSW5mbzsgbm8gdHVwbGUgcm91dGluZyB0byB0aGUgcGFyZW50IGlz IHJlcXVpcmVkLgorCSAqLworCWlmIChyb290UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwl7CisJCWxlYWZTdGF0 ZS0+ZnBfTGVmdG92ZXIgPSBmcG9TdGF0ZS0+ZnBfTGVmdG92ZXI7CisJfQorCWVsc2UKKwl7CisJ CWxlYWZTdGF0ZS0+ZnBfTGVmdG92ZXIgPQorCQkJRXhlY0luaXRFeHRyYVR1cGxlU2xvdChtdHN0 YXRlLT5wcy5zdGF0ZSwKKwkJCQkJCQkJICAgUmVsYXRpb25HZXREZXNjcihyZXN1bHRSZWxJbmZv LT5yaV9SZWxhdGlvbkRlc2MpLAorCQkJCQkJCQkgICAmVFRTT3BzVmlydHVhbCk7CisJfQorCisJ LyogRWFjaCBjaGlsZCByZWxhdGlvbiBuZWVkcyBhIHNsb3QgbWF0Y2hpbmcgaXRzIHR1cGxlIGRl c2NyaXB0b3IgKi8KKwlsZWFmU3RhdGUtPmZwX0V4aXN0aW5nID0KKwkJdGFibGVfc2xvdF9jcmVh dGUocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJICAmbXRzdGF0ZS0+cHMu c3RhdGUtPmVzX3R1cGxlVGFibGUpOworCisJcmVzdWx0UmVsSW5mby0+cmlfZm9yUG9ydGlvbk9m ID0gbGVhZlN0YXRlOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7Cit9CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L2V4ZWNub2Rlcy5oCmluZGV4IDEzMzU5MTgwZDI1Li41M2MxMzgzMTBkYiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKQEAgLTQ3Nyw3ICs0NzcsOCBAQCB0eXBlZGVmIHN0cnVjdCBGb3JQb3J0aW9uT2ZT dGF0ZQogCU5vZGVUYWcJCXR5cGU7CiAKIAljaGFyCSAgICpmcF9yYW5nZU5hbWU7CS8qIHRoZSBj b2x1bW4gbmFtZWQgaW4gRk9SIFBPUlRJT04gT0YgKi8KLQlPaWQJCQlmcF9yYW5nZVR5cGU7CS8q IHRoZSB0eXBlIG9mIHRoZSBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9uICovCisJT2lkCQkJZnBf cmFuZ2VUeXBlOwkvKiB0aGUgYmFzZSB0eXBlIChub3QgZG9tYWluKSBvZiB0aGUgRk9SCisJCQkJ CQkJCSAqIFBPUlRJT04gT0YgZXhwcmVzc2lvbiAqLwogCWludAkJCWZwX3JhbmdlQXR0bm87CS8q IHRoZSBhdHRubyBvZiB0aGUgcmFuZ2UgY29sdW1uICovCiAJRGF0dW0JCWZwX3RhcmdldFJhbmdl OyAvKiB0aGUgcmFuZ2UvbXVsdGlyYW5nZSBmcm9tIEZPUiBQT1JUSU9OIE9GICovCiAJVHlwZUNh Y2hlRW50cnkgKmZwX2xlZnRvdmVyc3R5cGNhY2hlOwkvKiB0eXBlIGNhY2hlIGVudHJ5IG9mIHRo ZSByYW5nZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9mb3JfcG9y dGlvbl9vZi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29mLm91 dAppbmRleCAwOTQwMjJkNTNlYS4uYjkzMzc1YjhmZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0CkBAIC0xMzY1LDYgKzEzNjUsOSBAQCAkJDsKIENS RUFURSBUUklHR0VSIGZwb19iZWZvcmVfc3RtdAogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBP UiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBTVEFURU1FTlQgRVhF Q1VURSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitDUkVBVEUgVFJJR0dF UiBmcG9fYmVmb3JlX3N0bXQxCisgIEJFRk9SRSBVUERBVEUgT0YgdmFsaWRfYXQgT04gZm9yX3Bv cnRpb25fb2ZfdGVzdAorICBGT1IgRUFDSCBTVEFURU1FTlQgRVhFQ1VURSBQUk9DRURVUkUgZHVt cF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0 X3N0bXQKICAgQUZURVIgSU5TRVJUIE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0gg U1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpA QCAtMTM3OCw2ICsxMzgxLDkgQEAgQ1JFQVRFIFRSSUdHRVIgZnBvX2FmdGVyX2RlbGV0ZV9zdG10 CiBDUkVBVEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdwogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFU RSBPUiBERUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VU RSBQUk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CitDUkVBVEUgVFJJR0dFUiBm cG9fYmVmb3JlX3JvdzEKKyAgQkVGT1JFIFVQREFURSBPRiB2YWxpZF9hdCBPTiBmb3JfcG9ydGlv bl9vZl90ZXN0CisgIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIo ZmFsc2UsIGZhbHNlKTsKIENSRUFURSBUUklHR0VSIGZwb19hZnRlcl9pbnNlcnRfcm93CiAgIEFG VEVSIElOU0VSVCBPTiBmb3JfcG9ydGlvbl9vZl90ZXN0CiAgIEZPUiBFQUNIIFJPVyBFWEVDVVRF IFBST0NFRFVSRSBkdW1wX3RyaWdnZXIoZmFsc2UsIGZhbHNlKTsKQEAgLTEzOTQsOSArMTQwMCwx NSBAQCBVUERBVEUgZm9yX3BvcnRpb25fb2ZfdGVzdAogTk9USUNFOiAgZnBvX2JlZm9yZV9zdG10 OiBCRUZPUkUgVVBEQVRFIFNUQVRFTUVOVDoKIE5PVElDRTogICAgb2xkOiA8TlVMTD4KIE5PVElD RTogICAgbmV3OiA8TlVMTD4KK05PVElDRTogIGZwb19iZWZvcmVfc3RtdDE6IEJFRk9SRSBVUERB VEUgU1RBVEVNRU5UOgorTk9USUNFOiAgICBvbGQ6IDxOVUxMPgorTk9USUNFOiAgICBuZXc6IDxO VUxMPgogTk9USUNFOiAgZnBvX2JlZm9yZV9yb3c6IEJFRk9SRSBVUERBVEUgUk9XOgogTk9USUNF OiAgICBvbGQ6IFsyMDE5LTAxLTAxLDIwMzAtMDEtMDEpCiBOT1RJQ0U6ICAgIG5ldzogWzIwMjEt MDEtMDEsMjAyMi0wMS0wMSkKK05PVElDRTogIGZwb19iZWZvcmVfcm93MTogQkVGT1JFIFVQREFU RSBST1c6CitOT1RJQ0U6ICAgIG9sZDogWzIwMTktMDEtMDEsMjAzMC0wMS0wMSkKK05PVElDRTog ICAgbmV3OiBbMjAyMS0wMS0wMSwyMDIyLTAxLTAxKQogTk9USUNFOiAgZnBvX2JlZm9yZV9zdG10 OiBCRUZPUkUgSU5TRVJUIFNUQVRFTUVOVDoKIE5PVElDRTogICAgb2xkOiA8TlVMTD4KIE5PVElD RTogICAgbmV3OiA8TlVMTD4KQEAgLTE5ODYsNiArMTk5OCw3IEBAIFNFTEVDVCAqIEZST00gZm9y X3BvcnRpb25fb2ZfdGVzdDIgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogRFJPUCBUQUJMRSBmb3Jf cG9ydGlvbl9vZl90ZXN0MjsKIERST1AgVFlQRSBteWRhdGVyYW5nZTsKIC0tIFRlc3QgRk9SIFBP UlRJT04gT0YgYWdhaW5zdCBhIHBhcnRpdGlvbmVkIHRhYmxlLgorLS0gSW5jbHVkZSBhIEdFTkVS QVRFRCBTVE9SRUQgY29sdW1uIHRvIHRlc3QgdXBkYXRlZENvbHMgY29sdW1uIG1hcHBpbmcuCiAt LSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8xIGhhcyB0aGUgc2FtZSBhdHRudW1zIGFzIHRoZSByb290 CiAtLSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIGhhcyB0aGUgZGlmZmVyZW50IGF0dG51bXMgZnJv bSB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBoYXMgdGhlIGRpZmZlcmVudCBh dHRudW1zIHRvbywgYnV0IHJldmVyc2VkCkBAIC0xOTkzLDI5ICsyMDA2LDM0IEBAIENSRUFURSBU QUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCAoCiAgIGlkIGludDRyYW5nZSwKICAgdmFsaWRfYXQg ZGF0ZXJhbmdlLAogICBuYW1lIHRleHQsCisgIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZ UyBBUyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQsCiAgIENPTlNU UkFJTlQgdGVtcG9yYWxfcGFyaXRpb25lZF91cSBVTklRVUUgKGlkLCB2YWxpZF9hdCBXSVRIT1VU IE9WRVJMQVBTKQogKSBQQVJUSVRJT04gQlkgTElTVCAoaWQpOwogQ1JFQVRFIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzEgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBW QUxVRVMgSU4gKCdbMSwyKScsICdbMiwzKScpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkXzMgUEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4g KCdbMyw0KScsICdbNCw1KScpOwogQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUg UEFSVElUSU9OIE9GIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBWQUxVRVMgSU4gKCdbNSw2KScs ICdbNiw3KScpOwogQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWQgREVUQUNIIFBBUlRJ VElPTiB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zOwotQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBEUk9QIENPTFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQ7CitBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIERST1AgQ09MVU1OIGlkLCBEUk9QIENPTFVNTiB2YWxp ZF9hdCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byBjb2x1bW4gcmFuZ2VfbGVu IG9mIHRhYmxlIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4g dmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBw ZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMg Rk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CiBBTFRFUiBUQUJMRSB0ZW1wb3JhbF9w YXJ0aXRpb25lZCBERVRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzU7Ci1BTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IERST1AgQ09MVU1OIGlkLCBEUk9QIENPTFVN TiB2YWxpZF9hdDsKK0FMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xV TU4gaWQsIERST1AgQ09MVU1OIHZhbGlkX2F0IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2Nh ZGVzIHRvIGNvbHVtbiByYW5nZV9sZW4gb2YgdGFibGUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNQog QUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHZhbGlkX2F0IGRh dGVyYW5nZSBOT1QgTlVMTCwgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEw7CitBTFRF UiBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IEFERCBDT0xVTU4gcmFuZ2VfbGVuIGludCBH RU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkpIFNU T1JFRDsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04g dGVtcG9yYWxfcGFydGl0aW9uZWRfNSBGT1IgVkFMVUVTIElOICgnWzUsNiknLCAnWzYsNyknKTsK IElOU0VSVCBJTlRPIHRlbXBvcmFsX3BhcnRpdGlvbmVkIChpZCwgdmFsaWRfYXQsIG5hbWUpIFZB TFVFUwogICAoJ1sxLDIpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEnKSwg J29uZScpLAogICAoJ1szLDQpJywgZGF0ZXJhbmdlKCcyMDAwLTAxLTAxJywgJzIwMTAtMDEtMDEn KSwgJ3RocmVlJyksCiAgICgnWzUsNiknLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0w MS0wMScpLCAnZml2ZScpOwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZDsKLSAg aWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAgCi0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLQotIFsxLDIpIHwgWzIwMDAtMDEtMDEsMjAxMC0wMS0w MSkgfCBvbmUKLSBbMyw0KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgdGhyZWUKLSBbNSw2 KSB8IFsyMDAwLTAxLTAxLDIwMTAtMDEtMDEpIHwgZml2ZQorICBpZCAgIHwgICAgICAgIHZhbGlk X2F0ICAgICAgICAgfCBuYW1lICB8IHJhbmdlX2xlbiAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tCisgWzEsMikgfCBbMjAwMC0wMS0wMSwyMDEw LTAxLTAxKSB8IG9uZSAgIHwgICAgICAzNjUzCisgWzMsNCkgfCBbMjAwMC0wMS0wMSwyMDEwLTAx LTAxKSB8IHRocmVlIHwgICAgICAzNjUzCisgWzUsNikgfCBbMjAwMC0wMS0wMSwyMDEwLTAxLTAx KSB8IGZpdmUgIHwgICAgICAzNjUzCiAoMyByb3dzKQogCiAtLSBVcGRhdGUgd2l0aG91dCBtb3Zp bmcgd2l0aGluIHBhcnRpdGlvbiAxCkBAIC0yMDQ2LDU0ICsyMDY0LDU0IEBAIFVQREFURSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDAwLTA2LTAx JyBUTyAnMjAwMC0wCiAgICAgICBpZCA9ICdbMyw0KScKICAgV0hFUkUgaWQgPSAnWzUsNiknOwog LS0gVXBkYXRlIGFsbCBwYXJ0aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCi1T RUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9SREVSIEJZIGlkLCB2YWxpZF9hdDsK LSAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICAKLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0KLSBbMSwyKSB8IFsyMDAwLTAxLTAxLDIw MDAtMDMtMDEpIHwgb25lCi0gWzEsMikgfCBbMjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8IG9uZV4x Ci0gWzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZQotIFsxLDIpIHwgWzIwMDAt MDctMDEsMjAxMC0wMS0wMSkgfCBvbmUKLSBbMiwzKSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEp IHwgdGhyZWVeMgotIFszLDQpIHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCB0aHJlZQotIFsz LDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCB0aHJlZV4xCi0gWzMsNCkgfCBbMjAwMC0w NC0wMSwyMDAwLTA2LTAxKSB8IHRocmVlCi0gWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAx KSB8IGZpdmVeMgotIFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCB0aHJlZQotIFs0 LDUpIHwgWzIwMDAtMDYtMDEsMjAwMC0wNy0wMSkgfCBvbmVeMgotIFs1LDYpIHwgWzIwMDAtMDEt MDEsMjAwMC0wMy0wMSkgfCBmaXZlCi0gWzUsNikgfCBbMjAwMC0wMy0wMSwyMDAwLTA0LTAxKSB8 IGZpdmVeMQotIFs1LDYpIHwgWzIwMDAtMDQtMDEsMjAwMC0wNi0wMSkgfCBmaXZlCi0gWzUsNikg fCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IGZpdmUKK1NFTEVDVCAqLCB1cHBlcih2YWxpZF9h dCkgLSBsb3dlcih2YWxpZF9hdCkgRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBPUkRFUiBCWSBp ZCwgdmFsaWRfYXQ7CisgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBuYW1lICAg fCByYW5nZV9sZW4gfCA/Y29sdW1uPyAKKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIwMDAtMDEtMDEs MjAwMC0wMy0wMSkgfCBvbmUgICAgIHwgICAgICAgIDYwIHwgICAgICAgNjAKKyBbMSwyKSB8IFsy MDAwLTAzLTAxLDIwMDAtMDQtMDEpIHwgb25lXjEgICB8ICAgICAgICAzMSB8ICAgICAgIDMxCisg WzEsMikgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8IG9uZSAgICAgfCAgICAgICAgNjEgfCAg ICAgICA2MQorIFsxLDIpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBvbmUgICAgIHwgICAg ICAzNDcxIHwgICAgIDM0NzEKKyBbMiwzKSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwgdGhy ZWVeMiB8ICAgICAgICAzMCB8ICAgICAgIDMwCisgWzMsNCkgfCBbMjAwMC0wMS0wMSwyMDAwLTAz LTAxKSB8IHRocmVlICAgfCAgICAgICAgNjAgfCAgICAgICA2MAorIFszLDQpIHwgWzIwMDAtMDMt MDEsMjAwMC0wNC0wMSkgfCB0aHJlZV4xIHwgICAgICAgIDMxIHwgICAgICAgMzEKKyBbMyw0KSB8 IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgdGhyZWUgICB8ICAgICAgICA2MSB8ICAgICAgIDYx CisgWzMsNCkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IGZpdmVeMiAgfCAgICAgICAgMzAg fCAgICAgICAzMAorIFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCB0aHJlZSAgIHwg ICAgICAzNDcxIHwgICAgIDM0NzEKKyBbNCw1KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwg b25lXjIgICB8ICAgICAgICAzMCB8ICAgICAgIDMwCisgWzUsNikgfCBbMjAwMC0wMS0wMSwyMDAw LTAzLTAxKSB8IGZpdmUgICAgfCAgICAgICAgNjAgfCAgICAgICA2MAorIFs1LDYpIHwgWzIwMDAt MDMtMDEsMjAwMC0wNC0wMSkgfCBmaXZlXjEgIHwgICAgICAgIDMxIHwgICAgICAgMzEKKyBbNSw2 KSB8IFsyMDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgZml2ZSAgICB8ICAgICAgICA2MSB8ICAgICAg IDYxCisgWzUsNikgfCBbMjAwMC0wNy0wMSwyMDEwLTAxLTAxKSB8IGZpdmUgICAgfCAgICAgIDM0 NzEgfCAgICAgMzQ3MQogKDE1IHJvd3MpCiAKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfMSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7Ci0gIGlkICAgfCAgICAgICAgdmFsaWRfYXQg ICAgICAgICB8ICBuYW1lICAgCi0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tCi0gWzEsMikgfCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IG9uZQotIFsxLDIpIHwg WzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMQotIFsxLDIpIHwgWzIwMDAtMDQtMDEsMjAw MC0wNi0wMSkgfCBvbmUKLSBbMSwyKSB8IFsyMDAwLTA3LTAxLDIwMTAtMDEtMDEpIHwgb25lCi0g WzIsMykgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8IHRocmVlXjIKKyAgaWQgICB8ICAgICAg ICB2YWxpZF9hdCAgICAgICAgIHwgIG5hbWUgICB8IHJhbmdlX2xlbiAKKy0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBbMSwyKSB8IFsyMDAw LTAxLTAxLDIwMDAtMDMtMDEpIHwgb25lICAgICB8ICAgICAgICA2MAorIFsxLDIpIHwgWzIwMDAt MDMtMDEsMjAwMC0wNC0wMSkgfCBvbmVeMSAgIHwgICAgICAgIDMxCisgWzEsMikgfCBbMjAwMC0w NC0wMSwyMDAwLTA2LTAxKSB8IG9uZSAgICAgfCAgICAgICAgNjEKKyBbMSwyKSB8IFsyMDAwLTA3 LTAxLDIwMTAtMDEtMDEpIHwgb25lICAgICB8ICAgICAgMzQ3MQorIFsyLDMpIHwgWzIwMDAtMDYt MDEsMjAwMC0wNy0wMSkgfCB0aHJlZV4yIHwgICAgICAgIDMwCiAoNSByb3dzKQogCiBTRUxFQ1Qg KiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwotICBu YW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIAotLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHRocmVlICAgfCBbMyw0KSB8IFsyMDAwLTAx LTAxLDIwMDAtMDMtMDEpCi0gdGhyZWVeMSB8IFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0w MSkKLSB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKQotIGZpdmVeMiAg fCBbMyw0KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpCi0gdGhyZWUgICB8IFszLDQpIHwgWzIw MDAtMDctMDEsMjAxMC0wMS0wMSkKLSBvbmVeMiAgIHwgWzQsNSkgfCBbMjAwMC0wNi0wMSwyMDAw LTA3LTAxKQorICBuYW1lICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgcmFu Z2VfbGVuIAorLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorIHRocmVlICAgfCBbMyw0KSB8IFsyMDAwLTAxLTAxLDIwMDAtMDMtMDEpIHwgICAg ICAgIDYwCisgdGhyZWVeMSB8IFszLDQpIHwgWzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCAgICAg ICAgMzEKKyB0aHJlZSAgIHwgWzMsNCkgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8ICAgICAg ICA2MQorIGZpdmVeMiAgfCBbMyw0KSB8IFsyMDAwLTA2LTAxLDIwMDAtMDctMDEpIHwgICAgICAg IDMwCisgdGhyZWUgICB8IFszLDQpIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCAgICAgIDM0 NzEKKyBvbmVeMiAgIHwgWzQsNSkgfCBbMjAwMC0wNi0wMSwyMDAwLTA3LTAxKSB8ICAgICAgICAz MAogKDYgcm93cykKIAogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF81IE9SREVS IEJZIGlkLCB2YWxpZF9hdDsKLSAgbmFtZSAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8ICBp ZCAgIAotLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCi0gZml2ZSAg IHwgWzIwMDAtMDEtMDEsMjAwMC0wMy0wMSkgfCBbNSw2KQotIGZpdmVeMSB8IFsyMDAwLTAzLTAx LDIwMDAtMDQtMDEpIHwgWzUsNikKLSBmaXZlICAgfCBbMjAwMC0wNC0wMSwyMDAwLTA2LTAxKSB8 IFs1LDYpCi0gZml2ZSAgIHwgWzIwMDAtMDctMDEsMjAxMC0wMS0wMSkgfCBbNSw2KQorICBuYW1l ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgIGlkICAgfCByYW5nZV9sZW4gCistLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0KKyBmaXZlICAg fCBbMjAwMC0wMS0wMSwyMDAwLTAzLTAxKSB8IFs1LDYpIHwgICAgICAgIDYwCisgZml2ZV4xIHwg WzIwMDAtMDMtMDEsMjAwMC0wNC0wMSkgfCBbNSw2KSB8ICAgICAgICAzMQorIGZpdmUgICB8IFsy MDAwLTA0LTAxLDIwMDAtMDYtMDEpIHwgWzUsNikgfCAgICAgICAgNjEKKyBmaXZlICAgfCBbMjAw MC0wNy0wMSwyMDEwLTAxLTAxKSB8IFs1LDYpIHwgICAgICAzNDcxCiAoNCByb3dzKQogCiBEUk9Q IFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwpAQCAtMjE1Miw2ICsyMTcwLDEzNyBAQCBTRUxF Q1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOwogKDIgcm93cykKIAogRFJPUCBUQUJMRSBm cG9fcnVsZTsKKy0tIFVQREFURS9ERUxFVEUgRk9SIFBPUlRJT04gT0Ygd2l0aCB0YWJsZSBpbmhl cml0YW5jZQorLS0gTGVmdG92ZXIgcm93cyBtdXN0IHN0YXkgaW4gdGhlIGNoaWxkIHRhYmxlLCBw cmVzZXJ2aW5nIGNoaWxkLXNwZWNpZmljIGNvbHVtbnMuCitDUkVBVEUgVEFCTEUgZnBvX2luaF9w YXJlbnQgKAorICBpZCBpbnQ0cmFuZ2UsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0 ZXh0CispOworQ1JFQVRFIFRBQkxFIGZwb19pbmhfY2hpbGQgKAorICBkZXNjcmlwdGlvbiB0ZXh0 CispIElOSEVSSVRTIChmcG9faW5oX3BhcmVudCk7CistLSBVcGRhdGUgdGFyZ2V0cyB0aGUgcGFy ZW50OyB0aGUgbWF0Y2hpbmcgcm93IGxpdmVzIGluIHRoZSBjaGlsZC4KK0lOU0VSVCBJTlRPIGZw b19pbmhfY2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAo J1sxLDIpJywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CitV UERBVEUgZnBvX2luaF9wYXJlbnQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0w NC0wMScgVE8gJzIwMTgtMTAtMDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJzsKKy0tIEFsbCB0aHJl ZSByb3dzIHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVzY3JpcHRpb24gcHJlc2VydmVk LgorU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZwb19pbmhfcGFyZW50IE9SREVS IEJZIHZhbGlkX2F0OworICAgdGFibGVvaWQgICAgfCAgaWQgICB8ICAgICAgICB2YWxpZF9hdCAg ICAgICAgIHwgbmFtZSAgCistLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0KKyBmcG9faW5oX2NoaWxkIHwgWzEsMikgfCBbMjAxOC0wMS0wMSwy MDE4LTA0LTAxKSB8IG9uZQorIGZwb19pbmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTA0LTAxLDIw MTgtMTAtMDEpIHwgb25lXjEKKyBmcG9faW5oX2NoaWxkIHwgWzEsMikgfCBbMjAxOC0xMC0wMSwy MDE5LTAxLTAxKSB8IG9uZQorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBmcG9faW5oX2NoaWxk IE9SREVSIEJZIHZhbGlkX2F0OworICBpZCAgIHwgICAgICAgIHZhbGlkX2F0ICAgICAgICAgfCBu YW1lICB8IGRlc2NyaXB0aW9uIAorLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLQorIFsxLDIpIHwgWzIwMTgtMDEtMDEsMjAxOC0wNC0wMSkgfCBv bmUgICB8IGluaXRpYWwKKyBbMSwyKSB8IFsyMDE4LTA0LTAxLDIwMTgtMTAtMDEpIHwgb25lXjEg fCBpbml0aWFsCisgWzEsMikgfCBbMjAxOC0xMC0wMSwyMDE5LTAxLTAxKSB8IG9uZSAgIHwgaW5p dGlhbAorKDMgcm93cykKKworLS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50byB0aGUg cGFyZW50LgorU0VMRUNUICogRlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlk X2F0OworIGlkIHwgdmFsaWRfYXQgfCBuYW1lIAorLS0tLSstLS0tLS0tLS0tKy0tLS0tLQorKDAg cm93cykKKworLS0gU2FtZSB0ZXN0IGZvciBERUxFVEUgaW5zdGVhZCBvZiBVUERBVEU6CitUUlVO Q0FURSBmcG9faW5oX2NoaWxkLCBmcG9faW5oX3BhcmVudDsKK0lOU0VSVCBJTlRPIGZwb19pbmhf Y2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAoJ1sxLDIp JywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CitERUxFVEUg RlJPTSBmcG9faW5oX3BhcmVudCBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDE4LTA0 LTAxJyBUTyAnMjAxOC0xMC0wMSc7CistLSBBbGwgdGhyZWUgcm93cyBzaG91bGQgYmUgaW4gdGhl IGNoaWxkLCB3aXRoIGRlc2NyaXB0aW9uIHByZXNlcnZlZC4KK1NFTEVDVCB0YWJsZW9pZDo6cmVn Y2xhc3MsICogRlJPTSBmcG9faW5oX3BhcmVudCBPUkRFUiBCWSB2YWxpZF9hdDsKKyAgIHRhYmxl b2lkICAgIHwgIGlkICAgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgCistLS0tLS0t LS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIGZwb19p bmhfY2hpbGQgfCBbMSwyKSB8IFsyMDE4LTAxLTAxLDIwMTgtMDQtMDEpIHwgb25lCisgZnBvX2lu aF9jaGlsZCB8IFsxLDIpIHwgWzIwMTgtMTAtMDEsMjAxOS0wMS0wMSkgfCBvbmUKKygyIHJvd3Mp CisKK1NFTEVDVCAqIEZST00gZnBvX2luaF9jaGlsZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyAgaWQg ICB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSB8IGRlc2NyaXB0aW9uIAorLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tCisgWzEsMikg fCBbMjAxOC0wMS0wMSwyMDE4LTA0LTAxKSB8IG9uZSAgfCBpbml0aWFsCisgWzEsMikgfCBbMjAx OC0xMC0wMSwyMDE5LTAxLTAxKSB8IG9uZSAgfCBpbml0aWFsCisoMiByb3dzKQorCistLSBObyBy b3dzIHNob3VsZCBoYXZlIGxlYWtlZCBpbnRvIHRoZSBwYXJlbnQuCitTRUxFQ1QgKiBGUk9NIE9O TFkgZnBvX2luaF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IG5h bWUgCistLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIGZwb19p bmhfcGFyZW50IENBU0NBREU7CitOT1RJQ0U6ICBkcm9wIGNhc2NhZGVzIHRvIHRhYmxlIGZwb19p bmhfY2hpbGQKKy0tIFVQREFURSBGT1IgUE9SVElPTiBPRiB3aXRoIG11bHRpcGxlIGluaGVyaXRh bmNlCistLSBMZWZ0b3ZlciByb3dzIG11c3Qgc3RheSBpbiB0aGUgY2hpbGQgdGFibGUsIGV2ZW4g aWYgdGhlIHJhbmdlIGNvbHVtbidzCistLSBhdHRudW0gZGlmZmVycyBiZXR3ZWVuIHRoZSB0YXJn ZXQgcGFyZW50IGFuZCBjaGlsZC4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJlbnQgKAorICBp ZCBpbnQsCisgIHZhbGlkX2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworQ1JFQVRFIFRB QkxFIG90aGVyX3BhcmVudCAoCisgIHByZWZpeCB0ZXh0LAorICBub3RlIHRleHQKKyk7CitDUkVB VEUgVEFCTEUgbWlfY2hpbGQgKCkgSU5IRVJJVFMgKG90aGVyX3BhcmVudCwgdGVtcG9yYWxfcGFy ZW50KTsKK0lOU0VSVCBJTlRPIG1pX2NoaWxkIChwcmVmaXgsIG5vdGUsIGlkLCB2YWxpZF9hdCwg bmFtZSkgVkFMVUVTCisgICgncGZ4JywgJ21lbW8nLCAxLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEn LCAnMjAxMC0wMS0wMScpLCAnb2xkJyk7CitVUERBVEUgdGVtcG9yYWxfcGFyZW50IEZPUiBQT1JU SU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDEtMDEtMDEnIFRPICcyMDAyLTAxLTAxJworICBTRVQg bmFtZSA9ICduZXcnCisgIFdIRVJFIGlkID0gMTsKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3Ms ICogRlJPTSB0ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgdGFibGVvaWQgfCBp ZCB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwgbmFtZSAKKy0tLS0tLS0tLS0rLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIG1pX2NoaWxkIHwgIDEgfCBbMjAwMC0wMS0w MSwyMDAxLTAxLTAxKSB8IG9sZAorIG1pX2NoaWxkIHwgIDEgfCBbMjAwMS0wMS0wMSwyMDAyLTAx LTAxKSB8IG5ldworIG1pX2NoaWxkIHwgIDEgfCBbMjAwMi0wMS0wMSwyMDEwLTAxLTAxKSB8IG9s ZAorKDMgcm93cykKKworU0VMRUNUICogRlJPTSBtaV9jaGlsZCBPUkRFUiBCWSB2YWxpZF9hdDsK KyBwcmVmaXggfCBub3RlIHwgaWQgfCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgCist LS0tLS0tLSstLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIHBm eCAgICB8IG1lbW8gfCAgMSB8IFsyMDAwLTAxLTAxLDIwMDEtMDEtMDEpIHwgb2xkCisgcGZ4ICAg IHwgbWVtbyB8ICAxIHwgWzIwMDEtMDEtMDEsMjAwMi0wMS0wMSkgfCBuZXcKKyBwZnggICAgfCBt ZW1vIHwgIDEgfCBbMjAwMi0wMS0wMSwyMDEwLTAxLTAxKSB8IG9sZAorKDMgcm93cykKKworU0VM RUNUICogRlJPTSBPTkxZIHRlbXBvcmFsX3BhcmVudCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBpZCB8 IHZhbGlkX2F0IHwgbmFtZSAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKygwIHJvd3MpCisKK1RS VU5DQVRFIG1pX2NoaWxkLCBvdGhlcl9wYXJlbnQsIHRlbXBvcmFsX3BhcmVudDsKK0lOU0VSVCBJ TlRPIG1pX2NoaWxkIChwcmVmaXgsIG5vdGUsIGlkLCB2YWxpZF9hdCwgbmFtZSkgVkFMVUVTCisg ICgncGZ4JywgJ21lbW8nLCAxLCBkYXRlcmFuZ2UoJzIwMDAtMDEtMDEnLCAnMjAxMC0wMS0wMScp LCAnb2xkJyk7CitERUxFVEUgRlJPTSB0ZW1wb3JhbF9wYXJlbnQgRk9SIFBPUlRJT04gT0YgdmFs aWRfYXQgRlJPTSAnMjAwMS0wMS0wMScgVE8gJzIwMDItMDEtMDEnCisgIFdIRVJFIGlkID0gMTsK K1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0ZW1wb3JhbF9wYXJlbnQgT1JERVIg QlkgdmFsaWRfYXQ7CisgdGFibGVvaWQgfCBpZCB8ICAgICAgICB2YWxpZF9hdCAgICAgICAgIHwg bmFtZSAKKy0tLS0tLS0tLS0rLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQor IG1pX2NoaWxkIHwgIDEgfCBbMjAwMC0wMS0wMSwyMDAxLTAxLTAxKSB8IG9sZAorIG1pX2NoaWxk IHwgIDEgfCBbMjAwMi0wMS0wMSwyMDEwLTAxLTAxKSB8IG9sZAorKDIgcm93cykKKworU0VMRUNU ICogRlJPTSBtaV9jaGlsZCBPUkRFUiBCWSB2YWxpZF9hdDsKKyBwcmVmaXggfCBub3RlIHwgaWQg fCAgICAgICAgdmFsaWRfYXQgICAgICAgICB8IG5hbWUgCistLS0tLS0tLSstLS0tLS0rLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLQorIHBmeCAgICB8IG1lbW8gfCAgMSB8IFsy MDAwLTAxLTAxLDIwMDEtMDEtMDEpIHwgb2xkCisgcGZ4ICAgIHwgbWVtbyB8ICAxIHwgWzIwMDIt MDEtMDEsMjAxMC0wMS0wMSkgfCBvbGQKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00gT05MWSB0 ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CisgaWQgfCB2YWxpZF9hdCB8IG5hbWUg CistLS0tKy0tLS0tLS0tLS0rLS0tLS0tCisoMCByb3dzKQorCitEUk9QIFRBQkxFIHRlbXBvcmFs X3BhcmVudCBDQVNDQURFOworTk9USUNFOiAgZHJvcCBjYXNjYWRlcyB0byB0YWJsZSBtaV9jaGls ZAogLS0gVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVkIHN0b3JlZCBjb2x1bW5z CiAtLSBUaGUgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSByYW5nZSBjb2x1bW4sIHNv IGl0IG11c3QgYmUKIC0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElPTiBPRiBuYXJyb3dzIHRo ZSByYW5nZS4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29m LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAppbmRleCBhYzVi Y2U1NTNlYi4uMzE2YzNmNzMwODMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zv cl9wb3J0aW9uX29mLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3JfcG9ydGlvbl9v Zi5zcWwKQEAgLTkxMyw2ICs5MTMsMTAgQEAgQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9zdG10 CiAgIEJFRk9SRSBJTlNFUlQgT1IgVVBEQVRFIE9SIERFTEVURSBPTiBmb3JfcG9ydGlvbl9vZl90 ZXN0CiAgIEZPUiBFQUNIIFNUQVRFTUVOVCBFWEVDVVRFIFBST0NFRFVSRSBkdW1wX3RyaWdnZXIo ZmFsc2UsIGZhbHNlKTsKIAorQ1JFQVRFIFRSSUdHRVIgZnBvX2JlZm9yZV9zdG10MQorICBCRUZP UkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZvcl9wb3J0aW9uX29mX3Rlc3QKKyAgRk9SIEVBQ0gg U1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwor CiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3N0bXQKICAgQUZURVIgSU5TRVJUIE9O IGZvcl9wb3J0aW9uX29mX3Rlc3QKICAgRk9SIEVBQ0ggU1RBVEVNRU5UIEVYRUNVVEUgUFJPQ0VE VVJFIGR1bXBfdHJpZ2dlcihmYWxzZSwgZmFsc2UpOwpAQCAtOTMxLDYgKzkzNSwxMCBAQCBDUkVB VEUgVFJJR0dFUiBmcG9fYmVmb3JlX3JvdwogICBCRUZPUkUgSU5TRVJUIE9SIFVQREFURSBPUiBE RUxFVEUgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9D RURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CiAKK0NSRUFURSBUUklHR0VSIGZwb19i ZWZvcmVfcm93MQorICBCRUZPUkUgVVBEQVRFIE9GIHZhbGlkX2F0IE9OIGZvcl9wb3J0aW9uX29m X3Rlc3QKKyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIGR1bXBfdHJpZ2dlcihmYWxz ZSwgZmFsc2UpOworCiBDUkVBVEUgVFJJR0dFUiBmcG9fYWZ0ZXJfaW5zZXJ0X3JvdwogICBBRlRF UiBJTlNFUlQgT04gZm9yX3BvcnRpb25fb2ZfdGVzdAogICBGT1IgRUFDSCBST1cgRVhFQ1VURSBQ Uk9DRURVUkUgZHVtcF90cmlnZ2VyKGZhbHNlLCBmYWxzZSk7CkBAIC0xMjkyLDYgKzEzMDAsNyBA QCBEUk9QIFRBQkxFIGZvcl9wb3J0aW9uX29mX3Rlc3QyOwogRFJPUCBUWVBFIG15ZGF0ZXJhbmdl OwogCiAtLSBUZXN0IEZPUiBQT1JUSU9OIE9GIGFnYWluc3QgYSBwYXJ0aXRpb25lZCB0YWJsZS4K Ky0tIEluY2x1ZGUgYSBHRU5FUkFURUQgU1RPUkVEIGNvbHVtbiB0byB0ZXN0IHVwZGF0ZWRDb2xz IGNvbHVtbiBtYXBwaW5nLgogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBoYXMgdGhlIHNhbWUg YXR0bnVtcyBhcyB0aGUgcm9vdAogLS0gdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBoYXMgdGhlIGRp ZmZlcmVudCBhdHRudW1zIGZyb20gdGhlIHJvb3QKIC0tIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUg aGFzIHRoZSBkaWZmZXJlbnQgYXR0bnVtcyB0b28sIGJ1dCByZXZlcnNlZApAQCAtMTMwMCw2ICsx MzA5LDcgQEAgQ1JFQVRFIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkICgKICAgaWQgaW50NHJh bmdlLAogICB2YWxpZF9hdCBkYXRlcmFuZ2UsCiAgIG5hbWUgdGV4dCwKKyAgcmFuZ2VfbGVuIGlu dCBHRU5FUkFURUQgQUxXQVlTIEFTICh1cHBlcih2YWxpZF9hdCkgLSBsb3dlcih2YWxpZF9hdCkp IFNUT1JFRCwKICAgQ09OU1RSQUlOVCB0ZW1wb3JhbF9wYXJpdGlvbmVkX3VxIFVOSVFVRSAoaWQs IHZhbGlkX2F0IFdJVEhPVVQgT1ZFUkxBUFMpCiApIFBBUlRJVElPTiBCWSBMSVNUIChpZCk7CiBD UkVBVEUgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMSBQQVJUSVRJT04gT0YgdGVtcG9yYWxf cGFydGl0aW9uZWQgRk9SIFZBTFVFUyBJTiAoJ1sxLDIpJywgJ1syLDMpJyk7CkBAIC0xMzA3LDEz ICsxMzE3LDE1IEBAIENSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJ0aXRpb25lZF8zIFBBUlRJVElP TiBPRiB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBGT1IgVkFMVUVTCiBDUkVBVEUgVEFCTEUgdGVtcG9y YWxfcGFydGl0aW9uZWRfNSBQQVJUSVRJT04gT0YgdGVtcG9yYWxfcGFydGl0aW9uZWQgRk9SIFZB TFVFUyBJTiAoJ1s1LDYpJywgJ1s2LDcpJyk7CiAKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRp dGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfMzsKLUFMVEVSIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09MVU1OIHZh bGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfMyBEUk9QIENPTFVNTiBp ZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKIEFMVEVSIFRBQkxFIHRlbXBvcmFsX3Bh cnRpdGlvbmVkXzMgQUREIENPTFVNTiBpZCBpbnQ0cmFuZ2UgTk9UIE5VTEwsIEFERCBDT0xVTU4g dmFsaWRfYXQgZGF0ZXJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0 aW9uZWRfMyBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBBUyAodXBw ZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJMRSB0ZW1w b3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzMg Rk9SIFZBTFVFUyBJTiAoJ1szLDQpJywgJ1s0LDUpJyk7CiAKIEFMVEVSIFRBQkxFIHRlbXBvcmFs X3BhcnRpdGlvbmVkIERFVEFDSCBQQVJUSVRJT04gdGVtcG9yYWxfcGFydGl0aW9uZWRfNTsKLUFM VEVSIFRBQkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgRFJPUCBDT0xVTU4gaWQsIERST1AgQ09M VU1OIHZhbGlkX2F0OworQUxURVIgVEFCTEUgdGVtcG9yYWxfcGFydGl0aW9uZWRfNSBEUk9QIENP TFVNTiBpZCwgRFJPUCBDT0xVTU4gdmFsaWRfYXQgQ0FTQ0FERTsKIEFMVEVSIFRBQkxFIHRlbXBv cmFsX3BhcnRpdGlvbmVkXzUgQUREIENPTFVNTiB2YWxpZF9hdCBkYXRlcmFuZ2UgTk9UIE5VTEws IEFERCBDT0xVTU4gaWQgaW50NHJhbmdlIE5PVCBOVUxMOworQUxURVIgVEFCTEUgdGVtcG9yYWxf cGFydGl0aW9uZWRfNSBBREQgQ09MVU1OIHJhbmdlX2xlbiBpbnQgR0VORVJBVEVEIEFMV0FZUyBB UyAodXBwZXIodmFsaWRfYXQpIC0gbG93ZXIodmFsaWRfYXQpKSBTVE9SRUQ7CiBBTFRFUiBUQUJM RSB0ZW1wb3JhbF9wYXJ0aXRpb25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzUgRk9SIFZBTFVFUyBJTiAoJ1s1LDYpJywgJ1s2LDcpJyk7CiAKIElOU0VSVCBJTlRPIHRl bXBvcmFsX3BhcnRpdGlvbmVkIChpZCwgdmFsaWRfYXQsIG5hbWUpIFZBTFVFUwpAQCAtMTM1OCw3 ICsxMzcwLDcgQEAgVVBEQVRFIHRlbXBvcmFsX3BhcnRpdGlvbmVkIEZPUiBQT1JUSU9OIE9GIHZh bGlkX2F0IEZST00gJzIwMDAtMDYtMDEnIFRPICcyMDAwLTAKIAogLS0gVXBkYXRlIGFsbCBwYXJ0 aXRpb25zIGF0IG9uY2UgKGVhY2ggd2l0aCBsZWZ0b3ZlcnMpCiAKLVNFTEVDVCAqIEZST00gdGVt cG9yYWxfcGFydGl0aW9uZWQgT1JERVIgQlkgaWQsIHZhbGlkX2F0OworU0VMRUNUICosIHVwcGVy KHZhbGlkX2F0KSAtIGxvd2VyKHZhbGlkX2F0KSBGUk9NIHRlbXBvcmFsX3BhcnRpdGlvbmVkIE9S REVSIEJZIGlkLCB2YWxpZF9hdDsKIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0aW9uZWRf MSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiBTRUxFQ1QgKiBGUk9NIHRlbXBvcmFsX3BhcnRpdGlv bmVkXzMgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogU0VMRUNUICogRlJPTSB0ZW1wb3JhbF9wYXJ0 aXRpb25lZF81IE9SREVSIEJZIGlkLCB2YWxpZF9hdDsKQEAgLTEzOTgsNiArMTQxMCw3OSBAQCBT RUxFQ1QgKiBGUk9NIGZwb19ydWxlIE9SREVSIEJZIGYxOwogCiBEUk9QIFRBQkxFIGZwb19ydWxl OwogCistLSBVUERBVEUvREVMRVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggdGFibGUgaW5oZXJpdGFu Y2UKKy0tIExlZnRvdmVyIHJvd3MgbXVzdCBzdGF5IGluIHRoZSBjaGlsZCB0YWJsZSwgcHJlc2Vy dmluZyBjaGlsZC1zcGVjaWZpYyBjb2x1bW5zLgorQ1JFQVRFIFRBQkxFIGZwb19pbmhfcGFyZW50 ICgKKyAgaWQgaW50NHJhbmdlLAorICB2YWxpZF9hdCBkYXRlcmFuZ2UsCisgIG5hbWUgdGV4dAor KTsKK0NSRUFURSBUQUJMRSBmcG9faW5oX2NoaWxkICgKKyAgZGVzY3JpcHRpb24gdGV4dAorKSBJ TkhFUklUUyAoZnBvX2luaF9wYXJlbnQpOworCistLSBVcGRhdGUgdGFyZ2V0cyB0aGUgcGFyZW50 OyB0aGUgbWF0Y2hpbmcgcm93IGxpdmVzIGluIHRoZSBjaGlsZC4KK0lOU0VSVCBJTlRPIGZwb19p bmhfY2hpbGQgKGlkLCB2YWxpZF9hdCwgbmFtZSwgZGVzY3JpcHRpb24pIFZBTFVFUworICAoJ1sx LDIpJywgJ1syMDE4LTAxLTAxLDIwMTktMDEtMDEpJywgJ29uZScsICdpbml0aWFsJyk7CitVUERB VEUgZnBvX2luaF9wYXJlbnQgRk9SIFBPUlRJT04gT0YgdmFsaWRfYXQgRlJPTSAnMjAxOC0wNC0w MScgVE8gJzIwMTgtMTAtMDEnCisgIFNFVCBuYW1lID0gJ29uZV4xJzsKKy0tIEFsbCB0aHJlZSBy b3dzIHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVzY3JpcHRpb24gcHJlc2VydmVkLgor U0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZwb19pbmhfcGFyZW50IE9SREVSIEJZ IHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBmcG9faW5oX2NoaWxkIE9SREVSIEJZIHZhbGlkX2F0 OworLS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50byB0aGUgcGFyZW50LgorU0VMRUNU ICogRlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlkX2F0OworCistLSBTYW1l IHRlc3QgZm9yIERFTEVURSBpbnN0ZWFkIG9mIFVQREFURToKK1RSVU5DQVRFIGZwb19pbmhfY2hp bGQsIGZwb19pbmhfcGFyZW50OworSU5TRVJUIElOVE8gZnBvX2luaF9jaGlsZCAoaWQsIHZhbGlk X2F0LCBuYW1lLCBkZXNjcmlwdGlvbikgVkFMVUVTCisgICgnWzEsMiknLCAnWzIwMTgtMDEtMDEs MjAxOS0wMS0wMSknLCAnb25lJywgJ2luaXRpYWwnKTsKK0RFTEVURSBGUk9NIGZwb19pbmhfcGFy ZW50IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMTgtMDQtMDEnIFRPICcyMDE4LTEw LTAxJzsKKy0tIEFsbCB0aHJlZSByb3dzIHNob3VsZCBiZSBpbiB0aGUgY2hpbGQsIHdpdGggZGVz Y3JpcHRpb24gcHJlc2VydmVkLgorU0VMRUNUIHRhYmxlb2lkOjpyZWdjbGFzcywgKiBGUk9NIGZw b19pbmhfcGFyZW50IE9SREVSIEJZIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBmcG9faW5oX2No aWxkIE9SREVSIEJZIHZhbGlkX2F0OworLS0gTm8gcm93cyBzaG91bGQgaGF2ZSBsZWFrZWQgaW50 byB0aGUgcGFyZW50LgorU0VMRUNUICogRlJPTSBPTkxZIGZwb19pbmhfcGFyZW50IE9SREVSIEJZ IHZhbGlkX2F0OworCitEUk9QIFRBQkxFIGZwb19pbmhfcGFyZW50IENBU0NBREU7CisKKy0tIFVQ REFURSBGT1IgUE9SVElPTiBPRiB3aXRoIG11bHRpcGxlIGluaGVyaXRhbmNlCistLSBMZWZ0b3Zl ciByb3dzIG11c3Qgc3RheSBpbiB0aGUgY2hpbGQgdGFibGUsIGV2ZW4gaWYgdGhlIHJhbmdlIGNv bHVtbidzCistLSBhdHRudW0gZGlmZmVycyBiZXR3ZWVuIHRoZSB0YXJnZXQgcGFyZW50IGFuZCBj aGlsZC4KK0NSRUFURSBUQUJMRSB0ZW1wb3JhbF9wYXJlbnQgKAorICBpZCBpbnQsCisgIHZhbGlk X2F0IGRhdGVyYW5nZSwKKyAgbmFtZSB0ZXh0CispOworQ1JFQVRFIFRBQkxFIG90aGVyX3BhcmVu dCAoCisgIHByZWZpeCB0ZXh0LAorICBub3RlIHRleHQKKyk7CitDUkVBVEUgVEFCTEUgbWlfY2hp bGQgKCkgSU5IRVJJVFMgKG90aGVyX3BhcmVudCwgdGVtcG9yYWxfcGFyZW50KTsKKworSU5TRVJU IElOVE8gbWlfY2hpbGQgKHByZWZpeCwgbm90ZSwgaWQsIHZhbGlkX2F0LCBuYW1lKSBWQUxVRVMK KyAgKCdwZngnLCAnbWVtbycsIDEsIGRhdGVyYW5nZSgnMjAwMC0wMS0wMScsICcyMDEwLTAxLTAx JyksICdvbGQnKTsKKworVVBEQVRFIHRlbXBvcmFsX3BhcmVudCBGT1IgUE9SVElPTiBPRiB2YWxp ZF9hdCBGUk9NICcyMDAxLTAxLTAxJyBUTyAnMjAwMi0wMS0wMScKKyAgU0VUIG5hbWUgPSAnbmV3 JworICBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICogRlJPTSB0 ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIG1pX2NoaWxk IE9SREVSIEJZIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBPTkxZIHRlbXBvcmFsX3BhcmVudCBP UkRFUiBCWSB2YWxpZF9hdDsKKworVFJVTkNBVEUgbWlfY2hpbGQsIG90aGVyX3BhcmVudCwgdGVt cG9yYWxfcGFyZW50OworSU5TRVJUIElOVE8gbWlfY2hpbGQgKHByZWZpeCwgbm90ZSwgaWQsIHZh bGlkX2F0LCBuYW1lKSBWQUxVRVMKKyAgKCdwZngnLCAnbWVtbycsIDEsIGRhdGVyYW5nZSgnMjAw MC0wMS0wMScsICcyMDEwLTAxLTAxJyksICdvbGQnKTsKKworREVMRVRFIEZST00gdGVtcG9yYWxf cGFyZW50IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMDEtMDEtMDEnIFRPICcyMDAy LTAxLTAxJworICBXSEVSRSBpZCA9IDE7CisKK1NFTEVDVCB0YWJsZW9pZDo6cmVnY2xhc3MsICog RlJPTSB0ZW1wb3JhbF9wYXJlbnQgT1JERVIgQlkgdmFsaWRfYXQ7CitTRUxFQ1QgKiBGUk9NIG1p X2NoaWxkIE9SREVSIEJZIHZhbGlkX2F0OworU0VMRUNUICogRlJPTSBPTkxZIHRlbXBvcmFsX3Bh cmVudCBPUkRFUiBCWSB2YWxpZF9hdDsKKworRFJPUCBUQUJMRSB0ZW1wb3JhbF9wYXJlbnQgQ0FT Q0FERTsKKwogLS0gVVBEQVRFIEZPUiBQT1JUSU9OIE9GIHdpdGggZ2VuZXJhdGVkIHN0b3JlZCBj b2x1bW5zCiAtLSBUaGUgZ2VuZXJhdGVkIGNvbHVtbiBkZXBlbmRzIG9uIHRoZSByYW5nZSBjb2x1 bW4sIHNvIGl0IG11c3QgYmUKIC0tIHJlY29tcHV0ZWQgd2hlbiBGT1IgUE9SVElPTiBPRiBuYXJy b3dzIHRoZSByYW5nZS4KLS0gCjIuNDcuMwoK --00000000000020682f0651500230--