<?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>206890</bug_id>
          
          <creation_ts>2020-01-28 10:01:15 -0800</creation_ts>
          <short_desc>[Web Animations] Animations should run accelerated even if other animations targeting the same element are not accelerated</short_desc>
          <delta_ts>2020-01-29 14:12:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1612017</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-28 10:01:15 -0800</bug_when>
    <thetext>[Web Animations] Animations should run accelerated even if other animations targeting the same element are not accelerated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612057</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-28 11:02:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/58961750&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612071</commentid>
    <comment_count>2</comment_count>
      <attachid>389037</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-28 11:07:07 -0800</bug_when>
    <thetext>Created attachment 389037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612146</commentid>
    <comment_count>3</comment_count>
      <attachid>389037</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-01-28 13:24:05 -0800</bug_when>
    <thetext>Comment on attachment 389037
Patch

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

&gt; Source/WebCore/animation/DocumentTimeline.cpp:600
&gt; +            if (keyframeEffect-&gt;isCurrentlyAffectingProperty(property, true))

That &apos;true&apos; argument is a boolean trap. I&apos;ve no idea what it means here.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:804
&gt; +    computeAcceleratedPropertiesMembership();

&quot;membership&quot; is weird.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:1132
&gt; +    if (!hasSomeAcceleratedProperties &amp;&amp; !hasSomeUnacceleratedProperties)
&gt; +        m_acceleratedPropertiesMembership = AcceleratedProperties::None;
&gt; +    m_acceleratedPropertiesMembership = hasSomeUnacceleratedProperties ? AcceleratedProperties::Some : AcceleratedProperties::All;

Awkward. Better written with an else. Or just a small 2x2 lookup table.

&gt; Source/WebCore/animation/KeyframeEffect.h:188
&gt; +    AcceleratedProperties m_acceleratedPropertiesMembership { AcceleratedProperties::None };

&quot;Membership&quot; is weird. Maybe m_acceleratedPropertiesState.

&gt; Source/WebCore/animation/KeyframeEffect.h:190
&gt; +    bool m_isRunningAccelerated { false };

What does this mean? Does it mean some or all properties are being accelerated? Maybe rename for clarity.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2788
&gt; +        if (auto* effectsStack = element-&gt;keyframeEffectStack()) {
&gt; +            return (effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyOpacity)
&gt; +                &amp;&amp; (usesCompositing() || (m_compositingTriggers &amp; ChromeClient::AnimatedOpacityTrigger)))
&gt; +                || effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyFilter)
&gt; +#if ENABLE(FILTERS_LEVEL_2)
&gt; +                || effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyWebkitBackdropFilter)
&gt; +#endif
&gt; +                || effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyTransform);

Can this be hidden behind a function on the Timeline? Also, can you avoid iterating all the effects for each property?

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:3349
&gt;      return renderer.animation().isRunningAnimationOnRenderer(renderer, CSSPropertyTransform);

Does renderer.animation() do anything for Web Animations? Should it be removed, or made to work with Web Animations?

&gt; LayoutTests/webanimations/partly-accelerated-transition-by-removing-property-expected.txt:10
&gt; +          (position 108.00 13.00)

It&apos;s better to put the target before other elements, or give it position:absolute so that these numbers are not sensitive to font size, which can differ between platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612418</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-29 06:28:20 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 389037 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=389037&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/animation/DocumentTimeline.cpp:600
&gt; &gt; +            if (keyframeEffect-&gt;isCurrentlyAffectingProperty(property, true))
&gt; 
&gt; That &apos;true&apos; argument is a boolean trap. I&apos;ve no idea what it means here.

Replacing it with an `accelerated` argument and `enum class Accelerated : uint8_t { Yes, No }`.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:804
&gt; &gt; +    computeAcceleratedPropertiesMembership();
&gt; 
&gt; &quot;membership&quot; is weird.

I&apos;m replacing it with &quot;state&quot; as suggested below.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:1132
&gt; &gt; +    if (!hasSomeAcceleratedProperties &amp;&amp; !hasSomeUnacceleratedProperties)
&gt; &gt; +        m_acceleratedPropertiesMembership = AcceleratedProperties::None;
&gt; &gt; +    m_acceleratedPropertiesMembership = hasSomeUnacceleratedProperties ? AcceleratedProperties::Some : AcceleratedProperties::All;
&gt; 
&gt; Awkward. Better written with an else. Or just a small 2x2 lookup table.

Rewriting as if / else if / else to cover the three possible values, it is clearer.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.h:188
&gt; &gt; +    AcceleratedProperties m_acceleratedPropertiesMembership { AcceleratedProperties::None };
&gt; 
&gt; &quot;Membership&quot; is weird. Maybe m_acceleratedPropertiesState.

Yes, I&apos;m making that change.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.h:190
&gt; &gt; +    bool m_isRunningAccelerated { false };
&gt; 
&gt; What does this mean? Does it mean some or all properties are being
&gt; accelerated? Maybe rename for clarity.

It actually doesn&apos;t matter in the code. I&apos;m not sure how best to rename it that would anything clearer.

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:2788
&gt; &gt; +        if (auto* effectsStack = element-&gt;keyframeEffectStack()) {
&gt; &gt; +            return (effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyOpacity)
&gt; &gt; +                &amp;&amp; (usesCompositing() || (m_compositingTriggers &amp; ChromeClient::AnimatedOpacityTrigger)))
&gt; &gt; +                || effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyFilter)
&gt; &gt; +#if ENABLE(FILTERS_LEVEL_2)
&gt; &gt; +                || effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyWebkitBackdropFilter)
&gt; &gt; +#endif
&gt; &gt; +                || effectsStack-&gt;isCurrentlyAffectingProperty(CSSPropertyTransform);
&gt; 
&gt; Can this be hidden behind a function on the Timeline? Also, can you avoid
&gt; iterating all the effects for each property?

So, the timeline isn&apos;t actually the right place to host this, and timelines encapsulate more information than it should and I&apos;ve been progressively moving things onto KeyframeEffectStack. Indeed, an effect stack could combine several effects belonging to animations registered with different timelines.

I think this kind of logic belongs in the rendering code more than in the animation code. I&apos;d rather keep it here.

&gt; &gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:3349
&gt; &gt;      return renderer.animation().isRunningAnimationOnRenderer(renderer, CSSPropertyTransform);
&gt; 
&gt; Does renderer.animation() do anything for Web Animations? Should it be
&gt; removed, or made to work with Web Animations?

There is a renderer.documentTimeline(). In this case though, we should return `false` if the runtime flag to have CSS Animations as Web Animations is false before running this code. Making that change.

&gt; &gt; LayoutTests/webanimations/partly-accelerated-transition-by-removing-property-expected.txt:10
&gt; &gt; +          (position 108.00 13.00)
&gt; 
&gt; It&apos;s better to put the target before other elements, or give it
&gt; position:absolute so that these numbers are not sensitive to font size,
&gt; which can differ between platforms.

Good point, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612427</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-29 07:03:34 -0800</bug_when>
    <thetext>So a few tests are failing in WK1 alone, for instance LayoutTests/webanimations/opacity-animation-yields-compositing.html. They are failing because in RenderLayerCompositor::requiresCompositingForAnimation(), usesCompositing() returns false while in WK2 it returns true. Trying to understand why.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612429</commentid>
    <comment_count>6</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-29 07:14:32 -0800</bug_when>
    <thetext>Hmm, so in RenderLayerCompositor::cacheAcceleratedCompositingFlags(), m_forceCompositingMode is set to false because m_renderView.settings().forceCompositingMode() is false, but it&apos;s true in WK2, or at least in WKTR vs. DRT. Simon, do you know what&apos;s happening?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612559</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-29 11:04:21 -0800</bug_when>
    <thetext>OK, as it turns out, in WK1 we don&apos;t use compositing when opacity is the only potentially accelerated property to be animated. That explains all the WK1 failures but one, for which I have a fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612560</commentid>
    <comment_count>8</comment_count>
      <attachid>389159</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-29 11:08:39 -0800</bug_when>
    <thetext>Created attachment 389159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612668</commentid>
    <comment_count>9</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-01-29 14:12:03 -0800</bug_when>
    <thetext>Committed r255383: &lt;https://trac.webkit.org/changeset/255383&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389037</attachid>
            <date>2020-01-28 11:07:07 -0800</date>
            <delta_ts>2020-01-29 11:08:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206890-20200128200706.patch</filename>
            <type>text/plain</type>
            <size>37943</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAyZDU2MmJhMGUyNzI0
