<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>217373</bug_id>
          
          <creation_ts>2020-10-06 03:30:57 -0700</creation_ts>
          <short_desc>[ESNext][JIT] Add support for UntypedUse on PutPrivateName&apos;s base operand</short_desc>
          <delta_ts>2020-10-18 15:25:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>caitp</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1695090</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-06 03:30:57 -0700</bug_when>
    <thetext>Right now we are always speculating cell, but it is very costly when we need to throw an exception due to invalid receivers (e.g. primitives).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1695232</commentid>
    <comment_count>1</comment_count>
      <attachid>410666</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-06 11:20:00 -0700</bug_when>
    <thetext>Created attachment 410666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696287</commentid>
    <comment_count>2</comment_count>
      <attachid>410666</attachid>
    <who name="Caitlin Potter (:caitp)">caitp</who>
    <bug_when>2020-10-09 11:44:09 -0700</bug_when>
    <thetext>Comment on attachment 410666
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410666&amp;action=review

looks okay here 👍

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1917
&gt; +            fixEdge&lt;UntypedUse&gt;(node-&gt;child1());

Are we not UntypedUse by default? Are there any assertions failing in debug tests without this? (Asking because I haven&apos;t done this in the GetPrivateName patch)

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3530
&gt; +    case CellUse: {

Here, the approach I went with was to let `speculate(...)` do the speculation of base, and conditionally emit a cell check and slow path in the case where we aren&apos;t fairly sure it&apos;s a cell. Would that make sense here too? (I don&apos;t have a strong opinion on this, this is fine)

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3976
&gt; +        LValue base = m_node-&gt;child1().useKind() == CellUse ? lowCell(m_node-&gt;child1()) : lowJSValue(m_node-&gt;child1());

We&apos;re just calling a slow case function, so I&apos;m not sure there&apos;s any reason to not just lowJSValue() in all cases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1696320</commentid>
    <comment_count>3</comment_count>
      <attachid>410666</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-09 12:52:18 -0700</bug_when>
    <thetext>Comment on attachment 410666
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410666&amp;action=review

Can you also ensure whether PutPrivateNameById&apos;s CellUse is correct? Does it work correctly even if it gets Symbol / JSString? If it is not tested, can you add tests too?

&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1915
&gt; +                fixEdge&lt;CellUse&gt;(node-&gt;child1());
&gt; +                break;
&gt; +            }

