<?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>202052</bug_id>
          
          <creation_ts>2019-09-20 12:07:43 -0700</creation_ts>
          <short_desc>Remove the argument &apos;resultElement&apos; from the SVG animation functions</short_desc>
          <delta_ts>2019-10-30 15:16:28 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201926</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=202247</see_also>
          <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="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572800</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-20 12:07:43 -0700</bug_when>
    <thetext>This argument was used with the SVG tear-off objects. SVGAnimateElementBase used to have the unique_ptr &apos;m_animatedType&apos; whose type was SVGAnimatedType. Because this pointer could not be shared, all the contributing SVGAnimateElementBase elements had to use the pointer of the first one which was named resultElement.

Consider the following example:

&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
    &lt;rect width=&quot;100&quot; height=&quot;100&quot;&gt;
        &lt;animate attributeType=&quot;XML&quot; attributeName=&quot;x&quot; from=&quot;0&quot; to=&quot;100&quot; dur=&quot;3s&quot; begin=&quot;0&quot; fill=&quot;freeze&quot;/&gt;
        &lt;animate attributeType=&quot;XML&quot; attributeName=&quot;x&quot; from=&quot;100&quot; to=&quot;0&quot; dur=&quot;3s&quot; begin=&quot;3&quot; fill=&quot;freeze&quot;/&gt;
    &lt;/rect&gt;
&lt;/svg&gt;

In this SVG, there are two &lt;animate&gt; elements which animate the same attribute: &apos;x&apos;. In the SVG tear-off objects world, the first &lt;animate&gt; element was called &apos;resultElement&apos; because it was creating the pointer &apos;m_animatedType&apos;. The second, which was called contributor, would access this pointer through the argument &apos;resultElement&apos;.

After removing the SVG tear-off objects and the type SVGAnimateType, this argument is not used anymore since the SVGAnimatedPropertyAnimator accesses the animVal() of the SVGAnimatedProperty of the SVGElement directly. And this SVGAnimatedProperty can be shared among the other SVGAnimatedPropertyAnimator because the SVGElement store a Ref&lt;SVGAnimatedProperty&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572821</commentid>
    <comment_count>1</comment_count>
      <attachid>379258</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-20 12:47:53 -0700</bug_when>
    <thetext>Created attachment 379258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573676</commentid>
    <comment_count>2</comment_count>
      <attachid>379258</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2019-09-24 09:30:18 -0700</bug_when>
    <thetext>Comment on attachment 379258
Patch

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

The patch itself is a nice cleanup, thanks!

&gt; Source/WebCore/ChangeLog:8
&gt; +        This is clean-up will do the following:

s/is//

&gt; Source/WebCore/ChangeLog:10
&gt; +        -- Delete the argument &apos;resultElement&apos; from all the SVG animation functions

s/Delete/Remove/

&gt; Source/WebCore/ChangeLog:13
&gt; +           is progressed.

processed?

&gt; Source/WebCore/ChangeLog:16
&gt; +           to stopAnimation() since there is SVGAnimatedType anymore. Starting

there is no? Can you clarify this paragraph, it is hard to read.

&gt; Source/WebCore/ChangeLog:19
&gt; +        -- Use SetForScope for some temporary settings in SMILTimeContainer.

This is unclear to me without some context. How about: Use the SetForScope&lt;&gt; for helper to temporarily change settings in SMILTimeContainer instead of hand written, potentially error-prone code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575276</commentid>
    <comment_count>3</comment_count>
      <attachid>379835</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-30 11:14:13 -0700</bug_when>
    <thetext>Created attachment 379835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575280</commentid>
    <comment_count>4</comment_count>
      <attachid>379258</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-09-30 11:18:12 -0700</bug_when>
    <thetext>Comment on attachment 379258
Patch

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

1

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        This is clean-up will do the following:
&gt; 
&gt; s/is//

The sentence was rephrased.

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        -- Delete the argument &apos;resultElement&apos; from all the SVG animation functions
&gt; 
&gt; s/Delete/Remove/

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +           is progressed.
&gt; 
&gt; processed?

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:16
&gt;&gt; +           to stopAnimation() since there is SVGAnimatedType anymore. Starting
&gt; 
&gt; there is no? Can you clarify this paragraph, it is hard to read.

The sentence was rephrased.

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +        -- Use SetForScope for some temporary settings in SMILTimeContainer.
&gt; 
&gt; This is unclear to me without some context. How about: Use the SetForScope&lt;&gt; for helper to temporarily change settings in SMILTimeContainer instead of hand written, potentially error-prone code.

The guard m_preventScheduledAnimationsChanges was removed in r250488. So there is no need for this change anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585460</commentid>
    <comment_count>5</comment_count>
      <attachid>382341</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2019-10-30 12:42:39 -0700</bug_when>
    <thetext>Created attachment 382341
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585554</commentid>
    <comment_count>6</comment_count>
      <attachid>382341</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 15:15:25 -0700</bug_when>
    <thetext>Comment on attachment 382341
Patch

Clearing flags on attachment: 382341

Committed r251809: &lt;https://trac.webkit.org/changeset/251809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585555</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-30 15:15:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585559</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-30 15:16:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/56760433&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379258</attachid>
            <date>2019-09-20 12:47:53 -0700</date>
            <delta_ts>2019-09-30 11:14:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202052-20190920124752.patch</filename>
            <type>text/plain</type>
            <size>19951</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDEzNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBACisyMDE5LTA5LTIwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRo
ZSBhcmd1bWVudCAncmVzdWx0RWxlbWVudCcgZnJvbSB0aGUgU1ZHIGFuaW1hdGlvbiBmdW5jdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjA1
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgY2xlYW4tdXAgd2lsbCBkbyB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIC0tIERlbGV0ZSB0
aGUgYXJndW1lbnQgJ3Jlc3VsdEVsZW1lbnQnIGZyb20gYWxsIHRoZSBTVkcgYW5pbWF0aW9uIGZ1
bmN0aW9ucworICAgICAgICAgICBleGNlcHQgZnJvbSBTVkdTTUlMRWxlbWVudDo6cHJvZ3Jlc3Mo
KS4gV2UgbmVlZCB0byBzdGFydCB0aGUgYW5pbWF0aW9uCisgICAgICAgICAgIG9ubHkgb25jZSB3
aGljaCBzaG91bGQgaGFwcGVuIHdpdGggd2hlbiB0aGUgZmlyc3QgYW5pbWF0aW9uIGVsZW1lbnQK
KyAgICAgICAgICAgaXMgcHJvZ3Jlc3NlZC4KKworICAgICAgICAtLSBSZW5hbWUgcmVzZXRBbmlt
YXRlZFR5cGUoKSB0byBzdGFydEFuaW1hdGlvbigpIGFuZCByZW5hbWUgY2xlYXJBbmltYXRlZFR5
cGUoKQorICAgICAgICAgICB0byBzdG9wQW5pbWF0aW9uKCkgc2luY2UgdGhlcmUgaXMgU1ZHQW5p
bWF0ZWRUeXBlIGFueW1vcmUuIFN0YXJ0aW5nCisgICAgICAgICAgIGFuZCBzdG9wcGluZyB0aGUg
YW5pbWF0aW9uIGlzIHdoYXQgd2hhdCB0aGVzZSBmdW5jdGlvbnMgZG8gcmlnaHQgbm93LgorCisg
ICAgICAgIC0tIFVzZSBTZXRGb3JTY29wZSBmb3Igc29tZSB0ZW1wb3Jhcnkgc2V0dGluZ3MgaW4g
U01JTFRpbWVDb250YWluZXIuCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3RhcnRBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFz
ZTo6c3RvcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJh
c2U6OnJlc2V0QW5pbWF0ZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVFbGVtZW50QmFzZTo6Y2xlYXJBbmltYXRlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQ6OnN0YXJ0QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpzdG9wQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldEFuaW1hdGVkVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2xlYXJBbmltYXRlZFR5cGUp
OiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGlvbkVsZW1lbnQ6OnVwZGF0ZUFuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFp
bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjp+U01JTFRpbWVD
b250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U01JTFRpbWVDb250YWluZXI6OnNjaGVkdWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjp1bnNjaGVkdWxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjpzZXRFbGFwc2VkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAg
KiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1NNSUxFbGVtZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6
c2V0QXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6c2V0
VGFyZ2V0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cHJvZ3Jl
c3MpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaDoKKwogMjAxOS0w
OS0yMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgSW1wbGVt
ZW50IFBvc2l0aW9uOjp1cHN0cmVhbSBhbmQgUG9zaXRpb246OmRvd25zdHJlYW0gd2l0aCBsaW5l
IGxheW91dCBpdGVyYXRvcgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVF
bGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDI1MDEzMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsNyArMTQyLDcg
QEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNhbGN1bGF0ZVRvQQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnJlc2V0QW5pbWF0ZWRUeXBl
KCkKK3ZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpzdGFydEFuaW1hdGlvbigpCiB7CiAgICAg
aWYgKCF0YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MSw3ICsxNTEsNyBA
QCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6cmVzZXRBbmltYXRlCiAgICAgICAgIGFuaW1h
dG9yLT5zdGFydCh0YXJnZXRFbGVtZW50KCkpOwogfQogCi12b2lkIFNWR0FuaW1hdGVFbGVtZW50
QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVw
ZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50KikKK3ZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTc2
LDcgKzE3Niw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3VsdHMKICAg
ICAgICAgYW5pbWF0b3ItPmFwcGx5KHRhcmdldEVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjpjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVtZW50KiB0YXJnZXRFbGVt
ZW50KQordm9pZCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0b3BBbmltYXRpb24oU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgJ
KHJldmlzaW9uIDI1MDEzMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVu
dEJhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTAgKzUxLDEwIEBAIHByb3RlY3RlZDoKICAg
ICBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcs
IGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FsY3VsYXRlVG9B
dEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5n
KSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVzZXRBbmltYXRlZFR5cGUoKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcHJvZ3Jlc3MsIHVuc2lnbmVkIHJl
cGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBzdGFydEFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgY2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQpIG92ZXJyaWRlOwog
ICAgIHZvaWQgYXBwbHlSZXN1bHRzVG9UYXJnZXQoKSBvdmVycmlkZTsKLSAgICB2b2lkIGNsZWFy
QW5pbWF0ZWRUeXBlKFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQpIG92ZXJyaWRlOworICAgIHZv
aWQgc3RvcEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsKICAg
ICBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgU3Ry
aW5nIGFuaW1hdGVSYW5nZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykgY29uc3QgeyByZXR1
cm4gc3RyaW5nOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90
aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1MDEzMykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzks
NyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1cGRhdGVBbmltCiAgICAgdXBkYXRl
QW5pbWF0aW9uTW9kZSgpOwogfQogCi12b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNl
dEFuaW1hdGVkVHlwZSgpCit2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdGFydEFuaW1h
dGlvbigpCiB7CiAgICAgaWYgKCFoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJl
c2V0QW5pbWEKICAgICAgICAgdHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsKIH0KIAotdm9pZCBT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFy
Z2V0RWxlbWVudCkKK3ZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0b3BBbmltYXRpb24o
U1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpidWlsZFRyYW5zCiAgICAgdHJhbnNmb3JtLT5yb3RhdGUoYW5nbGUpOwogfQogCi12
b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0
IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCopCit2b2lk
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBl
cmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50KQogewogICAgIGF1dG8gdGFyZ2V0RWxlbWVu
dCA9IG1ha2VSZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuaAkocmV2aXNpb24gMjUwMTMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3Qg
QXRvbVN0cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXNldEFuaW1hdGVkVHlwZSgpIG92
ZXJyaWRlOwotICAgIHZvaWQgY2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbigpIG92ZXJyaWRlOworICAg
IHZvaWQgc3RvcEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsK
ICAgICBib29sIGNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0
b0F0RW5kT2ZEdXJhdGlvblN0cmluZykgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYWxjdWxhdGVGcm9t
QW5kVG9WYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKSBvdmVycmlkZTsKICAgICBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpIG92ZXJyaWRlOwotICAg
IHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOworICAg
IHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpIG92
ZXJyaWRlOwogICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAy
NTAxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6
OnN0YXJ0ZWRBY3RpdmVJCiAgICAgICAgIG1fYW5pbWF0aW9uVmFsaWQgPSBjYWxjTW9kZSA9PSBD
YWxjTW9kZTo6UGFjZWQgfHwgIWhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZH
TmFtZXM6OmtleVBvaW50c0F0dHIpIHx8IChtX2tleVRpbWVzLnNpemUoKSA+IDEgJiYgbV9rZXlU
aW1lcy5zaXplKCkgPT0gbV9rZXlQb2ludHMuc2l6ZSgpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRp
b25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0
Q291bnQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KQordm9pZCBTVkdBbmltYXRpb25F
bGVtZW50Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291
bnQpCiB7ICAgIAogICAgIGlmICghbV9hbmltYXRpb25WYWxpZCkKICAgICAgICAgcmV0dXJuOwpA
QCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0
aW8KICAgICBlbHNlCiAgICAgICAgIGVmZmVjdGl2ZVBlcmNlbnQgPSBwZXJjZW50OwogCi0gICAg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShlZmZlY3RpdmVQZXJjZW50LCByZXBlYXRDb3VudCwgcmVz
dWx0RWxlbWVudCk7CisgICAgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShlZmZlY3RpdmVQZXJjZW50
LCByZXBlYXRDb3VudCk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Y29tcHV0ZUNT
U1Byb3BlcnR5VmFsdWUoU1ZHRWxlbWVudCogZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCwgU3Ry
aW5nJiB2YWx1ZVN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuaAkocmV2aXNpb24gMjUwMTMzKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGlvbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIC8vIGZyb20gU1ZHU01JTEVsZW1lbnQKICAgICB2b2lkIHN0YXJ0ZWRBY3RpdmVJ
bnRlcnZhbCgpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBlcmNl
bnQsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJl
cGVhdCkgb3ZlcnJpZGU7CiAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fZnJvbVBy
b3BlcnR5VmFsdWVUeXBlIHsgUmVndWxhclByb3BlcnR5VmFsdWUgfTsKICAgICBBbmltYXRlZFBy
b3BlcnR5VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSB7IFJlZ3VsYXJQcm9wZXJ0eVZh
bHVlIH07CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2Fs
Y3VsYXRlVG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0
aW9uU3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENv
dW50LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENv
dW50KSA9IDA7CiAgICAgdmlydHVhbCBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRvU3RyaW5nKi8p
ID0gMDsKIAogICAgIHZvaWQgY3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBw
ZXJjZW50LCBmbG9hdCYgZWZmZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRv
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVD
b250YWluZXIuY3BwCShyZXZpc2lvbiAyNTAxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvYW5p
bWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsOSArNDYs
NyBAQCBTTUlMVGltZUNvbnRhaW5lcjo6U01JTFRpbWVDb250YWluZXIoU1ZHCiAKIFNNSUxUaW1l
Q29udGFpbmVyOjp+U01JTFRpbWVDb250YWluZXIoKQogewotI2lmbmRlZiBOREVCVUcKICAgICBB
U1NFUlQoIW1fcHJldmVudFNjaGVkdWxlZEFuaW1hdGlvbnNDaGFuZ2VzKTsKLSNlbmRpZgogfQog
CiB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0
aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5h
bWUpCkBAIC01NiwxMCArNTQsNyBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzY2hlZHVsZShT
VkdTTUlMCiAgICAgQVNTRVJUKGFuaW1hdGlvbi0+dGltZUNvbnRhaW5lcigpID09IHRoaXMpOwog
ICAgIEFTU0VSVCh0YXJnZXQpOwogICAgIEFTU0VSVChhbmltYXRpb24tPmhhc1ZhbGlkQXR0cmli
dXRlTmFtZSgpKTsKLQotI2lmbmRlZiBOREVCVUcKICAgICBBU1NFUlQoIW1fcHJldmVudFNjaGVk
dWxlZEFuaW1hdGlvbnNDaGFuZ2VzKTsKLSNlbmRpZgogCiAgICAgRWxlbWVudEF0dHJpYnV0ZVBh
aXIga2V5KHRhcmdldCwgYXR0cmlidXRlTmFtZSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFuaW1h
dGlvbnNWZWN0b3I+JiBzY2hlZHVsZWQgPSBtX3NjaGVkdWxlZEFuaW1hdGlvbnMuYWRkKGtleSwg
bnVsbHB0cikuaXRlcmF0b3ItPnZhbHVlOwpAQCAtNzYsMTAgKzcxLDcgQEAgdm9pZCBTTUlMVGlt
ZUNvbnRhaW5lcjo6c2NoZWR1bGUoU1ZHU01JTAogdm9pZCBTTUlMVGltZUNvbnRhaW5lcjo6dW5z
Y2hlZHVsZShTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uLCBTVkdFbGVtZW50KiB0YXJnZXQsIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgQVNTRVJUKGFuaW1hdGlv
bi0+dGltZUNvbnRhaW5lcigpID09IHRoaXMpOwotCi0jaWZuZGVmIE5ERUJVRwogICAgIEFTU0VS
VCghbV9wcmV2ZW50U2NoZWR1bGVkQW5pbWF0aW9uc0NoYW5nZXMpOwotI2VuZGlmCiAKICAgICBF
bGVtZW50QXR0cmlidXRlUGFpciBrZXkodGFyZ2V0LCBhdHRyaWJ1dGVOYW1lKTsKICAgICBBbmlt
YXRpb25zVmVjdG9yKiBzY2hlZHVsZWQgPSBtX3NjaGVkdWxlZEFuaW1hdGlvbnMuZ2V0KGtleSk7
CkBAIC0xODUsMTUgKzE3NywxMiBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjpzZXRFbGFwc2Vk
KFNNSUxUCiAgICAgICAgIG1fcmVzdW1lVGltZSA9IG1fYmVnaW5UaW1lOwogCiAjaWZuZGVmIE5E
RUJVRwotICAgIG1fcHJldmVudFNjaGVkdWxlZEFuaW1hdGlvbnNDaGFuZ2VzID0gdHJ1ZTsKKyAg
ICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9wcmV2ZW50U2NoZWR1bGVkQW5pbWF0aW9uc0No
YW5nZXMsIHRydWUpOwogI2VuZGlmCiAgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiBtX3NjaGVk
dWxlZEFuaW1hdGlvbnMudmFsdWVzKCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlbGVtZW50IDog
KmFuaW1hdGlvbikKICAgICAgICAgICAgIGVsZW1lbnQtPnJlc2V0KCk7CiAgICAgfQotI2lmbmRl
ZiBOREVCVUcKLSAgICBtX3ByZXZlbnRTY2hlZHVsZWRBbmltYXRpb25zQ2hhbmdlcyA9IGZhbHNl
OwotI2VuZGlmCiAKICAgICB1cGRhdGVBbmltYXRpb25zKHRpbWUsIHRydWUpOwogfQpAQCAtMjYx
LDEwICsyNTAsOSBAQCB2b2lkIFNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmltYXRpb25zCiAj
aWZuZGVmIE5ERUJVRwogICAgIC8vIFRoaXMgYm9vbGVhbiB3aWxsIGNhdGNoIGFueSBhdHRlbXB0
cyB0byBzY2hlZHVsZS91bnNjaGVkdWxlIHNjaGVkdWxlZEFuaW1hdGlvbnMgZHVyaW5nIHRoaXMg
Y3JpdGljYWwgc2VjdGlvbi4KICAgICAvLyBTaW1pbGFybHksIGFueSBlbGVtZW50cyByZW1vdmVk
IHdpbGwgdW5zY2hlZHVsZSB0aGVtc2VsdmVzLCBzbyB0aGlzIHdpbGwgY2F0Y2ggbW9kaWZpY2F0
aW9uIG9mIGFuaW1hdGlvbnNUb0FwcGx5LgotICAgIG1fcHJldmVudFNjaGVkdWxlZEFuaW1hdGlv
bnNDaGFuZ2VzID0gdHJ1ZTsKKyAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9wcmV2ZW50
U2NoZWR1bGVkQW5pbWF0aW9uc0NoYW5nZXMsIHRydWUpOwogI2VuZGlmCiAKLSAgICBBbmltYXRp
b25zVmVjdG9yIGFuaW1hdGlvbnNUb0FwcGx5OwogICAgIGZvciAoYXV0byYgaXQgOiBtX3NjaGVk
dWxlZEFuaW1hdGlvbnMpIHsKICAgICAgICAgQW5pbWF0aW9uc1ZlY3Rvciogc2NoZWR1bGVkID0g
aXQudmFsdWUuZ2V0KCk7CiAgICAgICAgIGZvciAoYXV0byogYW5pbWF0aW9uIDogKnNjaGVkdWxl
ZCkgewpAQCAtMjczLDYgKzI2MSw3IEBAIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFu
aW1hdGlvbnMKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBBbmltYXRpb25zVmVjdG9yIGFu
aW1hdGlvbnNUb0FwcGx5OwogICAgIGZvciAoYXV0byYgaXQgOiBtX3NjaGVkdWxlZEFuaW1hdGlv
bnMpIHsKICAgICAgICAgQW5pbWF0aW9uc1ZlY3Rvciogc2NoZWR1bGVkID0gaXQudmFsdWUuZ2V0
KCk7CiAKQEAgLTI4Miw0OCArMjcxLDM2IEBAIHZvaWQgU01JTFRpbWVDb250YWluZXI6OnVwZGF0
ZUFuaW1hdGlvbnMKICAgICAgICAgLy8gaGF2ZSBoaWdoZXIgcHJpb3JpdHkuCiAgICAgICAgIHNv
cnRCeVByaW9yaXR5KCpzY2hlZHVsZWQsIGVsYXBzZWQpOwogCi0gICAgICAgIFJlZlB0cjxTVkdT
TUlMRWxlbWVudD4gcmVzdWx0RWxlbWVudDsKKyAgICAgICAgUmVmUHRyPFNWR1NNSUxFbGVtZW50
PiBmaXJzdEFuaW1hdGlvbjsKICAgICAgICAgZm9yIChhdXRvJiBhbmltYXRpb24gOiAqc2NoZWR1
bGVkKSB7CiAgICAgICAgICAgICBBU1NFUlQoYW5pbWF0aW9uLT50aW1lQ29udGFpbmVyKCkgPT0g
dGhpcyk7CiAgICAgICAgICAgICBBU1NFUlQoYW5pbWF0aW9uLT50YXJnZXRFbGVtZW50KCkpOwog
ICAgICAgICAgICAgQVNTRVJUKGFuaW1hdGlvbi0+aGFzVmFsaWRBdHRyaWJ1dGVOYW1lKCkpOwog
CisgICAgICAgICAgICBpZiAoIWFuaW1hdGlvbi0+aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIC8vIFJlc3VsdHMgYXJlIGFj
Y3VtdWxhdGVkIHRvIHRoZSBmaXJzdCBhbmltYXRpb24gdGhhdCBhbmltYXRlcyBhbmQgY29udHJp
YnV0ZXMgdG8gYSBwYXJ0aWN1bGFyIGVsZW1lbnQvYXR0cmlidXRlIHBhaXIuCi0gICAgICAgICAg
ICBpZiAoIXJlc3VsdEVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWFuaW1hdGlvbi0+
aGFzVmFsaWRBdHRyaWJ1dGVUeXBlKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBhbmltYXRpb247Ci0gICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoIWZpcnN0QW5pbWF0aW9uKQorICAgICAgICAgICAgICAgIGZpcnN0
QW5pbWF0aW9uID0gYW5pbWF0aW9uOwogCiAgICAgICAgICAgICAvLyBUaGlzIHdpbGwgY2FsY3Vs
YXRlIHRoZSBjb250cmlidXRpb24gZnJvbSB0aGUgYW5pbWF0aW9uIGFuZCBhZGQgaXQgdG8gdGhl
IHJlc3VsdHNFbGVtZW50LgotICAgICAgICAgICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVs
YXBzZWQsIHJlc3VsdEVsZW1lbnQuZ2V0KCksIHNlZWtUb1RpbWUpICYmIHJlc3VsdEVsZW1lbnQg
PT0gYW5pbWF0aW9uKQotICAgICAgICAgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBudWxscHRyOwor
ICAgICAgICAgICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVsYXBzZWQsICpmaXJzdEFuaW1h
dGlvbiwgc2Vla1RvVGltZSkgJiYgYW5pbWF0aW9uID09IGZpcnN0QW5pbWF0aW9uKQorICAgICAg
ICAgICAgICAgIGZpcnN0QW5pbWF0aW9uID0gbnVsbHB0cjsKIAogICAgICAgICAgICAgU01JTFRp
bWUgbmV4dEZpcmVUaW1lID0gYW5pbWF0aW9uLT5uZXh0UHJvZ3Jlc3NUaW1lKCk7CiAgICAgICAg
ICAgICBpZiAobmV4dEZpcmVUaW1lLmlzRmluaXRlKCkpCiAgICAgICAgICAgICAgICAgZWFybGll
c3RGaXJlVGltZSA9IHN0ZDo6bWluKG5leHRGaXJlVGltZSwgZWFybGllc3RGaXJlVGltZSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAocmVzdWx0RWxlbWVudCkKLSAgICAgICAgICAgIGFuaW1h
dGlvbnNUb0FwcGx5LmFwcGVuZChyZXN1bHRFbGVtZW50LmdldCgpKTsKLSAgICB9Ci0KLSAgICBp
ZiAoYW5pbWF0aW9uc1RvQXBwbHkuaXNFbXB0eSgpKSB7Ci0jaWZuZGVmIE5ERUJVRwotICAgICAg
ICBtX3ByZXZlbnRTY2hlZHVsZWRBbmltYXRpb25zQ2hhbmdlcyA9IGZhbHNlOwotI2VuZGlmCi0g
ICAgICAgIHN0YXJ0VGltZXIoZWxhcHNlZCwgZWFybGllc3RGaXJlVGltZSwgYW5pbWF0aW9uRnJh
bWVEZWxheSgpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZmlyc3RBbmltYXRpb24p
CisgICAgICAgICAgICBhbmltYXRpb25zVG9BcHBseS5hcHBlbmQoZmlyc3RBbmltYXRpb24uZ2V0
KCkpOwogICAgIH0KIAogICAgIC8vIEFwcGx5IHJlc3VsdHMgdG8gdGFyZ2V0IGVsZW1lbnRzLgog
ICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDogYW5pbWF0aW9uc1RvQXBwbHkpCiAgICAgICAgIGFu
aW1hdGlvbi0+YXBwbHlSZXN1bHRzVG9UYXJnZXQoKTsKIAotI2lmbmRlZiBOREVCVUcKLSAgICBt
X3ByZXZlbnRTY2hlZHVsZWRBbmltYXRpb25zQ2hhbmdlcyA9IGZhbHNlOwotI2VuZGlmCi0KICAg
ICBzdGFydFRpbWVyKGVsYXBzZWQsIGVhcmxpZXN0RmlyZVRpbWUsIGFuaW1hdGlvbkZyYW1lRGVs
YXkoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTAxMzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
YW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ1LDcgKzI0
NSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhclRpbWVzV2l0aER5bmFtaWMKIAogdm9pZCBT
VkdTTUlMRWxlbWVudDo6cmVzZXQoKQogewotICAgIGNsZWFyQW5pbWF0ZWRUeXBlKG1fdGFyZ2V0
RWxlbWVudCk7CisgICAgc3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1lbnQpOwogCiAgICAgbV9h
Y3RpdmVTdGF0ZSA9IEluYWN0aXZlOwogICAgIG1faXNXYWl0aW5nRm9yRmlyc3RJbnRlcnZhbCA9
IHRydWU7CkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBTVkdTTUlMRWxlbWVudDo6c2V0QXR0cmli
dXRlTmFtZShjbwogCiAgICAgLy8gT25seSBjbGVhciB0aGUgYW5pbWF0ZWQgdHlwZSwgaWYgd2Ug
aGFkIGEgdGFyZ2V0IGJlZm9yZS4KICAgICBpZiAobV90YXJnZXRFbGVtZW50KQotICAgICAgICBj
bGVhckFuaW1hdGVkVHlwZShtX3RhcmdldEVsZW1lbnQpOworICAgICAgICBzdG9wQW5pbWF0aW9u
KG1fdGFyZ2V0RWxlbWVudCk7CiB9CiAKIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnNldFRhcmdldEVs
ZW1lbnQoU1ZHRWxlbWVudCogdGFyZ2V0KQpAQCAtNjI0LDcgKzYyNCw3IEBAIHZvaWQgU1ZHU01J
TEVsZW1lbnQ6OnNldFRhcmdldEVsZW1lbnQoU1YKIAogICAgIGlmIChtX3RhcmdldEVsZW1lbnQp
IHsKICAgICAgICAgLy8gQ2xlYXIgdmFsdWVzIHRoYXQgbWF5IGRlcGVuZCBvbiB0aGUgcHJldmlv
dXMgdGFyZ2V0LgotICAgICAgICBjbGVhckFuaW1hdGVkVHlwZShtX3RhcmdldEVsZW1lbnQpOwor
ICAgICAgICBzdG9wQW5pbWF0aW9uKG1fdGFyZ2V0RWxlbWVudCk7CiAgICAgICAgIGRpc2Nvbm5l
Y3RDb25kaXRpb25zKCk7CiAgICAgfQogCkBAIC0xMDcxLDkgKzEwNzEsOCBAQCBib29sIFNWR1NN
SUxFbGVtZW50Ojppc0NvbnRyaWJ1dGluZyhTTUlMCiAgICAgcmV0dXJuIChtX2FjdGl2ZVN0YXRl
ID09IEFjdGl2ZSAmJiAoZmlsbCgpID09IEZpbGxGcmVlemUgfHwgZWxhcHNlZCA8PSBtX2ludGVy
dmFsQmVnaW4gKyByZXBlYXRpbmdEdXJhdGlvbigpKSkgfHwgbV9hY3RpdmVTdGF0ZSA9PSBGcm96
ZW47CiB9CiAgICAgCi1ib29sIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlMVGltZSBlbGFw
c2VkLCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCwgYm9vbCBzZWVrVG9UaW1lKQorYm9v
bCBTVkdTTUlMRWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1l
bnQmIGZpcnN0QW5pbWF0aW9uLCBib29sIHNlZWtUb1RpbWUpCiB7Ci0gICAgQVNTRVJUKHJlc3Vs
dEVsZW1lbnQpOwogICAgIEFTU0VSVChtX3RpbWVDb250YWluZXIpOwogICAgIEFTU0VSVChtX2lz
V2FpdGluZ0ZvckZpcnN0SW50ZXJ2YWwgfHwgbV9pbnRlcnZhbEJlZ2luLmlzRmluaXRlKCkpOwog
CkBAIC0xMDg2LDkgKzEwODUsOSBAQCBib29sIFNWR1NNSUxFbGVtZW50Ojpwcm9ncmVzcyhTTUlM
VGltZSBlCiAgICAgaWYgKGVsYXBzZWQgPCBtX2ludGVydmFsQmVnaW4pIHsKICAgICAgICAgQVNT
RVJUKG1fYWN0aXZlU3RhdGUgIT0gQWN0aXZlKTsKICAgICAgICAgaWYgKG1fYWN0aXZlU3RhdGUg
PT0gRnJvemVuKSB7Ci0gICAgICAgICAgICBpZiAodGhpcyA9PSByZXN1bHRFbGVtZW50KQotICAg
ICAgICAgICAgICAgIHJlc2V0QW5pbWF0ZWRUeXBlKCk7Ci0gICAgICAgICAgICB1cGRhdGVBbmlt
YXRpb24obV9sYXN0UGVyY2VudCwgbV9sYXN0UmVwZWF0LCByZXN1bHRFbGVtZW50KTsKKyAgICAg
ICAgICAgIGlmICh0aGlzID09ICZmaXJzdEFuaW1hdGlvbikKKyAgICAgICAgICAgICAgICBzdGFy
dEFuaW1hdGlvbigpOworICAgICAgICAgICAgdXBkYXRlQW5pbWF0aW9uKG1fbGFzdFBlcmNlbnQs
IG1fbGFzdFJlcGVhdCk7CiAgICAgICAgIH0KICAgICAgICAgbV9uZXh0UHJvZ3Jlc3NUaW1lID0g
bV9pbnRlcnZhbEJlZ2luOwogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTE5LDE1ICsxMTE4
LDE1IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGUKICAgICBtX2Fj
dGl2ZVN0YXRlID0gZGV0ZXJtaW5lQWN0aXZlU3RhdGUoZWxhcHNlZCk7CiAgICAgYm9vbCBhbmlt
YXRpb25Jc0NvbnRyaWJ1dGluZyA9IGlzQ29udHJpYnV0aW5nKGVsYXBzZWQpOwogCi0gICAgLy8g
T25seSByZXNldCB0aGUgYW5pbWF0ZWQgdHlwZSB0byB0aGUgYmFzZSB2YWx1ZSBvbmNlIGZvciB0
aGUgbG93ZXN0IHByaW9yaXR5IGFuaW1hdGlvbiB0aGF0IGFuaW1hdGVzIGFuZCBjb250cmlidXRl
cyB0byBhIHBhcnRpY3VsYXIgZWxlbWVudC9hdHRyaWJ1dGUgcGFpci4KLSAgICBpZiAodGhpcyA9
PSByZXN1bHRFbGVtZW50ICYmIGFuaW1hdGlvbklzQ29udHJpYnV0aW5nKQotICAgICAgICByZXNl
dEFuaW1hdGVkVHlwZSgpOwotCiAgICAgaWYgKGFuaW1hdGlvbklzQ29udHJpYnV0aW5nKSB7Cisg
ICAgICAgIC8vIE9ubHkgc3RhcnQgdGhlIGFuaW1hdGlvbiBvZiB0aGUgbG93ZXN0IHByaW9yaXR5
IGFuaW1hdGlvbiB0aGF0IGFuaW1hdGVzIGFuZCBjb250cmlidXRlcyB0byBhIHBhcnRpY3VsYXIg
ZWxlbWVudC9hdHRyaWJ1dGUgcGFpci4KKyAgICAgICAgaWYgKHRoaXMgPT0gJmZpcnN0QW5pbWF0
aW9uKQorICAgICAgICAgICAgc3RhcnRBbmltYXRpb24oKTsKKwogICAgICAgICBpZiAob2xkQWN0
aXZlU3RhdGUgPT0gSW5hY3RpdmUpCiAgICAgICAgICAgICBzdGFydGVkQWN0aXZlSW50ZXJ2YWwo
KTsKIAotICAgICAgICB1cGRhdGVBbmltYXRpb24ocGVyY2VudCwgcmVwZWF0LCByZXN1bHRFbGVt
ZW50KTsKKyAgICAgICAgdXBkYXRlQW5pbWF0aW9uKHBlcmNlbnQsIHJlcGVhdCk7CiAgICAgICAg
IG1fbGFzdFBlcmNlbnQgPSBwZXJjZW50OwogICAgICAgICBtX2xhc3RSZXBlYXQgPSByZXBlYXQ7
CiAgICAgfQpAQCAtMTEzNiw3ICsxMTM1LDcgQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6cHJvZ3Jl
c3MoU01JTFRpbWUgZQogICAgICAgICBzbWlsRW5kRXZlbnRTZW5kZXIoKS5kaXNwYXRjaEV2ZW50
U29vbigqdGhpcyk7CiAgICAgICAgIGVuZGVkQWN0aXZlSW50ZXJ2YWwoKTsKICAgICAgICAgaWYg
KG1fYWN0aXZlU3RhdGUgIT0gRnJvemVuKQotICAgICAgICAgICAgY2xlYXJBbmltYXRlZFR5cGUo
bV90YXJnZXRFbGVtZW50KTsKKyAgICAgICAgICAgIHN0b3BBbmltYXRpb24obV90YXJnZXRFbGVt
ZW50KTsKICAgICB9IGVsc2UgaWYgKG9sZEFjdGl2ZVN0YXRlICE9IEFjdGl2ZSAmJiBtX2FjdGl2
ZVN0YXRlID09IEFjdGl2ZSkKICAgICAgICAgc21pbEJlZ2luRXZlbnRTZW5kZXIoKS5kaXNwYXRj
aEV2ZW50U29vbigqdGhpcyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24v
U1ZHU01JTEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0
aW9uL1NWR1NNSUxFbGVtZW50LmgJKHJldmlzaW9uIDI1MDEzMykKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyAr
ODIsNyBAQCBwdWJsaWM6CiAgICAgU01JTFRpbWUgc2ltcGxlRHVyYXRpb24oKSBjb25zdDsKIAog
ICAgIHZvaWQgc2Vla1RvSW50ZXJ2YWxDb3JyZXNwb25kaW5nVG9UaW1lKFNNSUxUaW1lIGVsYXBz
ZWQpOwotICAgIGJvb2wgcHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQq
IHJlc3VsdHNFbGVtZW50LCBib29sIHNlZWtUb1RpbWUpOworICAgIGJvb2wgcHJvZ3Jlc3MoU01J
TFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQmIGZpcnN0QW5pbWF0aW9uLCBib29sIHNlZWtU
b1RpbWUpOwogICAgIFNNSUxUaW1lIG5leHRQcm9ncmVzc1RpbWUoKSBjb25zdDsKIAogICAgIHZv
aWQgcmVzZXQoKTsKQEAgLTk4LDggKzk4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0RG9jdW1l
bnRPcmRlckluZGV4KHVuc2lnbmVkIGluZGV4KSB7IG1fZG9jdW1lbnRPcmRlckluZGV4ID0gaW5k
ZXg7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0FkZGl0aXZlKCkgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCByZXNldEFuaW1hdGVkVHlwZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY2xl
YXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdGFydEFuaW1hdGlvbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcEFuaW1h
dGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFw
cGx5UmVzdWx0c1RvVGFyZ2V0KCkgPSAwOwogCiAgICAgdm9pZCBjb25uZWN0Q29uZGl0aW9ucygp
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRl
ZEFjdGl2ZUludGVydmFsKCkgPSAwOwogICAgIHZvaWQgZW5kZWRBY3RpdmVJbnRlcnZhbCgpOwot
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQg
cmVwZWF0LCBTVkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0KSA9IDA7
CiAKICAgICBzdGF0aWMgYm9vbCBpc1N1cHBvcnRlZEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJik7CiAgICAgUXVhbGlmaWVkTmFtZSBjb25zdHJ1Y3RBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379835</attachid>
            <date>2019-09-30 11:14:13 -0700</date>
            <delta_ts>2019-10-30 12:42:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202052-20190930111412.patch</filename>
            <type>text/plain</type>
            <size>15422</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MDUxOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDE5LTA5LTMwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRo
ZSBhcmd1bWVudCAncmVzdWx0RWxlbWVudCcgZnJvbSB0aGUgU1ZHIGFuaW1hdGlvbiBmdW5jdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjA1
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
aXMgYSBjbGVhbi11cCBwYXRjaCwgd2hpY2ggZG9lcyB0aGUgZm9sbG93aW5nOgorCisgICAgICAg
IC0tIEl0IHJlbW92ZXMgdGhlIGFyZ3VtZW50ICdyZXN1bHRFbGVtZW50JyBmcm9tIGFsbCB0aGUg
U1ZHIGFuaW1hdGlvbgorICAgICAgICAgICBmdW5jdGlvbnMgZXhjZXB0IGZyb20gU1ZHU01JTEVs
ZW1lbnQ6OnByb2dyZXNzKCkuIEluIHRoaXMgZnVuY3Rpb24sIHdlCisgICAgICAgICAgIG5lZWQg
dG8gc3RhcnQgdGhlIGFuaW1hdGlvbiBvbmx5IG9uY2Ugd2hpY2ggc2hvdWxkIGhhcHBlbiB3aXRo
IHRoZSBmaXJzdAorICAgICAgICAgICBhbmltYXRpb24gb25seS4KKworICAgICAgICAtLSBJdCBy
ZW5hbWVzIHJlc2V0QW5pbWF0ZWRUeXBlKCkgYW5kIGNsZWFyQW5pbWF0ZWRUeXBlKCkgdG8gc3Rh
cnRBbmltYXRpb24oKQorICAgICAgICAgICBhbmQgc3RvcEFuaW1hdGlvbigpIHJlc3BlY3RpdmVs
eS4gVGhlc2UgZnVuY3Rpb25zIHdlcmUgbmFtZWQgZm9yIHRoZQorICAgICAgICAgICB0eXBlIFNW
R0FuaW1hdGVkVHlwZSB3aGljaCBoYWQgYmVlbiBkZWxldGVkLiBUaGUgcmVhbCBwdXJwb3NlIG9m
IHRoZXNlCisgICAgICAgICAgIGZ1bmN0aW9ucyBpcyB0byBzdGFydC9zdG9wIHRoZSBhbmltYXRp
b24uCisKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3RhcnRBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6c3RvcEFuaW1hdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnJlc2V0QW5pbWF0
ZWRUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFz
ZTo6Y2xlYXJBbmltYXRlZFR5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
RWxlbWVudEJhc2UuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0YXJ0QW5pbWF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdG9wQW5p
bWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpyZXNldEFuaW1hdGVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2xlYXJBbmltYXRlZFR5cGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGlvbkVsZW1l
bnQ6OnVwZGF0ZUFuaW1hdGlvbik6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NNSUxUaW1lQ29udGFpbmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNNSUxUaW1lQ29udGFpbmVyOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAg
ICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NNSUxFbGVtZW50OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVu
dDo6c2V0QXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6
c2V0VGFyZ2V0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cHJv
Z3Jlc3MpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuaDoKKwogMjAx
OS0wOS0zMCAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVu
ZGVyTGluZUJyZWFrIHNob3VsZCB1c2UgTGluZUxheW91dFRyYXZlcnNhbApJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDI1MDUx
OSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6
OmNhbGN1bGF0ZVRvQQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTVkdBbmltYXRlRWxl
bWVudEJhc2U6OnJlc2V0QW5pbWF0ZWRUeXBlKCkKK3ZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
OjpzdGFydEFuaW1hdGlvbigpCiB7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6
cmVzZXRBbmltYXRlCiAgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5zdGFydCh0YXJnZXRFbGVt
ZW50KCkpOwogfQogCi12b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVt
ZW50KikKK3ZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKIHsKICAgICBpZiAoIXRhcmdl
dEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3VsdHMKICAgICAgICAgYW5pbWF0b3ItPmFwcGx5
KHRhcmdldEVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjbGVh
ckFuaW1hdGVkVHlwZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KQordm9pZCBTVkdBbmltYXRl
RWxlbWVudEJhc2U6OnN0b3BBbmltYXRpb24oU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkKIHsK
ICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgJKHJldmlzaW9uIDI1MDUxOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsMTAgKzUzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYWxjdWxhdGVGcm9tQW5k
QnlWYWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5n
KSBvdmVycmlkZTsKICAgICBib29sIGNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29u
c3QgU3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IHJlc2V0QW5pbWF0ZWRUeXBlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1l
bnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRBbmltYXRpb24oKSBv
dmVycmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcHJvZ3Jlc3Ms
IHVuc2lnbmVkIHJlcGVhdENvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVtZW50
KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBbmltYXRpb24oU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI1MDUxOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2
b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1cGRhdGVBbmltCiAgICAgdXBkYXRlQW5pbWF0
aW9uTW9kZSgpOwogfQogCi12b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldEFuaW1h
dGVkVHlwZSgpCit2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdGFydEFuaW1hdGlvbigp
CiB7CiAgICAgaWYgKCFoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJlc2V0QW5p
bWEKICAgICAgICAgdHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsKIH0KIAotdm9pZCBTVkdBbmlt
YXRlTW90aW9uRWxlbWVudDo6Y2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCkKK3ZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0b3BBbmltYXRpb24oU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAg
IHJldHVybjsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjpidWlsZFRyYW5zCiAgICAgdHJhbnNmb3JtLT5yb3RhdGUoYW5nbGUpOwogfQogCi12b2lkIFNW
R0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCopCit2b2lkIFNWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdENvdW50KQogewogICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1h
a2VSZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAko
cmV2aXNpb24gMjUwNTE5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXNldEFuaW1hdGVkVHlwZSgpIG92ZXJyaWRl
OwotICAgIHZvaWQgY2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkg
b3ZlcnJpZGU7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQg
c3RvcEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsKICAgICBi
b29sIGNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5k
T2ZEdXJhdGlvblN0cmluZykgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9W
YWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBv
dmVycmlkZTsKICAgICBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpIG92ZXJyaWRlOwotICAgIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRD
b3VudCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpIG92ZXJyaWRl
OwogICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTA1MTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0
ZWRBY3RpdmVJCiAgICAgICAgIG1fYW5pbWF0aW9uVmFsaWQgPSBjYWxjTW9kZSA9PSBDYWxjTW9k
ZTo6UGFjZWQgfHwgIWhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6
OmtleVBvaW50c0F0dHIpIHx8IChtX2tleVRpbWVzLnNpemUoKSA+IDEgJiYgbV9rZXlUaW1lcy5z
aXplKCkgPT0gbV9rZXlQb2ludHMuc2l6ZSgpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRpb25FbGVt
ZW50Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQs
IFNWR1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KQordm9pZCBTVkdBbmltYXRpb25FbGVtZW50
Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQpCiB7
ICAgIAogICAgIGlmICghbV9hbmltYXRpb25WYWxpZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTkz
LDcgKzU5Myw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW8KICAg
ICBlbHNlCiAgICAgICAgIGVmZmVjdGl2ZVBlcmNlbnQgPSBwZXJjZW50OwogCi0gICAgY2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShlZmZlY3RpdmVQZXJjZW50LCByZXBlYXRDb3VudCwgcmVzdWx0RWxl
bWVudCk7CisgICAgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShlZmZlY3RpdmVQZXJjZW50LCByZXBl
YXRDb3VudCk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Y29tcHV0ZUNTU1Byb3Bl
cnR5VmFsdWUoU1ZHRWxlbWVudCogZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCwgU3RyaW5nJiB2
YWx1ZVN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQu
aAkocmV2aXNpb24gMjUwNTE5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHByb3RlY3RlZDoKIAog
ICAgIC8vIGZyb20gU1ZHU01JTEVsZW1lbnQKICAgICB2b2lkIHN0YXJ0ZWRBY3RpdmVJbnRlcnZh
bCgpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVu
c2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOwor
ICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCkg
b3ZlcnJpZGU7CiAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fZnJvbVByb3BlcnR5
VmFsdWVUeXBlIHsgUmVndWxhclByb3BlcnR5VmFsdWUgfTsKICAgICBBbmltYXRlZFByb3BlcnR5
VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSB7IFJlZ3VsYXJQcm9wZXJ0eVZhbHVlIH07
CkBAIC0xMjEsNyArMTIxLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRl
VG9BdEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3Ry
aW5nKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKICAgICB2
aXJ0dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBT
VkdTTUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50KSA9
IDA7CiAgICAgdmlydHVhbCBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3Qg
U3RyaW5nJiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRvU3RyaW5nKi8pID0gMDsK
IAogICAgIHZvaWQgY3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBwZXJjZW50
LCBmbG9hdCYgZWZmZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRvKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWlu
ZXIuY3BwCShyZXZpc2lvbiAyNTA1MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NNSUxUaW1lQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDcgKzI3OCw3IEBA
IHZvaWQgU01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMKICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGNhbGN1bGF0ZSB0aGUgY29udHJpYnV0aW9uIGZy
b20gdGhlIGFuaW1hdGlvbiBhbmQgYWRkIGl0IHRvIHRoZSByZXN1bHRzRWxlbWVudC4KLSAgICAg
ICAgICAgIGlmICghYW5pbWF0aW9uLT5wcm9ncmVzcyhlbGFwc2VkLCBmaXJzdEFuaW1hdGlvbi5n
ZXQoKSwgc2Vla1RvVGltZSkgJiYgZmlyc3RBbmltYXRpb24gPT0gYW5pbWF0aW9uKQorICAgICAg
ICAgICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVsYXBzZWQsICpmaXJzdEFuaW1hdGlvbiwg
c2Vla1RvVGltZSkgJiYgZmlyc3RBbmltYXRpb24gPT0gYW5pbWF0aW9uKQogICAgICAgICAgICAg
ICAgIGZpcnN0QW5pbWF0aW9uID0gbnVsbHB0cjsKIAogICAgICAgICAgICAgU01JTFRpbWUgbmV4
dEZpcmVUaW1lID0gYW5pbWF0aW9uLT5uZXh0UHJvZ3Jlc3NUaW1lKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkocmV2aXNpb24g
MjUwNTE5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQg
Y2xlYXJUaW1lc1dpdGhEeW5hbWljCiAKIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnJlc2V0KCkKIHsK
LSAgICBjbGVhckFuaW1hdGVkVHlwZShtX3RhcmdldEVsZW1lbnQpOworICAgIHN0b3BBbmltYXRp
b24obV90YXJnZXRFbGVtZW50KTsKIAogICAgIG1fYWN0aXZlU3RhdGUgPSBJbmFjdGl2ZTsKICAg
ICBtX2lzV2FpdGluZ0ZvckZpcnN0SW50ZXJ2YWwgPSB0cnVlOwpAQCAtNjEwLDcgKzYxMCw3IEBA
IHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5hbWUoY28KIAogICAgIC8vIE9ubHkg
Y2xlYXIgdGhlIGFuaW1hdGVkIHR5cGUsIGlmIHdlIGhhZCBhIHRhcmdldCBiZWZvcmUuCiAgICAg
aWYgKG1fdGFyZ2V0RWxlbWVudCkKLSAgICAgICAgY2xlYXJBbmltYXRlZFR5cGUobV90YXJnZXRF
bGVtZW50KTsKKyAgICAgICAgc3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1lbnQpOwogfQogCiB2
b2lkIFNWR1NNSUxFbGVtZW50OjpzZXRUYXJnZXRFbGVtZW50KFNWR0VsZW1lbnQqIHRhcmdldCkK
QEAgLTYyNCw3ICs2MjQsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpzZXRUYXJnZXRFbGVtZW50
KFNWCiAKICAgICBpZiAobV90YXJnZXRFbGVtZW50KSB7CiAgICAgICAgIC8vIENsZWFyIHZhbHVl
cyB0aGF0IG1heSBkZXBlbmQgb24gdGhlIHByZXZpb3VzIHRhcmdldC4KLSAgICAgICAgY2xlYXJB
bmltYXRlZFR5cGUobV90YXJnZXRFbGVtZW50KTsKKyAgICAgICAgc3RvcEFuaW1hdGlvbihtX3Rh
cmdldEVsZW1lbnQpOwogICAgICAgICBkaXNjb25uZWN0Q29uZGl0aW9ucygpOwogICAgIH0KIApA
QCAtMTA3MCw5ICsxMDcwLDggQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6aXNDb250cmlidXRpbmco
U01JTAogICAgIHJldHVybiAobV9hY3RpdmVTdGF0ZSA9PSBBY3RpdmUgJiYgKGZpbGwoKSA9PSBG
aWxsRnJlZXplIHx8IGVsYXBzZWQgPD0gbV9pbnRlcnZhbEJlZ2luICsgcmVwZWF0aW5nRHVyYXRp
b24oKSkpIHx8IG1fYWN0aXZlU3RhdGUgPT0gRnJvemVuOwogfQogICAgIAotYm9vbCBTVkdTTUlM
RWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQqIHJlc3Vs
dEVsZW1lbnQsIGJvb2wgc2Vla1RvVGltZSkKK2Jvb2wgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNz
KFNNSUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVtZW50JiBmaXJzdEFuaW1hdGlvbiwgYm9vbCBz
ZWVrVG9UaW1lKQogewotICAgIEFTU0VSVChyZXN1bHRFbGVtZW50KTsKICAgICBBU1NFUlQobV90
aW1lQ29udGFpbmVyKTsKICAgICBBU1NFUlQobV9pc1dhaXRpbmdGb3JGaXJzdEludGVydmFsIHx8
IG1faW50ZXJ2YWxCZWdpbi5pc0Zpbml0ZSgpKTsKIApAQCAtMTA4NSw5ICsxMDg0LDkgQEAgYm9v
bCBTVkdTTUlMRWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZQogICAgIGlmIChlbGFwc2VkIDwg
bV9pbnRlcnZhbEJlZ2luKSB7CiAgICAgICAgIEFTU0VSVChtX2FjdGl2ZVN0YXRlICE9IEFjdGl2
ZSk7CiAgICAgICAgIGlmIChtX2FjdGl2ZVN0YXRlID09IEZyb3plbikgewotICAgICAgICAgICAg
aWYgKHRoaXMgPT0gcmVzdWx0RWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXNldEFuaW1hdGVk
VHlwZSgpOwotICAgICAgICAgICAgdXBkYXRlQW5pbWF0aW9uKG1fbGFzdFBlcmNlbnQsIG1fbGFz
dFJlcGVhdCwgcmVzdWx0RWxlbWVudCk7CisgICAgICAgICAgICBpZiAodGhpcyA9PSAmZmlyc3RB
bmltYXRpb24pCisgICAgICAgICAgICAgICAgc3RhcnRBbmltYXRpb24oKTsKKyAgICAgICAgICAg
IHVwZGF0ZUFuaW1hdGlvbihtX2xhc3RQZXJjZW50LCBtX2xhc3RSZXBlYXQpOwogICAgICAgICB9
CiAgICAgICAgIG1fbmV4dFByb2dyZXNzVGltZSA9IG1faW50ZXJ2YWxCZWdpbjsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTExOCwxNSArMTExNywxNSBAQCBib29sIFNWR1NNSUxFbGVtZW50
Ojpwcm9ncmVzcyhTTUlMVGltZSBlCiAgICAgbV9hY3RpdmVTdGF0ZSA9IGRldGVybWluZUFjdGl2
ZVN0YXRlKGVsYXBzZWQpOwogICAgIGJvb2wgYW5pbWF0aW9uSXNDb250cmlidXRpbmcgPSBpc0Nv
bnRyaWJ1dGluZyhlbGFwc2VkKTsKIAotICAgIC8vIE9ubHkgcmVzZXQgdGhlIGFuaW1hdGVkIHR5
cGUgdG8gdGhlIGJhc2UgdmFsdWUgb25jZSBmb3IgdGhlIGxvd2VzdCBwcmlvcml0eSBhbmltYXRp
b24gdGhhdCBhbmltYXRlcyBhbmQgY29udHJpYnV0ZXMgdG8gYSBwYXJ0aWN1bGFyIGVsZW1lbnQv
YXR0cmlidXRlIHBhaXIuCi0gICAgaWYgKHRoaXMgPT0gcmVzdWx0RWxlbWVudCAmJiBhbmltYXRp
b25Jc0NvbnRyaWJ1dGluZykKLSAgICAgICAgcmVzZXRBbmltYXRlZFR5cGUoKTsKLQogICAgIGlm
IChhbmltYXRpb25Jc0NvbnRyaWJ1dGluZykgeworICAgICAgICAvLyBPbmx5IHN0YXJ0IHRoZSBh
bmltYXRpb24gb2YgdGhlIGxvd2VzdCBwcmlvcml0eSBhbmltYXRpb24gdGhhdCBhbmltYXRlcyBh
bmQgY29udHJpYnV0ZXMgdG8gYSBwYXJ0aWN1bGFyIGVsZW1lbnQvYXR0cmlidXRlIHBhaXIuCisg
ICAgICAgIGlmICh0aGlzID09ICZmaXJzdEFuaW1hdGlvbikKKyAgICAgICAgICAgIHN0YXJ0QW5p
bWF0aW9uKCk7CisKICAgICAgICAgaWYgKG9sZEFjdGl2ZVN0YXRlID09IEluYWN0aXZlKQogICAg
ICAgICAgICAgc3RhcnRlZEFjdGl2ZUludGVydmFsKCk7CiAKLSAgICAgICAgdXBkYXRlQW5pbWF0
aW9uKHBlcmNlbnQsIHJlcGVhdCwgcmVzdWx0RWxlbWVudCk7CisgICAgICAgIHVwZGF0ZUFuaW1h
dGlvbihwZXJjZW50LCByZXBlYXQpOwogICAgICAgICBtX2xhc3RQZXJjZW50ID0gcGVyY2VudDsK
ICAgICAgICAgbV9sYXN0UmVwZWF0ID0gcmVwZWF0OwogICAgIH0KQEAgLTExMzUsNyArMTEzNCw3
IEBAIGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGUKICAgICAgICAgc21p
bEVuZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogICAgICAgICBlbmRl
ZEFjdGl2ZUludGVydmFsKCk7CiAgICAgICAgIGlmIChtX2FjdGl2ZVN0YXRlICE9IEZyb3plbikK
LSAgICAgICAgICAgIGNsZWFyQW5pbWF0ZWRUeXBlKG1fdGFyZ2V0RWxlbWVudCk7CisgICAgICAg
ICAgICBzdG9wQW5pbWF0aW9uKG1fdGFyZ2V0RWxlbWVudCk7CiAgICAgfSBlbHNlIGlmIChvbGRB
Y3RpdmVTdGF0ZSAhPSBBY3RpdmUgJiYgbV9hY3RpdmVTdGF0ZSA9PSBBY3RpdmUpCiAgICAgICAg
IHNtaWxCZWdpbkV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCShyZXZp
c2lvbiAyNTA1MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIFNNSUxU
aW1lIHNpbXBsZUR1cmF0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIHNlZWtUb0ludGVydmFsQ29y
cmVzcG9uZGluZ1RvVGltZShTTUlMVGltZSBlbGFwc2VkKTsKLSAgICBib29sIHByb2dyZXNzKFNN
SUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRzRWxlbWVudCwgYm9vbCBzZWVr
VG9UaW1lKTsKKyAgICBib29sIHByb2dyZXNzKFNNSUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVt
ZW50JiBmaXJzdEFuaW1hdGlvbiwgYm9vbCBzZWVrVG9UaW1lKTsKICAgICBTTUlMVGltZSBuZXh0
UHJvZ3Jlc3NUaW1lKCkgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0KCk7CkBAIC05OCw4ICs5OCw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERvY3VtZW50T3JkZXJJbmRleCh1bnNpZ25lZCBpbmRl
eCkgeyBtX2RvY3VtZW50T3JkZXJJbmRleCA9IGluZGV4OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNBZGRpdGl2ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRlZFR5
cGUoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQW5pbWF0ZWRUeXBlKFNWR0VsZW1lbnQq
IHRhcmdldEVsZW1lbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24oU1ZHRWxlbWVudCogdGFyZ2V0RWxl
bWVudCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpID0gMDsK
IAogICAgIHZvaWQgY29ubmVjdENvbmRpdGlvbnMoKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpID0gMDsKICAg
ICB2b2lkIGVuZGVkQWN0aXZlSW50ZXJ2YWwoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5p
bWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqIHJl
c3VsdEVsZW1lbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0
IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCkgPSAwOwogCiAgICAgc3RhdGljIGJvb2wgaXNTdXBw
b3J0ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIFF1YWxpZmllZE5hbWUg
Y29uc3RydWN0QXR0cmlidXRlTmFtZSgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382341</attachid>
            <date>2019-10-30 12:42:39 -0700</date>
            <delta_ts>2019-10-30 15:15:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202052-20191030124238.patch</filename>
            <type>text/plain</type>
            <size>15419</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1MTc5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEwLTMwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHRo
ZSBhcmd1bWVudCAncmVzdWx0RWxlbWVudCcgZnJvbSB0aGUgU1ZHIGFuaW1hdGlvbiBmdW5jdGlv
bnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjA1
MgorCisgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAgVGhp
cyBpcyBhIGNsZWFuLXVwIHBhdGNoLCB3aGljaCBkb2VzIHRoZSBmb2xsb3dpbmc6CisKKyAgICAg
ICAgIC0tIEl0IHJlbW92ZXMgdGhlIGFyZ3VtZW50ICdyZXN1bHRFbGVtZW50JyBmcm9tIGFsbCB0
aGUgU1ZHIGFuaW1hdGlvbgorICAgICAgICAgICBmdW5jdGlvbnMgZXhjZXB0IGZyb20gU1ZHU01J
TEVsZW1lbnQ6OnByb2dyZXNzKCkuIEluIHRoaXMgZnVuY3Rpb24sIHdlCisgICAgICAgICAgIG5l
ZWQgdG8gc3RhcnQgdGhlIGFuaW1hdGlvbiBvbmx5IHdpdGggdGhlIGZpcnN0IGFuaW1hdGlvbi4K
KworICAgICAgICAgLS0gSXQgcmVuYW1lcyByZXNldEFuaW1hdGVkVHlwZSgpIGFuZCBjbGVhckFu
aW1hdGVkVHlwZSgpIHRvIHN0YXJ0QW5pbWF0aW9uKCkKKyAgICAgICAgICAgYW5kIHN0b3BBbmlt
YXRpb24oKSByZXNwZWN0aXZlbHkuIFRoZXNlIGZ1bmN0aW9ucyB3ZXJlIG5hbWVkIGZvciB0aGUK
KyAgICAgICAgICAgdHlwZSBTVkdBbmltYXRlZFR5cGUgd2hpY2ggaGFkIGJlZW4gZGVsZXRlZC4g
VGhlIHJlYWwgcHVycG9zZSBvZiB0aGVzZQorICAgICAgICAgICBmdW5jdGlvbnMgaXMgdG8gc3Rh
cnQvc3RvcCB0aGUgYW5pbWF0aW9uLgorCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudEJhc2U6OnN0YXJ0
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVu
dEJhc2U6OnN0b3BBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1l
bnRCYXNlOjpyZXNldEFuaW1hdGVkVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlRWxlbWVudEJhc2U6OmNsZWFyQW5pbWF0ZWRUeXBlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjpzdGFydEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6c3RvcEFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6cmVzZXRBbmltYXRlZFR5cGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNsZWFyQW5pbWF0ZWRU
eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb24pOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRpb25FbGVtZW50Lmg6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TTUlMVGltZUNv
bnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTTUlMVGltZUNvbnRhaW5lcjo6dXBkYXRl
QW5pbWF0aW9ucyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cmVzZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU01JTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU01JTEVsZW1lbnQ6OnNldFRhcmdldEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50Lmg6CisKIDIwMTktMTAtMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgSW50cm9kdWNlIFdvcmtlckV2ZW50TG9vcCBhbmQgdXNlIGl0IGluIEZl
dGNoQm9keU93bmVyOjpydW5OZXR3b3JrVGFza1doZW5Qb3NzaWJsZQpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDI1MTc3NykK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDYsNyArMTQ2LDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudEJhc2U6OmNh
bGN1bGF0ZVRvQQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTVkdBbmltYXRlRWxlbWVu
dEJhc2U6OnJlc2V0QW5pbWF0ZWRUeXBlKCkKK3ZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpz
dGFydEFuaW1hdGlvbigpCiB7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KCkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6cmVz
ZXRBbmltYXRlCiAgICAgICAgIHByb3RlY3RlZEFuaW1hdG9yLT5zdGFydCh0YXJnZXRFbGVtZW50
KCkpOwogfQogCi12b2lkIFNWR0FuaW1hdGVFbGVtZW50QmFzZTo6Y2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZShmbG9hdCBwcm9ncmVzcywgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNWR1NNSUxFbGVtZW50
KikKK3ZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZs
b2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCkKIHsKICAgICBpZiAoIXRhcmdldEVs
ZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgU1ZHQW5p
bWF0ZUVsZW1lbnRCYXNlOjphcHBseVJlc3VsdHMKICAgICAgICAgYW5pbWF0b3ItPmFwcGx5KHRh
cmdldEVsZW1lbnQoKSk7CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlOjpjbGVhckFu
aW1hdGVkVHlwZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KQordm9pZCBTVkdBbmltYXRlRWxl
bWVudEJhc2U6OnN0b3BBbmltYXRpb24oU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkKIHsKICAg
ICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNlLmgJKHJldmlzaW9uIDI1MTc3NykKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudEJhc2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNTMsMTAgKzUzLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBjYWxjdWxhdGVGcm9tQW5kQnlW
YWx1ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKSBv
dmVycmlkZTsKICAgICBib29sIGNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3Qg
U3RyaW5nJiB0b0F0RW5kT2ZEdXJhdGlvblN0cmluZykgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJl
c2V0QW5pbWF0ZWRUeXBlKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHByb2dyZXNzLCB1bnNpZ25lZCByZXBlYXRDb3VudCwgU1ZHU01JTEVsZW1lbnQq
IHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgc3RhcnRBbmltYXRpb24oKSBvdmVy
cmlkZTsKKyAgICB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcHJvZ3Jlc3MsIHVu
c2lnbmVkIHJlcGVhdENvdW50KSBvdmVycmlkZTsKICAgICB2b2lkIGFwcGx5UmVzdWx0c1RvVGFy
Z2V0KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjbGVhckFuaW1hdGVkVHlwZShTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50KSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3BBbmltYXRpb24oU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCkgb3ZlcnJpZGU7CiAgICAgT3B0aW9uYWw8ZmxvYXQ+IGNhbGN1bGF0
ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
Zykgb3ZlcnJpZGU7CiAKICAgICBib29sIGhhc0ludmFsaWRDU1NBdHRyaWJ1dGVUeXBlKCkgY29u
c3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI1MTc3NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
TW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lk
IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1cGRhdGVBbmltCiAgICAgdXBkYXRlQW5pbWF0aW9u
TW9kZSgpOwogfQogCi12b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpyZXNldEFuaW1hdGVk
VHlwZSgpCit2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpzdGFydEFuaW1hdGlvbigpCiB7
CiAgICAgaWYgKCFoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTUwLDcgKzE1MCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnJlc2V0QW5pbWEK
ICAgICAgICAgdHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsKIH0KIAotdm9pZCBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6Y2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkKK3ZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnN0b3BBbmltYXRpb24oU1ZHRWxlbWVu
dCogdGFyZ2V0RWxlbWVudCkKIHsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIwOCw3ICsyMDgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojpi
dWlsZFRyYW5zCiAgICAgdHJhbnNmb3JtLT5yb3RhdGUoYW5nbGUpOwogfQogCi12b2lkIFNWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdTTUlMRWxlbWVudCopCit2b2lkIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2Us
IHVuc2lnbmVkIHJlcGVhdENvdW50KQogewogICAgIGF1dG8gdGFyZ2V0RWxlbWVudCA9IG1ha2VS
ZWZQdHIodGhpcy0+dGFyZ2V0RWxlbWVudCgpKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuaAkocmV2
aXNpb24gMjUxNzc3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEyICs0MSwxMiBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmlu
ZyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXNldEFuaW1hdGVkVHlwZSgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgY2xlYXJBbmltYXRlZFR5cGUoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBzdGFydEFuaW1hdGlvbigpIG92ZXJyaWRlOworICAgIHZvaWQgc3Rv
cEFuaW1hdGlvbihTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50KSBvdmVycmlkZTsKICAgICBib29s
IGNhbGN1bGF0ZVRvQXRFbmRPZkR1cmF0aW9uVmFsdWUoY29uc3QgU3RyaW5nJiB0b0F0RW5kT2ZE
dXJhdGlvblN0cmluZykgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1
ZXMoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSBvdmVy
cmlkZTsKICAgICBib29sIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpIG92ZXJyaWRlOwotICAgIHZvaWQgY2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOworICAgIHZvaWQgY2Fs
Y3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpIG92ZXJyaWRlOwog
ICAgIE9wdGlvbmFsPGZsb2F0PiBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpIG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTE3NzcpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2Miw3ICs1NjIsNyBAQCB2b2lkIFNWR0FuaW1hdGlvbkVsZW1lbnQ6OnN0YXJ0ZWRB
Y3RpdmVJCiAgICAgICAgIG1fYW5pbWF0aW9uVmFsaWQgPSBjYWxjTW9kZSA9PSBDYWxjTW9kZTo6
UGFjZWQgfHwgIWhhc0F0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oU1ZHTmFtZXM6Omtl
eVBvaW50c0F0dHIpIHx8IChtX2tleVRpbWVzLnNpemUoKSA+IDEgJiYgbV9rZXlUaW1lcy5zaXpl
KCkgPT0gbV9rZXlQb2ludHMuc2l6ZSgpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRpb25FbGVtZW50
Ojp1cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQsIFNW
R1NNSUxFbGVtZW50KiByZXN1bHRFbGVtZW50KQordm9pZCBTVkdBbmltYXRpb25FbGVtZW50Ojp1
cGRhdGVBbmltYXRpb24oZmxvYXQgcGVyY2VudCwgdW5zaWduZWQgcmVwZWF0Q291bnQpCiB7ICAg
IAogICAgIGlmICghbV9hbmltYXRpb25WYWxpZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNTkwLDcg
KzU5MCw3IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6dXBkYXRlQW5pbWF0aW8KICAgICBl
bHNlCiAgICAgICAgIGVmZmVjdGl2ZVBlcmNlbnQgPSBwZXJjZW50OwogCi0gICAgY2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZShlZmZlY3RpdmVQZXJjZW50LCByZXBlYXRDb3VudCwgcmVzdWx0RWxlbWVu
dCk7CisgICAgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShlZmZlY3RpdmVQZXJjZW50LCByZXBlYXRD
b3VudCk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6Y29tcHV0ZUNTU1Byb3BlcnR5
VmFsdWUoU1ZHRWxlbWVudCogZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCwgU3RyaW5nJiB2YWx1
ZVN0cmluZykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnQuaAko
cmV2aXNpb24gMjUxNzc3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGlvbkVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDcgKzEwMiw3IEBAIHByb3RlY3RlZDoKIAogICAg
IC8vIGZyb20gU1ZHU01JTEVsZW1lbnQKICAgICB2b2lkIHN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2ln
bmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVsZW1lbnQpIG92ZXJyaWRlOworICAg
IHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCkgb3Zl
cnJpZGU7CiAKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fZnJvbVByb3BlcnR5VmFs
dWVUeXBlIHsgUmVndWxhclByb3BlcnR5VmFsdWUgfTsKICAgICBBbmltYXRlZFByb3BlcnR5VmFs
dWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSB7IFJlZ3VsYXJQcm9wZXJ0eVZhbHVlIH07CkBA
IC0xMjAsNyArMTIwLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgY2FsY3VsYXRlVG9B
dEVuZE9mRHVyYXRpb25WYWx1ZShjb25zdCBTdHJpbmcmIHRvQXRFbmRPZkR1cmF0aW9uU3RyaW5n
KSA9IDA7CiAgICAgdmlydHVhbCBib29sIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBTVkdT
TUlMRWxlbWVudCogcmVzdWx0RWxlbWVudCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdENvdW50KSA9IDA7
CiAgICAgdmlydHVhbCBPcHRpb25hbDxmbG9hdD4gY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3Ry
aW5nJiAvKmZyb21TdHJpbmcqLywgY29uc3QgU3RyaW5nJiAvKnRvU3RyaW5nKi8pID0gMDsKIAog
ICAgIHZvaWQgY3VycmVudFZhbHVlc0ZvclZhbHVlc0FuaW1hdGlvbihmbG9hdCBwZXJjZW50LCBm
bG9hdCYgZWZmZWN0aXZlUGVyY2VudCwgU3RyaW5nJiBmcm9tLCBTdHJpbmcmIHRvKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU01JTFRpbWVDb250YWluZXIu
Y3BwCShyZXZpc2lvbiAyNTE3NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NN
SUxUaW1lQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDcgKzI3OCw3IEBAIHZv
aWQgU01JTFRpbWVDb250YWluZXI6OnVwZGF0ZUFuaW1hdGlvbnMKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGNhbGN1bGF0ZSB0aGUgY29udHJpYnV0aW9uIGZyb20g
dGhlIGFuaW1hdGlvbiBhbmQgYWRkIGl0IHRvIHRoZSByZXN1bHRzRWxlbWVudC4KLSAgICAgICAg
ICAgIGlmICghYW5pbWF0aW9uLT5wcm9ncmVzcyhlbGFwc2VkLCBmaXJzdEFuaW1hdGlvbi5nZXQo
KSwgc2Vla1RvVGltZSkgJiYgZmlyc3RBbmltYXRpb24gPT0gYW5pbWF0aW9uKQorICAgICAgICAg
ICAgaWYgKCFhbmltYXRpb24tPnByb2dyZXNzKGVsYXBzZWQsICpmaXJzdEFuaW1hdGlvbiwgc2Vl
a1RvVGltZSkgJiYgZmlyc3RBbmltYXRpb24gPT0gYW5pbWF0aW9uKQogICAgICAgICAgICAgICAg
IGZpcnN0QW5pbWF0aW9uID0gbnVsbHB0cjsKIAogICAgICAgICAgICAgU01JTFRpbWUgbmV4dEZp
cmVUaW1lID0gYW5pbWF0aW9uLT5uZXh0UHJvZ3Jlc3NUaW1lKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkocmV2aXNpb24gMjUx
Nzc3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0NSw3ICsyNDUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgY2xl
YXJUaW1lc1dpdGhEeW5hbWljCiAKIHZvaWQgU1ZHU01JTEVsZW1lbnQ6OnJlc2V0KCkKIHsKLSAg
ICBjbGVhckFuaW1hdGVkVHlwZShtX3RhcmdldEVsZW1lbnQpOworICAgIHN0b3BBbmltYXRpb24o
bV90YXJnZXRFbGVtZW50KTsKIAogICAgIG1fYWN0aXZlU3RhdGUgPSBJbmFjdGl2ZTsKICAgICBt
X2lzV2FpdGluZ0ZvckZpcnN0SW50ZXJ2YWwgPSB0cnVlOwpAQCAtNjEwLDcgKzYxMCw3IEBAIHZv
aWQgU1ZHU01JTEVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5hbWUoY28KIAogICAgIC8vIE9ubHkgY2xl
YXIgdGhlIGFuaW1hdGVkIHR5cGUsIGlmIHdlIGhhZCBhIHRhcmdldCBiZWZvcmUuCiAgICAgaWYg
KG1fdGFyZ2V0RWxlbWVudCkKLSAgICAgICAgY2xlYXJBbmltYXRlZFR5cGUobV90YXJnZXRFbGVt
ZW50KTsKKyAgICAgICAgc3RvcEFuaW1hdGlvbihtX3RhcmdldEVsZW1lbnQpOwogfQogCiB2b2lk
IFNWR1NNSUxFbGVtZW50OjpzZXRUYXJnZXRFbGVtZW50KFNWR0VsZW1lbnQqIHRhcmdldCkKQEAg
LTYyNCw3ICs2MjQsNyBAQCB2b2lkIFNWR1NNSUxFbGVtZW50OjpzZXRUYXJnZXRFbGVtZW50KFNW
CiAKICAgICBpZiAobV90YXJnZXRFbGVtZW50KSB7CiAgICAgICAgIC8vIENsZWFyIHZhbHVlcyB0
aGF0IG1heSBkZXBlbmQgb24gdGhlIHByZXZpb3VzIHRhcmdldC4KLSAgICAgICAgY2xlYXJBbmlt
YXRlZFR5cGUobV90YXJnZXRFbGVtZW50KTsKKyAgICAgICAgc3RvcEFuaW1hdGlvbihtX3Rhcmdl
dEVsZW1lbnQpOwogICAgICAgICBkaXNjb25uZWN0Q29uZGl0aW9ucygpOwogICAgIH0KIApAQCAt
MTA3MCw5ICsxMDcwLDggQEAgYm9vbCBTVkdTTUlMRWxlbWVudDo6aXNDb250cmlidXRpbmcoU01J
TAogICAgIHJldHVybiAobV9hY3RpdmVTdGF0ZSA9PSBBY3RpdmUgJiYgKGZpbGwoKSA9PSBGaWxs
RnJlZXplIHx8IGVsYXBzZWQgPD0gbV9pbnRlcnZhbEJlZ2luICsgcmVwZWF0aW5nRHVyYXRpb24o
KSkpIHx8IG1fYWN0aXZlU3RhdGUgPT0gRnJvemVuOwogfQogICAgIAotYm9vbCBTVkdTTUlMRWxl
bWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZWxhcHNlZCwgU1ZHU01JTEVsZW1lbnQqIHJlc3VsdEVs
ZW1lbnQsIGJvb2wgc2Vla1RvVGltZSkKK2Jvb2wgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNN
SUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVtZW50JiBmaXJzdEFuaW1hdGlvbiwgYm9vbCBzZWVr
VG9UaW1lKQogewotICAgIEFTU0VSVChyZXN1bHRFbGVtZW50KTsKICAgICBBU1NFUlQobV90aW1l
Q29udGFpbmVyKTsKICAgICBBU1NFUlQobV9pc1dhaXRpbmdGb3JGaXJzdEludGVydmFsIHx8IG1f
aW50ZXJ2YWxCZWdpbi5pc0Zpbml0ZSgpKTsKIApAQCAtMTA4NSw5ICsxMDg0LDkgQEAgYm9vbCBT
VkdTTUlMRWxlbWVudDo6cHJvZ3Jlc3MoU01JTFRpbWUgZQogICAgIGlmIChlbGFwc2VkIDwgbV9p
bnRlcnZhbEJlZ2luKSB7CiAgICAgICAgIEFTU0VSVChtX2FjdGl2ZVN0YXRlICE9IEFjdGl2ZSk7
CiAgICAgICAgIGlmIChtX2FjdGl2ZVN0YXRlID09IEZyb3plbikgewotICAgICAgICAgICAgaWYg
KHRoaXMgPT0gcmVzdWx0RWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXNldEFuaW1hdGVkVHlw
ZSgpOwotICAgICAgICAgICAgdXBkYXRlQW5pbWF0aW9uKG1fbGFzdFBlcmNlbnQsIG1fbGFzdFJl
cGVhdCwgcmVzdWx0RWxlbWVudCk7CisgICAgICAgICAgICBpZiAodGhpcyA9PSAmZmlyc3RBbmlt
YXRpb24pCisgICAgICAgICAgICAgICAgc3RhcnRBbmltYXRpb24oKTsKKyAgICAgICAgICAgIHVw
ZGF0ZUFuaW1hdGlvbihtX2xhc3RQZXJjZW50LCBtX2xhc3RSZXBlYXQpOwogICAgICAgICB9CiAg
ICAgICAgIG1fbmV4dFByb2dyZXNzVGltZSA9IG1faW50ZXJ2YWxCZWdpbjsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTExOCwxNSArMTExNywxNSBAQCBib29sIFNWR1NNSUxFbGVtZW50Ojpw
cm9ncmVzcyhTTUlMVGltZSBlCiAgICAgbV9hY3RpdmVTdGF0ZSA9IGRldGVybWluZUFjdGl2ZVN0
YXRlKGVsYXBzZWQpOwogICAgIGJvb2wgYW5pbWF0aW9uSXNDb250cmlidXRpbmcgPSBpc0NvbnRy
aWJ1dGluZyhlbGFwc2VkKTsKIAotICAgIC8vIE9ubHkgcmVzZXQgdGhlIGFuaW1hdGVkIHR5cGUg
dG8gdGhlIGJhc2UgdmFsdWUgb25jZSBmb3IgdGhlIGxvd2VzdCBwcmlvcml0eSBhbmltYXRpb24g
dGhhdCBhbmltYXRlcyBhbmQgY29udHJpYnV0ZXMgdG8gYSBwYXJ0aWN1bGFyIGVsZW1lbnQvYXR0
cmlidXRlIHBhaXIuCi0gICAgaWYgKHRoaXMgPT0gcmVzdWx0RWxlbWVudCAmJiBhbmltYXRpb25J
c0NvbnRyaWJ1dGluZykKLSAgICAgICAgcmVzZXRBbmltYXRlZFR5cGUoKTsKLQogICAgIGlmIChh
bmltYXRpb25Jc0NvbnRyaWJ1dGluZykgeworICAgICAgICAvLyBPbmx5IHN0YXJ0IHRoZSBhbmlt
YXRpb24gb2YgdGhlIGxvd2VzdCBwcmlvcml0eSBhbmltYXRpb24gdGhhdCBhbmltYXRlcyBhbmQg
Y29udHJpYnV0ZXMgdG8gYSBwYXJ0aWN1bGFyIGVsZW1lbnQvYXR0cmlidXRlIHBhaXIuCisgICAg
ICAgIGlmICh0aGlzID09ICZmaXJzdEFuaW1hdGlvbikKKyAgICAgICAgICAgIHN0YXJ0QW5pbWF0
aW9uKCk7CisKICAgICAgICAgaWYgKG9sZEFjdGl2ZVN0YXRlID09IEluYWN0aXZlKQogICAgICAg
ICAgICAgc3RhcnRlZEFjdGl2ZUludGVydmFsKCk7CiAKLSAgICAgICAgdXBkYXRlQW5pbWF0aW9u
KHBlcmNlbnQsIHJlcGVhdCwgcmVzdWx0RWxlbWVudCk7CisgICAgICAgIHVwZGF0ZUFuaW1hdGlv
bihwZXJjZW50LCByZXBlYXQpOwogICAgICAgICBtX2xhc3RQZXJjZW50ID0gcGVyY2VudDsKICAg
ICAgICAgbV9sYXN0UmVwZWF0ID0gcmVwZWF0OwogICAgIH0KQEAgLTExMzUsNyArMTEzNCw3IEBA
IGJvb2wgU1ZHU01JTEVsZW1lbnQ6OnByb2dyZXNzKFNNSUxUaW1lIGUKICAgICAgICAgc21pbEVu
ZEV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogICAgICAgICBlbmRlZEFj
dGl2ZUludGVydmFsKCk7CiAgICAgICAgIGlmIChtX2FjdGl2ZVN0YXRlICE9IEZyb3plbikKLSAg
ICAgICAgICAgIGNsZWFyQW5pbWF0ZWRUeXBlKG1fdGFyZ2V0RWxlbWVudCk7CisgICAgICAgICAg
ICBzdG9wQW5pbWF0aW9uKG1fdGFyZ2V0RWxlbWVudCk7CiAgICAgfSBlbHNlIGlmIChvbGRBY3Rp
dmVTdGF0ZSAhPSBBY3RpdmUgJiYgbV9hY3RpdmVTdGF0ZSA9PSBBY3RpdmUpCiAgICAgICAgIHNt
aWxCZWdpbkV2ZW50U2VuZGVyKCkuZGlzcGF0Y2hFdmVudFNvb24oKnRoaXMpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5oCShyZXZpc2lv
biAyNTE3NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIFNNSUxUaW1l
IHNpbXBsZUR1cmF0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIHNlZWtUb0ludGVydmFsQ29ycmVz
cG9uZGluZ1RvVGltZShTTUlMVGltZSBlbGFwc2VkKTsKLSAgICBib29sIHByb2dyZXNzKFNNSUxU
aW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVtZW50KiByZXN1bHRzRWxlbWVudCwgYm9vbCBzZWVrVG9U
aW1lKTsKKyAgICBib29sIHByb2dyZXNzKFNNSUxUaW1lIGVsYXBzZWQsIFNWR1NNSUxFbGVtZW50
JiBmaXJzdEFuaW1hdGlvbiwgYm9vbCBzZWVrVG9UaW1lKTsKICAgICBTTUlMVGltZSBuZXh0UHJv
Z3Jlc3NUaW1lKCkgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0KCk7CkBAIC05OCw4ICs5OCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldERvY3VtZW50T3JkZXJJbmRleCh1bnNpZ25lZCBpbmRleCkg
eyBtX2RvY3VtZW50T3JkZXJJbmRleCA9IGluZGV4OyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNB
ZGRpdGl2ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzZXRBbmltYXRlZFR5cGUo
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyQW5pbWF0ZWRUeXBlKFNWR0VsZW1lbnQqIHRh
cmdldEVsZW1lbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRBbmltYXRpb24oKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHN0b3BBbmltYXRpb24oU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVu
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVJlc3VsdHNUb1RhcmdldCgpID0gMDsKIAog
ICAgIHZvaWQgY29ubmVjdENvbmRpdGlvbnMoKTsKQEAgLTEyOSw3ICsxMjksNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0ZWRBY3RpdmVJbnRlcnZhbCgpID0gMDsKICAgICB2
b2lkIGVuZGVkQWN0aXZlSW50ZXJ2YWwoKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0
aW9uKGZsb2F0IHBlcmNlbnQsIHVuc2lnbmVkIHJlcGVhdCwgU1ZHU01JTEVsZW1lbnQqIHJlc3Vs
dEVsZW1lbnQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9uKGZsb2F0IHBl
cmNlbnQsIHVuc2lnbmVkIHJlcGVhdCkgPSAwOwogCiAgICAgc3RhdGljIGJvb2wgaXNTdXBwb3J0
ZWRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIFF1YWxpZmllZE5hbWUgY29u
c3RydWN0QXR0cmlidXRlTmFtZSgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>