ODhiOGIyZDc1YzNmYTlmYWM0OGVlZTM5Ni4uNmM3MWFjNDY2NWJhOTVjMjRjZWZmYWEzMzk3NWQx
YzUzMjllNmJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTAxLTI4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBBbmltYXRpb25zIHNob3VsZCBydW4gYWNjZWxlcmF0ZWQgZXZlbiBpZiBvdGhlciBhbmltYXRp
b25zIHRhcmdldGluZyB0aGUgc2FtZSBlbGVtZW50IGFyZSBub3QgYWNjZWxlcmF0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjg5MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTg5NjE3NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0
eS1zZXBhcmF0ZS1hbmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLmh0bWwKKworICAgICAgICBJ
biB0aGUgV2ViIEFuaW1hdGlvbnMgaW1wbGVtZW50YXRpb24sIHdoZW4gYW4gZWxlbWVudCBoYXMg
c29tZSBhbmltYXRlZCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFjY2VsZXJhdGVkIGFuZCBzb21l
IHRoYXQgY2Fubm90IGJlLCB3ZSB3b3VsZCBuZXZlcgorICAgICAgICBydW4gYWNjZWxlcmF0ZWQg
YW5pbWF0aW9ucyBhdCBhbGwuIEhvd2V2ZXIsIGluIHRoZSAibGVnYWN5IiBhbmltYXRpb24gZW5n
aW5lLCB3ZSB3b3VsZCBhbmltYXRlIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYWNjbGVyYXRlZCBp
ZiBwb3NzaWJsZS4KKyAgICAgICAgV2Ugbm93IGF0dGVtcHQgdG8gcnVuIGFjY2VsZXJhdGVkIGFu
aW1hdGlvbnMgcHJvdmlkZWQgYXQgbGVhc3Qgb25lIGFuaW1hdGlvbiBpcyBhY2NlbGVyYXRlZC4K
KworICAgICAgICBUbyBkbyB0aGF0LCB3ZSBub3cga2VlcCB0cmFjayBvZiB3aGV0aGVyIG5vbmUs
IHNvbWUgb3IgYWxsIG9mIHRoZSBhbmltYXRlZCBwcm9wZXJ0aWVzIG9mIGEgZ2l2ZW4gS2V5ZnJh
bWVFZmZlY3QgYXJlIGFjY2VsZXJhdGVkIHVzaW5nIHRoZSBuZXcKKyAgICAgICAgbV9hY2NlbGVy
YXRlZFByb3BlcnRpZXNNZW1iZXJzaGlwIGluc3RhbmNlIHZhcmlhYmxlLiBXZSBjb21wdXRlIHRo
aXMgcHJvcGVydHkgd2hlbiBjcmVhdGluZyB0aGUgYmxlbmRpbmcga2V5ZnJhbWVzIGZvciB0aGUg
ZWZmZWN0LiAKKyAgICAgICAgCisgICAgICAgIFRoZW4sIGFzIHRpbWUgcHJvZ3Jlc3NlcyBhbmQg
dGhlIGVmZmVjdCBpcyByZXNvbHZlZCwgdXBkYXRlQWNjZWxlcmF0ZWRBbmltYXRpb25TdGF0ZSgp
IGlzIGNhbGxlZCBhbmQgd2Ugc2ltcGx5IHVzZSB0aGUgZWZmZWN0J3MgcGhhc2UgdG8gZGV0ZXJt
aW5lCisgICAgICAgIHdoZXRoZXIgd2UgbmVlZCB0byBlbnF1ZXVlIGFjdGlvbnMgdG8gc3RhcnQs
IHBhdXNlLCBzZWVrIG9yIGVuZCBhY2NlbGVyYXRlZCBhbmltYXRpb25zLiBUaGlzIGlzIGFuIGlt
cHJvdmVtZW50IG92ZXIgaG93IHRoaXMgbWV0aG9kIHVzZWQgdG8gd29yaworICAgICAgICBzaW5j
ZSB3ZSB3b3VsZCBydW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyB3aGlsZSBpbiB0aGVpciBkZWxh
eSBwaGFzZSwgd2hpY2ggZGlkIG5vdCBtYXRjaCB0aGUgImxlZ2FjeSIgYW5pbWF0aW9uIGVuZ2lu
ZSdzIGJlaGF2aW9yLgorCisgICAgICAgIFdlJ3ZlIGFsc28gcmVtb3ZlZCB0aGUgc2luZ2xlIG1l
dGhvZCB0aGF0IHByb3ZpZGVkIHRoZSBhY2NlbGVyYXRlZCBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBL
ZXlmcmFtZUVmZmVjdCwgaXNBY2NlbGVyYXRlZCgpLCB3aXRoIGEgZmV3IG1vcmUgbWV0aG9kczoK
KworICAgICAgICAgICAgLSBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpOiB0aGUgZWZmZWN0IGlzIGN1
cnJlbnRseSBydW5uaW5nIGFjY2VsZXJhdGVkIGFuaW1hdGlvbnMuCisgICAgICAgICAgICAtIGlz
QWJvdXRUb1J1bkFjY2VsZXJhdGVkKCk6IHRoZSBlZmZlY3QgaGFzIHBlbmRpbmcgYWNjZWxlcmF0
ZWQgYWN0aW9ucyB0aGF0IHNob3VsZCBtYWtlIGl0IHJ1biBhY2NlbGVyYXRlZCBhbmltYXRpb25z
IHdoZW4gYWNjZWxlcmF0ZWQgYWN0aW9ucworICAgICAgICAgICAgYXJlIHVwZGF0ZWQgbmV4dC4K
KyAgICAgICAgICAgIC0gaXNDb21wbGV0ZWx5QWNjZWxlcmF0ZWQoKTogdGhlIGVmZmVjdCBhbmlt
YXRlcyBvbmx5IGFjY2VsZXJhdGVkIHByb3BlcnRpZXMuCisgICAgICAgICAgICAtIGlzQ3VycmVu
dGx5QWZmZWN0aW5nUHJvcGVydHkocHJvcGVydHksIGFjY2VsZXJhdGVkKTogdGhlIGVmZmVjdCBp
cyBjdXJyZW50bHkgYW5pbWF0aW5nIHRoZSBnaXZlbiBwcm9wZXJ0eSwgd2l0aCB0aGUgb3B0aW9u
IHRvIHNwZWNpZnkgd2hldGhlcgorICAgICAgICAgICAgdGhhdCBhbmltYXRpb24gaXMgYWNjZWxl
cmF0ZWQuCisKKyAgICAgICAgV2UgdXNlIHRoaXMgaW5mb3JtYXRpb24gaW4gYSBmZXcgbmV3IHBs
YWNlcy4gSWYgYW4gZWZmZWN0IHJldHVybnMgdHJ1ZSBmb3IgZWl0aGVyIGlzUnVubmluZ0FjY2Vs
ZXJhdGVkKCkgb3IgaXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSB3aGVuCisgICAgICAgIEVsZW1l
bnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKCkgaXMgY2FsbGVkLCB3ZSBzZXQgdGhlIEFuaW1hdGlv
bkltcGFjdDo6UmVxdWlyZXNSZWNvbXBvc2l0ZSBmbGFnLiBJbiBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oKSwKKyAgICAgICAgaWYgYW4gZWZm
ZWN0IHJldHVybnMgdHJ1ZSBmb3IgaXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eSgpIHdpdGgg
dGhlIGFjY2VsZXJhdGVkIGZsYWcgc2V0IHRvIHRydWUsIHRoZSBtZXRob2QgcmV0dXJucyB0cnVl
LCBtYXRjaGluZyB0aGUgbG9naWMKKyAgICAgICAgdXNlZCBieSB0aGUgImxlZ2FjeSIgYW5pbWF0
aW9uIGVuZ2luZS4KKworICAgICAgICBBbGwgaW4gYWxsLCB0aGlzIGJldHRlciBhbGlnbnMgdGhl
IGJlaGF2aW9yIG9mIHRoZSAibGVnYWN5IiBhbmQgV2ViIEFuaW1hdGlvbnMgZW5naW5lcyB0byBy
dW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyBpbiB0aGUgc2FtZSBjaXJjdW1zdGFuY2VzLgorCisg
ICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQ
cm9wZXJ0eSk6IFVzZSBLZXlmcmFtZUVmZmZlY3Q6OmlzUnVubmluZ0FjY2VsZXJhdGVkKCkgaW5z
dGVhZCBvZiBLZXlmcmFtZUVmZmVjdDo6aXNBY2NlbGVyYXRlZCgpLgorICAgICAgICAqIGFuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGlt
ZWxpbmU6OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlciBjb25zdCk6IFVz
ZSBLZXlmcmFtZUVmZmVjdDo6aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eSgpIGluc3RlYWQg
b2YgY2hlY2tpbmcgYm90aAorICAgICAgICBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpIGFuZCBtYW51
YWxseSBsb29raW5nIGF0IHRoZSBlZmZlY3QncyBhbmltYXRlZCBwcm9wZXJ0aWVzLgorICAgICAg
ICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlm
cmFtZUVmZmVjdDo6c2V0QmxlbmRpbmdLZXlmcmFtZXMpOiBDYWxsIGNvbXB1dGVBY2NlbGVyYXRl
ZFByb3BlcnRpZXNNZW1iZXJzaGlwKCkgaW5zdGVhZCBvZiB0aGUgbm93LWRlZnVuY3QgY29tcHV0
ZVNob3VsZFJ1bkFjY2VsZXJhdGVkKCkuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVj
dDo6YXBwbHkpOiBLZWVwIHRyYWNrIG9mIHRoZSBuZXdseSBjb21wdXRlZCBwaGFzZSBzbyB0aGF0
IHdlIG1heSB1c2UgaXQgaW4gdGhlIG5ldyBpc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KCkg
d2l0aG91dCBoYXZpbmcKKyAgICAgICAgdG8gcmVjb21wdXRlIGl0IG9uIGVhY2ggY2FsbC4KKyAg
ICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojppc0N1cnJlbnRseUFmZmVjdGluZ1Byb3Bl
cnR5IGNvbnN0KTogSW5kaWNhdGVzIHdoZXRoZXIgYSBnaXZlbiBwcm9wZXJ0eSBpcyBjdXJyZW50
bHkgYW5pbWF0ZWQgKGFjdGl2ZSBwaGFzZSkgd2l0aCB0aGUgb3B0aW9uCisgICAgICAgIHRvIHNw
ZWNpZnkgd2hldGhlciB0aGF0IGFuaW1hdGlvbiBpcyBhY2NlbGVyYXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OktleWZyYW1lRWZmZWN0Ojpjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzTWVtYmVy
c2hpcCk6IENvbXB1dGUgd2hldGhlciBub25lLCBzb21lIG9yIGFsbCBvZiB0aGUgYW5pbWF0ZWQg
cHJvcGVydGllcyBvZiB0aGUgZ2l2ZW4gZWZmZWN0IGNhbiBiZSBhY2NlbGVyYXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp1cGRhdGVBY2NlbGVyYXRlZEFuaW1hdGlvblN0
YXRlKTogVXNlIHRoZSBwaGFzZSB0byBkZXRlcm1pbmUgd2hpY2ggYWNjZWxlcmF0ZWQgYWN0aW9u
cyB0byBlbnF1ZXVlLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFuaW1hdGlv
bkRpZFNlZWspOiBVc2UgdGhlIG5ldyBtX2lzUnVubmluZ0FjY2VsZXJhdGVkIHN0YXRlIHRvIGRl
dGVybWluZSB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcHJlc2VudGx5IHJ1bm5pbmcgYWNjZWxl
cmF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uV2FzQ2Fu
Y2VsZWQpOiBVc2UgdGhlIG5ldyBtX2lzUnVubmluZ0FjY2VsZXJhdGVkIHN0YXRlIHRvIGRldGVy
bWluZSB3aGV0aGVyIHRoZSBhbmltYXRpb24gaXMgcHJlc2VudGx5IHJ1bm5pbmcgYWNjZWxlcmF0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uU3VzcGVuc2lv
blN0YXRlRGlkQ2hhbmdlKTogVXNlIHRoZSBuZXcgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCBzdGF0
ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYW5pbWF0aW9uIGlzIHByZXNlbnRseSBydW5uaW5n
IGFjY2VsZXJhdGVkLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5UGVu
ZGluZ0FjY2VsZXJhdGVkQWN0aW9ucyk6IAorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmlzUnVubmluZ0FjY2Vs
ZXJhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojppc0Fib3V0
VG9SdW5BY2NlbGVyYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVj
dDo6aXNDb21wbGV0ZWx5QWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAqIGFuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0
U3RhY2s6OmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkgY29uc3QpOiBJbmRpY2F0ZXMgd2hl
dGhlciBhbnkgb2YgdGhlIGVmZmVjdHMgaW4gdGhlIHN0YWNrIGFuaW1hdGVzIGEgZ2l2ZW4gcHJv
cGVydHksIHdpdGggdGhlIG9wdGlvbgorICAgICAgICB0byBzcGVjaWZ5IHdoZXRoZXIgdGhlIGFu
aW1hdGlvbiBzaG91bGQgYmUgYWNjZWxlcmF0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0U3RhY2suaDoKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKTog
RW5zdXJlIHdlIHNjaGVkdWxlIGFuIGFuaW1hdGlvbiB1cGRhdGUgaWYgYW4gZWZmZWN0IGlzIG5v
IGxvbmdlciBhbmltYXRpbmcgYSBnaXZlbiBlbGVtZW50IG9yIG5ld2x5IGFuaW1hdGluZyBhbiBl
bGVtZW50LAorICAgICAgICB0byBlbnN1cmUgdGhhdCByZXBsYWNlZCBhbmltYXRpb25zIG1heSBi
ZSByZW1vdmVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjppc0NvbXBsZXRlbHlB
Y2NlbGVyYXRlZCBjb25zdCk6IENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNhbGwgaXNDb21wbGV0
ZWx5QWNjZWxlcmF0ZWQoKSBvbiB0aGUgYW5pbWF0aW9uJ3MgZWZmZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQW5pbWF0aW9uOjpjb21wdXRlUmVsZXZhbmNlKTogQ2hlY2sgdGhlIHJlcGxhY2Vk
IHN0YXRlIHdoZW4gY29tcHV0aW5nIHJlbGV2YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OldlYkFu
aW1hdGlvbjo6dGltZVRvTmV4dFRpY2sgY29uc3QpOiBTY2hlZHVsZSBhbiBpbW1lZGlhdGUgdXBk
YXRlIGlmIGEgZ2l2ZW4gYW5pbWF0aW9uIGlzIG5vdCBfY29tcGxldGVseV8gYWNjZWxlcmF0ZWQu
CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorICAgICAgICAqIGRvbS9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmtleWZyYW1lRWZmZWN0U3RhY2sg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YXBwbHlLZXlmcmFtZUVmZmVjdHMp
OiBTZXQgdGhlIEFuaW1hdGlvbkltcGFjdDo6UmVxdWlyZXNSZWNvbXBvc2l0ZSBmbGFnIHdoZW4g
dGhlIGFuaW1hdGlvbiBpcyBlaXRoZXIgY3VycmVudGx5IHJ1bm5pbmcgYWNjZWxlcmF0ZWQgb3Ig
ZXhwZWN0ZWQKKyAgICAgICAgdG8gYmUgaW4gdGhlIG5leHQgYWNjZWxlcmF0ZWQgYW5pbWF0aW9u
IHVwZGF0ZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uIGNvbnN0KTogVXNlIHRo
ZSBzYW1lIGxvZ2ljIGFzIGZvciB0aGUgImxlZ2FjeSIgYW5pbWF0aW9uIGVuZ2luZSB0byBkZXRl
cm1pbmUgd2hldGhlciBhbiBhbmltYXRpb24KKyAgICAgICAgcmVxdWlyZXMgY29tcG9zaXRpbmcg
dXNpbmcgdGhlIG5ldyBLZXlmcmFtZUVmZmVjdDo6aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0
eSgpIG1ldGhvZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNS
dW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uIGNvbnN0KTogUmVmYWN0b3Igc29tZSBjb2RlIHRvIHVz
ZSB0aGUgbmV3IEtleWZyYW1lRWZmZWN0Ojppc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KCkg
bWV0aG9kLgorCiAyMDIwLTAxLTI4ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYiBBbmltYXRpb25zXSBTZXBhcmF0ZSBzZXR0aW5nIGEgdGltZWxpbmUn
cyBjdXJyZW50IHRpbWUgZnJvbSB1cGRhdGluZyBpdHMgYW5pbWF0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggMjkwODUyMDM4MjEx
MmQwMzNmNTY5YzMxYTE3Y2MxMDQyOTRiZjA0Yi4uMzU4NjBlNzFmNzY5MzQ2OGJkMGJiY2NiNjEw
NmNhNzUzNTFkYjNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
VGltZWxpbmUuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUK
ICAgICAgICAgICAgIGF1dG8qIHJ1bm5pbmdUcmFuc2l0aW9uID0gcnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eS5nZXQocHJvcGVydHkpOwogICAgICAgICAgICAgaWYgKGlzPEtleWZyYW1lRWZm
ZWN0PihydW5uaW5nVHJhbnNpdGlvbi0+ZWZmZWN0KCkpKSB7CiAgICAgICAgICAgICAgICAgYXV0
byYga2V5ZnJhbWVFZmZlY3QgPSAqZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KHJ1bm5pbmdUcmFu
c2l0aW9uLT5lZmZlY3QoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGtleWZyYW1lRWZmZWN0Lmlz
QWNjZWxlcmF0ZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChrZXlmcmFtZUVmZmVjdC5pc1J1
bm5pbmdBY2NlbGVyYXRlZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF1dG8gYW5pbWF0ZWRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cihjdXJyZW50U3R5bGUpOwogICAgICAgICAgICAg
ICAgICAgICBydW5uaW5nVHJhbnNpdGlvbi0+cmVzb2x2ZSgqYW5pbWF0ZWRTdHlsZSk7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAqYW5pbWF0ZWRTdHlsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAppbmRleCBkNDE3Yjg5N2IxNzk3YTAxMGJm
Mzc1NjMzMjFiYjk0ZGU4YmI0MmRiLi44NTZlNTczZjM2ODA3MjBmNDUxZGY0MjhjYjBhZTlmZTNl
YzI0NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1l
bGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUu
Y3BwCkBAIC01OTcsNyArNTk3LDcgQEAgYm9vbCBEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdB
Y2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmUKICAgICAgICAg
YXV0byogZWZmZWN0ID0gYW5pbWF0aW9uLT5lZmZlY3QoKTsKICAgICAgICAgaWYgKGlzPEtleWZy
YW1lRWZmZWN0PihlZmZlY3QpKSB7CiAgICAgICAgICAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9
IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QpOwotICAgICAgICAgICAgaWYgKGtleWZy
YW1lRWZmZWN0LT5pc1J1bm5pbmdBY2NlbGVyYXRlZCgpICYmIGtleWZyYW1lRWZmZWN0LT5hbmlt
YXRlZFByb3BlcnRpZXMoKS5jb250YWlucyhwcm9wZXJ0eSkpCisgICAgICAgICAgICBpZiAoa2V5
ZnJhbWVFZmZlY3QtPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkocHJvcGVydHksIHRydWUp
KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggMmI0ZDg2ZDhjYzI1
OWVjMWRkNTRhMjk1OTY2ZWYzOTljZjlmOTE5ZC4uYjA3MTM0MmJlNTQ2NWJiMWNlNzU3NzRjNTYx
MTk2YWQ0NDNjZTVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuY3BwCkBAIC04MDEsNyArODAxLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0QmxlbmRp
bmdLZXlmcmFtZXMoS2V5ZnJhbWVMaXN0JiBibGVuZGluZ0tleWZyYW1lcykKIAogICAgIGNvbXB1
dGVkTmVlZHNGb3JjZWRMYXlvdXQoKTsKICAgICBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0
KCk7Ci0gICAgY29tcHV0ZVNob3VsZFJ1bkFjY2VsZXJhdGVkKCk7CisgICAgY29tcHV0ZUFjY2Vs
ZXJhdGVkUHJvcGVydGllc01lbWJlcnNoaXAoKTsKIAogICAgIGNoZWNrRm9yTWF0Y2hpbmdUcmFu
c2Zvcm1GdW5jdGlvbkxpc3RzKCk7CiAgICAgY2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9u
TGlzdHMoKTsKQEAgLTEwODQsNiArMTA4NCw3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5
KFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKICAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0
YXJnZXRTdHlsZSk7CiAKICAgICBhdXRvIGNvbXB1dGVkVGltaW5nID0gZ2V0Q29tcHV0ZWRUaW1p
bmcoKTsKKyAgICBtX3BoYXNlQXRMYXN0QXBwbGljYXRpb24gPSBjb21wdXRlZFRpbWluZy5waGFz
ZTsKIAogICAgIHVwZGF0ZUFjY2VsZXJhdGVkQW5pbWF0aW9uU3RhdGUoY29tcHV0ZWRUaW1pbmcp
OwogCkBAIC0xMDk1LDIwICsxMDk2LDQwIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKICAgICBzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxl
KHRhcmdldFN0eWxlLCBjb21wdXRlZFRpbWluZy5wcm9ncmVzcy52YWx1ZSgpKTsKIH0KIAorYm9v
bCBLZXlmcmFtZUVmZmVjdDo6aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBib29sIGFjY2VsZXJhdGVkT25seSkgY29uc3QKK3sKKyAgICBpZiAoYWNj
ZWxlcmF0ZWRPbmx5ICYmICFpc1J1bm5pbmdBY2NlbGVyYXRlZCgpICYmICFpc0Fib3V0VG9SdW5B
Y2NlbGVyYXRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIW1fYmxlbmRp
bmdLZXlmcmFtZXMucHJvcGVydGllcygpLmNvbnRhaW5zKHByb3BlcnR5KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgcmV0dXJuIG1fcGhhc2VBdExhc3RBcHBsaWNhdGlvbiA9PSBBbmlt
YXRpb25FZmZlY3RQaGFzZTo6QWN0aXZlOworfQorCiB2b2lkIEtleWZyYW1lRWZmZWN0OjppbnZh
bGlkYXRlKCkKIHsKICAgICBpbnZhbGlkYXRlRWxlbWVudChtX3RhcmdldC5nZXQoKSk7CiB9CiAK
LXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVTaG91bGRSdW5BY2NlbGVyYXRlZCgpCit2b2lk
IEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzTWVtYmVyc2hpcCgp
CiB7Ci0gICAgbV9zaG91bGRSdW5BY2NlbGVyYXRlZCA9IGhhc0JsZW5kaW5nS2V5ZnJhbWVzKCk7
CisgICAgYm9vbCBoYXNTb21lQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgYm9v
bCBoYXNTb21lVW5hY2NlbGVyYXRlZFByb3BlcnRpZXMgPSBmYWxzZTsKKwogICAgIGZvciAoYXV0
byBjc3NQcm9wZXJ0eUlkIDogbV9ibGVuZGluZ0tleWZyYW1lcy5wcm9wZXJ0aWVzKCkpIHsKLSAg
ICAgICAgaWYgKCFDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YW5pbWF0aW9uT2ZQcm9wZXJ0eUlzQWNj
ZWxlcmF0ZWQoY3NzUHJvcGVydHlJZCkpIHsKLSAgICAgICAgICAgIG1fc2hvdWxkUnVuQWNjZWxl
cmF0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICAv
LyBJZiBhbnkgYW5pbWF0ZWQgcHJvcGVydHkgY2FuIGJlIGFjY2VsZXJhdGVkLCB0aGVuIHRoZSBh
bmltYXRpb24gc2hvdWxkIHJ1biBhY2NlbGVyYXRlZC4KKyAgICAgICAgaWYgKENTU1Byb3BlcnR5
QW5pbWF0aW9uOjphbmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChjc3NQcm9wZXJ0eUlk
KSkKKyAgICAgICAgICAgIGhhc1NvbWVBY2NlbGVyYXRlZFByb3BlcnRpZXMgPSB0cnVlOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBoYXNTb21lVW5hY2NlbGVyYXRlZFByb3BlcnRpZXMgPSB0
cnVlOworICAgICAgICBpZiAoaGFzU29tZUFjY2VsZXJhdGVkUHJvcGVydGllcyAmJiBoYXNTb21l
VW5hY2NlbGVyYXRlZFByb3BlcnRpZXMpCisgICAgICAgICAgICBicmVhazsKICAgICB9CisKKyAg
ICBpZiAoIWhhc1NvbWVBY2NlbGVyYXRlZFByb3BlcnRpZXMgJiYgIWhhc1NvbWVVbmFjY2VsZXJh
dGVkUHJvcGVydGllcykKKyAgICAgICAgbV9hY2NlbGVyYXRlZFByb3BlcnRpZXNNZW1iZXJzaGlw
ID0gQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzOjpOb25lOworICAgIG1fYWNjZWxlcmF0ZWRQcm9wZXJ0
aWVzTWVtYmVyc2hpcCA9IGhhc1NvbWVVbmFjY2VsZXJhdGVkUHJvcGVydGllcyA/IEFjY2VsZXJh
dGVkUHJvcGVydGllczo6U29tZSA6IEFjY2VsZXJhdGVkUHJvcGVydGllczo6QWxsOwogfQogCiB2
b2lkIEtleWZyYW1lRWZmZWN0OjpnZXRBbmltYXRlZFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5k
ZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpCkBAIC0xMzA3LDQ0ICsxMzI4LDM1IEBAIFRpbWluZ0Z1
bmN0aW9uKiBLZXlmcmFtZUVmZmVjdDo6dGltaW5nRnVuY3Rpb25Gb3JLZXlmcmFtZUF0SW5kZXgo
c2l6ZV90IGluZGV4KQogCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojp1cGRhdGVBY2NlbGVyYXRlZEFu
aW1hdGlvblN0YXRlKENvbXB1dGVkRWZmZWN0VGltaW5nIGNvbXB1dGVkVGltaW5nKQogewotICAg
IGlmICghbV9zaG91bGRSdW5BY2NlbGVyYXRlZCkKKyAgICBpZiAobV9hY2NlbGVyYXRlZFByb3Bl
cnRpZXNNZW1iZXJzaGlwID09IEFjY2VsZXJhdGVkUHJvcGVydGllczo6Tm9uZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKCFyZW5kZXJlcigpKSB7Ci0gICAgICAgIGlmIChpc1J1bm5pbmdB
Y2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgYWRkUGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9uKEFj
Y2VsZXJhdGVkQWN0aW9uOjpTdG9wKTsKKyAgICAvLyBJZiB3ZSdyZSBub3QgYWxyZWFkeSBydW5u
aW5nIGFjY2VsZXJhdGVkLCB0aGUgb25seSB0aGluZyB3ZSdyZSBpbnRlcmVzdGVkIGluIGlzIHdo
ZXRoZXIgd2UgbmVlZCB0byBzdGFydCB0aGUgYW5pbWF0aW9uCisgICAgLy8gd2hpY2ggd2UgbmVl
ZCB0byBkbyBvbmNlIHdlJ3JlIGluIHRoZSBhY3RpdmUgcGhhc2UuIE90aGVyd2lzZSwgdGhlcmUn
cyBubyBjaGFuZ2UgaW4gYWNjZWxlcmF0ZWQgc3RhdGUgdG8gY29uc2lkZXIuCisgICAgYm9vbCBp
c0FjdGl2ZSA9IGNvbXB1dGVkVGltaW5nLnBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpB
Y3RpdmU7CisgICAgaWYgKCFtX2lzUnVubmluZ0FjY2VsZXJhdGVkKSB7CisgICAgICAgIGlmIChp
c0FjdGl2ZSkKKyAgICAgICAgICAgIGFkZFBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbihBY2NlbGVy
YXRlZEFjdGlvbjo6UGxheSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGxv
Y2FsVGltZSA9IGFuaW1hdGlvbigpLT5jdXJyZW50VGltZSgpOwotCi0gICAgLy8gSWYgd2UgZG9u
J3QgaGF2ZSBhIGxvY2FsVGltZSBvciBsb2NhbFRpbWUgPCAwLCB3ZSBlaXRoZXIgZG9uJ3QgaGF2
ZSBhIHN0YXJ0IHRpbWUgb3Igd2UncmUgYmVmb3JlIHRoZSBzdGFydFRpbWUKLSAgICAvLyBzbyB3
ZSBzaG91bGRuJ3QgYmUgcnVubmluZy4KLSAgICBpZiAoIWxvY2FsVGltZSB8fCBsb2NhbFRpbWUu
dmFsdWUoKSA8IDBfcykgewotICAgICAgICBpZiAoaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSkKLSAg
ICAgICAgICAgIGFkZFBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbihBY2NlbGVyYXRlZEFjdGlvbjo6
U3RvcCk7CisgICAgLy8gSWYgd2UncmUgbm8gbG9uZ2VyIGFjdGl2ZSwgd2UgbmVlZCB0byByZW1v
dmUgdGhlIGFjY2VsZXJhdGVkIGFuaW1hdGlvbi4KKyAgICBpZiAoIWlzQWN0aXZlKSB7CisgICAg
ICAgIGFkZFBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbihBY2NlbGVyYXRlZEFjdGlvbjo6U3RvcCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBhdXRvIHBsYXlTdGF0ZSA9IGFuaW1hdGlv
bigpLT5wbGF5U3RhdGUoKTsKKyAgICAvLyBUaGUgb25seSB0aGluZyBsZWZ0IHRvIGNvbnNpZGVy
IGlzIHdoZXRoZXIgd2UgbmVlZCB0byBwYXVzZSBvciByZXN1bWUgdGhlIGFuaW1hdGlvbiBmb2xs
b3dpbmcgYSBjaGFuZ2Ugb2YgcGxheS1zdGF0ZS4KICAgICBpZiAocGxheVN0YXRlID09IFdlYkFu
aW1hdGlvbjo6UGxheVN0YXRlOjpQYXVzZWQpIHsKICAgICAgICAgaWYgKG1fbGFzdFJlY29yZGVk
QWNjZWxlcmF0ZWRBY3Rpb24gIT0gQWNjZWxlcmF0ZWRBY3Rpb246OlBhdXNlKSB7CiAgICAgICAg
ICAgICBpZiAobV9sYXN0UmVjb3JkZWRBY2NlbGVyYXRlZEFjdGlvbiA9PSBBY2NlbGVyYXRlZEFj
dGlvbjo6U3RvcCkKICAgICAgICAgICAgICAgICBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24o
QWNjZWxlcmF0ZWRBY3Rpb246OlBsYXkpOwogICAgICAgICAgICAgYWRkUGVuZGluZ0FjY2VsZXJh
dGVkQWN0aW9uKEFjY2VsZXJhdGVkQWN0aW9uOjpQYXVzZSk7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChwbGF5U3RhdGUgPT0gV2ViQW5pbWF0aW9uOjpQbGF5
U3RhdGU6OkZpbmlzaGVkKSB7Ci0gICAgICAgIGFkZFBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbihB
Y2NlbGVyYXRlZEFjdGlvbjo6U3RvcCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAocGxheVN0YXRlID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpSdW5uaW5nICYmIGNvbXB1
dGVkVGltaW5nLnBoYXNlID09IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpBY3RpdmUpIHsKKyAgICB9
IGVsc2UgaWYgKHBsYXlTdGF0ZSA9PSBXZWJBbmltYXRpb246OlBsYXlTdGF0ZTo6UnVubmluZyAm
JiBpc0FjdGl2ZSkgewogICAgICAgICBpZiAobV9sYXN0UmVjb3JkZWRBY2NlbGVyYXRlZEFjdGlv
biAhPSBBY2NlbGVyYXRlZEFjdGlvbjo6UGxheSkKICAgICAgICAgICAgIGFkZFBlbmRpbmdBY2Nl
bGVyYXRlZEFjdGlvbihBY2NlbGVyYXRlZEFjdGlvbjo6UGxheSk7Ci0gICAgICAgIHJldHVybjsK
ICAgICB9CiB9CiAKQEAgLTEzNjUsMTkgKzEzNzcsMTkgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6
YW5pbWF0aW9uRGlkU2VlaygpCiB7CiAgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBzZWVrIGlm
IHdlJ3JlIG5vdCBwbGF5aW5nIGFuIGFuaW1hdGlvbiBhbHJlYWR5LiBJZiBzZWVraW5nCiAgICAg
Ly8gbWVhbnMgd2UncmUgbW92aW5nIGludG8gYW4gYWN0aXZlIGxleGljYWxHbG9iYWxPYmplY3Qs
IHdlJ2xsIHBpY2sgdGhpcyB1cCBpbiBhcHBseSgpLgotICAgIGlmIChtX3Nob3VsZFJ1bkFjY2Vs
ZXJhdGVkICYmIGlzUnVubmluZ0FjY2VsZXJhdGVkKCkpCisgICAgaWYgKG1faXNSdW5uaW5nQWNj
ZWxlcmF0ZWQpCiAgICAgICAgIGFkZFBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbihBY2NlbGVyYXRl
ZEFjdGlvbjo6U2Vlayk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFuaW1hdGlvbldhc0Nh
bmNlbGVkKCkKIHsKLSAgICBpZiAobV9zaG91bGRSdW5BY2NlbGVyYXRlZCAmJiBpc1J1bm5pbmdB
Y2NlbGVyYXRlZCgpKQorICAgIGlmIChtX2lzUnVubmluZ0FjY2VsZXJhdGVkKQogICAgICAgICBh
ZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApOwogfQog
CiB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRpb25TdXNwZW5zaW9uU3RhdGVEaWRDaGFuZ2Uo
Ym9vbCBhbmltYXRpb25Jc1N1c3BlbmRlZCkKIHsKLSAgICBpZiAobV9zaG91bGRSdW5BY2NlbGVy
YXRlZCkKKyAgICBpZiAobV9pc1J1bm5pbmdBY2NlbGVyYXRlZCkKICAgICAgICAgYWRkUGVuZGlu
Z0FjY2VsZXJhdGVkQWN0aW9uKGFuaW1hdGlvbklzU3VzcGVuZGVkID8gQWNjZWxlcmF0ZWRBY3Rp
b246OlBhdXNlIDogQWNjZWxlcmF0ZWRBY3Rpb246OlBsYXkpOwogfQogCkBAIC0xMzkxLDIyICsx
NDAzLDE3IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0
aW9ucygpCiAgICAgaWYgKG1fcGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIC8vIEluIHRoZSBjYXNlIHdoZXJlIHdlIGhhdmUgYSBjb21w
b3NpdGVkIHJlbmRlcmVyLCB3ZSdsbCBiZSBhcHBseWluZyBhbGwgcGVuZGluZyBhY2NlbGVyYXRl
ZCBhY3Rpb25zLgotICAgIC8vIEluIGNhc2Ugd2UgZG9uJ3QgaGF2ZSBhIGNvbXBvc2l0ZWQgcmVu
ZGVyZXIsIHRoZW4gd2Ugd29uJ3QgYmUgYWJsZSB0byBhcHBseSB0aGUgcGVuZGluZyBhY2NlbGVy
YXRlZAotICAgIC8vIGFjdGlvbnMuIEluIGJvdGggY2FzZXMsIHdlIGNhbiBjbGVhciB0aGUgcGVu
ZGluZyBhY2NlbGVyYXRlZCBhY3Rpb25zLgotICAgIGF1dG8gcGVuZGluZ0FjY2VsZXJhdGVkQWN0
aW9ucyA9IG1fcGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9uczsKLSAgICBtX3BlbmRpbmdBY2NlbGVy
YXRlZEFjdGlvbnMuY2xlYXIoKTsKLQogICAgIGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNDb21wb3NpdGVkKCkpIHsK
LSAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGNvbXBvc2l0ZWQgcmVuZGVyZXIgd2hlbiB3
ZSB3ZXJlIHN1cHBvc2VkIHRvIGJlIGFwcGx5aW5nIGFuIGFjY2VsZXJhdGVkIGFjdGlvbiBvdGhl
cgotICAgICAgICAvLyB0aGFuIHRvIHN0b3AgYSBydW5uaW5nIGFuaW1hdGlvbiwgdGhlbiB3ZSB3
b24ndCBtYW5hZ2UgdG8gYXBwbHkgYWNjZWxlcmF0aW9ucyBpbiB0aGUgZnV0dXJlIGVpdGhlciwg
c28KLSAgICAgICAgLy8gd2Ugc2hvdWxkIHJlc2V0IHRoZSBmbGFnIHRvIHJ1biBhY2NlbGVyYXRl
ZC4KLSAgICAgICAgbV9sYXN0UmVjb3JkZWRBY2NlbGVyYXRlZEFjdGlvbiA9IEFjY2VsZXJhdGVk
QWN0aW9uOjpTdG9wOworICAgICAgICAvLyBUaGUgcmVuZGVyZXIgbWF5IG5vIGxvbmdlciBiZSBj
b21wb3NpdGVkIGJlY2F1c2UgdGhlIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBlbmRlZCBiZWZvcmUg
d2UgaGFkIGEgY2hhbmNlIHRvIHVwZGF0ZSBpdCwKKyAgICAgICAgLy8gaW4gd2hpY2ggY2FzZSBp
ZiB3ZSBhc2tlZCBmb3IgdGhlIGFuaW1hdGlvbiB0byBzdG9wLCB3ZSBjYW4gZGlzY2FyZCB0aGUg
Y3VycmVudCBzZXQgb2YgYWNjZWxlcmF0ZWQgYWN0aW9ucy4KKyAgICAgICAgaWYgKG1fbGFzdFJl
Y29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gPT0gQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApCisgICAg
ICAgICAgICBtX3BlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMuY2xlYXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGNvbXBvc2l0ZWRSZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlckJveE1vZGVsT2JqZWN0PihyZW5kZXJlcik7CisgICAgYXV0byBwZW5kaW5nQWNjZWxlcmF0
ZWRBY3Rpb25zID0gbV9wZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zOworICAgIG1fcGVuZGluZ0Fj
Y2VsZXJhdGVkQWN0aW9ucy5jbGVhcigpOwogCiAgICAgLy8gVG8gc2ltcGxpZnkgdGhlIGNvZGUg
d2UgdXNlIGEgZGVmYXVsdCBvZiAwcyBmb3IgYW4gdW5yZXNvbHZlZCBjdXJyZW50IHRpbWUgc2lu
Y2UgZm9yIGEgU3RvcCBhY3Rpb24gdGhhdCBpcyBhY2NlcHRhYmxlLgogICAgIGF1dG8gdGltZU9m
ZnNldCA9IGFuaW1hdGlvbigpLT5jdXJyZW50VGltZSgpLnZhbHVlT3IoMF9zKS5zZWNvbmRzKCkg
LSBkZWxheSgpLnNlY29uZHMoKTsKQEAgLTE0MTQsMjMgKzE0MjEsMjMgQEAgdm9pZCBLZXlmcmFt
ZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zKCkKICAgICBmb3IgKGNvbnN0
IGF1dG8mIGFjdGlvbiA6IHBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMpIHsKICAgICAgICAgc3dp
dGNoIChhY3Rpb24pIHsKICAgICAgICAgY2FzZSBBY2NlbGVyYXRlZEFjdGlvbjo6UGxheToKLSAg
ICAgICAgICAgIGlmICghY29tcG9zaXRlZFJlbmRlcmVyLT5zdGFydEFuaW1hdGlvbih0aW1lT2Zm
c2V0LCBiYWNraW5nQW5pbWF0aW9uRm9yQ29tcG9zaXRlZFJlbmRlcmVyKCksIG1fYmxlbmRpbmdL
ZXlmcmFtZXMpKSB7Ci0gICAgICAgICAgICAgICAgbV9zaG91bGRSdW5BY2NlbGVyYXRlZCA9IGZh
bHNlOworICAgICAgICAgICAgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCA9IHJlbmRlcmVyLT5zdGFy
dEFuaW1hdGlvbih0aW1lT2Zmc2V0LCBiYWNraW5nQW5pbWF0aW9uRm9yQ29tcG9zaXRlZFJlbmRl
cmVyKCksIG1fYmxlbmRpbmdLZXlmcmFtZXMpOworICAgICAgICAgICAgaWYgKCFtX2lzUnVubmlu
Z0FjY2VsZXJhdGVkKSB7CiAgICAgICAgICAgICAgICAgbV9sYXN0UmVjb3JkZWRBY2NlbGVyYXRl
ZEFjdGlvbiA9IEFjY2VsZXJhdGVkQWN0aW9uOjpTdG9wOwotICAgICAgICAgICAgICAgIGFuaW1h
dGlvbigpLT5hY2NlbGVyYXRlZFN0YXRlRGlkQ2hhbmdlKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNj
ZWxlcmF0ZWRBY3Rpb246OlBhdXNlOgotICAgICAgICAgICAgY29tcG9zaXRlZFJlbmRlcmVyLT5h
bmltYXRpb25QYXVzZWQodGltZU9mZnNldCwgbV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRpb25O
YW1lKCkpOworICAgICAgICAgICAgcmVuZGVyZXItPmFuaW1hdGlvblBhdXNlZCh0aW1lT2Zmc2V0
LCBtX2JsZW5kaW5nS2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBBY2NlbGVyYXRlZEFjdGlvbjo6U2VlazoKLSAgICAgICAgICAgIGNv
bXBvc2l0ZWRSZW5kZXJlci0+YW5pbWF0aW9uU2Vla2VkKHRpbWVPZmZzZXQsIG1fYmxlbmRpbmdL
ZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVyLT5hbmltYXRp
b25TZWVrZWQodGltZU9mZnNldCwgbV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZWxlcmF0ZWRBY3Rpb246OlN0
b3A6Ci0gICAgICAgICAgICBjb21wb3NpdGVkUmVuZGVyZXItPmFuaW1hdGlvbkZpbmlzaGVkKG1f
YmxlbmRpbmdLZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVy
LT5hbmltYXRpb25GaW5pc2hlZChtX2JsZW5kaW5nS2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7
CiAgICAgICAgICAgICBpZiAoIW1fdGFyZ2V0LT5kb2N1bWVudCgpLnJlbmRlclRyZWVCZWluZ0Rl
c3Ryb3llZCgpKQogICAgICAgICAgICAgICAgIG1fdGFyZ2V0LT5pbnZhbGlkYXRlU3R5bGVBbmRM
YXllckNvbXBvc2l0aW9uKCk7CisgICAgICAgICAgICBtX2lzUnVubmluZ0FjY2VsZXJhdGVkID0g
ZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKaW5kZXggODU2MDk4MTI2MDNiZjczMDA1ODU1
M2ZmY2EzMDAxMTdiZjdiZmQ5ZC4uNjA3ZjM2NDNhZTk2NzgxYjBkNjg2YTY1YmVkZTczMTFhMGE0
MTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0Lmgi
CisjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCIKICNpbmNsdWRlICJDU1NQcm9wZXJ0
eUJsZW5kaW5nQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ29tcG9zaXRlT3BlcmF0aW9uLmgiCiAjaW5j
bHVkZSAiQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmgiCkBAIC0xMTgsMTUgKzExOSwxNiBAQCBw
dWJsaWM6CiAgICAgdm9pZCBhbmltYXRpb25UaW1lbGluZURpZENoYW5nZShBbmltYXRpb25UaW1l
bGluZSopIGZpbmFsOwogICAgIHZvaWQgYW5pbWF0aW9uVGltaW5nRGlkQ2hhbmdlKCk7CiAgICAg
dm9pZCBhcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKTsKLSAgICBib29sIGlzUnVubmlu
Z0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UmVjb3JkZWRBY2NlbGVyYXRlZEFj
dGlvbiAhPSBBY2NlbGVyYXRlZEFjdGlvbjo6U3RvcDsgfQotICAgIGJvb2wgaGFzUGVuZGluZ0Fj
Y2VsZXJhdGVkQWN0aW9uKCkgY29uc3QgeyByZXR1cm4gIW1fcGVuZGluZ0FjY2VsZXJhdGVkQWN0
aW9ucy5pc0VtcHR5KCkgJiYgaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKTsgfQogCiAgICAgdm9pZCBz
ZXRBbmltYXRpb24oV2ViQW5pbWF0aW9uKikgZmluYWw7CiAKICAgICBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlcigpIGNvbnN0IG92ZXJyaWRlOwogICAgIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50
U3R5bGUoKSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7
IHJldHVybiBtX3Nob3VsZFJ1bkFjY2VsZXJhdGVkOyB9CiAgICAgYm9vbCB0cmlnZ2Vyc1N0YWNr
aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJpZ2dlcnNTdGFja2luZ0NvbnRleHQ7IH0K
KyAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc1J1bm5p
bmdBY2NlbGVyYXRlZDsgfQorICAgIGJvb2wgaXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjY2VsZXJhdGVkUHJvcGVydGllc01lbWJlcnNoaXAgIT0gQWNjZWxlcmF0
ZWRQcm9wZXJ0aWVzOjpOb25lICYmIG1fbGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gIT0g
QWNjZWxlcmF0ZWRBY3Rpb246OlN0b3A7IH0KKyAgICBib29sIGlzQ29tcGxldGVseUFjY2VsZXJh
dGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZFByb3BlcnRpZXNNZW1iZXJzaGlwID09
IEFjY2VsZXJhdGVkUHJvcGVydGllczo6QWxsOyB9CisgICAgYm9vbCBpc0N1cnJlbnRseUFmZmVj
dGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIGJvb2wgYWNjZWxlcmF0ZWRPbmx5ID0gZmFsc2Up
IGNvbnN0OwogICAgIGJvb2wgZmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9maWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2g7IH0KICAgICBib29sIHRyYW5z
Zm9ybUZ1bmN0aW9uTGlzdHNNYXRjaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fdHJhbnNm
b3JtRnVuY3Rpb25MaXN0c01hdGNoOyB9CiAjaWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKQEAg
LTE0OCw2ICsxNTAsNyBAQCBwcml2YXRlOgogCiAgICAgZW51bSBjbGFzcyBBY2NlbGVyYXRlZEFj
dGlvbiA6IHVpbnQ4X3QgeyBQbGF5LCBQYXVzZSwgU2VlaywgU3RvcCB9OwogICAgIGVudW0gY2xh
c3MgQmxlbmRpbmdLZXlmcmFtZXNTb3VyY2UgOiB1aW50OF90IHsgQ1NTQW5pbWF0aW9uLCBDU1NU
cmFuc2l0aW9uLCBXZWJBbmltYXRpb24gfTsKKyAgICBlbnVtIGNsYXNzIEFjY2VsZXJhdGVkUHJv
cGVydGllcyA6IHVpbnQ4X3QgeyBOb25lLCBTb21lLCBBbGwgfTsKIAogICAgIHZvaWQgdXBkYXRl
RWZmZWN0U3RhY2tNZW1iZXJzaGlwKCk7CiAgICAgdm9pZCBjb3B5UHJvcGVydGllc0Zyb21Tb3Vy
Y2UoUmVmPEtleWZyYW1lRWZmZWN0PiYmKTsKQEAgLTE2Myw3ICsxNjYsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlQmxlbmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmKTsKICAgICB2b2lk
IGNvbXB1dGVDU1NBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcygpOwogICAgIHZvaWQgY29tcHV0
ZUNTU1RyYW5zaXRpb25CbGVuZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7Ci0gICAgdm9pZCBjb21wdXRlU2hvdWxk
UnVuQWNjZWxlcmF0ZWQoKTsKKyAgICB2b2lkIGNvbXB1dGVBY2NlbGVyYXRlZFByb3BlcnRpZXNN
ZW1iZXJzaGlwKCk7CiAgICAgdm9pZCBzZXRCbGVuZGluZ0tleWZyYW1lcyhLZXlmcmFtZUxpc3Qm
KTsKICAgICB2b2lkIGNoZWNrRm9yTWF0Y2hpbmdUcmFuc2Zvcm1GdW5jdGlvbkxpc3RzKCk7CiAg
ICAgdm9pZCBjaGVja0Zvck1hdGNoaW5nRmlsdGVyRnVuY3Rpb25MaXN0cygpOwpAQCAtMTgyLDcg
KzE4NSw5IEBAIHByaXZhdGU6CiAgICAgQmxlbmRpbmdLZXlmcmFtZXNTb3VyY2UgbV9ibGVuZGlu
Z0tleWZyYW1lc1NvdXJjZSB7IEJsZW5kaW5nS2V5ZnJhbWVzU291cmNlOjpXZWJBbmltYXRpb24g
fTsKICAgICBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb24gbV9pdGVyYXRpb25Db21wb3NpdGVP
cGVyYXRpb24geyBJdGVyYXRpb25Db21wb3NpdGVPcGVyYXRpb246OlJlcGxhY2UgfTsKICAgICBD
b21wb3NpdGVPcGVyYXRpb24gbV9jb21wb3NpdGVPcGVyYXRpb24geyBDb21wb3NpdGVPcGVyYXRp
b246OlJlcGxhY2UgfTsKLSAgICBib29sIG1fc2hvdWxkUnVuQWNjZWxlcmF0ZWQgeyBmYWxzZSB9
OworICAgIEFjY2VsZXJhdGVkUHJvcGVydGllcyBtX2FjY2VsZXJhdGVkUHJvcGVydGllc01lbWJl
cnNoaXAgeyBBY2NlbGVyYXRlZFByb3BlcnRpZXM6Ok5vbmUgfTsKKyAgICBBbmltYXRpb25FZmZl
Y3RQaGFzZSBtX3BoYXNlQXRMYXN0QXBwbGljYXRpb24geyBBbmltYXRpb25FZmZlY3RQaGFzZTo6
SWRsZSB9OworICAgIGJvb2wgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX25lZWRzRm9yY2VkTGF5b3V0IHsgZmFsc2UgfTsKICAgICBib29sIG1fdHJpZ2dlcnNT
dGFja2luZ0NvbnRleHQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV90cmFuc2Zvcm1GdW5jdGlvbkxp
c3RzTWF0Y2ggeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0U3RhY2suY3BwCmluZGV4IDRkNjIzYjJlMGIxNmMyNWFiZTMyYWIzNDQ2ZTY2NTQ5
ODI3NGM1MDEuLjUwMjJkMDdmNzViYjM4NzZhNTlhYWZjZDRhYjY4MTZjZDM3ZmIwYTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKQEAg
LTYwLDYgKzYwLDE1IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3RTdGFjazo6cmVtb3ZlRWZmZWN0KEtl
eWZyYW1lRWZmZWN0JiBlZmZlY3QpCiAgICAgbV9lZmZlY3RzLnJlbW92ZUZpcnN0KCZlZmZlY3Qp
OwogfQogCitib29sIEtleWZyYW1lRWZmZWN0U3RhY2s6OmlzQ3VycmVudGx5QWZmZWN0aW5nUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK3sKKyAgICBmb3IgKGF1dG8mIGVm
ZmVjdCA6IG1fZWZmZWN0cykgeworICAgICAgICBpZiAoZWZmZWN0LT5pc0N1cnJlbnRseUFmZmVj
dGluZ1Byb3BlcnR5KHByb3BlcnR5KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFZlY3RvcjxXZWFrUHRyPEtleWZyYW1lRWZmZWN0Pj4g
S2V5ZnJhbWVFZmZlY3RTdGFjazo6c29ydGVkRWZmZWN0cygpCiB7CiAgICAgZW5zdXJlRWZmZWN0
c0FyZVNvcnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0U3RhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVj
dFN0YWNrLmgKaW5kZXggYWU3ZjVjNjExNjczZDRhZDQ1MzFmZTdjYTZjMzc2OGFkZTBjMzFjZC4u
OTc4ZDg0ZGNkNTY4MGQyOGMwYTNkNjk5ZTIzM2ZkYzdkM2FlYTY5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFuaW1hdGlvbkxpc3QuaCIKKyNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi9XZWFrUHRyLmg+CiAKQEAgLTQ1LDYgKzQ2LDcgQEAgcHVibGljOgogICAgIFZlY3RvcjxXZWFr
UHRyPEtleWZyYW1lRWZmZWN0Pj4gc29ydGVkRWZmZWN0cygpOwogICAgIGNvbnN0IEFuaW1hdGlv
bkxpc3QqIGNzc0FuaW1hdGlvbkxpc3QoKSBjb25zdCB7IHJldHVybiBtX2Nzc0FuaW1hdGlvbkxp
c3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldENTU0FuaW1hdGlvbkxpc3QoUmVmUHRyPGNvbnN0IEFu
aW1hdGlvbkxpc3Q+JiYpOworICAgIGJvb2wgaXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuc3VyZUVmZmVjdHNB
cmVTb3J0ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKaW5k
ZXggM2I4NzkwYWEzZDllZDI2NWQxNzZkZmM3YTFiNWY0NDg2NTI3M2I3Ny4uODFiMWNiNTk3ZTZk
ZDU1MzNhZTFlMjVjMDg1ZmFhY2ZlNzc0ZTg0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5jcHAKQEAgLTI1Nyw2ICsyNTcsOSBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6
ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0LCBFbGVtZW50KiBu
ZXdUYQogCiAgICAgaWYgKG5ld1RhcmdldCkKICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9u
V2FzQWRkZWRUb0VsZW1lbnQoKnRoaXMsICpuZXdUYXJnZXQpOworCisgICAgLy8gVGhpcyBjb3Vs
ZCBoYXZlIGNoYW5nZWQgd2hldGhlciB3ZSBoYXZlIHJlcGxhY2VkIGFuaW1hdGlvbnMsIHNvIHdl
IG1heSBuZWVkIHRvIHNjaGVkdWxlIGFuIHVwZGF0ZS4KKyAgICBtX3RpbWVsaW5lLT5hbmltYXRp
b25UaW1pbmdEaWRDaGFuZ2UoKnRoaXMpOwogfQogCiBPcHRpb25hbDxkb3VibGU+IFdlYkFuaW1h
dGlvbjo6c3RhcnRUaW1lKCkgY29uc3QKQEAgLTExMzcsNiArMTE0MCwxMSBAQCBib29sIFdlYkFu
aW1hdGlvbjo6aXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSBjb25zdAogICAgIHJldHVybiBpczxLZXlm
cmFtZUVmZmVjdD4obV9lZmZlY3QpICYmIGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PigqbV9lZmZl
Y3QpLmlzUnVubmluZ0FjY2VsZXJhdGVkKCk7CiB9CiAKK2Jvb2wgV2ViQW5pbWF0aW9uOjppc0Nv
bXBsZXRlbHlBY2NlbGVyYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGlzPEtleWZyYW1lRWZm
ZWN0PihtX2VmZmVjdCkgJiYgZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCptX2VmZmVjdCkuaXND
b21wbGV0ZWx5QWNjZWxlcmF0ZWQoKTsKK30KKwogYm9vbCBXZWJBbmltYXRpb246Om5lZWRzVGlj
aygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBlbmRpbmcoKSB8fCBwbGF5U3RhdGUoKSA9PSBQbGF5
U3RhdGU6OlJ1bm5pbmc7CkBAIC0xMjM3LDYgKzEyNDUsOSBAQCBib29sIFdlYkFuaW1hdGlvbjo6
Y29tcHV0ZVJlbGV2YW5jZSgpCiAgICAgaWYgKCFtX2VmZmVjdCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgaWYgKG1fcmVwbGFjZVN0YXRlID09IFJlcGxhY2VTdGF0ZTo6UmVtb3ZlZCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgYXV0byB0aW1pbmcgPSBtX2VmZmVjdC0+Z2V0
QmFzaWNUaW1pbmcoKTsKIAogICAgIC8vIEFuIGFuaW1hdGlvbiBlZmZlY3QgaXMgaW4gZWZmZWN0
IGlmIGl0cyBhY3RpdmUgdGltZSBpcyBub3QgdW5yZXNvbHZlZC4KQEAgLTEzNzYsNyArMTM4Nyw2
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKCkKIAogU2Vj
b25kcyBXZWJBbmltYXRpb246OnRpbWVUb05leHRUaWNrKCkgY29uc3QKIHsKLSAgICAvLyBBbnkg
YW5pbWF0aW9uIHRoYXQgaXMgcGVuZGluZyBuZWVkcyBpbW1lZGlhdGUgcmVzb2x1dGlvbi4KICAg
ICBpZiAocGVuZGluZygpKQogICAgICAgICByZXR1cm4gMF9zOwogCkBAIC0xMzkzLDcgKzE0MDMs
NyBAQCBTZWNvbmRzIFdlYkFuaW1hdGlvbjo6dGltZVRvTmV4dFRpY2soKSBjb25zdAogICAgICAg
ICByZXR1cm4gKGVmZmVjdC5kZWxheSgpIC0gdGltaW5nLmxvY2FsVGltZS52YWx1ZSgpKSAvIHBs
YXliYWNrUmF0ZTsKICAgICBjYXNlIEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpBY3RpdmU6CiAgICAg
ICAgIC8vIE5vbi1hY2NlbGVyYXRlZCBhbmltYXRpb25zIGluIHRoZSAiYWN0aXZlIiBwaGFzZSB3
aWxsIG5lZWQgdG8gdXBkYXRlIHRoZWlyIGFuaW1hdGVkIHZhbHVlIGF0IHRoZSBpbW1lZGlhdGUg
bmV4dCBvcHBvcnR1bml0eS4KLSAgICAgICAgaWYgKCFpc1J1bm5pbmdBY2NlbGVyYXRlZCgpKQor
ICAgICAgICBpZiAoIWlzQ29tcGxldGVseUFjY2VsZXJhdGVkKCkpCiAgICAgICAgICAgICByZXR1
cm4gMF9zOwogICAgICAgICAvLyBBY2NlbGVyYXRlZCBDU1MgQW5pbWF0aW9ucyBuZWVkIHRvIHRy
aWdnZXIgImFuaW1hdGlvbml0ZXJhdGlvbiIgZXZlbnRzLCBpbiB0aGlzIGNhc2Ugd2UgY2FuIHdh
aXQgdW50aWwgdGhlIG5leHQgaXRlcmF0aW9uLgogICAgICAgICBpZiAoaXNDU1NBbmltYXRpb24o
KSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCmluZGV4IGRhNGQ4ZWMz
YmMyZTU3MGI0OGE1MWRiYzE0YTM0NGU2YzQ5YmEwNzAuLjAzZTQwZWNhOWM1ZWUwODFjOWUzNzNh
N2NhNWJiNTY1NGU0NjFmYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9X
ZWJBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmgKQEAgLTExOSw2ICsxMTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBseVBlbmRpbmdBY2Nl
bGVyYXRlZEFjdGlvbnMoKTsKIAogICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSBjb25z
dDsKKyAgICBib29sIGlzQ29tcGxldGVseUFjY2VsZXJhdGVkKCkgY29uc3Q7CiAgICAgYm9vbCBp
c1JlbGV2YW50KCkgY29uc3QgeyByZXR1cm4gbV9pc1JlbGV2YW50OyB9CiAgICAgdm9pZCB1cGRh
dGVSZWxldmFuY2UoKTsKICAgICB2b2lkIGVmZmVjdFRpbWluZ0RpZENoYW5nZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCmluZGV4IDAzYjkyNmI2OGQ2NzEwZjA1YTU3YjFjNjBhNWEwMzExNWMyMzUz
ODYuLmJkZjc0MjJlZDcyNWQ4ZWExM2M0ZDQ0YTA2MmVmMTlhNTQ3NWQyYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKQEAgLTM3MDksNiArMzcwOSwxMSBAQCBJbnRlcnNlY3Rpb25PYnNlcnZlckRh
dGEqIEVsZW1lbnQ6OmludGVyc2VjdGlvbk9ic2VydmVyRGF0YSgpCiAKICNlbmRpZgogCitLZXlm
cmFtZUVmZmVjdFN0YWNrKiBFbGVtZW50OjprZXlmcmFtZUVmZmVjdFN0YWNrKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5rZXlmcmFtZUVm
ZmVjdFN0YWNrKCkgOiBudWxscHRyOworfQorCiBLZXlmcmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50
OjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkKIHsKICAgICBhdXRvJiByYXJlRGF0YSA9IGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpOwpAQCAtMzczNCw3ICszNzM5LDcgQEAgT3B0aW9uU2V0PEFu
aW1hdGlvbkltcGFjdD4gRWxlbWVudDo6YXBwbHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUm
IHRhcmdldFN0eWwKICAgICAgICAgQVNTRVJUKGVmZmVjdC0+YW5pbWF0aW9uKCkpOwogICAgICAg
ICBlZmZlY3QtPmFuaW1hdGlvbigpLT5yZXNvbHZlKHRhcmdldFN0eWxlKTsKIAotICAgICAgICBp
ZiAoZWZmZWN0LT5pc0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGlmIChlZmZlY3QtPmlzUnVubmlu
Z0FjY2VsZXJhdGVkKCkgfHwgZWZmZWN0LT5pc0Fib3V0VG9SdW5BY2NlbGVyYXRlZCgpKQogICAg
ICAgICAgICAgaW1wYWN0LmFkZChBbmltYXRpb25JbXBhY3Q6OlJlcXVpcmVzUmVjb21wb3NpdGUp
OwogCiAgICAgICAgIGlmIChlZmZlY3QtPnRyaWdnZXJzU3RhY2tpbmdDb250ZXh0KCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaAppbmRleCAyMDYyNTQzOTdiYTZmMTllZjJlY2NmYWU4NTJkN2FkZmY0OTk2OTZm
Li42YTdhOGU3ZWQ1YzllNzlmMzMyNTY4NDJkNmUwNmM4MWQ0MWM5MWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgKQEAgLTQ4Miw2ICs0ODIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRIYXNDU1NBbmlt
YXRpb24oKTsKICAgICB2b2lkIGNsZWFySGFzQ1NTQW5pbWF0aW9uKCk7CiAKKyAgICBLZXlmcmFt
ZUVmZmVjdFN0YWNrKiBrZXlmcmFtZUVmZmVjdFN0YWNrKCkgY29uc3Q7CiAgICAgS2V5ZnJhbWVF
ZmZlY3RTdGFjayYgZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpOwogICAgIGJvb2wgaGFzS2V5
ZnJhbWVFZmZlY3RzKCkgY29uc3Q7CiAgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gYXBw
bHlLZXlmcmFtZUVmZmVjdHMoUmVuZGVyU3R5bGUmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggNDNkYmFjMDQzMGYzYmQ5
Y2IyNGRjNTE2MTBmMzg5NGRjYjAyZmZlNC4uODU2MDUwYWFlYWVjNzFjYmMxYjQ5YTBhODA2MmZj
MGYyYjZlZjI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xp
ZW50LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRUaW1lbGluZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiRnVsbHNjcmVlbk1hbmFnZXIuaCIK
QEAgLTQyLDYgKzQxLDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCisjaW5j
bHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIkxheWVyQW5jZXN0b3JDbGlw
cGluZ1N0YWNrLmgiCiAjaW5jbHVkZSAiTGF5ZXJPdmVybGFwTWFwLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgpAQCAtMjc3OCw5ICsyNzc4LDE0IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChhdXRvKiBlbGVtZW50ID0gcmVuZGVyZXIu
ZWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB0aW1lbGluZSA9IGVsZW1lbnQtPmRvY3Vt
ZW50KCkuZXhpc3RpbmdUaW1lbGluZSgpKSB7Ci0gICAgICAgICAgICBpZiAodGltZWxpbmUtPnJ1
bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKCplbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGF1dG8qIGVmZmVjdHNTdGFj
ayA9IGVsZW1lbnQtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkgeworICAgICAgICAgICAgcmV0dXJu
IChlZmZlY3RzU3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlP
cGFjaXR5KQorICAgICAgICAgICAgICAgICYmICh1c2VzQ29tcG9zaXRpbmcoKSB8fCAobV9jb21w
b3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpBbmltYXRlZE9wYWNpdHlUcmlnZ2VyKSkp
CisgICAgICAgICAgICAgICAgfHwgZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1By
b3BlcnR5KENTU1Byb3BlcnR5RmlsdGVyKQorI2lmIEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCisg
ICAgICAgICAgICAgICAgfHwgZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1Byb3Bl
cnR5KENTU1Byb3BlcnR5V2Via2l0QmFja2Ryb3BGaWx0ZXIpCisjZW5kaWYKKyAgICAgICAgICAg
ICAgICB8fCBlZmZlY3RzU3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJv
cGVydHlUcmFuc2Zvcm0pOwogICAgICAgICB9CiAgICAgfQogCkBAIC0zMzM3LDEyICszMzQyLDkg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlv
bihSZW5kZXJMYXllck1vZGVsT2JqZWN0JgogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2Vy
cyAmIENocm9tZUNsaWVudDo6QW5pbWF0aW9uVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndl
YkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbkVuYWJsZWQoKSkgewotICAgICAgICBpZiAoYXV0byog
ZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHRp
bWVsaW5lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRpbWVsaW5lLT5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKHJl
bmRlcmVyLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChhdXRvKiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKSB7Cisg
ICAgICAgIGlmIChhdXRvKiBlZmZlY3RzU3RhY2sgPSBlbGVtZW50LT5rZXlmcmFtZUVmZmVjdFN0
YWNrKCkpCisgICAgICAgICAgICByZXR1cm4gZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVj
dGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKICAgICB9CiAgICAgcmV0dXJuIHJl
bmRlcmVyLmFuaW1hdGlvbigpLmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIocmVuZGVyZXIs
IENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjZTQzM2M2M2MzM2RhOWRlNDkxMDIy
MGEyODU0ODc3Zjc0MDMzNWIyLi44Nzc4MjcxY2Q0ZTllNDFjNWI5ZmMyMzIzNjNkMDgyMDc3NTE4
MWQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDEtMjggIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEFuaW1hdGlvbnMg
c2hvdWxkIHJ1biBhY2NlbGVyYXRlZCBldmVuIGlmIG90aGVyIGFuaW1hdGlvbnMgdGFyZ2V0aW5n
IHRoZSBzYW1lIGVsZW1lbnQgYXJlIG5vdCBhY2NlbGVyYXRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2ODkwCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81ODk2MTc1MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgc29tZSB0ZXN0cyB0aGF0IGFzc3VtZWQgYSBtaXggb2YgYWNjZWxlcmF0
ZWQgYW5kIG5vbi1hY2NlbGVyYXRlZCBwcm9wZXJ0aWVzIHdvdWxkIG5vdCB5aWVsZCBhY2NlbGVy
YXRlZCBhbmltYXRpb25zLgorCisgICAgICAgICogd2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFj
aXR5LWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvcGFydGx5LWFjY2VsZXJhdGVkLXRyYW5zaXRpb24t
YnktcmVtb3ZpbmctcHJvcGVydHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmFuaW1hdGlv
bnMvd2lkdGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGlu
Zy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvd2lkdGgtYW5k
LW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy5odG1sOiBSZW5h
bWVkIGZyb20gTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFjaXR5LWFuaW1h
dGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmcuaHRtbC4KKyAgICAgICAgKiB3ZWJhbmltYXRpb25z
L3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRp
bmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvd2lkdGgt
YW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1s
OiBSZW1vdmVkLgorCiAyMDIwLTAxLTI4ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBw
bGUuY29tPgogCiAgICAgICAgIFsgaU9TIHdrMiByZWxlYXNlIGFuZCBNYWMgXSBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzLzJkY29udGV4dC9pbWFnZWJpdG1hcC9jcmVhdGVJbWFnZUJp
dG1hcC1zZXJpYWxpemFibGUuaHRtbCBmbGFreSBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1j
b21wb3NpdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQt
YW5kLW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRi
MGFhZDdiZGVkMDhiZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlv
bi15aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEg
KzAsMCBAQAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5k
LW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sIGIvTGF5b3V0VGVz
dHMvd2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlvbi15aWVsZHMtbm8tY29t
cG9zaXRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiMGY0M2U5ZDk3
N2E1MWEyZmM0ZGE4OTQ0ODc1OTc5MzNkZTliYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9w
YWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsMTUgKzAsMCBAQAotPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Ci08ZGl2IGlkPSJ0YXJn
ZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6
IGJsYWNrOyI+PC9kaXY+Ci08c2NyaXB0PgotCi1jb25zdCBhbmltYXRpb24gPSBuZXcgQW5pbWF0
aW9uKG5ldyBLZXlmcmFtZUVmZmVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iiks
IFsKLSAgICB7IGxlZnQ6IDAsIG9wYWNpdHk6IDEgfSwKLSAgICB7IGxlZnQ6ICIxMDBweCIsIG9w
YWNpdHk6IDAgfQotXSkpOwotYW5pbWF0aW9uLnN0YXJ0VGltZSA9IDA7Ci1hbmltYXRpb24uZWZm
ZWN0LnVwZGF0ZVRpbWluZyh7IGR1cmF0aW9uIDogMTAwMCB9KTsKLQotdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVyVGV4dCA9
IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOwotCi08L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvcGFydGx5LWFjY2VsZXJhdGVkLXRyYW5z
aXRpb24tYnktcmVtb3ZpbmctcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlvbi1ieS1yZW1vdmluZy1wcm9w
ZXJ0eS1leHBlY3RlZC50eHQKaW5kZXggOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2Jk
ZWQwOGJkYy4uYTYwNjZkZjI3MWY0MjY1Njk3MTFlNWZmZWI0NDhkN2YwNmZjNTMxZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNp
dGlvbi1ieS1yZW1vdmluZy1wcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
d2ViYW5pbWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlvbi1ieS1yZW1vdmluZy1w
cm9wZXJ0eS1leHBlY3RlZC50eHQKQEAgLTEgKzEsMTkgQEAKKyhHcmFwaGljc0xheWVyCisgIChh
bmNob3IgMC4wMCAwLjAwKQorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAx
CisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAg
IChjb250ZW50c09wYXF1ZSAxKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNz
TGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gMTA4LjAwIDEzLjAwKQorICAgICAgICAgIChib3Vu
ZHMgMTAwLjAwIDEwMC4wMCkKKyAgICAgICAgICAob3BhY2l0eSAwLjUwKQorICAgICAgICAgIChj
b250ZW50c09wYXF1ZSAxKQorICAgICAgICApCisgICAgICApCisgICAgKQorICApCispCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvd2lkdGgtYW5kLW9wYWNpdHktc2Vw
YXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15
aWVsZHMtY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmYzZkMDA0NzI1Y2U4
MjA0Mzg2ZmQ5MGZiOWJlYWFkZWIyNmI1MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVs
ZHMtY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKKyhHcmFwaGljc0xh
eWVyCisgIChhbmNob3IgMC4wMCAwLjAwKQorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChj
aGlsZHJlbiAxCisgICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4w
MCkKKyAgICAgIChjb250ZW50c09wYXF1ZSAxKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAg
KEdyYXBoaWNzTGF5ZXIKKyAgICAgICAgICAocG9zaXRpb24gOC4wMCA4LjAwKQorICAgICAgICAg
IChib3VuZHMgMTAwLjAwIDEwMC4wMCkKKyAgICAgICAgICAoY29udGVudHNPcGFxdWUgMSkKKyAg
ICAgICAgKQorICAgICAgKQorICAgICkKKyAgKQorKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVs
ZHMtY29tcG9zaXRpbmcuaHRtbCBiL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvd2lkdGgtYW5k
LW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNiOWMxYTgwYzgzYWRiMjc3OWQ1YjE0YzkxNDBiYzM3YjMzNDE0MzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNl
cGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtY29tcG9zaXRpbmcuaHRtbApAQCAtMCwwICsxLDEzIEBA
Cis8cHJlIGlkPSJyZXN1bHRzIj48L3ByZT4KKzxkaXYgaWQ9InRhcmdldCIgc3R5bGU9IndpZHRo
OiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7Ij48L2Rpdj4K
KzxzY3JpcHQ+CisKK3RhcmdldC5hbmltYXRlKFsKKyAgICB7IG9wYWNpdHk6IDEsIHdpZHRoOiAi
MTAwcHgiIH0sCisgICAgeyBvcGFjaXR5OiAwLCB3aWR0aDogIjIwMHB4IiB9CitdLCAxMDAwKTsK
KwordGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0cyIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOwor
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvd2lkdGgt
YW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNl
cGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3
YmRlZDA4YmRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvd2lkdGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5p
bWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSArMCwwIEBACi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvd2lk
dGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5o
dG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0
ZS1hbmltYXRpb24teWllbGRzLW5vLWNvbXBvc2l0aW5nLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU0NTFhZmQyNTViOGFiYzVjMjhhMWViNWU4YjJjMTVlYWNmMGFmNjQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
d2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24teWllbGRz
LW5vLWNvbXBvc2l0aW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi08cHJl
IGlkPSJyZXN1bHRzIj48L3ByZT4KLTxkaXYgaWQ9InRhcmdldCIgc3R5bGU9IndpZHRoOiAxMDBw
eDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7Ij48L2Rpdj4KLTxzY3Jp
cHQ+Ci0KLWNvbnN0IG9wYWNpdHlBbmltYXRpb24gPSBuZXcgQW5pbWF0aW9uKG5ldyBLZXlmcmFt
ZUVmZmVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIFsKLSAgICB7IG9wYWNp
dHk6IDEgfSwKLSAgICB7IG9wYWNpdHk6IDAgfQotXSkpOwotb3BhY2l0eUFuaW1hdGlvbi5zdGFy
dFRpbWUgPSAwOwotb3BhY2l0eUFuaW1hdGlvbi5lZmZlY3QudXBkYXRlVGltaW5nKHsgZHVyYXRp
b24gOiAxMDAwIH0pOwotCi1jb25zdCB3aWR0aEFuaW1hdGlvbiA9IG5ldyBBbmltYXRpb24obmV3
IEtleWZyYW1lRWZmZWN0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQiKSwgWwotICAg
IHsgd2lkdGg6ICIxMDBweCIgfSwKLSAgICB7IHdpZHRoOiAiMjAwcHgiIH0KLV0pKTsKLXdpZHRo
QW5pbWF0aW9uLnN0YXJ0VGltZSA9IDA7Ci13aWR0aEFuaW1hdGlvbi5lZmZlY3QudXBkYXRlVGlt
aW5nKHsgZHVyYXRpb24gOiAxMDAwIH0pOwotCi10ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKLWRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHRzIikuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLmxh
eWVyVHJlZUFzVGV4dChkb2N1bWVudCk7Ci0KLTwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389159</attachid>
            <date>2020-01-29 11:08:39 -0800</date>
            <delta_ts>2020-01-29 13:22:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206890-20200129200837.patch</filename>
            <type>text/plain</type>
            <size>54921</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU1MjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDAyZDU2MmJhMGUyNzI0
