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 1vu7Lm-000SWn-2P for pgsql-hackers@arkaria.postgresql.org; Sun, 22 Feb 2026 11:10:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vu7Ll-00AyQh-02 for pgsql-hackers@arkaria.postgresql.org; Sun, 22 Feb 2026 11:10:09 +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 1vu7Lk-00AyQZ-0S for pgsql-hackers@lists.postgresql.org; Sun, 22 Feb 2026 11:10:08 +0000 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vu7Lf-00000000dqF-2Wzy for pgsql-hackers@postgresql.org; Sun, 22 Feb 2026 11:10:06 +0000 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2aadc18f230so21200305ad.3 for ; Sun, 22 Feb 2026 03:10:04 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771758604; cv=none; d=google.com; s=arc-20240605; b=FhIVtEeqYGe3n/X/CzxfWowrggFu3JKQA06X3SDzNfo8mcDWbRAoCtXHvs8AsOyARr NtkI3jnh8Ewz4wZ0YjGwiVDmL91Lj0m6aW4xCp6j6UnhrhPaMOVmwnz+9SX8tPJBKhzA lfIGztp88UMuyu33a970Ki0mKpdLJq/6U8EunwpxygoKpMHXWsTFTTvAuawMMqrAmwIg q3lz72WG/yEQZcWK4BXUFDZNMs7hSPgxYEBem3uy+qtIyql2hSOY1dwsjVV2wlOAawg3 1ueZf+orAiM1+gNX/NQ0dnbtQr2qwetHg/6EZb8Yf+Ym7Mn9UiEGmrFQBiYv8W8UIXiw 613g== 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:reply-to:in-reply-to:references :mime-version:dkim-signature; bh=Y4rxGA0lnMe++BgqyavqZDonbOo9TGCeycddMEyy3iA=; fh=gzvqB4XB5nIliJgnY0+DltfA0ywCJEahlw8vidaVYeI=; b=irmKaiNtxE0En+MdN/vsPxMJo17Ht6FO2GBTJesFZ2684tgkn9CpEecgYpSBh5QkKi JM0jMTEuoA0XMHk40VfA0Q0TVfM3w2Q2Lzp14ZJXptHUqpmr/vS9IUQCcvJBglBIEabT PlL54A1ZYxi/HeP8pSwUPE3KRhNVcOB+wm9wMHHgrYjXWryr8HlZOb4KMRnNcujLAOVR JgZ7YmyekxDf/UY1BovAWAqz7qbSP9GTG7zNHKV6FqDpcam4dkaEwjkJX2m3L4Tg9oif qpGQFK/yNjZoET3P/liz+8lglfQVm2ejkv+2oKNlNpD6OlzEAMGveUOMmmTpdtjNxeLx OP+w==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771758604; x=1772363404; darn=postgresql.org; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Y4rxGA0lnMe++BgqyavqZDonbOo9TGCeycddMEyy3iA=; b=cuXxGr6+iiY8DGda/fRuUanHEfsfy96x/1UlkhmR+9/2hg2CBmCqQQQptTR41voF3b CI0ZmCP2Zmml4lVOUchgLe4pr7wd9uvsQyf0QP+UOoEBWqDVrKFmIbq5bm40Me/k4RnF QjNM1jMgLeIEJoQOroY7cKTOleKxZoBTqGW6tuGyKHqHc13GoJgRLvhJfiRU0Jp4J1a9 iAQErqvlRwiJpHs8FL46bpTFFFVgoZtrm4pa51K6KtRYGKOdebxgWx3CnEBwCW+vfwiU cPUt30RUAUWurfYlFR3FGbelsf7v8ztChjx0Yy50dkKLnEqd/f1OPe42/jSv9rwrLcFv TlCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771758604; x=1772363404; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Y4rxGA0lnMe++BgqyavqZDonbOo9TGCeycddMEyy3iA=; b=EvQZHVYUloL1g+xtNwDt2gitr/GlMMgrYYAxSS52Z3/K67ssoVXNvN7MnhvBD9UJeY tMcSMqtmJZInwYoHy+7kNYdVx7g21378T6xowZTL/zf7V7+hs1ImuEi2SQEzr7r52O9C VMPuTmH37gyWbR+ynRgXMECYc35nALaD9jFB0uurWVFWZzGK54BlYQ/peZ6UfVSv0FCb zNppu1pncD/eF3rzraVevhz10K19ZTnD6ELrRts8g0tjOvOgkhBkZCCuS+koMBY0/SVD e5EKo7tOduIuM6iUQ/LjJwSOpu0iL3Is5Fv0KA3a5+nxiujacWgXussgmBWYFK5qkP2i pQNw== X-Forwarded-Encrypted: i=1; AJvYcCWsMILAN4q9hv47zoG5gIvY4rUv0QmKNHPXsl9d+1ufMoVZBwIpwDnbSnEI72iDBex8NwDeMgCzIK2sKn82@postgresql.org X-Gm-Message-State: AOJu0Yw7U8BxU0ldduvJBKEI0FT4pGjZqfRdu9g7OEGdOIAjiy4DMkrS bKvJVNdy0SkPLFTqgiOEL8mzn4bKz4+cO0UUTJtVGtQInwblHJx/Q4X+PRM0D07J9sTcTfA1V1j xRYX/6/hi++JRc6kLTbb9jPDTiSU+/0w= X-Gm-Gg: AZuq6aK8MNu4NTqbZA52eOF6Uu0axicryOFRNy5B29+gyigjPBYjrzSnlDEc5sJytq9 EeCgUVQ9iaWKN7if12jCRIlXWsUrdB4LXpN6M2rl/1rjjpU33fI4G0nG+3BlIa9FiZbnsd1gz6T Jp4W1ZLFnJS2hg/KuQCphQBsyA40tXozcQiB+booivvgIpv1WgS4AeYpwNONoES07yNkGbPu2Fv DHBOtAneGjhIS7kSBbyW5Zbh2S5pEA1Xbm0WNUdQ96ML8yc6LqKOx6KMR+2mtn+05Lsz2ZvdTpm HCvmABw96h/DnAIuR+mMnKSl5510Jg4NxOt1fW5q X-Received: by 2002:a17:903:2d1:b0:2aa:e114:2f5b with SMTP id d9443c01a7336-2ad74463ec5mr52698685ad.17.1771758603699; Sun, 22 Feb 2026 03:10:03 -0800 (PST) MIME-Version: 1.0 References: <20260214.092310.1353606038244245395.ishii@postgresql.org> <20260215.180652.676783304925959084.ishii@postgresql.org> <20260219.134751.1095180149902968829.ishii@postgresql.org> In-Reply-To: Reply-To: assam258@gmail.com From: Henson Choi Date: Sun, 22 Feb 2026 20:09:52 +0900 X-Gm-Features: AaiRm52aSxMU4Bq1waeu2K2ehQTF4rxmnXd68hA4a6Tn50A4ro4o5GBdFXHl-n4 Message-ID: Subject: Re: Row pattern recognition To: Tatsuo Ishii Cc: vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, pgsql-hackers@postgresql.org Content-Type: multipart/mixed; boundary="000000000000339e53064b67b24f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000339e53064b67b24f Content-Type: multipart/alternative; boundary="000000000000339e51064b67b24d" --000000000000339e51064b67b24d Content-Type: text/plain; charset="UTF-8" Hi Tatsuo, Here are two incremental patches on top of v43 + our previous two. nocfbot-0003: Fix ALT lexical ordering via DFS early termination The altPriority FIXME turned out to have a simple solution. The key insight is that the NFA state list is already in lexical order from DFS traversal, so when a state reaches FIN, all remaining states in the list have worse lexical priority and can be pruned immediately. This makes the altPriority field unnecessary -- DFS traversal order itself guarantees correct lexical ordering. The patch removes altPriority from RPRNFAState entirely and adds early termination in nfa_advance(): when a new FIN is reached, the remaining states are freed and processing stops. This also implements the state pruning optimization I mentioned earlier -- it falls out naturally from the same mechanism. Changes: - Remove altPriority field from RPRNFAState and all call sites - Add early termination in nfa_advance() on new FIN arrival - Simplify nfa_add_matched_state() to unconditional replacement - Fix outer END count increment for quantified VARs in nfa_advance_var() - Remove FIXME 1 test cases, add test_alt_lexical_order test - Add EXPLAIN ANALYZE test verifying early termination statistics nocfbot-0004: Implement reluctant quantifiers With the DFS early termination infrastructure from nocfbot-0003, reluctant quantifiers become straightforward: reverse the DFS traversal order so that shorter matches are explored first, then apply the same early termination to stop at the shortest match. Greedy explores enter/loop before skip/exit; reluctant reverses this to skip/exit before enter/loop. When the preferred (shorter) path reaches FIN, the longer path is pruned immediately. Changes: - Remove parser error rejecting reluctant quantifier syntax - Extend tryUnwrapGroup() to propagate reluctant flag when unwrapping single-child groups: (A)+? -> A+? - Add reluctant branching in nfa_advance_begin(), nfa_advance_end(), and nfa_advance_var() with per-branch early termination - Add tests in rpr_base.sql, rpr_nfa.sql, and rpr.sql covering basic reluctant semantics, quantifier boundaries, interaction with greedy quantifiers, and nested/alternation combinations > I found reluctant quantifiers are useful but also I don't want to make > patch sets far bigger. How do you estimate the difficulty and the size > of the code for reluctant quantifiers? You asked earlier how I estimated the difficulty of reluctant quantifiers. It turned out the answer was subtraction, not addition -- removing altPriority and simplifying the match logic first made reluctant quantifiers almost trivial to add on top. Next I plan to work on the remaining FIXME (cycle prevention for patterns like (A*)*), A{0} implementation, and test reorganization. Best regards, Henson > --000000000000339e51064b67b24d Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

Here are two incrementa= l patches on top of v43 + our previous two.


nocfbot-0003: Fix AL= T lexical ordering via DFS early termination

The altPriority FIXME t= urned out to have a simple solution.=C2=A0 The key
insight is that the N= FA state list is already in lexical order from
DFS traversal, so when a = state reaches FIN, all remaining states in
the list have worse lexical p= riority and can be pruned immediately.

This makes the altPriority fi= eld unnecessary -- DFS traversal order
itself guarantees correct lexical= ordering.=C2=A0 The patch removes
altPriority from RPRNFAState entirely= and adds early termination
in nfa_advance(): when a new FIN is reached,= the remaining states
are freed and processing stops.

This also i= mplements the state pruning optimization I mentioned
earlier -- it falls= out naturally from the same mechanism.

Changes:
- Remove altPrio= rity field from RPRNFAState and all call sites
- Add early termination i= n nfa_advance() on new FIN arrival
- Simplify nfa_add_matched_state() to= unconditional replacement
- Fix outer END count increment for quantifie= d VARs in
=C2=A0 nfa_advance_var()
- Remove FIXME 1 test cases, add t= est_alt_lexical_order test
- Add EXPLAIN ANALYZE test verifying early te= rmination statistics


nocfbot-0004: Implement reluctant quantifie= rs

With the DFS early termination infrastructure from nocfbot-0003,<= br>reluctant quantifiers become straightforward: reverse the DFS
travers= al order so that shorter matches are explored first, then
apply the same= early termination to stop at the shortest match.

Greedy explores en= ter/loop before skip/exit; reluctant reverses
this to skip/exit before e= nter/loop.=C2=A0 When the preferred (shorter)
path reaches FIN, the long= er path is pruned immediately.

Changes:
- Remove parser error rej= ecting reluctant quantifier syntax
- Extend tryUnwrapGroup() to propagat= e reluctant flag when
=C2=A0 unwrapping single-child groups: (A)+? ->= A+?
- Add reluctant branching in nfa_advance_begin(),
=C2=A0 nfa_adv= ance_end(), and nfa_advance_var() with per-branch
=C2=A0 early terminati= on
- Add tests in rpr_base.sql, rpr_nfa.sql, and rpr.sql covering
=C2= =A0 basic reluctant semantics, quantifier boundaries, interaction
=C2=A0= with greedy quantifiers, and nested/alternation combinations


&g= t; I found reluctant quantifiers are useful but also I don't want to ma= ke
> patch sets far bigger. How do you estimate the difficulty and th= e size
> of the code for reluctant quantifiers?

You asked earl= ier how I estimated the difficulty of reluctant
quantifiers.=C2=A0 It tu= rned out the answer was subtraction, not
addition -- removing altPriorit= y and simplifying the match logic
first made reluctant quantifiers almos= t trivial to add on top.

Next I plan to work on the remaining FIXME = (cycle prevention for
patterns like (A*)*), A{0} implementation, and tes= t reorganization.