Let&apos;s remove CellUse handling since it does not add optimizations.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3530
&gt;&gt; +    case CellUse: {
&gt; 
&gt; Here, the approach I went with was to let `speculate(...)` do the speculation of base, and conditionally emit a cell check and slow path in the case where we aren&apos;t fairly sure it&apos;s a cell. Would that make sense here too? (I don&apos;t have a strong opinion on this, this is fine)

I think this style is OK since we can avoid adding a new XXXUse here without adding an implementation.
For example, if we add ObjectUse here, then `speculate(...)` can work, but it is possible that following code is not assuming that it is ObjectUse speculated one.
Anyway, for this path, I think we do not need to have CellUse. And I think CellUse speculation kind would be wrong since it can allow JSString / Symbol etc.
Let&apos;s just have UntypedUse code.

&gt;&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:3976
&gt;&gt; +        LValue base = m_node-&gt;child1().useKind() == CellUse ? lowCell(m_node-&gt;child1()) : lowJSValue(m_node-&gt;child1());
&gt; 
&gt; We&apos;re just calling a slow case function, so I&apos;m not sure there&apos;s any reason to not just lowJSValue() in all cases

Agreed. I think for now, just speculating it with UntypedUse is OK. We are speculating CellUse, but we are not using this information. And I think CellUse speculation is not correct: it should be ObjectUse. Let&apos;s just call lowJSValue().

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-684
&gt; -    JSObject* baseObject = asObject(baseValue);

Previously, we are using `asObject`. But speculation was CellUse. This means that cells like JSString, Symbol etc. can pass that speculation.
Was that a bug? If it is, can you add a test to cover this case?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-703
&gt; -    JSObject* baseObject = asObject(baseValue);

Ditto. Please add a test which flows String / Symbol into this code.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-739
&gt; -    JSObject* baseObject = asObject(JSValue::decode(encodedBase));

Ditto.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-774
&gt; -    JSObject* baseObject = asObject(JSValue::decode(encodedBase));

Ditto.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-1158
&gt; -    auto baseObject = asObject(baseValue);

Ditto.

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-1187
&gt; -    auto baseObject = asObject(baseValue);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697214</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-13 03:31:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/70246622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698592</commentid>
    <comment_count>5</comment_count>
      <attachid>410666</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-16 07:57:22 -0700</bug_when>
    <thetext>Comment on attachment 410666
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=410666&amp;action=review

&gt;&gt; Source/JavaScriptCore/dfg/DFGFixupPhase.cpp:1917
&gt;&gt; +            fixEdge&lt;UntypedUse&gt;(node-&gt;child1());
&gt; 
&gt; Are we not UntypedUse by default? Are there any assertions failing in debug tests without this? (Asking because I haven&apos;t done this in the GetPrivateName patch)

IIUC, we are `UntypedUse` by default and this fixEdge would be redundant. I think we can remove it.

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-684
&gt;&gt; -    JSObject* baseObject = asObject(baseValue);
&gt; 
&gt; Previously, we are using `asObject`. But speculation was CellUse. This means that cells like JSString, Symbol etc. can pass that speculation.
&gt; Was that a bug? If it is, can you add a test to cover this case?

It was a bug indeed. It was also a bug into LLInt slow paths. I&apos;ll make it clearer in the ChangeLog.  I added `JSTests/stress/get-private-name-with-primitive.js` to catch this issue.

&gt;&gt; Source/JavaScriptCore/jit/JITOperations.cpp:-703
&gt;&gt; -    JSObject* baseObject = asObject(baseValue);
&gt; 
&gt; Ditto. Please add a test which flows String / Symbol into this code.

I&apos;ll include String and Symbol on `JSTests/stress/put-private-name-untyped-use.js`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1698626</commentid>
    <comment_count>6</comment_count>
      <attachid>411583</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-10-16 09:06:06 -0700</bug_when>
    <thetext>Created attachment 411583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699081</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-18 06:24:43 -0700</bug_when>
    <thetext>Committed r268656: &lt;https://trac.webkit.org/changeset/268656&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411583.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699143</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2020-10-18 15:25:27 -0700</bug_when>
    <thetext>*** Bug 217844 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>410666</attachid>
            <date>2020-10-06 11:20:00 -0700</date>
            <delta_ts>2020-10-16 09:06:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217373-20201006151958.patch</filename>
            <type>text/plain</type>
            <size>19539</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4MDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZmRmMDQwY2U4OGQ2ZjdkMzIyY2I4MDUyMDcwNWVlMzczYjBjMWI1Li4zZjY5MzRlN2UzN2Q3ZThh
NDVhMGQ2NmJmNTQ2ZjM0ZDA5NGQ1NWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0xMC0wNiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTTmV4dF1bSklUXSBBZGQgc3VwcG9ydCBmb3IgVW50eXBlZFVzZSBvbiBQ
dXRQcml2YXRlTmFtZSdzIGJhc2Ugb3BlcmFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBhZGRpbmcgVW50eXBlZFVzZSBmb3Ig
YFB1dFByaXZhdGVOYW1lYCdzIGJhc2Ugb3BlcmFuZCB0bworICAgICAgICBhdm9pZCBhIE9TUiB3
aGVuIHdlIGhhdmUgYSBub24tY2VsbCBiYXNlLgorICAgICAgICBBbHNvLCBpdCBpcyBmaXhpbmcg
cHJpdmF0ZSBmaWVsZCBvcGVyYXRpb25zIGBnZXRfcHJpdmF0ZV9uYW1lYCBhbmQKKyAgICAgICAg
YHB1dF9wcml2YXRlX25hbWVgIHRvIGNhbGwgYFRvT2JqZWN0YCBvbiBiYXNlIHRvIHByb3Blcmx5
IHN1cHBvcnQKKyAgICAgICAgY2xhc3MgZmllbGRzIHNwZWMgdGV4dFsxXVsyXS4KKworICAgICAg
ICBbMV0gLSBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtY2xhc3MtZmllbGRzLyNzZWMtZ2V0dmFs
dWUKKyAgICAgICAgWzJdIC0gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWNsYXNzLWZpZWxkcy8j
c2VjLXB1dHZhbHVlCisKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21w
aWxlUHV0UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlUHV0UHJpdmF0ZU5h
bWUpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0
UHJpdmF0ZUZpZWxkKToKKyAgICAgICAgKEpTQzo6ZGVmaW5lUHJpdmF0ZUZpZWxkKToKKyAgICAg
ICAgKEpTQzo6Z2V0UHJpdmF0ZU5hbWUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhz
LmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisKIDIwMjAtMTAtMDUgIFJvc3MgS2ly
c2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgICVUeXBlZEFycmF5JS5m
cm9tIG11c3QgZG8gbWFwcGluZyBhbmQgcHV0dGluZyBpbiBsb2Nrc3RlcApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggN2I1YzUxYzkzNjM0NjRmZGEw
OTA5NWM0NWFmYmQ1ZTk1ZjIxNDdiYi4uNTkyZTgzNmViZmFlZWYyNGQzYzk0MWEwY2NmMjJmNzhj
ODRkNTlmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CkBAIC0xOTA3LDE4ICsxOTA3LDI0IEBAIHByaXZhdGU6CiAKIAogICAgICAgICBjYXNlIFB1dFBy
aXZhdGVOYW1lOiB7Ci0gICAgICAgICAgICBmaXhFZGdlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgp
KTsKICAgICAgICAgICAgIGZpeEVkZ2U8U3ltYm9sVXNlPihub2RlLT5jaGlsZDIoKSk7CisKKyAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbCgpKSB7Cisg
ICAgICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpeEVkZ2U8VW50
eXBlZFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAorICAgICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBPdmVycmlk
ZXNIYXNJbnN0YW5jZToKICAgICAgICAgY2FzZSBDaGVja1N0cnVjdHVyZToKICAgICAgICAgY2Fz
ZSBDcmVhdGVUaGlzOgogICAgICAgICBjYXNlIENyZWF0ZVByb21pc2U6CiAgICAgICAgIGNhc2Ug
Q3JlYXRlR2VuZXJhdG9yOgogICAgICAgICBjYXNlIENyZWF0ZUFzeW5jR2VuZXJhdG9yOgotICAg
ICAgICBjYXNlIFB1dFByaXZhdGVOYW1lQnlJZDoKICAgICAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6
IHsKICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDkyNTMzODYyZWY2MDhlNzY0ODQ4NGZmOTk2ZjhkNTM1ZGRlMDhlMjIu
LjdhMjM4ODVjYTc1MzExYTFiZjVmMWE3ZjNjY2E0ZGMwNTc1MjdhMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0zNTI2LDIyICsz
NTI2LDUxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbFdpdGhUaGlzKE5v
ZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZShO
b2RlKiBub2RlKQogewotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwotICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhpcywg
bm9kZS0+Y2hpbGQyKCkpOwotICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNo
aWxkMygpKTsKKyAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgIGNh
c2UgQ2VsbFVzZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgcHJvcGVydHlWYWx1
ZSh0aGlzLCBub2RlLT5jaGlsZDIoKSk7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUtPmNoaWxkMygpKTsKIAotICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVl
LmpzVmFsdWVSZWdzKCk7CisgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlUmVncyA9IHZhbHVlLmpz
VmFsdWVSZWdzKCk7CiAKLSAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7Ci0gICAgR1BS
UmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHlWYWx1ZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIGJh
c2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgcHJvcGVydHlHUFIgPSBwcm9wZXJ0
eVZhbHVlLmdwcigpOwogCi0gICAgc3BlY3VsYXRlU3ltYm9sKG5vZGUtPmNoaWxkMigpLCBwcm9w
ZXJ0eUdQUik7CisgICAgICAgIHNwZWN1bGF0ZVN5bWJvbChub2RlLT5jaGlsZDIoKSwgcHJvcGVy
dHlHUFIpOwogCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50ZXIobV9n
cmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKSksIEND
YWxsSGVscGVyczo6Q2VsbFZhbHVlKGJhc2VHUFIpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShw
cm9wZXJ0eUdQUiksIHZhbHVlUmVncywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZElt
bTMyKG5vZGUtPnByaXZhdGVGaWVsZFB1dEtpbmQoKS52YWx1ZSgpKSk7Ci0gICAgbV9qaXQuZXhj
ZXB0aW9uQ2hlY2soKTsKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICAgICAgY2FsbE9w
ZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJbW1QdHI6Ondl
YWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0NhbGxIZWxwZXJz
OjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1QdHIobnVsbHB0
ciksIFRydXN0ZWRJbW0zMihub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkudmFsdWUoKSkpOwor
ICAgICAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOwogCi0gICAgbm9SZXN1bHQobm9kZSk7Cisg
ICAgICAgIG5vUmVzdWx0KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNl
IFVudHlwZWRVc2U6IHsKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHByb3BlcnR5VmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOworICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLT5jaGlsZDMoKSk7CisKKyAgICAgICAgSlNWYWx1ZVJlZ3MgdmFsdWVSZWdzID0gdmFsdWUu
anNWYWx1ZVJlZ3MoKTsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFs
dWVSZWdzKCk7CisKKyAgICAgICAgR1BSUmVnIHByb3BlcnR5R1BSID0gcHJvcGVydHlWYWx1ZS5n
cHIoKTsKKworICAgICAgICBzcGVjdWxhdGVTeW1ib2wobm9kZS0+Y2hpbGQyKCksIHByb3BlcnR5
R1BSKTsKKworICAgICAgICBmbHVzaFJlZ2lzdGVycygpOworICAgICAgICBjYWxsT3BlcmF0aW9u
KG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgVHJ1c3RlZEltbVB0cjo6d2Vha1BvaW50
ZXIobV9ncmFwaCwgbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGlj
KSksIGJhc2VSZWdzLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShwcm9wZXJ0eUdQUiksIHZhbHVl
UmVncywgVHJ1c3RlZEltbVB0cihudWxscHRyKSwgVHJ1c3RlZEltbTMyKG5vZGUtPnByaXZhdGVG
aWVsZFB1dEtpbmQoKS52YWx1ZSgpKSk7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7
CisKKyAgICAgICAgbm9SZXN1bHQobm9kZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAg
IGRlZmF1bHQ6CisgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2RlLCAiQmFkIHVz
ZSBraW5kIik7CisgICAgICAgIGJyZWFrOworICAgIH0KIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lQnlJZChOb2RlKiBub2RlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IDU1ZWFhMDdmNmRhYTQ5MjYz
YzFhODkxNzdkZTk4ODYzYmJkMTdlZjguLjIxZWQ4MzRjMTA3YjFmYWM2NjdjZGZlYTY0MmVmZTZm
NTM4MWY1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKQEAgLTM5NzEsMTAgKzM5NzEsOSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjb21waWxl
UHV0UHJpdmF0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25v
ZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1
ZSBiYXNlID0gbV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSA/IGxvd0NlbGwo
bV9ub2RlLT5jaGlsZDEoKSkgOiBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOwogICAgICAg
ICBMVmFsdWUgcHJvcGVydHkgPSBsb3dTeW1ib2wobV9ub2RlLT5jaGlsZDIoKSk7CiAgICAgICAg
IExWYWx1ZSB2YWx1ZSA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDMoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDE5MDZlNWQ3YmMyMjRm
ODQyMTkxOWNjMTUyOTVjYWQ5NjQ2NTRhMmMuLmVjYTczYzE4OTY3MDczOTI2MTE4N2VlZjIwNjNl
MGU5MThlZWE0MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcApAQCAtNjgxLDcgKzY4MSw4IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgc2V0UHJp
dmF0ZUZpZWxkKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBJZGVu
dGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQoKSk7
CiAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CiAKLSAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3Qg
PSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKTsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmplY3Qt
PnN0cnVjdHVyZSh2bSk7CiAKQEAgLTcwMCw3ICs3MDEsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyB2b2lkIGRlZmluZVByaXZhdGVGaWVsZChWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCBpZGVu
dGlmaWVyLnVpZCgpKTsKICAgICBBU1NFUlQoaWRlbnQuaXNQcml2YXRlTmFtZSgpKTsKIAotICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKKyAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwogICAgIFN0cnVjdHVyZSogb2xkU3RydWN0dXJl
ID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKHZtKTsKIApAQCAtNzM2LDkgKzczOCwxMCBAQCBKU0Nf
REVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0QnlJZERlZmluZVByaXZhdGVGaWVsZFN0
cmljdE9wdGltaXplLCB2b2lkLAogICAgIENhY2hlYWJsZUlkZW50aWZpZXIgaWRlbnRpZmllciA9
IENhY2hlYWJsZUlkZW50aWZpZXI6OmNyZWF0ZUZyb21SYXdCaXRzKHJhd0NhY2hlYWJsZUlkZW50
aWZpZXIpOwogICAgIEFjY2Vzc1R5cGUgYWNjZXNzVHlwZSA9IHN0YXRpY19jYXN0PEFjY2Vzc1R5
cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09iamVj
dChKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpKTsKLQotICAgIGRlZmluZVByaXZhdGVGaWVs
ZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZh
bHVlLCBbPV0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1
Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
IHsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSk7
CisgICAgCisgICAgZGVmaW5lUHJpdmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZSwgYmFzZVZhbHVlLCBpZGVudGlmaWVyLCB2YWx1ZSwgWz1dKFZNJiB2bSwgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQdXRQcm9wZXJ0eVNsb3QmIHB1dFNs
b3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVy
YXRpb25QdXRCeUlkRGVmaW5lUHJpdmF0ZUZpZWxkRmllbGRTdHJpY3RPcHRpbWl6ZSwgYmFzZU9i
amVjdC0+Y2xhc3NJbmZvKHZtKSwgaWRlbnQsIHB1dFNsb3QuYmFzZSgpID09IGJhc2VPYmplY3Qp
KTsKIAogICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vzc1R5cGUsIGFjY2Vzc1R5cGUgPT0gc3Rh
dGljX2Nhc3Q8QWNjZXNzVHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpKTsKQEAgLTc3MSw5ICs3
NzQsMTAgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWRTZXRQcml2
YXRlRmllbGRTdHJpY3RPcHRpbWl6ZSwgdm9pZCwgKEoKICAgICBDYWNoZWFibGVJZGVudGlmaWVy
IGlkZW50aWZpZXIgPSBDYWNoZWFibGVJZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdD
YWNoZWFibGVJZGVudGlmaWVyKTsKICAgICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNf
Y2FzdDxBY2Nlc3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwotICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKSk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOwogCi0gICAgc2V0UHJp
dmF0ZUZpZWxkKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSwgYmFzZU9iamVjdCwgaWRlbnRp
ZmllciwgdmFsdWUsIFsmXShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmUq
IG9sZFN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkgeworICAgIHNldFByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIGJhc2VWYWx1ZSwgaWRlbnRpZmllciwgdmFsdWUsIFsmXShWTSYgdm0sIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRT
bG90LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBKU09iamVjdCogYmFzZU9i
amVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6T3Bl
cmF0aW9uUHV0QnlJZFB1dFByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmpl
Y3QtPmNsYXNzSW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7
CiAKICAgICAgICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRp
Y19jYXN0PEFjY2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CkBAIC0xMTA3LDYgKzEx
MTEsOSBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVP
cHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0KgogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKIAorICAgIGF1dG8gYmFzZU9iamVjdCA9IGJh
c2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CisKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1By
b3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkpOwogCkBAIC0xMTU1LDcgKzExNjIsNiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJ
T04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVPcHRpbWl6ZSwgdm9pZCwgKEpTR2xvYmFsT2JqZWN0
KgogICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFz
cyBsZXhpY2FsIHNjb3BlCiAgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBz
dHJpY3QgbW9kZQogICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKLSAgICBhdXRv
IGJhc2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBz
bG90KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgaWYgKHB1dEtpbmQuaXNEZWZpbmUo
KSkKICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CkBAIC0xMTc2LDYgKzExODIsOSBAQCBKU0NfREVG
SU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljLCB2b2lkLCAo
SlNHbG9iYWxPYmplY3QqCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFN1YnNjcmlwdCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkVmFsdWUpOwogCisgICAgYXV0byBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0
KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsK
KwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZ2xvYmFs
T2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAKQEAg
LTExODQsNyArMTE5Myw2IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRQ
cml2YXRlTmFtZUdlbmVyaWMsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICAvLyBQcml2YXRl
IGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBzY29wZQog
ICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUKICAgICBj
b25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Ci0gICAgYXV0byBiYXNlT2JqZWN0ID0gYXNP
YmplY3QoYmFzZVZhbHVlKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2JqZWN0LCBp
c1N0cmljdE1vZGUpOwogICAgIGlmIChwcml2YXRlRmllbGRQdXRLaW5kLmlzRGVmaW5lKCkpCiAg
ICAgICAgIGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3Bl
cnR5TmFtZSwgdmFsdWUsIHNsb3QpOwpAQCAtMjI1NywxMiArMjI2NSwxMSBAQCBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU1ZhbHVlIGdldFByaXZhdGVOYW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBiYXNlVmFsdWUucmVxdWly
ZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYmFz
ZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgSlNWYWx1ZSgpKTsKICAgICBhdXRvIGZpZWxkTmFtZSA9IGZpZWxkTmFtZVZhbHVlLnRv
UHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlKCkpOwogCi0gICAgSlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3Qo
Z2xvYmFsT2JqZWN0KTsKICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpOwogICAgIGJhc2UtPmdldFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIGZpZWxkTmFtZSwgc2xvdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDMxZTU0MjFiZWZhMDEwNWNmZjg5OWRjNzkxNjEz
YTE1Yzg4ODIxOTQuLmNkNjIxMGY3MTgyYzNiNmIzZDNlYTdlMmZjZGM0YTNlZmYyY2Q5ZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAt
MTA4NywxNyArMTA4NywxNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3By
aXZhdGVfbmFtZSkKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IGdldE9wZXJhbmQoY2FsbEZyYW1l
LCBieXRlY29kZS5tX3Byb3BlcnR5KTsKICAgICBBU1NFUlQoc3Vic2NyaXB0LmlzU3ltYm9sKCkp
OwogCi0gICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2VyY2libGUoZ2xvYmFsT2JqZWN0KTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogICAgIGF1dG8gcHJvcGVydHkgPSBz
dWJzY3JpcHQudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOwogICAgIEFTU0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOwogCi0gICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9k
VHlwZTo6R2V0T3duUHJvcGVydHkpOwotICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZh
dGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3du
UHJvcGVydHkpOworICAgIGJhc2VPYmplY3QtPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmplY3Qs
IHByb3BlcnR5LCBzbG90KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKIAotICAgIGlm
ICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIHNsb3QuaXNDYWNoZWFibGUoKSAmJiAhc2xv
dC5pc1Vuc2V0KCkpIHsKKyAgICBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xPVyAmJiBiYXNl
VmFsdWUuaXNDZWxsKCkgJiYgc2xvdC5pc0NhY2hlYWJsZSgpICYmICFzbG90LmlzVW5zZXQoKSkg
ewogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7
CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9zdHJ1Y3R1cmVJRDsKQEAgLTEyMDcsNiArMTIwNyw5IEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVjb2RlLm1fcHJvcGVydHkpOwogICAgIEpTVmFs
dWUgdmFsdWUgPSBnZXRPcGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV92YWx1ZSk7CiAKKyAg
ICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworCiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1
YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CiAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CkBAIC0xMjE2
LDcgKzEyMTksNiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X3ByaXZhdGVf
bmFtZSkKICAgICAvLyBQcml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4g
Y2xhc3MgbGV4aWNhbCBzY29wZQogICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMg
aW4gc3RyaWN0IG1vZGUKICAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Ci0gICAg
YXV0byBiYXNlT2JqZWN0ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlT2JqZWN0LCBpc1N0cmljdE1vZGUpOwogICAgIGlmIChieXRlY29kZS5tX3B1
dEtpbmQuaXNEZWZpbmUoKSkKICAgICAgICAgYmFzZU9iamVjdC0+ZGVmaW5lUHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDIwYTVlNWMxM2Y5
NmRkZTIxZTc0YzQwNjU2YTg5NTg4M2E4NWIxNTcuLjE0MGNkNjhjZjI4MGY0OGIzODdiZTQxNzFj
OGQ3MWM2NzUwNmZiY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTM0MCwyOCArMTM0MCw2IEBAIEpTQ19ERUZJTkVfQ09N
TU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZ2V0X2J5X3ZhbF93aXRoX3RoaXMpCiAgICAgUkVUVVJO
X1BST0ZJTEVEKGJhc2VWYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSwgc2xvdCkpOwog
fQogCi1KU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2dldF9wcml2YXRlX25h
bWUpCi17Ci0gICAgQkVHSU4oKTsKLQotICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BHZXRQ
cml2YXRlTmFtZT4oKTsKLSAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEdFVF9DKGJ5dGVjb2RlLm1f
YmFzZSkuanNWYWx1ZSgpOwotICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gR0VUX0MoYnl0ZWNvZGUu
bV9wcm9wZXJ0eSkuanNWYWx1ZSgpOwotICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7
Ci0KLSAgICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOwot
ICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIGF1dG8gcHJvcGVydHkgPSBzdWJzY3JpcHQudG9Q
cm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotICAgIEFT
U0VSVChwcm9wZXJ0eS5pc1ByaXZhdGVOYW1lKCkpOwotCi0gICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVy
dHkpOwotICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPmdldFByaXZhdGVGaWVsZChnbG9iYWxPYmpl
Y3QsIHByb3BlcnR5LCBzbG90KTsKLSAgICBDSEVDS19FWENFUFRJT04oKTsKLQotICAgIFJFVFVS
Tl9QUk9GSUxFRChzbG90LmdldFZhbHVlKGdsb2JhbE9iamVjdCwgcHJvcGVydHkpKTsKLX0KLQog
SlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9nZXRfcHJvdG90eXBlX29mKQog
ewogICAgIEJFR0lOKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDVlYzFkNTE2OTU1ZDU1ZmQzMDBiMzM3NDAyOTRmZDcxODQ4MmMyM2Uu
LmQyMjg2N2MzMWZmM2ZjY2Y2NmMzOWZmMDI1MGE3MDA2YmRjOTc2MTQgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjAtMTAtMDYgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAg
IFtFU05leHRdW0pJVF0gQWRkIHN1cHBvcnQgZm9yIFVudHlwZWRVc2Ugb24gUHV0UHJpdmF0ZU5h
bWUncyBiYXNlIG9wZXJhbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxNzM3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1wcmltaXRpdmUuanM6IEFk
ZGVkLgorICAgICAgICAqIHN0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXVudHlwZWQtdXNlLmpzOiBB
ZGRlZC4KKwogMjAyMC0xMC0wNSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CiAKICAgICAgICAgJVR5cGVkQXJyYXklLmZyb20gbXVzdCBkbyBtYXBwaW5nIGFuZCBwdXR0
aW5nIGluIGxvY2tzdGVwCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9nZXQtcHJpdmF0ZS1u
YW1lLXdpdGgtcHJpbWl0aXZlLmpzIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13
aXRoLXByaW1pdGl2ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZjMyYzQ3YTg4NDRlNjdjY2MxMDFiZWI3ZWQ1
NTMwNjA3Nzk0NTliCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZh
dGUtbmFtZS13aXRoLXByaW1pdGl2ZS5qcwpAQCAtMCwwICsxLDUxIEBACisvL0AgcmVxdWlyZU9w
dGlvbnMoIi0tdXNlUHJpdmF0ZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNob3VsZFRocm93OiBmdW5jdGlvbihleGNlcHRpb24sIGZ1bmN0b3IpIHsKKyAgICAgICAg
bGV0IHRocmV3RXhjZXB0aW9uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZnVuY3Rvcigp
OworICAgICAgICAgICAgdGhyZXdFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgfSBjYXRjaChl
KSB7CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IHRydWU7CisgICAgICAgICAgICBpZiAo
IWUgaW5zdGFuY2VvZiBleGNlcHRpb24pCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgaXQgdGhyb3dz
OiAiICsgZS5uYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGhyZXdFeGNlcHRpb24p
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhj
ZXB0aW9uLm5hbWUgKyAiIGJ1dCBleGVjdXRlZCB3aXRob3V0IGV4Y2VwdGlvbiIpOworICAgIH0K
K30KKworY2xhc3MgQyB7CisgICNmaWVsZCA9ICd0ZXN0JzsKKworICBnZXRGaWVsZCh2KSB7Cisg
ICAgICB0aGlzLiNmaWVsZDsKKyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citub0lu
bGluZShDLnByb3RvdHlwZS5nZXRGaWVsZCk7CisKKworbGV0IGMgPSBuZXcgQygpOworCithc3Nl
cnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgYy5nZXRGaWVsZC5jYWxsKDE1
KTsKK30pOworYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuZ2V0
RmllbGQuY2FsbCgndGVzdCcpOworfSk7Cithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAo
KSA9PiB7CisgICAgYy5nZXRGaWVsZC5jYWxsKFN5bWJvbCk7Cit9KTsKK2Fzc2VydC5zaG91bGRU
aHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLmdldEZpZWxkLmNhbGwobnVsbCk7Cit9KTsK
K2Fzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLmdldEZpZWxkLmNh
bGwodW5kZWZpbmVkKTsKK30pOworYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4g
eworICAgIGMuZ2V0RmllbGQuY2FsbCgxMG4pOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtdW50eXBlZC11c2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9w
dXQtcHJpdmF0ZS1uYW1lLXVudHlwZWQtdXNlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhZmY0YTI3ZWVkZmVk
YzNiODUyYjdkYzk1NDgzYWMyZTMxNzMxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXVudHlwZWQtdXNlLmpzCkBAIC0wLDAgKzEsMzYgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS1hbGxvd1Vuc3VwcG9ydGVkVGllcnM9dHJ1ZSIsICItLXVzZVBy
aXZhdGVDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzaG91bGRUaHJv
dzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2Vw
dGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAg
IHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2Yg
ZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsg
IiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2NsYXNzIEMg
eworICAjZmllbGQ7CisKKyAgc2V0RmllbGQodikgeworICAgICAgdGhpcy4jZmllbGQgPSB2Owor
ICB9Cit9Citub0lubGluZShDLmNvbnN0cnVjdG9yKTsKK25vSW5saW5lKEMucHJvdG90eXBlLnNl
dEZpZWxkKTsKKworbGV0IGMgPSBuZXcgQygpOworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsg
aSsrKSB7CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAg
ICBjLnNldEZpZWxkLmNhbGwoMTUsICd0ZXN0Jyk7CisgICAgfSk7Cit9CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411583</attachid>
            <date>2020-10-16 09:06:06 -0700</date>
            <delta_ts>2020-10-18 06:24:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217373-20201016130605.patch</filename>
            <type>text/plain</type>
            <size>21751</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTg5ZGFhOWFmZTBlOWU3MjQxMDFkYzRhYWI0OTRiMGUxOTI5Y2U1Li40ZWJhNDYzNDYwM2I3OGIy
NTUzMjlhYzg2YWVkZjZkZmQzNzkwZTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAyMC0xMC0xNiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTTmV4dF1bSklUXSBBZGQgc3VwcG9ydCBmb3IgVW50eXBlZFVzZSBvbiBQ
dXRQcml2YXRlTmFtZSdzIGJhc2Ugb3BlcmFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtl
IFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGFkZGluZyBVbnR5cGVkVXNlIGZvciBg
UHV0UHJpdmF0ZU5hbWVgJ3MgYmFzZSBvcGVyYW5kIHRvCisgICAgICAgIGF2b2lkIGEgT1NSIHdo
ZW4gd2UgaGF2ZSBhIG5vbi1jZWxsIGJhc2UuCisgICAgICAgIEFsc28sIGl0IGlzIGZpeGluZyBh
IGJ1ZyBvbiBwcml2YXRlIGZpZWxkIG9wZXJhdGlvbnMgYGdldF9wcml2YXRlX25hbWVgIGFuZAor
ICAgICAgICBgcHV0X3ByaXZhdGVfbmFtZWAgdG8gY2FsbCBgVG9PYmplY3RgIG9uIGJhc2UgdG8g
cHJvcGVybHkgc3VwcG9ydAorICAgICAgICBjbGFzcyBmaWVsZHMgc3BlYyB0ZXh0WzFdWzJdLgor
CisgICAgICAgIFsxXSAtIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC1jbGFzcy1maWVsZHMvI3Nl
Yy1nZXR2YWx1ZQorICAgICAgICBbMl0gLSBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtY2xhc3Mt
ZmllbGRzLyNzZWMtcHV0dmFsdWUKKworICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVQdXRQcml2YXRlTmFtZSk6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9C
My5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRQ
cml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpzZXRQcml2YXRlRmllbGQpOgorICAgICAgICAoSlNDOjpkZWZpbmVQcml2YXRlRmllbGQp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04pOgorICAgICAgICAoSlND
OjpnZXRQcml2YXRlTmFtZSk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcDoK
KyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAq
IGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0
X29wX3B1dF9wcml2YXRlX25hbWUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisKKyAgICAgICAgUHJldmlvdXMgaW1wbGVt
ZW50YXRpb24gd2FzIHdyb25nbHkgY29uc2lkZXJpbmcgdGhhdCBiYXNlIHdhcyBhbHdheXMKKyAg
ICAgICAgYW4gb2JqZWN0LCBjYXVzaW5nIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGJhc2Ugd2Fz
IG5vdCBhbiBvYmplY3QuCisgICAgICAgIFdlIGNoYW5nZWQgdGhpcyB0byBoYW5kbGUgY2FzZXMg
d2hlbiBiYXNlIGlzIG5vdCBhbmQgb2JqZWN0LCBmb2xsb3dpbmcKKyAgICAgICAgd2hhdCBzcGVj
IHRleHQgc3BlY2lmaWVzLgorCiAyMDIwLTEwLTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgogCiAgICAgICAgIERvbid0IGFzc2lnbiBhIGJvZ3VzIHJlZ2lzdGVyIHRvIExvYWQv
Rm9yd2FyZFZhcmFyZ3MgaW4gQXZhaWxhYmlsaXR5QW5hbHlzaXMgYmVmb3JlIHN0YWNrIGxheW91
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggN2I1
YzUxYzkzNjM0NjRmZGEwOTA5NWM0NWFmYmQ1ZTk1ZjIxNDdiYi4uYWNlM2YxNzk5NzUzYWYyN2Nm
YjY5YTY4YTkwNjlmMTVmOTJmNmU2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwCkBAIC0xOTA3LDcgKzE5MDcsNiBAQCBwcml2YXRlOgogCiAKICAgICAg
ICAgY2FzZSBQdXRQcml2YXRlTmFtZTogewotICAgICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihu
b2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBmaXhFZGdlPFN5bWJvbFVzZT4obm9kZS0+Y2hp
bGQyKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggNDUzZTE1NmIwZTQyNGUx
NjVkZDk1ZTJmMDcxNmMzMWIxZjE5MDJiYi4uMTQwYmE5ZTk0Mzk3NThhNTYzMjA5ZGM2NzI5ZDhh
MDRjNjEyMDM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTM1MjYsMTkgKzM1MjYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUdldEJ5VmFsV2l0aFRoaXMoTm9kZSogbm9kZSkKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVB1dFByaXZhdGVOYW1lKE5vZGUqIG5vZGUpCiB7Ci0gICAgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgQVNTRVJUKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBwcm9wZXJ0
eVZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0
aGlzLCBub2RlLT5jaGlsZDMoKSk7CiAKICAgICBKU1ZhbHVlUmVncyB2YWx1ZVJlZ3MgPSB2YWx1
ZS5qc1ZhbHVlUmVncygpOworICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVl
UmVncygpOwogCi0gICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwogICAgIEdQUlJlZyBw
cm9wZXJ0eUdQUiA9IHByb3BlcnR5VmFsdWUuZ3ByKCk7CiAKICAgICBzcGVjdWxhdGVTeW1ib2wo
bm9kZS0+Y2hpbGQyKCksIHByb3BlcnR5R1BSKTsKIAogICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0g
ICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25QdXRQcml2YXRlTmFtZUdlbmVyaWMsIFRydXN0ZWRJ
bW1QdHI6OndlYWtQb2ludGVyKG1fZ3JhcGgsIG1fZ3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYykpLCBDQ2FsbEhlbHBlcnM6OkNlbGxWYWx1ZShiYXNlR1BSKSwgQ0Nh
bGxIZWxwZXJzOjpDZWxsVmFsdWUocHJvcGVydHlHUFIpLCB2YWx1ZVJlZ3MsIFRydXN0ZWRJbW1Q
dHIobnVsbHB0ciksIFRydXN0ZWRJbW0zMihub2RlLT5wcml2YXRlRmllbGRQdXRLaW5kKCkudmFs
dWUoKSkpOworICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmlj
LCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2dyYXBoLCBtX2dyYXBoLmdsb2JhbE9iamVj
dEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpKSwgYmFzZVJlZ3MsIENDYWxsSGVscGVyczo6Q2Vs
bFZhbHVlKHByb3BlcnR5R1BSKSwgdmFsdWVSZWdzLCBUcnVzdGVkSW1tUHRyKG51bGxwdHIpLCBU
cnVzdGVkSW1tMzIobm9kZS0+cHJpdmF0ZUZpZWxkUHV0S2luZCgpLnZhbHVlKCkpKTsKICAgICBt
X2ppdC5leGNlcHRpb25DaGVjaygpOwogCiAgICAgbm9SZXN1bHQobm9kZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNTVlYWEwN2Y2ZGFh
NDkyNjNjMWE4OTE3N2RlOTg4NjNiYmQxN2VmOC4uMGUyMTc4MmNlYjY2MWEwNzJjNWVhYzY2MzY2
OWI5NzRmZTZhOGFhOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcApAQCAtMzk3MSwxMCArMzk3MSwxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBj
b21waWxlUHV0UHJpdmF0ZU5hbWUoKQogICAgIHsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBo
LCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IENlbGxVc2UsIG1fbm9kZS0+
Y2hpbGQxKCkudXNlS2luZCgpKTsKKyAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUs
IG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UsIG1fbm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpKTsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
Z3JhcGguZ2xvYmFsT2JqZWN0Rm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKIAotICAgICAg
ICBMVmFsdWUgYmFzZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1
ZSBiYXNlID0gbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgTFZhbHVlIHBy
b3BlcnR5ID0gbG93U3ltYm9sKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBMVmFsdWUgdmFs
dWUgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQzKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA5NGE1OGQ4M2VhNTVlOTYyNjgyYmNkZmI3
OTYzYTUzNDhmMTk2MmVhLi4xZjIyZWMxYjY5MDgyMDQ4ZDAwOGVhNDUxMWEzMjBjYjcwZjg1M2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTY3
Nyw3ICs2NzcsOCBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHNldFByaXZhdGVGaWVsZChW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSWRlbnRpZmllciBpZGVu
dCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIGlkZW50aWZpZXIudWlkKCkpOwogICAgIEFTU0VS
VChpZGVudC5pc1ByaXZhdGVOYW1lKCkpOwogCi0gICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBh
c09iamVjdChiYXNlVmFsdWUpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVl
LnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7CiAgICAgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUo
dm0pOwogCkBAIC02OTYsNyArNjk3LDggQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBkZWZp
bmVQcml2YXRlRmllbGQoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBJ
ZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgaWRlbnRpZmllci51aWQo
KSk7CiAgICAgQVNTRVJUKGlkZW50LmlzUHJpdmF0ZU5hbWUoKSk7CiAKLSAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZy
YW1lLT5jb2RlQmxvY2soKTsKICAgICBTdHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSA9IGJhc2VPYmpl
Y3QtPnN0cnVjdHVyZSh2bSk7CiAKQEAgLTczMCw5ICs3MzIsMTAgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblB1dEJ5SWREZWZpbmVQcml2YXRlRmllbGRTdHJpY3RPcHRpbWl6
ZSwgdm9pZCwKICAgICBDYWNoZWFibGVJZGVudGlmaWVyIGlkZW50aWZpZXIgPSBDYWNoZWFibGVJ
ZGVudGlmaWVyOjpjcmVhdGVGcm9tUmF3Qml0cyhyYXdDYWNoZWFibGVJZGVudGlmaWVyKTsKICAg
ICBBY2Nlc3NUeXBlIGFjY2Vzc1R5cGUgPSBzdGF0aWNfY2FzdDxBY2Nlc3NUeXBlPihzdHViSW5m
by0+YWNjZXNzVHlwZSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwotICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYXNPYmplY3QoSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlKSk7Ci0KLSAgICBkZWZpbmVQcml2YXRlRmllbGQodm0sIGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlT2JqZWN0LCBpZGVudGlmaWVyLCB2YWx1ZSwgWz1dKFZN
JiB2bSwgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZSogb2xkU3RydWN0dXJlLCBQdXRQ
cm9wZXJ0eVNsb3QmIHB1dFNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZEJhc2UpOworICAgIAorICAg
IGRlZmluZVByaXZhdGVGaWVsZCh2bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VWYWx1
ZSwgaWRlbnRpZmllciwgdmFsdWUsIFs9XShWTSYgdm0sIENvZGVCbG9jayogY29kZUJsb2NrLCBT
dHJ1Y3R1cmUqIG9sZFN0cnVjdHVyZSwgUHV0UHJvcGVydHlTbG90JiBwdXRTbG90LCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KGJhc2VWYWx1ZSk7CiAgICAgICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uUHV0QnlJ
ZERlZmluZVByaXZhdGVGaWVsZEZpZWxkU3RyaWN0T3B0aW1pemUsIGJhc2VPYmplY3QtPmNsYXNz
SW5mbyh2bSksIGlkZW50LCBwdXRTbG90LmJhc2UoKSA9PSBiYXNlT2JqZWN0KSk7CiAKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChhY2Nlc3NUeXBlLCBhY2Nlc3NUeXBlID09IHN0YXRpY19jYXN0PEFj
Y2Vzc1R5cGU+KHN0dWJJbmZvLT5hY2Nlc3NUeXBlKSk7CkBAIC03NjUsOSArNzY4LDEwIEBAIEpT
Q19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25QdXRCeUlkU2V0UHJpdmF0ZUZpZWxkU3Ry
aWN0T3B0aW1pemUsIHZvaWQsIChKCiAgICAgQ2FjaGVhYmxlSWRlbnRpZmllciBpZGVudGlmaWVy
ID0gQ2FjaGVhYmxlSWRlbnRpZmllcjo6Y3JlYXRlRnJvbVJhd0JpdHMocmF3Q2FjaGVhYmxlSWRl
bnRpZmllcik7CiAgICAgQWNjZXNzVHlwZSBhY2Nlc3NUeXBlID0gc3RhdGljX2Nhc3Q8QWNjZXNz
VHlwZT4oc3R1YkluZm8tPmFjY2Vzc1R5cGUpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKLSAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGFzT2Jq
ZWN0KEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZSkpOworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRCYXNlKTsKIAotICAgIHNldFByaXZhdGVGaWVsZCh2
bSwgZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUsIGJhc2VPYmplY3QsIGlkZW50aWZpZXIsIHZhbHVl
LCBbJl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlKiBvbGRTdHJ1Y3R1
cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpIHsK
KyAgICBzZXRQcml2YXRlRmllbGQodm0sIGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLCBiYXNlVmFs
dWUsIGlkZW50aWZpZXIsIHZhbHVlLCBbJl0oVk0mIHZtLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywg
U3RydWN0dXJlKiBvbGRTdHJ1Y3R1cmUsIFB1dFByb3BlcnR5U2xvdCYgcHV0U2xvdCwgY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpIHsKKyAgICAgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBhc09i
amVjdChiYXNlVmFsdWUpOwogICAgICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvblB1dEJ5
SWRQdXRQcml2YXRlRmllbGRGaWVsZFN0cmljdE9wdGltaXplLCBiYXNlT2JqZWN0LT5jbGFzc0lu
Zm8odm0pLCBpZGVudCwgcHV0U2xvdC5iYXNlKCkgPT0gYmFzZU9iamVjdCkpOwogCiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoYWNjZXNzVHlwZSwgYWNjZXNzVHlwZSA9PSBzdGF0aWNfY2FzdDxBY2Nl
c3NUeXBlPihzdHViSW5mby0+YWNjZXNzVHlwZSkpOwpAQCAtMTEwMSw2ICsxMTA1LDkgQEAgSlND
X0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZv
aWQsIChKU0dsb2JhbE9iamVjdCoKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAKKyAgICBhdXRvIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9P
YmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lk
KCkpOworCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBzdWJzY3JpcHQudG9Qcm9wZXJ0eUtleShn
bG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsK
IApAQCAtMTE0OSw3ICsxMTU2LDYgQEAgSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlv
blB1dFByaXZhdGVOYW1lT3B0aW1pemUsIHZvaWQsIChKU0dsb2JhbE9iamVjdCoKICAgICAvLyBQ
cml2YXRlIGZpZWxkcyBjYW4gb25seSBiZSBhY2Nlc3NlZCB3aXRoaW4gY2xhc3MgbGV4aWNhbCBz
Y29wZQogICAgIC8vIGFuZCBjbGFzcyBtZXRob2RzIGFyZSBhbHdheXMgaW4gc3RyaWN0IG1vZGUK
ICAgICBjb25zdCBib29sIGlzU3RyaWN0TW9kZSA9IHRydWU7Ci0gICAgYXV0byBiYXNlT2JqZWN0
ID0gYXNPYmplY3QoYmFzZVZhbHVlKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlT2Jq
ZWN0LCBpc1N0cmljdE1vZGUpOwogICAgIGlmIChwdXRLaW5kLmlzRGVmaW5lKCkpCiAgICAgICAg
IGJhc2VPYmplY3QtPmRlZmluZVByaXZhdGVGaWVsZChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIHNsb3QpOwpAQCAtMTE3MCw2ICsxMTc2LDkgQEAgSlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKG9wZXJhdGlvblB1dFByaXZhdGVOYW1lR2VuZXJpYywgdm9pZCwgKEpTR2xvYmFsT2Jq
ZWN0KgogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRTdWJz
Y3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVl
KTsKIAorICAgIGF1dG8gYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChnbG9iYWxPYmpl
Y3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CisKICAgICBhdXRv
IHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAg
ICAgRVhDRVBUSU9OX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogCkBAIC0xMTc4LDcgKzEx
ODcsNiBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVH
ZW5lcmljLCB2b2lkLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgLy8gUHJpdmF0ZSBmaWVsZHMgY2Fu
IG9ubHkgYmUgYWNjZXNzZWQgd2l0aGluIGNsYXNzIGxleGljYWwgc2NvcGUKICAgICAvLyBhbmQg
Y2xhc3MgbWV0aG9kcyBhcmUgYWx3YXlzIGluIHN0cmljdCBtb2RlCiAgICAgY29uc3QgYm9vbCBp
c1N0cmljdE1vZGUgPSB0cnVlOwotICAgIGF1dG8gYmFzZU9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoYmFzZU9iamVjdCwgaXNTdHJpY3RNb2Rl
KTsKICAgICBpZiAocHJpdmF0ZUZpZWxkUHV0S2luZC5pc0RlZmluZSgpKQogICAgICAgICBiYXNl
T2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBzbG90KTsKQEAgLTIyNDEsMTIgKzIyNDksMTEgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMg
SlNWYWx1ZSBnZXRQcml2YXRlTmFtZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnIKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYmFzZVZhbHVlLnJlcXVpcmVPYmplY3RDb2Vy
Y2libGUoZ2xvYmFsT2JqZWN0KTsKKyAgICBKU09iamVjdCogYmFzZSA9IGJhc2VWYWx1ZS50b09i
amVjdChnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFs
dWUoKSk7CiAgICAgYXV0byBmaWVsZE5hbWUgPSBmaWVsZE5hbWVWYWx1ZS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgp
KTsKIAotICAgIEpTT2JqZWN0KiBiYXNlID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1l
dGhvZFR5cGU6OkdldE93blByb3BlcnR5KTsKICAgICBiYXNlLT5nZXRQcml2YXRlRmllbGQoZ2xv
YmFsT2JqZWN0LCBmaWVsZE5hbWUsIHNsb3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCmluZGV4IDFmNWU4M2ZhZjYyNDI2MGZlOWZlMjU3ZWY3M2UzNzJmOTc0NWIy
ZTEuLjYxMmM0OGZmYTJiODgyODk3MjhlNmQ4MDkyZmE0MmZjNTNiNGM4NmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCkBAIC0zODAsNiAr
MzgwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHV0X3ByaXZhdGVfbmFtZShjb25zdCBJbnN0cnVj
dGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIoYmFz
ZSwgcmVnVDApOwogICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvcGVydHksIHJlZ1QxKTsK
IAorICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7CisKICAgICBQ
YXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwogICAgIGFkZFNsb3dD
YXNlKGZhc3RQYXRoSm1wKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IDRmNjM3MjczMTMwNzljMzQyODA3
NWJmMzAyZTAzYmZjZWQwZTgzZmYuLjM2YWUyOTYyYTRhYjU4YjE0YzZkMDgyMjk2MjI4ZDI0Njdk
MDczYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtMzQwLDYgKzM0MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3B1
dF9wcml2YXRlX25hbWUoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIAog
ICAgIGVtaXRMb2FkMihiYXNlLCByZWdUMSwgcmVnVDAsIHByb3BlcnR5LCByZWdUMywgcmVnVDIp
OwogCisgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKGJhc2UsIHJlZ1QxKTsKICAgICBQ
YXRjaGFibGVKdW1wIGZhc3RQYXRoSm1wID0gcGF0Y2hhYmxlSnVtcCgpOwogICAgIGFkZFNsb3dD
YXNlKGZhc3RQYXRoSm1wKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKaW5kZXggNjExYWU0YmIxNTRkMDE5NGZlNjY2N2ZhMWYwNGM0ZjRmMTY2
MzFmOS4uYmJhMTIwYTdjNTU4NThmMzc3ZTc5YmI0MjlmNTlkNzk4ZTE2MzRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDg3LDE3
ICsxMDg3LDE3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcHJpdmF0ZV9u
YW1lKQogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gZ2V0T3BlcmFuZChjYWxsRnJhbWUsIGJ5dGVj
b2RlLm1fcHJvcGVydHkpOwogICAgIEFTU0VSVChzdWJzY3JpcHQuaXNTeW1ib2woKSk7CiAKLSAg
ICBiYXNlVmFsdWUucmVxdWlyZU9iamVjdENvZXJjaWJsZShnbG9iYWxPYmplY3QpOworICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlw
dC50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CiAgICAgQVNTRVJUKHByb3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7CiAKLSAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpH
ZXRPd25Qcm9wZXJ0eSk7Ci0gICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxk
KGdsb2JhbE9iamVjdCwgcHJvcGVydHksIHNsb3QpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VPYmplY3QsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0
eSk7CisgICAgYmFzZU9iamVjdC0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJvcGVy
dHksIHNsb3QpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwogCi0gICAgaWYgKCFMTElO
VF9BTFdBWVNfQUNDRVNTX1NMT1cgJiYgc2xvdC5pc0NhY2hlYWJsZSgpICYmICFzbG90LmlzVW5z
ZXQoKSkgeworICAgIGlmICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XICYmIGJhc2VWYWx1ZS5p
c0NlbGwoKSAmJiBzbG90LmlzQ2FjaGVhYmxlKCkgJiYgIXNsb3QuaXNVbnNldCgpKSB7CiAgICAg
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICAg
ICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X3N0cnVjdHVyZUlEOwpAQCAtMTIwNyw2ICsxMjA3LDkgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3B1dF9wcml2YXRlX25hbWUpCiAgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBnZXRP
cGVyYW5kKGNhbGxGcmFtZSwgYnl0ZWNvZGUubV9wcm9wZXJ0eSk7CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IGdldE9wZXJhbmQoY2FsbEZyYW1lLCBieXRlY29kZS5tX3ZhbHVlKTsKIAorICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisKICAgICBhdXRvIHByb3BlcnR5ID0gc3Vic2NyaXB0
LnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKICAgICBBU1NFUlQocHJvcGVydHkuaXNQcml2YXRlTmFtZSgpKTsKQEAgLTEyMTYsNyArMTIx
OSw2IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfcHJpdmF0ZV9uYW1lKQog
ICAgIC8vIFByaXZhdGUgZmllbGRzIGNhbiBvbmx5IGJlIGFjY2Vzc2VkIHdpdGhpbiBjbGFzcyBs
ZXhpY2FsIHNjb3BlCiAgICAgLy8gYW5kIGNsYXNzIG1ldGhvZHMgYXJlIGFsd2F5cyBpbiBzdHJp
Y3QgbW9kZQogICAgIGNvbnN0IGJvb2wgaXNTdHJpY3RNb2RlID0gdHJ1ZTsKLSAgICBhdXRvIGJh
c2VPYmplY3QgPSBhc09iamVjdChiYXNlVmFsdWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGJhc2VPYmplY3QsIGlzU3RyaWN0TW9kZSk7CiAgICAgaWYgKGJ5dGVjb2RlLm1fcHV0S2luZC5p
c0RlZmluZSgpKQogICAgICAgICBiYXNlT2JqZWN0LT5kZWZpbmVQcml2YXRlRmllbGQoZ2xvYmFs
T2JqZWN0LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggMjBhNWU1YzEzZjk2ZGRlMjFl
NzRjNDA2NTZhODk1ODgzYTg1YjE1Ny4uMTQwY2Q2OGNmMjgwZjQ4YjM4N2JlNDE3MWM4ZDcxYzY3
NTA2ZmJjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCkBAIC0xMzQwLDI4ICsxMzQwLDYgQEAgSlNDX0RFRklORV9DT01NT05fU0xP
V19QQVRIKHNsb3dfcGF0aF9nZXRfYnlfdmFsX3dpdGhfdGhpcykKICAgICBSRVRVUk5fUFJPRklM
RUQoYmFzZVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5LCBzbG90KSk7CiB9CiAKLUpT
Q19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZ2V0X3ByaXZhdGVfbmFtZSkKLXsK
LSAgICBCRUdJTigpOwotCi0gICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcEdldFByaXZhdGVO
YW1lPigpOwotICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gR0VUX0MoYnl0ZWNvZGUubV9iYXNlKS5q
c1ZhbHVlKCk7Ci0gICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBHRVRfQyhieXRlY29kZS5tX3Byb3Bl
cnR5KS5qc1ZhbHVlKCk7Ci0gICAgQVNTRVJUKHN1YnNjcmlwdC5pc1N5bWJvbCgpKTsKLQotICAg
IGJhc2VWYWx1ZS5yZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7Ci0gICAgYXV0byBwcm9wZXJ0eSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5
S2V5KGdsb2JhbE9iamVjdCk7Ci0gICAgQ0hFQ0tfRVhDRVBUSU9OKCk7Ci0gICAgQVNTRVJUKHBy
b3BlcnR5LmlzUHJpdmF0ZU5hbWUoKSk7Ci0KLSAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFs
dWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSk7Ci0g
ICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+Z2V0UHJpdmF0ZUZpZWxkKGdsb2JhbE9iamVjdCwgcHJv
cGVydHksIHNsb3QpOwotICAgIENIRUNLX0VYQ0VQVElPTigpOwotCi0gICAgUkVUVVJOX1BST0ZJ
TEVEKHNsb3QuZ2V0VmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eSkpOwotfQotCiBKU0NfREVG
SU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2dldF9wcm90b3R5cGVfb2YpCiB7CiAgICAg
QkVHSU4oKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYTA3M2JjYThhMTEwMGUyMTE1MzQ4MWU3ZDUzMmRjNWE3ZGJmYTVlZS4uZjBhZGIy
MGM2NjI4Yjg1YjM2MzY2ZjE5MTFhMTUwMWM1ZTk3ZjIyZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0x
MC0xNiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4
dF1bSklUXSBBZGQgc3VwcG9ydCBmb3IgVW50eXBlZFVzZSBvbiBQdXRQcml2YXRlTmFtZSdzIGJh
c2Ugb3BlcmFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3MzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAg
ICAqIHN0cmVzcy9nZXQtcHJpdmF0ZS1uYW1lLXdpdGgtcHJpbWl0aXZlLmpzOiBBZGRlZC4KKyAg
ICAgICAgKiBzdHJlc3MvcHV0LXByaXZhdGUtbmFtZS11bnR5cGVkLXVzZS5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL3B1dC1wcml2YXRlLW5hbWUtd2l0aC1wcmltaXRpdmUuanM6IEFkZGVk
LgorCiAyMDIwLTEwLTE1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIERvbid0IGFzc2lnbiBhIGJvZ3VzIHJlZ2lzdGVyIHRvIExvYWQvRm9yd2FyZFZhcmFyZ3Mg
aW4gQXZhaWxhYmlsaXR5QW5hbHlzaXMgYmVmb3JlIHN0YWNrIGxheW91dApkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvZ2V0LXByaXZhdGUtbmFtZS13aXRoLXByaW1pdGl2ZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1wcmltaXRpdmUuanMKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2YzMmM0N2E4ODQ0ZTY3Y2NjMTAxYmViN2VkNTUzMDYwNzc5NDU5YgotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2dldC1wcml2YXRlLW5hbWUtd2l0aC1wcmltaXRpdmUuanMKQEAg
LTAsMCArMSw1MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVDbGFzc0ZpZWxk
cz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzaG91bGRUaHJvdzogZnVuY3Rpb24oZXhj
ZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2VwdGlvbjsKKyAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9u
ID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgdGhyZXdFeGNlcHRp
b24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2YgZXhjZXB0aW9uKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7CisgICAgICAgIH0KKwor
ICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsgIiBidXQgZXhlY3V0ZWQg
d2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2NsYXNzIEMgeworICAjZmllbGQgPSAn
dGVzdCc7CisKKyAgZ2V0RmllbGQodikgeworICAgICAgdGhpcy4jZmllbGQ7CisgIH0KK30KK25v
SW5saW5lKEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuZ2V0RmllbGQpOwor
CisKK2xldCBjID0gbmV3IEMoKTsKKworYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkg
PT4geworICAgIGMuZ2V0RmllbGQuY2FsbCgxNSk7Cit9KTsKK2Fzc2VydC5zaG91bGRUaHJvdyhU
eXBlRXJyb3IsICgpID0+IHsKKyAgICBjLmdldEZpZWxkLmNhbGwoJ3Rlc3QnKTsKK30pOworYXNz
ZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgIGMuZ2V0RmllbGQuY2FsbChT
eW1ib2wpOworfSk7Cithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAg
Yy5nZXRGaWVsZC5jYWxsKG51bGwpOworfSk7Cithc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9y
LCAoKSA9PiB7CisgICAgYy5nZXRGaWVsZC5jYWxsKHVuZGVmaW5lZCk7Cit9KTsKK2Fzc2VydC5z
aG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsKKyAgICBjLmdldEZpZWxkLmNhbGwoMTBuKTsK
K30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXVudHlw
ZWQtdXNlLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS11bnR5cGVkLXVzZS5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5kMDg1MzU3MDFlYTJjMWE0MmFmMmY2ZTc3ODBjMDczYjMzZDhjOGQ2Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHV0LXByaXZhdGUtbmFtZS11bnR5cGVk
LXVzZS5qcwpAQCAtMCwwICsxLDU1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tYWxsb3dVbnN1
cHBvcnRlZFRpZXJzPXRydWUiLCAiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIsICItLXVz
ZUFjY2Vzc0lubGluaW5nPWZhbHNlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzaG91bGRUaHJv
dzogZnVuY3Rpb24oZXhjZXB0aW9uLCBmdW5jdG9yKSB7CisgICAgICAgIGxldCB0aHJld0V4Y2Vw
dGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZ1bmN0b3IoKTsKKyAgICAgICAgICAg
IHRocmV3RXhjZXB0aW9uID0gZmFsc2U7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgdGhyZXdFeGNlcHRpb24gPSB0cnVlOworICAgICAgICAgICAgaWYgKCFlIGluc3RhbmNlb2Yg
ZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8g
dGhyb3c6ICIgKyBleGNlcHRpb24ubmFtZSArICIgYnV0IGl0IHRocm93czogIiArIGUubmFtZSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXRocmV3RXhjZXB0aW9uKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4Y2VwdGlvbi5uYW1lICsg
IiBidXQgZXhlY3V0ZWQgd2l0aG91dCBleGNlcHRpb24iKTsKKyAgICB9Cit9CisKK2NsYXNzIEMg
eworICAjZmllbGQ7CisKKyAgc2V0RmllbGQodikgeworICAgICAgbGV0IG8gPSB0aGlzOworICAg
ICAgLy8gVGhpcyBicmFuY2ggaXMgaGVyZSB0byBhdm9pZCBQdXRQcml2YXRlTmFtZUJ5SWQgdG8g
YmUgZm9sZGVkIGFzIAorICAgICAgLy8gUHV0QnlPZmZzZXQuCisgICAgICBpZiAodiA+IDEwMCkK
KyAgICAgICAgICBvID0ge307CisgICAgICBvLiNmaWVsZCA9IHY7CisgIH0KK30KK25vSW5saW5l
KEMuY29uc3RydWN0b3IpOworbm9JbmxpbmUoQy5wcm90b3R5cGUuc2V0RmllbGQpOworCitsZXQg
YyA9IG5ldyBDKCk7CisKKy8vIExldCdzIHRyaWdnZXIgSklUIGNvbXBpbGF0aW9uIGZvciBgQy5w
cm90b3R5cGUuc2V0RmllbGRgCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICBjLnNldEZpZWxkKDE1KTsKK30KKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7
CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLnNl
dEZpZWxkLmNhbGwoMTUsICd0ZXN0Jyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2hvdWxkVGhy
b3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIGMuc2V0RmllbGQuY2FsbCgnc3RyaW5nJywg
J3Rlc3QnKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgp
ID0+IHsKKyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKFN5bWJvbCgnc3ltYm9sJyksICd0ZXN0Jyk7
CisgICAgfSk7Cit9CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3B1dC1wcml2YXRlLW5h
bWUtd2l0aC1wcmltaXRpdmUuanMgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0ZS1uYW1lLXdp
dGgtcHJpbWl0aXZlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzODFhMTE0MmVkMTVhOGZiYTYwOTNlMTMyNjY5
ZDliOThkYWUzZDEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wdXQtcHJpdmF0
ZS1uYW1lLXdpdGgtcHJpbWl0aXZlLmpzCkBAIC0wLDAgKzEsNTMgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2hvdWxkVGhyb3c6IGZ1bmN0aW9uKGV4Y2VwdGlvbiwgZnVuY3RvcikgeworICAgICAgICBs
ZXQgdGhyZXdFeGNlcHRpb247CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmdW5jdG9yKCk7
CisgICAgICAgICAgICB0aHJld0V4Y2VwdGlvbiA9IGZhbHNlOworICAgICAgICB9IGNhdGNoKGUp
IHsKKyAgICAgICAgICAgIHRocmV3RXhjZXB0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmICgh
ZSBpbnN0YW5jZW9mIGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhjZXB0aW9uLm5hbWUgKyAiIGJ1dCBpdCB0aHJvd3M6
ICIgKyBlLm5hbWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0aHJld0V4Y2VwdGlvbikK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleGNl
cHRpb24ubmFtZSArICIgYnV0IGV4ZWN1dGVkIHdpdGhvdXQgZXhjZXB0aW9uIik7CisgICAgfQor
fQorCitjbGFzcyBDIHsKKyAgI2ZpZWxkID0gJ3Rlc3QnOworCisgIHNldEZpZWxkKHYpIHsKKyAg
ICAgIHRoaXMuI2ZpZWxkID0gdjsKKyAgfQorfQorbm9JbmxpbmUoQy5jb25zdHJ1Y3Rvcik7Citu
b0lubGluZShDLnByb3RvdHlwZS5zZXRGaWVsZCk7CisKK2xldCBjID0gbmV3IEMoKTsKKworLy8g
V2UgcmVwZWF0IHRoaXMgdG8gbWFrZSBvcGVyYXRpb25QdXRQcml2YXRlTmFtZU9wdGltaXplIHJl
cGF0Y2ggdG8gb3BlcmF0aW9uUHV0UHJpdmF0ZU5hbWVHZW5lcmljCitmb3IgKGxldCBpID0gMDsg
aSA8IDU7IGkrKykgeworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+IHsK
KyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKDE1LCAwKTsKKyAgICB9KTsKKyAgICBhc3NlcnQuc2hv
dWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIGMuc2V0RmllbGQuY2FsbCgndGVz
dCcsIDApOworICAgIH0pOworICAgIGFzc2VydC5zaG91bGRUaHJvdyhUeXBlRXJyb3IsICgpID0+
IHsKKyAgICAgICAgYy5zZXRGaWVsZC5jYWxsKFN5bWJvbCwgMCk7CisgICAgfSk7CisgICAgYXNz
ZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwgKCkgPT4geworICAgICAgICBjLnNldEZpZWxkLmNh
bGwobnVsbCwgMCk7CisgICAgfSk7CisgICAgYXNzZXJ0LnNob3VsZFRocm93KFR5cGVFcnJvciwg
KCkgPT4geworICAgICAgICBjLnNldEZpZWxkLmNhbGwodW5kZWZpbmVkLCAwKTsKKyAgICB9KTsK
KyAgICBhc3NlcnQuc2hvdWxkVGhyb3coVHlwZUVycm9yLCAoKSA9PiB7CisgICAgICAgIGMuc2V0
RmllbGQuY2FsbCgxMG4sIDApOworICAgIH0pOworfQorCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>