ODhiOGIyZDc1YzNmYTlmYWM0OGVlZTM5Ni4uZGQzODBiYjcwOThlNzUxZmI5NzhlNjJhZWFkNzI2
MDhlYzlhZTllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDIwLTAxLTI4ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBBbmltYXRpb25zIHNob3VsZCBydW4gYWNjZWxlcmF0ZWQgZXZlbiBpZiBvdGhlciBhbmltYXRp
b25zIHRhcmdldGluZyB0aGUgc2FtZSBlbGVtZW50IGFyZSBub3QgYWNjZWxlcmF0ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjg5MAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNTg5NjE3NTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVGVzdDogd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0
eS1zZXBhcmF0ZS1hbmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLmh0bWwKKworICAgICAgICBJ
biB0aGUgV2ViIEFuaW1hdGlvbnMgaW1wbGVtZW50YXRpb24sIHdoZW4gYW4gZWxlbWVudCBoYXMg
c29tZSBhbmltYXRlZCBwcm9wZXJ0aWVzIHRoYXQgY2FuIGJlIGFjY2VsZXJhdGVkIGFuZCBzb21l
IHRoYXQgY2Fubm90IGJlLCB3ZSB3b3VsZCBuZXZlcgorICAgICAgICBydW4gYWNjZWxlcmF0ZWQg
YW5pbWF0aW9ucyBhdCBhbGwuIEhvd2V2ZXIsIGluIHRoZSAibGVnYWN5IiBhbmltYXRpb24gZW5n
aW5lLCB3ZSB3b3VsZCBhbmltYXRlIHByb3BlcnRpZXMgdGhhdCBjYW4gYmUgYWNjbGVyYXRlZCBp
ZiBwb3NzaWJsZS4KKyAgICAgICAgV2Ugbm93IGF0dGVtcHQgdG8gcnVuIGFjY2VsZXJhdGVkIGFu
aW1hdGlvbnMgcHJvdmlkZWQgYXQgbGVhc3Qgb25lIGFuaW1hdGlvbiBpcyBhY2NlbGVyYXRlZC4K
KworICAgICAgICBUbyBkbyB0aGF0LCB3ZSBub3cga2VlcCB0cmFjayBvZiB3aGV0aGVyIG5vbmUs
IHNvbWUgb3IgYWxsIG9mIHRoZSBhbmltYXRlZCBwcm9wZXJ0aWVzIG9mIGEgZ2l2ZW4gS2V5ZnJh
bWVFZmZlY3QgYXJlIGFjY2VsZXJhdGVkIHVzaW5nIHRoZSBuZXcKKyAgICAgICAgbV9hY2NlbGVy
YXRlZFByb3BlcnRpZXNTdGF0ZSBpbnN0YW5jZSB2YXJpYWJsZS4gV2UgY29tcHV0ZSB0aGlzIHBy
b3BlcnR5IHdoZW4gY3JlYXRpbmcgdGhlIGJsZW5kaW5nIGtleWZyYW1lcyBmb3IgdGhlIGVmZmVj
dC4gCisgICAgICAgIAorICAgICAgICBUaGVuLCBhcyB0aW1lIHByb2dyZXNzZXMgYW5kIHRoZSBl
ZmZlY3QgaXMgcmVzb2x2ZWQsIHVwZGF0ZUFjY2VsZXJhdGVkQWN0aW9ucygpIGlzIGNhbGxlZCBh
bmQgd2Ugc2ltcGx5IHVzZSB0aGUgZWZmZWN0J3MgcGhhc2UgdG8gZGV0ZXJtaW5lCisgICAgICAg
IHdoZXRoZXIgd2UgbmVlZCB0byBlbnF1ZXVlIGFjdGlvbnMgdG8gc3RhcnQsIHBhdXNlLCBzZWVr
IG9yIGVuZCBhY2NlbGVyYXRlZCBhbmltYXRpb25zLiBUaGlzIGlzIGFuIGltcHJvdmVtZW50IG92
ZXIgaG93IHRoaXMgbWV0aG9kIHVzZWQgdG8gd29yaworICAgICAgICBzaW5jZSB3ZSB3b3VsZCBy
dW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9ucyB3aGlsZSBpbiB0aGVpciBkZWxheSBwaGFzZSwgd2hp
Y2ggZGlkIG5vdCBtYXRjaCB0aGUgImxlZ2FjeSIgYW5pbWF0aW9uIGVuZ2luZSdzIGJlaGF2aW9y
LgorCisgICAgICAgIFdlJ3ZlIGFsc28gcmVtb3ZlZCB0aGUgc2luZ2xlIG1ldGhvZCB0aGF0IHBy
b3ZpZGVkIHRoZSBhY2NlbGVyYXRlZCBjaGFyYWN0ZXJpc3RpY3Mgb2YgYSBLZXlmcmFtZUVmZmVj
dCwgaXNBY2NlbGVyYXRlZCgpLCB3aXRoIGEgZmV3IG1vcmUgbWV0aG9kczoKKworICAgICAgICAg
ICAgLSBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpOiB0aGUgZWZmZWN0IGlzIGN1cnJlbnRseSBydW5u
aW5nIGFjY2VsZXJhdGVkIGFuaW1hdGlvbnMuCisgICAgICAgICAgICAtIGlzQWJvdXRUb1J1bkFj
Y2VsZXJhdGVkKCk6IHRoZSBlZmZlY3QgaGFzIHBlbmRpbmcgYWNjZWxlcmF0ZWQgYWN0aW9ucyB0
aGF0IHNob3VsZCBtYWtlIGl0IHJ1biBhY2NlbGVyYXRlZCBhbmltYXRpb25zIHdoZW4gYWNjZWxl
cmF0ZWQgYWN0aW9ucworICAgICAgICAgICAgYXJlIHVwZGF0ZWQgbmV4dC4KKyAgICAgICAgICAg
IC0gaXNDb21wbGV0ZWx5QWNjZWxlcmF0ZWQoKTogdGhlIGVmZmVjdCBhbmltYXRlcyBvbmx5IGFj
Y2VsZXJhdGVkIHByb3BlcnRpZXMuCisgICAgICAgICAgICAtIGlzQ3VycmVudGx5QWZmZWN0aW5n
UHJvcGVydHkocHJvcGVydHksIGFjY2VsZXJhdGVkKTogdGhlIGVmZmVjdCBpcyBjdXJyZW50bHkg
YW5pbWF0aW5nIHRoZSBnaXZlbiBwcm9wZXJ0eSwgd2l0aCB0aGUgb3B0aW9uIHRvIHNwZWNpZnkg
d2hldGhlcgorICAgICAgICAgICAgdGhhdCBhbmltYXRpb24gaXMgYWNjZWxlcmF0ZWQuCisKKyAg
ICAgICAgV2UgdXNlIHRoaXMgaW5mb3JtYXRpb24gaW4gYSBmZXcgbmV3IHBsYWNlcy4gSWYgYW4g
ZWZmZWN0IHJldHVybnMgdHJ1ZSBmb3IgZWl0aGVyIGlzUnVubmluZ0FjY2VsZXJhdGVkKCkgb3Ig
aXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQoKSB3aGVuCisgICAgICAgIEVsZW1lbnQ6OmFwcGx5S2V5
ZnJhbWVFZmZlY3RzKCkgaXMgY2FsbGVkLCB3ZSBzZXQgdGhlIEFuaW1hdGlvbkltcGFjdDo6UmVx
dWlyZXNSZWNvbXBvc2l0ZSBmbGFnLiBJbiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JBbmltYXRpb24oKSwKKyAgICAgICAgaWYgYW4gZWZmZWN0IHJldHVybnMg
dHJ1ZSBmb3IgaXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eSgpIHdpdGggdGhlIGFjY2VsZXJh
dGVkIGZsYWcgc2V0IHRvIHRydWUsIHRoZSBtZXRob2QgcmV0dXJucyB0cnVlLCBtYXRjaGluZyB0
aGUgbG9naWMKKyAgICAgICAgdXNlZCBieSB0aGUgImxlZ2FjeSIgYW5pbWF0aW9uIGVuZ2luZS4K
KworICAgICAgICBBbGwgaW4gYWxsLCB0aGlzIGJldHRlciBhbGlnbnMgdGhlIGJlaGF2aW9yIG9m
IHRoZSAibGVnYWN5IiBhbmQgV2ViIEFuaW1hdGlvbnMgZW5naW5lcyB0byBydW4gYWNjZWxlcmF0
ZWQgYW5pbWF0aW9ucyBpbiB0aGUgc2FtZSBjaXJjdW1zdGFuY2VzLgorCisgICAgICAgICogYW5p
bWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
blRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eSk6IFVz
ZSBLZXlmcmFtZUVmZmZlY3Q6OmlzUnVubmluZ0FjY2VsZXJhdGVkKCkgaW5zdGVhZCBvZiBLZXlm
cmFtZUVmZmVjdDo6aXNBY2NlbGVyYXRlZCgpLgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVu
dFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmlzUnVu
bmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlciBjb25zdCk6IFVzZSBLZXlmcmFtZUVm
ZmVjdDo6aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eSgpIGluc3RlYWQgb2YgY2hlY2tpbmcg
Ym90aAorICAgICAgICBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpIGFuZCBtYW51YWxseSBsb29raW5n
IGF0IHRoZSBlZmZlY3QncyBhbmltYXRlZCBwcm9wZXJ0aWVzLgorICAgICAgICAqIGFuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6
c2V0QmxlbmRpbmdLZXlmcmFtZXMpOiBDYWxsIGNvbXB1dGVBY2NlbGVyYXRlZFByb3BlcnRpZXNT
dGF0ZSgpIGluc3RlYWQgb2YgdGhlIG5vdy1kZWZ1bmN0IGNvbXB1dGVTaG91bGRSdW5BY2NlbGVy
YXRlZCgpLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KTogS2VlcCB0
cmFjayBvZiB0aGUgbmV3bHkgY29tcHV0ZWQgcGhhc2Ugc28gdGhhdCB3ZSBtYXkgdXNlIGl0IGlu
IHRoZSBuZXcgaXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eSgpIHdpdGhvdXQgaGF2aW5nCisg
ICAgICAgIHRvIHJlY29tcHV0ZSBpdCBvbiBlYWNoIGNhbGwuCisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eSBjb25zdCk6IEluZGlj
YXRlcyB3aGV0aGVyIGEgZ2l2ZW4gcHJvcGVydHkgaXMgY3VycmVudGx5IGFuaW1hdGVkIChhY3Rp
dmUgcGhhc2UpIHdpdGggdGhlIG9wdGlvbgorICAgICAgICB0byBzcGVjaWZ5IHdoZXRoZXIgdGhh
dCBhbmltYXRpb24gaXMgYWNjZWxlcmF0ZWQuCisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVm
ZmVjdDo6Y29tcHV0ZUFjY2VsZXJhdGVkUHJvcGVydGllc1N0YXRlKTogQ29tcHV0ZSB3aGV0aGVy
IG5vbmUsIHNvbWUgb3IgYWxsIG9mIHRoZSBhbmltYXRlZCBwcm9wZXJ0aWVzIG9mIHRoZSBnaXZl
biBlZmZlY3QgY2FuIGJlIGFjY2VsZXJhdGVkLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVF
ZmZlY3Q6OnVwZGF0ZUFjY2VsZXJhdGVkQWN0aW9ucyk6IFVzZSB0aGUgcGhhc2UgdG8gZGV0ZXJt
aW5lIHdoaWNoIGFjY2VsZXJhdGVkIGFjdGlvbnMgdG8gZW5xdWV1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0OjphbmltYXRpb25EaWRTZWVrKTogVXNlIHRoZSBuZXcgbV9pc1J1
bm5pbmdBY2NlbGVyYXRlZCBzdGF0ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYW5pbWF0aW9u
IGlzIHByZXNlbnRseSBydW5uaW5nIGFjY2VsZXJhdGVkLgorICAgICAgICAoV2ViQ29yZTo6S2V5
ZnJhbWVFZmZlY3Q6OmFuaW1hdGlvbldhc0NhbmNlbGVkKTogVXNlIHRoZSBuZXcgbV9pc1J1bm5p
bmdBY2NlbGVyYXRlZCBzdGF0ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYW5pbWF0aW9uIGlz
IHByZXNlbnRseSBydW5uaW5nIGFjY2VsZXJhdGVkLgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJh
bWVFZmZlY3Q6OmFuaW1hdGlvblN1c3BlbnNpb25TdGF0ZURpZENoYW5nZSk6IFVzZSB0aGUgbmV3
IG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQgc3RhdGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGFu
aW1hdGlvbiBpcyBwcmVzZW50bHkgcnVubmluZyBhY2NlbGVyYXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMpOiAKKyAg
ICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6Oktl
eWZyYW1lRWZmZWN0Ojppc1J1bm5pbmdBY2NlbGVyYXRlZCBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpLZXlmcmFtZUVmZmVjdDo6aXNBYm91dFRvUnVuQWNjZWxlcmF0ZWQgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmlzQ29tcGxldGVseUFjY2VsZXJhdGVkIGNv
bnN0KToKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdFN0YWNrOjppc0N1cnJlbnRseUFmZmVjdGluZ1By
b3BlcnR5IGNvbnN0KTogSW5kaWNhdGVzIHdoZXRoZXIgYW55IG9mIHRoZSBlZmZlY3RzIGluIHRo
ZSBzdGFjayBhbmltYXRlcyBhIGdpdmVuIHByb3BlcnR5LCB3aXRoIHRoZSBvcHRpb24KKyAgICAg
ICAgdG8gc3BlY2lmeSB3aGV0aGVyIHRoZSBhbmltYXRpb24gc2hvdWxkIGJlIGFjY2VsZXJhdGVk
LgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmg6CisgICAgICAgICog
YW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRp
b246OmVmZmVjdFRhcmdldERpZENoYW5nZSk6IEVuc3VyZSB3ZSBzY2hlZHVsZSBhbiBhbmltYXRp
b24gdXBkYXRlIGlmIGFuIGVmZmVjdCBpcyBubyBsb25nZXIgYW5pbWF0aW5nIGEgZ2l2ZW4gZWxl
bWVudCBvciBuZXdseSBhbmltYXRpbmcgYW4gZWxlbWVudCwKKyAgICAgICAgdG8gZW5zdXJlIHRo
YXQgcmVwbGFjZWQgYW5pbWF0aW9ucyBtYXkgYmUgcmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6
OldlYkFuaW1hdGlvbjo6aXNDb21wbGV0ZWx5QWNjZWxlcmF0ZWQgY29uc3QpOiBDb252ZW5pZW5j
ZSBmdW5jdGlvbiB0byBjYWxsIGlzQ29tcGxldGVseUFjY2VsZXJhdGVkKCkgb24gdGhlIGFuaW1h
dGlvbidzIGVmZmVjdC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6Y29tcHV0ZVJl
bGV2YW5jZSk6IENoZWNrIHRoZSByZXBsYWNlZCBzdGF0ZSB3aGVuIGNvbXB1dGluZyByZWxldmFu
Y2UuCisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnRpbWVUb05leHRUaWNrIGNvbnN0
KTogU2NoZWR1bGUgYW4gaW1tZWRpYXRlIHVwZGF0ZSBpZiBhIGdpdmVuIGFuaW1hdGlvbiBpcyBu
b3QgX2NvbXBsZXRlbHlfIGFjY2VsZXJhdGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmlt
YXRpb24uaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjprZXlmcmFtZUVmZmVjdFN0YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKTogU2V0IHRoZSBBbmltYXRpb25JbXBhY3Q6OlJl
cXVpcmVzUmVjb21wb3NpdGUgZmxhZyB3aGVuIHRoZSBhbmltYXRpb24gaXMgZWl0aGVyIGN1cnJl
bnRseSBydW5uaW5nIGFjY2VsZXJhdGVkIG9yIGV4cGVjdGVkCisgICAgICAgIHRvIGJlIGluIHRo
ZSBuZXh0IGFjY2VsZXJhdGVkIGFuaW1hdGlvbiB1cGRhdGUuCisgICAgICAgICogZG9tL0VsZW1l
bnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGlu
Z0ZvckFuaW1hdGlvbiBjb25zdCk6IFVzZSB0aGUgc2FtZSBsb2dpYyBhcyBmb3IgdGhlICJsZWdh
Y3kiIGFuaW1hdGlvbiBlbmdpbmUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gYW5pbWF0aW9uCisg
ICAgICAgIHJlcXVpcmVzIGNvbXBvc2l0aW5nIHVzaW5nIHRoZSBuZXcgS2V5ZnJhbWVFZmZlY3Q6
OmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoKSBtZXRob2QuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbiBjb25z
dCk6IFJlZmFjdG9yIHNvbWUgY29kZSB0byB1c2UgdGhlIG5ldyBLZXlmcmFtZUVmZmVjdDo6aXND
dXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eSgpIG1ldGhvZC4KKwogMjAyMC0wMS0yOCAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10g
U2VwYXJhdGUgc2V0dGluZyBhIHRpbWVsaW5lJ3MgY3VycmVudCB0aW1lIGZyb20gdXBkYXRpbmcg
aXRzIGFuaW1hdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Bbmlt
YXRpb25UaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGlt
ZWxpbmUuY3BwCmluZGV4IDI5MDg1MjAzODIxMTJkMDMzZjU2OWMzMWExN2NjMTA0Mjk0YmYwNGIu
LjM1ODYwZTcxZjc2OTM0NjhiZDBiYmNjYjYxMDZjYTc1MzUxZGIzZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcApAQCAtNDQyLDcgKzQ0Miw3
IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVu
dEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAgICAgICAgICBhdXRvKiBydW5uaW5nVHJh
bnNpdGlvbiA9IHJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkuZ2V0KHByb3BlcnR5KTsKICAg
ICAgICAgICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4ocnVubmluZ1RyYW5zaXRpb24tPmVmZmVj
dCgpKSkgewogICAgICAgICAgICAgICAgIGF1dG8mIGtleWZyYW1lRWZmZWN0ID0gKmRvd25jYXN0
PEtleWZyYW1lRWZmZWN0PihydW5uaW5nVHJhbnNpdGlvbi0+ZWZmZWN0KCkpOwotICAgICAgICAg
ICAgICAgIGlmIChrZXlmcmFtZUVmZmVjdC5pc0FjY2VsZXJhdGVkKCkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoa2V5ZnJhbWVFZmZlY3QuaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSkgewogICAgICAg
ICAgICAgICAgICAgICBhdXRvIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
Y3VycmVudFN0eWxlKTsKICAgICAgICAgICAgICAgICAgICAgcnVubmluZ1RyYW5zaXRpb24tPnJl
c29sdmUoKmFuaW1hdGVkU3R5bGUpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKmFuaW1h
dGVkU3R5bGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5j
cHAKaW5kZXggZDQxN2I4OTdiMTc5N2EwMTBiZjM3NTYzMzIxYmI5NGRlOGJiNDJkYi4uMzM3Y2Jm
OTI5ZTExN2E0MmQwZTcyZjY1MWJmNmU3MGU2ODNhNjZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtNTk3LDcgKzU5Nyw3IEBAIGJvb2wg
RG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQmIHJlCiAgICAgICAgIGF1dG8qIGVmZmVjdCA9IGFuaW1hdGlvbi0+ZWZm
ZWN0KCk7CiAgICAgICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4oZWZmZWN0KSkgewogICAgICAg
ICAgICAgYXV0byoga2V5ZnJhbWVFZmZlY3QgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oZWZm
ZWN0KTsKLSAgICAgICAgICAgIGlmIChrZXlmcmFtZUVmZmVjdC0+aXNSdW5uaW5nQWNjZWxlcmF0
ZWQoKSAmJiBrZXlmcmFtZUVmZmVjdC0+YW5pbWF0ZWRQcm9wZXJ0aWVzKCkuY29udGFpbnMocHJv
cGVydHkpKQorICAgICAgICAgICAgaWYgKGtleWZyYW1lRWZmZWN0LT5pc0N1cnJlbnRseUFmZmVj
dGluZ1Byb3BlcnR5KHByb3BlcnR5LCBLZXlmcmFtZUVmZmVjdDo6QWNjZWxlcmF0ZWQ6Olllcykp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcAppbmRleCAyYjRkODZkOGNjMjU5
ZWMxZGQ1NGEyOTU5NjZlZjM5OWNmOWY5MTlkLi43MmNiYTY3Y2ZkYzQxNzU3YWY2MGY4YWE5NTNl
YzlhOWFjMDhhMjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVj
dC5jcHAKQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRCbGVuZGlu
Z0tleWZyYW1lcyhLZXlmcmFtZUxpc3QmIGJsZW5kaW5nS2V5ZnJhbWVzKQogCiAgICAgY29tcHV0
ZWROZWVkc0ZvcmNlZExheW91dCgpOwogICAgIGNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3Qo
KTsKLSAgICBjb21wdXRlU2hvdWxkUnVuQWNjZWxlcmF0ZWQoKTsKKyAgICBjb21wdXRlQWNjZWxl
cmF0ZWRQcm9wZXJ0aWVzU3RhdGUoKTsKIAogICAgIGNoZWNrRm9yTWF0Y2hpbmdUcmFuc2Zvcm1G
dW5jdGlvbkxpc3RzKCk7CiAgICAgY2hlY2tGb3JNYXRjaGluZ0ZpbHRlckZ1bmN0aW9uTGlzdHMo
KTsKQEAgLTEwODQsOCArMTA4NCw5IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5KFJlbmRl
clN0eWxlJiB0YXJnZXRTdHlsZSkKICAgICB1cGRhdGVCbGVuZGluZ0tleWZyYW1lcyh0YXJnZXRT
dHlsZSk7CiAKICAgICBhdXRvIGNvbXB1dGVkVGltaW5nID0gZ2V0Q29tcHV0ZWRUaW1pbmcoKTsK
KyAgICBtX3BoYXNlQXRMYXN0QXBwbGljYXRpb24gPSBjb21wdXRlZFRpbWluZy5waGFzZTsKIAot
ICAgIHVwZGF0ZUFjY2VsZXJhdGVkQW5pbWF0aW9uU3RhdGUoY29tcHV0ZWRUaW1pbmcpOworICAg
IHVwZGF0ZUFjY2VsZXJhdGVkQWN0aW9ucyhjb21wdXRlZFRpbWluZyk7CiAKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxBcHBseUtleWZyYW1lRWZmZWN0KCptX3RhcmdldCwgKnRo
aXMsIGNvbXB1dGVkVGltaW5nKTsKIApAQCAtMTA5NSwyMCArMTA5Niw0MyBAQCB2b2lkIEtleWZy
YW1lRWZmZWN0OjphcHBseShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpCiAgICAgc2V0QW5pbWF0
ZWRQcm9wZXJ0aWVzSW5TdHlsZSh0YXJnZXRTdHlsZSwgY29tcHV0ZWRUaW1pbmcucHJvZ3Jlc3Mu
dmFsdWUoKSk7CiB9CiAKK2Jvb2wgS2V5ZnJhbWVFZmZlY3Q6OmlzQ3VycmVudGx5QWZmZWN0aW5n
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQWNjZWxlcmF0ZWQgYWNjZWxlcmF0ZWQp
IGNvbnN0Cit7CisgICAgaWYgKGFjY2VsZXJhdGVkID09IEFjY2VsZXJhdGVkOjpZZXMgJiYgIWlz
UnVubmluZ0FjY2VsZXJhdGVkKCkgJiYgIWlzQWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICghbV9ibGVuZGluZ0tleWZyYW1lcy5wcm9wZXJ0
aWVzKCkuY29udGFpbnMocHJvcGVydHkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy
ZXR1cm4gbV9waGFzZUF0TGFzdEFwcGxpY2F0aW9uID09IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpB
Y3RpdmU7Cit9CisKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmludmFsaWRhdGUoKQogewogICAgIGlu
dmFsaWRhdGVFbGVtZW50KG1fdGFyZ2V0LmdldCgpKTsKIH0KIAotdm9pZCBLZXlmcmFtZUVmZmVj
dDo6Y29tcHV0ZVNob3VsZFJ1bkFjY2VsZXJhdGVkKCkKK3ZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNv
bXB1dGVBY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSgpCiB7Ci0gICAgbV9zaG91bGRSdW5BY2Nl
bGVyYXRlZCA9IGhhc0JsZW5kaW5nS2V5ZnJhbWVzKCk7CisgICAgYm9vbCBoYXNTb21lQWNjZWxl
cmF0ZWRQcm9wZXJ0aWVzID0gZmFsc2U7CisgICAgYm9vbCBoYXNTb21lVW5hY2NlbGVyYXRlZFBy
b3BlcnRpZXMgPSBmYWxzZTsKKwogICAgIGZvciAoYXV0byBjc3NQcm9wZXJ0eUlkIDogbV9ibGVu
ZGluZ0tleWZyYW1lcy5wcm9wZXJ0aWVzKCkpIHsKLSAgICAgICAgaWYgKCFDU1NQcm9wZXJ0eUFu
aW1hdGlvbjo6YW5pbWF0aW9uT2ZQcm9wZXJ0eUlzQWNjZWxlcmF0ZWQoY3NzUHJvcGVydHlJZCkp
IHsKLSAgICAgICAgICAgIG1fc2hvdWxkUnVuQWNjZWxlcmF0ZWQgPSBmYWxzZTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQorICAgICAgICAvLyBJZiBhbnkgYW5pbWF0ZWQgcHJvcGVy
dHkgY2FuIGJlIGFjY2VsZXJhdGVkLCB0aGVuIHRoZSBhbmltYXRpb24gc2hvdWxkIHJ1biBhY2Nl
bGVyYXRlZC4KKyAgICAgICAgaWYgKENTU1Byb3BlcnR5QW5pbWF0aW9uOjphbmltYXRpb25PZlBy
b3BlcnR5SXNBY2NlbGVyYXRlZChjc3NQcm9wZXJ0eUlkKSkKKyAgICAgICAgICAgIGhhc1NvbWVB
Y2NlbGVyYXRlZFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBlbHNlCisgICAgICAgICAgICBo
YXNTb21lVW5hY2NlbGVyYXRlZFByb3BlcnRpZXMgPSB0cnVlOworICAgICAgICBpZiAoaGFzU29t
ZUFjY2VsZXJhdGVkUHJvcGVydGllcyAmJiBoYXNTb21lVW5hY2NlbGVyYXRlZFByb3BlcnRpZXMp
CisgICAgICAgICAgICBicmVhazsKICAgICB9CisKKyAgICBpZiAoIWhhc1NvbWVBY2NlbGVyYXRl
ZFByb3BlcnRpZXMgJiYgIWhhc1NvbWVVbmFjY2VsZXJhdGVkUHJvcGVydGllcykKKyAgICAgICAg
bV9hY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSA9IEFjY2VsZXJhdGVkUHJvcGVydGllczo6Tm9u
ZTsKKyAgICBlbHNlIGlmIChoYXNTb21lVW5hY2NlbGVyYXRlZFByb3BlcnRpZXMpCisgICAgICAg
IG1fYWNjZWxlcmF0ZWRQcm9wZXJ0aWVzU3RhdGUgPSBBY2NlbGVyYXRlZFByb3BlcnRpZXM6OlNv
bWU7CisgICAgZWxzZQorICAgICAgICBtX2FjY2VsZXJhdGVkUHJvcGVydGllc1N0YXRlID0gQWNj
ZWxlcmF0ZWRQcm9wZXJ0aWVzOjpBbGw7CiB9CiAKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmdldEFu
aW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkK
QEAgLTEzMDUsNDYgKzEzMjksMzcgQEAgVGltaW5nRnVuY3Rpb24qIEtleWZyYW1lRWZmZWN0Ojp0
aW1pbmdGdW5jdGlvbkZvcktleWZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUFjY2VsZXJhdGVkQW5p
bWF0aW9uU3RhdGUoQ29tcHV0ZWRFZmZlY3RUaW1pbmcgY29tcHV0ZWRUaW1pbmcpCit2b2lkIEtl
eWZyYW1lRWZmZWN0Ojp1cGRhdGVBY2NlbGVyYXRlZEFjdGlvbnMoQ29tcHV0ZWRFZmZlY3RUaW1p
bmcgY29tcHV0ZWRUaW1pbmcpCiB7Ci0gICAgaWYgKCFtX3Nob3VsZFJ1bkFjY2VsZXJhdGVkKQor
ICAgIGlmIChtX2FjY2VsZXJhdGVkUHJvcGVydGllc1N0YXRlID09IEFjY2VsZXJhdGVkUHJvcGVy
dGllczo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFyZW5kZXJlcigpKSB7Ci0g
ICAgICAgIGlmIChpc1J1bm5pbmdBY2NlbGVyYXRlZCgpKQotICAgICAgICAgICAgYWRkUGVuZGlu
Z0FjY2VsZXJhdGVkQWN0aW9uKEFjY2VsZXJhdGVkQWN0aW9uOjpTdG9wKTsKKyAgICAvLyBJZiB3
ZSdyZSBub3QgYWxyZWFkeSBydW5uaW5nIGFjY2VsZXJhdGVkLCB0aGUgb25seSB0aGluZyB3ZSdy
ZSBpbnRlcmVzdGVkIGluIGlzIHdoZXRoZXIgd2UgbmVlZCB0byBzdGFydCB0aGUgYW5pbWF0aW9u
CisgICAgLy8gd2hpY2ggd2UgbmVlZCB0byBkbyBvbmNlIHdlJ3JlIGluIHRoZSBhY3RpdmUgcGhh
c2UuIE90aGVyd2lzZSwgdGhlcmUncyBubyBjaGFuZ2UgaW4gYWNjZWxlcmF0ZWQgc3RhdGUgdG8g
Y29uc2lkZXIuCisgICAgYm9vbCBpc0FjdGl2ZSA9IGNvbXB1dGVkVGltaW5nLnBoYXNlID09IEFu
aW1hdGlvbkVmZmVjdFBoYXNlOjpBY3RpdmU7CisgICAgaWYgKCFtX2lzUnVubmluZ0FjY2VsZXJh
dGVkKSB7CisgICAgICAgIGlmIChpc0FjdGl2ZSAmJiBhbmltYXRpb24oKS0+cGxheVN0YXRlKCkg
PT0gV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGU6OlJ1bm5pbmcpCisgICAgICAgICAgICBhZGRQZW5k
aW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246OlBsYXkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBsb2NhbFRpbWUgPSBhbmltYXRpb24oKS0+Y3VycmVu
dFRpbWUoKTsKLQotICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBsb2NhbFRpbWUgb3IgbG9jYWxU
aW1lIDwgMCwgd2UgZWl0aGVyIGRvbid0IGhhdmUgYSBzdGFydCB0aW1lIG9yIHdlJ3JlIGJlZm9y
ZSB0aGUgc3RhcnRUaW1lCi0gICAgLy8gc28gd2Ugc2hvdWxkbid0IGJlIHJ1bm5pbmcuCi0gICAg
aWYgKCFsb2NhbFRpbWUgfHwgbG9jYWxUaW1lLnZhbHVlKCkgPCAwX3MpIHsKLSAgICAgICAgaWYg
KGlzUnVubmluZ0FjY2VsZXJhdGVkKCkpCi0gICAgICAgICAgICBhZGRQZW5kaW5nQWNjZWxlcmF0
ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApOworICAgIC8vIElmIHdlJ3JlIG5vIGxv
bmdlciBhY3RpdmUsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBhY2NlbGVyYXRlZCBhbmltYXRpb24u
CisgICAgaWYgKCFpc0FjdGl2ZSkgeworICAgICAgICBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rp
b24oQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgYXV0byBwbGF5U3RhdGUgPSBhbmltYXRpb24oKS0+cGxheVN0YXRlKCk7CisgICAgLy8gVGhl
IG9ubHkgdGhpbmcgbGVmdCB0byBjb25zaWRlciBpcyB3aGV0aGVyIHdlIG5lZWQgdG8gcGF1c2Ug
b3IgcmVzdW1lIHRoZSBhbmltYXRpb24gZm9sbG93aW5nIGEgY2hhbmdlIG9mIHBsYXktc3RhdGUu
CiAgICAgaWYgKHBsYXlTdGF0ZSA9PSBXZWJBbmltYXRpb246OlBsYXlTdGF0ZTo6UGF1c2VkKSB7
CiAgICAgICAgIGlmIChtX2xhc3RSZWNvcmRlZEFjY2VsZXJhdGVkQWN0aW9uICE9IEFjY2VsZXJh
dGVkQWN0aW9uOjpQYXVzZSkgewogICAgICAgICAgICAgaWYgKG1fbGFzdFJlY29yZGVkQWNjZWxl
cmF0ZWRBY3Rpb24gPT0gQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApCiAgICAgICAgICAgICAgICAg
YWRkUGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9uKEFjY2VsZXJhdGVkQWN0aW9uOjpQbGF5KTsKICAg
ICAgICAgICAgIGFkZFBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbihBY2NlbGVyYXRlZEFjdGlvbjo6
UGF1c2UpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAocGxh
eVN0YXRlID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpGaW5pc2hlZCkgewotICAgICAgICBh
ZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246OlN0b3ApOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHBsYXlTdGF0ZSA9PSBXZWJBbmltYXRpb246
OlBsYXlTdGF0ZTo6UnVubmluZyAmJiBjb21wdXRlZFRpbWluZy5waGFzZSA9PSBBbmltYXRpb25F
ZmZlY3RQaGFzZTo6QWN0aXZlKSB7CisgICAgfSBlbHNlIGlmIChwbGF5U3RhdGUgPT0gV2ViQW5p
bWF0aW9uOjpQbGF5U3RhdGU6OlJ1bm5pbmcgJiYgaXNBY3RpdmUpIHsKICAgICAgICAgaWYgKG1f
bGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gIT0gQWNjZWxlcmF0ZWRBY3Rpb246OlBsYXkp
CiAgICAgICAgICAgICBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rp
b246OlBsYXkpOwotICAgICAgICByZXR1cm47CiAgICAgfQogfQogCkBAIC0xMzY1LDE5ICsxMzgw
LDE5IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFuaW1hdGlvbkRpZFNlZWsoKQogewogICAgIC8v
IFRoZXJlIGlzIG5vIG5lZWQgdG8gc2VlayBpZiB3ZSdyZSBub3QgcGxheWluZyBhbiBhbmltYXRp
b24gYWxyZWFkeS4gSWYgc2Vla2luZwogICAgIC8vIG1lYW5zIHdlJ3JlIG1vdmluZyBpbnRvIGFu
IGFjdGl2ZSBsZXhpY2FsR2xvYmFsT2JqZWN0LCB3ZSdsbCBwaWNrIHRoaXMgdXAgaW4gYXBwbHko
KS4KLSAgICBpZiAobV9zaG91bGRSdW5BY2NlbGVyYXRlZCAmJiBpc1J1bm5pbmdBY2NlbGVyYXRl
ZCgpKQorICAgIGlmIChtX2lzUnVubmluZ0FjY2VsZXJhdGVkKQogICAgICAgICBhZGRQZW5kaW5n
QWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb246OlNlZWspOwogfQogCiB2b2lkIEtl
eWZyYW1lRWZmZWN0OjphbmltYXRpb25XYXNDYW5jZWxlZCgpCiB7Ci0gICAgaWYgKG1fc2hvdWxk
UnVuQWNjZWxlcmF0ZWQgJiYgaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSkKKyAgICBpZiAobV9pc1J1
bm5pbmdBY2NlbGVyYXRlZCkKICAgICAgICAgYWRkUGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9uKEFj
Y2VsZXJhdGVkQWN0aW9uOjpTdG9wKTsKIH0KIAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6YW5pbWF0
aW9uU3VzcGVuc2lvblN0YXRlRGlkQ2hhbmdlKGJvb2wgYW5pbWF0aW9uSXNTdXNwZW5kZWQpCiB7
Ci0gICAgaWYgKG1fc2hvdWxkUnVuQWNjZWxlcmF0ZWQpCisgICAgaWYgKG1faXNSdW5uaW5nQWNj
ZWxlcmF0ZWQpCiAgICAgICAgIGFkZFBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbihhbmltYXRpb25J
c1N1c3BlbmRlZCA/IEFjY2VsZXJhdGVkQWN0aW9uOjpQYXVzZSA6IEFjY2VsZXJhdGVkQWN0aW9u
OjpQbGF5KTsKIH0KIApAQCAtMTM5MSwyMiArMTQwNiwxNyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0
OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKQogICAgIGlmIChtX3BlbmRpbmdBY2Nl
bGVyYXRlZEFjdGlvbnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJbiB0
aGUgY2FzZSB3aGVyZSB3ZSBoYXZlIGEgY29tcG9zaXRlZCByZW5kZXJlciwgd2UnbGwgYmUgYXBw
bHlpbmcgYWxsIHBlbmRpbmcgYWNjZWxlcmF0ZWQgYWN0aW9ucy4KLSAgICAvLyBJbiBjYXNlIHdl
IGRvbid0IGhhdmUgYSBjb21wb3NpdGVkIHJlbmRlcmVyLCB0aGVuIHdlIHdvbid0IGJlIGFibGUg
dG8gYXBwbHkgdGhlIHBlbmRpbmcgYWNjZWxlcmF0ZWQKLSAgICAvLyBhY3Rpb25zLiBJbiBib3Ro
IGNhc2VzLCB3ZSBjYW4gY2xlYXIgdGhlIHBlbmRpbmcgYWNjZWxlcmF0ZWQgYWN0aW9ucy4KLSAg
ICBhdXRvIHBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMgPSBtX3BlbmRpbmdBY2NlbGVyYXRlZEFj
dGlvbnM7Ci0gICAgbV9wZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zLmNsZWFyKCk7Ci0KICAgICBh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAh
cmVuZGVyZXItPmlzQ29tcG9zaXRlZCgpKSB7Ci0gICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUg
YSBjb21wb3NpdGVkIHJlbmRlcmVyIHdoZW4gd2Ugd2VyZSBzdXBwb3NlZCB0byBiZSBhcHBseWlu
ZyBhbiBhY2NlbGVyYXRlZCBhY3Rpb24gb3RoZXIKLSAgICAgICAgLy8gdGhhbiB0byBzdG9wIGEg
cnVubmluZyBhbmltYXRpb24sIHRoZW4gd2Ugd29uJ3QgbWFuYWdlIHRvIGFwcGx5IGFjY2VsZXJh
dGlvbnMgaW4gdGhlIGZ1dHVyZSBlaXRoZXIsIHNvCi0gICAgICAgIC8vIHdlIHNob3VsZCByZXNl
dCB0aGUgZmxhZyB0byBydW4gYWNjZWxlcmF0ZWQuCi0gICAgICAgIG1fbGFzdFJlY29yZGVkQWNj
ZWxlcmF0ZWRBY3Rpb24gPSBBY2NlbGVyYXRlZEFjdGlvbjo6U3RvcDsKKyAgICAgICAgLy8gVGhl
IHJlbmRlcmVyIG1heSBubyBsb25nZXIgYmUgY29tcG9zaXRlZCBiZWNhdXNlIHRoZSBhY2NlbGVy
YXRlZCBhbmltYXRpb24gZW5kZWQgYmVmb3JlIHdlIGhhZCBhIGNoYW5jZSB0byB1cGRhdGUgaXQs
CisgICAgICAgIC8vIGluIHdoaWNoIGNhc2UgaWYgd2UgYXNrZWQgZm9yIHRoZSBhbmltYXRpb24g
dG8gc3RvcCwgd2UgY2FuIGRpc2NhcmQgdGhlIGN1cnJlbnQgc2V0IG9mIGFjY2VsZXJhdGVkIGFj
dGlvbnMuCisgICAgICAgIGlmIChtX2xhc3RSZWNvcmRlZEFjY2VsZXJhdGVkQWN0aW9uID09IEFj
Y2VsZXJhdGVkQWN0aW9uOjpTdG9wKQorICAgICAgICAgICAgbV9wZW5kaW5nQWNjZWxlcmF0ZWRB
Y3Rpb25zLmNsZWFyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBjb21w
b3NpdGVkUmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJCb3hNb2RlbE9iamVjdD4ocmVuZGVyZXIp
OworICAgIGF1dG8gcGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucyA9IG1fcGVuZGluZ0FjY2VsZXJh
dGVkQWN0aW9uczsKKyAgICBtX3BlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMuY2xlYXIoKTsKIAog
ICAgIC8vIFRvIHNpbXBsaWZ5IHRoZSBjb2RlIHdlIHVzZSBhIGRlZmF1bHQgb2YgMHMgZm9yIGFu
IHVucmVzb2x2ZWQgY3VycmVudCB0aW1lIHNpbmNlIGZvciBhIFN0b3AgYWN0aW9uIHRoYXQgaXMg
YWNjZXB0YWJsZS4KICAgICBhdXRvIHRpbWVPZmZzZXQgPSBhbmltYXRpb24oKS0+Y3VycmVudFRp
bWUoKS52YWx1ZU9yKDBfcykuc2Vjb25kcygpIC0gZGVsYXkoKS5zZWNvbmRzKCk7CkBAIC0xNDE0
LDIzICsxNDI0LDIzIEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5UGVuZGluZ0FjY2VsZXJh
dGVkQWN0aW9ucygpCiAgICAgZm9yIChjb25zdCBhdXRvJiBhY3Rpb24gOiBwZW5kaW5nQWNjZWxl
cmF0ZWRBY3Rpb25zKSB7CiAgICAgICAgIHN3aXRjaCAoYWN0aW9uKSB7CiAgICAgICAgIGNhc2Ug
QWNjZWxlcmF0ZWRBY3Rpb246OlBsYXk6Ci0gICAgICAgICAgICBpZiAoIWNvbXBvc2l0ZWRSZW5k
ZXJlci0+c3RhcnRBbmltYXRpb24odGltZU9mZnNldCwgYmFja2luZ0FuaW1hdGlvbkZvckNvbXBv
c2l0ZWRSZW5kZXJlcigpLCBtX2JsZW5kaW5nS2V5ZnJhbWVzKSkgewotICAgICAgICAgICAgICAg
IG1fc2hvdWxkUnVuQWNjZWxlcmF0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1faXNSdW5uaW5n
QWNjZWxlcmF0ZWQgPSByZW5kZXJlci0+c3RhcnRBbmltYXRpb24odGltZU9mZnNldCwgYmFja2lu
Z0FuaW1hdGlvbkZvckNvbXBvc2l0ZWRSZW5kZXJlcigpLCBtX2JsZW5kaW5nS2V5ZnJhbWVzKTsK
KyAgICAgICAgICAgIGlmICghbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCkgewogICAgICAgICAgICAg
ICAgIG1fbGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gPSBBY2NlbGVyYXRlZEFjdGlvbjo6
U3RvcDsKLSAgICAgICAgICAgICAgICBhbmltYXRpb24oKS0+YWNjZWxlcmF0ZWRTdGF0ZURpZENo
YW5nZSgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFjY2VsZXJhdGVkQWN0aW9uOjpQYXVzZToKLSAgICAg
ICAgICAgIGNvbXBvc2l0ZWRSZW5kZXJlci0+YW5pbWF0aW9uUGF1c2VkKHRpbWVPZmZzZXQsIG1f
YmxlbmRpbmdLZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpKTsKKyAgICAgICAgICAgIHJlbmRlcmVy
LT5hbmltYXRpb25QYXVzZWQodGltZU9mZnNldCwgbV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRp
b25OYW1lKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQWNjZWxlcmF0ZWRB
Y3Rpb246OlNlZWs6Ci0gICAgICAgICAgICBjb21wb3NpdGVkUmVuZGVyZXItPmFuaW1hdGlvblNl
ZWtlZCh0aW1lT2Zmc2V0LCBtX2JsZW5kaW5nS2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7Cisg
ICAgICAgICAgICByZW5kZXJlci0+YW5pbWF0aW9uU2Vla2VkKHRpbWVPZmZzZXQsIG1fYmxlbmRp
bmdLZXlmcmFtZXMuYW5pbWF0aW9uTmFtZSgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBjYXNlIEFjY2VsZXJhdGVkQWN0aW9uOjpTdG9wOgotICAgICAgICAgICAgY29tcG9zaXRlZFJl
bmRlcmVyLT5hbmltYXRpb25GaW5pc2hlZChtX2JsZW5kaW5nS2V5ZnJhbWVzLmFuaW1hdGlvbk5h
bWUoKSk7CisgICAgICAgICAgICByZW5kZXJlci0+YW5pbWF0aW9uRmluaXNoZWQobV9ibGVuZGlu
Z0tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkpOwogICAgICAgICAgICAgaWYgKCFtX3RhcmdldC0+
ZG9jdW1lbnQoKS5yZW5kZXJUcmVlQmVpbmdEZXN0cm95ZWQoKSkKICAgICAgICAgICAgICAgICBt
X3RhcmdldC0+aW52YWxpZGF0ZVN0eWxlQW5kTGF5ZXJDb21wb3NpdGlvbigpOworICAgICAgICAg
ICAgbV9pc1J1bm5pbmdBY2NlbGVyYXRlZCA9IGZhbHNlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CmluZGV4IDg1NjA5ODEyNjAzYmY3MzAwNTg1NTNmZmNhMzAwMTE3YmY3YmZkOWQuLjcyZDljNjE3
NWRhYmRkNTM3YjI4MmQ2ZTI3MTI0ZmRkNjg4NTkyYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdC5oIgorI2luY2x1ZGUgIkFuaW1hdGlvbkVmZmVjdFBo
YXNlLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudC5oIgogI2luY2x1ZGUg
IkNvbXBvc2l0ZU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkNvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0
by5oIgpAQCAtMTE4LDE1ICsxMTksMTUgQEAgcHVibGljOgogICAgIHZvaWQgYW5pbWF0aW9uVGlt
ZWxpbmVEaWRDaGFuZ2UoQW5pbWF0aW9uVGltZWxpbmUqKSBmaW5hbDsKICAgICB2b2lkIGFuaW1h
dGlvblRpbWluZ0RpZENoYW5nZSgpOwogICAgIHZvaWQgYXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRB
Y3Rpb25zKCk7Ci0gICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFJlY29yZGVkQWNjZWxlcmF0ZWRBY3Rpb24gIT0gQWNjZWxlcmF0ZWRBY3Rpb246OlN0
b3A7IH0KLSAgICBib29sIGhhc1BlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbigpIGNvbnN0IHsgcmV0
dXJuICFtX3BlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMuaXNFbXB0eSgpICYmIGlzUnVubmluZ0Fj
Y2VsZXJhdGVkKCk7IH0KIAogICAgIHZvaWQgc2V0QW5pbWF0aW9uKFdlYkFuaW1hdGlvbiopIGZp
bmFsOwogCiAgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdCBvdmVycmlkZTsKICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
Ym9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRSdW5BY2NlbGVyYXRl
ZDsgfQogICAgIGJvb2wgdHJpZ2dlcnNTdGFja2luZ0NvbnRleHQoKSBjb25zdCB7IHJldHVybiBt
X3RyaWdnZXJzU3RhY2tpbmdDb250ZXh0OyB9CisgICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSdW5uaW5nQWNjZWxlcmF0ZWQ7IH0KKyAgICBib29sIGlz
QWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRlZFByb3Bl
cnRpZXNTdGF0ZSAhPSBBY2NlbGVyYXRlZFByb3BlcnRpZXM6Ok5vbmUgJiYgbV9sYXN0UmVjb3Jk
ZWRBY2NlbGVyYXRlZEFjdGlvbiAhPSBBY2NlbGVyYXRlZEFjdGlvbjo6U3RvcDsgfQorICAgIGJv
b2wgaXNDb21wbGV0ZWx5QWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2FjY2VsZXJhdGVk
UHJvcGVydGllc1N0YXRlID09IEFjY2VsZXJhdGVkUHJvcGVydGllczo6QWxsOyB9CiAgICAgYm9v
bCBmaWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2Zp
bHRlckZ1bmN0aW9uTGlzdHNNYXRjaDsgfQogICAgIGJvb2wgdHJhbnNmb3JtRnVuY3Rpb25MaXN0
c01hdGNoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3Rz
TWF0Y2g7IH0KICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQpAQCAtMTQzLDE3ICsxNDQsMjEg
QEAgcHVibGljOgogICAgIGJvb2wgY29tcHV0ZVRyYW5zZm9ybWVkRXh0ZW50VmlhTWF0cml4KGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgTGF5b3V0UmVjdCYpIGNvbnN0Owog
ICAgIGJvb2wgZm9yY2VMYXlvdXRJZk5lZWRlZCgpOwogCisgICAgZW51bSBjbGFzcyBBY2NlbGVy
YXRlZCA6IHVpbnQ4X3QgeyBZZXMsIE5vIH07CisgICAgYm9vbCBpc0N1cnJlbnRseUFmZmVjdGlu
Z1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIEFjY2VsZXJhdGVkID0gQWNjZWxlcmF0ZWQ6Ok5vKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBLZXlmcmFtZUVmZmVjdChFbGVtZW50Kik7CiAKICAgICBl
bnVtIGNsYXNzIEFjY2VsZXJhdGVkQWN0aW9uIDogdWludDhfdCB7IFBsYXksIFBhdXNlLCBTZWVr
LCBTdG9wIH07CiAgICAgZW51bSBjbGFzcyBCbGVuZGluZ0tleWZyYW1lc1NvdXJjZSA6IHVpbnQ4
X3QgeyBDU1NBbmltYXRpb24sIENTU1RyYW5zaXRpb24sIFdlYkFuaW1hdGlvbiB9OworICAgIGVu
dW0gY2xhc3MgQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzIDogdWludDhfdCB7IE5vbmUsIFNvbWUsIEFs
bCB9OwogCiAgICAgdm9pZCB1cGRhdGVFZmZlY3RTdGFja01lbWJlcnNoaXAoKTsKICAgICB2b2lk
IGNvcHlQcm9wZXJ0aWVzRnJvbVNvdXJjZShSZWY8S2V5ZnJhbWVFZmZlY3Q+JiYpOwogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NLZXlmcmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
Qzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYpOwogICAgIHZvaWQgYWRkUGVuZGluZ0FjY2VsZXJh
dGVkQWN0aW9uKEFjY2VsZXJhdGVkQWN0aW9uKTsKLSAgICB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVk
QW5pbWF0aW9uU3RhdGUoQ29tcHV0ZWRFZmZlY3RUaW1pbmcpOworICAgIHZvaWQgdXBkYXRlQWNj
ZWxlcmF0ZWRBY3Rpb25zKENvbXB1dGVkRWZmZWN0VGltaW5nKTsKICAgICB2b2lkIHNldEFuaW1h
dGVkUHJvcGVydGllc0luU3R5bGUoUmVuZGVyU3R5bGUmLCBkb3VibGUpOwogICAgIFRpbWluZ0Z1
bmN0aW9uKiB0aW1pbmdGdW5jdGlvbkZvcktleWZyYW1lQXRJbmRleChzaXplX3QpOwogICAgIFJl
Zjxjb25zdCBBbmltYXRpb24+IGJhY2tpbmdBbmltYXRpb25Gb3JDb21wb3NpdGVkUmVuZGVyZXIo
KSBjb25zdDsKQEAgLTE2Myw3ICsxNjgsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlQmxl
bmRpbmdLZXlmcmFtZXMoUmVuZGVyU3R5bGUmKTsKICAgICB2b2lkIGNvbXB1dGVDU1NBbmltYXRp
b25CbGVuZGluZ0tleWZyYW1lcygpOwogICAgIHZvaWQgY29tcHV0ZUNTU1RyYW5zaXRpb25CbGVu
ZGluZ0tleWZyYW1lcyhjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsZSk7Ci0gICAgdm9pZCBjb21wdXRlU2hvdWxkUnVuQWNjZWxlcmF0ZWQoKTsK
KyAgICB2b2lkIGNvbXB1dGVBY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSgpOwogICAgIHZvaWQg
c2V0QmxlbmRpbmdLZXlmcmFtZXMoS2V5ZnJhbWVMaXN0Jik7CiAgICAgdm9pZCBjaGVja0Zvck1h
dGNoaW5nVHJhbnNmb3JtRnVuY3Rpb25MaXN0cygpOwogICAgIHZvaWQgY2hlY2tGb3JNYXRjaGlu
Z0ZpbHRlckZ1bmN0aW9uTGlzdHMoKTsKQEAgLTE4Miw3ICsxODcsOSBAQCBwcml2YXRlOgogICAg
IEJsZW5kaW5nS2V5ZnJhbWVzU291cmNlIG1fYmxlbmRpbmdLZXlmcmFtZXNTb3VyY2UgeyBCbGVu
ZGluZ0tleWZyYW1lc1NvdXJjZTo6V2ViQW5pbWF0aW9uIH07CiAgICAgSXRlcmF0aW9uQ29tcG9z
aXRlT3BlcmF0aW9uIG1faXRlcmF0aW9uQ29tcG9zaXRlT3BlcmF0aW9uIHsgSXRlcmF0aW9uQ29t
cG9zaXRlT3BlcmF0aW9uOjpSZXBsYWNlIH07CiAgICAgQ29tcG9zaXRlT3BlcmF0aW9uIG1fY29t
cG9zaXRlT3BlcmF0aW9uIHsgQ29tcG9zaXRlT3BlcmF0aW9uOjpSZXBsYWNlIH07Ci0gICAgYm9v
bCBtX3Nob3VsZFJ1bkFjY2VsZXJhdGVkIHsgZmFsc2UgfTsKKyAgICBBY2NlbGVyYXRlZFByb3Bl
cnRpZXMgbV9hY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSB7IEFjY2VsZXJhdGVkUHJvcGVydGll
czo6Tm9uZSB9OworICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIG1fcGhhc2VBdExhc3RBcHBsaWNh
dGlvbiB7IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpJZGxlIH07CisgICAgYm9vbCBtX2lzUnVubmlu
Z0FjY2VsZXJhdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fbmVlZHNGb3JjZWRMYXlvdXQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV90cmlnZ2Vyc1N0YWNraW5nQ29udGV4dCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdHNNYXRjaCB7IGZhbHNlIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKaW5kZXggNGQ2
MjNiMmUwYjE2YzI1YWJlMzJhYjM0NDZlNjY1NDk4Mjc0YzUwMS4uNTAyMmQwN2Y3NWJiMzg3NmE1
OWFhZmNkNGFiNjgxNmNkMzdmYjBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcApAQCAtNjAsNiArNjAsMTUgQEAgdm9pZCBLZXlmcmFt
ZUVmZmVjdFN0YWNrOjpyZW1vdmVFZmZlY3QoS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCkKICAgICBt
X2VmZmVjdHMucmVtb3ZlRmlyc3QoJmVmZmVjdCk7CiB9CiAKK2Jvb2wgS2V5ZnJhbWVFZmZlY3RT
dGFjazo6aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
KSBjb25zdAoreworICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9lZmZlY3RzKSB7CisgICAgICAg
IGlmIChlZmZlY3QtPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkocHJvcGVydHkpKQorICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogVmVj
dG9yPFdlYWtQdHI8S2V5ZnJhbWVFZmZlY3Q+PiBLZXlmcmFtZUVmZmVjdFN0YWNrOjpzb3J0ZWRF
ZmZlY3RzKCkKIHsKICAgICBlbnN1cmVFZmZlY3RzQXJlU29ydGVkKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5oIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suaAppbmRleCBhZTdmNWM2MTE2NzNk
NGFkNDUzMWZlN2NhNmMzNzY4YWRlMGMzMWNkLi45NzhkODRkY2Q1NjgwZDI4YzBhM2Q2OTllMjMz
ZmRjN2QzYWVhNjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3RTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVm
ZmVjdFN0YWNrLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
QW5pbWF0aW9uTGlzdC5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNDUsNiArNDYs
NyBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPFdlYWtQdHI8S2V5ZnJhbWVFZmZlY3Q+PiBzb3J0ZWRF
ZmZlY3RzKCk7CiAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogY3NzQW5pbWF0aW9uTGlzdCgpIGNv
bnN0IHsgcmV0dXJuIG1fY3NzQW5pbWF0aW9uTGlzdC5nZXQoKTsgfQogICAgIHZvaWQgc2V0Q1NT
QW5pbWF0aW9uTGlzdChSZWZQdHI8Y29uc3QgQW5pbWF0aW9uTGlzdD4mJik7CisgICAgYm9vbCBp
c0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCiBwcml2
YXRlOgogICAgIHZvaWQgZW5zdXJlRWZmZWN0c0FyZVNvcnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCAzYjg3OTBhYTNkOWVkMjY1ZDE3NmRmYzdh
MWI1ZjQ0ODY1MjczYjc3Li44MWIxY2I1OTdlNmRkNTUzM2FlMWUyNWMwODVmYWFjZmU3NzRlODRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjU3LDYg
KzI1Nyw5IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRDaGFuZ2UoRWxlbWVu
dCogcHJldmlvdXNUYXJnZXQsIEVsZW1lbnQqIG5ld1RhCiAKICAgICBpZiAobmV3VGFyZ2V0KQog
ICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNBZGRlZFRvRWxlbWVudCgqdGhpcywgKm5l
d1RhcmdldCk7CisKKyAgICAvLyBUaGlzIGNvdWxkIGhhdmUgY2hhbmdlZCB3aGV0aGVyIHdlIGhh
dmUgcmVwbGFjZWQgYW5pbWF0aW9ucywgc28gd2UgbWF5IG5lZWQgdG8gc2NoZWR1bGUgYW4gdXBk
YXRlLgorICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvblRpbWluZ0RpZENoYW5nZSgqdGhpcyk7CiB9
CiAKIE9wdGlvbmFsPGRvdWJsZT4gV2ViQW5pbWF0aW9uOjpzdGFydFRpbWUoKSBjb25zdApAQCAt
MTEzNyw2ICsxMTQwLDExIEBAIGJvb2wgV2ViQW5pbWF0aW9uOjppc1J1bm5pbmdBY2NlbGVyYXRl
ZCgpIGNvbnN0CiAgICAgcmV0dXJuIGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkgJiYgZG93
bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCptX2VmZmVjdCkuaXNSdW5uaW5nQWNjZWxlcmF0ZWQoKTsK
IH0KIAorYm9vbCBXZWJBbmltYXRpb246OmlzQ29tcGxldGVseUFjY2VsZXJhdGVkKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSAmJiBkb3duY2FzdDxL
ZXlmcmFtZUVmZmVjdD4oKm1fZWZmZWN0KS5pc0NvbXBsZXRlbHlBY2NlbGVyYXRlZCgpOworfQor
CiBib29sIFdlYkFuaW1hdGlvbjo6bmVlZHNUaWNrKCkgY29uc3QKIHsKICAgICByZXR1cm4gcGVu
ZGluZygpIHx8IHBsYXlTdGF0ZSgpID09IFBsYXlTdGF0ZTo6UnVubmluZzsKQEAgLTEyMzcsNiAr
MTI0NSw5IEBAIGJvb2wgV2ViQW5pbWF0aW9uOjpjb21wdXRlUmVsZXZhbmNlKCkKICAgICBpZiAo
IW1fZWZmZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBpZiAobV9yZXBsYWNlU3Rh
dGUgPT0gUmVwbGFjZVN0YXRlOjpSZW1vdmVkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBhdXRvIHRpbWluZyA9IG1fZWZmZWN0LT5nZXRCYXNpY1RpbWluZygpOwogCiAgICAgLy8gQW4g
YW5pbWF0aW9uIGVmZmVjdCBpcyBpbiBlZmZlY3QgaWYgaXRzIGFjdGl2ZSB0aW1lIGlzIG5vdCB1
bnJlc29sdmVkLgpAQCAtMTM3Niw3ICsxMzg3LDYgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5p
bWF0aW9uOjpjb21taXRTdHlsZXMoKQogCiBTZWNvbmRzIFdlYkFuaW1hdGlvbjo6dGltZVRvTmV4
dFRpY2soKSBjb25zdAogewotICAgIC8vIEFueSBhbmltYXRpb24gdGhhdCBpcyBwZW5kaW5nIG5l
ZWRzIGltbWVkaWF0ZSByZXNvbHV0aW9uLgogICAgIGlmIChwZW5kaW5nKCkpCiAgICAgICAgIHJl
dHVybiAwX3M7CiAKQEAgLTEzOTMsNyArMTQwMyw3IEBAIFNlY29uZHMgV2ViQW5pbWF0aW9uOjp0
aW1lVG9OZXh0VGljaygpIGNvbnN0CiAgICAgICAgIHJldHVybiAoZWZmZWN0LmRlbGF5KCkgLSB0
aW1pbmcubG9jYWxUaW1lLnZhbHVlKCkpIC8gcGxheWJhY2tSYXRlOwogICAgIGNhc2UgQW5pbWF0
aW9uRWZmZWN0UGhhc2U6OkFjdGl2ZToKICAgICAgICAgLy8gTm9uLWFjY2VsZXJhdGVkIGFuaW1h
dGlvbnMgaW4gdGhlICJhY3RpdmUiIHBoYXNlIHdpbGwgbmVlZCB0byB1cGRhdGUgdGhlaXIgYW5p
bWF0ZWQgdmFsdWUgYXQgdGhlIGltbWVkaWF0ZSBuZXh0IG9wcG9ydHVuaXR5LgotICAgICAgICBp
ZiAoIWlzUnVubmluZ0FjY2VsZXJhdGVkKCkpCisgICAgICAgIGlmICghaXNDb21wbGV0ZWx5QWNj
ZWxlcmF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiAwX3M7CiAgICAgICAgIC8vIEFjY2VsZXJh
dGVkIENTUyBBbmltYXRpb25zIG5lZWQgdG8gdHJpZ2dlciAiYW5pbWF0aW9uaXRlcmF0aW9uIiBl
dmVudHMsIGluIHRoaXMgY2FzZSB3ZSBjYW4gd2FpdCB1bnRpbCB0aGUgbmV4dCBpdGVyYXRpb24u
CiAgICAgICAgIGlmIChpc0NTU0FuaW1hdGlvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
V2ViQW5pbWF0aW9uLmgKaW5kZXggZGE0ZDhlYzNiYzJlNTcwYjQ4YTUxZGJjMTRhMzQ0ZTZjNDli
YTA3MC4uMDNlNDBlY2E5YzVlZTA4MWM5ZTM3M2E3Y2E1YmI1NjU0ZTQ2MWZhNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaApAQCAtMTE5LDYgKzExOSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucygpOwogCiAgICAgYm9v
bCBpc1J1bm5pbmdBY2NlbGVyYXRlZCgpIGNvbnN0OworICAgIGJvb2wgaXNDb21wbGV0ZWx5QWNj
ZWxlcmF0ZWQoKSBjb25zdDsKICAgICBib29sIGlzUmVsZXZhbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzUmVsZXZhbnQ7IH0KICAgICB2b2lkIHVwZGF0ZVJlbGV2YW5jZSgpOwogICAgIHZvaWQgZWZm
ZWN0VGltaW5nRGlkQ2hhbmdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggMDNiOTI2YjY4
ZDY3MTBmMDVhNTdiMWM2MGE1YTAzMTE1YzIzNTM4Ni4uYmRmNzQyMmVkNzI1ZDhlYTEzYzRkNDRh
MDYyZWYxOWE1NDc1ZDJjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzcwOSw2ICszNzA5
LDExIEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSogRWxlbWVudDo6aW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJEYXRhKCkKIAogI2VuZGlmCiAKK0tleWZyYW1lRWZmZWN0U3RhY2sqIEVsZW1lbnQ6Omtl
eWZyYW1lRWZmZWN0U3RhY2soKSBjb25zdAoreworICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8g
ZWxlbWVudFJhcmVEYXRhKCktPmtleWZyYW1lRWZmZWN0U3RhY2soKSA6IG51bGxwdHI7Cit9CisK
IEtleWZyYW1lRWZmZWN0U3RhY2smIEVsZW1lbnQ6OmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2so
KQogewogICAgIGF1dG8mIHJhcmVEYXRhID0gZW5zdXJlRWxlbWVudFJhcmVEYXRhKCk7CkBAIC0z
NzM0LDcgKzM3MzksNyBAQCBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBFbGVtZW50OjphcHBs
eUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgICAgICBBU1NFUlQo
ZWZmZWN0LT5hbmltYXRpb24oKSk7CiAgICAgICAgIGVmZmVjdC0+YW5pbWF0aW9uKCktPnJlc29s
dmUodGFyZ2V0U3R5bGUpOwogCi0gICAgICAgIGlmIChlZmZlY3QtPmlzQWNjZWxlcmF0ZWQoKSkK
KyAgICAgICAgaWYgKGVmZmVjdC0+aXNSdW5uaW5nQWNjZWxlcmF0ZWQoKSB8fCBlZmZlY3QtPmlz
QWJvdXRUb1J1bkFjY2VsZXJhdGVkKCkpCiAgICAgICAgICAgICBpbXBhY3QuYWRkKEFuaW1hdGlv
bkltcGFjdDo6UmVxdWlyZXNSZWNvbXBvc2l0ZSk7CiAKICAgICAgICAgaWYgKGVmZmVjdC0+dHJp
Z2dlcnNTdGFja2luZ0NvbnRleHQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDIwNjI1NDM5N2Jh
NmYxOWVmMmVjY2ZhZTg1MmQ3YWRmZjQ5OTY5NmYuLjZhN2E4ZTdlZDVjOWU3OWYzMzI1Njg0MmQ2
ZTA2YzgxZDQxYzkxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDgyLDYgKzQ4Miw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEhhc0NTU0FuaW1hdGlvbigpOwogICAgIHZvaWQgY2xlYXJIYXND
U1NBbmltYXRpb24oKTsKIAorICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0
U3RhY2soKSBjb25zdDsKICAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKCk7CiAgICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdDsKICAgICBP
cHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHls
ZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29t
cG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAppbmRleCA0M2RiYWMwNDMwZjNiZDljYjI0ZGM1MTYxMGYzODk0ZGNiMDJmZmU0Li4w
ZjM4NjA5MmQ3Yjg1Mzk0ZWViNzEyOGUyNmZjYTg0ZDVjOWMzZGI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMzIsNyAr
MzIsNiBAQAogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJD
aHJvbWUuaCIKICNpbmNsdWRlICJDaHJvbWVDbGllbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudFRp
bWVsaW5lLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNp
bmNsdWRlICJGdWxsc2NyZWVuTWFuYWdlci5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2luY2x1ZGUg
IkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJLZXlmcmFtZUVmZmVjdFN0YWNrLmgi
CiAjaW5jbHVkZSAiTGF5ZXJBbmNlc3RvckNsaXBwaW5nU3RhY2suaCIKICNpbmNsdWRlICJMYXll
ck92ZXJsYXBNYXAuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCkBAIC0yNzc4LDkgKzI3NzgsMTQg
QEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmlt
YXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgKGF1dG8qIGVsZW1lbnQgPSByZW5kZXJlci5lbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHRpbWVsaW5lID0gZWxlbWVudC0+ZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpIHsK
LSAgICAgICAgICAgIGlmICh0aW1lbGluZS0+cnVubmluZ0FuaW1hdGlvbnNGb3JFbGVtZW50QXJl
QWxsQWNjZWxlcmF0ZWQoKmVsZW1lbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0gZWxlbWVudC0+a2V5ZnJhbWVFZmZlY3RT
dGFjaygpKSB7CisgICAgICAgICAgICByZXR1cm4gKGVmZmVjdHNTdGFjay0+aXNDdXJyZW50bHlB
ZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpCisgICAgICAgICAgICAgICAgJiYg
KHVzZXNDb21wb3NpdGluZygpIHx8IChtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGll
bnQ6OkFuaW1hdGVkT3BhY2l0eVRyaWdnZXIpKSkKKyAgICAgICAgICAgICAgICB8fCBlZmZlY3Rz
U3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpCisj
aWYgRU5BQkxFKEZJTFRFUlNfTEVWRUxfMikKKyAgICAgICAgICAgICAgICB8fCBlZmZlY3RzU3Rh
Y2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRCYWNrZHJv
cEZpbHRlcikKKyNlbmRpZgorICAgICAgICAgICAgICAgIHx8IGVmZmVjdHNTdGFjay0+aXNDdXJy
ZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eVRyYW5zZm9ybSk7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTMzMzcsMTMgKzMzNDIsMTQgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbihSZW5kZXJMYXllck1vZGVsT2JqZWN0Jgog
ICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNsaWVudDo6QW5pbWF0aW9u
VHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLndlYkFuaW1hdGlvbnNDU1NJbnRlZ3JhdGlvbkVu
YWJsZWQoKSkgewotICAgICAgICBpZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQo
KSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lID0gZWxlbWVudC0+ZG9jdW1lbnQo
KS5leGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRpbWVsaW5lLT5p
c1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKHJlbmRlcmVyLCBDU1NQcm9wZXJ0eVRyYW5zZm9y
bSk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChhdXRvKiBlbGVt
ZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKSB7CisgICAgICAgIGlmIChhdXRvKiBlZmZlY3RzU3Rh
Y2sgPSBlbGVtZW50LT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCisgICAgICAgICAgICByZXR1cm4g
ZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5VHJh
bnNmb3JtKTsKICAgICB9CisKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS53ZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb25FbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKwogICAgIHJldHVybiByZW5kZXJlci5hbmltYXRpb24oKS5pc1J1bm5p
bmdBbmltYXRpb25PblJlbmRlcmVyKHJlbmRlcmVyLCBDU1NQcm9wZXJ0eVRyYW5zZm9ybSk7CiB9
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBjZTQzM2M2M2MzM2RhOWRlNDkxMDIyMGEyODU0ODc3Zjc0MDMzNWIyLi5hOWIz
MTFkYjEwNmJiYWM4ZjA1MGYxNWU5NmI5ZTNkMWE0ODNkYmJmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMjAtMDEtMjggIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAg
ICAgICBbV2ViIEFuaW1hdGlvbnNdIEFuaW1hdGlvbnMgc2hvdWxkIHJ1biBhY2NlbGVyYXRlZCBl
dmVuIGlmIG90aGVyIGFuaW1hdGlvbnMgdGFyZ2V0aW5nIHRoZSBzYW1lIGVsZW1lbnQgYXJlIG5v
dCBhY2NlbGVyYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjA2ODkwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODk2MTc1MD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgc29tZSB0ZXN0
cyB0aGF0IGFzc3VtZWQgYSBtaXggb2YgYWNjZWxlcmF0ZWQgYW5kIG5vbi1hY2NlbGVyYXRlZCBw
cm9wZXJ0aWVzIHdvdWxkIG5vdCB5aWVsZCBhY2NlbGVyYXRlZCBhbmltYXRpb25zLgorICAgICAg
ICBXZSBhbHNvIG1ha2Ugc29tZSBXSzEtc3BlY2lmaWMgZXhwZWN0YXRpb24gZHVlIHRvIGNvbXBv
c2l0aW5nIGJlaW5nIGRpc2FibGVkIHdoZW4gb3BhY2l0eSBpcyB0aGUgb25seSBwb3RlbnRpYWxs
eS1hY2NlbGVyYXRlZAorICAgICAgICBwcm9wZXJ0eSB0byBiZSBhbmltYXRlZC4KKworICAgICAg
ICAqIHBsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWNvbG9yL2FuaW1hdGlvbi9vcGFjaXR5LWludGVycG9sYXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1h
bmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMS93ZWJhbmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9uLXlpZWxk
cy1jb21wb3NpdGluZy1zcGFuLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjLXdrMS93ZWJhbmltYXRpb25zL3BhcnRseS1hY2NlbGVyYXRlZC10cmFuc2l0aW9uLWJ5
LXJlbW92aW5nLXByb3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjLXdrMS93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1h
dGlvbi15aWVsZHMtY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3
ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3Np
dGluZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogd2ViYW5pbWF0aW9ucy9wYXJ0
bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlvbi1ieS1yZW1vdmluZy1wcm9wZXJ0eS1leHBlY3RlZC50
eHQ6CisgICAgICAgICogd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1h
bmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24teWll
bGRzLWNvbXBvc2l0aW5nLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy93ZWJhbmltYXRp
b25zL2xlZnQtYW5kLW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1s
LgorICAgICAgICAqIHdlYmFuaW1hdGlvbnMvd2lkdGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5p
bWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24t
eWllbGRzLW5vLWNvbXBvc2l0aW5nLmh0bWw6IFJlbW92ZWQuCisKIDIwMjAtMDEtMjggIEphc29u
IExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAgICAgICAgWyBpT1Mgd2syIHJl
bGVhc2UgYW5kIE1hYyBdIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvMmRjb250ZXh0
L2ltYWdlYml0bWFwL2NyZWF0ZUltYWdlQml0bWFwLXNlcmlhbGl6YWJsZS5odG1sIGZsYWt5IGZh
aWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWNvbG9yL2FuaW1hdGlvbi9vcGFjaXR5LWlu
dGVycG9sYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtY29sb3IvYW5pbWF0aW9uL29w
YWNpdHktaW50ZXJwb2xhdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWYyOGM0OWQ5YWU3
YmUyMzk0ZjA2ZTVjNGRlZjY1MDczOTg1YWJkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azEvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLWNvbG9yL2FuaW1hdGlvbi9vcGFjaXR5LWludGVycG9sYXRpb24tZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIyIEBACisKK1BBU1MgQ1NTIFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0
eT4gZnJvbSBuZXV0cmFsIHRvIFswLjJdIGF0ICgtMC4zKSBzaG91bGQgYmUgWzAuMDddIAorUEFT
UyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIG5ldXRyYWwgdG8gWzAu
Ml0gYXQgKDApIHNob3VsZCBiZSBbMC4xXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zOiBwcm9wZXJ0
eSA8b3BhY2l0eT4gZnJvbSBuZXV0cmFsIHRvIFswLjJdIGF0ICgwLjMpIHNob3VsZCBiZSBbMC4x
M10gCitQQVNTIENTUyBUcmFuc2l0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gbmV1dHJh
bCB0byBbMC4yXSBhdCAoMC42KSBzaG91bGQgYmUgWzAuMTZdIAorUEFTUyBDU1MgVHJhbnNpdGlv
bnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIG5ldXRyYWwgdG8gWzAuMl0gYXQgKDEpIHNob3Vs
ZCBiZSBbMC4yXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJv
bSBuZXV0cmFsIHRvIFswLjJdIGF0ICgxLjUpIHNob3VsZCBiZSBbMC4yNV0gCitQQVNTIENTUyBU
cmFuc2l0aW9ucyB3aXRoIHRyYW5zaXRpb246IGFsbDogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20g
bmV1dHJhbCB0byBbMC4yXSBhdCAoLTAuMykgc2hvdWxkIGJlIFswLjA3XSAKK1BBU1MgQ1NTIFRy
YW5zaXRpb25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBu
ZXV0cmFsIHRvIFswLjJdIGF0ICgwKSBzaG91bGQgYmUgWzAuMV0gCitQQVNTIENTUyBUcmFuc2l0
aW9ucyB3aXRoIHRyYW5zaXRpb246IGFsbDogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gbmV1dHJh
bCB0byBbMC4yXSBhdCAoMC4zKSBzaG91bGQgYmUgWzAuMTNdIAorUEFTUyBDU1MgVHJhbnNpdGlv
bnMgd2l0aCB0cmFuc2l0aW9uOiBhbGw6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIG5ldXRyYWwg
dG8gWzAuMl0gYXQgKDAuNikgc2hvdWxkIGJlIFswLjE2XSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25z
IHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBuZXV0cmFsIHRv
IFswLjJdIGF0ICgxKSBzaG91bGQgYmUgWzAuMl0gCitQQVNTIENTUyBUcmFuc2l0aW9ucyB3aXRo
IHRyYW5zaXRpb246IGFsbDogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gbmV1dHJhbCB0byBbMC4y
XSBhdCAoMS41KSBzaG91bGQgYmUgWzAuMjVdIAorUEFTUyBDU1MgQW5pbWF0aW9uczogcHJvcGVy
dHkgPG9wYWNpdHk+IGZyb20gbmV1dHJhbCB0byBbMC4yXSBhdCAoLTAuMykgc2hvdWxkIGJlIFsw
LjA3XSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIG5ldXRy
YWwgdG8gWzAuMl0gYXQgKDApIHNob3VsZCBiZSBbMC4xXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6
IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIG5ldXRyYWwgdG8gWzAuMl0gYXQgKDAuMykgc2hvdWxk
IGJlIFswLjEzXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9t
IG5ldXRyYWwgdG8gWzAuMl0gYXQgKDAuNikgc2hvdWxkIGJlIFswLjE2XSAKK1BBU1MgQ1NTIEFu
aW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIG5ldXRyYWwgdG8gWzAuMl0gYXQgKDEp
IHNob3VsZCBiZSBbMC4yXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5
PiBmcm9tIG5ldXRyYWwgdG8gWzAuMl0gYXQgKDEuNSkgc2hvdWxkIGJlIFswLjI1XSAKK1BBU1Mg
V2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIG5ldXRyYWwgdG8gWzAuMl0g
YXQgKC0wLjMpIHNob3VsZCBiZSBbMC4wN10gCitGQUlMIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0
eSA8b3BhY2l0eT4gZnJvbSBuZXV0cmFsIHRvIFswLjJdIGF0ICgwKSBzaG91bGQgYmUgWzAuMV0g
YXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjAuMSAiIGJ1dCBnb3QgIjAuMDcgIgorRkFJTCBXZWIg
QW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gbmV1dHJhbCB0byBbMC4yXSBhdCAo
MC4zKSBzaG91bGQgYmUgWzAuMTNdIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICIwLjEzICIgYnV0
IGdvdCAiMC4xMSAiCitQQVNTIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJv
bSBuZXV0cmFsIHRvIFswLjJdIGF0ICgwLjYpIHNob3VsZCBiZSBbMC4xNl0gCitQQVNTIFdlYiBB
bmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBuZXV0cmFsIHRvIFswLjJdIGF0ICgx
KSBzaG91bGQgYmUgWzAuMl0gCitGQUlMIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0
eT4gZnJvbSBuZXV0cmFsIHRvIFswLjJdIGF0ICgxLjUpIHNob3VsZCBiZSBbMC4yNV0gYXNzZXJ0
X2VxdWFsczogZXhwZWN0ZWQgIjAuMjUgIiBidXQgZ290ICIwLjIgIgorUEFTUyBDU1MgVHJhbnNp
dGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbml0aWFsXSB0byBbMC4yXSBhdCAoLTAu
Mykgc2hvdWxkIGJlIFsxXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0
eT4gZnJvbSBbaW5pdGlhbF0gdG8gWzAuMl0gYXQgKDApIHNob3VsZCBiZSBbMV0gCitQQVNTIENT
UyBUcmFuc2l0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJd
IGF0ICgwLjMpIHNob3VsZCBiZSBbMC43Nl0gCitQQVNTIENTUyBUcmFuc2l0aW9uczogcHJvcGVy
dHkgPG9wYWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJdIGF0ICgwLjYpIHNob3VsZCBiZSBb
MC41Ml0gCitQQVNTIENTUyBUcmFuc2l0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2lu
aXRpYWxdIHRvIFswLjJdIGF0ICgxKSBzaG91bGQgYmUgWzAuMl0gCitQQVNTIENTUyBUcmFuc2l0
aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJdIGF0ICgxLjUp
IHNob3VsZCBiZSBbMF0gCitQQVNTIENTUyBUcmFuc2l0aW9ucyB3aXRoIHRyYW5zaXRpb246IGFs
bDogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJdIGF0ICgtMC4zKSBz
aG91bGQgYmUgWzFdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnMgd2l0aCB0cmFuc2l0aW9uOiBhbGw6
IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbml0aWFsXSB0byBbMC4yXSBhdCAoMCkgc2hvdWxk
IGJlIFsxXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9w
ZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5pdGlhbF0gdG8gWzAuMl0gYXQgKDAuMykgc2hvdWxkIGJl
IFswLjc2XSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9w
ZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5pdGlhbF0gdG8gWzAuMl0gYXQgKDAuNikgc2hvdWxkIGJl
IFswLjUyXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9w
ZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5pdGlhbF0gdG8gWzAuMl0gYXQgKDEpIHNob3VsZCBiZSBb
MC4yXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0
eSA8b3BhY2l0eT4gZnJvbSBbaW5pdGlhbF0gdG8gWzAuMl0gYXQgKDEuNSkgc2hvdWxkIGJlIFsw
XSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbml0aWFs
XSB0byBbMC4yXSBhdCAoLTAuMykgc2hvdWxkIGJlIFsxXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6
IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbml0aWFsXSB0byBbMC4yXSBhdCAoMCkgc2hvdWxk
IGJlIFsxXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtp
bml0aWFsXSB0byBbMC4yXSBhdCAoMC4zKSBzaG91bGQgYmUgWzAuNzZdIAorUEFTUyBDU1MgQW5p
bWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJdIGF0ICgw
LjYpIHNob3VsZCBiZSBbMC41Ml0gCitQQVNTIENTUyBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3Bh
Y2l0eT4gZnJvbSBbaW5pdGlhbF0gdG8gWzAuMl0gYXQgKDEpIHNob3VsZCBiZSBbMC4yXSAKK1BB
U1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbml0aWFsXSB0byBb
MC4yXSBhdCAoMS41KSBzaG91bGQgYmUgWzBdIAorUEFTUyBXZWIgQW5pbWF0aW9uczogcHJvcGVy
dHkgPG9wYWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJdIGF0ICgtMC4zKSBzaG91bGQgYmUg
WzFdIAorUEFTUyBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaXRp
YWxdIHRvIFswLjJdIGF0ICgwKSBzaG91bGQgYmUgWzFdIAorUEFTUyBXZWIgQW5pbWF0aW9uczog
cHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJdIGF0ICgwLjMpIHNob3Vs
ZCBiZSBbMC43Nl0gCitQQVNTIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJv
bSBbaW5pdGlhbF0gdG8gWzAuMl0gYXQgKDAuNikgc2hvdWxkIGJlIFswLjUyXSAKK1BBU1MgV2Vi
IEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbml0aWFsXSB0byBbMC4yXSBh
dCAoMSkgc2hvdWxkIGJlIFswLjJdIAorUEFTUyBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPG9w
YWNpdHk+IGZyb20gW2luaXRpYWxdIHRvIFswLjJdIGF0ICgxLjUpIHNob3VsZCBiZSBbMF0gCitQ
QVNTIENTUyBUcmFuc2l0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaGVyaXRdIHRv
IFswLjJdIGF0ICgtMC4zKSBzaG91bGQgYmUgWzAuOThdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6
IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbmhlcml0XSB0byBbMC4yXSBhdCAoMCkgc2hvdWxk
IGJlIFswLjhdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9t
IFtpbmhlcml0XSB0byBbMC4yXSBhdCAoMC4zKSBzaG91bGQgYmUgWzAuNjJdIAorUEFTUyBDU1Mg
VHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbmhlcml0XSB0byBbMC4yXSBh
dCAoMC42KSBzaG91bGQgYmUgWzAuNDRdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5
IDxvcGFjaXR5PiBmcm9tIFtpbmhlcml0XSB0byBbMC4yXSBhdCAoMSkgc2hvdWxkIGJlIFswLjJd
IAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbmhlcml0
XSB0byBbMC4yXSBhdCAoMS41KSBzaG91bGQgYmUgWzBdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnMg
d2l0aCB0cmFuc2l0aW9uOiBhbGw6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbmhlcml0XSB0
byBbMC4yXSBhdCAoLTAuMykgc2hvdWxkIGJlIFswLjk4XSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25z
IHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5oZXJpdF0g
dG8gWzAuMl0gYXQgKDApIHNob3VsZCBiZSBbMC44XSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdp
dGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5oZXJpdF0gdG8g
WzAuMl0gYXQgKDAuMykgc2hvdWxkIGJlIFswLjYyXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdp
dGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5oZXJpdF0gdG8g
WzAuMl0gYXQgKDAuNikgc2hvdWxkIGJlIFswLjQ0XSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdp
dGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5oZXJpdF0gdG8g
WzAuMl0gYXQgKDEpIHNob3VsZCBiZSBbMC4yXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zIHdpdGgg
dHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5oZXJpdF0gdG8gWzAu
Ml0gYXQgKDEuNSkgc2hvdWxkIGJlIFswXSAKK0ZBSUwgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5
IDxvcGFjaXR5PiBmcm9tIFtpbmhlcml0XSB0byBbMC4yXSBhdCAoLTAuMykgc2hvdWxkIGJlIFsw
Ljk4XSBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCAiMC45OCAiIGJ1dCBnb3QgIjAuMDcgIgorRkFJ
TCBDU1MgQW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaGVyaXRdIHRvIFsw
LjJdIGF0ICgwKSBzaG91bGQgYmUgWzAuOF0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjAuOCAi
IGJ1dCBnb3QgIjAuMSAiCitGQUlMIENTUyBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4g
ZnJvbSBbaW5oZXJpdF0gdG8gWzAuMl0gYXQgKDAuMykgc2hvdWxkIGJlIFswLjYyXSBhc3NlcnRf
ZXF1YWxzOiBleHBlY3RlZCAiMC42MiAiIGJ1dCBnb3QgIjAuMTMgIgorRkFJTCBDU1MgQW5pbWF0
aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaGVyaXRdIHRvIFswLjJdIGF0ICgwLjYp
IHNob3VsZCBiZSBbMC40NF0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjAuNDQgIiBidXQgZ290
ICIwLjE2ICIKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtp
bmhlcml0XSB0byBbMC4yXSBhdCAoMSkgc2hvdWxkIGJlIFswLjJdIAorRkFJTCBDU1MgQW5pbWF0
aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaGVyaXRdIHRvIFswLjJdIGF0ICgxLjUp
IHNob3VsZCBiZSBbMF0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjAgIiBidXQgZ290ICIwLjI1
ICIKK0ZBSUwgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFtpbmhlcml0
XSB0byBbMC4yXSBhdCAoLTAuMykgc2hvdWxkIGJlIFswLjk4XSBhc3NlcnRfZXF1YWxzOiBleHBl
Y3RlZCAiMC45OCAiIGJ1dCBnb3QgIjAuMDcgIgorRkFJTCBXZWIgQW5pbWF0aW9uczogcHJvcGVy
dHkgPG9wYWNpdHk+IGZyb20gW2luaGVyaXRdIHRvIFswLjJdIGF0ICgwKSBzaG91bGQgYmUgWzAu
OF0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjAuOCAiIGJ1dCBnb3QgIjAuMDcgIgorRkFJTCBX
ZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW2luaGVyaXRdIHRvIFswLjJd
IGF0ICgwLjMpIHNob3VsZCBiZSBbMC42Ml0gYXNzZXJ0X2VxdWFsczogZXhwZWN0ZWQgIjAuNjIg
IiBidXQgZ290ICIwLjExICIKK0ZBSUwgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5
PiBmcm9tIFtpbmhlcml0XSB0byBbMC4yXSBhdCAoMC42KSBzaG91bGQgYmUgWzAuNDRdIGFzc2Vy
dF9lcXVhbHM6IGV4cGVjdGVkICIwLjQ0ICIgYnV0IGdvdCAiMC4xNiAiCitQQVNTIFdlYiBBbmlt
YXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbaW5oZXJpdF0gdG8gWzAuMl0gYXQgKDEp
IHNob3VsZCBiZSBbMC4yXSAKK0ZBSUwgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5
PiBmcm9tIFtpbmhlcml0XSB0byBbMC4yXSBhdCAoMS41KSBzaG91bGQgYmUgWzBdIGFzc2VydF9l
cXVhbHM6IGV4cGVjdGVkICIwICIgYnV0IGdvdCAiMC4yICIKK1BBU1MgQ1NTIFRyYW5zaXRpb25z
OiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbdW5zZXRdIHRvIFswLjJdIGF0ICgtMC4zKSBzaG91
bGQgYmUgWzFdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9t
IFt1bnNldF0gdG8gWzAuMl0gYXQgKDApIHNob3VsZCBiZSBbMV0gCitQQVNTIENTUyBUcmFuc2l0
aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW3Vuc2V0XSB0byBbMC4yXSBhdCAoMC4zKSBz
aG91bGQgYmUgWzAuNzZdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5
PiBmcm9tIFt1bnNldF0gdG8gWzAuMl0gYXQgKDAuNikgc2hvdWxkIGJlIFswLjUyXSAKK1BBU1Mg
Q1NTIFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbdW5zZXRdIHRvIFswLjJd
IGF0ICgxKSBzaG91bGQgYmUgWzAuMl0gCitQQVNTIENTUyBUcmFuc2l0aW9uczogcHJvcGVydHkg
PG9wYWNpdHk+IGZyb20gW3Vuc2V0XSB0byBbMC4yXSBhdCAoMS41KSBzaG91bGQgYmUgWzBdIAor
UEFTUyBDU1MgVHJhbnNpdGlvbnMgd2l0aCB0cmFuc2l0aW9uOiBhbGw6IHByb3BlcnR5IDxvcGFj
aXR5PiBmcm9tIFt1bnNldF0gdG8gWzAuMl0gYXQgKC0wLjMpIHNob3VsZCBiZSBbMV0gCitQQVNT
IENTUyBUcmFuc2l0aW9ucyB3aXRoIHRyYW5zaXRpb246IGFsbDogcHJvcGVydHkgPG9wYWNpdHk+
IGZyb20gW3Vuc2V0XSB0byBbMC4yXSBhdCAoMCkgc2hvdWxkIGJlIFsxXSAKK1BBU1MgQ1NTIFRy
YW5zaXRpb25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBb
dW5zZXRdIHRvIFswLjJdIGF0ICgwLjMpIHNob3VsZCBiZSBbMC43Nl0gCitQQVNTIENTUyBUcmFu
c2l0aW9ucyB3aXRoIHRyYW5zaXRpb246IGFsbDogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW3Vu
c2V0XSB0byBbMC4yXSBhdCAoMC42KSBzaG91bGQgYmUgWzAuNTJdIAorUEFTUyBDU1MgVHJhbnNp
dGlvbnMgd2l0aCB0cmFuc2l0aW9uOiBhbGw6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFt1bnNl
dF0gdG8gWzAuMl0gYXQgKDEpIHNob3VsZCBiZSBbMC4yXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25z
IHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbdW5zZXRdIHRv
IFswLjJdIGF0ICgxLjUpIHNob3VsZCBiZSBbMF0gCitQQVNTIENTUyBBbmltYXRpb25zOiBwcm9w
ZXJ0eSA8b3BhY2l0eT4gZnJvbSBbdW5zZXRdIHRvIFswLjJdIGF0ICgtMC4zKSBzaG91bGQgYmUg
WzFdIAorUEFTUyBDU1MgQW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW3Vuc2V0
XSB0byBbMC4yXSBhdCAoMCkgc2hvdWxkIGJlIFsxXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHBy
b3BlcnR5IDxvcGFjaXR5PiBmcm9tIFt1bnNldF0gdG8gWzAuMl0gYXQgKDAuMykgc2hvdWxkIGJl
IFswLjc2XSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFt1
bnNldF0gdG8gWzAuMl0gYXQgKDAuNikgc2hvdWxkIGJlIFswLjUyXSAKK1BBU1MgQ1NTIEFuaW1h
dGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFt1bnNldF0gdG8gWzAuMl0gYXQgKDEpIHNo
b3VsZCBiZSBbMC4yXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBm
cm9tIFt1bnNldF0gdG8gWzAuMl0gYXQgKDEuNSkgc2hvdWxkIGJlIFswXSAKK1BBU1MgV2ViIEFu
aW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFt1bnNldF0gdG8gWzAuMl0gYXQgKC0w
LjMpIHNob3VsZCBiZSBbMV0gCitQQVNTIFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0
eT4gZnJvbSBbdW5zZXRdIHRvIFswLjJdIGF0ICgwKSBzaG91bGQgYmUgWzFdIAorUEFTUyBXZWIg
QW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW3Vuc2V0XSB0byBbMC4yXSBhdCAo
MC4zKSBzaG91bGQgYmUgWzAuNzZdIAorUEFTUyBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPG9w
YWNpdHk+IGZyb20gW3Vuc2V0XSB0byBbMC4yXSBhdCAoMC42KSBzaG91bGQgYmUgWzAuNTJdIAor
UEFTUyBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gW3Vuc2V0XSB0byBb
MC4yXSBhdCAoMSkgc2hvdWxkIGJlIFswLjJdIAorUEFTUyBXZWIgQW5pbWF0aW9uczogcHJvcGVy
dHkgPG9wYWNpdHk+IGZyb20gW3Vuc2V0XSB0byBbMC4yXSBhdCAoMS41KSBzaG91bGQgYmUgWzBd
IAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFswXSB0byBb
MV0gYXQgKC0wLjMpIHNob3VsZCBiZSBbMF0gCitQQVNTIENTUyBUcmFuc2l0aW9uczogcHJvcGVy
dHkgPG9wYWNpdHk+IGZyb20gWzBdIHRvIFsxXSBhdCAoMCkgc2hvdWxkIGJlIFswXSAKK1BBU1Mg
Q1NTIFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbMF0gdG8gWzFdIGF0ICgw
LjMpIHNob3VsZCBiZSBbMC4zXSAKK1BBU1MgQ1NTIFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8b3Bh
Y2l0eT4gZnJvbSBbMF0gdG8gWzFdIGF0ICgwLjYpIHNob3VsZCBiZSBbMC42XSAKK1BBU1MgQ1NT
IFRyYW5zaXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbMF0gdG8gWzFdIGF0ICgxKSBz
aG91bGQgYmUgWzFdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBm
cm9tIFswXSB0byBbMV0gYXQgKDEuNSkgc2hvdWxkIGJlIFsxXSAKK1BBU1MgQ1NTIFRyYW5zaXRp
b25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbMF0gdG8g
WzFdIGF0ICgtMC4zKSBzaG91bGQgYmUgWzBdIAorUEFTUyBDU1MgVHJhbnNpdGlvbnMgd2l0aCB0
cmFuc2l0aW9uOiBhbGw6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9tIFswXSB0byBbMV0gYXQgKDAp
IHNob3VsZCBiZSBbMF0gCitQQVNTIENTUyBUcmFuc2l0aW9ucyB3aXRoIHRyYW5zaXRpb246IGFs
bDogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gWzBdIHRvIFsxXSBhdCAoMC4zKSBzaG91bGQgYmUg
WzAuM10gCitQQVNTIENTUyBUcmFuc2l0aW9ucyB3aXRoIHRyYW5zaXRpb246IGFsbDogcHJvcGVy
dHkgPG9wYWNpdHk+IGZyb20gWzBdIHRvIFsxXSBhdCAoMC42KSBzaG91bGQgYmUgWzAuNl0gCitQ
QVNTIENTUyBUcmFuc2l0aW9ucyB3aXRoIHRyYW5zaXRpb246IGFsbDogcHJvcGVydHkgPG9wYWNp
dHk+IGZyb20gWzBdIHRvIFsxXSBhdCAoMSkgc2hvdWxkIGJlIFsxXSAKK1BBU1MgQ1NTIFRyYW5z
aXRpb25zIHdpdGggdHJhbnNpdGlvbjogYWxsOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbMF0g
dG8gWzFdIGF0ICgxLjUpIHNob3VsZCBiZSBbMV0gCitQQVNTIENTUyBBbmltYXRpb25zOiBwcm9w
ZXJ0eSA8b3BhY2l0eT4gZnJvbSBbMF0gdG8gWzFdIGF0ICgtMC4zKSBzaG91bGQgYmUgWzBdIAor
UEFTUyBDU1MgQW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gWzBdIHRvIFsxXSBh
dCAoMCkgc2hvdWxkIGJlIFswXSAKK1BBU1MgQ1NTIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFj
aXR5PiBmcm9tIFswXSB0byBbMV0gYXQgKDAuMykgc2hvdWxkIGJlIFswLjNdIAorUEFTUyBDU1Mg
QW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gWzBdIHRvIFsxXSBhdCAoMC42KSBz
aG91bGQgYmUgWzAuNl0gCitQQVNTIENTUyBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4g
ZnJvbSBbMF0gdG8gWzFdIGF0ICgxKSBzaG91bGQgYmUgWzFdIAorUEFTUyBDU1MgQW5pbWF0aW9u
czogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gWzBdIHRvIFsxXSBhdCAoMS41KSBzaG91bGQgYmUg
WzFdIAorUEFTUyBXZWIgQW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gWzBdIHRv
IFsxXSBhdCAoLTAuMykgc2hvdWxkIGJlIFswXSAKK1BBU1MgV2ViIEFuaW1hdGlvbnM6IHByb3Bl
cnR5IDxvcGFjaXR5PiBmcm9tIFswXSB0byBbMV0gYXQgKDApIHNob3VsZCBiZSBbMF0gCitQQVNT
IFdlYiBBbmltYXRpb25zOiBwcm9wZXJ0eSA8b3BhY2l0eT4gZnJvbSBbMF0gdG8gWzFdIGF0ICgw
LjMpIHNob3VsZCBiZSBbMC4zXSAKK1BBU1MgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFj
aXR5PiBmcm9tIFswXSB0byBbMV0gYXQgKDAuNikgc2hvdWxkIGJlIFswLjZdIAorUEFTUyBXZWIg
QW5pbWF0aW9uczogcHJvcGVydHkgPG9wYWNpdHk+IGZyb20gWzBdIHRvIFsxXSBhdCAoMSkgc2hv
dWxkIGJlIFsxXSAKK1BBU1MgV2ViIEFuaW1hdGlvbnM6IHByb3BlcnR5IDxvcGFjaXR5PiBmcm9t
IFswXSB0byBbMV0gYXQgKDEuNSkgc2hvdWxkIGJlIFsxXSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS93ZWJhbmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9uLXlp
ZWxkcy1jb21wb3NpdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjEzNzg5MTc5MWZlOTY5MjdhZDc4ZTY0YjBhYWQ3YmRl
ZDA4YmRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS93
ZWJhbmltYXRpb25zL29wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2sxL3dlYmFuaW1hdGlvbnMvb3BhY2l0eS1hbmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5n
LXNwYW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS93ZWJhbmlt
YXRpb25zL29wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy1zcGFuLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYzU2YzRkODk0NDhhOTYzZDBiNjQ4Njk4OTgwOWQ2NTNkYWI5YTk3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS93ZWJhbmlt
YXRpb25zL29wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1jb21wb3NpdGluZy1zcGFuLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxIEBACitGb28KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy13azEvd2ViYW5pbWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlvbi1ieS1y
ZW1vdmluZy1wcm9wZXJ0eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2sxL3dlYmFuaW1hdGlvbnMvcGFydGx5LWFjY2VsZXJhdGVkLXRyYW5zaXRpb24tYnktcmVtb3Zp
bmctcHJvcGVydHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2Fk
NzhlNjRiMGFhZDdiZGVkMDhiZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL3dlYmFuaW1hdGlvbnMvcGFydGx5LWFjY2VsZXJhdGVkLXRyYW5zaXRpb24t
YnktcmVtb3ZpbmctcHJvcGVydHktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS93ZWJhbmltYXRpb25zL3dpZHRoLWFu
ZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtY29tcG9zaXRpbmctZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS93ZWJhbmltYXRpb25zL3dpZHRoLWFu
ZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtY29tcG9zaXRpbmctZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFhZDdiZGVkMDhiZGMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL3dlYmFuaW1h
dGlvbnMvd2lkdGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1jb21wb3Np
dGluZy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy93ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21w
b3NpdGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5k
LW9wYWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy1leHBlY3RlZC50eHQKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiMTM3ODkxNzkxZmU5NjkyN2FkNzhlNjRiMGFh
ZDdiZGVkMDhiZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlvbi15
aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9w
YWNpdHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sIGIvTGF5b3V0VGVzdHMv
d2ViYW5pbWF0aW9ucy9sZWZ0LWFuZC1vcGFjaXR5LWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9z
aXRpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZiMGY0M2U5ZDk3N2E1
MWEyZmM0ZGE4OTQ0ODc1OTc5MzNkZTliYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL2xlZnQtYW5kLW9wYWNp
dHktYW5pbWF0aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTUgKzAsMCBAQAotPHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Ci08ZGl2IGlkPSJ0YXJnZXQi
IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJs
YWNrOyI+PC9kaXY+Ci08c2NyaXB0PgotCi1jb25zdCBhbmltYXRpb24gPSBuZXcgQW5pbWF0aW9u
KG5ldyBLZXlmcmFtZUVmZmVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIFsK
LSAgICB7IGxlZnQ6IDAsIG9wYWNpdHk6IDEgfSwKLSAgICB7IGxlZnQ6ICIxMDBweCIsIG9wYWNp
dHk6IDAgfQotXSkpOwotYW5pbWF0aW9uLnN0YXJ0VGltZSA9IDA7Ci1hbmltYXRpb24uZWZmZWN0
LnVwZGF0ZVRpbWluZyh7IGR1cmF0aW9uIDogMTAwMCB9KTsKLQotdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVyVGV4dCA9IGlu
dGVybmFscy5sYXllclRyZWVBc1RleHQoZG9jdW1lbnQpOwotCi08L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvcGFydGx5LWFjY2VsZXJhdGVkLXRyYW5zaXRp
b24tYnktcmVtb3ZpbmctcHJvcGVydHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2ViYW5p
bWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlvbi1ieS1yZW1vdmluZy1wcm9wZXJ0
eS1leHBlY3RlZC50eHQKaW5kZXggOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQw
OGJkYy4uMDM4NmVlMDJmZWIxNGM3YzlhNmQzNWI1ODY4ZTRmMjkwNWMwYTY1YiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlv
bi1ieS1yZW1vdmluZy1wcm9wZXJ0eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlvbi1ieS1yZW1vdmluZy1wcm9w
ZXJ0eS1leHBlY3RlZC50eHQKQEAgLTEgKzEsMTkgQEAKKyhHcmFwaGljc0xheWVyCisgIChhbmNo
b3IgMC4wMCAwLjAwKQorICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgIChjaGlsZHJlbiAxCisg
ICAgKEdyYXBoaWNzTGF5ZXIKKyAgICAgIChib3VuZHMgODAwLjAwIDYwMC4wMCkKKyAgICAgIChj
b250ZW50c09wYXF1ZSAxKQorICAgICAgKGNoaWxkcmVuIDEKKyAgICAgICAgKEdyYXBoaWNzTGF5
ZXIKKyAgICAgICAgICAocG9zaXRpb24gMTAwLjAwIDAuMDApCisgICAgICAgICAgKGJvdW5kcyAx
MDAuMDAgMTAwLjAwKQorICAgICAgICAgIChvcGFjaXR5IDAuNTApCisgICAgICAgICAgKGNvbnRl
bnRzT3BhcXVlIDEpCisgICAgICAgICkKKyAgICAgICkKKyAgICApCisgICkKKykKIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNp
dGlvbi1ieS1yZW1vdmluZy1wcm9wZXJ0eS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9u
cy9wYXJ0bHktYWNjZWxlcmF0ZWQtdHJhbnNpdGlvbi1ieS1yZW1vdmluZy1wcm9wZXJ0eS5odG1s
CmluZGV4IDQ2NDliMTQwOGQyOTg4ZThmZjJlOWUzODQyMzZhZDEyNWI3MDA0MzYuLjRkYmY3MDZl
NDE3NGYyOWFiMTk1YjhlMmZmNTYyYTlkMDkzN2FmN2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3dlYmFuaW1hdGlvbnMvcGFydGx5LWFjY2VsZXJhdGVkLXRyYW5zaXRpb24tYnktcmVtb3Zpbmct
cHJvcGVydHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3BhcnRseS1hY2Nl
bGVyYXRlZC10cmFuc2l0aW9uLWJ5LXJlbW92aW5nLXByb3BlcnR5Lmh0bWwKQEAgLTEsNyArMSw3
IEBACiA8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGV4cGVyaW1lbnRh
bDpXZWJBbmltYXRpb25zQ1NTSW50ZWdyYXRpb25FbmFibGVkPXRydWUgXSAtLT4KIDxib2R5Pgog
PHByZSBpZD0icmVzdWx0cyI+PC9wcmU+Ci08ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJ3aWR0aDog
MTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyI+PC9kaXY+Cis8
ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDog
MDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsi
PjwvZGl2PgogPHNjcmlwdD4KIAogaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFu
aW1hdGlvbi15aWVsZHMtY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vi
YW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24teWllbGRzLWNv
bXBvc2l0aW5nLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZmM2ZDAwNDcyNWNlODIwNDM4NmZk
OTBmYjliZWFhZGViMjZiNTIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYW5p
bWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24teWllbGRzLWNvbXBv
c2l0aW5nLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACisoR3JhcGhpY3NMYXllcgorICAo
YW5jaG9yIDAuMDAgMC4wMCkKKyAgKGJvdW5kcyA4MDAuMDAgNjAwLjAwKQorICAoY2hpbGRyZW4g
MQorICAgIChHcmFwaGljc0xheWVyCisgICAgICAoYm91bmRzIDgwMC4wMCA2MDAuMDApCisgICAg
ICAoY29udGVudHNPcGFxdWUgMSkKKyAgICAgIChjaGlsZHJlbiAxCisgICAgICAgIChHcmFwaGlj
c0xheWVyCisgICAgICAgICAgKHBvc2l0aW9uIDguMDAgOC4wMCkKKyAgICAgICAgICAoYm91bmRz
IDEwMC4wMCAxMDAuMDApCisgICAgICAgICAgKGNvbnRlbnRzT3BhcXVlIDEpCisgICAgICAgICkK
KyAgICAgICkKKyAgICApCisgICkKKykKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2ViYW5p
bWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1hbmltYXRpb24teWllbGRzLWNvbXBv
c2l0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5
LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtY29tcG9zaXRpbmcuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
YjljMWE4MGM4M2FkYjI3NzlkNWIxNGM5MTQwYmMzN2IzMzQxNDM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1h
bmltYXRpb24teWllbGRzLWNvbXBvc2l0aW5nLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPHByZSBp
ZD0icmVzdWx0cyI+PC9wcmU+Cis8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyI+PC9kaXY+Cis8c2NyaXB0
PgorCit0YXJnZXQuYW5pbWF0ZShbCisgICAgeyBvcGFjaXR5OiAxLCB3aWR0aDogIjEwMHB4IiB9
LAorICAgIHsgb3BhY2l0eTogMCwgd2lkdGg6ICIyMDBweCIgfQorXSwgMTAwMCk7CisKK3Rlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdHMiKS5p
bm5lclRleHQgPSBpbnRlcm5hbHMubGF5ZXJUcmVlQXNUZXh0KGRvY3VtZW50KTsKKworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFj
aXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvd2ViYW5pbWF0aW9ucy93aWR0aC1hbmQtb3BhY2l0eS1zZXBhcmF0ZS1h
bmltYXRpb24teWllbGRzLW5vLWNvbXBvc2l0aW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGIxMzc4OTE3OTFmZTk2OTI3YWQ3OGU2NGIwYWFkN2JkZWQwOGJk
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1vcGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15
aWVsZHMtbm8tY29tcG9zaXRpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAs
MCBAQAotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhbmltYXRpb25zL3dpZHRoLWFuZC1v
cGFjaXR5LXNlcGFyYXRlLWFuaW1hdGlvbi15aWVsZHMtbm8tY29tcG9zaXRpbmcuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYmFuaW1hdGlvbnMvd2lkdGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0
aW9uLXlpZWxkcy1uby1jb21wb3NpdGluZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA1NDUxYWZkMjU1YjhhYmM1YzI4YTFlYjVlOGIyYzE1ZWFjZjBhZjY0Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3dlYmFuaW1h
dGlvbnMvd2lkdGgtYW5kLW9wYWNpdHktc2VwYXJhdGUtYW5pbWF0aW9uLXlpZWxkcy1uby1jb21w
b3NpdGluZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPHByZSBpZD0icmVz
dWx0cyI+PC9wcmU+Ci08ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdo
dDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyI+PC9kaXY+Ci08c2NyaXB0PgotCi1j
b25zdCBvcGFjaXR5QW5pbWF0aW9uID0gbmV3IEFuaW1hdGlvbihuZXcgS2V5ZnJhbWVFZmZlY3Qo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRhcmdldCIpLCBbCi0gICAgeyBvcGFjaXR5OiAxIH0s
Ci0gICAgeyBvcGFjaXR5OiAwIH0KLV0pKTsKLW9wYWNpdHlBbmltYXRpb24uc3RhcnRUaW1lID0g
MDsKLW9wYWNpdHlBbmltYXRpb24uZWZmZWN0LnVwZGF0ZVRpbWluZyh7IGR1cmF0aW9uIDogMTAw
MCB9KTsKLQotY29uc3Qgd2lkdGhBbmltYXRpb24gPSBuZXcgQW5pbWF0aW9uKG5ldyBLZXlmcmFt
ZUVmZmVjdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IiksIFsKLSAgICB7IHdpZHRo
OiAiMTAwcHgiIH0sCi0gICAgeyB3aWR0aDogIjIwMHB4IiB9Ci1dKSk7Ci13aWR0aEFuaW1hdGlv
bi5zdGFydFRpbWUgPSAwOwotd2lkdGhBbmltYXRpb24uZWZmZWN0LnVwZGF0ZVRpbWluZyh7IGR1
cmF0aW9uIDogMTAwMCB9KTsKLQotdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci1kb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicmVzdWx0cyIpLmlubmVyVGV4dCA9IGludGVybmFscy5sYXllclRyZWVB
c1RleHQoZG9jdW1lbnQpOwotCi08L3NjcmlwdD4K
</data>
<flag name="review"
          id="404845"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>