Best regards,
Henson
--000000000000339e51064b67b24d-- --000000000000339e53064b67b24f Content-Type: application/octet-stream; name="nocfbot-0003-DFS-early-termination.patch" Content-Disposition: attachment; filename="nocfbot-0003-DFS-early-termination.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlxn1n4l0 RnJvbSBjYmY0ZGEwMTNiMmNiMGZmZTJhMTQ5NmU3Zjk0NjdmMWRjMDI5OTdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDIwIEZlYiAyMDI2IDA5OjE4OjIxICswOTAwClN1YmplY3Q6IFtQQVRDSF0gRml4IEFM VCBsZXhpY2FsIG9yZGVyaW5nIHZpYSBERlMgZWFybHkgdGVybWluYXRpb24sIHJlbW92ZQogYWx0 UHJpb3JpdHkKCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgICAg fCAxNjkgKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmggICAgICAgICAgICAgfCAgIDcgLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFz ZS5vdXQgICAgfCAgIDIgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4u b3V0IHwgIDQwICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0ICAg ICB8ICA5MiArKysrLS0tLS0tLS0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNx bCAgICAgIHwgIDI0ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwgICAgICAg ICAgfCAgNzAgKysrLS0tLS0tCiA3IGZpbGVzIGNoYW5nZWQsIDE4NiBpbnNlcnRpb25zKCspLCAy MTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdp bmRvd0FnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCmluZGV4IDli MmM0YjZhMWQ3Li45NmIyY2Q0YjljNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZVdpbmRvd0FnZy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cu YwpAQCAtMjY1LDggKzI2NSw3IEBAIHN0YXRpYyBSUFJORkFTdGF0ZSAqbmZhX3N0YXRlX2FsbG9j KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSk7CiBzdGF0aWMgdm9pZCBuZmFfc3RhdGVfZnJlZShX aW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQVN0YXRlICpzdGF0ZSk7CiBzdGF0aWMgdm9p ZCBuZmFfc3RhdGVfZnJlZV9saXN0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBU3Rh dGUgKmxpc3QpOwogc3RhdGljIFJQUk5GQVN0YXRlICpuZmFfc3RhdGVfY3JlYXRlKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgaW50MTYgZWxlbUlkeCwKLQkJCQkJCQkJCSBpbnQxNiBhbHRQcmlv cml0eSwgaW50MzIgKmNvdW50cywKLQkJCQkJCQkJCSBib29sIHNvdXJjZUFic29yYmFibGUpOwor CQkJCQkJCQkJIGludDMyICpjb3VudHMsIGJvb2wgc291cmNlQWJzb3JiYWJsZSk7CiBzdGF0aWMg Ym9vbCBuZmFfc3RhdGVzX2VxdWFsKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBU3Rh dGUgKnMxLAogCQkJCQkJCSBSUFJORkFTdGF0ZSAqczIpOwogc3RhdGljIGJvb2wgbmZhX2FkZF9z dGF0ZV91bmlxdWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgs CkBAIC01MTg4LDE0ICs1MTg3LDE0IEBAIG5mYV9zdGF0ZV9mcmVlX2xpc3QoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBSUFJORkFTdGF0ZSAqbGlzdCkKIC8qCiAgKiBuZmFfc3RhdGVfY3JlYXRl CiAgKgotICogQ3JlYXRlIGEgbmV3IHN0YXRlIHdpdGggZ2l2ZW4gZWxlbUlkeCwgYWx0UHJpb3Jp dHkgYW5kIGNvdW50cy4KKyAqIENyZWF0ZSBhIG5ldyBzdGF0ZSB3aXRoIGdpdmVuIGVsZW1JZHgg YW5kIGNvdW50cy4KICAqIGlzQWJzb3JiYWJsZSBpcyBjb21wdXRlZCBpbW1lZGlhdGVseTogaW5o ZXJpdGVkIEFORCBuZXcgZWxlbWVudCdzIGZsYWcuCiAgKiBNb25vdG9uaWMgcHJvcGVydHk6IG9u Y2UgZmFsc2UsIHN0YXlzIGZhbHNlIHRocm91Z2ggYWxsIHRyYW5zaXRpb25zLgogICoKICAqIENh bGxlciBpcyByZXNwb25zaWJsZSBmb3IgbGlua2luZyB0aGUgcmV0dXJuZWQgc3RhdGUuCiAgKi8K IHN0YXRpYyBSUFJORkFTdGF0ZSAqCi1uZmFfc3RhdGVfY3JlYXRlKFdpbmRvd0FnZ1N0YXRlICp3 aW5zdGF0ZSwgaW50MTYgZWxlbUlkeCwgaW50MTYgYWx0UHJpb3JpdHksCituZmFfc3RhdGVfY3Jl YXRlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50MTYgZWxlbUlkeCwKIAkJCQkgaW50MzIg KmNvdW50cywgYm9vbCBzb3VyY2VBYnNvcmJhYmxlKQogewogCVJQUlBhdHRlcm4gKnBhdHRlcm4g PSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOwpAQCAtNTIwNCw3ICs1MjAzLDYgQEAgbmZhX3N0YXRlX2Ny ZWF0ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDE2IGVsZW1JZHgsIGludDE2IGFsdFBy aW9yaXR5LAogCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnBhdHRlcm4tPmVsZW1lbnRzW2Vs ZW1JZHhdOwogCiAJc3RhdGUtPmVsZW1JZHggPSBlbGVtSWR4OwotCXN0YXRlLT5hbHRQcmlvcml0 eSA9IGFsdFByaW9yaXR5OwogCWlmIChjb3VudHMgIT0gTlVMTCAmJiBtYXhEZXB0aCA+IDApCiAJ CW1lbWNweShzdGF0ZS0+Y291bnRzLCBjb3VudHMsIHNpemVvZihpbnQzMikgKiBtYXhEZXB0aCk7 CiAKQEAgLTUyNDksNyArNTI0Nyw3IEBAIG5mYV9zdGF0ZXNfZXF1YWwoV2luZG93QWdnU3RhdGUg KndpbnN0YXRlLCBSUFJORkFTdGF0ZSAqczEsIFJQUk5GQVN0YXRlICpzMikKICAqCiAgKiBBZGQg YSBzdGF0ZSB0byBjdHgtPnN0YXRlcyBhdCB0aGUgRU5ELCBvbmx5IGlmIG5vIGR1cGxpY2F0ZSBl eGlzdHMuCiAgKiBSZXR1cm5zIHRydWUgaWYgc3RhdGUgd2FzIGFkZGVkLCBmYWxzZSBpZiBkdXBs aWNhdGUgZm91bmQgKHN0YXRlIGlzIGZyZWVkKS4KLSAqIEVhcmxpZXIgc3RhdGVzIGhhdmUgbG93 ZXIgYWx0UHJpb3JpdHkgKGxleGljYWwgb3JkZXIpLCBzbyBleGlzdGluZyB3aW5zLgorICogRWFy bGllciBzdGF0ZXMgaGF2ZSBiZXR0ZXIgbGV4aWNhbCBvcmRlciAoREZTIHRyYXZlcnNhbCBvcmRl ciksIHNvIGV4aXN0aW5nIHdpbnMuCiAgKi8KIHN0YXRpYyBib29sCiBuZmFfYWRkX3N0YXRlX3Vu aXF1ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgUlBSTkZB U3RhdGUgKnN0YXRlKQpAQCAtNTI4Niw5NiArNTI4NCw0MiBAQCBuZmFfYWRkX3N0YXRlX3VuaXF1 ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwgUlBSTkZBU3Rh dGUgKgogLyoKICAqIG5mYV9hZGRfbWF0Y2hlZF9zdGF0ZQogICoKLSAqIFJlY29yZCBhIG1hdGNo ZWQgc3RhdGUgZm9sbG93aW5nIFNRTCBzdGFuZGFyZCBzZW1hbnRpY3MuCi0gKiBMZXhpY2FsIG9y ZGVyIChsb3dlciBhbHRQcmlvcml0eSkgd2lucyBmaXJzdC4gQW1vbmcgc2FtZSBsZXhpY2FsIG9y ZGVyLAotICogbG9uZ2VyIG1hdGNoIHdpbnMgKGdyZWVkeSkuCisgKiBSZWNvcmQgYSBzdGF0ZSB0 aGF0IHJlYWNoZWQgRklOLCByZXBsYWNpbmcgYW55IHByZXZpb3VzIG1hdGNoLgogICoKLSAqIEZJ WE1FOiBhbHRQcmlvcml0eSBpcyBhIHNpbmdsZSB2YWx1ZSB0aGF0IG9ubHkgdHJhY2tzIHRoZSBs YXN0IEFMVCBjaG9pY2UuCi0gKiBGb3IgcGF0dGVybnMgd2l0aCByZXBlYXRlZCBvciBuZXN0ZWQg QUxUcyBsaWtlIChBfEIpKywgdGhpcyBjYW5ub3QgY29ycmVjdGx5Ci0gKiBpbXBsZW1lbnQgU1FM IHN0YW5kYXJkIGxleGljYWwgb3JkZXIsIHdoaWNoIHJlcXVpcmVzIGNvbXBhcmluZyB0aGUgZnVs bCBwYXRoCi0gKiBmcm9tIGxlZnQgdG8gcmlnaHQuIEZvciBleGFtcGxlOgotICogICBQYXR0ZXJu OiAoQSB8IEIpKwotICogICBQYXRoICJBIEIgQSIgdnMgIkIgQSBCIgotICogICBDdXJyZW50OiBj b21wYXJlcyBsYXN0IGNob2ljZSAoQSB2cyBCKSDihpIgYWx0UHJpb3JpdHkgMTAgdnMgMjAKLSAq ICAgQ29ycmVjdDogc2hvdWxkIGNvbXBhcmUgZmlyc3QgY2hvaWNlIChBIDwgQikg4oaSICJBIEIg QSIgd2lucwotICoKLSAqIEEgY2xhc3NpZmllciBzdHJ1Y3R1cmUgdHJhY2tpbmcgdGhlIGVudGly ZSBBTFQgcGF0aCBpcyByZXF1aXJlZCBmb3IgY29ycmVjdAotICogaW1wbGVtZW50YXRpb24uIFdp dGhvdXQgaXQsIHBhdHRlcm5zIHdpdGggcmVwZWF0ZWQgb3IgbmVzdGVkIEFMVHMgd2lsbAotICog cHJvZHVjZSBpbmNvcnJlY3QgbWF0Y2ggc2VsZWN0aW9uLgorICogRm9yIFNLSVAgUEFTVCBMQVNU IFJPVywgYWxzbyBwcnVuZSBzdWJzZXF1ZW50IGNvbnRleHRzIHdob3NlIHN0YXJ0IHJvdworICog ZmFsbHMgd2l0aGluIHRoZSBtYXRjaCByYW5nZSwgYXMgdGhleSBjYW5ub3QgcHJvZHVjZSBvdXRw dXQgcm93cy4KICAqLwogc3RhdGljIHZvaWQKIG5mYV9hZGRfbWF0Y2hlZF9zdGF0ZShXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKIAkJCQkJICBSUFJORkFTdGF0 ZSAqc3RhdGUsIGludDY0IG1hdGNoRW5kUm93KQogewotCWJvb2wJCXNob3VsZFVwZGF0ZSA9IGZh bHNlOworCWlmIChjdHgtPm1hdGNoZWRTdGF0ZSAhPSBOVUxMKQorCQluZmFfc3RhdGVfZnJlZSh3 aW5zdGF0ZSwgY3R4LT5tYXRjaGVkU3RhdGUpOwogCi0JaWYgKGN0eC0+bWF0Y2hlZFN0YXRlID09 IE5VTEwpCi0JCXNob3VsZFVwZGF0ZSA9IHRydWU7Ci0JZWxzZSBpZiAoc3RhdGUtPmFsdFByaW9y aXR5IDwgY3R4LT5tYXRjaGVkU3RhdGUtPmFsdFByaW9yaXR5KQotCQlzaG91bGRVcGRhdGUgPSB0 cnVlOwkvKiBCZXR0ZXIgbGV4aWNhbCBvcmRlciB3aW5zICovCi0JZWxzZSBpZiAoc3RhdGUtPmFs dFByaW9yaXR5ID09IGN0eC0+bWF0Y2hlZFN0YXRlLT5hbHRQcmlvcml0eSAmJgotCQkJIG1hdGNo RW5kUm93ID4gY3R4LT5tYXRjaEVuZFJvdykKLQkJc2hvdWxkVXBkYXRlID0gdHJ1ZTsJLyogU2Ft ZSBsZXhpY2FsIG9yZGVyLCBsb25nZXIgd2lucyAqLworCWN0eC0+bWF0Y2hlZFN0YXRlID0gc3Rh dGU7CisJc3RhdGUtPm5leHQgPSBOVUxMOworCWN0eC0+bWF0Y2hFbmRSb3cgPSBtYXRjaEVuZFJv dzsKIAotCWlmIChzaG91bGRVcGRhdGUpCisJLyogUHJ1bmUgY29udGV4dHMgdGhhdCBzdGFydGVk IHdpdGhpbiB0aGlzIG1hdGNoJ3MgcmFuZ2UgKi8KKwlpZiAod2luc3RhdGUtPnJwU2tpcFRvID09 IFNUX1BBU1RfTEFTVF9ST1cpCiAJewotCQkvKiBGcmVlIG9sZCBtYXRjaGVkU3RhdGUgaWYgZXhp c3RzICovCi0JCWlmIChjdHgtPm1hdGNoZWRTdGF0ZSAhPSBOVUxMKQotCQkJbmZhX3N0YXRlX2Zy ZWUod2luc3RhdGUsIGN0eC0+bWF0Y2hlZFN0YXRlKTsKKwkJUlBSTkZBQ29udGV4dCAqbmV4dEN0 eDsKKwkJaW50NjQJCXNraXBwZWRMZW47CiAKLQkJLyogVGFrZSBvd25lcnNoaXAgb2YgdGhlIG5l dyBzdGF0ZSAqLwotCQljdHgtPm1hdGNoZWRTdGF0ZSA9IHN0YXRlOwotCQlzdGF0ZS0+bmV4dCA9 IE5VTEw7Ci0JCWN0eC0+bWF0Y2hFbmRSb3cgPSBtYXRjaEVuZFJvdzsKLQotCQkvKi0tLS0tLS0t LS0KLQkJICogU0tJUCBQQVNUIExBU1QgUk9XOiBlYWdlcmx5IHBydW5lIGNvbnRleHRzIHdpdGhp biBtYXRjaCByYW5nZS4KLQkJICoKLQkJICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbmV2 ZXIgYSBGSU4gc3RhdGUgaXMgcmVhY2hlZCwgaW5jbHVkaW5nCi0JCSAqIGR1cmluZyBncmVlZHkg bWF0Y2hpbmcgd2hlbiBpbnRlcm1lZGlhdGUgKHNob3J0ZXIpIG1hdGNoZXMgYXJlCi0JCSAqIGZv dW5kLiBFYWNoIHRpbWUgd2UgdXBkYXRlIG1hdGNoRW5kUm93ICh3aGV0aGVyIGV4dGVuZGluZyBh IGdyZWVkeQotCQkgKiBtYXRjaCBvciBmaW5kaW5nIGEgbmV3IG1hdGNoKSwgd2UgY2FuIHBydW5l IHBlbmRpbmcgY29udGV4dHMgdGhhdAotCQkgKiBzdGFydGVkIHdpdGhpbiB0aGUgY3VycmVudCBt YXRjaCByYW5nZS4KLQkJICoKLQkJICogU0tJUCBQQVNUIExBU1QgUk9XIHVzZXMgbGV4aWNhbCBv cmRlciAobWF0Y2hTdGFydFJvdykuIFRoZXJlZm9yZSwKLQkJICogYW55IHBlbmRpbmcgY29udGV4 dCB0aGF0IHN0YXJ0ZWQgYXQgb3IgYmVmb3JlIG1hdGNoRW5kUm93IGNhbiBuZXZlcgotCQkgKiBw cm9kdWNlIGEgdmFsaWQgb3V0cHV0IHJvdyAtIGl0IHdvdWxkIGJlIHNraXBwZWQgYW55d2F5IHBl ciBTUUwKLQkJICogc3RhbmRhcmQuCi0JCSAqCi0JCSAqIEV4YW1wbGUgKGdyZWVkeSBtYXRjaGlu ZyBpbiBwcm9ncmVzcyk6Ci0JCSAqICAgUGF0dGVybjogU1RBUlQgVVArCi0JCSAqICAgUm93czog MSAyIDMgNCA1Ci0JCSAqICAgQ29udGV4dCBBIHN0YXJ0cyBhdCByb3cgMToKLQkJICogICAgIC0g TWF0Y2hlcyBTVEFSVCBVUCAocm93cyAxLTIpIOKGkiBtYXRjaEVuZFJvdz0yIOKGkiBwcnVuZSBD b250ZXh0IEIocm93IDIpCi0JCSAqICAgICAtIE1hdGNoZXMgU1RBUlQgVVAgVVAgKHJvd3MgMS0z KSDihpIgbWF0Y2hFbmRSb3c9MyDihpIgcHJ1bmUgQ29udGV4dCBDKHJvdyAzKQotCQkgKiAgICAg LSBDb250aW51ZXMgZ3JlZWR5IGV4dGVuc2lvbiB3aGlsZSBwcnVuaW5nIGluY3JlbWVudGFsbHkK LQkJICotLS0tLS0tLS0tCi0JCSAqLwotCQlpZiAod2luc3RhdGUtPnJwU2tpcFRvID09IFNUX1BB U1RfTEFTVF9ST1cpCisJCXdoaWxlIChjdHgtPm5leHQgIT0gTlVMTCAmJgorCQkJICAgY3R4LT5u ZXh0LT5tYXRjaFN0YXJ0Um93IDw9IG1hdGNoRW5kUm93KQogCQl7Ci0JCQlSUFJORkFDb250ZXh0 ICpuZXh0Q3R4OwotCQkJaW50NjQJCXNraXBwZWRMZW47Ci0KLQkJCXdoaWxlIChjdHgtPm5leHQg IT0gTlVMTCAmJgotCQkJCSAgIGN0eC0+bmV4dC0+bWF0Y2hTdGFydFJvdyA8PSBtYXRjaEVuZFJv dykKLQkJCXsKLQkJCQluZXh0Q3R4ID0gY3R4LT5uZXh0OwotCQkJCWN0eC0+bmV4dCA9IGN0eC0+ bmV4dC0+bmV4dDsKKwkJCW5leHRDdHggPSBjdHgtPm5leHQ7CisJCQljdHgtPm5leHQgPSBjdHgt Pm5leHQtPm5leHQ7CiAKLQkJCQlBc3NlcnQobmV4dEN0eC0+bGFzdFByb2Nlc3NlZFJvdyA+PSBu ZXh0Q3R4LT5tYXRjaFN0YXJ0Um93KTsKLQkJCQlza2lwcGVkTGVuID0gbmV4dEN0eC0+bGFzdFBy b2Nlc3NlZFJvdyAtIG5leHRDdHgtPm1hdGNoU3RhcnRSb3cgKyAxOwotCQkJCW5mYV9yZWNvcmRf Y29udGV4dF9za2lwcGVkKHdpbnN0YXRlLCBza2lwcGVkTGVuKTsKKwkJCUFzc2VydChuZXh0Q3R4 LT5sYXN0UHJvY2Vzc2VkUm93ID49IG5leHRDdHgtPm1hdGNoU3RhcnRSb3cpOworCQkJc2tpcHBl ZExlbiA9IG5leHRDdHgtPmxhc3RQcm9jZXNzZWRSb3cgLSBuZXh0Q3R4LT5tYXRjaFN0YXJ0Um93 ICsgMTsKKwkJCW5mYV9yZWNvcmRfY29udGV4dF9za2lwcGVkKHdpbnN0YXRlLCBza2lwcGVkTGVu KTsKIAotCQkJCW5mYV9jb250ZXh0X2ZyZWUod2luc3RhdGUsIG5leHRDdHgpOwotCQkJfQotCQkJ aWYgKGN0eC0+bmV4dCA9PSBOVUxMKQotCQkJCXdpbnN0YXRlLT5uZmFDb250ZXh0VGFpbCA9IGN0 eDsKKwkJCW5mYV9jb250ZXh0X2ZyZWUod2luc3RhdGUsIG5leHRDdHgpOwogCQl9Ci0JfQotCWVs c2UKLQl7Ci0JCS8qIFRoaXMgc3RhdGUgZGlkbid0IHdpbiwgZnJlZSBpdCAqLwotCQluZmFfc3Rh dGVfZnJlZSh3aW5zdGF0ZSwgc3RhdGUpOworCQlpZiAoY3R4LT5uZXh0ID09IE5VTEwpCisJCQl3 aW5zdGF0ZS0+bmZhQ29udGV4dFRhaWwgPSBjdHg7CiAJfQogfQogCkBAIC02MTI0LDggKzYwNjgs NyBAQCBuZmFfcm91dGVfdG9fZWxlbShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNv bnRleHQgKmN0eCwKIAkJCVJQUk5GQVN0YXRlICpza2lwU3RhdGU7CiAKIAkJCXNraXBTdGF0ZSA9 IG5mYV9zdGF0ZV9jcmVhdGUod2luc3RhdGUsIG5leHRFbGVtLT5uZXh0LAotCQkJCQkJCQkJCSBz dGF0ZS0+YWx0UHJpb3JpdHksIHN0YXRlLT5jb3VudHMsCi0JCQkJCQkJCQkJIHN0YXRlLT5pc0Fi c29yYmFibGUpOworCQkJCQkJCQkJCSBzdGF0ZS0+Y291bnRzLCBzdGF0ZS0+aXNBYnNvcmJhYmxl KTsKIAkJCW5mYV9hZHZhbmNlX3N0YXRlKHdpbnN0YXRlLCBjdHgsIHNraXBTdGF0ZSwgY3VycmVu dFBvcywgaW5pdGlhbEFkdmFuY2UpOwogCQl9CiAJfQpAQCAtNjEzOCw4ICs2MDgxLDcgQEAgbmZh X3JvdXRlX3RvX2VsZW0oV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpj dHgsCiAvKgogICogbmZhX2FkdmFuY2VfYWx0CiAgKgotICogSGFuZGxlIEFMVCBlbGVtZW50OiBl eHBhbmQgYWxsIGJyYW5jaGVzIGluIGxleGljYWwgb3JkZXIgKERGUykuCi0gKiBTZXRzIGFsdFBy aW9yaXR5IHRvIGVsZW1lbnQgaW5kZXggdG8gcHJlc2VydmUgbGV4aWNhbCBvcmRlciBmb3IgbWF0 Y2ggc2VsZWN0aW9uLgorICogSGFuZGxlIEFMVCBlbGVtZW50OiBleHBhbmQgYWxsIGJyYW5jaGVz IGluIGxleGljYWwgb3JkZXIgdmlhIERGUy4KICAqLwogc3RhdGljIHZvaWQKIG5mYV9hZHZhbmNl X2FsdChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKQEAgLTYx NjMsMTMgKzYxMDUsMTIgQEAgbmZhX2FkdmFuY2VfYWx0KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCQlpZiAoZmlyc3QpCiAJCXsKIAkJCXN0YXRlLT5lbGVt SWR4ID0gYWx0SWR4OwotCQkJc3RhdGUtPmFsdFByaW9yaXR5ID0gYWx0SWR4OwogCQkJbmV3U3Rh dGUgPSBzdGF0ZTsKIAkJCWZpcnN0ID0gZmFsc2U7CiAJCX0KIAkJZWxzZQogCQl7Ci0JCQluZXdT dGF0ZSA9IG5mYV9zdGF0ZV9jcmVhdGUod2luc3RhdGUsIGFsdElkeCwgYWx0SWR4LAorCQkJbmV3 U3RhdGUgPSBuZmFfc3RhdGVfY3JlYXRlKHdpbnN0YXRlLCBhbHRJZHgsCiAJCQkJCQkJCQkJc3Rh dGUtPmNvdW50cywgc3RhdGUtPmlzQWJzb3JiYWJsZSk7CiAJCX0KIApAQCAtNjIwNCw3ICs2MTQ1 LDcgQEAgbmZhX2FkdmFuY2VfYmVnaW4oV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFD b250ZXh0ICpjdHgsCiAJLyogT3B0aW9uYWwgZ3JvdXA6IGNyZWF0ZSBza2lwIHBhdGggKGJ1dCBk b24ndCByb3V0ZSB5ZXQpICovCiAJaWYgKGVsZW0tPm1pbiA9PSAwKQogCXsKLQkJc2tpcFN0YXRl ID0gbmZhX3N0YXRlX2NyZWF0ZSh3aW5zdGF0ZSwgZWxlbS0+anVtcCwgc3RhdGUtPmFsdFByaW9y aXR5LAorCQlza2lwU3RhdGUgPSBuZmFfc3RhdGVfY3JlYXRlKHdpbnN0YXRlLCBlbGVtLT5qdW1w LAogCQkJCQkJCQkJIHN0YXRlLT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOwogCX0KIApA QCAtNjI4NiwyMSArNjIyNywxNSBAQCBuZmFfYWR2YW5jZV9lbmQoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCiAJCSAqIEJldHdlZW4gbWluIGFuZCBtYXggKHdp dGggYXQgbGVhc3Qgb25lIGl0ZXJhdGlvbikgLSBjYW4gZXhpdCBvcgogCQkgKiBsb29wCiAJCSAq LwotCQlSUFJFbGVtSWR4CWV4aXRBbHRQcmlvcml0eTsKIAkJUlBSTkZBU3RhdGUgKmV4aXRTdGF0 ZTsKIAkJUlBSUGF0dGVybkVsZW1lbnQgKmp1bXBFbGVtOwogCQlSUFJQYXR0ZXJuRWxlbWVudCAq bmV4dEVsZW07CiAKLQkJLyogUHJlc2VydmUgYWx0UHJpb3JpdHkgZm9yIGdyZWVkeSBleHRlbnNp b24gKi8KLQkJZXhpdEFsdFByaW9yaXR5ID0gc3RhdGUtPmFsdFByaW9yaXR5OwotCQlpZiAoY3R4 LT5tYXRjaGVkU3RhdGUgIT0gTlVMTCkKLQkJCWV4aXRBbHRQcmlvcml0eSA9IGN0eC0+bWF0Y2hl ZFN0YXRlLT5hbHRQcmlvcml0eTsKLQogCQkvKgogCQkgKiBDcmVhdGUgZXhpdCBzdGF0ZSBmaXJz dCAobmVlZCBvcmlnaW5hbCBjb3VudHMgYmVmb3JlIG1vZGlmeWluZwogCQkgKiBzdGF0ZSkKIAkJ ICovCi0JCWV4aXRTdGF0ZSA9IG5mYV9zdGF0ZV9jcmVhdGUod2luc3RhdGUsIGVsZW0tPm5leHQs IGV4aXRBbHRQcmlvcml0eSwKKwkJZXhpdFN0YXRlID0gbmZhX3N0YXRlX2NyZWF0ZSh3aW5zdGF0 ZSwgZWxlbS0+bmV4dCwKIAkJCQkJCQkJCSBzdGF0ZS0+Y291bnRzLCBzdGF0ZS0+aXNBYnNvcmJh YmxlKTsKIAkJZXhpdFN0YXRlLT5jb3VudHNbZGVwdGhdID0gMDsKIAkJbmV4dEVsZW0gPSAmZWxl bWVudHNbZXhpdFN0YXRlLT5lbGVtSWR4XTsKQEAgLTYzNDksNyArNjI4NCw3IEBAIG5mYV9hZHZh bmNlX3ZhcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKIAkJ UlBSTkZBU3RhdGUgKmxvb3BTdGF0ZTsKIAkJUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtOwog Ci0JCWxvb3BTdGF0ZSA9IG5mYV9zdGF0ZV9jcmVhdGUod2luc3RhdGUsIHN0YXRlLT5lbGVtSWR4 LCBzdGF0ZS0+YWx0UHJpb3JpdHksCisJCWxvb3BTdGF0ZSA9IG5mYV9zdGF0ZV9jcmVhdGUod2lu c3RhdGUsIHN0YXRlLT5lbGVtSWR4LAogCQkJCQkJCQkJIHN0YXRlLT5jb3VudHMsIHN0YXRlLT5p c0Fic29yYmFibGUpOwogCQluZmFfYWRkX3N0YXRlX3VuaXF1ZSh3aW5zdGF0ZSwgY3R4LCBsb29w U3RhdGUpOwogCkBAIC02MzU4LDYgKzYyOTMsMjAgQEAgbmZhX2FkdmFuY2VfdmFyKFdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAogCQlzdGF0ZS0+ZWxlbUlkeCA9 IGVsZW0tPm5leHQ7CiAJCW5leHRFbGVtID0gJmVsZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKIAor CQkvKgorCQkgKiBXaGVuIGEgcXVhbnRpZmllZCBWQVIgKGUuZy4sIEErKSBleGl0cyBkaXJlY3Rs eSB0byBhbiBvdXRlciBFTkQsCisJCSAqIGluY3JlbWVudCB0aGUgRU5EJ3MgaXRlcmF0aW9uIGNv dW50LiAgU2ltcGxlIFZBUnMgKG1pbj1tYXg9MSkKKwkJICogaGFuZGxlIHRoaXMgdmlhIGlubGlu ZSBhZHZhbmNlIGluIG5mYV9tYXRjaCwgYnV0IHF1YW50aWZpZWQgVkFScworCQkgKiBieXBhc3Mg dGhhdCBwYXRoLiAgT25seSBpbmNyZW1lbnQgd2hlbiB0aGUgVkFSIGFjdHVhbGx5IGNvbnN1bWVk CisJCSAqIHJvd3MgKGNvdW50ID4gMCkgdG8gcHJlc2VydmUgY3ljbGUgcHJldmVudGlvbiBmb3Ig emVyby1wcm9ncmVzcworCQkgKiBsb29wcy4KKwkJICovCisJCWlmIChSUFJFbGVtSXNFbmQobmV4 dEVsZW0pICYmIGNvdW50ID4gMCkKKwkJeworCQkJaWYgKHN0YXRlLT5jb3VudHNbbmV4dEVsZW0t PmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJCQkJc3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVw dGhdKys7CisJCX0KKwogCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSwg bmV4dEVsZW0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKIAl9CiAJZWxzZSBpZiAoY2Fu TG9vcCkKQEAgLTYzNzQsNiArNjMyMywxMyBAQCBuZmFfYWR2YW5jZV92YXIoV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCiAJCXN0YXRlLT5lbGVtSWR4ID0gZWxl bS0+bmV4dDsKIAkJbmV4dEVsZW0gPSAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOwogCisJCS8q IFNlZSBjb21tZW50IGFib3ZlOiBpbmNyZW1lbnQgb3V0ZXIgRU5EIGNvdW50IGZvciBxdWFudGlm aWVkIFZBUnMgKi8KKwkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxlbSkgJiYgY291bnQgPiAwKQor CQl7CisJCQlpZiAoc3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01B WCkKKwkJCQlzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0rKzsKKwkJfQorCiAJCW5mYV9y b3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBuZXh0RWxlbSwgY3VycmVudFBvcywg aW5pdGlhbEFkdmFuY2UpOwogCX0KIH0KQEAgLTYzODIsOSArNjMzOCw3IEBAIG5mYV9hZHZhbmNl X3ZhcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKICAqIG5m YV9hZHZhbmNlX3N0YXRlCiAgKgogICogUmVjdXJzaXZlbHkgcHJvY2VzcyBhIHNpbmdsZSBzdGF0 ZSB0aHJvdWdoIGVwc2lsb24gdHJhbnNpdGlvbnMuCi0gKiBVc2VzIERGUyB0cmF2ZXJzYWwgdG8g bWFpbnRhaW4gbGV4aWNhbCBvcmRlcjogbG93ZXIgYWx0UHJpb3JpdHkgcGF0aHMKLSAqIGFyZSBm dWxseSBwcm9jZXNzZWQgYmVmb3JlIGhpZ2hlciBhbHRQcmlvcml0eSBwYXRocywgZW5zdXJpbmcg c3RhdGVzCi0gKiBhcmUgYWRkZWQgdG8gY3R4LT5zdGF0ZXMgaW4gbGV4aWNhbCBvcmRlci4KKyAq IERGUyB0cmF2ZXJzYWwgZW5zdXJlcyBzdGF0ZXMgYXJlIGFkZGVkIHRvIGN0eC0+c3RhdGVzIGlu IGxleGljYWwgb3JkZXIuCiAgKi8KIHN0YXRpYyB2b2lkCiBuZmFfYWR2YW5jZV9zdGF0ZShXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKQEAgLTY0NDMsMTMgKzYz OTcsMjYgQEAgbmZhX2FkdmFuY2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250 ZXh0ICpjdHgsIGludDY0IGN1cnJlbnRQb3MsCiAKIAljdHgtPnN0YXRlcyA9IE5VTEw7CQkJLyog V2lsbCByZWJ1aWxkICovCiAKLQkvKiBQcm9jZXNzIGVhY2ggc3RhdGUgaW4gb3JkZXIgKi8KKwkv KiBQcm9jZXNzIGVhY2ggc3RhdGUgaW4gbGV4aWNhbCBvcmRlciAoREZTIG9yZGVyIGZyb20gcHJl dmlvdXMgYWR2YW5jZSkgKi8KIAl3aGlsZSAoc3RhdGVzICE9IE5VTEwpCiAJeworCQlSUFJORkFT dGF0ZSAqc2F2ZWRNYXRjaGVkU3RhdGUgPSBjdHgtPm1hdGNoZWRTdGF0ZTsKKwogCQlzdGF0ZSA9 IHN0YXRlczsKIAkJc3RhdGVzID0gc3RhdGVzLT5uZXh0OwogCQlzdGF0ZS0+bmV4dCA9IE5VTEw7 CiAKIAkJbmZhX2FkdmFuY2Vfc3RhdGUod2luc3RhdGUsIGN0eCwgc3RhdGUsIGN1cnJlbnRQb3Ms IGluaXRpYWxBZHZhbmNlKTsKKworCQkvKgorCQkgKiBFYXJseSB0ZXJtaW5hdGlvbjogaWYgYSBG SU4gd2FzIG5ld2x5IHJlYWNoZWQgaW4gdGhpcyBhZHZhbmNlLAorCQkgKiByZW1haW5pbmcgb2xk IHN0YXRlcyBoYXZlIHdvcnNlIGxleGljYWwgb3JkZXIgYW5kIGNhbiBiZSBwcnVuZWQuCisJCSAq IE9ubHkgY2hlY2sgZm9yIG5ldyBGSU4gYXJyaXZhbHMgKG5vdCBvbmVzIGZyb20gcHJldmlvdXMg cm93cykuCisJCSAqLworCQlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0gc2F2ZWRNYXRjaGVkU3Rh dGUgJiYgc3RhdGVzICE9IE5VTEwpCisJCXsKKwkJCW5mYV9zdGF0ZV9mcmVlX2xpc3Qod2luc3Rh dGUsIHN0YXRlcyk7CisJCQlicmVhazsKKwkJfQogCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5k ZXggY2Q2Zjc5NGY2MmIuLjlhMTU2MWZjZTdlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMjUy MywyMSArMjUyMywxNCBAQCB0eXBlZGVmIGVudW0gV2luZG93QWdnU3RhdHVzCiAgKiBSUFJORkFT dGF0ZSAtIHNpbmdsZSBORkEgc3RhdGUgZm9yIHBhdHRlcm4gbWF0Y2hpbmcKICAqCiAgKiBjb3Vu dHNbXSB0cmFja3MgcmVwZXRpdGlvbiBjb3VudHMgYXQgZWFjaCBuZXN0aW5nIGRlcHRoLgotICog YWx0UHJpb3JpdHkgdHJhY2tzIGxleGljYWwgb3JkZXIgZm9yIGFsdGVybmF0aW9uIChsb3dlciA9 IGVhcmxpZXIgYWx0ZXJuYXRpdmUpLgogICoKICAqIGlzQWJzb3JiYWJsZSB0cmFja3MgaWYgc3Rh dGUgaXMgaW4gYWJzb3JiYWJsZSByZWdpb24gKEFCU09SQkFCTEVfQlJBTkNIKS4KICAqIE1vbm90 b25pYyBwcm9wZXJ0eTogb25jZSBmYWxzZSwgc3RheXMgZmFsc2UgKGNhbid0IHJlLWVudGVyIHJl Z2lvbikuCi0gKgotICogQWJzb3JwdGlvbiBjb21wYXJpc29uIHVzZXMgZWxlbUlkeCBhbmQgY291 bnRzW2RlcHRoXSBkaXJlY3RseSBiZWNhdXNlOgotICogICAtIFZBUiBlbGVtZW50cyBjb25zdW1l IGEgcm93LCBmb3JjaW5nIHN0YXRlcyB0byB3YWl0IGZvciBuZXh0IHJvdwotICogICAtIEVORCBs b29wIHB1dHMgc3RhdGVzIGF0IGdyb3VwIHN0YXJ0IHdpdGggaXRlcmF0aW9uIGNvdW50IHByZXNl cnZlZAotICogICAtIEF0IHJvdyBlbmQsIGNvbXBhcmFibGUgc3RhdGVzIGFyZSBhdCB0aGUgc2Ft ZSBwb3NpdGlvbiAoZWxlbUlkeCkKICAqLwogdHlwZWRlZiBzdHJ1Y3QgUlBSTkZBU3RhdGUKIHsK IAlzdHJ1Y3QgUlBSTkZBU3RhdGUgKm5leHQ7CS8qIG5leHQgc3RhdGUgaW4gbGlua2VkIGxpc3Qg Ki8KIAlpbnQxNgkJZWxlbUlkeDsJCS8qIGN1cnJlbnQgcGF0dGVybiBlbGVtZW50IGluZGV4ICov Ci0JaW50MTYJCWFsdFByaW9yaXR5OwkvKiBsZXhpY2FsIG9yZGVyIHByaW9yaXR5IChsb3dlciA9 IHByZWZlcnJlZCkgKi8KIAlib29sCQlpc0Fic29yYmFibGU7CS8qIHRydWUgaWYgc3RhdGUgaXMg aW4gYWJzb3JiYWJsZSByZWdpb24gKi8KIAlpbnQzMgkJY291bnRzW0ZMRVhJQkxFX0FSUkFZX01F TUJFUl07CS8qIHJlcGV0aXRpb24gY291bnRzIGJ5IGRlcHRoICovCiB9IFJQUk5GQVN0YXRlOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9iYXNlLm91dAppbmRleCAxZDQyYWYxNTk4MC4uZDMx N2VjNzBjOGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uu b3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0CkBAIC0zNzAz LDcgKzM3MDMsNyBAQCBXSU5ET1cgdyBBUyAoCiBPUkRFUiBCWSBpZDsKICBpZCB8IHZhbCB8IGNu dCAKIC0tLS0rLS0tLS0rLS0tLS0KLSAgMSB8ICAxMCB8ICAgMAorICAxIHwgIDEwIHwgICAzCiAg IDIgfCAgMjAgfCAgIDAKICAgMyB8ICAzMCB8ICAgMAogICA0IHwgIDQwIHwgICAwCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dCBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4cGxhaW4ub3V0CmluZGV4IGJmZTRlZTJiYTdkLi5kYWNi OGQ2OTA3ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFp bi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQKQEAg LTY3Niw2ICs2NzYsNDYgQEAgV0lORE9XIHcgQVMgKAogICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24g Z2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQogKDkgcm93cykK IAorRFJPUCBWSUVXIHJwcl92OworLS0gRWFybHkgdGVybWluYXRpb246IGZpcnN0IEFMVCBicmFu Y2ggKEEpIHJlYWNoZXMgRklOIGltbWVkaWF0ZWx5LAorLS0gcHJ1bmluZyBzZWNvbmQgYnJhbmNo IChBIEIrKSBiZWZvcmUgaXQgY2FuIGFjY3VtdWxhdGUgQiByZXBldGl0aW9ucy4KK0NSRUFURSBU RU1QIFZJRVcgcnByX3YgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQSBCKSspCisgICAgREVGSU5FIEEgQVMg diA9IDEsIEIgQVMgdiA+IDEKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl92JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBhIGIpKykgCisoMSByb3cpCisKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEEgQikrKQorICAg IERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPiAxCispOycpOworICAgICAgICAgICAgICAgICAg ICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBhIGIpKworICAgU3RvcmFnZTogTWVtb3J5ICBNYXhp bXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCAyMDQgdG90YWwsIDAgbWVy Z2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAxIHRvdGFsLCA5OSBwcnVuZWQKKyAgIE5G QTogMSBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9u IFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQor KDggcm93cykKKwogRFJPUCBWSUVXIHJwcl92OwogLS0gTmVzdGVkIHF1YW50aWZpZXJzIGNhdXNp bmcgc3RhdGUgZ3Jvd3RoCiBDUkVBVEUgVEVNUCBWSUVXIHJwcl92IEFTCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9uZmEub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ycHJfbmZhLm91dAppbmRleCA0NmE0NjNjMjU5Ny4uN2QzOGQ2MmFjMzEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQKKysrIGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dApAQCAtMTUxNCw2ICsxNTE0LDM0IEBAIFdJ TkRPVyB3IEFTICgKICAgNCB8IHtfLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKICg0IHJv d3MpCiAKKy0tIEFMVCBsZXhpY2FsIG9yZGVyIHRha2VzIHByaW9yaXR5IG92ZXIgZ3JlZWR5IChs b25nZXIgbWF0Y2gpLgorLS0gUm93IDEgbWF0Y2hlcyBib3RoIEEgYW5kIEI7IEEgd2lucyBieSBs ZXhpY2FsIG9yZGVyIChtYXRjaCAxLTEpLgorV0lUSCB0ZXN0X2FsdF9sZXhpY2FsX29yZGVyIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQidd KSwgIC0tIEEgYW5kIEIgYm90aCBtYXRjaAorICAgICAgICAoMiwgQVJSQVlbJ18nLCdDJ10pICAg LS0gb25seSBDIG1hdGNoZXMgKHdvdWxkIGNvbnRpbnVlIEIgQykKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9hbHRfbGV4aWNhbF9vcmRlcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEg fCBCIEMpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8 ICAgICAgICAgMQorICAyIHwge18sQ30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDIgcm93 cykKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAtLSBEZWVwIE5lc3RlZCBHcm91cHMKIC0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMjQwMyw2NiAr MjQzMSw2IEBAIFdJTkRPVyB3IEFTICgKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gRklYTUUgSXNzdWVzIC0gS25vd24g TGltaXRhdGlvbnMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gRklYTUUgMSAtIGFsdFByaW9yaXR5IGxleGljYWwgb3Jk ZXIKLVdJVEggdGVzdF9hbHRfcHJpb3JpdHlfcmVwZWF0ZWQgQVMgKAotICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUwotICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLCAgLS0gQm90aCBBIGFuZCBC IG1hdGNoCi0gICAgICAgICgyLCBBUlJBWVsnQScsJ0InXSksCi0gICAgICAgICgzLCBBUlJBWVsn QScsJ0InXSkKLSAgICApIEFTIHQoaWQsIGZsYWdzKQotKQotU0VMRUNUIGlkLCBmbGFncywKLSAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAotICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKLUZST00gdGVzdF9hbHRfcHJpb3JpdHlfcmVw ZWF0ZWQKLVdJTkRPVyB3IEFTICgKLSAgICBPUkRFUiBCWSBpZAotICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwotICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKLSAgICBQQVRURVJOICgoQSB8IEIpKykKLSAgICBERUZJTkUKLSAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAotICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKLSk7 Ci0gaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAotLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KLSAgMSB8IHtBLEJ9IHwgICAgICAgICAgIDEgfCAgICAg ICAgIDMKLSAgMiB8IHtBLEJ9IHwgICAgICAgICAgIDIgfCAgICAgICAgIDMKLSAgMyB8IHtBLEJ9 IHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKLSgzIHJvd3MpCi0KLS0tIEZJWE1FIDEgLSBOZXN0 ZWQgQUxUIGxleGljYWwgb3JkZXIKLVdJVEggdGVzdF9hbHRfcHJpb3JpdHlfbmVzdGVkIEFTICgK LSAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKLSAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwK LSAgICAgICAgKDIsIEFSUkFZWydDJywnRCddKSwKLSAgICAgICAgKDMsIEFSUkFZWydBJywnQidd KSwKLSAgICAgICAgKDQsIEFSUkFZWydDJywnRCddKQotICAgICkgQVMgdChpZCwgZmxhZ3MpCi0p Ci1TRUxFQ1QgaWQsIGZsYWdzLAotICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCi0gICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAotRlJP TSB0ZXN0X2FsdF9wcmlvcml0eV9uZXN0ZWQKLVdJTkRPVyB3IEFTICgKLSAgICBPUkRFUiBCWSBp ZAotICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwot ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKLSAgICBQQVRURVJOICgoKEEgfCBCKSAo QyB8IEQpKSspCi0gICAgREVGSU5FCi0gICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKLSAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAotICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFn cyksCi0gICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQotKTsKLSBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCi0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQotICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAgICAgNAotICAyIHwge0MsRH0g fCAgICAgICAgICAgICB8ICAgICAgICAgIAotICAzIHwge0EsQn0gfCAgICAgICAgICAgMyB8ICAg ICAgICAgNAotICA0IHwge0MsRH0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAotKDQgcm93cykK LQogLS0gRklYTUUgMiAtIEN5Y2xlIHByZXZlbnRpb24gYXQgY291bnQgPiAwCiBXSVRIIHRlc3Rf Y3ljbGVfbm9uemVybyBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCkBAIC0yNTE2LDgg KzI0ODQsOCBAQCBXSU5ET1cgdyBBUyAoCiApOwogIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8 IG1hdGNoX2VuZCAKIC0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCi0gIDEg fCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCi0gIDIgfCB7Qn0gICB8ICAgICAgICAg ICAyIHwgICAgICAgICAyCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisg IDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAzCiAgIDMgfCB7QX0gICB8ICAgICAg ICAgICAzIHwgICAgICAgICAzCiAgIDQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CiAoNCByb3dzKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4u c3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsCmluZGV4IGVhOGMzOWI5 OTFlLi5kMDE3YTIyOTJkMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4 cGxhaW4uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbApAQCAt NDUxLDYgKzQ1MSwzMCBAQCBXSU5ET1cgdyBBUyAoCiApOycpOwogRFJPUCBWSUVXIHJwcl92Owog CistLSBFYXJseSB0ZXJtaW5hdGlvbjogZmlyc3QgQUxUIGJyYW5jaCAoQSkgcmVhY2hlcyBGSU4g aW1tZWRpYXRlbHksCistLSBwcnVuaW5nIHNlY29uZCBicmFuY2ggKEEgQispIGJlZm9yZSBpdCBj YW4gYWNjdW11bGF0ZSBCIHJlcGV0aXRpb25zLgorQ1JFQVRFIFRFTVAgVklFVyBycHJfdiBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgfCBBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID4gMQor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX3YnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBBIEIpKykK KyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID4gMQorKTsnKTsKK0RST1AgVklFVyBycHJf djsKKwogLS0gTmVzdGVkIHF1YW50aWZpZXJzIGNhdXNpbmcgc3RhdGUgZ3Jvd3RoCiBDUkVBVEUg VEVNUCBWSUVXIHJwcl92IEFTCiBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw cl9uZmEuc3FsCmluZGV4IDk1NzNkMWRhYjNiLi5lOTg5NGNmYTY5MSAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByX25mYS5zcWwKQEAgLTEwNzksNiArMTA3OSwyOSBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAg IEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQogKTsKIAorLS0gQUxUIGxleGljYWwgb3JkZXIgdGFrZXMg cHJpb3JpdHkgb3ZlciBncmVlZHkgKGxvbmdlciBtYXRjaCkuCistLSBSb3cgMSBtYXRjaGVzIGJv dGggQSBhbmQgQjsgQSB3aW5zIGJ5IGxleGljYWwgb3JkZXIgKG1hdGNoIDEtMSkuCitXSVRIIHRl c3RfYWx0X2xleGljYWxfb3JkZXIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLCAgLS0gQSBhbmQgQiBib3RoIG1hdGNoCisgICAgICAg ICgyLCBBUlJBWVsnXycsJ0MnXSkgICAtLSBvbmx5IEMgbWF0Y2hlcyAod291bGQgY29udGludWUg QiBDKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9sZXhpY2FsX29yZGVyCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgQykrKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCiAtLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIERlZXAgTmVzdGVkIEdy b3VwcwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkBAIC0xNzcyLDUzICsxNzk1LDYgQEAgV0lORE9XIHcgQVMgKAogLS0gRklY TUUgSXNzdWVzIC0gS25vd24gTGltaXRhdGlvbnMKIC0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi0tLSBGSVhNRSAxIC0gYWx0 UHJpb3JpdHkgbGV4aWNhbCBvcmRlcgotV0lUSCB0ZXN0X2FsdF9wcmlvcml0eV9yZXBlYXRlZCBB UyAoCi0gICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCi0gICAgICAgICgxLCBBUlJBWVsnQScsJ0In XSksICAtLSBCb3RoIEEgYW5kIEIgbWF0Y2gKLSAgICAgICAgKDIsIEFSUkFZWydBJywnQiddKSwK LSAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKQotICAgICkgQVMgdChpZCwgZmxhZ3MpCi0pCi1T RUxFQ1QgaWQsIGZsYWdzLAotICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCi0gICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAotRlJPTSB0 ZXN0X2FsdF9wcmlvcml0eV9yZXBlYXRlZAotV0lORE9XIHcgQVMgKAotICAgIE9SREVSIEJZIGlk Ci0gICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCi0g ICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwotICAgIFBBVFRFUk4gKChBIHwgQikrKQot ICAgIERFRklORQotICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCi0gICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKQotKTsKLQotLS0gRklYTUUgMSAtIE5lc3RlZCBBTFQgbGV4aWNhbCBv cmRlcgotV0lUSCB0ZXN0X2FsdF9wcmlvcml0eV9uZXN0ZWQgQVMgKAotICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUwotICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAotICAgICAgICAoMiwgQVJS QVlbJ0MnLCdEJ10pLAotICAgICAgICAoMywgQVJSQVlbJ0EnLCdCJ10pLAotICAgICAgICAoNCwg QVJSQVlbJ0MnLCdEJ10pCi0gICAgKSBBUyB0KGlkLCBmbGFncykKLSkKLVNFTEVDVCBpZCwgZmxh Z3MsCi0gICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKLSAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCi1GUk9NIHRlc3RfYWx0X3ByaW9y aXR5X25lc3RlZAotV0lORE9XIHcgQVMgKAotICAgIE9SREVSIEJZIGlkCi0gICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCi0gICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVwotICAgIFBBVFRFUk4gKCgoQSB8IEIpIChDIHwgRCkpKykKLSAgICBE RUZJTkUKLSAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAotICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncyksCi0gICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKLSAgICAgICAgRCBB UyAnRCcgPSBBTlkoZmxhZ3MpCi0pOwotCiAtLSBGSVhNRSAyIC0gQ3ljbGUgcHJldmVudGlvbiBh dCBjb3VudCA+IDAKIFdJVEggdGVzdF9jeWNsZV9ub256ZXJvIEFTICgKICAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000339e53064b67b24f Content-Type: application/octet-stream; name="nocfbot-0004-Implement-reluctant-quantifiers.patch" Content-Disposition: attachment; filename="nocfbot-0004-Implement-reluctant-quantifiers.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlxn1pms1 RnJvbSA2MDMyYjcwNGMzZTI5MzBjNWY1NWZlMDNhODgxYTFiYjU5YmM3ZTE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIZW5zb24gQ2hvaSA8YXNzYW0yNThAZ21haWwuY29tPgpEYXRl OiBGcmksIDIwIEZlYiAyMDI2IDEzOjE4OjE5ICswOTAwClN1YmplY3Q6IFtQQVRDSF0gSW1wbGVt ZW50IHJlbHVjdGFudCBxdWFudGlmaWVycyBmb3Igcm93IHBhdHRlcm4gcmVjb2duaXRpb24KCi0t LQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgfCAxNzAgKysrKysrLS0K IHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Jwci5jICAgICAgIHwgIDMzICstCiBzcmMvYmFj a2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgICAgICAgICB8ICAgNiAtCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3Jwci5vdXQgICAgICB8ICA1MSArLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnByX2Jhc2Uub3V0IHwgMjc4ICsrKysrKysrKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX25mYS5vdXQgIHwgNTE2ICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90 ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwgICAgICAgICAgIHwgIDI1ICstCiBzcmMvdGVzdC9yZWdy ZXNzL3NxbC9ycHJfYmFzZS5zcWwgICAgICB8ICA4NyArKysrLQogc3JjL3Rlc3QvcmVncmVzcy9z cWwvcnByX25mYS5zcWwgICAgICAgfCAzOTggKysrKysrKysrKysrKysrKysrKwogOSBmaWxlcyBj aGFuZ2VkLCAxNDI4IGluc2VydGlvbnMoKyksIDEzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9ub2RlV2luZG93QWdnLmMKaW5kZXggOTZiMmNkNGI5YzQuLjM3MTQzOWFhZDkxIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlV2luZG93QWdnLmMKKysrIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jCkBAIC02MTQ5LDE2ICs2MTQ5LDQwIEBAIG5m YV9hZHZhbmNlX2JlZ2luKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAq Y3R4LAogCQkJCQkJCQkJIHN0YXRlLT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOwogCX0K IAotCS8qIEVudGVyIGdyb3VwOiByb3V0ZSB0byBmaXJzdCBjaGlsZCAobGV4aWNhbGx5IGZpcnN0 KSAqLwotCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsKLQluZmFfcm91dGVfdG9fZWxlbSh3 aW5zdGF0ZSwgY3R4LCBzdGF0ZSwKLQkJCQkJICAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdLCBj dXJyZW50UG9zLCBpbml0aWFsQWR2YW5jZSk7Ci0KLQkvKiBOb3cgcm91dGUgc2tpcCBwYXRoIChs ZXhpY2FsbHkgc2Vjb25kKSAqLwotCWlmIChza2lwU3RhdGUgIT0gTlVMTCkKKwlpZiAoc2tpcFN0 YXRlICE9IE5VTEwgJiYgUlBSRWxlbUlzUmVsdWN0YW50KGVsZW0pKQogCXsKKwkJUlBSTkZBU3Rh dGUgKnNhdmVkTWF0Y2ggPSBjdHgtPm1hdGNoZWRTdGF0ZTsKKworCQkvKiBSZWx1Y3RhbnQ6IHNr aXAgZmlyc3QgKHByZWZlciBmZXdlciBpdGVyYXRpb25zKSwgZW50ZXIgc2Vjb25kICovCiAJCW5m YV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgsIHNraXBTdGF0ZSwKIAkJCQkJCSAgJmVsZW1l bnRzW2VsZW0tPmp1bXBdLCBjdXJyZW50UG9zLCBpbml0aWFsQWR2YW5jZSk7CisKKwkJLyoKKwkJ ICogSWYgc2tpcCBwYXRoIHJlYWNoZWQgRklOLCBzaG9ydGVzdCBtYXRjaCBpcyBmb3VuZC4gU2tp cCBncm91cCBlbnRyeQorCQkgKiB0byBwcmV2ZW50IGxvbmdlciBtYXRjaGVzLgorCQkgKi8KKwkJ aWYgKGN0eC0+bWF0Y2hlZFN0YXRlICE9IHNhdmVkTWF0Y2gpCisJCXsKKwkJCW5mYV9zdGF0ZV9m cmVlKHdpbnN0YXRlLCBzdGF0ZSk7CisJCQlyZXR1cm47CisJCX0KKworCQlzdGF0ZS0+ZWxlbUlk eCA9IGVsZW0tPm5leHQ7CisJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRl LAorCQkJCQkJICAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdLCBjdXJyZW50UG9zLCBpbml0aWFs QWR2YW5jZSk7CisJfQorCWVsc2UKKwl7CisJCS8qIEdyZWVkeTogZW50ZXIgZmlyc3QsIHNraXAg c2Vjb25kICovCisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsKKwkJbmZhX3JvdXRlX3Rv X2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsCisJCQkJCQkgICZlbGVtZW50c1tzdGF0ZS0+ZWxl bUlkeF0sIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsKKworCQlpZiAoc2tpcFN0YXRlICE9 IE5VTEwpCisJCXsKKwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgsIHNraXBTdGF0 ZSwKKwkJCQkJCQkgICZlbGVtZW50c1tlbGVtLT5qdW1wXSwgY3VycmVudFBvcywgaW5pdGlhbEFk dmFuY2UpOworCQl9CiAJfQogfQogCkBAIC02MjI1LDcgKzYyNDksOCBAQCBuZmFfYWR2YW5jZV9l bmQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCiAJewogCQkv KgogCQkgKiBCZXR3ZWVuIG1pbiBhbmQgbWF4ICh3aXRoIGF0IGxlYXN0IG9uZSBpdGVyYXRpb24p IC0gY2FuIGV4aXQgb3IKLQkJICogbG9vcAorCQkgKiBsb29wLiBHcmVlZHk6IGxvb3AgZmlyc3Qg KHByZWZlciBtb3JlIGl0ZXJhdGlvbnMpLiBSZWx1Y3RhbnQ6IGV4aXQKKwkJICogZmlyc3QgKHBy ZWZlciBmZXdlciBpdGVyYXRpb25zKS4KIAkJICovCiAJCVJQUk5GQVN0YXRlICpleGl0U3RhdGU7 CiAJCVJQUlBhdHRlcm5FbGVtZW50ICpqdW1wRWxlbTsKQEAgLTYyNDQsMTYgKzYyNjksNDMgQEAg bmZhX2FkdmFuY2VfZW5kKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAq Y3R4LAogCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSAmJiBleGl0U3RhdGUtPmNvdW50c1tu ZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkKIAkJCWV4aXRTdGF0ZS0+Y291bnRzW25l eHRFbGVtLT5kZXB0aF0rKzsKIAotCQkvKiBSb3V0ZSBsb29wIHN0YXRlIGZpcnN0IChlYXJsaWVy IGluIHBhdHRlcm4gPSBsZXhpY2FsIG9yZGVyKSAqLworCQkvKiBQcmVwYXJlIGxvb3Agc3RhdGUg Ki8KIAkJZm9yIChpbnQgZCA9IGRlcHRoICsgMTsgZCA8IHBhdHRlcm4tPm1heERlcHRoOyBkKysp CiAJCQlzdGF0ZS0+Y291bnRzW2RdID0gMDsKIAkJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5qdW1w OwogCQlqdW1wRWxlbSA9ICZlbGVtZW50c1tzdGF0ZS0+ZWxlbUlkeF07CiAKLQkJbmZhX3JvdXRl X3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIGp1bXBFbGVtLCBjdXJyZW50UG9zLCBpbml0 aWFsQWR2YW5jZSk7CisJCWlmIChSUFJFbGVtSXNSZWx1Y3RhbnQoZWxlbSkpCisJCXsKKwkJCVJQ Uk5GQVN0YXRlICpzYXZlZE1hdGNoID0gY3R4LT5tYXRjaGVkU3RhdGU7CisKKwkJCS8qIEV4aXQg Zmlyc3QgKHByZWZlcnJlZCBmb3IgcmVsdWN0YW50KSAqLworCQkJbmZhX3JvdXRlX3RvX2VsZW0o d2luc3RhdGUsIGN0eCwgZXhpdFN0YXRlLCBuZXh0RWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQb3Ms IGluaXRpYWxBZHZhbmNlKTsKIAotCQkvKiBUaGVuIHJvdXRlIGV4aXQgc3RhdGUgKi8KLQkJbmZh X3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgZXhpdFN0YXRlLCBuZXh0RWxlbSwgY3VycmVu dFBvcywgaW5pdGlhbEFkdmFuY2UpOworCQkJLyoKKwkJCSAqIElmIGV4aXQgcGF0aCByZWFjaGVk IEZJTiwgc2hvcnRlc3QgbWF0Y2ggaXMgZm91bmQuIFNraXAgbG9vcCB0bworCQkJICogcHJldmVu dCBsb25nZXIgbWF0Y2hlcyBmcm9tIHJlcGxhY2luZyBpdC4KKwkJCSAqLworCQkJaWYgKGN0eC0+ bWF0Y2hlZFN0YXRlICE9IHNhdmVkTWF0Y2gpCisJCQl7CisJCQkJbmZhX3N0YXRlX2ZyZWUod2lu c3RhdGUsIHN0YXRlKTsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCS8qIExvb3Agc2Vjb25kICov CisJCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSwganVtcEVsZW0sCisJ CQkJCQkJICBjdXJyZW50UG9zLCBpbml0aWFsQWR2YW5jZSk7CisJCX0KKwkJZWxzZQorCQl7CisJ CQkvKiBMb29wIGZpcnN0IChwcmVmZXJyZWQgZm9yIGdyZWVkeSkgKi8KKwkJCW5mYV9yb3V0ZV90 b19lbGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBqdW1wRWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQ b3MsIGluaXRpYWxBZHZhbmNlKTsKKwkJCS8qIEV4aXQgc2Vjb25kICovCisJCQluZmFfcm91dGVf dG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBleGl0U3RhdGUsIG5leHRFbGVtLAorCQkJCQkJCSAgY3Vy cmVudFBvcywgaW5pdGlhbEFkdmFuY2UpOworCQl9CiAJfQogfQogCkBAIC02MjgwLDM0ICs2MzMy LDg2IEBAIG5mYV9hZHZhbmNlX3ZhcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNv bnRleHQgKmN0eCwKIAogCWlmIChjYW5Mb29wICYmIGNhbkV4aXQpCiAJewotCQkvKiBCb3RoOiBj bG9uZSBmb3IgbG9vcCwgbW9kaWZ5IG9yaWdpbmFsIGZvciBleGl0ICovCi0JCVJQUk5GQVN0YXRl ICpsb29wU3RhdGU7CisJCS8qCisJCSAqIEJvdGggbG9vcCBhbmQgZXhpdCBwb3NzaWJsZS4gR3Jl ZWR5OiBsb29wIGZpcnN0IChwcmVmZXIgbG9uZ2VyCisJCSAqIG1hdGNoKS4gUmVsdWN0YW50OiBl eGl0IGZpcnN0IChwcmVmZXIgc2hvcnRlciBtYXRjaCkuCisJCSAqLworCQlSUFJORkFTdGF0ZSAq Y2xvbmVTdGF0ZTsKIAkJUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtOwotCi0JCWxvb3BTdGF0 ZSA9IG5mYV9zdGF0ZV9jcmVhdGUod2luc3RhdGUsIHN0YXRlLT5lbGVtSWR4LAotCQkJCQkJCQkJ IHN0YXRlLT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOwotCQluZmFfYWRkX3N0YXRlX3Vu aXF1ZSh3aW5zdGF0ZSwgY3R4LCBsb29wU3RhdGUpOwotCi0JCS8qIEV4aXQ6IGFkdmFuY2UgdG8g bmV4dCBlbGVtZW50ICovCi0JCXN0YXRlLT5jb3VudHNbZGVwdGhdID0gMDsKLQkJc3RhdGUtPmVs ZW1JZHggPSBlbGVtLT5uZXh0OwotCQluZXh0RWxlbSA9ICZlbGVtZW50c1tzdGF0ZS0+ZWxlbUlk eF07CisJCWJvb2wJCXJlbHVjdGFudCA9IFJQUkVsZW1Jc1JlbHVjdGFudChlbGVtKTsKIAogCQkv KgotCQkgKiBXaGVuIGEgcXVhbnRpZmllZCBWQVIgKGUuZy4sIEErKSBleGl0cyBkaXJlY3RseSB0 byBhbiBvdXRlciBFTkQsCi0JCSAqIGluY3JlbWVudCB0aGUgRU5EJ3MgaXRlcmF0aW9uIGNvdW50 LiAgU2ltcGxlIFZBUnMgKG1pbj1tYXg9MSkKLQkJICogaGFuZGxlIHRoaXMgdmlhIGlubGluZSBh ZHZhbmNlIGluIG5mYV9tYXRjaCwgYnV0IHF1YW50aWZpZWQgVkFScwotCQkgKiBieXBhc3MgdGhh dCBwYXRoLiAgT25seSBpbmNyZW1lbnQgd2hlbiB0aGUgVkFSIGFjdHVhbGx5IGNvbnN1bWVkCi0J CSAqIHJvd3MgKGNvdW50ID4gMCkgdG8gcHJlc2VydmUgY3ljbGUgcHJldmVudGlvbiBmb3IgemVy by1wcm9ncmVzcwotCQkgKiBsb29wcy4KKwkJICogQ2xvbmUgc3RhdGUgZm9yIHRoZSBzZWNvbmQt cHJpb3JpdHkgcGF0aC4gRm9yIGdyZWVkeSwgY2xvbmUgaXMgdGhlCisJCSAqIGxvb3Agc3RhdGU7 IGZvciByZWx1Y3RhbnQsIGNsb25lIGlzIHRoZSBleGl0IHN0YXRlLgogCQkgKi8KLQkJaWYgKFJQ UkVsZW1Jc0VuZChuZXh0RWxlbSkgJiYgY291bnQgPiAwKQorCQlpZiAocmVsdWN0YW50KQogCQl7 Ci0JCQlpZiAoc3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkK LQkJCQlzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0rKzsKKwkJCVJQUk5GQVN0YXRlICpz YXZlZE1hdGNoID0gY3R4LT5tYXRjaGVkU3RhdGU7CisKKwkJCS8qIENsb25lIGZvciBleGl0LCBv cmlnaW5hbCBzdGF5cyBmb3IgbG9vcCAqLworCQkJY2xvbmVTdGF0ZSA9IG5mYV9zdGF0ZV9jcmVh dGUod2luc3RhdGUsIGVsZW0tPm5leHQsCisJCQkJCQkJCQkJICBzdGF0ZS0+Y291bnRzLCBzdGF0 ZS0+aXNBYnNvcmJhYmxlKTsKKwkJCWNsb25lU3RhdGUtPmNvdW50c1tkZXB0aF0gPSAwOworCQkJ bmV4dEVsZW0gPSAmZWxlbWVudHNbY2xvbmVTdGF0ZS0+ZWxlbUlkeF07CisKKwkJCS8qCisJCQkg KiBXaGVuIGV4aXRpbmcgZGlyZWN0bHkgdG8gYW4gb3V0ZXIgRU5ELCBpbmNyZW1lbnQgdGhlIEVO RCdzCisJCQkgKiBpdGVyYXRpb24gY291bnQuCisJCQkgKi8KKwkJCWlmIChSUFJFbGVtSXNFbmQo bmV4dEVsZW0pICYmIGNvdW50ID4gMCkKKwkJCXsKKwkJCQlpZiAoY2xvbmVTdGF0ZS0+Y291bnRz W25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfTUFYKQorCQkJCQljbG9uZVN0YXRlLT5jb3Vu dHNbbmV4dEVsZW0tPmRlcHRoXSsrOworCQkJfQorCisJCQkvKiBFeGl0IGZpcnN0IChwcmVmZXJy ZWQgZm9yIHJlbHVjdGFudCkgKi8KKwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgs IGNsb25lU3RhdGUsIG5leHRFbGVtLAorCQkJCQkJCSAgY3VycmVudFBvcywgaW5pdGlhbEFkdmFu Y2UpOworCisJCQkvKgorCQkJICogSWYgZXhpdCBwYXRoIHJlYWNoZWQgRklOLCB0aGUgc2hvcnRl c3QgbWF0Y2ggaXMgZm91bmQuIFNraXAKKwkJCSAqIGxvb3Agc3RhdGUgdG8gcHJldmVudCBsb25n ZXIgbWF0Y2hlcyBmcm9tIHJlcGxhY2luZyBpdC4KKwkJCSAqLworCQkJaWYgKGN0eC0+bWF0Y2hl ZFN0YXRlICE9IHNhdmVkTWF0Y2gpCisJCQl7CisJCQkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUs IHN0YXRlKTsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCS8qIExvb3Agc2Vjb25kICovCisJCQlu ZmFfYWRkX3N0YXRlX3VuaXF1ZSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSk7CiAJCX0KKwkJZWxzZQor CQl7CisJCQkvKiBDbG9uZSBmb3IgbG9vcCwgb3JpZ2luYWwgdXNlZCBmb3IgZXhpdCAqLworCQkJ Y2xvbmVTdGF0ZSA9IG5mYV9zdGF0ZV9jcmVhdGUod2luc3RhdGUsIHN0YXRlLT5lbGVtSWR4LAor CQkJCQkJCQkJCSAgc3RhdGUtPmNvdW50cywgc3RhdGUtPmlzQWJzb3JiYWJsZSk7CiAKLQkJbmZh X3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIG5leHRFbGVtLCBjdXJyZW50UG9z LCBpbml0aWFsQWR2YW5jZSk7CisJCQkvKiBMb29wIGZpcnN0IChwcmVmZXJyZWQgZm9yIGdyZWVk eSkgKi8KKwkJCW5mYV9hZGRfc3RhdGVfdW5pcXVlKHdpbnN0YXRlLCBjdHgsIGNsb25lU3RhdGUp OworCisJCQkvKiBFeGl0IHNlY29uZCAqLworCQkJc3RhdGUtPmNvdW50c1tkZXB0aF0gPSAwOwor CQkJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5uZXh0OworCQkJbmV4dEVsZW0gPSAmZWxlbWVudHNb c3RhdGUtPmVsZW1JZHhdOworCisJCQkvKgorCQkJICogV2hlbiBleGl0aW5nIGRpcmVjdGx5IHRv IGFuIG91dGVyIEVORCwgaW5jcmVtZW50IHRoZSBFTkQncworCQkJICogaXRlcmF0aW9uIGNvdW50 LiAgU2ltcGxlIFZBUnMgKG1pbj1tYXg9MSkgaGFuZGxlIHRoaXMgdmlhCisJCQkgKiBpbmxpbmUg YWR2YW5jZSBpbiBuZmFfbWF0Y2gsIGJ1dCBxdWFudGlmaWVkIFZBUnMgYnlwYXNzIHRoYXQKKwkJ CSAqIHBhdGguICBPbmx5IGluY3JlbWVudCB3aGVuIHRoZSBWQVIgYWN0dWFsbHkgY29uc3VtZWQg cm93cworCQkJICogKGNvdW50ID4gMCkgdG8gcHJlc2VydmUgY3ljbGUgcHJldmVudGlvbiBmb3Ig emVyby1wcm9ncmVzcworCQkJICogbG9vcHMuCisJCQkgKi8KKwkJCWlmIChSUFJFbGVtSXNFbmQo bmV4dEVsZW0pICYmIGNvdW50ID4gMCkKKwkJCXsKKwkJCQlpZiAoc3RhdGUtPmNvdW50c1tuZXh0 RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkKKwkJCQkJc3RhdGUtPmNvdW50c1tuZXh0RWxl bS0+ZGVwdGhdKys7CisJCQl9CisKKwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgs IHN0YXRlLCBuZXh0RWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQb3MsIGluaXRpYWxBZHZhbmNlKTsK KwkJfQogCX0KIAllbHNlIGlmIChjYW5Mb29wKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMK aW5kZXggMTEyZWQwMzRmZTIuLjk4N2Y1OTVkNDM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9v cHRpbWl6ZXIvcGxhbi9ycHIuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIu YwpAQCAtODM1LDIxICs4MzUsNDQgQEAgdHJ5TXVsdGlwbHlRdWFudGlmaWVycyhSUFJQYXR0ZXJu Tm9kZSAqcGF0dGVybikKICAqIEV4YW1wbGVzOgogICogICAoQSl7MSwxfSAgIC0+IEEKICAqICAg KEEgQil7MSwxfSAtPiBTRVEoQSwgQikgICh1bndyYXBzIHRoZSBpbm5lciBTRVEpCisgKiAgIChB KT8gICAgICAgLT4gQT8gICAgICAgICAocHJvcGFnYXRlIHF1YW50aWZpZXIgdG8gc2luZ2xlIFZB UiBjaGlsZCkKKyAqICAgKEEpKz8gICAgICAtPiBBKz8gICAgICAgIChwcm9wYWdhdGUgcXVhbnRp ZmllciBpbmNsdWRpbmcgcmVsdWN0YW50KQogICoKLSAqIElmIEdST1VQIGhhcyBtaW49MSwgbWF4 PTEsIGFuZCBpcyBub3QgcmVsdWN0YW50LCByZXR1cm4gdGhlIGNoaWxkIGRpcmVjdGx5LgotICog T3RoZXJ3aXNlIHJldHVybnMgdGhlIHBhdHRlcm4gdW5jaGFuZ2VkLgorICogSWYgR1JPVVAgaGFz IG1pbj0xLCBtYXg9MSwgcmV0dXJuIHRoZSBjaGlsZCBkaXJlY3RseSAocmVsdWN0YW50IG9uCisg KiB7MSwxfSBpcyBtZWFuaW5nbGVzcykuICBJZiBHUk9VUCBoYXMgYSBzaW5nbGUgVkFSIGNoaWxk IHdpdGggZGVmYXVsdAorICogcXVhbnRpZmllciB7MSwxfSwgcHJvcGFnYXRlIHRoZSBHUk9VUCdz IHF1YW50aWZpZXIgdG8gdGhlIGNoaWxkIGFuZAorICogdW53cmFwLiAgT3RoZXJ3aXNlIHJldHVy bnMgdGhlIHBhdHRlcm4gdW5jaGFuZ2VkLgogICoKICAqIE5vdGU6IFBhcnNlciBhbHdheXMgY3Jl YXRlcyBHUk9VUCB3aXRoIGV4YWN0bHkgb25lIGNoaWxkIHZpYSBsaXN0X21ha2UxKCkuCiAgKi8K IHN0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCiB0cnlVbndyYXBHcm91cChSUFJQYXR0ZXJuTm9kZSAq cGF0dGVybikKIHsKLQlpZiAocGF0dGVybi0+bWluICE9IDEgfHwgcGF0dGVybi0+bWF4ICE9IDEg fHwgcGF0dGVybi0+cmVsdWN0YW50ID49IDApCi0JCXJldHVybiBwYXR0ZXJuOworCVJQUlBhdHRl cm5Ob2RlICpjaGlsZDsKIAogCS8qIFBhcnNlciBhbHdheXMgY3JlYXRlcyBHUk9VUCB3aXRoIHNp bmdsZSBjaGlsZCAqLwogCUFzc2VydChsaXN0X2xlbmd0aChwYXR0ZXJuLT5jaGlsZHJlbikgPT0g MSk7Ci0JcmV0dXJuIChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJuLT5jaGlsZHJl bik7CisKKwljaGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJuLT5jaGls ZHJlbik7CisKKwkvKiBHUk9VUHsxLDF9OiB1bndyYXAgZGlyZWN0bHkgKHJlbHVjdGFudCBvbiB7 MSwxfSBpcyBtZWFuaW5nbGVzcykgKi8KKwlpZiAocGF0dGVybi0+bWluID09IDEgJiYgcGF0dGVy bi0+bWF4ID09IDEpCisJCXJldHVybiBjaGlsZDsKKworCS8qCisJICogU2luZ2xlIFZBUiBjaGls ZCB3aXRoIGRlZmF1bHQgezEsMX06IHByb3BhZ2F0ZSBHUk9VUCdzIHF1YW50aWZpZXIgdG8KKwkg KiB0aGUgY2hpbGQgYW5kIHVud3JhcC4gIEUuZy4sIChBKT8/IC0+IEE/PywgKEEpKz8gLT4gQSs/ CisJICovCisJaWYgKGNoaWxkLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9WQVIgJiYKKwkJY2hp bGQtPm1pbiA9PSAxICYmIGNoaWxkLT5tYXggPT0gMSAmJiBjaGlsZC0+cmVsdWN0YW50IDwgMCkK Kwl7CisJCWNoaWxkLT5taW4gPSBwYXR0ZXJuLT5taW47CisJCWNoaWxkLT5tYXggPSBwYXR0ZXJu LT5tYXg7CisJCWNoaWxkLT5yZWx1Y3RhbnQgPSBwYXR0ZXJuLT5yZWx1Y3RhbnQ7CisJCXJldHVy biBjaGlsZDsKKwl9CisKKwlyZXR1cm4gcGF0dGVybjsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4 IGU2YWUyM2YzNjhiLi41YTNkMTQxZTk5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueQorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC0yMDM3NiwxMiArMjAz NzYsNiBAQCBtYWtlUlBSUXVhbnRpZmllcihpbnQgbWluLCBpbnQgbWF4LCBQYXJzZUxvYyByZWx1 Y3RhbnQsIGludCBsb2NhdGlvbiwKIHsKIAlSUFJQYXR0ZXJuTm9kZSAqbiA9IG1ha2VOb2RlKFJQ UlBhdHRlcm5Ob2RlKTsKIAotCWlmIChyZWx1Y3RhbnQgPj0gMCkKLQkJZXJlcG9ydChFUlJPUiwK LQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJIGVycm1z ZygicmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZCIpLAotCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocmVsdWN0YW50KSkpOwotCiAJbi0+bWluID0gbWluOwogCW4tPm1h eCA9IG1heDsKIAluLT5yZWx1Y3RhbnQgPSByZWx1Y3RhbnQ7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jw ci5vdXQKaW5kZXggYzkyMWJhZGIwMDYuLjhhZjQ0MzkyNzAwIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ycHIub3V0CkBAIC0yODE0LDYgKzI4MTQsNyBAQCBFUlJPUjogIHVuc3VwcG9ydGVkIHF1YW50 aWZpZXIgIn4iCiBMSU5FIDk6ICBQQVRURVJOIChTVEFSVCBVUH4gRE9XTispCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIF4KIEhJTlQ6ICBWYWxpZCBxdWFudGlmaWVycyBhcmU6ICosICssID8s ICo/LCArPywgPz8sIHtufSwge24sfSwgeyxtfSwge24sbX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2 ZXJzaW9ucy4KKy0tIFBSRVYoMSkgbWlzc2luZyBjb2x1bW4gcmVmZXJlbmNlIChlcnJvcikKIFNF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxh c3RfdmFsdWUocHJpY2UpIE9WRVIgdwogIEZST00gc3RvY2sKICBXSU5ET1cgdyBBUyAoCkBAIC0y ODI4LDkgKzI4MjksNyBAQCBTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1 ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSCiAgIFVQIEFTIHByaWNlID4g UFJFVigxKSwKICAgRE9XTiBBUyBwcmljZSA8IFBSRVYoMSkKICk7Ci1FUlJPUjogIHJlbHVjdGFu dCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKLUxJTkUgOTogIFBBVFRFUk4gKFNU QVJUIFVQKz8gRE9XTispCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBeCitFUlJPUjogIHJv dyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uJ3MgYXJndW1lbnQgbXVzdCBpbmNsdWRlIGF0 IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlCiAtLSBNYXhpbXVtIHBhdHRlcm4gdmFyaWFibGVz IGlzIDI1MSAoUlBSX1ZBUklEX01BWCkKIC0tIEVycm9yOiAyNTIgdmFyaWFibGVzIGV4Y2VlZHMg bGltaXQgb2YgMjUxCiBETyAkJApAQCAtMzgzNiwxNSArMzgzNSwxNSBAQCBXSU5ET1cgdyBBUyAo CiAKIC0tIEV4cGVjdGVkOiAxLTQgKEEgQyBCIEMpCiAtLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gUkVMVUNUQU5UIHF1YW50aWZpZXJzIChub3QgeWV0 IHN1cHBvcnRlZCkKKy0tIFJFTFVDVEFOVCBxdWFudGlmaWVycwogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRlc3Q6IEErPyBCIChyZWx1Y3RhbnQp IC0gcGFyc2VyIHJlamVjdHMgd2l0aCBFUlJPUgorLS0gVGVzdDogQSs/IEIgKHJlbHVjdGFudCkg LSBCIGF2YWlsYWJsZSBhdCByb3cgMywgQSBleGl0cyBlYXJseQogV0lUSCBqYWNvYl9yZWx1Y3Rh bnQgQVMgKAogICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwotICAgICAgICAoMSwgQVJSQVlbJ0En XSksCi0gICAgICAgICgyLCBBUlJBWVsnQSddKSwKLSAgICAgICAgKDMsIEFSUkFZWydBJ10pLAot ICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAgICAgICAgKDEsIEFSUkFZWydBJywnXyddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwK KyAgICAgICAgKDQsIEFSUkFZWydCJywnXyddKQogICAgICkgQVMgdChpZCwgZmxhZ3MpCiApCiBT RUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCkBAIC0zODU4LDE3ICszODU3LDIxIEBA IFdJTkRPVyB3IEFTICgKICAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAogICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKICk7Ci1FUlJPUjogIHJlbHVjdGFudCBxdWFudGlmaWVycyBh cmUgbm90IHlldCBzdXBwb3J0ZWQKLUxJTkUgMTU6ICAgICBQQVRURVJOIChBKz8gQikKLSAgICAg ICAgICAgICAgICAgICAgICAgIF4KLS0tIEV4cGVjdGVkOiBFUlJPUiAocmVsdWN0YW50IHF1YW50 aWZpZXJzIG5vdCB5ZXQgc3VwcG9ydGVkKQotLS0gVGVzdDogQXsxLDN9PyBCIChyZWx1Y3RhbnQg Ym91bmRlZCkgLSBwYXJzZXIgcmVqZWN0cyB3aXRoIEVSUk9SCisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBLF99IHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBLF99IHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBLEJ9IHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNCB8IHtCLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisK Ky0tIFRlc3Q6IEF7MSwzfT8gQiAocmVsdWN0YW50IGJvdW5kZWQpIC0gc2FtZSBkYXRhLCBib3Vu ZGVkIHF1YW50aWZpZXIKIFdJVEggamFjb2JfcmVsdWN0YW50X2JvdW5kZWQgQVMgKAogICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUwotICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCi0gICAgICAgICgy LCBBUlJBWVsnQSddKSwKLSAgICAgICAgKDMsIEFSUkFZWydBJ10pLAotICAgICAgICAoNCwgQVJS QVlbJ0InXSkKKyAgICAgICAgKDEsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydBJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDQsIEFS UkFZWydCJywnXyddKQogICAgICkgQVMgdChpZCwgZmxhZ3MpCiApCiBTRUxFQ1QgaWQsIGZsYWdz LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCkBAIC0zODgyLDEwICszODg1LDE0IEBAIFdJTkRPVyB3IEFTICgK ICAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAogICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKICk7Ci1FUlJPUjogIHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBw b3J0ZWQKLUxJTkUgMTU6ICAgICBQQVRURVJOIChBezEsM30/IEIpCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SIChyZWx1Y3RhbnQgcXVhbnRpZmllcnMg bm90IHlldCBzdXBwb3J0ZWQpCisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLF99IHwg ICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBLF99IHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMyB8IHtBLEJ9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCLF99 IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBOZXN0ZWQgcXVhbnRpZmllcnMgKHBh dGhvbG9naWNhbCBwYXR0ZXJucykKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwcl9i YXNlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0CmluZGV4IGQz MTdlYzcwYzhkLi40M2VlYTMyMTMwZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9ycHJfYmFzZS5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFz ZS5vdXQKQEAgLTEwNzYsNyArMTA3Niw3IEBAIE9SREVSIEJZIGlkOwogKDEwIHJvd3MpCiAKIERS T1AgVEFCTEUgcnByX3F1YW50OwotLS0gUmVsdWN0YW50IHF1YW50aWZpZXJzIChub3QgeWV0IHN1 cHBvcnRlZCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVycwogQ1JFQVRFIFRBQkxFIHJwcl9yZWx1 Y3RhbnQgKGlkIElOVCwgdmFsIElOVCk7CiBJTlNFUlQgSU5UTyBycHJfcmVsdWN0YW50IFZBTFVF UyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOwogLS0gKj8gKHplcm8gb3IgbW9yZSwgcmVsdWN0 YW50KQpAQCAtMTA4OCwxMCArMTA4OCwxNCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAo QSo/KQogICAgIERFRklORSBBIEFTIHZhbCA+IDAKICk7Ci1FUlJPUjogIHJlbHVjdGFudCBxdWFu dGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKLUxJTkUgNjogICAgIFBBVFRFUk4gKEEqPykK LSAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQg cXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAg IDEKKyAgICAgMQorICAgICAxCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjog cHJlZmVyIHNob3J0ZXN0IG1hdGNoCiAtLSArPyAob25lIG9yIG1vcmUsIHJlbHVjdGFudCkKIFNF TEVDVCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX3JlbHVjdGFudApAQCAtMTEwMSwxMCArMTEw NSwxNCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSs/KQogICAgIERFRklORSBBIEFT IHZhbCA+IDAKICk7Ci1FUlJPUjogIHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBz dXBwb3J0ZWQKLUxJTkUgNjogICAgIFBBVFRFUk4gKEErPykKLSAgICAgICAgICAgICAgICAgICAg ICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5 ZXQgc3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAgIDEKKyAgICAgMQorICAgICAxCiso MyByb3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNo CiAtLSA/PyAoemVybyBvciBvbmUsIHJlbHVjdGFudCkKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcK IEZST00gcnByX3JlbHVjdGFudApAQCAtMTExNCwxMCArMTEyMiwxNCBAQCBXSU5ET1cgdyBBUyAo CiAgICAgUEFUVEVSTiAoQT8/KQogICAgIERFRklORSBBIEFTIHZhbCA+IDAKICk7Ci1FUlJPUjog IHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKLUxJTkUgNjogICAg IFBBVFRFUk4gKEE/PykKLSAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVS Uk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisgY291bnQg CistLS0tLS0tCisgICAgIDEKKyAgICAgMQorICAgICAxCisoMyByb3dzKQorCistLSBSZWx1Y3Rh bnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCiAtLSB7bix9PyAobiBvciBtb3Jl LCByZWx1Y3RhbnQpCiBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CiBGUk9NIHJwcl9yZWx1Y3RhbnQK QEAgLTExMjcsMTAgKzExMzksMTQgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEF7Mix9 PykKICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCiApOwotRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRp ZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCi1MSU5FIDY6ICAgICBQQVRURVJOIChBezIsfT8p Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIF4KLS0tIEV4cGVjdGVkOiBFUlJPUjogcmVsdWN0 YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAorIGNvdW50IAorLS0tLS0tLQor ICAgICAyCisgICAgIDAKKyAgICAgMAorKDMgcm93cykKKworLS0gUmVsdWN0YW50IHF1YW50aWZp ZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAogLS0ge24sbX0/IChuIHRvIG0sIHJlbHVjdGFudCkK IFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX3JlbHVjdGFudApAQCAtMTE0MCwxMCAr MTE1NiwxNCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQXsxLDN9PykKICAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCiApOwotRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5v dCB5ZXQgc3VwcG9ydGVkCi1MSU5FIDY6ICAgICBQQVRURVJOIChBezEsM30/KQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRp ZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAgIDEKKyAg ICAgMQorICAgICAxCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVy IHNob3J0ZXN0IG1hdGNoCiAtLSB7bn0/IChleGFjdGx5IG4sIHJlbHVjdGFudCkKIFNFTEVDVCBD T1VOVCgqKSBPVkVSIHcKIEZST00gcnByX3JlbHVjdGFudApAQCAtMTE1MywxMCArMTE3MywxNCBA QCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQXsyfT8pCiAgICAgREVGSU5FIEEgQVMgdmFs ID4gMAogKTsKLUVSUk9SOiAgcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBv cnRlZAotTElORSA2OiAgICAgUEFUVEVSTiAoQXsyfT8pCi0gICAgICAgICAgICAgICAgICAgICAg ICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5 ZXQgc3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAgIDIKKyAgICAgMAorICAgICAwCiso MyByb3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNo CiAtLSB7LG19PyAodXAgdG8gbSwgcmVsdWN0YW50KSAtIENPTVBMRVRFTFkgVU5URVNURUQgUlVM RSEKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX3JlbHVjdGFudApAQCAtMTE2Niwx MCArMTE5MCwxNCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQXssM30/KQogICAgIERF RklORSBBIEFTIHZhbCA+IDAKICk7Ci1FUlJPUjogIHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUg bm90IHlldCBzdXBwb3J0ZWQKLUxJTkUgNjogICAgIFBBVFRFUk4gKEF7LDN9PykKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRp ZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAgIDEKKyAg ICAgMQorICAgICAxCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVy IHNob3J0ZXN0IG1hdGNoCiAtLSBJbnZhbGlkIHJlbHVjdGFudCBwYXR0ZXJucyAod3JvbmcgdG9r ZW4gYWZ0ZXIgcXVhbnRpZmllcikKIC0tIHsyfSsgKHNob3VsZCBiZSB7Mn0/IG5vdCB7Mn0rKQog U0VMRUNUIENPVU5UKCopIE9WRVIgdwpAQCAtMTM1MiwxMCArMTM4MCwxNCBAQCBXSU5ET1cgdyBB UyAoCiAgICAgUEFUVEVSTiAoQSogPykKICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCiApOwotRVJS T1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCi1MSU5FIDY6 ICAgICBQQVRURVJOIChBKiA/KQotICAgICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0 ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisg Y291bnQgCistLS0tLS0tCisgICAgIDEKKyAgICAgMQorICAgICAxCisoMyByb3dzKQorCistLSBS ZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCiAtLSArID8gKHRva2Vu IHNlcGFyYXRlZCkKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKIEZST00gcnByX3JlbHVjdGFudApA QCAtMTM2NSwxMCArMTM5NywxNCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSsgPykK ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCiApOwotRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmll cnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCi1MSU5FIDY6ICAgICBQQVRURVJOIChBKyA/KQotICAg ICAgICAgICAgICAgICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVh bnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAgIDEK KyAgICAgMQorICAgICAxCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJl ZmVyIHNob3J0ZXN0IG1hdGNoCiAtLSB7Mix9ID8gKHRva2VuIHNlcGFyYXRlZCkKIFNFTEVDVCBD T1VOVCgqKSBPVkVSIHcKIEZST00gcnByX3JlbHVjdGFudApAQCAtMTM3OCwxMCArMTQxNCwxNCBA QCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQXsyLH0gPykKICAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCiApOwotRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3Vw cG9ydGVkCi1MSU5FIDY6ICAgICBQQVRURVJOIChBezIsfSA/KQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJl IG5vdCB5ZXQgc3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAgIDIKKyAgICAgMAorICAg ICAwCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0 IG1hdGNoCiAtLSBJbnZhbGlkIHRva2VuIGNvbWJpbmF0aW9ucwogLS0gKiArIChpbnZhbGlkIGNv bWJpbmF0aW9uKQogU0VMRUNUIENPVU5UKCopIE9WRVIgdwpAQCAtMTQxOCwxMCArMTQ1OCwxNCBA QCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQT8gPykKICAgICBERUZJTkUgQSBBUyB2YWwg PiAwCiApOwotRVJST1I6ICByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9y dGVkCi1MSU5FIDY6ICAgICBQQVRURVJOIChBPyA/KQotICAgICAgICAgICAgICAgICAgICAgICAg XgotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQg c3VwcG9ydGVkCisgY291bnQgCistLS0tLS0tCisgICAgIDEKKyAgICAgMQorICAgICAxCisoMyBy b3dzKQorCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCiBE Uk9QIFRBQkxFIHJwcl9yZWx1Y3RhbnQ7CiAtLSBRdWFudGlmaWVyIGJvdW5kYXJ5IGNvbmRpdGlv bnMKIENSRUFURSBUQUJMRSBycHJfYm91bmRzIChpZCBJTlQpOwpAQCAtMzM5MSw2ICszNDM1LDE1 MCBAQCBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4K ICg2IHJvd3MpCiAKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBWQVIgbWVyZ2UK Ky0tIEErPyBBIHN0YXlzIGFzIGErPyBhIChncmVlZHkgQSsgQSBtZXJnZXMgdG8gYXsyLH0pCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKz8gQSkgREVGSU5FIEEg QVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErPyBh CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlw YXNzOiBHUk9VUCBtZXJnZQorLS0gKEEgQikrPyAoQSBCKSBzdGF5cyBzZXBhcmF0ZSAoZ3JlZWR5 IG1lcmdlcyB0byAoYSBiKXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQ QVRURVJOICgoQSBCKSs/IChBIEIpKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4g NTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiKSs/IGEgYgor ICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFz czogcXVhbnRpZmllciBtdWx0aXBseSAob3V0ZXIgcmVsdWN0YW50KQorLS0gKEF7Mn0pezN9PyBz dGF5cyBhcyAoYXsyfSl7M30/IChncmVlZHkgbWVyZ2VzIHRvIGF7Nn0pCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsyfSl7M30/KSBERUZJTkUgQSBBUyB2YWwg PiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGF7Mn0pezN9Pwor ICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFz czogcXVhbnRpZmllciBtdWx0aXBseSAoaW5uZXIgcmVsdWN0YW50KQorLS0gKEF7Mn0/KXszfSBz dGF5cyBhcyAoYXsyfT8pezN9IChncmVlZHkgbWVyZ2VzIHRvIGF7Nn0pCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsyfT8pezN9KSBERUZJTkUgQSBBUyB2YWwg PiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGF7Mn0/KXszfQor ICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9wbGFuCisoNiByb3dzKQorCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFz czogUFJFRklYIG1lcmdlCistLSBBIEIgKEEgQikrPyBzdGF5cyBzZXBhcmF0ZSAoZ3JlZWR5IG1l cmdlcyB0byAoYSBiKXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRU RVJOIChBIEIgKEEgQikrPykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiIChhIGIpKz8KKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfcGxhbgorKDYgcm93cykKKworLS0gUmVsdWN0YW50IG9wdGltaXphdGlvbiBieXBhc3M6IFNV RkZJWCBtZXJnZQorLS0gKEEgQikrPyBBIEIgc3RheXMgc2VwYXJhdGUgKGdyZWVkeSBtZXJnZXMg dG8gKGEgYil7Mix9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo KEEgQikrPyBBIEIpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIGIpKz8gYSBiCisgICAtPiAgU29y dAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3Bs YW4KKyg2IHJvd3MpCisKKy0tIEdST1VQIHVud3JhcCB3aXRoIHF1YW50aWZpZXIgcHJvcGFnYXRp b246IChBKT8/IEIgLT4gYT8/IGIKKy0tIFNpbmdsZSBWQVIgY2hpbGQgezEsMX0gcmVjZWl2ZXMg R1JPVVAncyBxdWFudGlmaWVyIGFuZCByZWx1Y3RhbnQKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKChBKT8/IEIpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2 YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGE/PyBiCisg ICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcnByX3BsYW4KKyg2IHJvd3MpCisKKy0tIFJlbHVjdGFudCBwcmVzZXJ2ZWQgdGhyb3VnaCBB TFQgZmxhdHRlbgorLS0gKEEgfCAoQiB8IEMpKSs/IGZsYXR0ZW5zIHRvIChhIHwgYiB8IGMpKz8g LSBpbm5lciBBTFQgZmxhdHRlbmVkLCByZWx1Y3RhbnQga2VwdAorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCAoQiB8IEMpKSs/KSBERUZJTkUgQSBBUyB2YWwg PD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiIHwgYykrPworICAgLT4gIFNvcnQKKyAgICAgICAg IFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNiByb3dz KQorCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogYWJzb3JwdGlvbiBmbGFncwor LS0gQSs/IHdpdGggU0tJUCBQQVNUIExBU1QgUk9XIC0gbm8gYWJzb3JwdGlvbiBtYXJrZXJzIChn cmVlZHkgQSsgZ2V0cyBhKyIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSs/KSBERUZJTkUgQSBBUyB2YWwg PiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSs/CisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg2IHJvd3MpCisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gQWJzb3JwdGlvbiBGbGFnIERpc3BsYXkgVGVz dHMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZh Lm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQKaW5kZXggN2QzOGQ2 MmFjMzEuLmEyYTI1NzMyOWI3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3Jwcl9uZmEub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQK QEAgLTI4OSw2ICsyODksMzkgQEAgV0lORE9XIHcgQVMgKAogICA1IHwge199ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAogKDUgcm93cykKIAorLS0gUmVsdWN0YW50IHBhdHRlcm4gKEErPykg LSBub3QgYWJzb3JiYWJsZQorLS0gQ29tcGFyZSB3aXRoIGdyZWVkeSBBKyBhYm92ZTogcmVsdWN0 YW50IGV4Y2x1ZGVkIGZyb20gYWJzb3JwdGlvbi4KKy0tIEVhY2ggY29udGV4dCBwcm9kdWNlcyBt aW5pbXVtIG1hdGNoIGluZGVwZW5kZW50bHkuCitXSVRIIHRlc3RfcmVsdWN0YW50X2Fic29ycHRp b24gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9hYnNvcnB0aW9uCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoQSs/KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykK Kyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDEKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDIKKyAgMyB8IHtB fSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQg fCAgICAgICAgIDQKKyAgNSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJv d3MpCisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0gQ29udGV4dCBMaWZlY3ljbGUKIC0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtNDIwLDYgKzQ1 MywzOCBAQCBXSU5ET1cgdyBBUyAoCiAgIDQgfCB7XyxffSB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCiAoNCByb3dzKQogCistLSBSZWx1Y3RhbnQgY29udGV4dCBsaWZlY3ljbGUgKEErPyBCIHdp dGggU0tJUCBUTyBORVhUIFJPVykKKy0tIEErPyBleGl0cyBlYXJseSBidXQgaWYgQiBub3QgYXZh aWxhYmxlLCBmYWxscyBiYWNrIHRvIGxvb3AuCistLSBDb250ZXh0cyBub3QgYWJzb3JiZWQgKHJl bHVjdGFudCksIHNvIG11bHRpcGxlIHN1cnZpdmUuCitXSVRIIHRlc3RfcmVsdWN0YW50X2NvbnRl eHQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAor ICAgICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9y ZWx1Y3RhbnRfY29udGV4dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAg MSB8ICAgICAgICAgMworICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMworICAz IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge199ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBBZHZhbmNlIFBoYXNlIChF cHNpbG9uIFRyYW5zaXRpb25zKQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC01NzUsNiArNjQwLDEwMCBAQCBXSU5ET1cg dyBBUyAoCiAgIDggfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCiAoOCByb3dzKQog CistLSBNaXhlZCBncmVlZHkvcmVsdWN0YW50IHNlcXVlbmNlOiBBKz8gQisgKHJlbHVjdGFudCBB LCBncmVlZHkgQikKKy0tIEEgZXhpdHMgYXMgZWFybHkgYXMgcG9zc2libGUsIEIgY29uc3VtZXMg dGhlIHJlc3QgZ3JlZWRpbHkKK1dJVEggdGVzdF9taXhlZF9yZWx1Y3RhbnQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDQs IEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9taXhlZF9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErPyBC KykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDUKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgMyB8IHtBLEJ9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIE9wdGlvbmFsIHJlbHVjdGFudCBncm91cDog KEEgQik/PyBDCistLSBuZmFfYWR2YW5jZV9iZWdpbjogcmVsdWN0YW50IHByZWZlcnMgc2tpcCAo MCBpdGVyYXRpb25zKSBvdmVyIGVudGVyCitXSVRIIHRlc3Rfb3B0aW9uYWxfcmVsdWN0YW50IEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X29wdGlvbmFsX3JlbHVjdGFudAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgQik/PyBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycg PSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAK Ky0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAg ICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMyByb3dzKQorCist LSBHcmVlZHkvcmVsdWN0YW50IHNlcXVlbmNlOiBBKyBCKz8gKGdyZWVkeSBBLCByZWx1Y3RhbnQg QiBhdCBlbmQpCistLSBBIGNvbnN1bWVzIGdyZWVkaWx5LCBCKz8gZXhpdHMgdG8gRklOIGFmdGVy IG1pbmltdW0gbWF0Y2gKK1dJVEggdGVzdF9ncmVlZHlfdGhlbl9yZWx1Y3RhbnQgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDQsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZ3JlZWR5X3Ro ZW5fcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKz8pCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAx IHwgICAgICAgICAzCisgIDIgfCB7QSxCfSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIE1hdGNoIFBoYXNlCiAtLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KQEAgLTgxMCw2ICs5NjksMzcgQEAgV0lORE9XIHcgQVMgKAogICA2IHwge0J9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAogKDYgcm93cykKIAorLS0gUmVsdWN0YW50IHdpdGggbGltaXRl ZCBmcmFtZSAoQSs/IEIgd2l0aCAyIEZPTExPV0lORykKKy0tIFJlbHVjdGFudCBleGl0cyBlYXJs eSwgQiBtdXN0IGJlIHdpdGhpbiBmcmFtZSBib3VuZGFyeQorV0lUSCB0ZXN0X3JlbHVjdGFudF9m cmFtZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSks CisgICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxF Q1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X3JlbHVjdGFudF9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8gQikKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7 CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAg ICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDMKKyAgMyB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtffSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyg0IHJvd3MpCisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gU3RhdGUgTWFuYWdlbWVudAogLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CkBAIC04NDMsNiArMTAzMywzNSBAQCBXSU5ET1cgdyBBUyAoCiAgIDMgfCB7RCxffSB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCiAoMyByb3dzKQogCistLSBSZWx1Y3RhbnQgZHVwbGljYXRlIHN0 YXRlIGhhbmRsaW5nCistLSAoQSs/IHwgQis/KSBjcmVhdGVzIGV4aXQgYW5kIGxvb3Agc3RhdGVz OyBleGl0IHBhdGhzIG1heSBjb252ZXJnZQorV0lUSCB0ZXN0X3JlbHVjdGFudF9kZWR1cCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSks CisgICAgICAgICgyLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnXyddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9kZWR1cAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKChBKz8gfCBCKz8pKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdz IHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwg e0EsQn0gfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorICAzIHwge199ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorKDMgcm93cykKKwogLS0gTGFyZ2UgcGF0dGVybiAoc3RyZXNzIGZyZWUg bGlzdCkKIFdJVEggdGVzdF9sYXJnZV9wYXR0ZXJuIEFTICgKICAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKQEAgLTEwMTQsNiArMTIzMywzOSBAQCBXSU5ET1cgdyBBUyAoCiAgIDUgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCiAoNSByb3dzKQogCistLSBSZWx1Y3RhbnQgbm90IGFi c29yYmVkIChBKz8gd2l0aCBTS0lQIFRPIE5FWFQgUk9XKQorLS0gQ29tcGFyZSB3aXRoIGdyZWVk eSBBKyBiZWxvdzogcmVsdWN0YW50IGlzIG5vdCBhYnNvcmJhYmxlLAorLS0gc28gYWxsIGNvbnRl eHRzIHN1cnZpdmUgaW5kZXBlbmRlbnRseS4KK1dJVEggdGVzdF9yZWx1Y3RhbnRfc3RhdHMgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9zdGF0cworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEr PykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwg ZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAxCisg IDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisgIDMgfCB7QX0gICB8ICAgICAg ICAgICAzIHwgICAgICAgICAzCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA0 CisgIDUgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCiAtLSBB YnNvcmJlZCBjb250ZXh0cwogV0lUSCB0ZXN0X2Fic29yYmVkIEFTICgKICAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKQEAgLTEzMjIsNiArMTU3NCw5NiBAQCBXSU5ET1cgdyBBUyAoCiAgIDcgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCiAoNyByb3dzKQogCistLSBHcmVlZHkgdnMg cmVsdWN0YW50OiBBKyBtYXRjaGVzIGFsbCByb3dzLCBBKz8gbWF0Y2hlcyBtaW5pbXVtCitXSVRI IHRlc3RfZ3JlZWR5X3ZzX3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ18n XSksCisgICAgICAgICgzLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQics J18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAg ICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ncmVlZHlfdnNfcmVsdWN0YW50 CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8 IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsX30gfCAgICAgICAgICAgMSB8ICAgICAgICAgNAor ICAyIHwge0EsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0EsQn0gfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0IsX30gfCAgICAgICAgICAgICB8ICAgICAgICAg IAorKDQgcm93cykKKworLS0gU2FtZSBkYXRhLCByZWx1Y3RhbnQgQSs/IGV4aXRzIGF0IHJvdyAz IHdoZXJlIEIgaXMgZmlyc3QgYXZhaWxhYmxlCitXSVRIIHRlc3RfZ3JlZWR5X3ZzX3JlbHVjdGFu dCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScs J18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgzLCBBUlJBWVsn QScsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQicsJ18nXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9ncmVlZHlfdnNfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB Kz8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBLF99IHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBLF99IHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgMyB8IHtBLEJ9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NCB8IHtCLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIFJlbHVj dGFudCBncm91cDogKEEgQikrPyBtYXRjaGVzIG1pbmltdW0gMSBpdGVyYXRpb24KK1dJVEggdGVz dF9yZWx1Y3RhbnRfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfZ3JvdXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIp Kz8pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t IFBhdGhvbG9naWNhbCBQYXR0ZXJuIFJ1bnRpbWUgUHJvdGVjdGlvbgogLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMzg2 LDYgKzE3MjgsMzcgQEAgV0lORE9XIHcgQVMgKAogICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAogKDQgcm93cykKIAorLS0gUmVsdWN0YW50IG51bGxhYmxlOiBBKj8gKHByZWZl cnMgMCBtYXRjaGVzKQorLS0gQSo/IGFsd2F5cyB0YWtlcyBza2lwIHBhdGggKDAgaXRlcmF0aW9u cyBwcmVmZXJyZWQpCitXSVRIIHRlc3RfcmVsdWN0YW50X251bGxhYmxlIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X251bGxhYmxl CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5F WFQgUk9XCisgICAgUEFUVEVSTiAoQSo/IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwg ZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisoNCByb3dzKQorCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tIEFsdGVybmF0aW9uIFJ1bnRpbWUgQmVoYXZpb3IKIC0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpAQCAtMTU0Miw2ICsxOTE1LDM1IEBAIFdJTkRPVyB3IEFTICgKICAgMiB8IHtfLEN9IHwg ICAgICAgICAgICAgfCAgICAgICAgICAKICgyIHJvd3MpCiAKKy0tIEFMVCB3aXRoIHJlbHVjdGFu dDogKEErPyB8IEIrKSAtIEEgYnJhbmNoIGlzIHJlbHVjdGFudCwgQiBpcyBncmVlZHkuCistLSBS b3cgMSBtYXRjaGVzIGJvdGggQSBhbmQgQi4gQSs/IGV4aXRzIGltbWVkaWF0ZWx5IChtYXRjaCAx LTEpLgorV0lUSCB0ZXN0X2FsdF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0In LCdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfYWx0X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErPyB8IEIr KSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB LEJ9IHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKyAgMiB8IHtCLF99IHwgICAgICAgICAgIDIg fCAgICAgICAgIDMKKyAgMyB8IHtCLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygzIHJv d3MpCisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0gRGVlcCBOZXN0ZWQgR3JvdXBzCiAtLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTE3MDUsNiAr MjEwNyw0MCBAQCBXSU5ET1cgdyBBUyAoCiAgIDkgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCiAoOSByb3dzKQogCistLSBOZXN0ZWQgcmVsdWN0YW50IGdyb3VwICgoQSBCKSs/KSB3 aXRoIGZvbGxvd2luZyBlbGVtZW50IEMKKy0tIElubmVyIGdyb3VwIGV4aXRzIGFmdGVyIG1pbmlt dW0gMSBpdGVyYXRpb24KK1dJVEggdGVzdF9uZXN0ZWRfcmVsdWN0YW50IEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9uZXN0ZWRfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrPyBDKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlk IHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA1 CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAg ICAgICAgICAzIHwgICAgICAgICA1CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCiAt LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tIFNLSVAgT3B0aW9ucyAoUnVudGltZSkKIC0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTgxOSw2ICsyMjU1 LDUzIEBAIE9SREVSIEJZIG1vZGUsIGlkOwogIFNLSVAgUEFTVCB8ICA0IHwge0J9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAogKDggcm93cykKIAorLS0gUmVsdWN0YW50IFNLSVAgY29tcGFy aXNvbjogQSs/IHdpdGggU0tJUCBQQVNUIHZzIFNLSVAgTkVYVAorV0lUSCB0ZXN0X3JlbHVjdGFu dF9za2lwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCAnU0tJUCBQQVNUJyBBUyBtb2RlLCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X3NraXAKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEErPykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispCitV TklPTiBBTEwKK1NFTEVDVCAnU0tJUCBORVhUJyBBUyBtb2RlLCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X3NraXAKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKz8pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKQorKQorT1JERVIgQlkgbW9kZSwgaWQ7CisgICBtb2RlICAgIHwgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLS0tLS0tLS0rLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyBTS0lQIE5FWFQgfCAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEg fCAgICAgICAgIDEKKyBTS0lQIE5FWFQgfCAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAg ICAgIDIKKyBTS0lQIE5FWFQgfCAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMK KyBTS0lQIE5FWFQgfCAgNCB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyBTS0lQ IFBBU1QgfCAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKyBTS0lQIFBBU1Qg fCAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDIKKyBTS0lQIFBBU1QgfCAgMyB8 IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKyBTS0lQIFBBU1QgfCAgNCB8IHtffSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg4IHJvd3MpCisKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gSU5JVElB TCBNb2RlIChSdW50aW1lKQogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yNDI4LDYgKzI5MTEsMzkgQEAgV0lORE9XIHcg QVMgKAogICA0IHwge18sX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAogKDQgcm93cykKIAor LS0gUmVsdWN0YW50IGJyYW5jaCBpbiBBTFQgbm90IGFic29yYmFibGU6IChBKz8pIHwgQgorLS0g QSs/IGlzIHJlbHVjdGFudCBzbyBub3QgYWJzb3JiYWJsZS4gQ29tcGFyZSB3aXRoIGdyZWVkeSAo QSspIHwgQiBhYm92ZS4KK1dJVEggdGVzdF9yZWx1Y3RhbnRfYWx0X2Fic29ycHRpb24gQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9hbHRfYWJzb3JwdGlvbgorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKChBKz8pIHwgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKyAgMiB8IHtBfSAgIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDIKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDMKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtffSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gRklYTUUg SXNzdWVzIC0gS25vd24gTGltaXRhdGlvbnMKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKaW5kZXgg NzY5MGM1NjExYzAuLmEyNjMwNzRlM2U5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHIuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwci5zcWwKQEAgLTEyNzEsNiAr MTI3MSw3IEBAIFNFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIKICAgRE9XTiBBUyBwcmljZSA8IFBSRVYo MSkKICk7CiAKKy0tIFBSRVYoMSkgbWlzc2luZyBjb2x1bW4gcmVmZXJlbmNlIChlcnJvcikKIFNF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxh c3RfdmFsdWUocHJpY2UpIE9WRVIgdwogIEZST00gc3RvY2sKICBXSU5ET1cgdyBBUyAoCkBAIC0y MDU5LDE2ICsyMDYwLDE2IEBAIFdJTkRPVyB3IEFTICgKIC0tIEV4cGVjdGVkOiAxLTQgKEEgQyBC IEMpCiAKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBSRUxVQ1RBTlQgcXVhbnRpZmllcnMgKG5vdCB5ZXQgc3VwcG9ydGVkKQorLS0gUkVMVUNUQU5U IHF1YW50aWZpZXJzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogCi0tLSBUZXN0OiBBKz8gQiAocmVsdWN0YW50KSAtIHBhcnNlciByZWplY3RzIHdpdGgg RVJST1IKKy0tIFRlc3Q6IEErPyBCIChyZWx1Y3RhbnQpIC0gQiBhdmFpbGFibGUgYXQgcm93IDMs IEEgZXhpdHMgZWFybHkKIFdJVEggamFjb2JfcmVsdWN0YW50IEFTICgKICAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKLSAgICAgICAgKDEsIEFSUkFZWydBJ10pLAotICAgICAgICAoMiwgQVJSQVlb J0EnXSksCi0gICAgICAgICgzLCBBUlJBWVsnQSddKSwKLSAgICAgICAgKDQsIEFSUkFZWydCJ10p CisgICAgICAgICgxLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ18n XSksCisgICAgICAgICgzLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQics J18nXSkKICAgICApIEFTIHQoaWQsIGZsYWdzKQogKQogU0VMRUNUIGlkLCBmbGFncywgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZApAQCAtMjA4MiwxNSArMjA4MywxNCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKICAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCiAp OwotLS0gRXhwZWN0ZWQ6IEVSUk9SIChyZWx1Y3RhbnQgcXVhbnRpZmllcnMgbm90IHlldCBzdXBw b3J0ZWQpCiAKLS0tIFRlc3Q6IEF7MSwzfT8gQiAocmVsdWN0YW50IGJvdW5kZWQpIC0gcGFyc2Vy IHJlamVjdHMgd2l0aCBFUlJPUgorLS0gVGVzdDogQXsxLDN9PyBCIChyZWx1Y3RhbnQgYm91bmRl ZCkgLSBzYW1lIGRhdGEsIGJvdW5kZWQgcXVhbnRpZmllcgogV0lUSCBqYWNvYl9yZWx1Y3RhbnRf Ym91bmRlZCBBUyAoCiAgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCi0gICAgICAgICgxLCBBUlJB WVsnQSddKSwKLSAgICAgICAgKDIsIEFSUkFZWydBJ10pLAotICAgICAgICAoMywgQVJSQVlbJ0En XSksCi0gICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICAgICAoMSwgQVJSQVlbJ0EnLCdfJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnLCdC J10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InLCdfJ10pCiAgICAgKSBBUyB0KGlkLCBmbGFncykK ICkKIFNFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3Rh cnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKQEAgLTIxMDQsNyArMjEwNCw2 IEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAogICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKICk7Ci0tLSBFeHBlY3RlZDogRVJST1IgKHJlbHVjdGFu dCBxdWFudGlmaWVycyBub3QgeWV0IHN1cHBvcnRlZCkKIAogLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIE5lc3RlZCBxdWFudGlmaWVycyAocGF0aG9s b2dpY2FsIHBhdHRlcm5zKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jh c2Uuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCmluZGV4IGI3NTJhZDEy ODczLi45OTJjMDgxMjA1YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jh c2Uuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNxbApAQCAtNzYyLDcg Kzc2Miw3IEBAIE9SREVSIEJZIGlkOwogCiBEUk9QIFRBQkxFIHJwcl9xdWFudDsKIAotLS0gUmVs dWN0YW50IHF1YW50aWZpZXJzIChub3QgeWV0IHN1cHBvcnRlZCkKKy0tIFJlbHVjdGFudCBxdWFu dGlmaWVycwogQ1JFQVRFIFRBQkxFIHJwcl9yZWx1Y3RhbnQgKGlkIElOVCwgdmFsIElOVCk7CiBJ TlNFUlQgSU5UTyBycHJfcmVsdWN0YW50IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzAp OwogCkBAIC03NzUsNyArNzc1LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEEqPykK ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCiApOwotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3Rh bnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCistLSBSZWx1Y3RhbnQgcXVhbnRp ZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCiAKIC0tICs/IChvbmUgb3IgbW9yZSwgcmVsdWN0 YW50KQogU0VMRUNUIENPVU5UKCopIE9WRVIgdwpAQCAtNzg2LDcgKzc4Niw3IEBAIFdJTkRPVyB3 IEFTICgKICAgICBQQVRURVJOIChBKz8pCiAgICAgREVGSU5FIEEgQVMgdmFsID4gMAogKTsKLS0t IEV4cGVjdGVkOiBFUlJPUjogcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBv cnRlZAorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAogCiAt LSA/PyAoemVybyBvciBvbmUsIHJlbHVjdGFudCkKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKQEAg LTc5Nyw3ICs3OTcsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQT8/KQogICAgIERF RklORSBBIEFTIHZhbCA+IDAKICk7Ci0tLSBFeHBlY3RlZDogRVJST1I6IHJlbHVjdGFudCBxdWFu dGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBw cmVmZXIgc2hvcnRlc3QgbWF0Y2gKIAogLS0ge24sfT8gKG4gb3IgbW9yZSwgcmVsdWN0YW50KQog U0VMRUNUIENPVU5UKCopIE9WRVIgdwpAQCAtODA4LDcgKzgwOCw3IEBAIFdJTkRPVyB3IEFTICgK ICAgICBQQVRURVJOIChBezIsfT8pCiAgICAgREVGSU5FIEEgQVMgdmFsID4gMAogKTsKLS0tIEV4 cGVjdGVkOiBFUlJPUjogcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRl ZAorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAogCiAtLSB7 bixtfT8gKG4gdG8gbSwgcmVsdWN0YW50KQogU0VMRUNUIENPVU5UKCopIE9WRVIgdwpAQCAtODE5 LDcgKzgxOSw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBezEsM30/KQogICAgIERF RklORSBBIEFTIHZhbCA+IDAKICk7Ci0tLSBFeHBlY3RlZDogRVJST1I6IHJlbHVjdGFudCBxdWFu dGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBw cmVmZXIgc2hvcnRlc3QgbWF0Y2gKIAogLS0ge259PyAoZXhhY3RseSBuLCByZWx1Y3RhbnQpCiBT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CkBAIC04MzAsNyArODMwLDcgQEAgV0lORE9XIHcgQVMgKAog ICAgIFBBVFRFUk4gKEF7Mn0/KQogICAgIERFRklORSBBIEFTIHZhbCA+IDAKICk7Ci0tLSBFeHBl Y3RlZDogRVJST1I6IHJlbHVjdGFudCBxdWFudGlmaWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQK Ky0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKIAogLS0geyxt fT8gKHVwIHRvIG0sIHJlbHVjdGFudCkgLSBDT01QTEVURUxZIFVOVEVTVEVEIFJVTEUhCiBTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3CkBAIC04NDEsNyArODQxLDcgQEAgV0lORE9XIHcgQVMgKAogICAg IFBBVFRFUk4gKEF7LDN9PykKICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCiApOwotLS0gRXhwZWN0 ZWQ6IEVSUk9SOiByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCist LSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCiAKIC0tIEludmFs aWQgcmVsdWN0YW50IHBhdHRlcm5zICh3cm9uZyB0b2tlbiBhZnRlciBxdWFudGlmaWVyKQogCkBA IC0xMDAyLDcgKzEwMDIsNyBAQCBXSU5ET1cgdyBBUyAoCiAgICAgUEFUVEVSTiAoQSogPykKICAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCiApOwotLS0gRXhwZWN0ZWQ6IEVSUk9SOiByZWx1Y3RhbnQg cXVhbnRpZmllcnMgYXJlIG5vdCB5ZXQgc3VwcG9ydGVkCistLSBSZWx1Y3RhbnQgcXVhbnRpZmll cjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCiAKIC0tICsgPyAodG9rZW4gc2VwYXJhdGVkKQogU0VM RUNUIENPVU5UKCopIE9WRVIgdwpAQCAtMTAxMyw3ICsxMDEzLDcgQEAgV0lORE9XIHcgQVMgKAog ICAgIFBBVFRFUk4gKEErID8pCiAgICAgREVGSU5FIEEgQVMgdmFsID4gMAogKTsKLS0tIEV4cGVj dGVkOiBFUlJPUjogcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAor LS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAogCiAtLSB7Mix9 ID8gKHRva2VuIHNlcGFyYXRlZCkKIFNFTEVDVCBDT1VOVCgqKSBPVkVSIHcKQEAgLTEwMjQsNyAr MTAyNCw3IEBAIFdJTkRPVyB3IEFTICgKICAgICBQQVRURVJOIChBezIsfSA/KQogICAgIERFRklO RSBBIEFTIHZhbCA+IDAKICk7Ci0tLSBFeHBlY3RlZDogRVJST1I6IHJlbHVjdGFudCBxdWFudGlm aWVycyBhcmUgbm90IHlldCBzdXBwb3J0ZWQKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVm ZXIgc2hvcnRlc3QgbWF0Y2gKIAogLS0gSW52YWxpZCB0b2tlbiBjb21iaW5hdGlvbnMKIApAQCAt MTA1OSw3ICsxMDU5LDcgQEAgV0lORE9XIHcgQVMgKAogICAgIFBBVFRFUk4gKEE/ID8pCiAgICAg REVGSU5FIEEgQVMgdmFsID4gMAogKTsKLS0tIEV4cGVjdGVkOiBFUlJPUjogcmVsdWN0YW50IHF1 YW50aWZpZXJzIGFyZSBub3QgeWV0IHN1cHBvcnRlZAorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6 IHByZWZlciBzaG9ydGVzdCBtYXRjaAogCiBEUk9QIFRBQkxFIHJwcl9yZWx1Y3RhbnQ7CiAKQEAg LTIyNzgsNiArMjI3OCw2OSBAQCBTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K IFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKICAgICAgICAgICAgICBQQVRURVJOICgoQSB8IEIgfCBDKSkgREVG SU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CiAKKy0t IFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBWQVIgbWVyZ2UKKy0tIEErPyBBIHN0YXlz IGFzIGErPyBhIChncmVlZHkgQSsgQSBtZXJnZXMgdG8gYXsyLH0pCitFWFBMQUlOIChDT1NUUyBP RkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKz8gQSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisK Ky0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBHUk9VUCBtZXJnZQorLS0gKEEgQikr PyAoQSBCKSBzdGF5cyBzZXBhcmF0ZSAoZ3JlZWR5IG1lcmdlcyB0byAoYSBiKXsyLH0pCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSs/IChBIEIpKSBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBSZWx1Y3RhbnQgb3B0aW1p emF0aW9uIGJ5cGFzczogcXVhbnRpZmllciBtdWx0aXBseSAob3V0ZXIgcmVsdWN0YW50KQorLS0g KEF7Mn0pezN9PyBzdGF5cyBhcyAoYXsyfSl7M30/IChncmVlZHkgbWVyZ2VzIHRvIGF7Nn0pCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsyfSl7M30/KSBERUZJ TkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUmVsdWN0YW50IG9wdGltaXphdGlvbiBieXBhc3M6IHF1 YW50aWZpZXIgbXVsdGlwbHkgKGlubmVyIHJlbHVjdGFudCkKKy0tIChBezJ9Pyl7M30gc3RheXMg YXMgKGF7Mn0/KXszfSAoZ3JlZWR5IG1lcmdlcyB0byBhezZ9KQorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0/KXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7 CisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBQUkVGSVggbWVyZ2UKKy0tIEEg QiAoQSBCKSs/IHN0YXlzIHNlcGFyYXRlIChncmVlZHkgbWVyZ2VzIHRvIChhIGIpezIsfSkKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQiAoQSBCKSs/KSBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBSZWx1Y3RhbnQgb3B0aW1p emF0aW9uIGJ5cGFzczogU1VGRklYIG1lcmdlCistLSAoQSBCKSs/IEEgQiBzdGF5cyBzZXBhcmF0 ZSAoZ3JlZWR5IG1lcmdlcyB0byAoYSBiKXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgICAgICBQQVRURVJOICgoQSBCKSs/IEEgQikgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFT IHZhbCA+IDUwKTsKKworLS0gR1JPVVAgdW53cmFwIHdpdGggcXVhbnRpZmllciBwcm9wYWdhdGlv bjogKEEpPz8gQiAtPiBhPz8gYgorLS0gU2luZ2xlIFZBUiBjaGlsZCB7MSwxfSByZWNlaXZlcyBH Uk9VUCdzIHF1YW50aWZpZXIgYW5kIHJlbHVjdGFudAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgUEFUVEVSTiAoKEEpPz8gQikgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZh bCA+IDUwKTsKKworLS0gUmVsdWN0YW50IHByZXNlcnZlZCB0aHJvdWdoIEFMVCBmbGF0dGVuCist LSAoQSB8IChCIHwgQykpKz8gZmxhdHRlbnMgdG8gKGEgfCBiIHwgYykrPyAtIGlubmVyIEFMVCBm bGF0dGVuZWQsIHJlbHVjdGFudCBrZXB0CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoQSB8IChCIHwgQykpKz8pIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2 YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5 cGFzczogYWJzb3JwdGlvbiBmbGFncworLS0gQSs/IHdpdGggU0tJUCBQQVNUIExBU1QgUk9XIC0g bm8gYWJzb3JwdGlvbiBtYXJrZXJzIChncmVlZHkgQSsgZ2V0cyBhKyIpCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVS TiAoQSs/KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKwogLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLSBBYnNvcnB0aW9uIEZs YWcgRGlzcGxheSBUZXN0cwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9ycHJfbmZhLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsCmluZGV4IGU5 ODk0Y2ZhNjkxLi4wZTg1M2NhNzUzYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cnByX25mYS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX25mYS5zcWwKQEAgLTIz MCw2ICsyMzAsMzEgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cykKICk7CiAKKy0tIFJlbHVjdGFudCBwYXR0ZXJuIChBKz8pIC0gbm90IGFic29yYmFibGUKKy0t IENvbXBhcmUgd2l0aCBncmVlZHkgQSsgYWJvdmU6IHJlbHVjdGFudCBleGNsdWRlZCBmcm9tIGFi c29ycHRpb24uCistLSBFYWNoIGNvbnRleHQgcHJvZHVjZXMgbWluaW11bSBtYXRjaCBpbmRlcGVu ZGVudGx5LgorV0lUSCB0ZXN0X3JlbHVjdGFudF9hYnNvcnB0aW9uIEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydB J10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9yZWx1Y3RhbnRfYWJzb3JwdGlvbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCiAtLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIENv bnRleHQgTGlmZWN5Y2xlCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTMzMyw2ICszNTgsMzEgQEAgV0lORE9XIHcgQVMg KAogICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKICk7CiAKKy0tIFJlbHVjdGFudCBjb250 ZXh0IGxpZmVjeWNsZSAoQSs/IEIgd2l0aCBTS0lQIFRPIE5FWFQgUk9XKQorLS0gQSs/IGV4aXRz IGVhcmx5IGJ1dCBpZiBCIG5vdCBhdmFpbGFibGUsIGZhbGxzIGJhY2sgdG8gbG9vcC4KKy0tIENv bnRleHRzIG5vdCBhYnNvcmJlZCAocmVsdWN0YW50KSwgc28gbXVsdGlwbGUgc3Vydml2ZS4KK1dJ VEggdGVzdF9yZWx1Y3RhbnRfY29udGV4dCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnXyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9jb250ZXh0CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSs/IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCiAtLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIEFkdmFuY2UgUGhh c2UgKEVwc2lsb24gVHJhbnNpdGlvbnMpCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQ0OCw2ICs0OTgsNzkgQEAgV0lO RE9XIHcgQVMgKAogICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKICk7CiAKKy0tIE1peGVk IGdyZWVkeS9yZWx1Y3RhbnQgc2VxdWVuY2U6IEErPyBCKyAocmVsdWN0YW50IEEsIGdyZWVkeSBC KQorLS0gQSBleGl0cyBhcyBlYXJseSBhcyBwb3NzaWJsZSwgQiBjb25zdW1lcyB0aGUgcmVzdCBn cmVlZGlseQorV0lUSCB0ZXN0X21peGVkX3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydB J10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0In XSksCisgICAgICAgICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X21peGVkX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/IEIrKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKQorKTsKKworLS0gT3B0aW9uYWwgcmVsdWN0YW50IGdyb3VwOiAoQSBCKT8/IEMK Ky0tIG5mYV9hZHZhbmNlX2JlZ2luOiByZWx1Y3RhbnQgcHJlZmVycyBza2lwICgwIGl0ZXJhdGlv bnMpIG92ZXIgZW50ZXIKK1dJVEggdGVzdF9vcHRpb25hbF9yZWx1Y3RhbnQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3Rfb3B0aW9uYWxfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo QSBCKT8/IEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFn cykKKyk7CisKKy0tIEdyZWVkeS9yZWx1Y3RhbnQgc2VxdWVuY2U6IEErIEIrPyAoZ3JlZWR5IEEs IHJlbHVjdGFudCBCIGF0IGVuZCkKKy0tIEEgY29uc3VtZXMgZ3JlZWRpbHksIEIrPyBleGl0cyB0 byBGSU4gYWZ0ZXIgbWluaW11bSBtYXRjaAorV0lUSCB0ZXN0X2dyZWVkeV90aGVuX3JlbHVjdGFu dCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10p LAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9ncmVlZHlfdGhlbl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrPykKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisKIC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gTWF0Y2ggUGhhc2UKIC0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAt NjI5LDYgKzc1MiwzMCBAQCBXSU5ET1cgdyBBUyAoCiAgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKQogKTsKIAorLS0gUmVsdWN0YW50IHdpdGggbGltaXRlZCBmcmFtZSAoQSs/IEIgd2l0aCAy IEZPTExPV0lORykKKy0tIFJlbHVjdGFudCBleGl0cyBlYXJseSwgQiBtdXN0IGJlIHdpdGhpbiBm cmFtZSBib3VuZGFyeQorV0lUSCB0ZXN0X3JlbHVjdGFudF9mcmFtZSBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsn XyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9mcmFtZQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCAyIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBKz8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gU3RhdGUg TWFuYWdlbWVudAogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkBAIC02NTcsNiArODA0LDI5IEBAIFdJTkRPVyB3IEFTICgKICAg ICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCiApOwogCistLSBSZWx1Y3RhbnQgZHVwbGljYXRl IHN0YXRlIGhhbmRsaW5nCistLSAoQSs/IHwgQis/KSBjcmVhdGVzIGV4aXQgYW5kIGxvb3Agc3Rh dGVzOyBleGl0IHBhdGhzIG1heSBjb252ZXJnZQorV0lUSCB0ZXN0X3JlbHVjdGFudF9kZWR1cCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0In XSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnXydd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9kZWR1cAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKChBKz8gfCBCKz8pKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKwogLS0gTGFy Z2UgcGF0dGVybiAoc3RyZXNzIGZyZWUgbGlzdCkKIFdJVEggdGVzdF9sYXJnZV9wYXR0ZXJuIEFT ICgKICAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKQEAgLTc5MCw2ICs5NjAsMzEgQEAgV0lORE9X IHcgQVMgKAogICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKICk7CiAKKy0tIFJlbHVjdGFu dCBub3QgYWJzb3JiZWQgKEErPyB3aXRoIFNLSVAgVE8gTkVYVCBST1cpCistLSBDb21wYXJlIHdp dGggZ3JlZWR5IEErIGJlbG93OiByZWx1Y3RhbnQgaXMgbm90IGFic29yYmFibGUsCistLSBzbyBh bGwgY29udGV4dHMgc3Vydml2ZSBpbmRlcGVuZGVudGx5LgorV0lUSCB0ZXN0X3JlbHVjdGFudF9z dGF0cyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSks CisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X3N0YXRzCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSs/KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7 CisKIC0tIEFic29yYmVkIGNvbnRleHRzCiBXSVRIIHRlc3RfYWJzb3JiZWQgQVMgKAogICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUwpAQCAtOTM0LDYgKzExMjksNzUgQEAgV0lORE9XIHcgQVMgKAog ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKICk7CiAKKy0tIEdyZWVkeSB2cyByZWx1Y3Rh bnQ6IEErIG1hdGNoZXMgYWxsIHJvd3MsIEErPyBtYXRjaGVzIG1pbmltdW0KK1dJVEggdGVzdF9n cmVlZHlfdnNfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnXyddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJywnXyddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2dyZWVkeV92c19yZWx1Y3RhbnQKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBTYW1lIGRh dGEsIHJlbHVjdGFudCBBKz8gZXhpdHMgYXQgcm93IDMgd2hlcmUgQiBpcyBmaXJzdCBhdmFpbGFi bGUKK1dJVEggdGVzdF9ncmVlZHlfdnNfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydBJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDQsIEFS UkFZWydCJywnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2dyZWVkeV92c19y ZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQor KTsKKworLS0gUmVsdWN0YW50IGdyb3VwOiAoQSBCKSs/IG1hdGNoZXMgbWluaW11bSAxIGl0ZXJh dGlvbgorV0lUSCB0ZXN0X3JlbHVjdGFudF9ncm91cCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9ncm91cAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgQikrPykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKIC0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gUGF0 aG9sb2dpY2FsIFBhdHRlcm4gUnVudGltZSBQcm90ZWN0aW9uCiAtLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTk4NCw2ICsx MjQ4LDMwIEBAIFdJTkRPVyB3IEFTICgKICAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCiAp OwogCistLSBSZWx1Y3RhbnQgbnVsbGFibGU6IEEqPyAocHJlZmVycyAwIG1hdGNoZXMpCistLSBB Kj8gYWx3YXlzIHRha2VzIHNraXAgcGF0aCAoMCBpdGVyYXRpb25zIHByZWZlcnJlZCkKK1dJVEgg dGVzdF9yZWx1Y3RhbnRfbnVsbGFibGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfbnVsbGFibGUKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO IChBKj8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKIC0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gQWx0ZXJuYXRpb24g UnVudGltZSBCZWhhdmlvcgogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xMTAyLDYgKzEzOTAsMjkgQEAgV0lORE9XIHcg QVMgKAogICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKICk7CiAKKy0tIEFMVCB3aXRoIHJl bHVjdGFudDogKEErPyB8IEIrKSAtIEEgYnJhbmNoIGlzIHJlbHVjdGFudCwgQiBpcyBncmVlZHku CistLSBSb3cgMSBtYXRjaGVzIGJvdGggQSBhbmQgQi4gQSs/IGV4aXRzIGltbWVkaWF0ZWx5ICht YXRjaCAxLTEpLgorV0lUSCB0ZXN0X2FsdF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0InLCdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfYWx0X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEr PyB8IEIrKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKIC0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gRGVlcCBOZXN0ZWQg R3JvdXBzCiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KQEAgLTEyMjAsNiArMTUzMSwzMiBAQCBXSU5ET1cgdyBBUyAoCiAgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQogKTsKIAorLS0gTmVzdGVkIHJlbHVjdGFudCBncm91 cCAoKEEgQikrPykgd2l0aCBmb2xsb3dpbmcgZWxlbWVudCBDCistLSBJbm5lciBncm91cCBleGl0 cyBhZnRlciBtaW5pbXVtIDEgaXRlcmF0aW9uCitXSVRIIHRlc3RfbmVzdGVkX3JlbHVjdGFudCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KChBIEIpKz8gQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZs YWdzKQorKTsKKwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAtLSBTS0lQIE9wdGlvbnMgKFJ1bnRpbWUpCiAtLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAg LTEzMDgsNiArMTY0NSw0MiBAQCBXSU5ET1cgdyBBUyAoCiApCiBPUkRFUiBCWSBtb2RlLCBpZDsK IAorLS0gUmVsdWN0YW50IFNLSVAgY29tcGFyaXNvbjogQSs/IHdpdGggU0tJUCBQQVNUIHZzIFNL SVAgTkVYVAorV0lUSCB0ZXN0X3JlbHVjdGFudF9za2lwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0En XSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCAnU0tJUCBQQVNUJyBBUyBtb2RlLCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0 YW50X3NraXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErPykKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpCispCitVTklPTiBBTEwKK1NFTEVDVCAnU0tJUCBORVhUJyBB UyBtb2RlLCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfcmVsdWN0YW50X3NraXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8pCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKQorT1JERVIgQlkgbW9kZSwgaWQ7CisK IC0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0gSU5JVElBTCBNb2RlIChSdW50aW1lKQogLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNzkxLDYgKzIx NjQsMzEgQEAgV0lORE9XIHcgQVMgKAogICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKICk7 CiAKKy0tIFJlbHVjdGFudCBicmFuY2ggaW4gQUxUIG5vdCBhYnNvcmJhYmxlOiAoQSs/KSB8IEIK Ky0tIEErPyBpcyByZWx1Y3RhbnQgc28gbm90IGFic29yYmFibGUuIENvbXBhcmUgd2l0aCBncmVl ZHkgKEErKSB8IEIgYWJvdmUuCitXSVRIIHRlc3RfcmVsdWN0YW50X2FsdF9hYnNvcnB0aW9uIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfYWx0X2Fic29ycHRpb24KK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOICgoQSs/KSB8IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCiAtLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIEZJ WE1FIElzc3VlcyAtIEtub3duIExpbWl0YXRpb25zCiAtLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0gCjIuNTAuMSAoQXBwbGUg R2l0LTE1NSkKCg== --000000000000339e53064b67b24f--