<?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>122078</bug_id>
          
          <creation_ts>2013-09-29 14:48:21 -0700</creation_ts>
          <short_desc>Use RenderElement instead of RenderObject in many places</short_desc>
          <delta_ts>2013-09-30 12:09:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>122106</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>buildbot</cc>
    
    <cc>kling</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934387</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-29 14:48:21 -0700</bug_when>
    <thetext>Use RenderElement instead of RenderObject in many places</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934388</commentid>
    <comment_count>1</comment_count>
      <attachid>212934</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-29 15:08:12 -0700</bug_when>
    <thetext>Created attachment 212934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934390</commentid>
    <comment_count>2</comment_count>
      <attachid>212935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-29 15:10:53 -0700</bug_when>
    <thetext>Created attachment 212935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934395</commentid>
    <comment_count>3</comment_count>
      <attachid>212935</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-29 15:40:12 -0700</bug_when>
    <thetext>Comment on attachment 212935
Patch

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

I would say r+ but I feel insecure about the HTMLFormElement::rendererIsNeeded change.

&gt; Source/WebCore/css/CSSFilterImageValue.cpp:137
&gt; +    auto end = clients().end();
&gt; +    for (auto it = clients().begin(); it != end; ++it)

Lame scoping of &quot;end&quot; here.

&gt; Source/WebCore/html/HTMLFormElement.cpp:103
&gt; -    ContainerNode* node = parentNode();
&gt; -    RenderObject* parentRenderer = node-&gt;renderer();
&gt; +    Element* parent = parentElement();
&gt; +    RenderElement* parentRenderer = parent-&gt;renderer();

Is this change correct?
HTMLFormElement could be a direct child of Document, in which case parentElement() would be null, no?

&gt; Source/WebCore/html/HTMLPlugInElement.cpp:90
&gt; +    return renderer &amp;&amp; (renderer-&gt;isEmbeddedObject() || renderer-&gt;isWidget());

RenderEmbeddedObject inherits from RenderWidget.
It&apos;s sufficient to check for renderer-&gt;isWidget() here.

&gt; Source/WebCore/html/HTMLPlugInElement.cpp:229
&gt; +    const PluginViewBase* plugin = pluginWidget() &amp;&amp; pluginWidget()-&gt;isPluginViewBase() ? static_cast&lt;const PluginViewBase*&gt;(pluginWidget()) : nullptr;

pluginWidget() is nontrivial, we should use a local for it.

&gt; Source/WebCore/html/HTMLSelectElement.cpp:682
&gt; -    if (RenderObject* renderer = this-&gt;renderer())
&gt; +    if (RenderElement* renderer = this-&gt;renderer())

auto

&gt; Source/WebCore/html/HTMLTableCellElement.cpp:171
&gt; -    RenderObject* cellRenderer = renderer();
&gt; +    RenderElement* cellRenderer = renderer();

auto

&gt; Source/WebCore/html/shadow/MeterShadowElement.cpp:75
&gt; -    RenderObject* render = meterElement()-&gt;renderer();
&gt; +    auto render = meterElement()-&gt;renderer();

I&apos;m starting to really like this.
Using auto ensures that we automatically use tighter types if a covariant override is added in the future.

&gt; Source/WebCore/loader/ImageLoader.cpp:321
&gt; -    RenderObject* renderer = m_element-&gt;renderer();
&gt; +    RenderElement* renderer = m_element-&gt;renderer();

auto

&gt; Source/WebCore/page/FrameView.cpp:989
&gt; -    RenderObject* frameOwnerRenderer = frame().ownerRenderer();
&gt; +    RenderElement* frameOwnerRenderer = frame().ownerRenderer();

auto!
Frame::ownerRenderer() is actually a RenderWidget* so we are missing out on tightness here.

&gt; Source/WebCore/page/FrameView.cpp:1946
&gt; +    auto end = m_viewportConstrainedObjects-&gt;end();
&gt; +    for (auto it = m_viewportConstrainedObjects-&gt;begin(); it != end; ++it)

Lame scoping of &quot;end&quot; here.

&gt; Source/WebCore/page/animation/KeyframeAnimation.h:43
&gt; +    static PassRefPtr&lt;KeyframeAnimation&gt; create(const Animation&amp; animation, RenderElement* renderer, int index, CompositeAnimation* compositeAnimation, RenderStyle* unanimatedStyle)

More RefPtr.

&gt; Source/WebCore/rendering/FilterEffectRenderer.h:113
&gt; +    PassRefPtr&lt;FilterEffect&gt; buildReferenceFilter(RenderElement*, PassRefPtr&lt;FilterEffect&gt; previousEffect, ReferenceFilterOperation*);

More RefPtr.

&gt; Source/WebCore/rendering/RenderBoxModelObject.cpp:798
&gt; -            RenderObject* clientForBackgroundImage = backgroundObject ? backgroundObject : this;
&gt; +            RenderElement* clientForBackgroundImage = backgroundObject ? backgroundObject : this;

auto

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1783
&gt; -    RenderObject* renderer = &amp;layer-&gt;renderer();
&gt; +    RenderElement* renderer = &amp;layer-&gt;renderer();

auto
layer-&gt;renderer() is a RenderLayerModelObject here.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1813
&gt; -    RenderObject* renderer = &amp;layer-&gt;renderer();
&gt; +    RenderElement* renderer = &amp;layer-&gt;renderer();

Ditto.

&gt; Source/WebCore/rendering/RenderLayerCompositor.cpp:1861
&gt; -    RenderObject* renderer = &amp;layer-&gt;renderer();
&gt; +    RenderElement* renderer = &amp;layer-&gt;renderer();

Ditto.

&gt; Source/WebCore/rendering/RenderLayerCompositor.h:370
&gt; +    bool requiresCompositingForAnimation(RenderElement*) const;
&gt; +    bool requiresCompositingForTransform(RenderElement*) const;
&gt; +    bool requiresCompositingForVideo(RenderElement*) const;
&gt; +    bool requiresCompositingForCanvas(RenderElement*) const;
&gt; +    bool requiresCompositingForPlugin(RenderElement*) const;
&gt; +    bool requiresCompositingForFrame(RenderElement*) const;
&gt; +    bool requiresCompositingForFilters(RenderElement*) const;
&gt; +    bool requiresCompositingForBlending(RenderElement*) const;

I think all of these should really take const RenderLayerModelObject&amp; instead of RenderElement*.

&gt; Source/WebCore/rendering/RenderObject.cpp:-1988
&gt; -    animation().cancelAnimations(this);

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934396</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-29 15:41:10 -0700</bug_when>
    <thetext>Re: &quot;More RefPtr&quot;, I started making comments about how we should return RefPtr instead of PassRefPtr, but then it got out of hand so I removed them. But not all of them, it seems :|</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934397</commentid>
    <comment_count>5</comment_count>
      <attachid>212935</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-29 15:43:05 -0700</bug_when>
    <thetext>Comment on attachment 212935
Patch

Attachment 212935 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/2705100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934398</commentid>
    <comment_count>6</comment_count>
      <attachid>212935</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-29 15:52:58 -0700</bug_when>
    <thetext>Comment on attachment 212935
Patch

Attachment 212935 did not pass win-ews (win):
Output: http://webkit-queues.appspot.com/results/2709091</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934399</commentid>
    <comment_count>7</comment_count>
      <attachid>212935</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-09-29 16:00:23 -0700</bug_when>
    <thetext>Comment on attachment 212935
Patch

Attachment 212935 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/2711075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934404</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-29 16:59:10 -0700</bug_when>
    <thetext>Working on a new patch now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934405</commentid>
    <comment_count>9</comment_count>
      <attachid>212935</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-29 17:02:51 -0700</bug_when>
    <thetext>Comment on attachment 212935
Patch

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

&gt;&gt; Source/WebCore/html/HTMLFormElement.cpp:103
&gt;&gt; +    RenderElement* parentRenderer = parent-&gt;renderer();
&gt; 
&gt; Is this change correct?
&gt; HTMLFormElement could be a direct child of Document, in which case parentElement() would be null, no?

I thought that an HTMLFormElement could not be a direct child of Document, but then I read Document::childTypeAllowed, and it seems I was wrong. I’ll do this a different way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934413</commentid>
    <comment_count>10</comment_count>
      <attachid>212940</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-29 18:37:40 -0700</bug_when>
    <thetext>Created attachment 212940
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934419</commentid>
    <comment_count>11</comment_count>
      <attachid>212940</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-09-29 18:55:21 -0700</bug_when>
    <thetext>Comment on attachment 212940
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934428</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-09-29 19:39:35 -0700</bug_when>
    <thetext>Committed r156622: &lt;http://trac.webkit.org/changeset/156622&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934471</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-30 00:07:00 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Committed r156622: &lt;http://trac.webkit.org/changeset/156622&gt;

It broke the Apple Windows build:

    1&gt;..\..\win\WebFrame.cpp(1231): error C2664: &apos;WebCore::AnimationController::pauseAnimationAtTime&apos; : cannot convert parameter 1 from &apos;WebCore::RenderObject *&apos; to &apos;WebCore::RenderElement *&apos;
                 Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
     1&gt;..\..\win\WebFrame.cpp(1250): error C2664: &apos;WebCore::AnimationController::pauseTransitionAtTime&apos; : cannot convert parameter 1 from &apos;WebCore::RenderObject *&apos; to &apos;WebCore::RenderElement *&apos;
                 Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934476</commentid>
    <comment_count>14</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-30 00:27:07 -0700</bug_when>
    <thetext>Unfortunately Windows EWS is very very sick and it seems nobody is really
interested in fixing it. :(

I noticed it a month before: https://lists.webkit.org/pipermail/webkit-dev/2013-September/025374.html

... but nothing happened ...

I prepared a workaround for it 3 days before: https://bugs.webkit.org/show_bug.cgi?id=122013

... but it is still waiting for review ...

Otherwise switching off buggy bots would be much more simpler task
than trying to land a workaround to opt-out buggy machines ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934605</commentid>
    <comment_count>15</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2013-09-30 08:39:20 -0700</bug_when>
    <thetext>This broke the Windows build.

http://build.webkit.org/builders/Apple%20Win%20Debug%20%28Build%29/builds/70962</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934725</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-09-30 12:09:23 -0700</bug_when>
    <thetext>Fixes landed in
 - http://trac.webkit.org/changeset/156655
 - http://trac.webkit.org/changeset/156667</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212934</attachid>
            <date>2013-09-29 15:08:12 -0700</date>
            <delta_ts>2013-09-29 15:10:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122078-20130929150811.patch</filename>
            <type>text/plain</type>
            <size>255040</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggZDk1ZGE1MDJjZTQ0ZjljMjYzZWU2OGNiMDY5OTQ5OTYzNzYwMDRkYS4uNjNmZDhjYWY4Mzc2
Yjg4OGFiMGE4NzhjZTIxMGY0YjQ3YWRiMDY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgUmVuZGVyRWxlbWVudCBpbnN0ZWFkIG9mIFJlbmRlck9iamVj
dCBpbiBtYW55IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBMZXQgWGNvZGUgZG8g
aXRzIHRoaW5nIHRvIHRoaXMgZmlsZS4KKwogMjAxMy0wOS0yNCAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNDk3MTUxOD4gV2ViS2l0IHNo
b3VsZCBidWlsZCBhZ2FpbnN0IHRoZSBYY29kZSBkZWZhdWx0IHRvb2xjaGFpbiB3aGVuIHRhcmdl
dGluZyBPUyBYIDEwLjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZTg3MWFmMDMxMTgyY2NkMzI1ZjQ1MGQ3Njcz
ZTAxNmIxYmVlZWNmLi43YmNkNzQ4MjUzZTBhNmI5Y2IyN2I3N2ZlYzhhNzE4MDU5ZWU3YjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkzIEBACisyMDEzLTA5LTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmVuZGVyRWxlbWVudCBpbnN0ZWFkIG9mIFJl
bmRlck9iamVjdCBpbiBtYW55IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlZCBmb3IgbmFtZSBjaGFu
Z2VzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmltYWdl
TWFwTGlua1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbms6OmRldGFjaEZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluazo6ZWxlbWVudFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluazo6ZWxlbWVudFJlY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTUVsZW1lbnQgaW1hZ2VdKToK
KyAgICAgICAgKC1bRE9NRWxlbWVudCBfZm9udF0pOgorICAgICAgICAoLVtET01FbGVtZW50IF9p
bWFnZVRJRkZSZXByZXNlbnRhdGlvbl0pOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzUmVzaXplZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjpmaXhlZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FudmFzVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXB1dGVSZW5kZXJTdHlsZUZvclByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ViaW1hZ2VLbm93blRvQmVP
cGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jvc3NmYWRlQ2hhbmdlZCk6CisgICAgICAgICog
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6Zml4ZWRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaWx0ZXJJbWFnZUNoYW5nZWQpOgor
ICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHA6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3Jh
ZGllbnRWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVh
ckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBjc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Zml4ZWRT
aXplKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjphZGRDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmZpeGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIGNz
cy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpjbGllbnRzKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJr
ZXJzRnJvbUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
OjpyZXBhaW50TWFya2Vycyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bG9jYWxab29tRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0
Rm9yTG9jYWxab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om9mZnNldFBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVFeGlzdGluZ1BzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0
YTo6RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVC
dXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRGVsZXRhYmxlRWxlbWVu
dCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpoYXNCaWRpU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YmFzZVdy
aXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2Up
OgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldEltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2UpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQXJlYUVsZW1lbnQ6OmNvbXB1dGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVh
RWxlbWVudDo6Y29tcHV0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50
OjpzZXRGb2N1cyk6CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50OjpyZXNldCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KToKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRnJv
bUVsZW1lbnRDYWxsYmFjayk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojp4
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnkpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6cmVuZGVyTWV0ZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudDo6aXNLZXlib2FyZEZvY3VzYWJsZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpyZW5kZXJQ
cm9ncmVzcyk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0T3B0aW9uKToK
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50OjpjZWxsQWJvdmUpOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVmlzaWJs
ZVRleHRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwOgorICAgICAgICAqIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xFbGVtZW50OjpzZXREaXNwbGF5VHlwZSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sUGFuZWxFbGVtZW50OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25JbWFnZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJj
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxF
bGVtZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2Nyb2xsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojpsb2dpY2FsU2Nyb2xsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpzdWJmcmFtZUZvclRhcmdldE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJGb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyR2VzdHVyZVNjcm9sbE5vZGVzKToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpv
d25lclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp2aXNpYmxlUG9zaXRpb25G
b3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFwcGx5
T3ZlcmZsb3dUb1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YXBwbHlQ
YWdpbmF0aW9uVG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNhbGN1
bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aXNFbmNsb3NlZEluQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmFkZFNsb3dSZXBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVt
b3ZlU2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
cmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpyZXBhaW50U2xvd1JlcGFpbnRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2V0Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNOZWVkTGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
Y29udmVydEZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNvbnZl
cnRUb1JlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6
OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoK
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvbkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
QW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpy
ZW5kZXJlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6ZW5zdXJl
Q29tcG9zaXRlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9uVGltZXJGb3JSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6aXNSdW5uaW5nQW5pbWF0
aW9uT25SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzdXNwZW5kQW5pbWF0aW9uc0Zv
ckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
OjpyZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmdldEFuaW1h
dGVkU3R5bGVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpwYXVzZUFuaW1h
dGlvbkF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpwYXVz
ZVRyYW5zaXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxl
cjo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyb3NzZmFkZUJsZW5kKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1
cGRhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246
OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVB
bmltYXRpb246OmFuaW1hdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFu
aW1hdGlvbi5oOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpJbXBsaWNpdEFuaW1hdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1h
dGlvbjo6S2V5ZnJhbWVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmlt
YXRpb246OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OnBh
dXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjplbmRB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OnNlbmRBbmlt
YXRpb25FdmVudCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KToKKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OnNuYXBzaG90RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9Db3VudGVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6Q291bnRlck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q291bnRlck5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVy
aW5nL0NvdW50ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6b3duZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzcGVs
bGluZ1Rvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6dGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5uZXJUZXh0SWZUcnVuY2F0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9MYXlvdXRSZXBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0UmVwYWlu
dGVyOjpMYXlvdXRSZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRSZXBhaW50
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5b3V0U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xpbmVX
aWR0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9Mb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0NvbnRhaW5pbmdCbG9ja0NhbmRpZGF0ZUZvckFic29s
dXRlbHlQb3NpdGlvbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uUmVuZGVyQmxv
Y2tJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluaW5nQmxvY2tGb3JBYnNvbHV0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5pbmdCbG9ja0Zvck9iamVjdEluRmxvdyk6
CisgICAgICAgIChXZWJDb3JlOjpMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzOjpMb2dpY2Fs
U2VsZWN0aW9uT2Zmc2V0Q2FjaGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OlBhaW50SW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWludEluZm86OnVwZGF0ZVN1YnRyZWVQYWludFJvb3RGb3JDaGlsZHJlbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50
RmlsbExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEluUHJlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGxhbkNvdW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50
ZXI6Om9yaWdpbmFsVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6flJlbmRlckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFsaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2luZ0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2FuQmVDb21wb3Np
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNP
d25CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZWFzb25zRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVv
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21w
b3NpdGluZ0ZvckNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yQmxlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjppc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojpjb250YWluaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6bXVzdFJlcGFpbnRGaWxs
TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Ym9yZGVySW1hZ2VJc0xv
YWRlZEFuZENhbkJlUmVuZGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp3
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OnJlbmRlcmVyT3du
aW5nU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lTGlzdDo6S2V5ZnJhbWVMaXN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNhY2hlZEltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVDYWNoZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OmFkZENsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNo
ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVDYWNoZWRJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0Ojpjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0
OjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
YWNoZWRJbWFnZVNldDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVk
SW1hZ2VTZXQ6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZElt
YWdlU2V0OjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0Ojpr
bm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUlt
YWdlOjppbWFnZXNFcXVpdmFsZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVQ
ZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjpjc3NJ
bWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjpjc3NJbWFn
ZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjpj
c3NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdl
Ojpjc3NJbWFnZVNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdl
Ojpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpib3VuZGluZ0JveCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6aXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1
cmVkKToKKyAgICAgICAgVXNlIFJlbmRlckVsZW1lbnQgaW5zdGVhZCBvZiBSZW5kZXJPYmplY3Qg
d2hlcmUgaXQgd2FzIGVhc3kgdG8gZG8gc28uCisgICAgICAgIEZvciBsb2NhbCB2YXJpYWJsZXMg
aG9sZGluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHJlbmRlcmVyKCkgZnVuY3Rpb25zLAorICAgICAg
ICB1c2UgYXV0byBpbnN0ZWFkLCBzbyB0aGUgbW9zdC1zcGVjaWZpYyBwb3NzaWJsZSB0eXBlIHdp
bGwgYmUgdXNlZCwKKyAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZmlndXJlIG91dCB3aGF0IHRo
YXQgaXMgaW4gZWFjaCBjYXNlLiBBbHNvIHVzZSBzb21lCisgICAgICAgIG1vcmUgT1ZFUlJJREUg
YW5kIEZJTkFMIGFuZCB1c2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuIEFuZCByZXBsYWNlIHNvbWUK
KyAgICAgICAgY3J5cHRpYyBzaG9ydCBsb2NhbCB2YXJpYWJsZSBuYW1lcyB3aXRoIHdvcmRzLgor
CiAyMDEzLTA5LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWdodGVuIHR5cGluZyBpbiBpbmxpbmUgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
NjQyYjcyNzFjYjJiYTY3ODFjZGJmMmMyNWM5M2FmMWFkZDk1ZjNhLi4wODVkOTY4NTM0Mzg5OWJk
ZmNlMjk5NWRkNDU2NmU5YzAyN2M0YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NiwxMSArMTY2
LDExIEBACiAJCTQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25F
bXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IxM0ZEMjE3OURCM0ZE
MDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERldGVjdENhbGxEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQjEzRkQzMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQjEzRkRGMTc5RjQ2NTgwMDFGODUxRCAvKiBFeHByZXNz
aW9uUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV4cHJl
c3Npb25QYXJzZXIuY3BwOyBwYXRoID0gRXhwcmVzc2lvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVDQjEzRkUwMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xl
eC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBnbHNsYW5nX2xleC5j
cHA7IHBhdGggPSBnbHNsYW5nX2xleC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDQjEzRkUxMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX3RhYi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBnbHNsYW5nX3RhYi5jcHA7IHBhdGggPSBnbHNsYW5n
X3RhYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQjEzRkUyMTc5RjQ2NTgw
MDFGODUxRCAvKiBnbHNsYW5nX3RhYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBnbHNsYW5nX3RhYi5oOyBwYXRoID0gZ2xzbGFuZ190YWIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNUNCMTNGRTMxNzlGNDY1ODAwMUY4NTFEIC8qIFRva2VuaXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUb2tlbml6ZXIuY3BwOyBwYXRoID0g
VG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMTNGREYxNzlG
NDY1ODAwMUY4NTFEIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhwcmVzc2lvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDQjEzRkUwMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNsYW5nX2xleC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjEzRkUxMTc5RjQ2NTgwMDFGODUxRCAvKiBn
bHNsYW5nX3RhYi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNs
YW5nX3RhYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjEzRkUyMTc5RjQ2
NTgwMDFGODUxRCAvKiBnbHNsYW5nX3RhYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBnbHNsYW5nX3RhYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0IxM0ZF
MzE3OUY0NjU4MDAxRjg1MUQgLyogVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDQ5N2FhZGY1NTg5NmQ2YTRiNDdiMDA3OGJlMTFlNDZlMzA1ZWJjMzAuLmJiNzhjMGU5M2Q5
YjM2OWJjNzYxMWNlMzI4N2M2YzhlZTBlMmM5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02
MzgsOCArNjM4LDYgQEAgX19aTjdXZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTNKU0hUTUxFbGVtZW50RQogX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNG
b3JVUkxFUktOU18zVVJMRVBLTlNfMTdOZXR3b3JraW5nQ29udGV4dEUKIF9fWk43V2ViQ29yZTE5
QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmUxOUFu
aW1hdGlvbkNvbnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25zRXYKLV9fWk43V2ViQ29yZTE5QW5p
bWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEyUmVuZGVyT2JqZWN0
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0VkCi1fX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xs
ZXIyMXBhdXNlVHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOM1dURjZTdHJp
bmdFZAogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzZzZXRBbGxvd3NOZXdBbmlt
YXRpb25zV2hpbGVTdXNwZW5kZWRFYgogX19aTjdXZWJDb3JlMTlIVE1MVGV4dEFyZWFFbGVtZW50
OHNldFZhbHVlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1
bGVyMTBpbnZhbGlkYXRlRXYKQEAgLTE2OTMsMTEgKzE2OTEsMTEgQEAgX19aTks3V2ViQ29yZTlG
cmFtZVZpZXcxMW5lZWRzTGF5b3V0RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTNpc1RyYW5z
cGFyZW50RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTNwYWludEJlaGF2aW9yRXYKIF9fWk5L
N1dlYkNvcmU5RnJhbWVWaWV3MTRkaWRGaXJzdExheW91dEV2Ci1fX1pOSzdXZWJDb3JlOUZyYW1l
VmlldzE3Y29udmVydFRvUmVuZGVyZXJFUEtOU18xMlJlbmRlck9iamVjdEVSS05TXzdJbnRSZWN0
RQotX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxN2NvbnZlcnRUb1JlbmRlcmVyRVBLTlNfMTJSZW5k
ZXJPYmplY3RFUktOU184SW50UG9pbnRFCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzE3Y29udmVy
dFRvUmVuZGVyZXJFUEtOU18xM1JlbmRlckVsZW1lbnRFUktOU183SW50UmVjdEUKK19fWk5LN1dl
YkNvcmU5RnJhbWVWaWV3MTdjb252ZXJ0VG9SZW5kZXJlckVQS05TXzEzUmVuZGVyRWxlbWVudEVS
S05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTliYXNlQmFja2dyb3VuZENv
bG9yRXYKLV9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTljb252ZXJ0RnJvbVJlbmRlcmVyRVBLTlNf
MTJSZW5kZXJPYmplY3RFUktOU183SW50UmVjdEUKLV9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTlj
b252ZXJ0RnJvbVJlbmRlcmVyRVBLTlNfMTJSZW5kZXJPYmplY3RFUktOU184SW50UG9pbnRFCitf
X1pOSzdXZWJDb3JlOUZyYW1lVmlldzE5Y29udmVydEZyb21SZW5kZXJlckVQS05TXzEzUmVuZGVy
RWxlbWVudEVSS05TXzdJbnRSZWN0RQorX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxOWNvbnZlcnRG
cm9tUmVuZGVyZXJFUEtOU18xM1JlbmRlckVsZW1lbnRFUktOU184SW50UG9pbnRFCiBfX1pOSzdX
ZWJDb3JlOUZyYW1lVmlldzIwaXNTb2Z0d2FyZVJlbmRlcmFibGVFdgogX19aTks3V2ViQ29yZTlG
cmFtZVZpZXcyMW1heGltdW1TY3JvbGxQb3NpdGlvbkV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmll
dzIxbWluaW11bVNjcm9sbFBvc2l0aW9uRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4IDc5MWJm
MWM0ZWNiZmZmMjFiZjY3NzczZmUzYmVhMDgxMTM5NTNlY2IuLjVjMzI3NzkyNTMwYTU5NTBhYWE1
ZGM1Y2ZlNWRjZTNmMjdlNTMwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtMTM0LDE0ICsx
MzQsMTQgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnRpdGxlKCkgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluazo6aW1hZ2VNYXBMaW5rUmVuZGVyZXIoKSBjb25zdAorUmVuZGVyRWxlbWVudCog
QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6aW1hZ2VNYXBMaW5rUmVuZGVyZXIoKSBjb25zdAog
ewotICAgIGlmICghbV9tYXBFbGVtZW50LmdldCgpIHx8ICFtX2FyZWFFbGVtZW50LmdldCgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fbWFwRWxlbWVudCB8fCAhbV9hcmVhRWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gMDsKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7CiAgICAgaWYgKG1f
cGFyZW50ICYmIG1fcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAg
ICAgcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9w
YXJlbnQpLT5yZW5kZXJlcigpOworICAgICAgICByZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9wYXJlbnQpLT5yZW5kZXJl
cigpKTsKICAgICBlbHNlCiAgICAgICAgIHJlbmRlcmVyID0gbV9tYXBFbGVtZW50LT5yZW5kZXJl
cigpOwogICAgIApAQCAtMTUxLDEzICsxNTEsMTMgQEAgUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rOjppbWFnZU1hcExpbmtSZW5kZXJlcigpIGNvbnN0CiB2b2lkIEFjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbms6OmRldGFjaEZyb21QYXJlbnQoKQogewogICAgIEFjY2Vzc2li
aWxpdHlNb2NrT2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KCk7Ci0gICAgbV9hcmVhRWxlbWVudCA9
IDA7Ci0gICAgbV9tYXBFbGVtZW50ID0gMDsKKyAgICBtX2FyZWFFbGVtZW50ID0gbnVsbHB0cjsK
KyAgICBtX21hcEVsZW1lbnQgPSBudWxscHRyOwogfQogCiBQYXRoIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbms6OmVsZW1lbnRQYXRoKCkgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gaW1hZ2VNYXBMaW5rUmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gaW1hZ2VN
YXBMaW5rUmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gUGF0
aCgpOwogICAgIApAQCAtMTY2LDcgKzE2Niw3IEBAIFBhdGggQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluazo6ZWxlbWVudFBhdGgoKSBjb25zdAogICAgIAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rOjplbGVtZW50UmVjdCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGltYWdlTWFwTGlua1JlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IGlt
YWdlTWFwTGlua1JlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKaW5kZXggMmYxZmIwYjcyNzI0NTJi
NmIzYmJhZGU4MTQwZGVjZmE0MTQyMjRhNC4uNDYwMGUzYzQxZDVmYzk1MTg4MmQzY2ZkOTk2OTZm
YzZkYTBkZTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0KiBpbWFnZU1h
cExpbmtSZW5kZXJlcigpIGNvbnN0OworICAgIFJlbmRlckVsZW1lbnQqIGltYWdlTWFwTGlua1Jl
bmRlcmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VGV4dD4mKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmso
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDJlNDE4M2Nk
Y2I2ZjQxZGU5ZDEwMGI5MzY1ZGE0ZDZmZTExOGM0ZGYuLjhhZjNlMmYwMWIwN2IxNzNmODBhNzA4
MmI1NzQ3ZDdmZmYzOTUzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTI2Miw3ICsxMjYy
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIGNoZWNrIHdo
ZXRoZXIgcmVuZGVyZWQgaW1hZ2Ugd2FzIHN0cmV0Y2hlZCBmcm9tIG9uZS1kaW1lbnNpb25hbCBm
aWxlIGltYWdlCiAgICAgICAgICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkpIHsKLSAgICAg
ICAgICAgICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5p
bWFnZVNpemVGb3JSZW5kZXJlcihtX3JlbmRlcmVyLCBpbWFnZS0+dmlldygpLnpvb21GYWN0b3Io
KSk7CisgICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIodG9SZW5kZXJFbGVtZW50KG1fcmVuZGVyZXIp
LCBpbWFnZS0+dmlldygpLnpvb21GYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlt
YWdlU2l6ZS5oZWlnaHQoKSA8PSAxIHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDE7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNGZm
ZTg2MWE3N2QyY2QyMGY3YzM0Mzg1N2I3MzU2NGY3MzU5MGY0Ny4uYzAyZWY5ZjUwOGYxZGQ5YmMx
YzQ4MzRjNjM3NDlhYTc2OTE5NzA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0K
QEAgLTM2NiwxMCArMzY2LDEwIEBAIC0gKE5TSW1hZ2UqKWltYWdlCiAgICAgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBXZWJDb3JlOjpD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+Y2FjaGVk
SW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3Vy
cmVkKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+Z2V0TlNJbWFnZSgpOworICAgIHJldHVybiBjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcih0b1JlbmRlckltYWdlKHJlbmRlcmVyKSktPmdldE5TSW1h
Z2UoKTsKIH0KIAogQGVuZApAQCAtMzc5LDcgKzM3OSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBET01F
bGVtZW50IChXZWJQcml2YXRlKQogLSAoTlNGb250ICopX2ZvbnQKIHsKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6OkVsZW1lbnQgYW5kIGF1dG9n
ZW5lcmF0ZT8KLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxm
KS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBy
ZW5kZXJlci0+c3R5bGUoKS0+Zm9udCgpLnByaW1hcnlGb250KCktPmdldE5TRm9udCgpOwpAQCAt
Mzg4LDcgKzM4OCw3IEBAIC0gKE5TRm9udCAqKV9mb250CiAtIChOU0RhdGEgKilfaW1hZ2VUSUZG
UmVwcmVzZW50YXRpb24KIHsKICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0
aW9uIHRvIFdlYkNvcmU6OkVsZW1lbnQgYW5kIGF1dG9nZW5lcmF0ZT8KLSAgICBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBhdXRv
IHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8
ICFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIFdlYkNvcmU6
OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlcklt
YWdlKj4ocmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNW
YWx1ZS5jcHAKaW5kZXggMWZlMmEzNTBmMWQyZjkwOThkNTY5NDI1NWY0ZjAzMTQ3NDFiNWQ3Yi4u
NDhmODMzMzVlYzQwNTY2ZjllMjFmMGIxYjc3MzUyNWExMmU3M2YwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTQ2Fu
dmFzVmFsdWUuaCIKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMjUgKzUwLDIz
IEBAIFN0cmluZyBDU1NDYW52YXNWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB2b2lkIENT
U0NhbnZhc1ZhbHVlOjpjYW52YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50KiwgY29uc3QgRmxv
YXRSZWN0JiBjaGFuZ2VkUmVjdCkKIHsKICAgICBJbnRSZWN0IGltYWdlQ2hhbmdlUmVjdCA9IGVu
Y2xvc2luZ0ludFJlY3QoY2hhbmdlZFJlY3QpOwotICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlck9i
amVjdCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjbGllbnRzKCkuZW5kKCk7Ci0gICAgZm9yIChI
YXNoQ291bnRlZFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVu
dHMoKS5iZWdpbigpOyBjdXJyICE9IGVuZDsgKytjdXJyKQotICAgICAgICBjb25zdF9jYXN0PFJl
bmRlck9iamVjdCo+KGN1cnItPmtleSktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVk
SW1hZ2VQdHI+KHRoaXMpLCAmaW1hZ2VDaGFuZ2VSZWN0KTsKKyAgICBmb3IgKGF1dG8gaXQgPSBj
bGllbnRzKCkuYmVnaW4oKSwgZW5kID0gY2xpZW50cygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgIGl0LT5rZXktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQ
dHI+KHRoaXMpLCAmaW1hZ2VDaGFuZ2VSZWN0KTsKIH0KIAogdm9pZCBDU1NDYW52YXNWYWx1ZTo6
Y2FudmFzUmVzaXplZChIVE1MQ2FudmFzRWxlbWVudCopCiB7Ci0gICAgSGFzaENvdW50ZWRTZXQ8
UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNsaWVudHMoKS5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hDb3VudGVkU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBjdXJy
ID0gY2xpZW50cygpLmJlZ2luKCk7IGN1cnIgIT0gZW5kOyArK2N1cnIpCi0gICAgICAgIGNvbnN0
X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4oY3Vyci0+a2V5KS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0
PFdyYXBwZWRJbWFnZVB0cj4odGhpcykpOworICAgIGZvciAoYXV0byBpdCA9IGNsaWVudHMoKS5i
ZWdpbigpLCBlbmQgPSBjbGllbnRzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
aXQtPmtleS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4odGhpcykp
OwogfQogCiB2b2lkIENTU0NhbnZhc1ZhbHVlOjpjYW52YXNEZXN0cm95ZWQoSFRNTENhbnZhc0Vs
ZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChlbGVtZW50LCBlbGVtZW50ID09
IG1fZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50ID0gMDsKKyAgICBtX2VsZW1lbnQgPSBudWxscHRy
OwogfQogCi1JbnRTaXplIENTU0NhbnZhc1ZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKK0ludFNpemUgQ1NTQ2FudmFzVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQqIGVs
dCA9IGVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm4gSW50U2l6
ZShlbHQtPndpZHRoKCksIGVsdC0+aGVpZ2h0KCkpOwpAQCAtODYsMTMgKzg0LDEzIEBAIEhUTUxD
YW52YXNFbGVtZW50KiBDU1NDYW52YXNWYWx1ZTo6ZWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgcmV0dXJuIG1fZWxlbWVudDsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFz
VmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIC8qc2l6
ZSovKQorUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiAvKnNpemUqLykKIHsKICAgICBBU1NFUlQoY2xp
ZW50cygpLmNvbnRhaW5zKHJlbmRlcmVyKSk7Ci0gICAgSFRNTENhbnZhc0VsZW1lbnQqIGVsdCA9
IGVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50KCkpOwotICAgIGlmICghZWx0IHx8ICFlbHQtPmJ1
ZmZlcigpKQorICAgIEhUTUxDYW52YXNFbGVtZW50KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudChy
ZW5kZXJlci0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5idWZm
ZXIoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGVsdC0+Y29waWVkSW1hZ2UoKTsK
KyAgICByZXR1cm4gZWxlbWVudC0+Y29waWVkSW1hZ2UoKTsKIH0KIAogYm9vbCBDU1NDYW52YXNW
YWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0NhbnZhc1ZhbHVlJiBvdGhlcikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggMzMzYjMzMDQxYzNjOTlmZTM3MWNkN2MwODQ5NjMw
M2U2NmVlYmIyOS4uNWY4ZWNhZGMyN2JkOWI3OWUyNzRiM2RkNjg0ZDJhN2M4YjQ4MmVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTQwLDkgKzQwLDkgQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1h
Z2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRy
PEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wg
aXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNp
emUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVu
ZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAppbmRleCA0ZTZlZTFhZDZjYmQ2MDY3NjhkY2JkNTZmNTFlMjNhOWU5MmI2NGNkLi41NzJhYTA0
OWI1MGJhMTIxZTI3NWM1N2ZmYWU2YTkzZjJiZjZmMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTY5Niw3ICsxNjk2
LDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlUmVuZGVy
U3R5bGVGb3JQcm9wZXJ0eShOb2RlKiBzdHlsZWQKIAogICAgIGlmIChyZW5kZXJlciAmJiByZW5k
ZXJlci0+aXNDb21wb3NpdGVkKCkgJiYgQW5pbWF0aW9uQ29udHJvbGxlcjo6c3VwcG9ydHNBY2Nl
bGVyYXRlZEFuaW1hdGlvbk9mUHJvcGVydHkocHJvcGVydHlJRCkpIHsKICAgICAgICAgQW5pbWF0
aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2soJnJlbmRlcmVyLT5hbmltYXRpb24o
KSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSByZW5kZXJlci0+YW5pbWF0
aW9uKCkuZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHJlbmRlcmVyLT5hbmltYXRpb24oKS5nZXRBbmltYXRl
ZFN0eWxlRm9yUmVuZGVyZXIodG9SZW5kZXJFbGVtZW50KHJlbmRlcmVyKSk7CiAgICAgICAgIGlm
IChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyICYmICFzdHlsZWROb2RlLT5pc1BzZXVkb0VsZW1lbnQo
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxs
IG9ubHkgZXhpc3QgaWYgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4K
ICAgICAgICAgICAgIHJldHVybiBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxl
bWVudFNwZWNpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3Nm
YWRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApp
bmRleCAxYTMzMTZiMzI3ZjY5MGJmYmM2MmFmMTMyN2NmNGYxN2Y4N2E1ZTE2Li5jOTQ0YjY3ODcw
NDRjMDhhMDU5YmM5YzliOTRiMmQ5YWNkOThiZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIGJsZW5kRnVuYyhk
b3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgcmV0dXJuIGJsZW5k
KGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRpYyBib29sIHN1YmltYWdlS25vd25Ub0Jl
T3BhcXVlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0
YXRpYyBib29sIHN1YmltYWdlS25vd25Ub0JlT3BhcXVlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3Qg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIHRvQ1NTSW1hZ2VWYWx1ZSh2YWx1ZSktPmtub3duVG9CZU9wYXF1
ZShyZW5kZXJlcik7CkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBDU1NDcm9zc2ZhZGVWYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQog
Ci1JbnRTaXplIENTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK0ludFNpemUgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBmbG9hdCBwZXJjZW50YWdlID0gbV9wZXJj
ZW50YWdlVmFsdWUtPmdldEZsb2F0VmFsdWUoKTsKICAgICBmbG9hdCBpbnZlcnNlUGVyY2VudGFn
ZSA9IDEgLSBwZXJjZW50YWdlOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRl
VmFsdWU6OmlzUGVuZGluZygpIGNvbnN0CiAgICAgICAgIHx8IENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OnN1YmltYWdlSXNQZW5kaW5nKG1fdG9WYWx1ZS5nZXQoKSk7CiB9CiAKLWJvb2wgQ1NTQ3Jv
c3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdAorYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIHJldHVybiBzdWJpbWFnZUtub3du
VG9CZU9wYXF1ZShtX2Zyb21WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpICYmIHN1YmltYWdlS25vd25U
b0JlT3BhcXVlKG1fdG9WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpOwogfQpAQCAtMTM4LDcgKzEzOCw3
IEBAIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgbV9jcm9zc2ZhZGVTdWJpbWFnZU9ic2Vy
dmVyLnNldFJlYWR5KHRydWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVW
YWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K1Bhc3NSZWZQdHI8SW1hZ2U+IENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTYzLDExICsxNjMsOCBAQCBQYXNzUmVmUHRyPElt
YWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29u
c3QgSW50U2l6ZQogCiB2b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpjcm9zc2ZhZGVDaGFuZ2VkKGNv
bnN0IEludFJlY3QmKQogewotICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlck9iamVjdCo+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBjbGllbnRzKCkuZW5kKCk7Ci0gICAgZm9yIChIYXNoQ291bnRlZFNl
dDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVudHMoKS5iZWdpbigp
OyBjdXJyICE9IGVuZDsgKytjdXJyKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50ID0g
Y29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihjdXJyLT5rZXkpOwotICAgICAgICBjbGllbnQtPmlt
YWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKLSAgICB9Cisg
ICAgZm9yIChhdXRvIGl0ID0gY2xpZW50cygpLmJlZ2luKCksIGVuZCA9IGNsaWVudHMoKS5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+a2V5LT5pbWFnZUNoYW5nZWQoc3RhdGlj
X2Nhc3Q8V3JhcHBlZEltYWdlUHRyPih0aGlzKSk7CiB9CiAKIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFs
dWU6OkNyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQcm94eTo6aW1hZ2VDaGFuZ2VkKENhY2hlZElt
YWdlKiwgY29uc3QgSW50UmVjdCogcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmgKaW5kZXggZjlkYmJhYzE5ZDM4YTJlYWFjYTMzMDZlYjkyMmUxMTdlODg2MDZhZS4uOTY0
YjExNmU5MmI0NTk4MmExNTExODhjZWQ4ZGE1NmQ3NzhhNjNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIENyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQ
cm94eTsKLWNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBE
b2N1bWVudDsKIAogY2xhc3MgQ1NTQ3Jvc3NmYWRlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZSB7CkBAIC01MiwxMiArNTIsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1
c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRl
ck9iamVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShS
ZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVy
T2JqZWN0Kik7CisgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwog
CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAgICBib29sIGtub3duVG9CZU9wYXF1ZShj
b25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25z
dCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwCmluZGV4IDU3ZDJlYmZmMzkzNzQzZGRlZjZmZmExZWNjZWU3MDI1Y2Y0OTZjYWMuLmVj
MWI1ZGQwZTJlYzNjZDRlODU4MGMwYTFkOTBjZGMzOWEwOWJlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
ICJDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRl
cmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFn
ZS5oIgogI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCkBAIC01OSw3ICs1OSw3IEBAIFN0cmluZyBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAK
LUludFNpemUgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCitJbnRTaXplIENTU0ZpbHRlckltYWdlVmFsdWU6OmZpeGVkU2l6ZShjb25z
dCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpOwogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGNhY2hlZEltYWdlRm9y
Q1NTVmFsdWUobV9pbWFnZVZhbHVlLmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CkBAIC03
NSw3ICs3NSw3IEBAIGJvb2wgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aXNQZW5kaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcobV9p
bWFnZVZhbHVlLmdldCgpKTsKIH0KIAotYm9vbCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjprbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKK2Jvb2wgQ1NTRmlsdGVySW1hZ2VW
YWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdAogewogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWQKICAgICBtX2ZpbHRlclN1YmltYWdlT2JzZXJ2ZXIuc2V0UmVhZHkodHJ1ZSk7CiB9CiAKLVBh
c3NSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0
ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtMTMzLDExICsxMzMsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVl
OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaQogCiB2b2lkIENTU0Zp
bHRlckltYWdlVmFsdWU6OmZpbHRlckltYWdlQ2hhbmdlZChjb25zdCBJbnRSZWN0JikKIHsKLSAg
ICBIYXNoQ291bnRlZFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2xp
ZW50cygpLmVuZCgpOwotICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8UmVuZGVyT2JqZWN0Kj46OmNv
bnN0X2l0ZXJhdG9yIGN1cnIgPSBjbGllbnRzKCkuYmVnaW4oKTsgY3VyciAhPSBlbmQ7ICsrY3Vy
cikgewotICAgICAgICBSZW5kZXJPYmplY3QqIGNsaWVudCA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2Jq
ZWN0Kj4oY3Vyci0+a2V5KTsKLSAgICAgICAgY2xpZW50LT5pbWFnZUNoYW5nZWQoc3RhdGljX2Nh
c3Q8V3JhcHBlZEltYWdlUHRyPih0aGlzKSk7Ci0gICAgfQorICAgIGF1dG8gZW5kID0gY2xpZW50
cygpLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGNsaWVudHMoKS5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCisgICAgICAgIGl0LT5rZXktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFw
cGVkSW1hZ2VQdHI+KHRoaXMpKTsKIH0KIAogdm9pZCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpjcmVh
dGVGaWx0ZXJPcGVyYXRpb25zKFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXggOWE1YmYwZWQ2MzgzMjM5Y2NlYjgxNmFi
MTVlOWE1NmFlYjQ0YmU5My4uMWMyY2I1ZjEyNmZhYjJhODQ3ZjJhZWMyNzdlNmU5YzBhNGI4ZDUz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBG
aWx0ZXJTdWJpbWFnZU9ic2VydmVyUHJveHk7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBS
ZW5kZXJFbGVtZW50OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogCkBA
IC01NywxMiArNTcsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBj
b25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0
IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50Kiwg
Y29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAg
SW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1Bl
bmRpbmcoKSBjb25zdDsKLSAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50
KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA4MmNjNTA3MTFj
N2E4MGEzY2U0MzQwODliZjNlMTYxMGE2YzA3ZjAwLi4xMmZmNThlNDE4MmIzNDcyNWQ4MTQ1ZDgy
N2RmOWJlOTdkY2Y0YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApA
QCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCmluZGV4IDAzYWMxOWI0OTg3MGJjNzdjYmNkY2JlM2RmZjA0YTk4ODliNGExZGUuLjJm
MTM1MTA3NTIzZTRlMTJhYjE0MGFhMDIyNzg1OWJhYWIwYzBlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NHcmFk
aWVudFZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBz
aXplKQorUGFzc1JlZlB0cjxJbWFnZT4gQ1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzMiw3ICsxMzIsNyBAQCBQYXNzUmVmUHRy
PENTU0dyYWRpZW50VmFsdWU+IENTU0dyYWRpZW50VmFsdWU6OmdyYWRpZW50V2l0aFN0eWxlc1Jl
c29sdmVkKFN0eWxlUgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi12b2lkIENT
U0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50KiBncmFkaWVudCwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZmxvYXQgbWF4TGVuZ3RoRm9yUmVw
ZWF0KQordm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQs
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBmbG9hdCBt
YXhMZW5ndGhGb3JSZXBlYXQpCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIt
PnN0eWxlKCk7CiAKQEAgLTQ1OSw3ICs0NTksNyBAQCBib29sIENTU0dyYWRpZW50VmFsdWU6Omlz
Q2FjaGVhYmxlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NHcmFkaWVu
dFZhbHVlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKK2Jvb2wg
Q1NTR3JhZGllbnRWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdG9wcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29sdmVkQ29sb3IuaGFzQWxwaGEoKSkKQEAg
LTY0Myw3ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5n
bGVEZWcsIGNvbnN0IEludFNpemUmIHNpemUsIEZsb2F0UG9pbnQmCiAgICAgZmlyc3RQb2ludC5z
ZXQoaGFsZldpZHRoIC0gZW5kWCwgaGFsZkhlaWdodCArIGVuZFkpOwogfQogCi1QYXNzUmVmUHRy
PEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxHcmFkaWVu
dD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1w
dHkoKSk7CiAKQEAgLTk4Myw3ICs5ODMsNyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGhvcml6b250
YWxFbGxpcHNlUmFkaXVzKGNvbnN0IEZsb2F0U2l6ZSYgcCwgZmxvYXQgYXNwZWN0UmF0aQogfQog
CiAvLyBGSVhNRTogc2hhcmUgY29kZSB3aXRoIHRoZSBsaW5lYXIgdmVyc2lvbgotUGFzc1JlZlB0
cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8R3JhZGll
bnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIEFTU0VSVCghc2l6ZS5pc0Vt
cHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCAzZjFlYzA0
ODBkNzZkNzEzYWRlYjBhOGM4MmZkNTJiMzk3N2VjOWQ4Li45NjJkOGRkM2Y2ZTg1NWI0OTk5NTgx
Nzk1ZDg5YzIyMmM1YzQzYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgK
QEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IENTU0dyYWRpZW50Q29sb3JTdG9wIHsKIAogY2xhc3Mg
Q1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKIHB1Ymxp
YzoKLSAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJik7CisgICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0
IEludFNpemUmKTsKIAogICAgIHZvaWQgc2V0Rmlyc3RYKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbCkgeyBtX2ZpcnN0WCA9IHZhbDsgfQogICAgIHZvaWQgc2V0Rmlyc3RZKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2ZpcnN0WSA9IHZhbDsgfQpAQCAtODIs
MTAgKzgyLDEwIEBAIHB1YmxpYzoKICAgICBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFR5cGU7IH0KIAogICAgIGJvb2wgaXNGaXhlZFNpemUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQorICAgIEludFNpemUgZml4
ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0K
IAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGtu
b3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGxv
YWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KICAgICBQYXNzUmVmUHRyPENT
U0dyYWRpZW50VmFsdWU+IGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIq
KTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgYWRkU3RvcHMoR3JhZGllbnQqLCBSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBmbG9hdCBtYXhMZW5ndGhGb3JSZXBlYXQgPSAwKTsKKyAgICB2b2lkIGFkZFN0b3BzKEdy
YWRpZW50KiwgUmVuZGVyRWxlbWVudCosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGZsb2F0IG1h
eExlbmd0aEZvclJlcGVhdCA9IDApOwogCiAgICAgLy8gUmVzb2x2ZSBwb2ludHMvcmFkaWkgdG8g
ZnJvbnQgZW5kIHZhbHVlcy4KICAgICBGbG9hdFBvaW50IGNvbXB1dGVFbmRQb2ludChDU1NQcmlt
aXRpdmVWYWx1ZSosIENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBjb25zdCBJbnRTaXplJik7CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGlj
OgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICAvLyBDcmVhdGUgdGhl
IGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3Jl
YXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBhc3NSZWZQ
dHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXpl
Jik7CiAKICAgICBQYXNzUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNsb25lKCkgY29u
c3QKICAgICB7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RW5kVmVy
dGljYWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2VuZFZlcnRp
Y2FsU2l6ZSA9IHZhbDsgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZl
biBzaXplLgotICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlck9i
amVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVH
cmFkaWVudChSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggYTkwNWYyMzVmY2JjYjMy
YTk0NmQyMjg4ZWJhODY1ZDg0NmU4MDY2Zi4uMTAxNTc1ZGEwZDlmNWUxY2MzNTYyNTVkNmFmNDRl
YjNkMmRhMDdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC01MCwxNCArNTAsMTQgQEAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6fkNTU0ltYWdlR2VuZXJh
dG9yVmFsdWUoKQogewogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmFkZENsaWVu
dChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjph
ZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmVy
KTsKICAgICByZWYoKTsKICAgICBtX2NsaWVudHMuYWRkKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKK3ZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyKQogewogICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAgbV9jbGllbnRzLnJl
bW92ZShyZW5kZXJlcik7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6ZXZpY3Rpb25UaW1lckZpcmVkKERlZmVycmFi
bGUKICAgICBtX293bmVyLmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UobV9zaXplKTsKIH0KIAot
UGFzc1JlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8SW1hZ2U+IENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNl
IENhbnZhc0NsYXNzOgpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTo6aXNGaXhlZFNpemUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSW50U2l6
ZSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKK0ludFNpemUgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsK
ICAgICBjYXNlIENhbnZhc0NsYXNzOgpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6aXNQZW5kaW5nKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omtu
b3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CiAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCmluZGV4IDY4ZThhODI3ZGFl
MGI5ZTQ3ZmUwMGEyYzE4ODVmMTRlM2ZmZDg3N2YuLjIxNDE5ZmFjMmU3MWQ0YWQwMWI0YWQzYzA1
MGUxZWY0YmFjYzIzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuaApAQCAtMzgsMjMgKzM4LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBHZW5lcmF0ZWRJbWFnZTsKLWNsYXNzIFJlbmRl
ck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogCiBj
bGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
ICAgICB+Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpOwogCi0gICAgdm9pZCBhZGRDbGllbnQoUmVu
ZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7CisgICAg
dm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFJl
bmRlckVsZW1lbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVj
dCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJF
bGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogCiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0
OwotICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIEludFNp
emUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3Q7Ci0gICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0Kikg
Y29uc3Q7CisgICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNv
bnN0OwogCiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAK
QEAgLTYzLDcgKzYzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgR2VuZXJhdGVkSW1hZ2UqIGNhY2hl
ZEltYWdlRm9yU2l6ZShJbnRTaXplKTsKICAgICB2b2lkIHNhdmVDYWNoZWRJbWFnZUZvclNpemUo
SW50U2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOwotICAgIGNvbnN0IEhhc2hDb3Vu
dGVkU2V0PFJlbmRlck9iamVjdCo+JiBjbGllbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRz
OyB9CisgICAgY29uc3QgSGFzaENvdW50ZWRTZXQ8UmVuZGVyRWxlbWVudCo+JiBjbGllbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnRzOyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZv
ciBDcm9zc2ZhZGUgYW5kIEZpbHRlci4KICAgICBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqLCBDYWNoZWRSZXNvdXJjZUxvYWRlciopOwpAQCAtODgs
NyArODgsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRHZW5lcmF0ZWRJbWFn
ZTsKICAgICB2b2lkIGV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoSW50U2l6ZSk7CiAKLSAgICBI
YXNoQ291bnRlZFNldDxSZW5kZXJPYmplY3QqPiBtX2NsaWVudHM7CisgICAgSGFzaENvdW50ZWRT
ZXQ8UmVuZGVyRWxlbWVudCo+IG1fY2xpZW50czsKICAgICBIYXNoTWFwPEludFNpemUsIE93blB0
cjxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4gPiBtX2ltYWdlczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcAppbmRleCBmYzIzNjhkYmEwZDE0MGUzZTMwOGZhYWRkYjRlYWM2NjJj
ZjdiOGVjLi5iOWRlYjZjMWJhMGFlMGI3ZDc4N2I5NTdkOTRhMDNlZmEwYmY5ZjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0
dXJuIHVyaVZhbHVlLnJlbGVhc2UoKTsKIH0KIAotYm9vbCBDU1NJbWFnZVZhbHVlOjprbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgQ1NTSW1h
Z2VWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBj
b25zdAogewogICAgIHJldHVybiBtX2ltYWdlID8gbV9pbWFnZS0+a25vd25Ub0JlT3BhcXVlKHJl
bmRlcmVyKSA6IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKaW5kZXggOTli
MGM2Y2MzZTcwODU2MzQ4NTBkYTlmMzdhMjJkMzI5NzBiYTkwOS4uNWRiMjA0MzAxZTZhZmFjMmNh
OWIyOGM1Y2RmMGE5YjM1Nzc3YjRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCkBA
IC0zMCw3ICszMCw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIFN0eWxlQ2FjaGVkSW1hZ2U7CiBjbGFzcyBTdHlsZUltYWdlOwotY2xhc3MgUmVu
ZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnM7CiAKIGNsYXNzIENTU0ltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NJbWFnZVZhbHVl
JikgY29uc3Q7CiAKLSAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kikg
Y29uc3Q7CiAKICAgICB2b2lkIHNldEluaXRpYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IHsgbV9pbml0aWF0b3JOYW1lID0gbmFtZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggYjJhMGZhNzQ2NzlkY2FkOGI1MGIyNTMwNTJh
NWYzYzY3Yjg0MDA3Yi4uNWM4ODdmNzlmZWVjMTI4MmNlYmI0MGJlMDk4YmRjN2U3NDcwN2U0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAt
NDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2lu
Y2x1ZGUgIlJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApp
bmRleCAxZjA3M2I1NzVjMmJlMWViNjMyMzVkZWQ3MTQ1YjhiMDk5MDUwMTM3Li41Zjk4YWNlZGE0
MDYyZmE4YWJlZmQ2YWY3YjJmNzZmMGM2MzAwYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzRnJvbUxpc3QoTWFya2VyTWFw
OjppdGVyYXRvciBpdGVyYXRvCiAgICAgfQogCiAgICAgaWYgKG5lZWRzUmVwYWludGluZykgewot
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0ZXJhdG9yLT5rZXktPnJlbmRl
cmVyKCkpCisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gaXRlcmF0b3ItPmtleS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CiAgICAgfQogCkBAIC00OTMs
NyArNDkzLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlcGFpbnRNYXJrZXJz
KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyBtYXJrZXIKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIC8vIGNhdXNlIHRoZSBub2RlIHRvIGJlIHJlZHJhd24KLSAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+
cmVwYWludCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAzYmRmYjNjZDQz
ZjcxNmYzMDVjYjMzNTA1YzEyOTM1MjlmMDM5ZTMxLi41YjM5NjQ3ODllOGZiYmU2YzYwZDU1ZTQw
MTEzYTUxZTIxYjVkZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02MDMsMTcgKzYwMywx
NyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEJ5UGFnZXMoaW50IHBhZ2VzKQogICAgIHNjcm9sbEJ5
VW5pdHMocGFnZXMsIFNjcm9sbEJ5UGFnZSk7CiB9CiAKLXN0YXRpYyBmbG9hdCBsb2NhbFpvb21G
b3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIGZsb2F0IGxvY2FsWm9v
bUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXMgdGhlIHdyb25nIHRoaW5nIGlmIHR3byBvcHBvc2luZyB6b29tcyBhcmUgaW4gZWZm
ZWN0IGFuZCBjYW5jZWxlZCBlYWNoCiAgICAgLy8gb3RoZXIgb3V0LCBidXQgdGhlIGFsdGVybmF0
aXZlIGlzIHRoYXQgd2UnZCBoYXZlIHRvIGNyYXdsIHVwIHRoZSB3aG9sZSByZW5kZXIgdHJlZSBl
dmVyeQogICAgIC8vIHRpbWUgKG9yIHN0b3JlIGFuIGFkZGl0aW9uYWwgYml0IGluIHRoZSBSZW5k
ZXJTdHlsZSB0byBpbmRpY2F0ZSB0aGF0IGEgem9vbSB3YXMgc3BlY2lmaWVkKS4KICAgICBmbG9h
dCB6b29tRmFjdG9yID0gMTsKICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSAhPSAxKSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gZmluZCB0aGUgbmVhcmVzdCBlbmNsb3Np
bmcgUmVuZGVyT2JqZWN0IHRoYXQgc2V0IHVwCisgICAgICAgIC8vIE5lZWQgdG8gZmluZCB0aGUg
bmVhcmVzdCBlbmNsb3NpbmcgUmVuZGVyRWxlbWVudCB0aGF0IHNldCB1cAogICAgICAgICAvLyBh
IGRpZmZlcmluZyB6b29tLCBhbmQgdGhlbiB3ZSBkaXZpZGUgb3VyIHJlc3VsdCBieSBpdCB0byBl
bGltaW5hdGUgdGhlIHpvb20uCi0gICAgICAgIFJlbmRlck9iamVjdCogcHJldiA9IHJlbmRlcmVy
OwotICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IHByZXYtPnBhcmVudCgpOyBjdXJy
OyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKKyAgICAgICAgUmVuZGVyRWxlbWVudCogcHJldiA9
IHJlbmRlcmVyOworICAgICAgICBmb3IgKFJlbmRlckVsZW1lbnQqIGN1cnIgPSBwcmV2LT5wYXJl
bnQoKTsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoY3Vy
ci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpICE9IHByZXYtPnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSkgewogICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgPSBwcmV2LT5zdHlsZSgpLT56b29t
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MjYsNyArNjI2LDcgQEAgc3RhdGljIGZs
b2F0IGxvY2FsWm9vbUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0
dXJuIHpvb21GYWN0b3I7CiB9CiAKLXN0YXRpYyBpbnQgYWRqdXN0Rm9yTG9jYWxab29tKExheW91
dFVuaXQgdmFsdWUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitzdGF0aWMgaW50IGFkanVzdEZv
ckxvY2FsWm9vbShMYXlvdXRVbml0IHZhbHVlLCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsK
ICAgICBmbG9hdCB6b29tRmFjdG9yID0gbG9jYWxab29tRm9yUmVuZGVyZXIocmVuZGVyZXIpOwog
ICAgIGlmICh6b29tRmFjdG9yID09IDEpCkBAIC02OTIsMTEgKzY5MiwxMyBAQCBFbGVtZW50KiBF
bGVtZW50OjpiaW5kaW5nc09mZnNldFBhcmVudCgpCiBFbGVtZW50KiBFbGVtZW50OjpvZmZzZXRQ
YXJlbnQoKQogewogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9mZnNldFBhcmVudCA9IHJlbmRlcmVy
LT5vZmZzZXRQYXJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQob2Zmc2V0UGFy
ZW50LT5ub2RlKCkpOwotICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBhdXRvIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBhdXRvIG9mZnNldFBhcmVudCA9IHJlbmRlcmVyLT5vZmZzZXRQYXJlbnQoKTsK
KyAgICBpZiAoIW9mZnNldFBhcmVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIG9mZnNldFBhcmVudC0+ZWxlbWVudCgpOwogfQogCiBpbnQgRWxlbWVudDo6Y2xpZW50TGVm
dCgpCkBAIC0yMzUwLDcgKzIzNTIsNyBAQCBib29sIEVsZW1lbnQ6OnVwZGF0ZUV4aXN0aW5nUHNl
dWRvRWxlbWVudChQc2V1ZG9FbGVtZW50KiBleGlzdGluZ1BzZXVkb0VsZW1lbnQsCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgc2lsbHkuCiAgICAgLy8gV2FpdCB1bnRpbCBvdXIgcGFyZW50IGlzIG5v
dCBkaXNwbGF5ZWQgb3IgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQKICAgICAvLyBpcyBm
YWxzZSwgb3RoZXJ3aXNlIHdlIGNvdWxkIGNvbnRpbm91c2x5IGNyZWF0ZSBhbmQgZGVzdHJveSBQ
c2V1ZG9FbGVtZW50cwotICAgIC8vIHdoZW4gUmVuZGVyT2JqZWN0Ojppc0NoaWxkQWxsb3dlZCBv
biBvdXIgcGFyZW50IHJldHVybnMgZmFsc2UgZm9yIHRoZQorICAgIC8vIHdoZW4gUmVuZGVyRWxl
bWVudDo6aXNDaGlsZEFsbG93ZWQgb24gb3VyIHBhcmVudCByZXR1cm5zIGZhbHNlIGZvciB0aGUK
ICAgICAvLyBQc2V1ZG9FbGVtZW50J3MgcmVuZGVyZXIgZm9yIGVhY2ggc3R5bGUgcmVjYWxjLgog
ICAgIHJldHVybiByZW5kZXJlcigpICYmIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKGV4
aXN0aW5nUHNldWRvRWxlbWVudC0+cmVuZGVyU3R5bGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKaW5kZXggYjU1Njg2N2EyMmMwMjNkYzQxMDgwOTU2MzM1YThmMDgyMTI3
YTNkNi4uZmUyYTgyNWMzM2RkZTE1OWQ2YTk5ZWMwNzhlNzU1YjVjY2JiZTQ3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk5h
bWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlBzZXVk
b0VsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KQEAgLTM1LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBF
bGVtZW50UmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxFbGVtZW50UmFyZURhdGE+IGNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKHJlbmRlcmVyKSk7IH0K
KyAgICBzdGF0aWMgUGFzc093blB0cjxFbGVtZW50UmFyZURhdGE+IGNyZWF0ZShSZW5kZXJFbGVt
ZW50KiByZW5kZXJlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEVsZW1lbnRSYXJlRGF0YShyZW5k
ZXJlcikpOyB9CiAKICAgICB+RWxlbWVudFJhcmVEYXRhKCk7CiAKQEAgLTE2Niw3ICsxNjcsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2JlZm9yZVBzZXVkb0VsZW1l
bnQ7CiAgICAgUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50OwogCi0g
ICAgZXhwbGljaXQgRWxlbWVudFJhcmVEYXRhKFJlbmRlck9iamVjdCopOworICAgIGV4cGxpY2l0
IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50Kik7CiAgICAgdm9pZCByZWxlYXNlUHNldWRv
RWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CiB9OwogCkBAIC0xNzUsNyArMTc2LDcgQEAgaW5saW5l
IEludFNpemUgZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKQogICAgIHJldHVybiBJbnRT
aXplKExheW91dFVuaXQ6Om1heCgpLCBMYXlvdXRVbml0OjptYXgoKSk7CiB9CiAKLWlubGluZSBF
bGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQor
aW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyKQogICAgIDogTm9kZVJhcmVEYXRhKHJlbmRlcmVyKQogICAgICwgbV90YWJJbmRleCgw
KQogICAgICwgbV9jaGlsZEluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYWEyMTk2ZTU0MzZi
ZTczNzhhOGVmZDBmMWEzNWZmZTk3YmVjMTcwMC4uMTZmYzMzMTE1MjJlYzUyMzRjOTU5N2VmNjhj
ZmU4YzMyODQ4OWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIE5vZGVS
YXJlRGF0YSYgTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogCiAgICAgTm9kZVJhcmVEYXRhKiBkYXRh
OwogICAgIGlmIChpc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIGRhdGEgPSBFbGVtZW50UmFyZURh
dGE6OmNyZWF0ZShtX2RhdGEubV9yZW5kZXJlcikubGVha1B0cigpOworICAgICAgICBkYXRhID0g
RWxlbWVudFJhcmVEYXRhOjpjcmVhdGUodG9SZW5kZXJFbGVtZW50KG1fZGF0YS5tX3JlbmRlcmVy
KSkubGVha1B0cigpOwogICAgIGVsc2UKICAgICAgICAgZGF0YSA9IE5vZGVSYXJlRGF0YTo6Y3Jl
YXRlKG1fZGF0YS5tX3JlbmRlcmVyKS5sZWFrUHRyKCk7CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5k
ZXggOTQ2MTBhMmMyYjk4YmY2OTFjNmQ5ODQ5NjkwNmUxNDlhODY3NzgzYy4uNjBkYzlkN2U2MTI0
ZWI3YWRkMGU3ZTFiMWUzNmJmNjFiNGViMThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDIsMjQgKzEwMiwyNCBAQCBz
dGF0aWMgYm9vbCBpc0RlbGV0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICBpZiAo
KGJvcmRlckJvdW5kaW5nQm94LndpZHRoKCkgKiBib3JkZXJCb3VuZGluZ0JveC5oZWlnaHQoKSkg
PCBtaW5pbXVtQXJlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHJlbmRlcmVy
LT5pc1RhYmxlKCkpCisgICAgaWYgKGJveC0+aXNUYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KG9sVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICBp
ZiAoYm94LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiAhcmVuZGVyZXItPmlzVGFibGVD
ZWxsKCkpIHsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7
CisgICAgaWYgKGJveC0+aXNSZW5kZXJCbG9jaygpICYmICFib3gtPmlzVGFibGVDZWxsKCkpIHsK
KyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gYm94LT5zdHlsZSgpOwogICAgICAgICBpZiAo
IXN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIEFsbG93IGJs
b2NrcyB0aGF0IGhhdmUgYmFja2dyb3VuZCBpbWFnZXMKICAgICAgICAgaWYgKHN0eWxlLT5oYXNC
YWNrZ3JvdW5kSW1hZ2UoKSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGJh
Y2tncm91bmQgPSBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kOyBiYWNrZ3Jv
dW5kID0gYmFja2dyb3VuZC0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2tncm91
bmQtPmltYWdlKCkgJiYgYmFja2dyb3VuZC0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHJlbmRlcmVyLCAx
KSkKKyAgICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZC0+aW1hZ2UoKSAmJiBiYWNrZ3JvdW5k
LT5pbWFnZSgpLT5jYW5SZW5kZXIoYm94LCAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0
aWMgYm9vbCBpc0RlbGV0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgaWYg
KCFwYXJlbnRTdHlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
cmVuZGVyZXItPmhhc0JhY2tncm91bmQoKSAmJiAoIXBhcmVudFJlbmRlcmVyLT5oYXNCYWNrZ3Jv
dW5kKCkgfHwgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcikgIT0gcGFyZW50U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcikpKQorICAgICAgICBpZiAoYm94LT5oYXNCYWNrZ3JvdW5kKCkgJiYg
KCFwYXJlbnRSZW5kZXJlci0+aGFzQmFja2dyb3VuZCgpIHx8IHN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpICE9IHBhcmVudFN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDM1YjMwMWZlNTk3OGNkYzRmM2YxZjkzN2FhNmI3MDc0ODJkNmI4ODMuLjE5N2ExZTY5OWM5N2Q4
MGQ0NjFmZTBkNmFmNWM2NDNhM2E4MGNlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTU4MCw3ICs1ODAsNyBAQCBib29sIEVkaXRvcjo6aGFzQmlkaVNlbGVjdGlvbigpIGNvbnN0
CiAgICAgfSBlbHNlCiAgICAgICAgIHN0YXJ0Tm9kZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgp
OwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKTsK
KyAgICBhdXRvIHJlbmRlcmVyID0gc3RhcnROb2RlLT5yZW5kZXJlcigpOwogICAgIHdoaWxlIChy
ZW5kZXJlciAmJiAhcmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSkKICAgICAgICAgcmVuZGVyZXIg
PSByZW5kZXJlci0+cGFyZW50KCk7CiAKQEAgLTE0MzgsNyArMTQzOCw3IEBAIFdyaXRpbmdEaXJl
Y3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29u
c3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gcmVz
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA4MGU0
MmEzNmRkNGRmY2JiZDk3NDI3YTRkNWU0YjkwMzQ0ZDA2MjI3Li42YzA3Njk5OTlmNWE2ZjcyY2Rl
NTAzYjU1MGVmNjQwYzg2NTZhNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmVydGljYWxTY3Jv
bGxEaXN0YW5jZShGcmFtZSYgZnJhbWUpCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBm
cmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwogICAgIGlmICghZm9jdXNlZEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiAwOwotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1
c2VkRWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gZm9jdXNlZEVsZW1l
bnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzQm94KCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5z
dHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA4NzQzYjI0
MTBkNzU2MDkwZDI5ZThlZjkyY2Y1Y2NlY2UzOGVhMmU4Li5iOTAxMDUwYTliNWZhMjUyMGQwN2Ix
OWM5YzBhOGUyZWQ5OGRhMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cApAQCAtMzI2LDExICszMjYsMTMgQEAgRWxlbWVudCogZW5jbG9zaW5nQmxvY2soTm9kZSogbm9k
ZSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpCiAKIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAg
Tm9kZSogZW5jbG9zaW5nQmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2socG9zaXRpb24uY29udGFp
bmVyTm9kZSgpKTsKLSAgICBpZiAoIWVuY2xvc2luZ0Jsb2NrTm9kZSkKKyAgICBhdXRvIGJsb2Nr
ID0gZW5jbG9zaW5nQmxvY2socG9zaXRpb24uY29udGFpbmVyTm9kZSgpKTsKKyAgICBpZiAoIWJs
b2NrKQogICAgICAgICByZXR1cm4gTFRSOwotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBl
bmNsb3NpbmdCbG9ja05vZGUtPnJlbmRlcmVyKCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyID8gcmVu
ZGVyZXItPnN0eWxlKCktPmRpcmVjdGlvbigpIDogTFRSOworICAgIGF1dG8gcmVuZGVyZXIgPSBi
bG9jay0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gTFRS
OworICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7CiB9CiAKIC8vIFRo
aXMgbWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIHBvc2l0aW9ucyBpbiB0aGUgRE9NLiBJdCByZXR1
cm5zIHRoZSBtYXhpbXVtIHZhbGlkIG9mZnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCmluZGV4IGUwOTRmMGY0MTMyZDhiMDcwYjVmNTk4ZDM5YjEwYzgxZjNjNjViN2Mu
LmI5NWUwZGJhNDU5NDcxZGEwYjRiMDg3NDNhZmJkMGIwYWI5YTAxZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBjb25zdCBTaW1w
bGVGb250RGF0YSogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9u
dHMpIGNvbnN0CiAgICAgICAgIC8vIEluIHRoZSBsb29wIGJlbG93LCBuIHNob3VsZCBldmVudHVh
bGx5IG1hdGNoIHBhc3RFbmQgYW5kIG5vdCBiZWNvbWUgbmlsLCBidXQgd2UndmUgc2VlbiBhdCBs
ZWFzdCBvbmUKICAgICAgICAgLy8gdW5yZXByb2R1Y2libGUgY2FzZSB3aGVyZSB0aGlzIGRpZG4n
dCBoYXBwZW4sIHNvIGNoZWNrIGZvciBudWxsIGFsc28uCiAgICAgICAgIGZvciAoTm9kZSogbm9k
ZSA9IHN0YXJ0Tm9kZTsgbm9kZSAmJiBub2RlICE9IHBhc3RFbmQ7IG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KG5vZGUpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOwogICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBcmUgdGhlcmUgYW55IG5vZGUgdHlwZXMgdGhh
dCBoYXZlIHJlbmRlcmVycywgYnV0IHRoYXQgd2Ugc2hvdWxkIGJlIHNraXBwaW5nPwpAQCAtMzQ0
LDcgKzM0NCw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBwYXN0ZWJvYXJkKQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFn
ZUVsZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hlZEltYWdl
KQogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQucmVuZGVyZXIo
KTsKKyAgICBhdXRvIHJlbmRlcmVyID0gaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggZGQ0NDM2MzdjOWQ2Njhk
MmNmNjgxMDBmODM1MGNkMGUwZDJiMjhjOS4uNzFiMTg0Y2NiNGNjOTkyNjM5MDg4MzEyYmRiODQx
MWE1NjhkNGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAt
MTU5LDcgKzE1OSw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBFZGl0b3I6OmZvbnRGb3JTZWxl
Y3Rpb24oYm9vbCYgaGFzTXVsdGlwbGVGb250cykgY29uc3QKICAgICAgICAgLy8gSW4gdGhlIGxv
b3AgYmVsb3csIG4gc2hvdWxkIGV2ZW50dWFsbHkgbWF0Y2ggcGFzdEVuZCBhbmQgbm90IGJlY29t
ZSBuaWwsIGJ1dCB3ZSd2ZSBzZWVuIGF0IGxlYXN0IG9uZQogICAgICAgICAvLyB1bnJlcHJvZHVj
aWJsZSBjYXNlIHdoZXJlIHRoaXMgZGlkbid0IGhhcHBlbiwgc28gY2hlY2sgZm9yIG51bGwgYWxz
by4KICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gc3RhcnROb2RlOyBub2RlICYmIG5vZGUgIT0g
cGFzdEVuZDsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkpIHsKLSAgICAgICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICAgICAg
YXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAoIXJlbmRl
cmVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgLy8gRklYTUU6IEFy
ZSB0aGVyZSBhbnkgbm9kZSB0eXBlcyB0aGF0IGhhdmUgcmVuZGVyZXJzLCBidXQgdGhhdCB3ZSBz
aG91bGQgYmUgc2tpcHBpbmc/CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiAKIHN0YXRpYyB2
b2lkIGdldEltYWdlKEVsZW1lbnQmIGltYWdlRWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1hZ2Us
IENhY2hlZEltYWdlKiYgY2FjaGVkSW1hZ2UpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGltYWdlRWxlbWVudC5yZW5kZXJlcigpOworICAgIGF1dG8gcmVuZGVyZXIgPSBpbWFnZUVs
ZW1lbnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFn
ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA1
MWVmM2YyZWM5ZWVkMjBiZjc4MDM4MzE2Y2M0MjFiMjZmMTY0NjU3Li5hNzQzYmI2NDY2MTUwOWY3
ODk1M2I1YjA5ODg4NWZjZTNkYzU5Y2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBA
IC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiTWFya3VwQWNjdW11bGF0b3IuaCIKICNpbmNsdWRl
ICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCA1MjA3ZjBlZmE3YmVmM2UxMjQyYmMxOTRhM2ZiNGZh
YWI0ZDc5ZmMzLi5kYjQxYzViMzk4ZGY4Yjk4ODQ1YmNjYTU5Nzc4Y2RlMDhmZDQyYTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIGJv
b2wgSFRNTEFyZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBj
b25zdCBMYXlvdXRTaXplJiBzaXplCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhdGggSFRNTEFy
ZWFFbGVtZW50Ojpjb21wdXRlUGF0aChSZW5kZXJPYmplY3QqIG9iaikgY29uc3QKK1BhdGggSFRN
TEFyZWFFbGVtZW50Ojpjb21wdXRlUGF0aChSZW5kZXJFbGVtZW50KiBvYmopIGNvbnN0CiB7CiAg
ICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBQYXRoKCk7CkBAIC0xMTksNyArMTE5LDcgQEAg
UGF0aCBIVE1MQXJlYUVsZW1lbnQ6OmNvbXB1dGVQYXRoKFJlbmRlck9iamVjdCogb2JqKSBjb25z
dAogICAgIHJldHVybiBwOwogfQogICAgIAotTGF5b3V0UmVjdCBIVE1MQXJlYUVsZW1lbnQ6OmNv
bXB1dGVSZWN0KFJlbmRlck9iamVjdCogb2JqKSBjb25zdAorTGF5b3V0UmVjdCBIVE1MQXJlYUVs
ZW1lbnQ6OmNvbXB1dGVSZWN0KFJlbmRlckVsZW1lbnQqIG9iaikgY29uc3QKIHsKICAgICByZXR1
cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChjb21wdXRlUGF0aChvYmopLmZhc3RCb3VuZGluZ1JlY3Qo
KSk7CiB9CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBIVE1MQXJlYUVsZW1lbnQ6OnNldEZvY3Vz
KGJvb2wgc2hvdWxkQmVGb2N1c2VkKQogICAgIGlmICghaW1hZ2VFbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW1hZ2VFbGVtZW50LT5yZW5k
ZXJlcigpOworICAgIGF1dG8gcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAppbmRleCA5Y2RiZjY2NjEzYjYy
OWRmZjM2YzczMDUzODIzNTM3ODRmNTYxNWMwLi4xODBmNjEzMDY0Yjg0Mjg4MTQyYTdlOTJhMjZl
ZTQ4MTQ4NzE4NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKQEAgLTQx
LDggKzQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXBNb3VzZUV2ZW50KExheW91dFBvaW50
IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiwgSGl0VGVzdFJlc3VsdCYpOwogCi0gICAgTGF5
b3V0UmVjdCBjb21wdXRlUmVjdChSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICBQYXRoIGNvbXB1
dGVQYXRoKFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIExheW91dFJlY3QgY29tcHV0ZVJlY3Qo
UmVuZGVyRWxlbWVudCopIGNvbnN0OworICAgIFBhdGggY29tcHV0ZVBhdGgoUmVuZGVyRWxlbWVu
dCopIGNvbnN0OwogCiAgICAgLy8gVGhlIHBhcmVudCBtYXAncyBpbWFnZS4KICAgICBIVE1MSW1h
Z2VFbGVtZW50KiBpbWFnZUVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKaW5kZXggY2NhNGY4NjA1MDZkODI2YThjZmFjNGVlOTczM2U3NWQ1
YzU3NzVhOS4uYWFkODNhZDUzOTFmOTI5OGNmMDJiOTBlNzJlNzM0OTQxMzE1ZWVhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTM0MCw3ICszNDAsNyBA
QCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpyZXNldCgpCiAgICAgICAgIHN0YXRpY19jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dCo+KG1fY29udGV4dC5nZXQoKSktPnJlc2hhcGUod2lkdGgoKSwg
aGVpZ2h0KCkpOwogI2VuZGlmCiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgaWYgKG1fcmVuZGVyZXJJc0NhbnZhcykgewogICAgICAgICAgICAgaWYg
KG9sZFNpemUgIT0gc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgdG9SZW5kZXJIVE1MQ2FudmFz
KHJlbmRlcmVyKS0+Y2FudmFzU2l6ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKaW5kZXggYzRlZjg1YmQwZDYwZTk3MWM4YTk5MGJjYTA2M2RkZGNjOGJkZTI4Mi4uMjA4
NjE0Y2ViOGNhMmFjYTU5ZjY1NmNhYmVlM2Y4MmJjMzc1OTdjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJ
bm5lclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBG
SVhNRTogRG8gd2UgbmVlZCB0byBiZSBhYmxlIHRvIGRldGVjdCBwcmVzZXJ2ZU5ld2xpbmUgc3R5
bGUgZXZlbiB3aGVuIHRoZXJlJ3Mgbm8gcmVuZGVyZXI/CiAgICAgLy8gRklYTUU6IENhbiB0aGUg
cmVuZGVyZXIgYmUgb3V0IG9mIGRhdGUgaGVyZT8gRG8gd2UgbmVlZCB0byBjYWxsIHVwZGF0ZVN0
eWxlSWZOZWVkZWQ/CiAgICAgLy8gRm9yIGV4YW1wbGUsIGZvciB0aGUgY29udGVudHMgb2YgdGV4
dGFyZWEgZWxlbWVudHMgdGhhdCBhcmUgZGlzcGxheTpub25lPwotICAgIFJlbmRlck9iamVjdCog
ciA9IHJlbmRlcmVyKCk7CisgICAgYXV0byByID0gcmVuZGVyZXIoKTsKICAgICBpZiAociAmJiBy
LT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgewogICAgICAgICBpZiAoIXRleHQuY29udGFp
bnMoJ1xyJykpIHsKICAgICAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhUZXh0KCp0aGlzLCB0
ZXh0LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCA4NzdmZTI2YTY3MWJjMDI0ZTM5YmEwNjUwNWViOTZkOTMzNGY3MzY2Li5mYmJl
NTFkZTVlYjg3NDIzMDc4ODBjMjZlY2Q4NjViMmVkMDE5Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI4OSw5ICsyODksNyBAQCBi
b29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAogCiBzdGF0aWMg
dm9pZCB1cGRhdGVGcm9tRWxlbWVudENhbGxiYWNrKE5vZGUqIG5vZGUsIHVuc2lnbmVkKQogewot
ICAgIEFTU0VSVF9BUkcobm9kZSwgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKLSAgICBBU1NFUlRf
QVJHKG5vZGUsIHRvRWxlbWVudChub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSk7Ci0gICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQorICAgIGlmIChh
dXRvIHJlbmRlcmVyID0gdG9IVE1MRm9ybUNvbnRyb2xFbGVtZW50KG5vZGUpLT5yZW5kZXJlcigp
KQogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDdkN2Q2MmQ0NjdhMjViZThmN2ZkOTIz
ZWQ5NjZhMWMyZjkxNmUzMWEuLmFhNjgyMjFlZjM3Y2ZiMTAyZmIyODA0MGRlNDIzYTA3MTk3YzA3
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTk5LDE4ICs5
OSwxOCBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFtX3dhc0RlbW90ZWQpCiAgICAgICAgIHJldHVybiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiAKLSAgICBDb250YWluZXJOb2Rl
KiBub2RlID0gcGFyZW50Tm9kZSgpOwotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOworICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQo
KTsKKyAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRSZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIo
KTsKIAogICAgIGlmICghcGFyZW50UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgYWxzbyBjaGVjayBmb3IgdGFibGUgY2FwdGlvbiAo
c2VlIHxmb3JtSXNUYWJsZVBhcnR8IGJlbG93KS4KLSAgICBib29sIHBhcmVudElzVGFibGVFbGVt
ZW50UGFydCA9IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZSgpICYmIGlzSFRNTFRhYmxlRWxlbWVu
dChub2RlKSkKLSAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlUm93KCkgJiYgbm9k
ZS0+aGFzVGFnTmFtZSh0clRhZykpCi0gICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJs
ZVNlY3Rpb24oKSAmJiBub2RlLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkKLSAgICAgICAgfHwgKHBh
cmVudFJlbmRlcmVyLT5pc1JlbmRlclRhYmxlQ29sKCkgJiYgbm9kZS0+aGFzVGFnTmFtZShjb2xU
YWcpKQotICAgICAgICB8fCAocGFyZW50UmVuZGVyZXItPmlzVGFibGVDZWxsKCkgJiYgbm9kZS0+
aGFzVGFnTmFtZSh0clRhZykpOworICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0ID0g
KHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlKCkgJiYgaXNIVE1MVGFibGVFbGVtZW50KHBhcmVudCkp
CisgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZVJvdygpICYmIHBhcmVudC0+aGFz
VGFnTmFtZSh0clRhZykpCisgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZVNlY3Rp
b24oKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUodGJvZHlUYWcpKQorICAgICAgICB8fCAocGFyZW50
UmVuZGVyZXItPmlzUmVuZGVyVGFibGVDb2woKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUoY29sVGFn
KSkKKyAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpICYmIHBhcmVudC0+
aGFzVGFnTmFtZSh0clRhZykpOwogCiAgICAgaWYgKCFwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQp
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKaW5kZXggY2FlMjI1MDAwZWYzNzVjOTc3NGFiNjc1M2NlYWU3ZTIzMTM1NzFm
NS4uOTUwNTk0Y2VjZWY3ZDkwMTUwNjk5YmJkODhlMzUwMzBhMDE0MGFiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIE1vc3Qgc3ViY2xhc3NlcyB1c2UgUmVuZGVyV2lkZ2V0IChlaXRoZXIg
UmVuZGVyRW1iZWRkZWRPYmplY3Qgb3IgUmVuZGVySUZyYW1lKQogICAgIC8vIGV4Y2VwdCBmb3Ig
SFRNTE9iamVjdEVsZW1lbnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQgd2hpY2ggbWF5IHJldHVybiBh
bnkKLSAgICAvLyBSZW5kZXJPYmplY3Qgd2hlbiB1c2luZyBmYWxsYmFjayBjb250ZW50LgorICAg
IC8vIFJlbmRlckVsZW1lbnQgd2hlbiB1c2luZyBmYWxsYmFjayBjb250ZW50LgogICAgIFJlbmRl
cldpZGdldCogcmVuZGVyV2lkZ2V0KCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoU1ZHKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggMjVmNTE2NmY2ZjMwMDE2ZTcy
ZTg2OWU2MGM5MTdlNDc3OTUzMDdlOS4uM2U5NjI2ODIyMzg2NTYxZjkyNzdmZjdiMjhlYTZmYzAw
MzQ1ODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0z
MjYsMjQgKzMyNiwyMiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldFdpZHRoKGludCB2YWx1
ZSkKIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6OngoKSBjb25zdAogewotICAgIFJlbmRlck9iamVj
dCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyKQorICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMu
Ci0gICAgRmxvYXRQb2ludCBhYnNQb3MgPSByLT5sb2NhbFRvQWJzb2x1dGUoKTsKLSAgICByZXR1
cm4gYWJzUG9zLngoKTsKKyAgICByZXR1cm4gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpLngo
KTsKIH0KIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6OnkoKSBjb25zdAogewotICAgIFJlbmRlck9i
amVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyKQorICAgIGF1dG8gcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9y
bXMuCi0gICAgRmxvYXRQb2ludCBhYnNQb3MgPSByLT5sb2NhbFRvQWJzb2x1dGUoKTsKLSAgICBy
ZXR1cm4gYWJzUG9zLnkoKTsKKyAgICByZXR1cm4gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgp
LnkoKTsKIH0KIAogYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZSgpIGNvbnN0CkBAIC0z
ODQsNyArMzgyLDcgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNvbnN0
CiAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83NzI1
MTU4Pi4gV2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgcGxhY2UgZm9yIHRoZSB0b3VjaENhbGxvdXRF
bmFibGVkKCkgbG9naWMuCiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBSZW5k
ZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogbnVsbHB0cjsK
ICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT50b3VjaENhbGxvdXRFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAppbmRleCBl
ZjQ3Mzg4ODFiNTZlNjhlMjg4NDFiMDE2MGYwMjIxNDkxZGI1ZGY2Li5mODI1YmIxNWQ2NTEzOGFm
MTliMWQ4NzUwYzNmNTZhZDk1YWIzYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVt
ZW50LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRkNjQyNTdmMGZiZjNjMTI1MGFiOTRlNzgyNGE5
MzRkMjlmMDYyOWYuLmZhNTU0ZWZmOWZjOTc3ZDI1OTcxNDQ5MDVkNDg0ODMzMGRmMTM0YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDI2NCwxMiArNDI2
NCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7
CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgUmVuZGVyT2JqZWN0KiBy
ID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoIXIgfHwgIXItPmlzV2lkZ2V0KCkpCisgICAgYXV0byBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVy
ZXItPmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdpZGdldCogd2lkZ2V0ID0g
dG9SZW5kZXJXaWRnZXQociktPndpZGdldCgpOwotICAgIGlmICh3aWRnZXQpCisgICAgaWYgKFdp
ZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQoKSkKICAgICAg
ICAgd2lkZ2V0LT5oYW5kbGVFdmVudChldmVudCk7CiAjZWxzZQogICAgIEhUTUxFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwCmluZGV4IGIzNWU4ODQwNTYxZmUzMjNkYWViYjliNGFjN2ZhMWMxYzM2MDk0ZmQu
LjBlOGFiMjc0ZTAzOTk1MDRmNTk2N2EwNzgzMDczODI1NGQ4YWYyNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
IkhUTUxNZXRlckVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUg
IkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgpAQCAtMjIwLDExICsy
MjEsOCBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OmRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpCiBS
ZW5kZXJNZXRlciogSFRNTE1ldGVyRWxlbWVudDo6cmVuZGVyTWV0ZXIoKSBjb25zdAogewogICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzTWV0ZXIoKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFJlbmRlck1ldGVyKj4ocmVuZGVyZXIoKSk7Ci0KLSAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5y
ZW5kZXJlcigpOwotICAgIEFTU0VSVCghcmVuZGVyT2JqZWN0IHx8IHJlbmRlck9iamVjdC0+aXNN
ZXRlcigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTWV0ZXIqPihyZW5kZXJPYmpl
Y3QpOworICAgICAgICByZXR1cm4gdG9SZW5kZXJNZXRlcihyZW5kZXJlcigpKTsKKyAgICByZXR1
cm4gdG9SZW5kZXJNZXRlcihFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbih1c2VyQWdlbnRT
aGFkb3dSb290KCkpLT5yZW5kZXJlcigpKTsKIH0KIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50Ojpk
aWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM4NGQ4NjY5MjUzNTY0YWRiY2Y0Y2Rj
ODQ1NzljYjU4NmI2ZjVkN2EuLjQ4NjAzNTU2ODQ5ODcxYmE2ZDczNDFkOTI0NTg0YjdmNjMyMGJk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0zMjQs
OCArMzI0LDggQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGU6
OkNoYW5nZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBuYXN0eSwgd2UgYXNrIG91ciBvd25l
ciBzZWxlY3QgdG8gcmVwYWludCBldmVuIGlmIHRoZSBuZXcKICAgICAvLyBzdHlsZSBpcyBleGFj
dGx5IHRoZSBzYW1lLgotICAgIGlmIChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJT
ZWxlY3RFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBz
ZWxlY3QtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVt
ZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBzZWxlY3QtPnJlbmRlcmVyKCkp
CiAgICAgICAgICAgICByZW5kZXJlci0+cmVwYWludCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggODFmY2IyNjBhMjRiNzI4NTZjMTJh
ZGYwYTUyOWRkZWQyYTc2YTFhNy4uMGY5M2FmN2RiNDUxMGE3NTIxMmU1ZTZjM2I4MGZmNWE3MmZj
YmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTg2
LDEyICs4Niw4IEBAIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkKIHsKICAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOwotICAgIGlm
ICghcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghci0+aXNFbWJlZGRlZE9iamVj
dCgpICYmICFyLT5pc1dpZGdldCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgcmV0dXJu
IHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNFbWJlZGRlZE9iamVjdCgpIHx8IHJlbmRlcmVyLT5p
c1dpZGdldCgpKTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbERldGFjaFJlbmRl
cmVycygpCkBAIC0xOTcsMTUgKzE5MywxNSBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBNb3VzZSBkb3du
IGFuZCBzY3JvbGwgZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBwbHVnLWluIHZpYSBjdXN0b20g
Y29kZSBpbiBFdmVudEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMgc2hvdWxkIGJlIHVuaXRlZC4K
IAotICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKHIgJiYgci0+aXNF
bWJlZGRlZE9iamVjdCgpKSB7Ci0gICAgICAgIGlmICh0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIp
LT5pc1BsdWdpblVuYXZhaWxhYmxlKCkpIHsKLSAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRP
YmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwor
ICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlciAm
JiByZW5kZXJlci0+aXNFbWJlZGRlZE9iamVjdCgpKSB7CisgICAgICAgIGlmICh0b1JlbmRlckVt
YmVkZGVkT2JqZWN0KHJlbmRlcmVyKS0+aXNQbHVnaW5VbmF2YWlsYWJsZSgpKSB7CisgICAgICAg
ICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVyKS0+aGFuZGxlVW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3JFdmVudChldmVudCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0
ZSgpIDwgUmVzdGFydGluZykgewotICAgICAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bihyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAodG9SZW5kZXJFbWJlZGRlZE9i
amVjdChyZW5kZXJlciktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSAmJiBkaXNwbGF5U3RhdGUoKSA8
IFJlc3RhcnRpbmcpIHsKKyAgICAgICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVu
ZGVyZXIpLT5oYW5kbGVFdmVudChldmVudCk7CiAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yMTQsOSArMjEwLDkgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKCFyIHx8ICFyLT5pc1dpZGdldCgpKQorICAgIGlmICghcmVuZGVyZXIgfHwg
IXJlbmRlcmVyLT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFdpZGdl
dD4gd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQociktPndpZGdldCgpOworICAgIFJlZlB0cjxXaWRn
ZXQ+IHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7CiAgICAgaWYg
KCF3aWRnZXQpCiAgICAgICAgIHJldHVybjsKICAgICB3aWRnZXQtPmhhbmRsZUV2ZW50KGV2ZW50
KTsKQEAgLTIyNSwxNyArMjIxLDE2IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKLWJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6Omlz
S2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0Citib29sIEhUTUxQ
bHVnSW5FbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAog
ewotICAgIFVOVVNFRF9QQVJBTShldmVudCk7CiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgUGx1Z2luVmlld0Jhc2UqIHBsdWdp
biA9IHBsdWdpbldpZGdldCgpICYmIHBsdWdpbldpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkg
PyBzdGF0aWNfY2FzdDxjb25zdCBQbHVnaW5WaWV3QmFzZSo+KHBsdWdpbldpZGdldCgpKSA6IDA7
Ci0gICAgaWYgKHBsdWdpbikKLSAgICAgICAgcmV0dXJuIHBsdWdpbi0+c3VwcG9ydHNLZXlib2Fy
ZEZvY3VzKCk7CisgICAgY29uc3QgUGx1Z2luVmlld0Jhc2UqIHBsdWdpbiA9IHBsdWdpbldpZGdl
dCgpICYmIHBsdWdpbldpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkgPyBzdGF0aWNfY2FzdDxj
b25zdCBQbHVnaW5WaWV3QmFzZSo+KHBsdWdpbldpZGdldCgpKSA6IG51bGxwdHI7CisgICAgaWYg
KCFwbHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gcGx1Z2luLT5zdXBwb3J0c0tleWJvYXJkRm9jdXMoKTsKIH0KIAogYm9vbCBIVE1M
UGx1Z0luRWxlbWVudDo6aXNQbHVnaW5FbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM2MzZjZDQxMWM0OWNhYTkx
MzU0YzAwZGI2ZGUwZmQzZjA5OGVlM2IuLjljMjgxM2JhMDA1MDNmNjY5MjZlYmRmMDM5NDIwNjlm
YjM4Y2I4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcApAQCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
c3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0KiB3aWRnZXQpCiAKIHZv
aWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKTsKKyAgICBSZW5kZXJFbGVt
ZW50KiByID0gcmVuZGVyZXIoKTsKICAgICBpZiAociAmJiByLT5pc0VtYmVkZGVkT2JqZWN0KCkp
IHsKICAgICAgICAgaWYgKGlzUGx1Z0luSW1hZ2VFbGVtZW50KCkgJiYgZGlzcGxheVN0YXRlKCkg
PT0gV2FpdGluZ0ZvclNuYXBzaG90ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgICAgICBNb3VzZUV2
ZW50KiBtb3VzZUV2ZW50ID0gdG9Nb3VzZUV2ZW50KGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCmluZGV4IDYxZGQ5NDQ2NTIwM2QwZmM2MzU4ZTZl
YmQzYjQ4ZTgwYjUyNjgyYjguLmE2MTcxZjFhMzY3MmUzODk1MDMwNmFhMzliMDZkNjUwMThjMTRj
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhU
TUxEaXZFbGVtZW50LmgiCkBAIC03NCwxMSArNzUsOCBAQCBib29sIEhUTUxQcm9ncmVzc0VsZW1l
bnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSogY2hpbGQpIGNvbnN0CiBS
ZW5kZXJQcm9ncmVzcyogSFRNTFByb2dyZXNzRWxlbWVudDo6cmVuZGVyUHJvZ3Jlc3MoKSBjb25z
dAogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUHJvZ3Jlc3MoKSkKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclByb2dyZXNzKj4ocmVuZGVyZXIoKSk7Ci0K
LSAgICBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+
Zmlyc3RDaGlsZCgpLT5yZW5kZXJlcigpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFyZW5kZXJPYmplY3QgfHwgcmVuZGVyT2JqZWN0LT5pc1Byb2dyZXNzKCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJQcm9ncmVzcyo+KHJlbmRlck9iamVjdCk7CisgICAg
ICAgIHJldHVybiB0b1JlbmRlclByb2dyZXNzKHJlbmRlcmVyKCkpOworICAgIHJldHVybiB0b1Jl
bmRlclByb2dyZXNzKEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHVzZXJBZ2VudFNoYWRv
d1Jvb3QoKSktPnJlbmRlcmVyKCkpOwogfQogCiB2b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4
IGJlZTczZmQyYzI2MTYxYTM1YWRiNjBlNTg3Zjg1OGVkYTc2ZTljMDUuLmM2MjAzYjlkMDkzNTU4
NmVlMGZjMDA3ZjZlNDU4MDU1NjIyMDRlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCkBAIC02NzksMTMgKzY3OSwxMyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzY3JvbGxUb1NlbGVjdGlvbigpCiAgICAgaWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCisgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkKICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2VsZWN0aW9uQ2hhbmdlZCgp
OwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVy
ZXIoKQogewotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkgeworICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAg
ICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRl
cmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKQEAgLTg1MSw3ICs4
NTEsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RPcHRpb24oaW50IG9wdGlvbklu
ZGV4LCBTZWxlY3RPcHRpb25GbGFncyBmbGFncykKICAgICAgICAgZGVzZWxlY3RJdGVtc1dpdGhv
dXRWYWxpZGF0aW9uKGVsZW1lbnQpOwogCiAgICAgLy8gRm9yIHRoZSBtZW51IGxpc3QgY2FzZSwg
dGhpcyBpcyB3aGF0IG1ha2VzIHRoZSBzZWxlY3RlZCBlbGVtZW50IGFwcGVhci4KLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKIAogICAgIHNjcm9sbFRvU2VsZWN0aW9uKCk7CkBAIC04NjAsNyArODYwLDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0T3B0aW9uKGludCBvcHRpb25JbmRleCwg
U2VsZWN0T3B0aW9uRmxhZ3MgZmxhZ3MpCiAgICAgICAgIG1faXNQcm9jZXNzaW5nVXNlckRyaXZl
bkNoYW5nZSA9IGZsYWdzICYgVXNlckRyaXZlbjsKICAgICAgICAgaWYgKGZsYWdzICYgRGlzcGF0
Y2hDaGFuZ2VFdmVudCkKICAgICAgICAgICAgIGRpc3BhdGNoQ2hhbmdlRXZlbnRGb3JNZW51TGlz
dCgpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAgICAgICAgdG9SZW5kZXJN
ZW51TGlzdChyZW5kZXJlciktPmRpZFNldFNlbGVjdGVkSW5kZXgobGlzdEluZGV4KTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc0xpc3RCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggZjM1NzI2MDYwODE4ZDVmMzNlMjli
MWU1OThkZDczYTkzMTU4MjRjZi4uNjkxNDRmYWI3Zjk3MThmNGZlZDMyMGYxOGZlN2Q4MmMwYTJl
YjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAK
QEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgYwogCiBIVE1MVGFibGVD
ZWxsRWxlbWVudCogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNlbGxBYm92ZSgpIGNvbnN0CiB7Ci0g
ICAgUmVuZGVyT2JqZWN0KiBjZWxsUmVuZGVyZXIgPSByZW5kZXJlcigpOworICAgIFJlbmRlckVs
ZW1lbnQqIGNlbGxSZW5kZXJlciA9IHJlbmRlcmVyKCk7CiAgICAgaWYgKCFjZWxsUmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghY2VsbFJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCAxMTMwMDNiYjBlNDkyZThmYTMyMjNhMDJlODNhNGNiMWNmZjYzNjI4Li45OTE4
NGZlOWZkMzI3Mzg4NzlkOGM0YjIzMzA0MDgxODUzMjFkMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMjAzLDEwICsy
MDMsOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvcm1Db250
cm9sQ2hhbmdlRXZlbnQoKQogICAgIHNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5n
ZUV2ZW50KGZhbHNlKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGhhc1Zpc2libGVUZXh0QXJl
YShSZW5kZXJPYmplY3QqIHRleHRDb250cm9sLCBIVE1MRWxlbWVudCogaW5uZXJUZXh0KQorc3Rh
dGljIGlubGluZSBib29sIGhhc1Zpc2libGVUZXh0QXJlYShSZW5kZXJFbGVtZW50JiB0ZXh0Q29u
dHJvbCwgSFRNTEVsZW1lbnQqIGlubmVyVGV4dCkKIHsKLSAgICBBU1NFUlQodGV4dENvbnRyb2wp
OwotICAgIHJldHVybiB0ZXh0Q29udHJvbC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IEhJRERF
TiAmJiBpbm5lclRleHQgJiYgaW5uZXJUZXh0LT5yZW5kZXJlcigpICYmIGlubmVyVGV4dC0+cmVu
ZGVyQm94KCktPmhlaWdodCgpOworICAgIHJldHVybiB0ZXh0Q29udHJvbC5zdHlsZSgpLT52aXNp
YmlsaXR5KCkgIT0gSElEREVOICYmIGlubmVyVGV4dCAmJiBpbm5lclRleHQtPnJlbmRlcmVyKCkg
JiYgaW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+aGVpZ2h0KCk7CiB9CiAKIHZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldFJhbmdlVGV4dChjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI4OSw3ICsyODgsNyBAQCB2b2lkIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRl
eHRGaWVsZAogICAgIGVuZCA9IG1heChlbmQsIDApOwogICAgIHN0YXJ0ID0gbWluKG1heChzdGFy
dCwgMCksIGVuZCk7CiAKLSAgICBpZiAoIWhhc1Zpc2libGVUZXh0QXJlYShyZW5kZXJlcigpLCBp
bm5lclRleHRFbGVtZW50KCkpKSB7CisgICAgaWYgKCFoYXNWaXNpYmxlVGV4dEFyZWEoKnJlbmRl
cmVyKCksIGlubmVyVGV4dEVsZW1lbnQoKSkpIHsKICAgICAgICAgY2FjaGVTZWxlY3Rpb24oc3Rh
cnQsIGVuZCwgZGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCmluZGV4IDM3ZTZkYTJmYzFjZGZjZjQ1Zjc4OWJjZWQxMmZlOWQxMmRkNGMwYTAu
LjJiMjQ2MmFhYWNjMTdlMWQwYTRkZTk2NTFjNmNlYzAxOGUyOWMwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaApAQCAtNTksNyArNTksNiBAQCBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3Mg
TW91c2VFdmVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJBcmVuYTsKLWNsYXNzIFJlbmRl
ck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVG91Y2hFdmVudDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAK
aW5kZXggYjEwMDk5NzhhNjFhZTIzYWI2MDEwMGFjYmY2YjRhNWExMjg5NGQ2ZC4uYmY0MzQ2YTRh
NDNlOTM0M2IwNTlhYWFjZTFkY2RjMWYwMGE2MzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAppbmRleCA4MTZhZTMwMjI1NmJj
MjdiMDAzZWEyODg3OThjOTlkYzAxNjZiOTE0Li42NjkzOGY5Y2MwODM2Njg0OTdkZGUyNDIyMGMw
OGE5ZmRkZjkxN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbEVsZW1lbnQ6OnNldERpc3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IGRpc3BsYXlUeXBlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Rpc3BsYXlUeXBlID0gZGlz
cGxheVR5cGU7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gbV9lbGVtZW50LT5yZW5k
ZXJlcigpKQorICAgIGlmIChhdXRvIG9iamVjdCA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkKICAg
ICAgICAgb2JqZWN0LT5yZXBhaW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA4ZWY2YTg1NjllYWRmZTRh
ZWU4NThlZDgzMThmODg5OWE1NDRjNDdlLi45NDE2MTQxOTY1OTk3MDUyYmFmOTU3ODQ5MTY3MDhj
ZWE0Njg3OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xQ
YW5lbEVsZW1lbnQ6OnN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbikK
ICAgICBpZiAobV9pc0JlaW5nRHJhZ2dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzQm94
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM5NiwyMCArMTM5NiwyMCBAQCB2b2lkIE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKGJvb2wgZm9yY2VV
cGRhdGUpCiBQYXNzUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdlKCkKIHsKICAgICBpZiAo
IWhhc0NoaWxkTm9kZXMoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoIXJlbmRlcmVyLT5oYXNMYXllcigpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZW5kZXJMYXllciogbGF5ZXIg
PSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOwogCkBAIC0xNDE4
LDkgKzE0MTgsMTAgQEAgUGFzc1JlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW4KICAgICAgICAgZGV2aWNlU2Nh
bGVGYWN0b3IgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogCiAgICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5zaXplKCkpOworCiAgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Qu
c2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwogICAgIGlm
ICghYnVmZmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCwgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycywgMCwgMCwgUmVuZGVyTGF5ZXI6OlBhaW50
TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKaW5kZXggZTA0MmM2ZWZhNTcx
MWM5MmUxZWJhNGNiOGM1NzBhMzBlN2JhYTg4OS4uNjNlMzdmYTgyNjNiMzA5MWE2MmVlYzBkM2Q1
NzI1MGU3MzViZTc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRl
clNoYWRvd0VsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEhUTUxNZXRlckVsZW1lbnQqIE1l
dGVyU2hhZG93RWxlbWVudDo6bWV0ZXJFbGVtZW50KCkgY29uc3QKIAogYm9vbCBNZXRlclNoYWRv
d0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyID0gbWV0ZXJFbGVtZW50KCktPnJlbmRlcmVyKCk7Cisg
ICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKICAgICByZXR1cm4g
cmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCktPnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgp
LT5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxl
KTsKIH0KIApAQCAtNzIsNyArNzIsNyBAQCBib29sIE1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBpZiAobWV0ZXJFbGVtZW50
KCktPmhhc0F1dGhvclNoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyID0g
bWV0ZXJFbGVtZW50KCktPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1l
bnQoKS0+cmVuZGVyZXIoKTsKICAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkt
PnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDdhOWVjYWNlNTAyNGM5NTRkNjg5
MGM4NmMyMTkxNTA5MWI1MWQ3ZmEuLjk3NWQ1YTY3NTUzOGFlOGE3NmU3YzQyZjQ4MDAyOTk4ZmU2
NjY3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTQ0LDEwICs0NCwxMCBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRl
cklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgotI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggN2Fm
YWZjMDk0NDJmYjJkMGQwZjJkNmQ1NDRkMDdmMmNiMGM0NjA1ZC4uMGFhZDYzOTc4ZTcwNGRkNThh
NDI1ZGM5Yzg4MzUzYzA5OWM5YjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1
ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDQ1
OTJjYjE2NzU4MThkYjQxYWNmNjNmYTJiZTcwZDQwYjQxY2RiYTguLjhmM2YzYzJhZTU2ZjVkMGY2
OWM1MzAyZTM1ODA5ZDNkOGM2YTc2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgRXZlbnQ7CiBj
bGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGcmFtZTsKQEAgLTI1OSw3ICsyNjAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2so
KTsKIAotICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IExheW91dFJlY3QmLCBGbG9hdFF1YWQqKTsKKyAgICB2b2lkIGxvY2FsVG9QYWdl
UXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7
CiAgICAgY29uc3QgVGltZWxpbmVUaW1lQ29udmVydGVyJiB0aW1lQ29udmVydGVyKCkgY29uc3Qg
eyByZXR1cm4gbV90aW1lQ29udmVydGVyOyB9CiAgICAgZG91YmxlIHRpbWVzdGFtcCgpOwogICAg
IFBhZ2UqIHBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDEx
ZWM5ODlhYmQ3ODgzY2ZjNzJlOTNhMmY4MjI5ZDg5M2FjMDBmNDUuLjdjNzk4ZjRkMjRhNzFmOGQ3
NDhjMWM3ZTRhM2JlMGY5MzMxZTdkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAogUmVuZGVySW1hZ2VSZXNvdXJjZSogSW1hZ2VM
b2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UoKQogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIg
PSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7CiAKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmlu
ZGV4IDI5YjMxMWRmYmYzOTczZWIyNjE5ZGJiNjZiMjFkMDc2ZjNiYTE3NjUuLmVlZjVhZGRkZjE3
MjI5ZGZjNWY0YzEyMzQwNzBjZTgxNmRjMmQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3VicmVzb3VyY2VMb2FkZXIuaCIKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lkIENhY2hlZEltYWdl
OjpyZXN1bWVBbmltYXRpbmdJbWFnZXNGb3JMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxv
YWRlcikKICAgICB9CiB9CiAKLWJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorYm9vbCBDYWNoZWRJbWFnZTo6
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KQogewogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAg
IGlmIChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAppbmRleCA0MzFiNzQwNjI2YTg2ZGI3OTllZGM5YTY3MjMzNzdkNzM3ODky
ODNmLi42YmUxMjNkMzUyZTk0MzhjNjI3MDRjZDIwMjQwMjQwN2IxMTI2OTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMzgsNyArMzgsOSBAQCBjbGFz
cyBDYWNoZWRJbWFnZUNsaWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
RmxvYXRTaXplOwogY2xhc3MgTWVtb3J5Q2FjaGU7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xh
c3MgUmVuZGVyT2JqZWN0OworCiBzdHJ1Y3QgTGVuZ3RoOwogCiBjbGFzcyBDYWNoZWRJbWFnZSBG
SU5BTCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSwgcHVibGljIEltYWdlT2JzZXJ2ZXIgewpAQCAt
NTIsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhl
IG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBJbWFn
ZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gUmV0dXJucyB0aGUg
bnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIGJvb2wg
aGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9Ci0gICAgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFNpZGUgZWZm
ZWN0OiBlbnN1cmVzIGRlY29kZWQgaW1hZ2UgaXMgaW4gY2FjaGUsIHRoZXJlZm9yZSBzaG91bGQg
b25seSBiZSBjYWxsZWQgd2hlbiBhYm91dCB0byBkcmF3IHRoZSBpbWFnZS4KKyAgICBib29sIGN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7IC8vIFNpZGUg
ZWZmZWN0OiBlbnN1cmVzIGRlY29kZWQgaW1hZ2UgaXMgaW4gY2FjaGUsIHRoZXJlZm9yZSBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2hlbiBhYm91dCB0byBkcmF3IHRoZSBpbWFnZS4KIAogICAgIHN0
ZDo6cGFpcjxJbWFnZSosIGZsb2F0PiBicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikgY29uc3Q7IC8vIFJldHVybnMgYW4gaW1hZ2UgYW5kIHRoZSBpbWFnZSdzIHJlc29sdXRpb24g
c2NhbGUgZmFjdG9yLgogICAgIGJvb2wgd2lsbFBhaW50QnJva2VuSW1hZ2UoKSBjb25zdDsgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggNTViNDc2YjdkZjhhYzFh
YmVhNDRhYzdiZDYwNDE2YjUxMWE0OGY0Yy4uMDZlZWE0OGU0YmY3Y2VkNGUzNzU5YmYzZDU3OGU3
MzVmY2ExMDQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIk1h
dGhNTE5hbWVzLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGVDZWxsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBhNjNjMDczMzgxYmVmYWUzZTYxMTZi
ZWU2YmFhOTU3OTkwOTNiZDFmLi4xNzFjYmQ5MTJkMTIwMjQ5ODM2NTVhZGVhZGRjZDdhMmVmNWYx
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CkBAIC02MCw3ICs2MCw2IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAppbmRleCA3OTQyMjdhN2I2MTFkMzJkZmJjYmNmMGZjMWVlZGU2YTFjZjVhMDU0
Li5jZjQxNzg0ZDYyMWI3YTcwYjMyNTQ5YjM3NjU0MzBmMGQyOGQ3NDMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNjMyLDM2ICs2MzIsMzAgQEAgRWxlbWVudCog
RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1l
LCBFbGVtZW50KiBzdGEKICAgICBpZiAoIXN0YXJ0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydEVsZW1lbnQt
PnJlbmRlcmVyKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewot
ICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vblBzZXVkb05vZGUoKTsKLSAgICAgICAg
aWYgKCFub2RlKQotICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9uJ3Qg
Y29ycmVzcG9uZCB0byBhY3R1YWwgRE9NIG5vZGVzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQotICAg
ICAgICAgICAgLy8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIG5vZGUu
CisgICAgZm9yIChhdXRvIHJlbmRlcmVyID0gc3RhcnRFbGVtZW50LT5yZW5kZXJlcigpOyByZW5k
ZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkpIHsKKyAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9FbGVtZW50KCk7CisgICAgICAgIGlmICghZWxl
bWVudCkgeworICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9uJ3QgY29y
cmVzcG9uZCB0byBhY3R1YWwgRE9NIGVsZW1lbnRzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQorICAg
ICAgICAgICAgLy8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIGVsZW1l
bnQuCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCEoc3RhdGUudHlwZSAmIERy
YWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIG5vZGUtPmlzVGV4dE5vZGUoKSAmJiBub2RlLT5j
YW5TdGFydFNlbGVjdGlvbigpKQotICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUg
YSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuIElmIHRoaXMgdGV4dCBp
cwotICAgICAgICAgICAgLy8gc2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0aGUgc2VsZWN0
aW9uIHByb2Nlc3MgaW5zdGVhZCBvZiBsb29raW5nIGZvciBhIHBhcmVudAotICAgICAgICAgICAg
Ly8gdG8gdHJ5IHRvIGRyYWcuCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgRVVzZXJEcmFnIGRyYWdNb2RlID0g
cmVuZGVyZXItPnN0eWxlKCktPnVzZXJEcmFnKCk7Ci0gICAgICAgICAgICBpZiAoKG1fZHJhZ1Nv
dXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gRFJBR19F
TEVNRU5UKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdT
b3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uREhUTUwpOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CisgICAgICAgIH0KKyAgICAgICAgRVVz
ZXJEcmFnIGRyYWdNb2RlID0gcmVuZGVyZXItPnN0eWxlKCktPnVzZXJEcmFnKCk7CisgICAgICAg
IGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSAmJiBkcmFn
TW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKKyAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNf
Y2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkRIVE1M
KTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9CisgICAgICAgIGlmIChk
cmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKKyAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQorICAgICAgICAgICAgICAgICYmIGlzSFRNTElt
YWdlRWxlbWVudChlbGVtZW50KQorICAgICAgICAgICAgICAgICYmIHNvdXJjZUZyYW1lLT5zZXR0
aW5ncygpLmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKSB7CisgICAgICAgICAgICAgICAgc3Rh
dGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFn
U291cmNlQWN0aW9uSW1hZ2UpOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRyYWdNb2RlID09IERSQUdfQVVUTykgewotICAg
ICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbklt
YWdlKQotICAgICAgICAgICAgICAgICAgICAmJiBpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgc291cmNlRnJhbWUtPnNldHRpbmdzKCkubG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRp
Y19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uSW1h
Z2UpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKQotICAgICAgICAgICAgICAgICAgICAmJiBpc0hUTUxBbmNob3JF
bGVtZW50KG5vZGUpCi0gICAgICAgICAgICAgICAgICAgICYmIHRvSFRNTEFuY2hvckVsZW1lbnQo
bm9kZSktPmlzTGl2ZUxpbmsoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0g
c3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rp
b25MaW5rKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICAgICAgICAgICYmIGlzSFRNTEFuY2hvckVsZW1l
bnQoZWxlbWVudCkKKyAgICAgICAgICAgICAgICAmJiB0b0hUTUxBbmNob3JFbGVtZW50KGVsZW1l
bnQpLT5pc0xpdmVMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGlj
X2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25MaW5r
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhNWY4ZWMz
MmFhNDkzMjM5OWY3ZGQ1OWUzMzU2ZGFlZmZhOWZhZGI5Li41ZmRlMmM0NjdhYWFmYmRhZGFjZTFm
NjkzN2RjMWUwN2NkY2I5YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0zNDQsNyArMzQ0LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1l
KQogICAgICwgbV90b3VjaFByZXNzZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCi0gICAgLCBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUoMCkKKyAgICAsIG1f
c2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZShudWxscHRyKQogICAgICwgbV9sYXN0SGl0VGVzdFJl
c3VsdE92ZXJXaWRnZXQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fbWF4TW91c2VNb3ZlZER1cmF0
aW9uKDApCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyKCkKICAg
ICBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldEtleSA9IDA7CiAjZW5kaWYKICNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gMDsK
KyAgICBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUgPSBudWxscHRyOwogICAgIG1fbGFzdEhp
dFRlc3RSZXN1bHRPdmVyV2lkZ2V0ID0gZmFsc2U7CiAgICAgbV9wcmV2aW91c0dlc3R1cmVTY3Jv
bGxlZEVsZW1lbnQgPSBudWxscHRyOwogICAgIG1fc2Nyb2xsYmFySGFuZGxpbmdTY3JvbGxHZXN0
dXJlID0gMDsKQEAgLTk4MCw3ICs5ODAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkUGFuU2Ny
b2xsU3RvcCgpCiAgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+ZGlkUGFuU2Nyb2xsU3RvcCgp
OwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyLT5pc0JveCgpKQogICAgICAg
ICByZXR1cm47CkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0UGFu
U2Nyb2xsaW5nKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoUEFO
X1NDUk9MTElORykKIAotUmVuZGVyT2JqZWN0KiBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxSZW5k
ZXJlcigpIGNvbnN0CitSZW5kZXJFbGVtZW50KiBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxSZW5k
ZXJlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPmF1dG9z
Y3JvbGxSZW5kZXJlcigpOwogfQpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnNjcm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGcKICAgICAgICAgbm9kZSA9IG1fbW91c2VQcmVzc05vZGUuZ2V0KCk7CiAgICAgCiAg
ICAgaWYgKG5vZGUpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByID0gbm9kZS0+cmVuZGVyZXIo
KTsKKyAgICAgICAgYXV0byByID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHIgJiYg
IXItPmlzTGlzdEJveCgpICYmIHItPmVuY2xvc2luZ0JveCgpLT5zY3JvbGwoZGlyZWN0aW9uLCBn
cmFudWxhcml0eSkpIHsKICAgICAgICAgICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRp
cmVjdGlvbiwgU2Nyb2wKICAgICAgICAgbm9kZSA9IG1fbW91c2VQcmVzc05vZGUuZ2V0KCk7CiAg
ICAgCiAgICAgaWYgKG5vZGUpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByID0gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICAgICAgYXV0byByID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYg
KHIgJiYgIXItPmlzTGlzdEJveCgpICYmIHItPmVuY2xvc2luZ0JveCgpLT5sb2dpY2FsU2Nyb2xs
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKSB7CiAgICAgICAgICAgICBzZXRGcmFtZVdhc1Njcm9s
bGVkQnlVc2VyKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNzYsNyArMTE3Niw3
IEBAIEZyYW1lKiBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBub2Rl
KQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNXaWRnZXQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEyOTAsNyArMTI5MCw3IEBAIE9wdGlvbmFsQ3Vyc29y
IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwg
Ym9vbCBzaGlmCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gTm9DdXJzb3JDaGFuZ2U7
CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBh
dXRvIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUg
PSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogMDsKICAgICBib29sIGhvcml6b250YWxU
ZXh0ID0gIXN0eWxlIHx8IHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIGNv
bnN0IEN1cnNvciYgaUJlYW0gPSBob3Jpem9udGFsVGV4dCA/IGlCZWFtQ3Vyc29yKCkgOiB2ZXJ0
aWNhbFRleHRDdXJzb3IoKTsKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHN0YXRpYyBSZW5kZXJMYXll
ciogbGF5ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwor
ICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yNDU0LDEwICsyNDU0LDkgQEAgRXZlbnRIYW5kbGVy
OjpEb21pbmFudFNjcm9sbEdlc3R1cmVEaXJlY3Rpb24gRXZlbnRIYW5kbGVyOjpkb21pbmFudFNj
cm9sbEdlc3R1cmUKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogewotICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLmRv
Y3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwog
Ci0gICAgUmVuZGVyT2JqZWN0KiBkb2NSZW5kZXJlciA9IGRvYy0+cmVuZGVyVmlldygpOwotICAg
IGlmICghZG9jUmVuZGVyZXIpCisgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9y
KG1fZnJhbWUudmlldygpKTsKQEAgLTI0NzIsNyArMjQ3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKIAogICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
dlBvaW50KTsKLSAgICBkb2MtPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQp
OworICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsK
IAogICAgIGJvb2wgdXNlTGF0Y2hlZFdoZWVsRXZlbnRFbGVtZW50ID0gZS51c2VMYXRjaGVkRXZl
bnRFbGVtZW50KCk7CiAKQEAgLTI4ODcsNyArMjg4Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpz
ZW5kU2Nyb2xsRXZlbnRUb1ZpZXcoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVF
dmVuCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhckdlc3R1cmVTY3JvbGxOb2RlcygpCiB7Ci0g
ICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gMDsKKyAgICBtX3Njcm9sbEdlc3R1cmVI
YW5kbGluZ05vZGUgPSBudWxscHRyOwogICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWRFbGVt
ZW50ID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZDU4
MDY1NmNmYThiODc1ODA0ODU2NTQzNjFhYmFhMmQ2M2VkNzJkMi4uNmU5ODA1MGVkNzUzOTI3YTAx
MDFiMDU3NDIyMTJkNmJkNzQ0OWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBA
IC03MSw2ICs3MSw3IEBAIGNsYXNzIE9wdGlvbmFsQ3Vyc29yOwogY2xhc3MgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OwogY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OwogY2xhc3MgUGxhdGZvcm1XaGVl
bEV2ZW50OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckxheWVyOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyV2lkZ2V0OwpAQCAtMTE3LDExICsxMTgsMTEgQEAg
cHVibGljOgogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIHZvaWQgZGlkUGFuU2Nyb2xs
U3RhcnQoKTsKICAgICB2b2lkIGRpZFBhblNjcm9sbFN0b3AoKTsKLSAgICB2b2lkIHN0YXJ0UGFu
U2Nyb2xsaW5nKFJlbmRlck9iamVjdCopOworICAgIHZvaWQgc3RhcnRQYW5TY3JvbGxpbmcoUmVu
ZGVyRWxlbWVudCopOwogI2VuZGlmCiAKICAgICB2b2lkIHN0b3BBdXRvc2Nyb2xsVGltZXIoYm9v
bCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZSk7Ci0gICAgUmVuZGVyT2JqZWN0KiBh
dXRvc2Nyb2xsUmVuZGVyZXIoKSBjb25zdDsKKyAgICBSZW5kZXJFbGVtZW50KiBhdXRvc2Nyb2xs
UmVuZGVyZXIoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwog
ICAgIGJvb2wgYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdDsKICAgICBib29sIG1vdXNlRG93
bldhc0luU3ViZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21vdXNlRG93bldhc0luU3ViZnJhbWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA3MTM2YTY1YWQ0
MGEyYTc4NzRmZWIyZTQzY2I2YWJjNjRmYjVjNWY4Li4wMTIzZjc1YmE2ZDk5M2I4ZjVmODhiOTc3
MTkxZGIxYjY4ODRjZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1h
dG9yLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZjRh
YjYwYzk0ZjM4MGY1OThjNjI2YzdjM2YwY2E0Mzc3NWY3ZmUwNC4uMjEwMTFiYWVjYWU2OWViNTU3
NzVmNTFhODFkZDMyMzI1OTQ1MTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTU3MSw3ICs1
NzEsNyBAQCBSZW5kZXJXaWRnZXQqIEZyYW1lOjpvd25lclJlbmRlcmVyKCkgY29uc3QKICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OwogICAg
IGlmICghb3duZXJFbGVtZW50KQogICAgICAgICByZXR1cm4gMDsKLSAgICBSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIG9iamVjdCA9IG93
bmVyRWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgLy8gRklYTUU6IElmIDxvYmplY3Q+IGlzIGV2ZXIgZml4ZWQgdG8gZGlzYXNzb2Np
YXRlIGl0c2VsZiBmcm9tIGZyYW1lcwpAQCAtNjY0LDcgKzY2NCw3IEBAIFZpc2libGVQb3NpdGlv
biBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9p
bnQpCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSByZW5kZXJl
ci0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKTsKQEAgLTEwMDEsNyArMTAw
MSw3IEBAIHN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewogRHJhZ0ltYWdlUmVmIEZy
YW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0
IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZSh0aGlzLCBub2RlKTsKIApAQCAtMTAxMiwx
MCArMTAxMiwxMCBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQog
ICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKICAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9k
ZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KIAotICAgIC8vIERv
Y3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwgUmVu
ZGVyT2JqZWN0LgotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OworICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUg
b3JpZ2luYWwgcmVuZGVyZXIuCisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwogICAgIEludFJlY3QgcGFpbnRp
bmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0
b3BMZXZlbFJlY3QpKTsKQEAgLTEwMjgsNyArMTAyOCw3IEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6
bm9kZUltYWdlKE5vZGUqIG5vZGUpCiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS0+dHJh
bnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CiAgICAgYnVmZmVy
LT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBh
aW50aW5nUmVjdC5tYXhZKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM3
NDdiMGUzZWQxZDA3ODJkZTJhYTBjZGYxZDA2YjM0OWE5YTUyMjIuLjE4YjAxYWVlMDVlNGI0OTQ1
NzQ2MDFmZmM3OTY1MGU4M2U0MjExNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTU5OCw3ICs1OTgsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUoKQogICAgIHNl
dENvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dU
b1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJh
ck1vZGUmIHZNb2RlKQordm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJl
bmRlckVsZW1lbnQqIG8sIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9k
ZSkKIHsKICAgICAvLyBIYW5kbGUgdGhlIG92ZXJmbG93OmhpZGRlbi9zY3JvbGwgY2FzZSBmb3Ig
dGhlIGJvZHkvaHRtbCBlbGVtZW50cy4gIFdpbklFIHRyZWF0cwogICAgIC8vIG92ZXJmbG93Omhp
ZGRlbiBhbmQgb3ZlcmZsb3c6c2Nyb2xsIG9uIDxib2R5PiBhcyBhcHBseWluZyB0byB0aGUgZG9j
dW1lbnQncwpAQCAtNjY2LDEwICs2NjYsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZs
b3dUb1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFMKIHZv
aWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRpb25Ub1ZpZXdwb3J0KCkKIHsKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgTm9kZSogZG9jdW1lbnRFbGVt
ZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIFJlbmRlck9iamVjdCogZG9j
dW1lbnRSZW5kZXJlciA9IGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+cmVuZGVy
ZXIoKSA6IDA7Ci0gICAgUmVuZGVyT2JqZWN0KiBkb2N1bWVudE9yQm9keVJlbmRlcmVyID0gZG9j
dW1lbnRSZW5kZXJlcjsKLSAgICBOb2RlKiBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKKyAgICBh
dXRvIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBS
ZW5kZXJFbGVtZW50KiBkb2N1bWVudFJlbmRlcmVyID0gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnRFbGVtZW50LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICBSZW5kZXJFbGVtZW50KiBkb2N1
bWVudE9yQm9keVJlbmRlcmVyID0gZG9jdW1lbnRSZW5kZXJlcjsKKyAgICBhdXRvIGJvZHkgPSBk
b2N1bWVudC0+Ym9keSgpOwogICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKICAg
ICAgICAgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpCiAgICAgICAgICAgICBkb2N1bWVu
dE9yQm9keVJlbmRlcmVyID0gZG9jdW1lbnRSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkg
PT0gT1ZJU0lCTEUgJiYgZG9jdW1lbnRFbGVtZW50LT5oYXNUYWdOYW1lKGh0bWxUYWcpID8gYm9k
eS0+cmVuZGVyZXIoKSA6IGRvY3VtZW50UmVuZGVyZXI7CkBAIC03MTYsOSArNzE2LDkgQEAgdm9p
ZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1v
ZGUmIGhNb2RlLCBTY3JvbGxiYXIKICAgICAKICAgICBpZiAoIW1fbGF5b3V0Um9vdCkgewogICAg
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIE5v
ZGUqIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVu
dEVsZW1lbnQtPnJlbmRlcmVyKCkgOiAwOwotICAgICAgICBOb2RlKiBib2R5ID0gZG9jdW1lbnQt
PmJvZHkoKTsKKyAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCk7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIHJvb3RSZW5kZXJlciA9IGRvY3Vt
ZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gYm9keSA9IGRvY3VtZW50LT5ib2R5KCk7CiAgICAgICAgIGlmIChib2R5ICYmIGJv
ZHktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGlmIChib2R5LT5oYXNUYWdOYW1lKGZyYW1l
c2V0VGFnKSAmJiAhZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAg
dk1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXIKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keS0+aGFzVGFnTmFtZShi
b2R5VGFnKSkgewogICAgICAgICAgICAgICAgIC8vIEl0J3Mgc3VmZmljaWVudCB0byBqdXN0IGNo
ZWNrIHRoZSBYIG92ZXJmbG93LAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3MgaWxsZWdh
bCB0byBoYXZlIHZpc2libGUgaW4gb25seSBvbmUgZGlyZWN0aW9uLgotICAgICAgICAgICAgICAg
IFJlbmRlck9iamVjdCogbyA9IHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0g
T1ZJU0lCTEUgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGh0bWxU
YWcpID8gYm9keS0+cmVuZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKKyAgICAgICAgICAgICAgICBS
ZW5kZXJFbGVtZW50KiBvID0gcm9vdFJlbmRlcmVyLT5zdHlsZSgpLT5vdmVyZmxvd1goKSA9PSBP
VklTSUJMRSAmJiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoaHRtbFRh
ZykgPyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVyOwogICAgICAgICAgICAgICAgIGFw
cGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KG8sIGhNb2RlLCB2TW9kZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAocm9vdFJlbmRlcmVyKQpAQCAtOTg2LDcgKzk4Niw3IEBAIHZvaWQg
RnJhbWVWaWV3OjplbnRlckNvbXBvc2l0aW5nTW9kZSgpCiBib29sIEZyYW1lVmlldzo6aXNFbmNs
b3NlZEluQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQotICAgIFJlbmRlck9iamVjdCogZnJhbWVPd25lclJlbmRlcmVyID0gZnJhbWUo
KS5vd25lclJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogZnJhbWVPd25lclJlbmRlcmVy
ID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7CiAgICAgaWYgKGZyYW1lT3duZXJSZW5kZXJlciAm
JiBmcmFtZU93bmVyUmVuZGVyZXItPmNvbnRhaW5lckZvclJlcGFpbnQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTEzNzEsMTggKzEzNzEsMTggQEAgUmVuZGVyQm94KiBGcmFtZVZpZXc6
OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAjaWYgRU5BQkxFKFNWRykKICAgICBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmll
dykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVu
ZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gcmVuZGVyVmlldy0+Zmlyc3RDaGlsZCgpOwogICAgIGlm
ICghZmlyc3RDaGlsZCB8fCAhZmlyc3RDaGlsZC0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQ3VyZW50bHkgb25seSBlbWJlZGRl
ZCBTVkcgZG9jdW1lbnRzIHBhcnRpY2lwYXRlIGluIHRoZSBzaXplLW5lZ290aWF0aW9uIGxvZ2lj
LgotICAgIGlmIChmaXJzdENoaWxkLT5pc1NWR1Jvb3QoKSkKKyAgICBpZiAodG9SZW5kZXJCb3go
Zmlyc3RDaGlsZCktPmlzU1ZHUm9vdCgpKQogICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3goZmly
c3RDaGlsZCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiB2b2lkIEZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJl
ZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCkBAIC0xNDkxLDEyICsxNDkxLDEyIEBAIHZvaWQg
RnJhbWVWaWV3OjpzZXRDYW5ub3RCbGl0VG9XaW5kb3coKQogICAgIHVwZGF0ZUNhbkJsaXRPblNj
cm9sbFJlY3Vyc2l2ZWx5KCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9i
amVjdChSZW5kZXJPYmplY3QqIG8pCit2b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmpl
Y3QoUmVuZGVyRWxlbWVudCogbykKIHsKICAgICBib29sIGhhZFNsb3dSZXBhaW50T2JqZWN0cyA9
IGhhc1Nsb3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFtX3Nsb3dSZXBhaW50T2JqZWN0
cykKLSAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBhZG9wdFB0cihuZXcgUmVuZGVyT2Jq
ZWN0U2V0KTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBhZG9wdFB0cihuZXcgSGFz
aFNldDxSZW5kZXJFbGVtZW50Kj4pOwogCiAgICAgbV9zbG93UmVwYWludE9iamVjdHMtPmFkZChv
KTsKIApAQCAtMTUxMCw3ICsxNTEwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50
T2JqZWN0KFJlbmRlck9iamVjdCogbykKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpyZW1v
dmVTbG93UmVwYWludE9iamVjdChSZW5kZXJPYmplY3QqIG8pCit2b2lkIEZyYW1lVmlldzo6cmVt
b3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCogbykKIHsKICAgICBpZiAoIW1fc2xv
d1JlcGFpbnRPYmplY3RzKQogICAgICAgICByZXR1cm47CkBAIC0xNTI3LDcgKzE1MjcsNyBAQCB2
b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyT2JqZWN0KiBvKQog
ICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lkIEZyYW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdChSZW5kZXJFbGVtZW50KiBvYmplY3QpCiB7CiAgICAgaWYgKCFtX3ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKQogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
ID0gYWRvcHRQdHIobmV3IFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQpOwpAQCAtMTU0NCw3
ICsxNTQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgfQogfQogCi12b2lkIEZyYW1lVmlldzo6cmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3ZvaWQgRnJh
bWVWaWV3OjpyZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqIG9i
amVjdCkKIHsKICAgICBpZiAobV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyAmJiBtX3ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzLT5yZW1vdmUob2JqZWN0KSkgewogICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CkBAIC0xNjQzLDcgKzE2NDMsNyBAQCBib29sIEZy
YW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdAogICAgIFJlZ2lvbiByZWdpb25Ub1VwZGF0ZTsKICAgICBWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzLT5lbmQoKTsKICAgICBmb3IgKFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSAqaXQ7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gKml0OwogICAgICAg
ICBpZiAoIXJlbmRlcmVyLT5zdHlsZSgpLT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24o
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKQEAgLTE3NDIsMTEgKzE3NDIsOCBAQCB2b2lkIEZyYW1lVmlldzo6cmVwYWludFNsb3dSZXBh
aW50T2JqZWN0cygpCiAKICAgICAvLyBSZW5kZXJlcnMgd2l0aCBmaXhlZCBiYWNrZ3JvdW5kcyBt
YXkgYmUgaW4gY29tcG9zaXRpbmcgbGF5ZXJzLCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkKICAg
ICAvLyByZXBhaW50IHRoZW0gYWZ0ZXIgc2Nyb2xsaW5nLgotICAgIFJlbmRlck9iamVjdFNldDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zbG93UmVwYWludE9iamVjdHMtPmVuZCgpOwotICAgIGZv
ciAoUmVuZGVyT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2xvd1JlcGFpbnRPYmpl
Y3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9ICppdDsKLSAgICAgICAgcmVuZGVyZXItPnJlcGFpbnQoKTsKLSAgICB9CisgICAg
Zm9yIChhdXRvIGl0ID0gbV9zbG93UmVwYWludE9iamVjdHMtPmJlZ2luKCksIGVuZCA9IG1fc2xv
d1JlcGFpbnRPYmplY3RzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+
cmVwYWludCgpOwogfQogCiAvLyBOb3RlIHRoYXQgdGhpcyBnZXRzIGNhbGxlZCBhdCBwYWludGlu
ZyB0aW1lLgpAQCAtMTk0NSwxMSArMTk0Miw5IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0c05lZWRMYXlvdXQoKQogICAgIGlmICghaGFzVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cy0+ZW5kKCk7Ci0gICAgZm9yIChWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gKml0
OwotICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgfQorICAgIGF1
dG8gZW5kID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgZm9yIChh
dXRvIGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAoKml0KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKIHZvaWQg
RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldCgpCkBAIC0y
OTc3LDggKzI5NzIsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9v
bCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZgogICAgICAgICBtX3ZlcnRp
Y2FsT3ZlcmZsb3cgPSB2ZXJ0aWNhbE92ZXJmbG93OwogICAgICAgICAKICAgICAgICAgc2NoZWR1
bGVFdmVudChPdmVyZmxvd0V2ZW50OjpjcmVhdGUoaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCwg
aG9yaXpvbnRhbE92ZXJmbG93LAotICAgICAgICAgICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQs
IHZlcnRpY2FsT3ZlcmZsb3cpLAotICAgICAgICAgICAgbV92aWV3cG9ydFJlbmRlcmVyLT5ub2Rl
KCkpOworICAgICAgICAgICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQsIHZlcnRpY2FsT3ZlcmZs
b3cpLCBtX3ZpZXdwb3J0UmVuZGVyZXItPmVsZW1lbnQoKSk7CiAgICAgfQogICAgIAogfQpAQCAt
MzIxMyw3ICszMjA3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUFubm90YXRlZFJlZ2lvbnMo
KQogCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKIHsKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gMDsKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IDA7CiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBjb3JuZXJTdHlsZTsKICAgICBJbnRSZWN0IGNvcm5lclJl
Y3QgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgCkBAIC0zNTE4LDcgKzM1MTIsNyBAQCB2b2lk
IEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciA9IHJlbmRlclZpZXctPmxheWVy
KCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgUmVuZGVyT2JqZWN0OjpTZXRMYXlvdXROZWVkZWRG
b3JiaWRkZW5TY29wZSBmb3JiaWRTZXROZWVkc0xheW91dCgmcm9vdExheWVyLT5yZW5kZXJlcigp
KTsKKyAgICBSZW5kZXJFbGVtZW50OjpTZXRMYXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSBmb3Ji
aWRTZXROZWVkc0xheW91dCgmcm9vdExheWVyLT5yZW5kZXJlcigpKTsKICNlbmRpZgogCiAgICAg
cm9vdExheWVyLT5wYWludChwLCByZWN0LCBtX3BhaW50QmVoYXZpb3IsIGVsdFJlbmRlcmVyKTsK
QEAgLTM4MDEsNyArMzc5NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RQYWdlSGVpZ2h0RGVw
cmVjYXRlZChmbG9hdCAqbmV3Qm90dG9tLCBmbG9hdCBvbGRUb3AsIGZsb2F0CiAgICAgcmVuZGVy
Vmlldy0+c2V0UHJpbnRSZWN0KEludFJlY3QoKSk7CiB9CiAKLUludFJlY3QgRnJhbWVWaWV3Ojpj
b252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IElu
dFJlY3QmIHJlbmRlcmVyUmVjdCkgY29uc3QKK0ludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJv
bVJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRSZWN0JiBy
ZW5kZXJlclJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZs
b2F0UmVjdChyZW5kZXJlclJlY3QpKS5ib3VuZGluZ0JveCgpKSk7CiAKQEAgLTM4MTIsNyArMzgw
Niw3IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFJlCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLUlu
dFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCkgY29uc3QKK0ludFJlY3QgRnJhbWVWaWV3
Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
SW50UmVjdCYgdmlld1JlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0ID0gdmlld1JlY3Q7
CiAgICAgCkBAIC0zODI2LDcgKzM4MjAsNyBAQCBJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVydFRv
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UmVjdAogICAg
IHJldHVybiByZWN0OwogfQogCi1JbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHJlbmRlcmVy
UG9pbnQpIGNvbnN0CitJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFBvaW50JiByZW5kZXJlclBvaW50
KSBjb25zdAogewogICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBvaW50KHJlbmRlcmVy
LT5sb2NhbFRvQWJzb2x1dGUocmVuZGVyZXJQb2ludCwgVXNlVHJhbnNmb3JtcykpOwogCkBAIC0z
ODM2LDcgKzM4MzAsNyBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UAogICAgIHJldHVybiBwb2lu
dDsKIH0KIAotSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRQb2ludCYgdmlld1BvaW50KSBjb25zdAorSW50
UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHZpZXdQb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2lu
dCBwb2ludCA9IHZpZXdQb2ludDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggODZjNThj
ZGY5N2YyMzUzNTMwOTI3MDM4OGFiMmIwN2Q5ZGE2MWY1MC4uN2MzMTgyNGUwZDk4MzQ3YmZhM2I0
NDI5YWVkZWNhZjgzYTYxYzdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00OSw2ICs0
OSw3IEBAIGNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVy
Qm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0Owog
Y2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CkBAIC0xMTEsNyArMTEyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNJbkxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5MYXlv
dXQ7IH0KIAogICAgIFJlbmRlck9iamVjdCogbGF5b3V0Um9vdChib29sIG9ubHlEdXJpbmdMYXlv
dXQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdm9pZCBjbGVhckxheW91dFJvb3QoKSB7IG1fbGF5b3V0
Um9vdCA9IDA7IH0KKyAgICB2b2lkIGNsZWFyTGF5b3V0Um9vdCgpIHsgbV9sYXlvdXRSb290ID0g
bnVsbHB0cjsgfQogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
Q291bnQ7IH0KIAogICAgIGJvb2wgbmVlZHNMYXlvdXQoKSBjb25zdDsKQEAgLTIxNywxNSArMjE4
LDE1IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcmxhcHBlZEluY2x1ZGluZ0FuY2VzdG9ycygp
IGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGVudElzT3BhcXVlKGJvb2wpOwogCi0gICAgdm9pZCBh
ZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJPYmplY3QqKTsKLSAgICB2b2lkIHJlbW92ZVNsb3dS
ZXBhaW50T2JqZWN0KFJlbmRlck9iamVjdCopOwotICAgIGJvb2wgaGFzU2xvd1JlcGFpbnRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvKSBjb25zdCB7IHJldHVybiBtX3Nsb3dSZXBhaW50T2JqZWN0cyAm
JiBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+Y29udGFpbnMobyk7IH0KKyAgICB2b2lkIGFkZFNsb3dS
ZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50
T2JqZWN0KFJlbmRlckVsZW1lbnQqKTsKKyAgICBib29sIGhhc1Nsb3dSZXBhaW50T2JqZWN0KFJl
bmRlckVsZW1lbnQqIG8pIGNvbnN0IHsgcmV0dXJuIG1fc2xvd1JlcGFpbnRPYmplY3RzICYmIG1f
c2xvd1JlcGFpbnRPYmplY3RzLT5jb250YWlucyhvKTsgfQogICAgIGJvb2wgaGFzU2xvd1JlcGFp
bnRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9zbG93UmVwYWludE9iamVjdHMgJiYgbV9zbG93
UmVwYWludE9iamVjdHMtPnNpemUoKTsgfQogCiAgICAgLy8gSW5jbHVkZXMgZml4ZWQtIGFuZCBz
dGlja3ktcG9zaXRpb24gb2JqZWN0cy4KLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVuZGVyT2JqZWN0
Kj4gVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldDsKLSAgICB2b2lkIGFkZFZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCByZW1vdmVWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0KFJlbmRlck9iamVjdCopOworICAgIHR5cGVkZWYgSGFzaFNldDxSZW5k
ZXJFbGVtZW50Kj4gVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldDsKKyAgICB2b2lkIGFkZFZp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCopOworICAgIHZvaWQgcmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJFbGVtZW50Kik7CiAgICAgY29uc3QgVmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdFNldCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLmdldCgpOyB9CiAgICAg
Ym9vbCBoYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgJiYgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
c2l6ZSgpID4gMDsgfQogCkBAIC0zMzEsMTAgKzMzMiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
Y3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBN
ZXRob2RzIHRvIGNvbnZlcnQgcG9pbnRzIGFuZCByZWN0cyBiZXR3ZWVuIHRoZSBjb29yZGluYXRl
IHNwYWNlIG9mIHRoZSByZW5kZXJlciwgYW5kIHRoaXMgdmlldy4KLSAgICBJbnRSZWN0IGNvbnZl
cnRGcm9tUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIEludFJlY3QgY29udmVydFRvUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29u
c3QgSW50UmVjdCYpIGNvbnN0OwotICAgIEludFBvaW50IGNvbnZlcnRGcm9tUmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICBJbnRQb2ludCBj
b252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0OworICAgIEludFJlY3QgY29udmVydEZyb21SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50
KiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIEludFJlY3QgY29udmVydFRvUmVuZGVyZXIo
Y29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBJbnRQb2lu
dCBjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0OworICAgIEludFBvaW50IGNvbnZlcnRUb1JlbmRlcmVyKGNvbnN0IFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0ZyYW1lVmlld1Nj
cm9sbENvcm5lcihSZW5kZXJTY3JvbGxiYXJQYXJ0KiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNjcm9sbENvcm5lcjsgfQogCkBAIC00NTksNyArNDYwLDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkVXBkYXRlRml4ZWRFbGVtZW50c0FmdGVyU2Ny
b2xsaW5nKCk7CiAKLSAgICB2b2lkIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlck9iamVj
dCosIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSk7CisgICAgdm9p
ZCBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVtZW50KiwgU2Nyb2xsYmFyTW9kZSYg
aE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlKTsKICAgICB2b2lkIGFwcGx5UGFnaW5hdGlvblRv
Vmlld3BvcnQoKTsKIAogICAgIHZvaWQgdXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jpem9u
dGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZmxvdyk7CkBAIC01NTEsOCArNTUyLDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4g
bV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZTsKICAgICBjb25zdCBSZWZQdHI8RnJhbWU+IG1fZnJh
bWU7CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gUmVuZGVyT2JqZWN0U2V0
OwotICAgIE93blB0cjxSZW5kZXJPYmplY3RTZXQ+IG1fc2xvd1JlcGFpbnRPYmplY3RzOworICAg
IE93blB0cjxIYXNoU2V0PFJlbmRlckVsZW1lbnQqPj4gbV9zbG93UmVwYWludE9iamVjdHM7CiAK
ICAgICBib29sIG1fbmVlZHNGdWxsUmVwYWludDsKICAgICAKQEAgLTU4OSw3ICs1ODksNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9vdmVyZmxvd1N0YXR1c0RpcnR5OwogICAgIGJvb2wgbV9ob3Jp
em9udGFsT3ZlcmZsb3c7CiAgICAgYm9vbCBtX3ZlcnRpY2FsT3ZlcmZsb3c7ICAgIAotICAgIFJl
bmRlck9iamVjdCogbV92aWV3cG9ydFJlbmRlcmVyOworICAgIFJlbmRlckVsZW1lbnQqIG1fdmll
d3BvcnRSZW5kZXJlcjsKIAogICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDlhNDhmODU4YmVmYzEyZWQ2NGVlOTAz
NjgzYWQ5ZWFhOGQzYzI1YzkuLjZiMWQ5Y2I2YzVmNDUyYWNjMDNmODZiM2Y1YmE1YzdhZTFlZDNm
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yOTEsNyArMjkx
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICB9CiB9CiAKLXZvaWQgUGFnZVNlcmlh
bGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJPYmpl
Y3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBQYWdlU2VyaWFsaXplcjo6
YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGlt
YWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8
fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggMTczMWQzOWUwYjAwNzM1ZjgwYzI0YjY0Mjlm
MTQxZjRhYjlmZjY2NS4uMjc4OThlYTZlYWVhNDJmMWNkM2NlNDg2NTQ5YmYyM2Q3ZjVlYmViYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFz
cyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBh
Z2U7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgU3R5
bGVQcm9wZXJ0eVNldDsKIGNsYXNzIFN0eWxlUnVsZTsKIApAQCAtNzcsNyArNzcsNyBAQCBwcml2
YXRlOgogICAgIC8vIEl0IGFsc28gYWRkcyBhbnkgcmVzb3VyY2VzIGluY2x1ZGVkIGluIHRoYXQg
c3R5bGVzaGVldCAoaW5jbHVkaW5nIGFueSBpbXBvcnRlZCBzdHlsZXNoZWV0cyBhbmQgdGhlaXIg
b3duIHJlc291cmNlcykuCiAgICAgdm9pZCBzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxl
U2hlZXQqLCBjb25zdCBVUkwmKTsKIAotICAgIHZvaWQgYWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNo
ZWRJbWFnZSosIFJlbmRlck9iamVjdCosIGNvbnN0IFVSTCYpOworICAgIHZvaWQgYWRkSW1hZ2VU
b1Jlc291cmNlcyhDYWNoZWRJbWFnZSosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBVUkwmKTsKICAg
ICB2b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiwgRG9jdW1lbnQqKTsKICAgICB2b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9yUnVsZShTdHls
ZVJ1bGUqLCBEb2N1bWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGJhNzBiNmI1YTQ4ZWJjZTI0NDA2NTQ0NTI3ZTIwMmI0
MDdlYWNlNmMuLjM3Y2NhZjU4MDk4ZjI2MGEyOWI4YjAxNGJmMTM2YjQxMzM1NTQyNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC03
MCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlU3RlcHNGdW5jdGlvbihpbnQg
bnVtU3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQsIGRvdWJsZSB0CiAgICAgcmV0dXJuIGZsb29yKG51
bVN0ZXBzICogdCkgLyBudW1TdGVwczsKIH0KIAotQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uQmFz
ZShjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24sIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENv
bXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0pCitBbmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNl
KGNvbnN0IEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENv
bXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0pCiAgICAgOiBtX2FuaW1TdGF0ZShBbmltYXRpb25T
dGF0ZU5ldykKICAgICAsIG1faXNBY2NlbGVyYXRlZChmYWxzZSkKICAgICAsIG1fdHJhbnNmb3Jt
RnVuY3Rpb25MaXN0VmFsaWQoZmFsc2UpCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBBbmltYXRp
b25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBw
YXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSByZW5kZXIgc28gd2UgY2FuIHN0
YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAg
ICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNo
YW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Y29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2go
bV9vYmplY3QtPmVsZW1lbnQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVCghcGF1c2VkKCkpOwogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIHdhaXRpbmcg
Zm9yIHRoZSBzdGFydCB0aW1lciB0byBmaXJlIGFuZCB3ZSBnb3QgYSBwYXVzZS4gQ2FuY2VsIHRo
ZSB0aW1lciwgcGF1c2UgYW5kIHdhaXQKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEFuaW1hdGlv
bkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBpbnB1dCwgZG91YmxlIHBh
cmFtKQogCiAgICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdXBkYXRlU3R5bGVJZk5lZWRlZCBz
byB3ZSBjYW4gc3RhcnQgdGhlIGFuaW1hdGlvbgogICAgICAgICAgICAgICAgIGlmIChtX29iamVj
dCkKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigp
LT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdl
VG9EaXNwYXRjaChtX29iamVjdC0+ZWxlbWVudCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgd2FpdGluZyBmb3IgYSBzdGFy
dCByZXNwb25zZS4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQuIFdoZW4gCiAgICAgICAg
ICAgICAgICAgLy8gd2UgdW5wYXVzZSwgd2Ugd2lsbCBhY3QgYXMgdGhvdWdoIHRoZSBzdGFydCB0
aW1lciBqdXN0IGZpcmVkCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1
cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgLy8gRmlyZSBvZmYgYW5vdGhlciBzdHlsZSBjaGFuZ2Ugc28gd2Ug
Y2FuIHNldCB0aGUgZmluYWwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+
YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+
bm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJv
bGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+ZWxlbWVudCgpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IFdlIGFyZSBwYXVzaW5nIHdoaWxlIHJ1bm5pbmcuIENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3
YWl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgKaW5k
ZXggMjZkNzMyYTc3YWQwYjdkOThkZWJhNTdjMGE3MGM3ZTI5NjMxMDdjZS4uMmJhMmQwNGQ0NzU2
OTIyOTJiOTliOGIzMGUzZDAwZDg5YTc0M2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBBbmltYXRp
b25Db250cm9sbGVyOwogY2xhc3MgQ29tcG9zaXRlQW5pbWF0aW9uOwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIE5vZGU7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50Owog
Y2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBUaW1pbmdGdW5jdGlvbjsKIApAQCAtNTMsMTAgKzUz
LDEwIEBAIGNsYXNzIEFuaW1hdGlvbkJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBbmltYXRpb25C
YXNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIENTU1Byb3BlcnR5QW5pbWF0aW9uOwogCiBwdWJsaWM6
Ci0gICAgQW5pbWF0aW9uQmFzZShjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24sIFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0pOworICAgIEFuaW1h
dGlvbkJhc2UoY29uc3QgQW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBSZW5kZXJFbGVtZW50KiwgQ29t
cG9zaXRlQW5pbWF0aW9uKik7CiAgICAgdmlydHVhbCB+QW5pbWF0aW9uQmFzZSgpIHsgfQogCi0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Cisg
ICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQog
ICAgIHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgIGVuZEFuaW1hdGlvbigpOwpAQCAtMTM0LDcg
KzEzNCw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRv
dWJsZSBvZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJTdHlsZSogLypjdXJyZW50U3R5bGUqLywgUmVuZGVyU3R5bGUqIC8qdGFyZ2V0U3R5bGUq
LywgUmVmUHRyPFJlbmRlclN0eWxlPiYgLyphbmltYXRlZFN0eWxlKi8pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVtZW50KiwgY29u
c3QgUmVuZGVyU3R5bGUqIC8qY3VycmVudFN0eWxlKi8sIFJlbmRlclN0eWxlKiAvKnRhcmdldFN0
eWxlKi8sIFJlZlB0cjxSZW5kZXJTdHlsZT4mIC8qYW5pbWF0ZWRTdHlsZSovKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldEFuaW1hdGVkU3R5bGUoUmVmUHRyPFJlbmRlclN0eWxlPiYgLyphbmlt
YXRlZFN0eWxlKi8pID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGaXJlRXZlbnRzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTIzNCw3ICsyMzQsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgZG91YmxlIG1fdG90YWxEdXJhdGlvbjsKICAgICBkb3VibGUgbV9uZXh0SXRlcmF0aW9uRHVy
YXRpb247CiAKLSAgICBSZW5kZXJPYmplY3QqIG1fb2JqZWN0OworICAgIFJlbmRlckVsZW1lbnQq
IG1fb2JqZWN0OwogCiAgICAgUmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CiAgICAgQ29t
cG9zaXRlQW5pbWF0aW9uKiBtX2NvbXBBbmltOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA2MmVhYmM3Mjk0YjNj
NDQ4M2JmYzE1ODQwMDRhOTJmNTMxMDk2MDRmLi41NzM0NGJjYTkxMGZjODVkMjc0Y2I3ZmJkYzRl
NWE5ZTRhYmUwMTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIEFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlOjp+QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUoKQogewogfQogCi1D
b21wb3NpdGVBbmltYXRpb24mIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjplbnN1cmVDb21w
b3NpdGVBbmltYXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0NvbXBvc2l0ZUFuaW1hdGlv
biYgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmVuc3VyZUNvbXBvc2l0ZUFuaW1hdGlvbihS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKLSAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYWRkKHJlbmRlcmVyLCBu
dWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5hZGQocmVu
ZGVyZXIsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IENvbXBvc2l0ZUFuaW1hdGlvbjo6Y3JlYXRlKHRoaXMpOwog
ICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotYm9vbCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6Y2xlYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2Jvb2wgQW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmNsZWFyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQog
ewogICAgIC8vIFJldHVybiBmYWxzZSBpZiB3ZSBkaWRuJ3QgZG8gYW55dGhpbmcgT1Igd2UgYXJl
IHN1c3BlbmRlZCAoc28gd2UgZG9uJ3QgdHJ5IHRvCiAgICAgLy8gZG8gYSBzZXROZWVkc1N0eWxl
UmVjYWxjKCkgd2hlbiBzdXNwZW5kZWQpLgpAQCAtOTEsMjIgKzkxLDIxIEBAIGRvdWJsZSBBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxT
ZXRDaGFuZ2VkLyoKICAgICBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UgPSAtMTsKICAgICBib29s
IGNhbGxlZFNldENoYW5nZWQgPSBmYWxzZTsKIAotICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1h
cDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5l
bmQoKTsKLSAgICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsg
KytpdCkgewotICAgICAgICBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltID0gaXQtPnZhbHVl
LmdldCgpOwotICAgICAgICBpZiAoIWNvbXBBbmltLT5pc1N1c3BlbmRlZCgpICYmIGNvbXBBbmlt
LT5oYXNBbmltYXRpb25zKCkpIHsKLSAgICAgICAgICAgIGRvdWJsZSB0ID0gY29tcEFuaW0tPnRp
bWVUb05leHRTZXJ2aWNlKCk7CisgICAgYXV0byBlbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMu
ZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBDb21wb3NpdGVBbmltYXRpb24mIGFuaW1hdGlv
biA9ICppdC0+dmFsdWU7CisgICAgICAgIGlmICghYW5pbWF0aW9uLmlzU3VzcGVuZGVkKCkgJiYg
YW5pbWF0aW9uLmhhc0FuaW1hdGlvbnMoKSkgeworICAgICAgICAgICAgZG91YmxlIHQgPSBhbmlt
YXRpb24udGltZVRvTmV4dFNlcnZpY2UoKTsKICAgICAgICAgICAgIGlmICh0ICE9IC0xICYmICh0
IDwgdGltZVRvTmV4dFNlcnZpY2UgfHwgdGltZVRvTmV4dFNlcnZpY2UgPT0gLTEpKQogICAgICAg
ICAgICAgICAgIHRpbWVUb05leHRTZXJ2aWNlID0gdDsKICAgICAgICAgICAgIGlmICghdGltZVRv
TmV4dFNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbFNldENoYW5nZWQgPT0gQ2Fs
bFNldENoYW5nZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGl0LT5rZXkt
Pm5vZGUoKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlIHx8ICFub2RlLT5kb2N1
bWVudCgpLmluUGFnZUNhY2hlKCkpOwotICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXROZWVk
c1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKLSAgICAgICAgICAgICAgICAgICAg
Y2FsbGVkU2V0Q2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoY2FsbFNldENoYW5nZWQgIT0gQ2FsbFNldENo
YW5nZWQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBpdC0+a2V5LT5lbGVtZW50KCk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGVsZW1lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudC0+ZG9jdW1lbnQoKS5p
blBhZ2VDYWNoZSgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVj
YWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICBjYWxsZWRTZXRDaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTExNyw3ICsx
MTYsNyBAQCBkb3VibGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlv
bnMoU2V0Q2hhbmdlZCBjYWxsU2V0Q2hhbmdlZC8qCiAgICAgcmV0dXJuIHRpbWVUb05leHRTZXJ2
aWNlOwogfQogCi12b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRp
b25UaW1lckZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIEFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25UaW1lckZvclJlbmRlcmVyKFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGRvdWJsZSB0aW1lVG9OZXh0U2VydmljZSA9IDA7
CiAKQEAgLTI0MywyMiArMjQyLDE2IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6
OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByCiAgICAgZmly
ZUV2ZW50c0FuZFVwZGF0ZVN0eWxlKCk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0Citib29s
IEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjppc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGlz
UnVubmluZ05vdykgY29uc3QKIHsKICAgICBjb25zdCBDb21wb3NpdGVBbmltYXRpb24qIGFuaW1h
dGlvbiA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5nZXQocmVuZGVyZXIpOwotICAgIGlmICghYW5p
bWF0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gYW5pbWF0aW9uLT5p
c0FuaW1hdGluZ1Byb3BlcnR5KHByb3BlcnR5LCBmYWxzZSwgaXNSdW5uaW5nTm93KTsKKyAgICBy
ZXR1cm4gYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNBbmltYXRpbmdQcm9wZXJ0eShwcm9wZXJ0
eSwgZmFsc2UsIGlzUnVubmluZ05vdyk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGlzUnVubmluZ05vdykg
Y29uc3QKK2Jvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmlzUnVubmluZ0FjY2VsZXJh
dGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0CiB7CiAgICAgY29uc3QgQ29t
cG9zaXRlQW5pbWF0aW9uKiBhbmltYXRpb24gPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZ2V0KHJl
bmRlcmVyKTsKLSAgICBpZiAoIWFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIGFuaW1hdGlvbi0+aXNBbmltYXRpbmdQcm9wZXJ0eShwcm9wZXJ0eSwgdHJ1ZSwg
aXNSdW5uaW5nTm93KTsKKyAgICByZXR1cm4gYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNBbmlt
YXRpbmdQcm9wZXJ0eShwcm9wZXJ0eSwgdHJ1ZSwgaXNSdW5uaW5nTm93KTsKIH0KIAogdm9pZCBB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnMoKQpAQCAtMjkzLDEz
ICsyODYsOSBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzdXNwZW5kQW5pbWF0
aW9uc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudAogewogICAgIHNldEJlZ2luQW5pbWF0
aW9uVXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90U2V0KTsKIAotICAgIFJl
bmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1f
Y29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsKLSAgICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlv
bk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsg
aXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gaXQtPmtleTsKLSAgICAgICAgaWYgKCZyZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1
bWVudCkgewotICAgICAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52
YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgIGNvbXBBbmltLT5zdXNwZW5kQW5pbWF0aW9ucygpOwot
ICAgICAgICB9CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmJlZ2lu
KCksIGVuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgIGlmICgmaXQtPmtleS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkKKyAgICAgICAg
ICAgIGl0LT52YWx1ZS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKICAgICB9CiAKICAgICB1cGRhdGVB
bmltYXRpb25UaW1lcigpOwpAQCAtMzA5LDEzICsyOTgsOSBAQCB2b2lkIEFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlOjpyZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIHNldEJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25V
cGRhdGVUaW1lTm90U2V0KTsKIAotICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3Rf
aXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsKLSAg
ICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewot
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXQtPmtleTsKLSAgICAgICAgaWYgKCZy
ZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkgewotICAgICAgICAgICAgQ29tcG9zaXRl
QW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgIGNvbXBB
bmltLT5yZXN1bWVBbmltYXRpb25zKCk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8gaXQgPSBt
X2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25z
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCZpdC0+a2V5LT5kb2N1bWVu
dCgpID09IGRvY3VtZW50KQorICAgICAgICAgICAgaXQtPnZhbHVlLT5yZXN1bWVBbmltYXRpb25z
KCk7CiAgICAgfQogCiAgICAgdXBkYXRlQW5pbWF0aW9uVGltZXIoKTsKQEAgLTMzMiwxNCArMzE3
LDE0IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnNldEFsbG93c05ld0FuaW1h
dGlvbnNXaGlsZVN1c3BlbmRlZChib29sIGFsbG93CiAgICAgbV9hbGxvd3NOZXdBbmltYXRpb25z
V2hpbGVTdXNwZW5kZWQgPSBhbGxvd2VkOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGRvdWJsZSB0KQorYm9vbCBBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpCiB7CiAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ29tcG9zaXRlQW5pbWF0aW9uJiBjb21wb3Np
dGVBbmltYXRpb24gPSBlbnN1cmVDb21wb3NpdGVBbmltYXRpb24ocmVuZGVyZXIpOwogICAgIGlm
IChjb21wb3NpdGVBbmltYXRpb24ucGF1c2VBbmltYXRpb25BdFRpbWUobmFtZSwgdCkpIHsKLSAg
ICAgICAgcmVuZGVyZXItPm5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHls
ZUNoYW5nZSk7CisgICAgICAgIHJlbmRlcmVyLT5lbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNh
bGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVk
ZWREaXNwYXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM0NywxNCAr
MzMyLDE0IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9u
QXRUaW1lKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQp
Citib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUo
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0
KQogewogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENv
bXBvc2l0ZUFuaW1hdGlvbiYgY29tcG9zaXRlQW5pbWF0aW9uID0gZW5zdXJlQ29tcG9zaXRlQW5p
bWF0aW9uKHJlbmRlcmVyKTsKICAgICBpZiAoY29tcG9zaXRlQW5pbWF0aW9uLnBhdXNlVHJhbnNp
dGlvbkF0VGltZShjc3NQcm9wZXJ0eUlEKHByb3BlcnR5KSwgdCkpIHsKLSAgICAgICAgcmVuZGVy
ZXItPm5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cisg
ICAgICAgIHJlbmRlcmVyLT5lbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGlj
U3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVy
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM4Miw3ICszNjcsNyBAQCB2b2lk
IEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZWNlaXZlZFN0YXJ0VGltZVJlc3BvbnNlKGRv
dWJsZSB0aW1lKQogICAgIHN0YXJ0VGltZVJlc3BvbnNlKHRpbWUpOwogfQogCi1QYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRTdHls
ZUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRl
cmVyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNDAyLDE0ICszODcsMTEgQEAgdW5zaWduZWQgQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGU6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1l
bnQKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgCi0gICAgUmVuZGVyT2JqZWN0QW5p
bWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9jb21wb3NpdGVBbmlt
YXRpb25zLmVuZCgpOwotICAgIGZvciAoUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRp
b25zRW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+a2V5
OwotICAgICAgICBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltID0gaXQtPnZhbHVlLmdldCgp
OwotICAgICAgICBpZiAoJnJlbmRlcmVyLT5kb2N1bWVudCgpID09IGRvY3VtZW50KQotICAgICAg
ICAgICAgY291bnQgKz0gY29tcEFuaW0tPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOworICAg
IGZvciAoYXV0byBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpLCBlbmQgPSBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAo
Jml0LT5rZXktPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpCisgICAgICAgICAgICBjb3VudCArPSBp
dC0+dmFsdWUubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCk7CiAgICAgfQotICAgIAorCiAgICAg
cmV0dXJuIGNvdW50OwogfQogCkBAIC01MDAsMjAgKzQ4MiwyMCBAQCBBbmltYXRpb25Db250cm9s
bGVyOjp+QW5pbWF0aW9uQ29udHJvbGxlcigpCiB7CiB9CiAKLXZvaWQgQW5pbWF0aW9uQ29udHJv
bGxlcjo6Y2FuY2VsQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBBbmlt
YXRpb25Db250cm9sbGVyOjpjYW5jZWxBbmltYXRpb25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KQogewogICAgIGlmICghbV9kYXRhLT5oYXNBbmltYXRpb25zKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX2RhdGEtPmNsZWFyKHJlbmRlcmVyKSkgewotICAgICAgICBOb2RlKiBub2Rl
ID0gcmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgQVNTRVJUKCFub2RlIHx8ICFub2RlLT5kb2N1
bWVudCgpLmluUGFnZUNhY2hlKCkpOwotICAgICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIG5v
ZGUtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgICAgICBF
bGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXItPmVsZW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKCFl
bGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpOworICAgICAgICBp
ZiAoZWxlbWVudCkKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoU3lu
dGhldGljU3R5bGVDaGFuZ2UpOwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmlt
YXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpCiB7CiAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYg
d2UncmUgaW4gdGhlIGNhY2hlCiAgICAgaWYgKHJlbmRlcmVyLT5kb2N1bWVudCgpLmluUGFnZUNh
Y2hlKCkpCkBAIC01MzQsNyArNTE2LDcgQEAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0
aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmQKICAgICAv
LyBhIG5ldyBzdHlsZS4KIAogICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgYW5vbnltb3VzIHBzZXVk
byBlbGVtZW50cyBsaWtlIDpmaXJzdC1saW5lIG9yIDpmaXJzdC1sZXR0ZXIuCi0gICAgQVNTRVJU
KHJlbmRlcmVyLT5ub2RlKCkpOworICAgIEFTU0VSVChyZW5kZXJlci0+ZWxlbWVudCgpKTsKIAog
ICAgIENvbXBvc2l0ZUFuaW1hdGlvbiYgcmVuZGVyZXJBbmltYXRpb25zID0gbV9kYXRhLT5lbnN1
cmVDb21wb3NpdGVBbmltYXRpb24ocmVuZGVyZXIpOwogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4g
YmxlbmRlZFN0eWxlID0gcmVuZGVyZXJBbmltYXRpb25zLmFuaW1hdGUocmVuZGVyZXIsIG9sZFN0
eWxlLCBuZXdTdHlsZSk7CkBAIC01NTYsMTcgKzUzOCwxNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlck9iamVjdCog
cmVuZAogICAgIHJldHVybiBibGVuZGVkU3R5bGUucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVu
ZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFu
aW1hdGlvbkNvbnRyb2xsZXI6OmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJFbGVt
ZW50KiByZW5kZXJlcikKIHsKICAgICByZXR1cm4gbV9kYXRhLT5nZXRBbmltYXRlZFN0eWxlRm9y
UmVuZGVyZXIocmVuZGVyZXIpOwogfQogCi12b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlm
eUFuaW1hdGlvblN0YXJ0ZWQoUmVuZGVyT2JqZWN0KiwgZG91YmxlIHN0YXJ0VGltZSkKK3ZvaWQg
QW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3RhcnRlZChSZW5kZXJFbGVtZW50
KiwgZG91YmxlIHN0YXJ0VGltZSkKIHsKICAgICBtX2RhdGEtPnJlY2VpdmVkU3RhcnRUaW1lUmVz
cG9uc2Uoc3RhcnRUaW1lKTsKIH0KIAotYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjpwYXVzZUFu
aW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUsIGRvdWJsZSB0KQorYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjpwYXVzZUFuaW1hdGlv
bkF0VGltZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBkb3VibGUgdCkKIHsKICAgICByZXR1cm4gbV9kYXRhLT5wYXVzZUFuaW1hdGlvbkF0VGltZShy
ZW5kZXJlciwgbmFtZSwgdCk7CiB9CkBAIC01NzYsMTcgKzU1OCwxNyBAQCB1bnNpZ25lZCBBbmlt
YXRpb25Db250cm9sbGVyOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoRG9jdW1lbnQqIGRvY3Vt
ZW50KSBjb25zdAogICAgIHJldHVybiBtX2RhdGEtPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhk
b2N1bWVudCk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9u
QXRUaW1lKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRv
dWJsZSB0KQorYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUo
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0
KQogewogICAgIHJldHVybiBtX2RhdGEtPnBhdXNlVHJhbnNpdGlvbkF0VGltZShyZW5kZXJlciwg
cHJvcGVydHksIHQpOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmlzUnVubmluZ0Fu
aW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0Citib29sIEFuaW1hdGlvbkNvbnRyb2xs
ZXI6OmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdAogewogICAg
IHJldHVybiBtX2RhdGEtPmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIocmVuZGVyZXIsIHBy
b3BlcnR5LCBpc1J1bm5pbmdOb3cpOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6Omlz
UnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGlzUnVubmluZ05vdykgY29uc3QKK2Jv
b2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJl
bmRlcmVyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBi
b29sIGlzUnVubmluZ05vdykgY29uc3QKIHsKICAgICByZXR1cm4gbV9kYXRhLT5pc1J1bm5pbmdB
Y2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIocmVuZGVyZXIsIHByb3BlcnR5LCBpc1J1bm5p
bmdOb3cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0
aW9uQ29udHJvbGxlci5oCmluZGV4IGNjNjI5MWUzZTZhMTZhNTRkMzQ1ZjM1MmYyYjQ2YzEyMjY4
NjMxN2YuLjYwYzIwMzJhZmFiNTE0MjAxOTAzYzIwOTdjODRjMDQ1ZDBjYTg2NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmgK
QEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3Mg
RnJhbWU7CiBjbGFzcyBOb2RlOwotY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxl
bWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBBbmltYXRpb25Db250cm9sbGVyIHsK
QEAgLTQ5LDE5ICs0OSwxOSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgQW5pbWF0aW9uQ29udHJv
bGxlcihGcmFtZSYpOwogICAgIH5BbmltYXRpb25Db250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGNh
bmNlbEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0Kik7Ci0gICAgUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gdXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSogbmV3U3R5bGUp
OwotICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJl
cihSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyRWxlbWVu
dCopOworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVy
RWxlbWVudCosIFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7CisgICAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQqKTsKIAogICAg
IC8vIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gYWNjZWxlcmF0ZWQgYW5pbWF0aW9uIG9yIHRyYW5z
aXRpb24gaGFzIGFjdHVhbGx5IHN0YXJ0ZWQgdG8gYW5pbWF0ZS4KLSAgICB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoUmVuZGVyT2JqZWN0KiwgZG91YmxlIHN0YXJ0VGltZSk7CisgICAgdm9p
ZCBub3RpZnlBbmltYXRpb25TdGFydGVkKFJlbmRlckVsZW1lbnQqLCBkb3VibGUgc3RhcnRUaW1l
KTsKIAotICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVz
dGluZwotICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlck9iamVjdCosIGNvbnN0
IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0
aW5nCisgICAgYm9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJFbGVtZW50KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVz
dGluZworICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25z
dCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVz
dGluZwogICAgIHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhEb2N1bWVudCopIGNv
bnN0OyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRlc3RpbmcKICAgICAKLSAgICBib29sIGlzUnVu
bmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiwgQ1NTUHJvcGVydHlJRCwgYm9v
bCBpc1J1bm5pbmdOb3cgPSB0cnVlKSBjb25zdDsKLSAgICBib29sIGlzUnVubmluZ0FjY2VsZXJh
dGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmplY3QqLCBDU1NQcm9wZXJ0eUlELCBib29s
IGlzUnVubmluZ05vdyA9IHRydWUpIGNvbnN0OworICAgIGJvb2wgaXNSdW5uaW5nQW5pbWF0aW9u
T25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiwgQ1NTUHJvcGVydHlJRCwgYm9vbCBpc1J1bm5pbmdO
b3cgPSB0cnVlKSBjb25zdDsKKyAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9u
T25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiwgQ1NTUHJvcGVydHlJRCwgYm9vbCBpc1J1bm5pbmdO
b3cgPSB0cnVlKSBjb25zdDsKIAogICAgIGJvb2wgaXNTdXNwZW5kZWQoKSBjb25zdDsKICAgICB2
b2lkIHN1c3BlbmRBbmltYXRpb25zKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaAppbmRleCAyNjliZmRk
MGY1NjA0MzAzYzk3ZDVjMzc3ZjU0YTgwZjkyY2ExOTE4Li45NWYxNjQyYzNjN2JiNmJjMWViYjcw
ODgxMzAyNzIxYTZiYTIwYzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTQ3LDcgKzQ3LDcg
QEAgY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBO
b2RlOwotY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJl
bmRlclN0eWxlOwogCiBlbnVtIFNldENoYW5nZWQgewpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6
CiAgICAgZG91YmxlIHVwZGF0ZUFuaW1hdGlvbnMoU2V0Q2hhbmdlZCBjYWxsU2V0Q2hhbmdlZCA9
IERvTm90Q2FsbFNldENoYW5nZWQpOwogICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uVGltZXIoU2V0
Q2hhbmdlZCBjYWxsU2V0Q2hhbmdlZCA9IERvTm90Q2FsbFNldENoYW5nZWQpOwogCi0gICAgQ29t
cG9zaXRlQW5pbWF0aW9uJiBlbnN1cmVDb21wb3NpdGVBbmltYXRpb24oUmVuZGVyT2JqZWN0Kik7
Ci0gICAgYm9vbCBjbGVhcihSZW5kZXJPYmplY3QqKTsKKyAgICBDb21wb3NpdGVBbmltYXRpb24m
IGVuc3VyZUNvbXBvc2l0ZUFuaW1hdGlvbihSZW5kZXJFbGVtZW50Kik7CisgICAgYm9vbCBjbGVh
cihSZW5kZXJFbGVtZW50Kik7CiAKICAgICB2b2lkIHVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRj
aGVyRmlyZWQoVGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+Kik7CiAgICAgdm9pZCBz
dGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVyKCk7CkBAIC04NiwxNCArODYsMTQgQEAg
cHVibGljOgogICAgIHZvaWQgcmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KERvY3VtZW50Kik7
CiAgICAgdm9pZCBzdGFydEFuaW1hdGlvbnNJZk5vdFN1c3BlbmRlZChEb2N1bWVudCopOwogCi0g
ICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCosIENTU1By
b3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdDsKLSAgICBib29sIGlzUnVubmluZ0Fj
Y2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmplY3QqLCBDU1NQcm9wZXJ0eUlE
LCBib29sIGlzUnVubmluZ05vdykgY29uc3Q7CisgICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25P
blJlbmRlcmVyKFJlbmRlckVsZW1lbnQqLCBDU1NQcm9wZXJ0eUlELCBib29sIGlzUnVubmluZ05v
dykgY29uc3Q7CisgICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVy
ZXIoUmVuZGVyRWxlbWVudCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5nTm93KSBjb25z
dDsKIAotICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBkb3VibGUgdCk7Ci0gICAgYm9vbCBwYXVzZVRyYW5zaXRpb25B
dFRpbWUoUmVuZGVyT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQpOwor
ICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCosIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgZG91YmxlIHQpOworICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9uQXRUaW1l
KFJlbmRlckVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUgdCk7CiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKERvY3VtZW50KikgY29uc3Q7CiAKLSAg
ICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcik7CisgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gZ2V0QW5p
bWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKTsKIAogICAgIGRv
dWJsZSBiZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoKTsKICAgICB2b2lkIHNldEJlZ2luQW5pbWF0
aW9uVXBkYXRlVGltZShkb3VibGUgdCkgeyBtX2JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZSA9IHQ7
IH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFuaW1hdGlvbldpbGxC
ZVJlbW92ZWQoQW5pbWF0aW9uQmFzZSopOwogCi0gICAgdm9pZCB1cGRhdGVBbmltYXRpb25UaW1l
ckZvclJlbmRlcmVyKFJlbmRlck9iamVjdCopOworICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uVGlt
ZXJGb3JSZW5kZXJlcihSZW5kZXJFbGVtZW50Kik7CiAKICAgICBib29sIGFsbG93c05ld0FuaW1h
dGlvbnNXaGlsZVN1c3BlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzTmV3QW5pbWF0aW9u
c1doaWxlU3VzcGVuZGVkOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hpbGVT
dXNwZW5kZWQoYm9vbCk7CkBAIC0xMjAsOSArMTIwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZp
cmVFdmVudHNBbmRVcGRhdGVTdHlsZSgpOwogICAgIHZvaWQgc3RhcnRUaW1lUmVzcG9uc2UoZG91
YmxlIHQpOwogCi0gICAgdHlwZWRlZiBIYXNoTWFwPFJlbmRlck9iamVjdCosIFJlZlB0cjxDb21w
b3NpdGVBbmltYXRpb24+ID4gUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOwotCi0gICAgUmVuZGVy
T2JqZWN0QW5pbWF0aW9uTWFwIG1fY29tcG9zaXRlQW5pbWF0aW9uczsKKyAgICBIYXNoTWFwPFJl
bmRlckVsZW1lbnQqLCBSZWZQdHI8Q29tcG9zaXRlQW5pbWF0aW9uPj4gbV9jb21wb3NpdGVBbmlt
YXRpb25zOwogICAgIFRpbWVyPEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPiBtX2FuaW1hdGlv
blRpbWVyOwogICAgIFRpbWVyPEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPiBtX3VwZGF0ZVN0
eWxlSWZOZWVkZWREaXNwYXRjaGVyOwogICAgIEZyYW1lJiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmlu
ZGV4IDU3NTA0ZTY1ZDYyNGM4ZTMwMjA3ZTNjOTY1NTAyZTg0MmYxYjcxZTIuLjI3YjY0ODM3MGJh
ZjQ0ZTkwNzFiNWVlMTYwODBhNDdjZjA1NjI2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTI4MiwxMSAr
MjgyLDggQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFN0eWxlSW1hZ2U+IGNyb3NzZmFkZUJs
ZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBTdHlsZUMKICAgICBpZiAocHJvZ3Jlc3MgPT0gMSkK
ICAgICAgICAgcmV0dXJuIHRvU3R5bGVJbWFnZTsKIAotICAgIENhY2hlZEltYWdlKiBmcm9tQ2Fj
aGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KGZyb21TdHlsZUltYWdlLT5kYXRh
KCkpOwotICAgIENhY2hlZEltYWdlKiB0b0NhY2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVk
SW1hZ2UqPih0b1N0eWxlSW1hZ2UtPmRhdGEoKSk7Ci0KLSAgICBSZWZQdHI8Q1NTSW1hZ2VWYWx1
ZT4gZnJvbUltYWdlVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUoZnJvbUNhY2hlZEltYWdl
LT51cmwoKSwgZnJvbVN0eWxlSW1hZ2UpOwotICAgIFJlZlB0cjxDU1NJbWFnZVZhbHVlPiB0b0lt
YWdlVmFsdWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUodG9DYWNoZWRJbWFnZS0+dXJsKCksIHRv
U3R5bGVJbWFnZSk7CisgICAgUmVmUHRyPENTU0ltYWdlVmFsdWU+IGZyb21JbWFnZVZhbHVlID0g
Q1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGZyb21TdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT51cmwo
KSwgZnJvbVN0eWxlSW1hZ2UpOworICAgIFJlZlB0cjxDU1NJbWFnZVZhbHVlPiB0b0ltYWdlVmFs
dWUgPSBDU1NJbWFnZVZhbHVlOjpjcmVhdGUodG9TdHlsZUltYWdlLT5jYWNoZWRJbWFnZSgpLT51
cmwoKSwgdG9TdHlsZUltYWdlKTsKICAgICBSZWZQdHI8Q1NTQ3Jvc3NmYWRlVmFsdWU+IGNyb3Nz
ZmFkZVZhbHVlID0gQ1NTQ3Jvc3NmYWRlVmFsdWU6OmNyZWF0ZShmcm9tSW1hZ2VWYWx1ZSwgdG9J
bWFnZVZhbHVlKTsKIAogICAgIGNyb3NzZmFkZVZhbHVlLT5zZXRQZXJjZW50YWdlKENTU1ByaW1p
dGl2ZVZhbHVlOjpjcmVhdGUocHJvZ3Jlc3MsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVS
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5p
bWF0aW9uLmNwcAppbmRleCA5Y2JkMWM1MzcwY2EyMzYxNmIxMGIyYjkzMzdlMTllYWVjNWVjZjQx
Li41OGQyNzE5ZGM2ZmQzY2ZkNmVlNWU0YmI4MzI5MzMzNWRhMmQ5ODUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKQEAg
LTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJJbXBsaWNpdEFuaW1hdGlvbi5oIgogI2luY2x1ZGUg
IktleWZyYW1lQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgotI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtODAsNyArODAs
NyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6Y2xlYXJSZW5kZXJlcigpCiAgICAgfQogfQog
Ci12b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdl
dFN0eWxlKQordm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHls
ZSogdGFyZ2V0U3R5bGUpCiB7CiAgICAgLy8gSWYgY3VycmVudFN0eWxlIGlzIG51bGwgb3IgdGhl
cmUgYXJlIG5vIG9sZCBvciBuZXcgdHJhbnNpdGlvbnMsIGp1c3Qgc2tpcCBpdAogICAgIGlmICgh
Y3VycmVudFN0eWxlIHx8ICghdGFyZ2V0U3R5bGUtPnRyYW5zaXRpb25zKCkgJiYgbV90cmFuc2l0
aW9ucy5pc0VtcHR5KCkpKQpAQCAtMjAzLDcgKzIwMyw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0
aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHls
ZSoKICAgICAgICAgbV90cmFuc2l0aW9ucy5yZW1vdmUodG9CZVJlbW92ZWRbal0pOwogfQogCi12
b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0
YXJnZXRTdHlsZSkKK3ZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZUFuaW1h
dGlvbnMoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUs
IFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSkKIHsKICAgICAvLyBOb3RoaW5nIHRvIGRvIGlmIHdl
IGRvbid0IGhhdmUgYW55IGFuaW1hdGlvbnMsIGFuZCBkaWRuJ3QgaGF2ZSBhbnkgYmVmb3JlCiAg
ICAgaWYgKG1fa2V5ZnJhbWVBbmltYXRpb25zLmlzRW1wdHkoKSAmJiAhdGFyZ2V0U3R5bGUtPmhh
c0FuaW1hdGlvbnMoKSkKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1hdGlv
bjo6dXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRl
cgogICAgICAgICBtX2tleWZyYW1lQW5pbWF0aW9ucy5yZW1vdmUoYW5pbXNUb0JlUmVtb3ZlZFtq
XSk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlvbjo6YW5p
bWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBS
ZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDb21wb3Np
dGVBbmltYXRpb246OmFuaW1hdGUoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIFJlbmRlclN0eWxl
KiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSkKIHsKICAgICBSZWZQdHI8
UmVuZGVyU3R5bGU+IHJlc3VsdFN0eWxlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oCmluZGV4IDRmNDkxOTA3MGMzMjQ3YmIzODcw
ZDdjZmY5YTI1YjFjYjlkNmQ3ZjkuLjE1ZTkwNTM1NWI1OGVlZmRkY2U1ZDIyNTNmZWUxNTk1NTU3
YWI3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0
ZUFuaW1hdGlvbi5oCkBAIC0zOSwxMSArMzksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTsKIGNsYXNzIEFuaW1hdGlvbkNvbnRyb2xs
ZXI7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVu
ZGVyU3R5bGU7CiAKIC8vIEEgQ29tcG9zaXRlQW5pbWF0aW9uIHJlcHJlc2VudHMgYSBjb2xsZWN0
aW9uIG9mIGFuaW1hdGlvbnMgdGhhdCBhcmUgcnVubmluZwotLy8gb24gYSBzaW5nbGUgUmVuZGVy
T2JqZWN0LCBzdWNoIGFzIGEgbnVtYmVyIG9mIHByb3BlcnRpZXMgdHJhbnNpdGlvbmluZyBhdCBv
bmNlLgorLy8gb24gYSBzaW5nbGUgUmVuZGVyRWxlbWVudCwgc3VjaCBhcyBhIG51bWJlciBvZiBw
cm9wZXJ0aWVzIHRyYW5zaXRpb25pbmcgYXQgb25jZS4KIGNsYXNzIENvbXBvc2l0ZUFuaW1hdGlv
biA6IHB1YmxpYyBSZWZDb3VudGVkPENvbXBvc2l0ZUFuaW1hdGlvbj4gewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENvbXBvc2l0ZUFuaW1hdGlvbj4gY3JlYXRlKEFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlKiBhbmltYXRpb25Db250cm9sbGVyKQpAQCAtNTUsNyArNTUsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBjbGVhclJlbmRlcmVyKCk7CiAKLSAgICBQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBhbmltYXRlKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKiBjdXJyZW50
U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSk7CisgICAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gYW5pbWF0ZShSZW5kZXJFbGVtZW50KiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
UmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBn
ZXRBbmltYXRlZFN0eWxlKCkgY29uc3Q7CiAKICAgICBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2Uo
KSBjb25zdDsKQEAgLTgyLDggKzgyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBDb21wb3Np
dGVBbmltYXRpb24oQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUqKTsKIAotICAgIHZvaWQgdXBk
YXRlVHJhbnNpdGlvbnMoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
UmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKLSAgICB2b2lkIHVwZGF0ZUtleWZyYW1lQW5pbWF0
aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHls
ZSogdGFyZ2V0U3R5bGUpOworICAgIHZvaWQgdXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyRWxlbWVu
dCosIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSk7
CisgICAgdm9pZCB1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCosIFJlbmRl
clN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSk7CiAgICAgCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEltcGxpY2l0QW5pbWF0aW9uPiA+IENTU1By
b3BlcnR5VHJhbnNpdGlvbnNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBSZWZQdHI8S2V5ZnJhbWVBbmltYXRpb24+ID4gIEFuaW1hdGlvbk5hbWVNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAK
aW5kZXggMzY4YmM1ODdjY2MzYTM1OWYyNGY0MTVlOWFhNjBmYmFkYzMzMjEzNS4uZjM0NDY4ODQ2
NzJmODU4MzYzNTE1NmRiYzE2OTM0NjVlOTc2ZTk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcApAQCAtMzgsNyArMzgsNyBA
QAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltcGxpY2l0QW5pbWF0aW9uOjpJbXBsaWNpdEFu
aW1hdGlvbihjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24sIENTU1Byb3BlcnR5SUQgYW5pbWF0
aW5nUHJvcGVydHksIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENvbXBvc2l0ZUFuaW1hdGlvbiog
Y29tcEFuaW0sIFJlbmRlclN0eWxlKiBmcm9tU3R5bGUpCitJbXBsaWNpdEFuaW1hdGlvbjo6SW1w
bGljaXRBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBDU1NQcm9wZXJ0eUlE
IGFuaW1hdGluZ1Byb3BlcnR5LCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgQ29tcG9zaXRlQW5p
bWF0aW9uKiBjb21wQW5pbSwgUmVuZGVyU3R5bGUqIGZyb21TdHlsZSkKICAgICA6IEFuaW1hdGlv
bkJhc2UodHJhbnNpdGlvbiwgcmVuZGVyZXIsIGNvbXBBbmltKQogICAgICwgbV90cmFuc2l0aW9u
UHJvcGVydHkodHJhbnNpdGlvbi5wcm9wZXJ0eSgpKQogICAgICwgbV9hbmltYXRpbmdQcm9wZXJ0
eShhbmltYXRpbmdQcm9wZXJ0eSkKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBJbXBsaWNpdEFuaW1h
dGlvbjo6c2hvdWxkU2VuZEV2ZW50Rm9yTGlzdGVuZXIoRG9jdW1lbnQ6Okxpc3RlbmVyVHlwZSBp
bkxpc3QKICAgICByZXR1cm4gbV9vYmplY3QtPmRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlKGlu
TGlzdGVuZXJUeXBlKTsKIH0KIAotdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21w
b3NpdGVBbmltYXRpb24qLCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJTdHlsZSosIFJlbmRl
clN0eWxlKiB0YXJnZXRTdHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkK
K3ZvaWQgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVu
ZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxl
LCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKQogewogICAgIC8vIElmIHdlIGdl
dCB0aGlzIGZhciBhbmQgdGhlIGFuaW1hdGlvbiBpcyBkb25lLCBpdCBtZWFucyB3ZSBhcmUgY2xl
YW5pbmcgdXAgYSBqdXN0IGZpbmlzaGVkIGFuaW1hdGlvbi4KICAgICAvLyBTbyBqdXN0IHJldHVy
bi4gRXZlcnl0aGluZyBpcyBhbHJlYWR5IGFsbCBjbGVhbmVkIHVwLgpAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgSW1wbGljaXRBbmltYXRpb246OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zm
c2V0KQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0
eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29i
amVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+ZWxl
bWVudCgpKTsKIH0KIAogdm9pZCBJbXBsaWNpdEFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKQEAg
LTE2MCw5ICsxNjAsNyBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjpzZW5kVHJhbnNpdGlvbkV2
ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBkb3VibAogICAgICAgICAgICAgU3Ry
aW5nIHByb3BlcnR5TmFtZSA9IGdldFByb3BlcnR5TmFtZVN0cmluZyhtX2FuaW1hdGluZ1Byb3Bl
cnR5KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBldmVu
dAotICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSAwOwotICAgICAgICAgICAg
aWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgp
KQotICAgICAgICAgICAgICAgIGVsZW1lbnQgPSB0b0VsZW1lbnQobV9vYmplY3QtPm5vZGUoKSk7
CisgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IG1fb2JqZWN0LT5lbGVtZW50
KCk7CiAKICAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudCB8fCAhZWxlbWVudC0+ZG9jdW1lbnQo
KS5pblBhZ2VDYWNoZSgpKTsKICAgICAgICAgICAgIGlmICghZWxlbWVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oCmluZGV4IGVkZjhh
ODE1YjQwNjEzNTAwZDc5M2Q0OTBmZTY5Mjc1Mjg1ODNiZWEuLmJmNDcxY2U3MDY0MDIwYThlOGM2
MDVhYmE2ODlmMzQwZjM1MTFmYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vSW1wbGljaXRBbmltYXRpb24uaApAQCAtMzUsMTEgKzM1LDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyRWxlbWVudDsKKwogLy8gQW4gSW1wbGljaXRBbmlt
YXRpb24gdHJhY2tzIHRoZSBzdGF0ZSBvZiBhIHRyYW5zaXRpb24gb2YgYSBzcGVjaWZpYyBDU1Mg
cHJvcGVydHkKLS8vIGZvciBhIHNpbmdsZSBSZW5kZXJPYmplY3QuCisvLyBmb3IgYSBzaW5nbGUg
UmVuZGVyRWxlbWVudC4KIGNsYXNzIEltcGxpY2l0QW5pbWF0aW9uIDogcHVibGljIEFuaW1hdGlv
bkJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltcGxpY2l0QW5pbWF0aW9u
PiBjcmVhdGUoY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIENTU1Byb3BlcnR5SUQgYW5pbWF0
aW5nUHJvcGVydHksIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENvbXBvc2l0ZUFuaW1hdGlvbiog
Y29tcG9zaXRlQW5pbWF0aW9uLCBSZW5kZXJTdHlsZSogZnJvbVN0eWxlKQorICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPEltcGxpY2l0QW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgQW5pbWF0aW9uJiBhbmlt
YXRpb24sIENTU1Byb3BlcnR5SUQgYW5pbWF0aW5nUHJvcGVydHksIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyLCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyU3R5
bGUqIGZyb21TdHlsZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1wbGlj
aXRBbmltYXRpb24oYW5pbWF0aW9uLCBhbmltYXRpbmdQcm9wZXJ0eSwgcmVuZGVyZXIsIGNvbXBv
c2l0ZUFuaW1hdGlvbiwgZnJvbVN0eWxlKSk7CiAgICAgfTsKQEAgLTUyLDcgKzU0LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihkb3VibGUgLyp0aW1lT2Zmc2V0
Ki8pOwogICAgIHZpcnR1YWwgdm9pZCBlbmRBbmltYXRpb24oKTsKIAotICAgIHZpcnR1YWwgdm9p
ZCBhbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRl
clN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSwgUmVmUHRyPFJl
bmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSk7CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoQ29t
cG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYg
YW5pbWF0ZWRTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIGdldEFuaW1hdGVkU3R5bGUoUmVmUHRy
PFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSk7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KFJl
bmRlclN0eWxlKiB0byk7CiAKQEAgLTgyLDcgKzg0LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAK
IHByaXZhdGU6Ci0gICAgSW1wbGljaXRBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiwgQ1NTUHJv
cGVydHlJRCwgUmVuZGVyT2JqZWN0KiwgQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyU3R5bGUq
KTsKKyAgICBJbXBsaWNpdEFuaW1hdGlvbihjb25zdCBBbmltYXRpb24mLCBDU1NQcm9wZXJ0eUlE
LCBSZW5kZXJFbGVtZW50KiwgQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIH5JbXBsaWNpdEFuaW1hdGlvbigpOwogCiAgICAgQ1NTUHJvcGVydHlJRCBtX3Ry
YW5zaXRpb25Qcm9wZXJ0eTsgLy8gVHJhbnNpdGlvbiBwcm9wZXJ0eSBhcyBzcGVjaWZpZWQgaW4g
dGhlIFJlbmRlclN0eWxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vS2V5ZnJhbWVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
S2V5ZnJhbWVBbmltYXRpb24uY3BwCmluZGV4IGJhZjJmZTQ3ZjgxNzM2OGY2NTcyOGE3OWYwNWVj
MDA1MDc5NGI5YTIuLjI3YzUxNDNiNWMzODhhOTM2MGNkMjY4NzY0OWUxMTg1ZjI1MzdiMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlv
bi5jcHAKQEAgLTQyLDE2ICs0MiwxNiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUtleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25z
dCBBbmltYXRpb24mIGFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgaW50IGluZGV4
LCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0
eWxlKQorS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlv
biYgYW5pbWF0aW9uLCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgaW50IGluZGV4LCBDb21wb3Np
dGVBbmltYXRpb24qIGNvbXBBbmltLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0eWxlKQogICAg
IDogQW5pbWF0aW9uQmFzZShhbmltYXRpb24sIHJlbmRlcmVyLCBjb21wQW5pbSkKLSAgICAsIG1f
a2V5ZnJhbWVzKHJlbmRlcmVyLCBhbmltYXRpb24ubmFtZSgpKQorICAgICwgbV9rZXlmcmFtZXMo
YW5pbWF0aW9uLm5hbWUoKSkKICAgICAsIG1faW5kZXgoaW5kZXgpCiAgICAgLCBtX3N0YXJ0RXZl
bnREaXNwYXRjaGVkKGZhbHNlKQogICAgICwgbV91bmFuaW1hdGVkU3R5bGUodW5hbmltYXRlZFN0
eWxlKQogewogICAgIC8vIEdldCB0aGUga2V5ZnJhbWUgUmVuZGVyU3R5bGVzCi0gICAgaWYgKG1f
b2JqZWN0ICYmIG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3QtPm5vZGUoKS0+aXNFbGVtZW50
Tm9kZSgpKQotICAgICAgICBtX29iamVjdC0+ZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVy
KCkua2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24odG9FbGVtZW50KG1fb2JqZWN0LT5ub2RlKCkp
LCB1bmFuaW1hdGVkU3R5bGUsIG1fa2V5ZnJhbWVzKTsKKyAgICBpZiAobV9vYmplY3QgJiYgbV9v
YmplY3QtPmVsZW1lbnQoKSkKKyAgICAgICAgbV9vYmplY3QtPmRvY3VtZW50KCkuZW5zdXJlU3R5
bGVSZXNvbHZlcigpLmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKG1fb2JqZWN0LT5lbGVtZW50
KCksIHVuYW5pbWF0ZWRTdHlsZSwgbV9rZXlmcmFtZXMpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBt
X3RyYW5zZm9ybUZ1bmN0aW9uTGlzdFZhbGlkIGZsYWcgYmFzZWQgb24gd2hldGhlciB0aGUgZnVu
Y3Rpb24gbGlzdHMgaW4gdGhlIGtleWZyYW1lcyBtYXRjaC4KICAgICB2YWxpZGF0ZVRyYW5zZm9y
bUZ1bmN0aW9uTGlzdCgpOwpAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRp
b246OmZldGNoSW50ZXJ2YWxFbmRwb2ludHNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5CiAgICAgcHJvZyA9IHByb2dyZXNzKHNjYWxlLCBvZmZzZXQsIHRpbWluZ0Z1bmN0aW9uKTsK
IH0KIAotdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24q
IGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBS
ZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5
bGUpCit2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiog
Y29tcG9zaXRlQW5pbWF0aW9uLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBS
ZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5
bGUpCiB7CiAgICAgLy8gRmlyZSB0aGUgc3RhcnQgdGltZW91dCBpZiBuZWVkZWQKICAgICBmaXJl
QW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQoKTsKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEtleWZy
YW1lQW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkKICNlbmRpZgog
ICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICgh
cGF1c2VkKCkpCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPm5vZGUoKSk7
CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPmVsZW1lbnQoKSk7CiB9CiAK
IHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCkBAIC0yNjUsNyArMjY1LDcg
QEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKICNlbmRpZgogICAgIC8v
IFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBzdHlsZQogICAgIGlmICghcGF1c2Vk
KCkpCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPm5vZGUoKSk7CisgICAg
ICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPmVsZW1lbnQoKSk7CiB9CiAKIGJvb2wg
S2V5ZnJhbWVBbmltYXRpb246OnNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVyKERvY3VtZW50OjpM
aXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSBjb25zdApAQCAtMzA5LDkgKzMwOSw3IEBAIGJvb2wg
S2V5ZnJhbWVBbmltYXRpb246OnNlbmRBbmltYXRpb25FdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSwgZG91YmxlCiAKICAgICBpZiAoc2hvdWxkU2VuZEV2ZW50Rm9yTGlzdGVuZXIo
bGlzdGVuZXJUeXBlKSkgewogICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXZlbnQKLSAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQ7Ci0gICAgICAgIGlmIChtX29iamVjdC0+bm9kZSgpICYm
IG1fb2JqZWN0LT5ub2RlKCktPmlzRWxlbWVudE5vZGUoKSkKLSAgICAgICAgICAgIGVsZW1lbnQg
PSB0b0VsZW1lbnQobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgIFJlZlB0cjxFbGVtZW50PiBl
bGVtZW50ID0gbV9vYmplY3QtPmVsZW1lbnQoKTsKIAogICAgICAgICBBU1NFUlQoIWVsZW1lbnQg
fHwgIWVsZW1lbnQtPmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAgICAgICAgIGlmICghZWxl
bWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1l
QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1h
dGlvbi5oCmluZGV4IGIyMTVkOTJjYjY0MTI3NmEzMmY4MDdkZjNlNmQ5ZDU5NWE5NTBmNDAuLjQ5
NGYxMWY1Mzk0OTEyZTJhODRiNjNmMjhjODUzMTA2YmVkZWRjMzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaApAQCAtMzcsMTcgKzM3
LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLS8vIEEg
S2V5ZnJhbWVBbmltYXRpb24gdHJhY2tzIHRoZSBzdGF0ZSBvZiBhbiBleHBsaWNpdCBhbmltYXRp
b24KLS8vIGZvciBhIHNpbmdsZSBSZW5kZXJPYmplY3QuCi1jbGFzcyBLZXlmcmFtZUFuaW1hdGlv
biA6IHB1YmxpYyBBbmltYXRpb25CYXNlIHsKKy8vIEEgS2V5ZnJhbWVBbmltYXRpb24gdHJhY2tz
IHRoZSBzdGF0ZSBvZiBhbiBleHBsaWNpdCBhbmltYXRpb24gZm9yIGEgc2luZ2xlIFJlbmRlckVs
ZW1lbnQuCitjbGFzcyBLZXlmcmFtZUFuaW1hdGlvbiBGSU5BTCA6IHB1YmxpYyBBbmltYXRpb25C
YXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4g
Y3JlYXRlKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBpbnQgaW5kZXgsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcG9zaXRlQW5pbWF0aW9uLCBSZW5k
ZXJTdHlsZSogdW5hbmltYXRlZFN0eWxlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEtleWZyYW1l
QW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBpbnQgaW5kZXgsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcG9zaXRlQW5p
bWF0aW9uLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0eWxlKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBLZXlmcmFtZUFuaW1hdGlvbihhbmltYXRpb24sIHJlbmRlcmVyLCBp
bmRleCwgY29tcG9zaXRlQW5pbWF0aW9uLCB1bmFuaW1hdGVkU3R5bGUpKTsKICAgICB9OwogCi0g
ICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyT2JqZWN0
KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0
eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0QW5pbWF0ZWRTdHlsZShSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVt
ZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdl
dFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKSBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShSZWZQdHI8UmVuZGVyU3R5bGU+JikgT1ZF
UlJJREU7CiAKICAgICBjb25zdCBLZXlmcmFtZUxpc3QmIGtleWZyYW1lcygpIGNvbnN0IHsgcmV0
dXJuIG1fa2V5ZnJhbWVzOyB9CiAKQEAgLTYwLDIzICs1OSwyMyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRVbmFuaW1hdGVkU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUpIHsgbV91
bmFuaW1hdGVkU3R5bGUgPSBzdHlsZTsgfQogICAgIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVkU3R5
bGUoKSBjb25zdCB7IHJldHVybiBtX3VuYW5pbWF0ZWRTdHlsZS5nZXQoKTsgfQogCi0gICAgdmly
dHVhbCBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UoKTsKKyAgICB2aXJ0dWFsIGRvdWJsZSB0aW1l
VG9OZXh0U2VydmljZSgpIE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lk
IG9uQW5pbWF0aW9uU3RhcnQoZG91YmxlIGVsYXBzZWRUaW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQg
b25BbmltYXRpb25JdGVyYXRpb24oZG91YmxlIGVsYXBzZWRUaW1lKTsKLSAgICB2aXJ0dWFsIHZv
aWQgb25BbmltYXRpb25FbmQoZG91YmxlIGVsYXBzZWRUaW1lKTsKLSAgICB2aXJ0dWFsIGJvb2wg
c3RhcnRBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBwYXVz
ZUFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIGVuZEFuaW1h
dGlvbigpOworICAgIHZpcnR1YWwgdm9pZCBvbkFuaW1hdGlvblN0YXJ0KGRvdWJsZSBlbGFwc2Vk
VGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9uQW5pbWF0aW9uSXRlcmF0aW9uKGRv
dWJsZSBlbGFwc2VkVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9uQW5pbWF0aW9u
RW5kKGRvdWJsZSBlbGFwc2VkVGltZSkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHN0YXJ0
QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBlbmRBbmltYXRpb24oKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBvdmVycmlk
ZUFuaW1hdGlvbnMoKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lT3ZlcnJpZGRlbkFuaW1hdGlv
bnMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgb3ZlcnJpZGVBbmltYXRpb25zKCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCkgT1ZFUlJJREU7CiAK
ICAgICBib29sIHNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVyKERvY3VtZW50OjpMaXN0ZW5lclR5
cGUgaW5MaXN0ZW5lclR5cGUpIGNvbnN0OwogICAgIGJvb2wgc2VuZEFuaW1hdGlvbkV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYsIGRvdWJsZSBlbGFwc2VkVGltZSk7CiAKLSAgICB2aXJ0dWFsIGJv
b2wgYWZmZWN0c1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OworICAgIHZpcnR1YWwgYm9v
bCBhZmZlY3RzUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2
b2lkIHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25MaXN0KCk7CiAjaWYgRU5BQkxFKENTU19GSUxU
RVJTKQpAQCAtODQsNyArODMsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICBLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24mLCBSZW5kZXJPYmplY3QqLCBpbnQg
aW5kZXgsIENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVkU3R5bGUp
OworICAgIEtleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYsIFJlbmRlckVsZW1lbnQq
LCBpbnQgaW5kZXgsIENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVk
U3R5bGUpOwogICAgIHZpcnR1YWwgfktleWZyYW1lQW5pbWF0aW9uKCk7CiAgICAgCiAgICAgLy8g
R2V0IHRoZSBzdHlsZXMgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSBzdXJyb3VuZGluZyB0aGUgY3Vy
cmVudCBhbmltYXRpb24gdGltZSBhbmQgdGhlIHByb2dyZXNzIGJldHdlZW4gdGhlbS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQppbmRleCA5MDYyY2IxYzcxNTJl
NDY5YTQwZDU0MTI0MjM3MjgwYzJiOGY1MzI1Li44ZWM5NTYwY2Q3NGUxNDMwZTk0Y2RkYTA0NDc3
N2EyOTIwMGU1YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhh
bmRsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFj
Lm1tCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmZvY3VzRG9jdW1lbnRW
aWV3KCkKIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzV2lkZ2V0TW91c2VEb3duRXZlbnRUb1dpZGdl
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmVudCkKIHsKICAgICAvLyBG
aWd1cmUgb3V0IHdoaWNoIHZpZXcgdG8gc2VuZCB0aGUgZXZlbnQgdG8uCi0gICAgUmVuZGVyT2Jq
ZWN0KiB0YXJnZXQgPSBldmVudC50YXJnZXROb2RlKCkgPyBldmVudC50YXJnZXROb2RlKCktPnJl
bmRlcmVyKCkgOiAwOworICAgIGF1dG8gdGFyZ2V0ID0gZXZlbnQudGFyZ2V0Tm9kZSgpID8gZXZl
bnQudGFyZ2V0Tm9kZSgpLT5yZW5kZXJlcigpIDogMDsKICAgICBpZiAoIXRhcmdldCB8fCAhdGFy
Z2V0LT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0zNTYsNyAr
MzU2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnBhc3NTdWJmcmFtZUV2ZW50VG9TdWJmcmFtZShN
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICAgICAgICAgIE5vZGUqIG5vZGUg
PSBldmVudC50YXJnZXROb2RlKCk7CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBhdXRvIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKICAgICAgICAgICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1dpZGdl
dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIFdpZGdldCog
d2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0KaW5kZXggNGM4ODZlYmQ0
NjQzZGJlNTM0MTY3ZDA2ZDkzMWVjYzE1YjAyZjlhYS4uMjllYzc3ZTE0ZmU0ODEyZWNmN2NhYmYz
ZDFmOTc1MjlmYWVmYWFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJh
bWVTbmFwc2hvdHRpbmdNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVT
bmFwc2hvdHRpbmdNYWMubW0KQEAgLTEzNSw3ICsxMzUsNyBAQCBOU0ltYWdlKiBzbmFwc2hvdERy
YWdJbWFnZShGcmFtZSogZnJhbWUsIE5vZGUqIG5vZGUsIE5TUmVjdCogaW1hZ2VSZWN0LCBOU1Jl
Y3QqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW1wbHkgbmV3
IHN0eWxlcywgcGx1cyBKUyBjb3VsZCBoYXZlIGNoYW5nZWQgb3RoZXIgdGhpbmdzCiAKIAotICAg
IC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2lu
YWwgUmVuZGVyT2JqZWN0LgorICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUg
Ymxvd24gYXdheSB0aGUgb3JpZ2luYWwgUmVuZGVyRWxlbWVudC4KICAgICByZW5kZXJlciA9IG5v
ZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG5pbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBs
YXllclByaXZhdGVRVEtpdC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQppbmRleCAwYzg0ZjhhOTgyNTkxYjczNDhlOWYy
MGE0NjYzNTIxZDUwZGI3YjllLi5mOTM1MWE3MGFjZmVlMWE0ZmEzOTEwMjE5MjFlMmQ3MDY1OGIz
NmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVk
aWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvbWFjL01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCkBAIC01Miw4ICs1Miw4IEBACiAj
aWYgRFJBV19GUkFNRV9SQVRFCiAjaW1wb3J0ICJGb250LmgiCiAjaW1wb3J0ICJEb2N1bWVudC5o
IgotI2ltcG9ydCAiUmVuZGVyT2JqZWN0LmgiCiAjaW1wb3J0ICJSZW5kZXJTdHlsZS5oIgorI2lt
cG9ydCAiUmVuZGVyVmlldy5oIgogI2VuZGlmCiAKIFNPRlRfTElOS19GUkFNRVdPUksoUVRLaXQp
CkBAIC0xMzUyLDEwICsxMzUyLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQ6OnBh
aW50KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcikKICNpZiBEUkFX
X0ZSQU1FX1JBVEUKICAgICAvLyBEcmF3IHRoZSBmcmFtZSByYXRlIG9ubHkgYWZ0ZXIgaGF2aW5n
IHBsYXllZCBtb3JlIHRoYW4gMTAgZnJhbWVzLgogICAgIGlmIChtX2ZyYW1lQ291bnRXaGlsZVBs
YXlpbmcgPiAxMCkgewotICAgICAgICBGcmFtZSogZnJhbWUgPSBtX3BsYXllci0+ZnJhbWVWaWV3
KCkgPyAmbV9wbGF5ZXItPmZyYW1lVmlldygpLT5mcmFtZSgpIDogTlVMTDsKLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1lbnQoKSA6IE5VTEw7Ci0gICAg
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBkb2N1bWVudCA/IGRvY3VtZW50LT5yZW5kZXJW
aWV3KCkgOiBOVUxMOwotICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGVUb1VzZSA9IHJlbmRlcmVy
ID8gcmVuZGVyZXItPnN0eWxlKCkgOiBOVUxMOworICAgICAgICBGcmFtZSogZnJhbWUgPSBtX3Bs
YXllci0+ZnJhbWVWaWV3KCkgPyAmbV9wbGF5ZXItPmZyYW1lVmlldygpLT5mcmFtZSgpIDogbnVs
bHB0cjsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9jdW1l
bnQoKSA6IG51bGxwdHI7CisgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBkb2N1bWVudCA/IGRvY3Vt
ZW50LT5yZW5kZXJWaWV3KCkgOiBudWxscHRyOworICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGVU
b1VzZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiBudWxscHRyOwogICAgICAgICBp
ZiAoc3R5bGVUb1VzZSkgewogICAgICAgICAgICAgZG91YmxlIGZyYW1lUmF0ZSA9IChtX2ZyYW1l
Q291bnRXaGlsZVBsYXlpbmcgLSAxKSAvICggbV9zdGFydGVkUGxheWluZyA/IChbTlNEYXRlIHRp
bWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV0gLSBtX3RpbWVTdGFydGVkUGxheWluZykgOgog
ICAgICAgICAgICAgICAgIChtX3RpbWVTdG9wcGVkUGxheWluZyAtIG1fdGltZVN0YXJ0ZWRQbGF5
aW5nKSApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5jcHAKaW5kZXggMDlm
MDE3NWU1ODNmYzJlMDk5OTdkNDhhMDA4ZGQwNTU3NjVmNzlkOS4uYmYxYWQ5MWViZjhiZTJlNjg3
MGFlNTQ5MTc3YWZkOWY2Y2E3ZjZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0NvdW50ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRl
ck5vZGUuY3BwCkBAIC0yMywxMiArMjMsMTIgQEAKICNpbmNsdWRlICJDb3VudGVyTm9kZS5oIgog
CiAjaW5jbHVkZSAiUmVuZGVyQ291bnRlci5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgor
I2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLUNvdW50ZXJOb2RlOjpDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG8s
IGJvb2wgaGFzUmVzZXRUeXBlLCBpbnQgdmFsdWUpCitDb3VudGVyTm9kZTo6Q291bnRlck5vZGUo
UmVuZGVyRWxlbWVudCogbywgYm9vbCBoYXNSZXNldFR5cGUsIGludCB2YWx1ZSkKICAgICA6IG1f
aGFzUmVzZXRUeXBlKGhhc1Jlc2V0VHlwZSkKICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgLCBt
X2NvdW50SW5QYXJlbnQoMCkKQEAgLTkwLDcgKzkwLDcgQEAgQ291bnRlck5vZGU6On5Db3VudGVy
Tm9kZSgpCiAgICAgcmVzZXRSZW5kZXJlcnMoKTsKIH0KIAotUGFzc1JlZlB0cjxDb3VudGVyTm9k
ZT4gQ291bnRlck5vZGU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIG93bmVyLCBib29sIGhhc1Jlc2V0
VHlwZSwgaW50IHZhbHVlKQorUGFzc1JlZlB0cjxDb3VudGVyTm9kZT4gQ291bnRlck5vZGU6OmNy
ZWF0ZShSZW5kZXJFbGVtZW50KiBvd25lciwgYm9vbCBoYXNSZXNldFR5cGUsIGludCB2YWx1ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENvdW50ZXJOb2RlKG93bmVyLCBoYXNSZXNldFR5
cGUsIHZhbHVlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291
bnRlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5oCmluZGV4
IDdkNmRlZjgxYmRiN2I3YTM2YTk3YzBjYjBjM2JlOTFlNTE5YjJkZDguLmE1Mzk3ZWNjMDE4ODNi
ZmM1ZjAzMDA0MWVmY2E5NGEyZDNhN2Q5OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9Db3VudGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3Vu
dGVyTm9kZS5oCkBAIC0zNywxOCArMzcsMTggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1j
bGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJDb3VudGVyOworY2xhc3MgUmVuZGVyRWxl
bWVudDsKIAogY2xhc3MgQ291bnRlck5vZGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDb3VudGVyTm9k
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENvdW50ZXJOb2RlPiBjcmVhdGUo
UmVuZGVyT2JqZWN0KiwgYm9vbCBpc1Jlc2V0LCBpbnQgdmFsdWUpOworICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENvdW50ZXJOb2RlPiBjcmVhdGUoUmVuZGVyRWxlbWVudCosIGJvb2wgaXNSZXNldCwg
aW50IHZhbHVlKTsKICAgICB+Q291bnRlck5vZGUoKTsKICAgICBib29sIGFjdHNBc1Jlc2V0KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNSZXNldFR5cGUgfHwgIW1fcGFyZW50OyB9CiAgICAgYm9vbCBo
YXNSZXNldFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2hhc1Jlc2V0VHlwZTsgfQogICAgIGludCB2
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWU7IH0KICAgICBpbnQgY291bnRJblBhcmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fY291bnRJblBhcmVudDsgfQotICAgIFJlbmRlck9iamVjdCogb3du
ZXIoKSBjb25zdCB7IHJldHVybiBtX293bmVyOyB9CisgICAgUmVuZGVyRWxlbWVudCogb3duZXIo
KSBjb25zdCB7IHJldHVybiBtX293bmVyOyB9CiAgICAgdm9pZCBhZGRSZW5kZXJlcihSZW5kZXJD
b3VudGVyKik7CiAgICAgdm9pZCByZW1vdmVSZW5kZXJlcihSZW5kZXJDb3VudGVyKik7CiAKQEAg
LTcxLDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQ2hpbGQoQ291bnRlck5vZGUq
KTsKIAogcHJpdmF0ZToKLSAgICBDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqLCBib29sIGlzUmVz
ZXQsIGludCB2YWx1ZSk7CisgICAgQ291bnRlck5vZGUoUmVuZGVyRWxlbWVudCosIGJvb2wgaXNS
ZXNldCwgaW50IHZhbHVlKTsKICAgICBpbnQgY29tcHV0ZUNvdW50SW5QYXJlbnQoKSBjb25zdDsK
ICAgICAvLyBJbnZhbGlkYXRlcyB0aGUgdGV4dCBpbiB0aGUgcmVuZGVyZXIgb2YgdGhpcyBjb3Vu
dGVyLCBpZiBhbnksCiAgICAgLy8gYW5kIGluIHRoZSByZW5kZXJlcnMgb2YgYWxsIGRlc2NlbmRh
bnRzIG9mIHRoaXMgY291bnRlciwgaWYgYW55LgpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNSZXNldFR5cGU7CiAgICAgaW50IG1fdmFsdWU7CiAgICAgaW50IG1fY291
bnRJblBhcmVudDsKLSAgICBSZW5kZXJPYmplY3QqIG1fb3duZXI7CisgICAgUmVuZGVyRWxlbWVu
dCogbV9vd25lcjsKICAgICBSZW5kZXJDb3VudGVyKiBtX3Jvb3RSZW5kZXJlcjsKIAogICAgIENv
dW50ZXJOb2RlKiBtX3BhcmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmls
dGVyRWZmZWN0UmVuZGVyZXIuY3BwCmluZGV4IGIwNmJkNGU0N2YyMTJiNGUzMzNmY2IwZWU1YWZm
ZTQ5Nzk5Njk2NjIuLjFkYTdmMDRlNjQzYzJkZmMxNDU5ZTE3YmM3NTllMWZjZTU4YzJhNjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNw
cApAQCAtMTIzLDcgKzEyMyw3IEBAIEdyYXBoaWNzQ29udGV4dCogRmlsdGVyRWZmZWN0UmVuZGVy
ZXI6OmlucHV0Q29udGV4dCgpCiAgICAgcmV0dXJuIHNvdXJjZUltYWdlKCkgPyBzb3VyY2VJbWFn
ZSgpLT5jb250ZXh0KCkgOiAwOwogfQogCi1QYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gRmlsdGVy
RWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24pCitQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4g
RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3QsIFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uKQogewogI2lmIEVOQUJMRShTVkcp
CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTE0Niw3ICsxNDYsNyBAQCBQYXNzUmVmUHRyPEZpbHRl
ckVmZmVjdD4gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRl
ck9iamVjdAogICAgIGlmICghZmlsdGVyKSB7CiAgICAgICAgIC8vIEFsdGhvdWdoIHdlIGRpZCBu
b3QgZmluZCB0aGUgcmVmZXJlbmNlZCBmaWx0ZXIsIGl0IG1pZ2h0IGV4aXN0IGxhdGVyCiAgICAg
ICAgIC8vIGluIHRoZSBkb2N1bWVudAotICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UoZmlsdGVyT3BlcmF0aW9uLT5mcmFnbWVudCgpLCB0
b0VsZW1lbnQocmVuZGVyZXItPm5vZGUoKSkpOworICAgICAgICBkb2N1bWVudC0+YWNjZXNzU1ZH
RXh0ZW5zaW9ucygpLT5hZGRQZW5kaW5nUmVzb3VyY2UoZmlsdGVyT3BlcmF0aW9uLT5mcmFnbWVu
dCgpLCByZW5kZXJlci0+ZWxlbWVudCgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBA
IC0xNzksNyArMTc5LDcgQEAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IEZpbHRlckVmZmVjdFJl
bmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJPYmplY3QKICNlbmRpZgogfQogCi1i
b29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1lciBjb25zdW1l
cikKK2Jvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb25zLCBGaWx0ZXJDb25zdW1lciBj
b25zdW1lcikKIHsKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgbV9oYXNDdXN0b21TaGFk
ZXJGaWx0ZXIgPSBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9G
aWx0ZXJFZmZlY3RSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmgKaW5kZXggYTBmNDdjMjdjOWNjNmYwZTQ2Yzc3NWZhYmQ3NTI3NTMxOGY1
MmFiNy4uZDNhMmJjY2Y1ZTEzNjkwOWNhZjc5Yjc5ZWYxMzRiNjJlNjIzNDdkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmgKQEAgLTM4LDIw
ICszOCwyMCBAQAogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlICJTVkdGaWx0ZXJC
dWlsZGVyLmgiCiAjaW5jbHVkZSAiU291cmNlR3JhcGhpYy5oIgotCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIFZlY3RvcjxSZWZQdHI8
RmlsdGVyRWZmZWN0PiA+IEZpbHRlckVmZmVjdExpc3Q7CiBjbGFzcyBDYWNoZWRTaGFkZXI7CiBj
bGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBHcmFwaGlj
c0NvbnRleHQ7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyTGF5ZXI7Ci1jbGFz
cyBSZW5kZXJPYmplY3Q7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJFZmZlY3Q+PiBG
aWx0ZXJFZmZlY3RMaXN0OwogCiBlbnVtIEZpbHRlckNvbnN1bWVyIHsKICAgICBGaWx0ZXJQcm9w
ZXJ0eSwKQEAgLTEwOSw4ICsxMDksOCBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0KiBp
bnB1dENvbnRleHQoKTsKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3QgeyByZXR1cm4g
bGFzdEVmZmVjdCgpLT5hc0ltYWdlQnVmZmVyKCk7IH0KIAotICAgIGJvb2wgYnVpbGQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIEZpbHRlckNvbnN1bWVy
KTsKLSAgICBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZm
ZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qKTsKKyAgICBib29sIGJ1aWxkKFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVyQ29uc3VtZXIpOworICAgIFBh
c3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50
KiwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0
ZXJPcGVyYXRpb24qKTsKICAgICBib29sIHVwZGF0ZUJhY2tpbmdTdG9yZVJlY3QoY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWN0KTsKICAgICB2b2lkIGFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQoKTsKICAgICB2b2lkIGNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCmluZGV4IDg2OTJjOGVjZjUyNzE2OWI3YTE0
ZjhlOWM5ZDJiODAzOTk5MDU4YjQuLmI5YTI3Y2IwMzVlMjRhMmJmMzA3ZmE0MGE2NWZkNzU1ZjE4
Mzg2ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRl
eHREaXJlY3Rpb24mIGRpcikgY29uc3QKICAgICBpZiAoIW1hcmtlcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBtX2lubmVyTm9u
U2hhcmVkTm9kZS0+cmVuZGVyZXIoKSkKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IG1faW5uZXJO
b25TaGFyZWROb2RlLT5yZW5kZXJlcigpKQogICAgICAgICBkaXIgPSByZW5kZXJlci0+c3R5bGUo
KS0+ZGlyZWN0aW9uKCk7CiAgICAgcmV0dXJuIG1hcmtlci0+ZGVzY3JpcHRpb24oKTsKIH0KQEAg
LTIyOCw3ICsyMjgsNyBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6dGl0bGUoVGV4dERpcmVjdGlv
biYgZGlyKSBjb25zdAogICAgICAgICBpZiAodGl0bGVOb2RlLT5pc0VsZW1lbnROb2RlKCkpIHsK
ICAgICAgICAgICAgIFN0cmluZyB0aXRsZSA9IHRvRWxlbWVudCh0aXRsZU5vZGUpLT50aXRsZSgp
OwogICAgICAgICAgICAgaWYgKCF0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRpdGxlTm9kZS0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRpdGxlTm9kZS0+cmVuZGVyZXIoKSkKICAg
ICAgICAgICAgICAgICAgICAgZGlyID0gcmVuZGVyZXItPnN0eWxlKCktPmRpcmVjdGlvbigpOwog
ICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTsKICAgICAgICAgICAgIH0KQEAgLTI0Myw3ICsy
NDMsNyBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6aW5uZXJUZXh0SWZUcnVuY2F0ZWQoVGV4dERp
cmVjdGlvbiYgZGlyKSBjb25zdAogICAgICAgICBpZiAoIXRydW5jYXRlZE5vZGUtPmlzRWxlbWVu
dE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gdHJ1bmNhdGVkTm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IHRvRWxlbWVudCh0cnVuY2F0ZWROb2RlKS0+cmVuZGVyZXIoKSkgewog
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkpIHsKICAgICAgICAgICAg
ICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSB0b1JlbmRlckJsb2NrKHJlbmRlcmVyKTsKICAgICAg
ICAgICAgICAgICBpZiAoYmxvY2stPnN0eWxlKCktPnRleHRPdmVyZmxvdygpKSB7CkBAIC0yOTMs
NyArMjkzLDcgQEAgSW1hZ2UqIEhpdFRlc3RSZXN1bHQ6OmltYWdlKCkgY29uc3QKICAgICBpZiAo
IW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCk7Cisg
ICAgYXV0byByZW5kZXJlciA9IG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpOwogICAg
IGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNJbWFnZSgpKSB7CiAgICAgICAgIFJlbmRlcklt
YWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlckltYWdlKj4ocmVuZGVyZXIp
OwogICAgICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkgJiYgIWltYWdlLT5jYWNoZWRJbWFn
ZSgpLT5lcnJvck9jY3VycmVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGF5b3V0UmVwYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRS
ZXBhaW50ZXIuY3BwCmluZGV4IDIwNWFkNGFiOGQyMDY0MTBlOGI2NWNmNDk1MzA2YWViN2ZhY2Iy
ZTguLjhkNWViZGIxMWRjZTBiMzk1OTQxZDA4NTQ2NzZmZjFkNmJjYzE1ZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuY3BwCkBAIC0yNiwxMSArMjYsMTEg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJMYXlvdXRSZXBhaW50ZXIuaCIKIAot
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1MYXlvdXRSZXBhaW50ZXI6OkxheW91dFJlcGFpbnRlcihS
ZW5kZXJPYmplY3QmIG9iamVjdCwgYm9vbCBjaGVja0ZvclJlcGFpbnQpCitMYXlvdXRSZXBhaW50
ZXI6OkxheW91dFJlcGFpbnRlcihSZW5kZXJFbGVtZW50JiBvYmplY3QsIGJvb2wgY2hlY2tGb3JS
ZXBhaW50KQogICAgIDogbV9vYmplY3Qob2JqZWN0KQogICAgICwgbV9yZXBhaW50Q29udGFpbmVy
KDApCiAgICAgLCBtX2NoZWNrRm9yUmVwYWludChjaGVja0ZvclJlcGFpbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgKaW5kZXggMDY1OGVhODUzYzIwZWE1YzM3
MWRiMWM0MzVhN2M0NmFkYzgxNTIyNi4uY2FlOGYxMDIwMjIyMDc3NmZlNmE5NDVlZWRhOTU4MTAx
ZmFhZjA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFp
bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaApA
QCAtMzAsMTIgKzMwLDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVy
RWxlbWVudDsKIGNsYXNzIFJlbmRlckxheWVyTW9kZWxPYmplY3Q7Ci1jbGFzcyBSZW5kZXJPYmpl
Y3Q7CiAKIGNsYXNzIExheW91dFJlcGFpbnRlciB7CiBwdWJsaWM6Ci0gICAgTGF5b3V0UmVwYWlu
dGVyKFJlbmRlck9iamVjdCYsIGJvb2wgY2hlY2tGb3JSZXBhaW50KTsKKyAgICBMYXlvdXRSZXBh
aW50ZXIoUmVuZGVyRWxlbWVudCYsIGJvb2wgY2hlY2tGb3JSZXBhaW50KTsKIAogICAgIGJvb2wg
Y2hlY2tGb3JSZXBhaW50KCkgY29uc3QgeyByZXR1cm4gbV9jaGVja0ZvclJlcGFpbnQ7IH0KIApA
QCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXBhaW50QWZ0ZXJMYXlvdXQoKTsK
IAogcHJpdmF0ZToKLSAgICBSZW5kZXJPYmplY3QmIG1fb2JqZWN0OworICAgIFJlbmRlckVsZW1l
bnQmIG1fb2JqZWN0OwogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG1fcmVwYWludENvbnRh
aW5lcjsKICAgICAvLyBXZSBzdG9yZSB0aGVzZSB2YWx1ZXMgYXMgTGF5b3V0UmVjdHMsIGJ1dCB0
aGUgZmluYWwgaW52YWxpZGF0aW9ucyB3aWxsIGJlIHBpeGVsIHNuYXBwZWQKICAgICBMYXlvdXRS
ZWN0IG1fb2xkQm91bmRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xh
eW91dFN0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAppbmRl
eCA0OTJhNzUzNWRhYmU0MTUxMDViNTU5YzVjMDMzMTQzYTNhYmVkNjA4Li4wYmFlYjdkMTk5NjVl
ZTdiMDc5YmJlZjljMGE2YzljZTJiODNhNTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvTGF5b3V0U3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5
b3V0U3RhdGUuaApAQCAtMzcsMTEgKzM3LDEwIEBAIGNsYXNzIFJlbmRlckFyZW5hOwogY2xhc3Mg
UmVuZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJCbG9ja0Zsb3c7CiBjbGFzcyBSZW5kZXJCb3g7Ci1j
bGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyRmxv
d1RocmVhZDsKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKK2NsYXNzIFJlbmRlck9iamVjdDsKIGNs
YXNzIFNoYXBlSW5zaWRlSW5mbzsKLSNlbmRpZgogCiBjbGFzcyBMYXlvdXRTdGF0ZSB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5b3V0U3RhdGUpOwpAQCAtNTQsMTUgKzUzLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgLCBtX2xheW91dERlbHRhWFNhdHVyYXRlZChmYWxzZSkKICAgICAgICAg
LCBtX2xheW91dERlbHRhWVNhdHVyYXRlZChmYWxzZSkKICNlbmRpZgotICAgICAgICAsIG1fY29s
dW1uSW5mbygwKQotICAgICAgICAsIG1fbGluZUdyaWQoMCkKLSAgICAgICAgLCBtX25leHQoMCkK
KyAgICAgICAgLCBtX2NvbHVtbkluZm8obnVsbHB0cikKKyAgICAgICAgLCBtX2xpbmVHcmlkKG51
bGxwdHIpCisgICAgICAgICwgbV9uZXh0KG51bGxwdHIpCiAjaWYgRU5BQkxFKENTU19TSEFQRVMp
Ci0gICAgICAgICwgbV9zaGFwZUluc2lkZUluZm8oMCkKKyAgICAgICAgLCBtX3NoYXBlSW5zaWRl
SW5mbyhudWxscHRyKQogI2VuZGlmCiAgICAgICAgICwgbV9wYWdlTG9naWNhbEhlaWdodCgwKQog
I2lmbmRlZiBOREVCVUcKLSAgICAgICAgLCBtX3JlbmRlcmVyKDApCisgICAgICAgICwgbV9yZW5k
ZXJlcihudWxscHRyKQogI2VuZGlmCiAgICAgewogICAgIH0KQEAgLTExMywxNCArMTEyLDE1IEBA
IHByaXZhdGU6CiAKIHB1YmxpYzoKICAgICAvLyBEbyBub3QgYWRkIGFueXRoaW5nIGFwYXJ0IGZy
b20gYml0ZmllbGRzIHVudGlsIGFmdGVyIG1fY29sdW1uSW5mby4gU2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAxNzMKLSAgICBib29sIG1fY2xpcHBlZDoxOwot
ICAgIGJvb2wgbV9pc1BhZ2luYXRlZDoxOworICAgIGJvb2wgbV9jbGlwcGVkIDogMTsKKyAgICBi
b29sIG1faXNQYWdpbmF0ZWQgOiAxOwogICAgIC8vIElmIG91ciBwYWdlIGhlaWdodCBoYXMgY2hh
bmdlZCwgdGhpcyB3aWxsIGZvcmNlIGFsbCBibG9ja3MgdG8gcmVsYXlvdXQuCi0gICAgYm9vbCBt
X3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZDoxOworICAgIGJvb2wgbV9wYWdlTG9naWNhbEhlaWdo
dENoYW5nZWQgOiAxOwogI2lmICFBU1NFUlRfRElTQUJMRUQgJiYgRU5BQkxFKFNBVFVSQVRFRF9M
QVlPVVRfQVJJVEhNRVRJQykKLSAgICBib29sIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkOjE7Ci0g
ICAgYm9vbCBtX2xheW91dERlbHRhWVNhdHVyYXRlZDoxOworICAgIGJvb2wgbV9sYXlvdXREZWx0
YVhTYXR1cmF0ZWQgOiAxOworICAgIGJvb2wgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQgOiAxOwog
I2VuZGlmCisKICAgICAvLyBJZiB0aGUgZW5jbG9zaW5nIHBhZ2luYXRpb24gbW9kZWwgaXMgYSBj
b2x1bW4gbW9kZWwsIHRoZW4gdGhpcyB3aWxsIHN0b3JlIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3Ig
ZWFzeSByZXRyaWV2YWwvbWFuaXB1bGF0aW9uLgogICAgIENvbHVtbkluZm8qIG1fY29sdW1uSW5m
bzsKICAgICAvLyBUaGUgY3VycmVudCBsaW5lIGdyaWQgdGhhdCB3ZSdyZSBzbmFwcGluZyB0byBh
bmQgdGhlIG9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdGhlIGdyaWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvTGluZVdpZHRoLmgKaW5kZXggZDAwYjFjZDFlOGFjMjI5ZDM2NjIyODJkMTRlYTg3MmEwOGFh
Y2ZhNS4uYmE1YTZlOWY5NDMyZDE3NWY3MjU4YzIzNGM3YjkyMDhiZmUzY2NjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MaW5lV2lkdGguaApAQCAtMzYsMTEgKzM2LDEyIEBACiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIEZsb2F0aW5nT2JqZWN0Owotc3RydWN0IExpbmVTZWdtZW50Owog
Y2xhc3MgUmVuZGVyQmxvY2s7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJSdWJ5
UnVuOwogCitzdHJ1Y3QgTGluZVNlZ21lbnQ7CisKIGVudW0gSW5kZW50VGV4dE9yTm90IHsgRG9O
b3RJbmRlbnRUZXh0LCBJbmRlbnRUZXh0IH07CiAKIGNsYXNzIExpbmVXaWR0aCB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hl
cy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNo
ZXMuaAppbmRleCA2NThlMDIyODVhYjJhNjQwNTM1MTJmNjU0NmUxYWYyN2JmYTdjNWRlLi5iOWEy
NmNjOTgxZmI1MDQ4Y2UzNzU5ODdkOTE5NGRiYTlhZmE2ZTljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Mb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgKQEAg
LTI1LDcgKzI1LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgaW5saW5lIGJv
b2wgaXNDb250YWluaW5nQmxvY2tDYW5kaWRhdGVGb3JBYnNvbHV0ZWx5UG9zaXRpb25lZE9iamVj
dChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbnRhaW5pbmdC
bG9ja0NhbmRpZGF0ZUZvckFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQq
IG9iamVjdCkKIHsKICAgICByZXR1cm4gb2JqZWN0LT5zdHlsZSgpLT5wb3NpdGlvbigpICE9IFN0
YXRpY1Bvc2l0aW9uCiAgICAgICAgIHx8IChvYmplY3QtPmhhc1RyYW5zZm9ybSgpICYmIG9iamVj
dC0+aXNSZW5kZXJCbG9jaygpKQpAQCAtMzUsMjkgKzM1LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc0NvbnRhaW5pbmdCbG9ja0NhbmRpZGF0ZUZvckFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0
KFJlbmRlCiAgICAgICAgIHx8IG9iamVjdC0+aXNSZW5kZXJWaWV3KCk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBpc05vblJlbmRlckJsb2NrSW5saW5lKFJlbmRlck9iamVjdCogb2JqZWN0KQor
c3RhdGljIGlubGluZSBib29sIGlzTm9uUmVuZGVyQmxvY2tJbmxpbmUoUmVuZGVyRWxlbWVudCog
b2JqZWN0KQogewogICAgIHJldHVybiAob2JqZWN0LT5pc0lubGluZSgpICYmICFvYmplY3QtPmlz
UmVwbGFjZWQoKSkgfHwgIW9iamVjdC0+aXNSZW5kZXJCbG9jaygpOwogfQogCi1zdGF0aWMgaW5s
aW5lIFJlbmRlck9iamVjdCogY29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3NpdGlvbihSZW5kZXJP
YmplY3QqIHBhcmVudCkKK3N0YXRpYyBpbmxpbmUgUmVuZGVyRWxlbWVudCogY29udGFpbmluZ0Js
b2NrRm9yRml4ZWRQb3NpdGlvbihSZW5kZXJFbGVtZW50KiBwYXJlbnQpCiB7Ci0gICAgUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSBwYXJlbnQ7CisgICAgUmVuZGVyRWxlbWVudCogb2JqZWN0ID0gcGFy
ZW50OwogICAgIHdoaWxlIChvYmplY3QgJiYgIW9iamVjdC0+Y2FuQ29udGFpbkZpeGVkUG9zaXRp
b25PYmplY3RzKCkpCiAgICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCk7CiAgICAgQVNT
RVJUKCFvYmplY3QgfHwgIW9iamVjdC0+aXNBbm9ueW1vdXNCbG9jaygpKTsKICAgICByZXR1cm4g
b2JqZWN0OwogfQogCi1zdGF0aWMgaW5saW5lIFJlbmRlck9iamVjdCogY29udGFpbmluZ0Jsb2Nr
Rm9yQWJzb2x1dGVQb3NpdGlvbihSZW5kZXJPYmplY3QqIHBhcmVudCkKK3N0YXRpYyBpbmxpbmUg
UmVuZGVyRWxlbWVudCogY29udGFpbmluZ0Jsb2NrRm9yQWJzb2x1dGVQb3NpdGlvbihSZW5kZXJF
bGVtZW50KiBwYXJlbnQpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBwYXJlbnQ7Cisg
ICAgUmVuZGVyRWxlbWVudCogb2JqZWN0ID0gcGFyZW50OwogICAgIHdoaWxlIChvYmplY3QgJiYg
IWlzQ29udGFpbmluZ0Jsb2NrQ2FuZGlkYXRlRm9yQWJzb2x1dGVseVBvc2l0aW9uZWRPYmplY3Qo
b2JqZWN0KSkKICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKIAogICAgIC8vIEZv
ciBhIHJlbGF0aXZlbHkgcG9zaXRpb25lZCBpbmxpbmUsIHJldHVybiBpdHMgbmVhcmVzdCBub24t
YW5vbnltb3VzIGNvbnRhaW5pbmcgYmxvY2ssCiAgICAgLy8gbm90IHRoZSBpbmxpbmUgaXRzZWxm
LCB0byBhdm9pZCBoYXZpbmcgYSBwb3NpdGlvbmVkIG9iamVjdHMgbGlzdCBpbiBhbGwgUmVuZGVy
SW5saW5lcwotICAgIC8vIGFuZCB1c2UgUmVuZGVyQmxvY2sqIGFzIFJlbmRlck9iamVjdDo6Y29u
dGFpbmluZ0Jsb2NrJ3MgcmV0dXJuIHR5cGUuCisgICAgLy8gYW5kIHVzZSBSZW5kZXJCbG9jayog
YXMgUmVuZGVyRWxlbWVudDo6Y29udGFpbmluZ0Jsb2NrJ3MgcmV0dXJuIHR5cGUuCiAgICAgLy8g
VXNlIFJlbmRlckJsb2NrOjpjb250YWluZXIoKSB0byBvYnRhaW4gdGhlIGlubGluZS4KICAgICBp
ZiAob2JqZWN0ICYmIG9iamVjdC0+aXNSZW5kZXJJbmxpbmUoKSkKICAgICAgICAgb2JqZWN0ID0g
b2JqZWN0LT5jb250YWluaW5nQmxvY2soKTsKQEAgLTY4LDkgKzY4LDkgQEAgc3RhdGljIGlubGlu
ZSBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlUG9zaXRpb24oUmVuZGVy
T2JqZWN0KiBwYXIKICAgICByZXR1cm4gb2JqZWN0OwogfQogCi1zdGF0aWMgaW5saW5lIFJlbmRl
ck9iamVjdCogY29udGFpbmluZ0Jsb2NrRm9yT2JqZWN0SW5GbG93KFJlbmRlck9iamVjdCogcGFy
ZW50KQorc3RhdGljIGlubGluZSBSZW5kZXJFbGVtZW50KiBjb250YWluaW5nQmxvY2tGb3JPYmpl
Y3RJbkZsb3coUmVuZGVyRWxlbWVudCogcGFyZW50KQogewotICAgIFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcGFyZW50OworICAgIFJlbmRlckVsZW1lbnQqIG9iamVjdCA9IHBhcmVudDsKICAgICB3
aGlsZSAob2JqZWN0ICYmIGlzTm9uUmVuZGVyQmxvY2tJbmxpbmUob2JqZWN0KSkKICAgICAgICAg
b2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKICAgICByZXR1cm4gb2JqZWN0OwpAQCAtMTM2LDcg
KzEzNiw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2Fj
aGVzKFJlbmRlckJsb2NrKiByb290QmxvY2spCiAgICAgewogICAgICAgICBBU1NFUlQocm9vdEJs
b2NrLT5pc1NlbGVjdGlvblJvb3QoKSk7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcGFyZW50ID0g
cm9vdEJsb2NrLT5wYXJlbnQoKTsKKyAgICAgICAgYXV0byBwYXJlbnQgPSByb290QmxvY2stPnBh
cmVudCgpOwogCiAgICAgICAgIC8vIExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMgc2hvdWxk
IG5vdCBiZSB1c2VkIG9uIGFuIG9ycGhhbmVkIHRyZWUuCiAgICAgICAgIG1fY29udGFpbmluZ0Js
b2NrRm9yRml4ZWRQb3NpdGlvbi5zZXRCbG9jayh0b1JlbmRlckJsb2NrKGNvbnRhaW5pbmdCbG9j
a0ZvckZpeGVkUG9zaXRpb24ocGFyZW50KSksIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1BhaW50SW5mby5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50
SW5mby5oCmluZGV4IGU2NzBhNzc2ZjQ0ZDVhYmZhYWY2NmJmYWU4MWFkNDYzMzc3NDNmZWYuLjgy
MjQ3NDkwMDg2YjQ5NWFkYWM2M2ZlZjNlZGYwZGFmY2UzYzMxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9QYWludEluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUGFpbnRJbmZvLmgKQEAgLTU0LDggKzU0LDggQEAgdHlwZWRlZiBIYXNoTWFwPE92ZXJs
YXBUZXN0UmVxdWVzdENsaWVudCosIEludFJlY3Q+IE92ZXJsYXBUZXN0UmVxdWVzdE1hcDsKICAq
Lwogc3RydWN0IFBhaW50SW5mbyB7CiAgICAgUGFpbnRJbmZvKEdyYXBoaWNzQ29udGV4dCogbmV3
Q29udGV4dCwgY29uc3QgSW50UmVjdCYgbmV3UmVjdCwgUGFpbnRQaGFzZSBuZXdQaGFzZSwgUGFp
bnRCZWhhdmlvciBuZXdQYWludEJlaGF2aW9yLAotICAgICAgICBSZW5kZXJPYmplY3QqIG5ld1N1
YnRyZWVQYWludFJvb3QgPSAwLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IDAsIExpc3RIYXNoU2V0
PFJlbmRlcklubGluZSo+KiBuZXdPdXRsaW5lT2JqZWN0cyA9IDAsCi0gICAgICAgIE92ZXJsYXBU
ZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0cyA9IDAsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqIG5ld1BhaW50Q29udGFpbmVyID0gMCkKKyAgICAgICAgUmVuZGVyT2JqZWN0
KiBuZXdTdWJ0cmVlUGFpbnRSb290ID0gbnVsbHB0ciwgUmVuZGVyUmVnaW9uKiByZWdpb24gPSBu
dWxscHRyLCBMaXN0SGFzaFNldDxSZW5kZXJJbmxpbmUqPiogbmV3T3V0bGluZU9iamVjdHMgPSBu
dWxscHRyLAorICAgICAgICBPdmVybGFwVGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVz
dHMgPSBudWxscHRyLCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBuZXdQYWludENvbnRh
aW5lciA9IG51bGxwdHIpCiAgICAgICAgIDogY29udGV4dChuZXdDb250ZXh0KQogICAgICAgICAs
IHJlY3QobmV3UmVjdCkKICAgICAgICAgLCBwaGFzZShuZXdQaGFzZSkKQEAgLTczLDkgKzczLDkg
QEAgc3RydWN0IFBhaW50SW5mbyB7CiAgICAgICAgIGlmICghc3VidHJlZVBhaW50Um9vdCkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBJZiB3ZSdyZSB0aGUgcGFpbnRpbmcgcm9v
dCwga2lkcyBkcmF3IG5vcm1hbGx5LCBhbmQgc2VlIHJvb3Qgb2YgMC4KKyAgICAgICAgLy8gSWYg
d2UncmUgdGhlIHBhaW50aW5nIHJvb3QsIGtpZHMgZHJhdyBub3JtYWxseSwgYW5kIHNlZSByb290
IG9mIG51bGxwdHIuCiAgICAgICAgIGlmIChzdWJ0cmVlUGFpbnRSb290ID09IHJlbmRlcmVyKSB7
Ci0gICAgICAgICAgICBzdWJ0cmVlUGFpbnRSb290ID0gMDsgCisgICAgICAgICAgICBzdWJ0cmVl
UGFpbnRSb290ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggYzYwOTcwODE2YWE5
MThlOTMwODMxNWI0ZmYxMmYwZWQ1OGZjNGJkOC4uNDhmNTU3ZjMzYzA2OTA5N2ZkM2VmYTkwNjQ5
OTFlZmZkMGQ4ZTkxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAg
LTE0NTcsNyArMTQ1Nyw3IEBAIExheW91dFJlY3QgUmVuZGVyQm94OjptYXNrQ2xpcFJlY3QoKQog
fQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFp
bnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZv
aWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2Jq
ZWN0KQorICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgQ29tcG9z
aXRlT3BlcmF0b3Igb3AsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QpCiB7CiAgICAg
VmVjdG9yPGNvbnN0IEZpbGxMYXllciosIDg+IGxheWVyczsKICAgICBjb25zdCBGaWxsTGF5ZXIq
IGN1ckxheWVyID0gZmlsbExheWVyOwpAQCAtMTQ5Niw3ICsxNDk2LDcgQEAgdm9pZCBSZW5kZXJC
b3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29s
b3ImIGMsIGNvbnMKIH0KIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVyKGNvbnN0IFBh
aW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgYywgY29uc3QgRmlsbExheWVyKiBmaWxs
TGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCi0gICAgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyT2JqZWN0KiBi
YWNrZ3JvdW5kT2JqZWN0KQorICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lk
YW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmpl
Y3QpCiB7CiAgICAgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChwYWludEluZm8sIGMsIGZpbGxMYXll
ciwgcmVjdCwgYmxlZWRBdm9pZGFuY2UsIDAsIExheW91dFNpemUoKSwgb3AsIGJhY2tncm91bmRP
YmplY3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGEyMDg5OTIz
MDM0NjBjZjIxYmQ3YmI0NmNjYWRlMDc1NGI5NTFiNWEuLjIzYzhjNjQ3M2VkNWFhZDQ0NWUwYTY4
ZTlhM2MyMjUwMjM2YzU5NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAg
LTYxMSw4ICs2MTEsOCBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZChj
b25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSk7CiAgICAgCi0gICAgdm9pZCBwYWludEZpbGxMYXll
cihjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0
IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9y
LCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmplY3QpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXJzKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29u
c3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVl
ZE5vbmUsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyT2Jq
ZWN0KiBiYWNrZ3JvdW5kT2JqZWN0ID0gMCk7CisgICAgdm9pZCBwYWludEZpbGxMYXllcihjb25z
dCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91
dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yLCBSZW5k
ZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0KTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVycyhj
b25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExh
eW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxlZWROb25l
LCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVsZW1lbnQq
IGJhY2tncm91bmRPYmplY3QgPSBudWxscHRyKTsKIAogICAgIHZvaWQgcGFpbnRNYXNrSW1hZ2Vz
KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggOGMwNjc4MWY3
YzQwZjlmOGEzZjk3MDExYTgwODg5MGFjZDQ4MWQzZC4uMjliZDVkNjA5NzMwM2Q1NzIxMjY5NGFm
OTAzZjlkMWM3NmFmMzlkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC01NjksNyArNTY5LDcgQEAgc3RhdGljIHZvaWQgYXBw
bHlCb3hTaGFkb3dGb3JCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgUmVuZGVy
U3R5bGUqIHMKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJF
eHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGNvbG9yLCBj
b25zdCBGaWxsTGF5ZXIqIGJnTGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QsCi0gICAgQmFj
a2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiBib3gs
IGNvbnN0IExheW91dFNpemUmIGJveFNpemUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJP
YmplY3QqIGJhY2tncm91bmRPYmplY3QpCisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJs
ZWVkQXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiBib3gsIGNvbnN0IExheW91dFNpemUmIGJveFNp
emUsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0
KQogewogICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IHBhaW50SW5mby5jb250ZXh0Owog
ICAgIGlmIChjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkgfHwgcmVjdC5pc0VtcHR5KCkpCkBA
IC03OTUsNyArNzk1LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5
ZXJFeHRlbmRlZChjb25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgZ2VvbWV0
cnkuY2xpcChwYWludEluZm8ucmVjdCk7CiAgICAgICAgIGlmICghZ2VvbWV0cnkuZGVzdFJlY3Qo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ID0gb3AgPT0gQ29tcG9zaXRlU291cmNlT3ZlciA/IGJnTGF5ZXItPmNvbXBvc2l0ZSgpIDogb3A7
Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJh
Y2tncm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpczsKKyAgICAgICAgICAgIFJl
bmRlckVsZW1lbnQqIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3Qg
PyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpczsKICAgICAgICAgICAgIFJlZlB0cjxJbWFnZT4gaW1h
Z2UgPSBiZ0ltYWdlLT5pbWFnZShjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UsIGdlb21ldHJ5LnRp
bGVTaXplKCkpOwogICAgICAgICAgICAgY29udGV4dC0+c2V0RHJhd0x1bWluYW5jZU1hc2soYmdM
YXllci0+bWFza1NvdXJjZVR5cGUoKSA9PSBNYXNrTHVtaW5hbmNlKTsKICAgICAgICAgICAgIGJv
b2wgdXNlTG93UXVhbGl0eVNjYWxpbmcgPSBzaG91bGRQYWludEF0TG93UXVhbGl0eShjb250ZXh0
LCBpbWFnZS5nZXQoKSwgYmdMYXllciwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CkBAIC0xMDQzLDcg
KzEwNDMsNyBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRTcGFjZShpbnQgYXJlYVNpemUsIGludCB0
aWxlU2l6ZSkKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlQmFja2dy
b3VuZEltYWdlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250
YWluZXIsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBwYWlu
dFJlY3QsCi0gICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkmIGdlb21ldHJ5LCBSZW5kZXJPYmpl
Y3QqIGJhY2tncm91bmRPYmplY3QpIGNvbnN0CisgICAgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkm
IGdlb21ldHJ5LCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0KSBjb25zdAogewogICAg
IExheW91dFVuaXQgbGVmdCA9IDA7CiAgICAgTGF5b3V0VW5pdCB0b3AgPSAwOwpAQCAtMTExMSw3
ICsxMTExLDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlQmFja2dyb3Vu
ZEltYWdlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXJNb2QKICAgICAgICAgcG9zaXRpb25pbmdB
cmVhU2l6ZSA9IGdlb21ldHJ5LmRlc3RSZWN0KCkuc2l6ZSgpOwogICAgIH0KIAotICAgIGNvbnN0
IFJlbmRlck9iamVjdCogY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVj
dCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOworICAgIGF1dG8gY2xpZW50Rm9yQmFja2dyb3Vu
ZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOwogICAg
IEludFNpemUgZmlsbFRpbGVTaXplID0gY2FsY3VsYXRlRmlsbFRpbGVTaXplKGZpbGxMYXllciwg
cG9zaXRpb25pbmdBcmVhU2l6ZSk7CiAgICAgZmlsbExheWVyLT5pbWFnZSgpLT5zZXRDb250YWlu
ZXJTaXplRm9yUmVuZGVyZXIoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCBmaWxsVGlsZVNpemUs
IHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgZ2VvbWV0cnkuc2V0VGlsZVNpemUoZmls
bFRpbGVTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKaW5kZXggNzU3YTM3ZmUyZWQ2NDE0ZGMyM2YzMzA2YmVlOTMyNTI0NTg5M2QwZC4u
OWQwNjZmYWY1NTg2YzYxNjhmZDgwZDA4ZTUwNTlmMmZhYmNmMWQ4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTE2MSw3ICsxNjEs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYWludEJvcmRlcihjb25zdCBQYWludEluZm8mLCBjb25z
dCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0
cnVlLCBib29sIGluY2x1ZGVMb2dpY2FsUmlnaHRFZGdlID0gdHJ1ZSk7CiAgICAgYm9vbCBwYWlu
dE5pbmVQaWVjZUltYWdlKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmLCBjb25z
dCBSZW5kZXJTdHlsZSosIGNvbnN0IE5pbmVQaWVjZUltYWdlJiwgQ29tcG9zaXRlT3BlcmF0b3Ig
PSBDb21wb3NpdGVTb3VyY2VPdmVyKTsKICAgICB2b2lkIHBhaW50Qm94U2hhZG93KGNvbnN0IFBh
aW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBjb25zdCBSZW5kZXJTdHlsZSosIFNoYWRvd1N0
eWxlLCBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UgPSB0cnVlLCBib29sIGluY2x1ZGVMb2dp
Y2FsUmlnaHRFZGdlID0gdHJ1ZSk7Ci0gICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5
b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSAwLCBj
b25zdCBMYXlvdXRTaXplJiA9IExheW91dFNpemUoKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21w
b3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmplY3QgPSAwKTsKKyAg
ICB2b2lkIHBhaW50RmlsbExheWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29s
b3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVk
QXZvaWRhbmNlLCBJbmxpbmVGbG93Qm94KiA9IDAsIGNvbnN0IExheW91dFNpemUmID0gTGF5b3V0
U2l6ZSgpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlckVs
ZW1lbnQqIGJhY2tncm91bmRPYmplY3QgPSAwKTsKIAogICAgIHZpcnR1YWwgYm9vbCBib3hTaGFk
b3dTaG91bGRCZUFwcGxpZWRUb0JhY2tncm91bmQoQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBJ
bmxpbmVGbG93Qm94KiA9IDApIGNvbnN0OwogCkBAIC0yNTgsNyArMjU4LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgTGF5b3V0UG9pbnQgYWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJl
bnQoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKIAotICAgIHZvaWQgY2FsY3VsYXRlQmFja2dy
b3VuZEltYWdlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFpbnRDb250
YWluZXIsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCwgQmFj
a2dyb3VuZEltYWdlR2VvbWV0cnkmLCBSZW5kZXJPYmplY3QqID0gMCkgY29uc3Q7CisgICAgdm9p
ZCBjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeShjb25zdCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0KiBwYWludENvbnRhaW5lciwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVj
dCYgcGFpbnRSZWN0LCBCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeSYsIFJlbmRlckVsZW1lbnQqID0g
MCkgY29uc3Q7CiAgICAgdm9pZCBnZXRCb3JkZXJFZGdlSW5mbyhjbGFzcyBCb3JkZXJFZGdlW10s
IGNvbnN0IFJlbmRlclN0eWxlKiwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwg
Ym9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpIGNvbnN0OwogICAgIGJvb2wgYm9y
ZGVyT2JzY3VyZXNCYWNrZ3JvdW5kRWRnZShjb25zdCBGbG9hdFNpemUmIGNvbnRleHRTY2FsZSkg
Y29uc3Q7CiAgICAgYm9vbCBib3JkZXJPYnNjdXJlc0JhY2tncm91bmQoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAppbmRleCAxZjUyMjUzYjU4OWFm
YzJhNmU3NWRlYTdkOWRhZTFlMzNiZmVhMTQ5Li5kMDJkMzdlMjc2Y2ZmNTFiMjk2MzRhMDkxNDI1
MDhlYjM4MzI4OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Q291bnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIu
Y3BwCkBAIC05MywzNSArOTMsMzIgQEAgc3RhdGljIGlubGluZSBib29sIGFyZVJlbmRlcmVyc0Vs
ZW1lbnRzU2libGluZ3MoUmVuZGVyT2JqZWN0KiBmaXJzdCwgUmVuZGVyT2JqZWMKIAogLy8gVGhp
cyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHJlbmRlcmVyIHRyZWUgaW4gdGhlIG9yZGVyIG9mIHRo
ZSBET00gdHJlZQogLy8gaW5jbHVkaW5nIHBzZXVkbyBlbGVtZW50cyBhcyBkZWZpbmVkIGluIENT
UyAyLjEuCi1zdGF0aWMgUmVuZGVyT2JqZWN0KiBuZXh0SW5QcmVPcmRlcihjb25zdCBSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgRWxlbWVudCogc3RheVdpdGhpbiwgYm9vbCBza2lwRGVzY2Vu
ZGFudHMgPSBmYWxzZSkKK3N0YXRpYyBSZW5kZXJFbGVtZW50KiBuZXh0SW5QcmVPcmRlcihjb25z
dCBSZW5kZXJFbGVtZW50KiBlbGVtZW50LCBjb25zdCBFbGVtZW50KiBzdGF5V2l0aGluLCBib29s
IHNraXBEZXNjZW5kYW50cyA9IGZhbHNlKQogewotICAgIEVsZW1lbnQqIHNlbGYgPSB0b0VsZW1l
bnQob2JqZWN0LT5ub2RlKCkpOworICAgIEVsZW1lbnQqIHNlbGYgPSBlbGVtZW50LT5lbGVtZW50
KCk7CiAgICAgRWxlbWVudCogbmV4dCA9IHNraXBEZXNjZW5kYW50cyA/IEVsZW1lbnRUcmF2ZXJz
YWw6Om5leHRJbmNsdWRpbmdQc2V1ZG9Ta2lwcGluZ0NoaWxkcmVuKHNlbGYsIHN0YXlXaXRoaW4p
IDogRWxlbWVudFRyYXZlcnNhbDo6bmV4dEluY2x1ZGluZ1BzZXVkbyhzZWxmLCBzdGF5V2l0aGlu
KTsKICAgICB3aGlsZSAobmV4dCAmJiAhbmV4dC0+cmVuZGVyZXIoKSkKICAgICAgICAgbmV4dCA9
IHNraXBEZXNjZW5kYW50cyA/IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQc2V1ZG9T
a2lwcGluZ0NoaWxkcmVuKG5leHQsIHN0YXlXaXRoaW4pIDogRWxlbWVudFRyYXZlcnNhbDo6bmV4
dEluY2x1ZGluZ1BzZXVkbyhuZXh0LCBzdGF5V2l0aGluKTsKICAgICByZXR1cm4gbmV4dCA/IG5l
eHQtPnJlbmRlcmVyKCkgOiAwOwogfQogCi1zdGF0aWMgYm9vbCBwbGFuQ291bnRlcihSZW5kZXJP
YmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sJiBpc1Jl
c2V0LCBpbnQmIHZhbHVlKQorc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyRWxlbWVudCog
b2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wmIGlzUmVzZXQsIGlu
dCYgdmFsdWUpCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKLSAgICAvLyBSZWFsIHRleHQgbm9k
ZXMgZG9uJ3QgaGF2ZSB0aGVpciBvd24gc3R5bGUgc28gdGhleSBjYW4ndCBoYXZlIGNvdW50ZXJz
LgotICAgIC8vIFdlIGNhbid0IGV2ZW4gbG9vayBhdCB0aGVpciBzdHlsZXMgb3Igd2UnbGwgc2Vl
IGV4dHJhIHJlc2V0cyBhbmQgaW5jcmVtZW50cyEKLSAgICBpZiAob2JqZWN0LT5pc1RleHQoKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIE5vZGUqIGdlbmVyYXRpbmdOb2RlID0gb2JqZWN0
LT5nZW5lcmF0aW5nTm9kZSgpOwogICAgIC8vIFdlIG11c3QgaGF2ZSBhIGdlbmVyYXRpbmcgbm9k
ZSBvciBlbHNlIHdlIGNhbm5vdCBoYXZlIGEgY291bnRlci4KLSAgICBpZiAoIWdlbmVyYXRpbmdO
b2RlKQorICAgIEVsZW1lbnQqIGdlbmVyYXRpbmdFbGVtZW50ID0gb2JqZWN0LT5nZW5lcmF0aW5n
RWxlbWVudCgpOworICAgIGlmICghZ2VuZXJhdGluZ0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IG9iamVjdC0+c3R5bGUoKTsKICAgICBB
U1NFUlQoc3R5bGUpOwogCiAgICAgc3dpdGNoIChzdHlsZS0+c3R5bGVUeXBlKCkpIHsKICAgICBj
YXNlIE5PUFNFVURPOgotICAgICAgICAvLyBTb21ldGltZXMgbm9kZXMgaGF2ZSBtb3JlIHRoZW4g
b25lIHJlbmRlcmVyLiBPbmx5IHRoZSBmaXJzdCBvbmUgZ2V0cyB0aGUgY291bnRlcgorICAgICAg
ICAvLyBTb21ldGltZXMgZWxlbWVudHMgaGF2ZSBtb3JlIHRoZW4gb25lIHJlbmRlcmVyLiBPbmx5
IHRoZSBmaXJzdCBvbmUgZ2V0cyB0aGUgY291bnRlcgogICAgICAgICAvLyBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2Nzcy9jb3VudGVyLWNyYXNoLmh0bWwKLSAgICAgICAgaWYgKGdlbmVyYXRpbmdO
b2RlLT5yZW5kZXJlcigpICE9IG9iamVjdCkKKyAgICAgICAgaWYgKGdlbmVyYXRpbmdFbGVtZW50
LT5yZW5kZXJlcigpICE9IG9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBCRUZPUkU6CkBAIC0xNDksNyArMTQ2LDcgQEAgc3RhdGljIGJv
b2wgcGxhbkNvdW50ZXIoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYg
aWRlbnRpZmllciwgYm8KICAgICAgICAgICAgIGlzUmVzZXQgPSBmYWxzZTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChOb2RlKiBlID0gb2JqZWN0LT5u
b2RlKCkpIHsKKyAgICAgICAgaWYgKEVsZW1lbnQqIGUgPSBvYmplY3QtPmVsZW1lbnQoKSkgewog
ICAgICAgICAgICAgaWYgKGUtPmhhc1RhZ05hbWUob2xUYWcpKSB7CiAgICAgICAgICAgICAgICAg
dmFsdWUgPSBzdGF0aWNfY2FzdDxIVE1MT0xpc3RFbGVtZW50Kj4oZSktPnN0YXJ0KCk7CiAgICAg
ICAgICAgICAgICAgaXNSZXNldCA9IHRydWU7CkBAIC0yOTksOCArMjk2LDE1IEBAIHN0YXRpYyBD
b3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBB
dG9taWNTdHJpbmcmIGlkCiB7CiAgICAgQVNTRVJUKG9iamVjdCk7CiAKLSAgICBpZiAob2JqZWN0
LT5oYXNDb3VudGVyTm9kZU1hcCgpKSB7Ci0gICAgICAgIGlmIChDb3VudGVyTWFwKiBub2RlTWFw
ID0gY291bnRlck1hcHMoKS5nZXQob2JqZWN0KSkgeworICAgIC8vIFJlYWwgdGV4dCBub2RlcyBk
b24ndCBoYXZlIHRoZWlyIG93biBzdHlsZSBzbyB0aGV5IGNhbid0IGhhdmUgY291bnRlcnMuCisg
ICAgLy8gV2UgY2FuJ3QgZXZlbiBsb29rIGF0IHRoZWlyIHN0eWxlcyBvciB3ZSdsbCBzZWUgZXh0
cmEgcmVzZXRzIGFuZCBpbmNyZW1lbnRzIQorICAgIGlmIChvYmplY3QtPmlzVGV4dCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFJlbmRlckVsZW1lbnQqIGVsZW1lbnQgPSB0b1Jl
bmRlckVsZW1lbnQob2JqZWN0KTsKKworICAgIGlmIChlbGVtZW50LT5oYXNDb3VudGVyTm9kZU1h
cCgpKSB7CisgICAgICAgIGlmIChDb3VudGVyTWFwKiBub2RlTWFwID0gY291bnRlck1hcHMoKS5n
ZXQoZWxlbWVudCkpIHsKICAgICAgICAgICAgIGlmIChDb3VudGVyTm9kZSogbm9kZSA9IG5vZGVN
YXAtPmdldChpZGVudGlmaWVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAg
ICAgfQpAQCAtMzA4LDIxICszMTIsMjEgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRl
ck5vZGUoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQKIAogICAg
IGJvb2wgaXNSZXNldCA9IGZhbHNlOwogICAgIGludCB2YWx1ZSA9IDA7Ci0gICAgaWYgKCFwbGFu
Q291bnRlcihvYmplY3QsIGlkZW50aWZpZXIsIGlzUmVzZXQsIHZhbHVlKSAmJiAhYWx3YXlzQ3Jl
YXRlQ291bnRlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFwbGFuQ291bnRlcihlbGVt
ZW50LCBpZGVudGlmaWVyLCBpc1Jlc2V0LCB2YWx1ZSkgJiYgIWFsd2F5c0NyZWF0ZUNvdW50ZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVmUHRyPENvdW50ZXJOb2RlPiBuZXdQ
YXJlbnQgPSAwOwogICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3UHJldmlvdXNTaWJsaW5nID0g
MDsKLSAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5ld05vZGUgPSBDb3VudGVyTm9kZTo6Y3JlYXRl
KG9iamVjdCwgaXNSZXNldCwgdmFsdWUpOwotICAgIGlmIChmaW5kUGxhY2VGb3JDb3VudGVyKG9i
amVjdCwgaWRlbnRpZmllciwgaXNSZXNldCwgbmV3UGFyZW50LCBuZXdQcmV2aW91c1NpYmxpbmcp
KQorICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3Tm9kZSA9IENvdW50ZXJOb2RlOjpjcmVhdGUo
ZWxlbWVudCwgaXNSZXNldCwgdmFsdWUpOworICAgIGlmIChmaW5kUGxhY2VGb3JDb3VudGVyKGVs
ZW1lbnQsIGlkZW50aWZpZXIsIGlzUmVzZXQsIG5ld1BhcmVudCwgbmV3UHJldmlvdXNTaWJsaW5n
KSkKICAgICAgICAgbmV3UGFyZW50LT5pbnNlcnRBZnRlcihuZXdOb2RlLmdldCgpLCBuZXdQcmV2
aW91c1NpYmxpbmcuZ2V0KCksIGlkZW50aWZpZXIpOwogICAgIENvdW50ZXJNYXAqIG5vZGVNYXA7
Ci0gICAgaWYgKG9iamVjdC0+aGFzQ291bnRlck5vZGVNYXAoKSkKLSAgICAgICAgbm9kZU1hcCA9
IGNvdW50ZXJNYXBzKCkuZ2V0KG9iamVjdCk7CisgICAgaWYgKGVsZW1lbnQtPmhhc0NvdW50ZXJO
b2RlTWFwKCkpCisgICAgICAgIG5vZGVNYXAgPSBjb3VudGVyTWFwcygpLmdldChlbGVtZW50KTsK
ICAgICBlbHNlIHsKICAgICAgICAgbm9kZU1hcCA9IG5ldyBDb3VudGVyTWFwOwotICAgICAgICBj
b3VudGVyTWFwcygpLnNldChvYmplY3QsIGFkb3B0UHRyKG5vZGVNYXApKTsKLSAgICAgICAgb2Jq
ZWN0LT5zZXRIYXNDb3VudGVyTm9kZU1hcCh0cnVlKTsKKyAgICAgICAgY291bnRlck1hcHMoKS5z
ZXQoZWxlbWVudCwgYWRvcHRQdHIobm9kZU1hcCkpOworICAgICAgICBlbGVtZW50LT5zZXRIYXND
b3VudGVyTm9kZU1hcCh0cnVlKTsKICAgICB9CiAgICAgbm9kZU1hcC0+c2V0KGlkZW50aWZpZXIs
IG5ld05vZGUpOwogICAgIGlmIChuZXdOb2RlLT5wYXJlbnQoKSkKQEAgLTMzMCw5ICszMzQsOSBA
QCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVj
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZAogICAgIC8vIENoZWNraW5nIGlmIHNvbWUgbm9kZXMg
dGhhdCB3ZXJlIHByZXZpb3VzbHkgY291bnRlciB0cmVlIHJvb3Qgbm9kZXMKICAgICAvLyBzaG91
bGQgYmVjb21lIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSBub3cuCiAgICAgQ291bnRlck1hcHMmIG1h
cHMgPSBjb3VudGVyTWFwcygpOwotICAgIEVsZW1lbnQqIHN0YXlXaXRoaW4gPSBwYXJlbnRPclBz
ZXVkb0hvc3RFbGVtZW50KG9iamVjdCk7CisgICAgRWxlbWVudCogc3RheVdpdGhpbiA9IHBhcmVu
dE9yUHNldWRvSG9zdEVsZW1lbnQoZWxlbWVudCk7CiAgICAgYm9vbCBza2lwRGVzY2VuZGFudHM7
Ci0gICAgZm9yIChSZW5kZXJPYmplY3QqIGN1cnJlbnRSZW5kZXJlciA9IG5leHRJblByZU9yZGVy
KG9iamVjdCwgc3RheVdpdGhpbik7IGN1cnJlbnRSZW5kZXJlcjsgY3VycmVudFJlbmRlcmVyID0g
bmV4dEluUHJlT3JkZXIoY3VycmVudFJlbmRlcmVyLCBzdGF5V2l0aGluLCBza2lwRGVzY2VuZGFu
dHMpKSB7CisgICAgZm9yIChSZW5kZXJFbGVtZW50KiBjdXJyZW50UmVuZGVyZXIgPSBuZXh0SW5Q
cmVPcmRlcihlbGVtZW50LCBzdGF5V2l0aGluKTsgY3VycmVudFJlbmRlcmVyOyBjdXJyZW50UmVu
ZGVyZXIgPSBuZXh0SW5QcmVPcmRlcihjdXJyZW50UmVuZGVyZXIsIHN0YXlXaXRoaW4sIHNraXBE
ZXNjZW5kYW50cykpIHsKICAgICAgICAgc2tpcERlc2NlbmRhbnRzID0gZmFsc2U7CiAgICAgICAg
IGlmICghY3VycmVudFJlbmRlcmVyLT5oYXNDb3VudGVyTm9kZU1hcCgpKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0zOTMsNyArMzk3LDcgQEAgYm9vbCBSZW5kZXJDb3VudGVyOjppc0NvdW50
ZXIoKSBjb25zdAogU3RyaW5nIFJlbmRlckNvdW50ZXI6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFtX2NvdW50ZXJOb2RlKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogYmVmb3Jl
QWZ0ZXJDb250YWluZXIgPSBwYXJlbnQoKTsKKyAgICAgICAgUmVuZGVyRWxlbWVudCogYmVmb3Jl
QWZ0ZXJDb250YWluZXIgPSBwYXJlbnQoKTsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAg
ICAgICAgIGlmICghYmVmb3JlQWZ0ZXJDb250YWluZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmlu
ZGV4IGMyYmY4OGM2ZGZjYjk3YjhhMDYyNWJhNzVmYTUxNmM0YTAzMmI4Y2QuLjYzZjI2OWFjZjcw
NjEzOGVlNDE5MDZjNzNmOGU1YjQ2ZjE3MWE4MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDEwIEBAIFJlbmRlckVsZW1lbnQ6On5S
ZW5kZXJFbGVtZW50KCkKICAgICAgICAgICAgIG1hc2tCb3hJbWFnZS0+cmVtb3ZlQ2xpZW50KHRo
aXMpOwogCiAjaWYgRU5BQkxFKENTU19TSEFQRVMpCi0gICAgICAgIHJlbW92ZVNoYXBlSW1hZ2VD
bGllbnQobV9zdHlsZS0+c2hhcGVJbnNpZGUoKSk7CisgICAgICAgIGlmIChhdXRvIHNoYXBlVmFs
dWUgPSBtX3N0eWxlLT5zaGFwZUluc2lkZSgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBzaGFw
ZUltYWdlID0gc2hhcGVWYWx1ZS0+aW1hZ2UoKSkKKyAgICAgICAgICAgICAgICBzaGFwZUltYWdl
LT5yZW1vdmVDbGllbnQodGhpcyk7CisgICAgICAgIH0KICNlbmRpZgogICAgIH0KIH0KQEAgLTk5
MCw2ICs5OTMsOCBAQCB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZVJlbW92ZWRGcm9tVHJlZSgp
CiAKIHZvaWQgUmVuZGVyRWxlbWVudDo6d2lsbEJlRGVzdHJveWVkKCkKIHsKKyAgICBhbmltYXRp
b24oKS5jYW5jZWxBbmltYXRpb25zKHRoaXMpOworCiAgICAgZGVzdHJveUxlZnRvdmVyQ2hpbGRy
ZW4oKTsKIAogICAgIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCk7CkBAIC0xMDAzLDEy
ICsxMDA4LDEzIEBAIFJlbmRlckVsZW1lbnQqIFJlbmRlckVsZW1lbnQ6OnJlbmRlcmVyRm9yUm9v
dEJhY2tncm91bmQoKQogICAgICAgICAvLyB0byBjcmF3bCBhcm91bmQgYSByZW5kZXIgdHJlZSB3
aXRoIHBvdGVudGlhbCA6YmVmb3JlLzphZnRlciBjb250ZW50IGFuZAogICAgICAgICAvLyBhbm9u
eW1vdXMgYmxvY2tzIGNyZWF0ZWQgYnkgaW5saW5lIDxib2R5PiB0YWdzIGV0Yy4gV2UgY2FuIGxv
Y2F0ZSB0aGUgPGJvZHk+CiAgICAgICAgIC8vIHJlbmRlciBvYmplY3QgdmVyeSBlYXNpbHkgdmlh
IHRoZSBET00uCi0gICAgICAgIEhUTUxFbGVtZW50KiBib2R5ID0gZG9jdW1lbnQoKS5ib2R5KCk7
Ci0gICAgICAgIFJlbmRlckVsZW1lbnQqIGJvZHlPYmplY3QgPSAoYm9keSAmJiBib2R5LT5oYXNM
b2NhbE5hbWUoSFRNTE5hbWVzOjpib2R5VGFnKSkgPyBib2R5LT5yZW5kZXJlcigpIDogMDsKLSAg
ICAgICAgaWYgKGJvZHlPYmplY3QpCi0gICAgICAgICAgICByZXR1cm4gYm9keU9iamVjdDsKKyAg
ICAgICAgaWYgKGF1dG8gYm9keSA9IGRvY3VtZW50KCkuYm9keSgpKSB7CisgICAgICAgICAgICBp
ZiAoYm9keS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byByZW5kZXJlciA9IGJvZHktPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0K
LQogICAgIHJldHVybiB0aGlzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKaW5kZXggNzA3MDljMmM3YjQzNDA0MjBhZGU3YzZkMjI5
YWQxZTE0NTE5NDg3MC4uZDExY2JjOWQ3ZjU2ZGYwNTYyNzAxNzhkMDI3MDc4NGY0ZTIzZjZkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNw
cApAQCAtNDQsNyArNDQsNyBAQCBSZW5kZXJJbWFnZVJlc291cmNlOjp+UmVuZGVySW1hZ2VSZXNv
dXJjZSgpCiB7CiB9CiAKLXZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5pdGlhbGl6ZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFsaXpl
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIEFTU0VSVCghbV9yZW5kZXJlcik7CiAg
ICAgQVNTRVJUKHJlbmRlcmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
SW1hZ2VSZXNvdXJjZS5oCmluZGV4IDJmN2ZiOWFkNTEyNzJhZjdjZTJlZDAxN2RkNjZlMmVjNTlj
Y2NlMDguLjUzMzliMzJiOTk5NWEyMjMzZjczZjUxMzcxZGIxYzZmMDc0M2Y1ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaApAQCAtMzMsNyAr
MzMsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlck9iamVjdDsKK2Ns
YXNzIFJlbmRlckVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdlUmVzb3VyY2UgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFJlbmRlckltYWdlUmVzb3VyY2UpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFJlbmRlckltYWdlUmVzb3VyY2UpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBp
bml0aWFsaXplKFJlbmRlck9iamVjdCopOworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFJl
bmRlckVsZW1lbnQqKTsKICAgICB2aXJ0dWFsIHZvaWQgc2h1dGRvd24oKTsKIAogICAgIHZvaWQg
c2V0Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgog
CiBwcm90ZWN0ZWQ6CiAgICAgUmVuZGVySW1hZ2VSZXNvdXJjZSgpOwotICAgIFJlbmRlck9iamVj
dCogbV9yZW5kZXJlcjsKKyAgICBSZW5kZXJFbGVtZW50KiBtX3JlbmRlcmVyOwogICAgIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2NhY2hlZEltYWdlOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZS5jcHAKaW5kZXggNDRlZmUyZjk4OGE3M2U1Y2E4MmQzN2I3MDJjODY2MjZk
ZWU0NzVmMC4uZTUwNTJmMThmMDg4NzlkZWFiMmIzYjYzYTdlMjkyNTkwMTY5ZWJmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUlt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJj
ZVN0eWxlSW1hZ2UuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFJlbmRlckltYWdlUmVzb3VyY2VTdHls
ZUltYWdlOjp+UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UoKQogewogfQogCi12b2lkIFJl
bmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbml0aWFsaXplKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIpCit2b2lkIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlOjppbml0aWFsaXplKFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIFJlbmRlckltYWdlUmVzb3VyY2U6OmluaXRp
YWxpemUocmVuZGVyZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oCmluZGV4IGY0M2ZmNzIyYzdiYjNlMTA4
ZTc2ZmM1MTM4NDljOTBmMmUzYjBmMmQuLmYyZTg4Y2M1N2UyMWUwNWE5NWE2ODEwNDczMTZjYThk
NDEzMDliNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZVJlc291cmNlU3R5bGVJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5oCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsK
IAogY2xhc3MgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UgOiBwdWJsaWMgUmVuZGVySW1h
Z2VSZXNvdXJjZSB7CiBwdWJsaWM6CkBAIC00MiwyNCArNDIsMjUgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFn
ZShzdHlsZUltYWdlKSk7CiAgICAgfQotICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFJlbmRl
ck9iamVjdCopOwotICAgIHZpcnR1YWwgdm9pZCBzaHV0ZG93bigpOwogCi0gICAgdmlydHVhbCBi
b29sIGhhc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxJbWFnZT4gaW1hZ2UoaW50IHdpZHRoID0gMCwgaW50IGhlaWdodCA9IDApIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUlt
YWdlLT5lcnJvck9jY3VycmVkKCk7IH0KK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIGluaXRp
YWxpemUoUmVuZGVyRWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzaHV0ZG93
bigpIE9WRVJSSURFOworCisgICAgdmlydHVhbCBib29sIGhhc0ltYWdlKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2Uo
aW50IHdpZHRoID0gMCwgaW50IGhlaWdodCA9IDApIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zdHlsZUlt
YWdlLT5lcnJvck9jY3VycmVkKCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJT
aXplRm9yUmVuZGVyZXIoY29uc3QgSW50U2l6ZSYpOwotICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1h
Z2VDb250YWluZXJTaXplKCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT51c2VzSW1hZ2VD
b250YWluZXJTaXplKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRo
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlV2lkdGgoKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9zdHlsZUltYWdlLT5pbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IEludFNpemUmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9Cisg
ICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CiAKICAgICB2aXJ0dWFs
IExheW91dFNpemUgaW1hZ2VTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpOyB9
CiAgICAgdmlydHVhbCBMYXlvdXRTaXplIGludHJpbnNpY1NpemUoZmxvYXQgbXVsdGlwbGllcikg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5pbWFnZVNpemUobV9yZW5kZXJl
ciwgbXVsdGlwbGllcik7IH0KIAotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGltYWdlUHRy
KCkgY29uc3QgeyByZXR1cm4gbV9zdHlsZUltYWdlLT5kYXRhKCk7IH0KKyAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc3R5bGVJ
bWFnZS0+ZGF0YSgpOyB9CiAKLXByaXZhdGU6CiAgICAgZXhwbGljaXQgUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UoU3R5bGVJbWFnZSopOwogICAgIFJlZlB0cjxTdHlsZUltYWdlPiBtX3N0
eWxlSW1hZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmMDhhNTRiOTRlMDFmZGU0MzU3MTQwMWRhNjQxN2VlNmRm
YjY3MjRjLi40NmFlZjQ4YjhhYTlhODY3MDJmNDUyOTdmNjdmMDkyODk5NzA3OWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApA
QCAtMTczOCw3ICsxNzM4LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNob3VsZFBy
b3BhZ2F0ZUNvbXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSgpIGNvbnN0CiAgICAgLy8gaXMgdG8g
aGF2ZSB0aGUgcGFyZW50IGRvY3VtZW50IGJlY29tZSBjb21wb3NpdGVkIHRvby4gSG93ZXZlciwg
dGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgb24gcGxhdGZvcm1zIHRoYXQKICAgICAvLyB1c2UgbmF0
aXZlIHZpZXdzIGZvciBmcmFtZXMgKGxpa2UgTWFjKSwgc28gZGlzYWJsZSB0aGF0IGJlaGF2aW9y
IG9uIHRob3NlIHBsYXRmb3JtcyBmb3Igbm93LgogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50ID0gbV9yZW5kZXJWaWV3LmRvY3VtZW50KCkub3duZXJFbGVtZW50KCk7Ci0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG93bmVyRWxlbWVudCA/IG93bmVyRWxlbWVudC0+
cmVuZGVyZXIoKSA6IDA7CisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBvd25lckVsZW1l
bnQgPyBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCkgOiAwOwogCiAgICAgLy8gSWYgd2UgYXJlIHRo
ZSB0b3AtbGV2ZWwgZnJhbWUsIGRvbid0IHByb3BhZ2F0ZS4KICAgICBpZiAoIW93bmVyRWxlbWVu
dCkKQEAgLTE3ODAsNyArMTc4MCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpuZWVk
c1RvQmVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyCiAvLyBzdGF0
aWMKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIo
Y29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5l
ZE5vdENvbXBvc2l0ZWRSZWFzb24qIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVh
c29uKSBjb25zdAogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmbGF5ZXItPnJlbmRl
cmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSAmbGF5ZXItPnJlbmRlcmVyKCk7
CiAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIGEgcmVmbGVjdGlvbiBzaG91bGQgbWF0
Y2ggdGhhdCBvZiBpdHMgcmVmbGVjdGVkIGxheWVyLgogICAgIGlmIChsYXllci0+aXNSZWZsZWN0
aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCk7IC8vIFRoZSBS
ZW5kZXJSZXBsaWNhJ3MgcGFyZW50IGlzIHRoZSBvYmplY3QgYmVpbmcgcmVmbGVjdGVkLgpAQCAt
MTgwNSwxMiArMTgwNSwxMiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2FuQmVDb21w
b3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
V2UgZGlzYWJsZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBmb3IgZWxlbWVudHMgaW4gYSBSZW5k
ZXJGbG93VGhyZWFkIGFzIGl0IGRvZXNuJ3Qgd29yayBwcm9wZXJseS4KICAgICAvLyBTZWUgaHR0
cDovL3dlYmtpdC5vcmcvYi84NDkwMCB0byByZS1lbmFibGUgaXQuCi0gICAgcmV0dXJuIG1faGFz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZyAmJiBsYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpICYm
IGxheWVyLT5yZW5kZXJlcigpLmZsb3dUaHJlYWRTdGF0ZSgpID09IFJlbmRlck9iamVjdDo6Tm90
SW5zaWRlRmxvd1RocmVhZDsKKyAgICByZXR1cm4gbV9oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5n
ICYmIGxheWVyLT5pc1NlbGZQYWludGluZ0xheWVyKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkuZmxv
d1RocmVhZFN0YXRlKCkgPT0gUmVuZGVyRWxlbWVudDo6Tm90SW5zaWRlRmxvd1RocmVhZDsKIH0K
IAogYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGNv
bnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5j
ZXN0b3JMYXllciwgY29uc3QgSW50UmVjdCYgbGF5ZXJDb21wb3NpdGVkQm91bmRzSW5BbmNlc3Rv
ciwgY29uc3QgSW50UmVjdCYgYW5jZXN0b3JDb21wb3NpdGVkQm91bmRzKSBjb25zdAogewotICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIgPSAmbGF5ZXItPnJlbmRlcmVyKCk7CiAgICAgaWYgKGNvbXBvc2l0
aW5nQW5jZXN0b3JMYXllcgogICAgICAgICAmJiAhKGNvbXBvc2l0aW5nQW5jZXN0b3JMYXllci0+
YmFja2luZygpLT5ncmFwaGljc0xheWVyKCktPmRyYXdzQ29udGVudCgpCiAgICAgICAgICAgICB8
fCBjb21wb3NpdGluZ0FuY2VzdG9yTGF5ZXItPmJhY2tpbmcoKS0+cGFpbnRzSW50b1dpbmRvdygp
CkBAIC0xODU4LDcgKzE4NTgsNyBAQCBDb21wb3NpdGluZ1JlYXNvbnMgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZWFzb25zRm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZQogICAgIGlmICgh
bGF5ZXIgfHwgIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSkKICAgICAgICAgcmV0dXJuIHJlYXNvbnM7
CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJmxheWVyLT5yZW5kZXJlcigpOworICAg
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gJmxheWVyLT5yZW5kZXJlcigpOwogICAgIGlmIChs
YXllci0+aXNSZWZsZWN0aW9uKCkpIHsKICAgICAgICAgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFy
ZW50KCk7CiAgICAgICAgIGxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVy
KS0+bGF5ZXIoKTsKQEAgLTIwNjMsNyArMjA2Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpLmlzU2Nyb2xsYWJsZSgpOwogfQogCi1ib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0oUmVuZGVyRWxlbWVudCogcmVuZGVyZXIp
IGNvbnN0CiB7CiAgICAgaWYgKCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50
OjpUaHJlZURUcmFuc2Zvcm1UcmlnZ2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjA3
NCw3ICsyMDc0LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JUcmFuc2Zvcm0oUmVuZGVyT2JqZWN0KiByZW5kZXIKICAgICByZXR1cm4gcmVuZGVy
ZXItPmhhc1RyYW5zZm9ybSgpICYmIHN0eWxlLT50cmFuc2Zvcm0oKS5oYXMzRE9wZXJhdGlvbigp
OwogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0Zv
clZpZGVvKFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKSBjb25zdAogewogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNs
aWVudDo6VmlkZW9UcmlnZ2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjEwMiwxMyAr
MjEwMiwxMyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclZpZGVvKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckNhbnZh
cyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52YXMoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIp
IGNvbnN0CiB7CiAgICAgaWYgKCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50
OjpDYW52YXNUcmlnZ2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKHJlbmRl
cmVyLT5pc0NhbnZhcygpKSB7Ci0gICAgICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBz
dGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHJlbmRlcmVyLT5ub2RlKCkpOworICAgICAg
ICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gdG9IVE1MQ2FudmFzRWxlbWVudChyZW5kZXJl
ci0+ZWxlbWVudCgpKTsKICNpZiBVU0UoQ09NUE9TSVRJTkdfRk9SX1NNQUxMX0NBTlZBU0VTKQog
ICAgICAgICBib29sIGlzQ2FudmFzTGFyZ2VFbm91Z2hUb0ZvcmNlQ29tcG9zaXRpbmcgPSB0cnVl
OwogI2Vsc2UKQEAgLTIxMTYsMTAgKzIxMTYsMTEgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
ICNlbmRpZgogICAgICAgICByZXR1cm4gY2FudmFzLT5yZW5kZXJpbmdDb250ZXh0KCkgJiYgY2Fu
dmFzLT5yZW5kZXJpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWQoKSAmJiAoY2FudmFzLT5yZW5k
ZXJpbmdDb250ZXh0KCktPmlzM2QoKSB8fCBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3JjZUNvbXBv
c2l0aW5nKTsKICAgICB9CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21w
b3NpdGluZ0ZvclBsdWdpbihSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBp
ZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGllbnQ6OlBsdWdpblRyaWdnZXIp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTQwLDcgKzIxNDEsNyBAQCBib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBjb250ZW50Qm94LmhlaWdodCgpICogY29udGVudEJv
eC53aWR0aCgpID4gMTsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JGcmFtZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBpZiAoIXJlbmRlcmVyLT5pc1dpZGdldCgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMTY1LDcgKzIxNjYsNyBAQCBib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiAgICAgcmV0dXJuIGNvbnRlbnRCb3guaGVpZ2h0KCkgKiBjb250ZW50Qm94
LndpZHRoKCkgPiAwOwogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXND
b21wb3NpdGluZ0ZvckFuaW1hdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24o
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgaWYgKCEobV9jb21wb3NpdGlu
Z1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpBbmltYXRpb25UcmlnZ2VyKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjE4Miw3ICsyMTgzLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXIK
ICAgICAgICAgICAgIHx8IGFuaW1Db250cm9sbGVyLmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVy
ZXIocmVuZGVyZXIsIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKIH0KIAotYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JJbmRpcmVjdFJlYXNvbihS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBib29sIGhhc0NvbXBvc2l0ZWREZXNjZW5kYW50cywgYm9v
bCBoYXMzRFRyYW5zZm9ybWVkRGVzY2VuZGFudHMsIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBv
c2l0aW5nUmVhc29uJiByZWFzb24pIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBib29sIGhhc0NvbXBvc2l0ZWREZXNjZW5kYW50cywgYm9vbCBoYXMzRFRyYW5zZm9ybWVk
RGVzY2VuZGFudHMsIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uJiByZWFz
b24pIGNvbnN0CiB7CiAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChyZW5kZXJlciktPmxheWVyKCk7CiAKQEAgLTIyMTEsNyArMjIxMiw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24o
UmVuZGVyT2JqZWN0KiByCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yRmlsdGVycyhSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKIHsKICNpZiBF
TkFCTEUoQ1NTX0ZJTFRFUlMpCiAgICAgaWYgKCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hy
b21lQ2xpZW50OjpGaWx0ZXJUcmlnZ2VyKSkKQEAgLTIyMjQsNyArMjIyNSw3IEBAIGJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhSZW5kZXJP
YmplY3QqIHJlbmRlcmVyCiAjZW5kaWYKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBj
b25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JC
bGVuZGluZyhSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKIHsKICNpZiBFTkFCTEUoQ1NT
X0NPTVBPU0lUSU5HKQogICAgIHJldHVybiByZW5kZXJlci0+aGFzQmxlbmRNb2RlKCk7CkBAIC0y
MjUwLDcgKzIyNTEsNyBAQCBzdGF0aWMgYm9vbCBpc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9y
U3RpY2t5TGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBv
c2l0aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwg
UmVuZGVyTGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKiB2aWV3
cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIsIGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTGF5ZXI6OlZpZXdw
b3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKiB2aWV3cG9ydENvbnN0cmFpbmVkTm90
Q29tcG9zaXRlZFJlYXNvbikgY29uc3QKIHsKICAgICAvLyBwb3NpdGlvbjpmaXhlZCBlbGVtZW50
cyB0aGF0IGNyZWF0ZSB0aGVpciBvd24gc3RhY2tpbmcgY29udGV4dCAoZS5nLiBoYXZlIGFuIGV4
cGxpY2l0IHotaW5kZXgsCiAgICAgLy8gb3BhY2l0eSwgdHJhbnNmb3JtKSBjYW4gZ2V0IHRoZWly
IG93biBjb21wb3NpdGVkIGxheWVyLiBBIHN0YWNraW5nIGNvbnRleHQgaXMgcmVxdWlyZWQgb3Ro
ZXJ3aXNlCkBAIC0yMzIxLDcgKzIzMjIsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNvbnN0IFJlbmRlcgogICAg
IHJldHVybiBsYXllci0+bmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiB9CiAKLWJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjppc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlv
bihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmlzUnVubmluZ0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyKSBjb25zdAogewogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENo
cm9tZUNsaWVudDo6QW5pbWF0aW9uVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3Iu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaAppbmRl
eCAwMGI2OWY2NDkzOGY5MTgwZTQwZDhmMTZmY2VkZmRkNGRhNTcyNTMzLi42OGVjMjVjYWRiZGRm
M2RiMGZiMDUyNThmZmM5NmFlNjRhNDI5ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC00MCwxMiArNDAsMTAgQEAgY2xhc3Mg
Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBHcmFwaGljc0xheWVyOwog
Y2xhc3MgR3JhcGhpY3NMYXllclVwZGF0ZXI7CiBjbGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdDsK
K2NsYXNzIFJlbmRlclZpZGVvOwogY2xhc3MgUmVuZGVyV2lkZ2V0OwogY2xhc3MgU2Nyb2xsaW5n
Q29vcmRpbmF0b3I7CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7Ci0j
aWYgRU5BQkxFKFZJREVPKQotY2xhc3MgUmVuZGVyVmlkZW87Ci0jZW5kaWYKIGNsYXNzIFRpbGVk
QmFja2luZzsKIAogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsKQEAgLTMzNyw3ICsz
MzUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVtb3ZlQ29tcG9zaXRlZENoaWxkcmVuKFJlbmRl
ckxheWVyKik7CiAKICAgICBib29sIGxheWVySGFzM0RDb250ZW50KGNvbnN0IFJlbmRlckxheWVy
KikgY29uc3Q7Ci0gICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlv
bihSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkVHJh
bnNmb3JtQW5pbWF0aW9uKFJlbmRlckVsZW1lbnQqKSBjb25zdDsKIAogICAgIGJvb2wgaGFzQW55
QWRkaXRpb25hbENvbXBvc2l0ZWRMYXllcnMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllcikg
Y29uc3Q7CiAKQEAgLTM2MiwxOCArMzYwLDE4IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nQ29v
cmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3Q7CiAKICAgICAvLyBXaGV0aGVy
IGEgcnVubmluZyB0cmFuc2l0aW9uIG9yIGFuaW1hdGlvbiBlbmZvcmNlcyB0aGUgbmVlZCBmb3Ig
YSBjb21wb3NpdGluZyBsYXllci4KLSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmlt
YXRpb24oUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0gICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yVHJhbnNmb3JtKFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21w
b3NpdGluZ0ZvclZpZGVvKFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXND
b21wb3NpdGluZ0ZvckNhbnZhcyhSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICBib29sIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4oUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0gICAgYm9vbCBy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0gICAgYm9v
bCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAg
ICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVu
ZGVyRWxlbWVudCopIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5z
Zm9ybShSZW5kZXJFbGVtZW50KikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yVmlkZW8oUmVuZGVyRWxlbWVudCopIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3Np
dGluZ0ZvckNhbnZhcyhSZW5kZXJFbGVtZW50KikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0Nv
bXBvc2l0aW5nRm9yUGx1Z2luKFJlbmRlckVsZW1lbnQqKSBjb25zdDsKKyAgICBib29sIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JGcmFtZShSZW5kZXJFbGVtZW50KikgY29uc3Q7CisgICAgYm9vbCBy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhSZW5kZXJFbGVtZW50KikgY29uc3Q7CisgICAg
Ym9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVuZGVyRWxlbWVudCopIGNvbnN0
OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZSgpIGNvbnN0
OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCos
IGNvbnN0IFJlbmRlckxheWVyKiwgUmVuZGVyTGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWROb3RD
b21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclBvc2l0aW9uKFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJMYXllciosIFJlbmRlckxh
eWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsK
ICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhjb25zdCBS
ZW5kZXJMYXllciopIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGly
ZWN0UmVhc29uKFJlbmRlck9iamVjdCosIGJvb2wgaGFzQ29tcG9zaXRlZERlc2NlbmRhbnRzLCBi
b29sIGhhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50cywgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29t
cG9zaXRpbmdSZWFzb24mKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JJ
bmRpcmVjdFJlYXNvbihSZW5kZXJFbGVtZW50KiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFu
dHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJl
Y3RDb21wb3NpdGluZ1JlYXNvbiYpIGNvbnN0OwogCiAgICAgdm9pZCBhZGRWaWV3cG9ydENvbnN0
cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKICAgICB2b2lkIHJlZ2lzdGVyT3JVcGRhdGVWaWV3
cG9ydENvbnN0cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZWVlZmM2MmU3MDliZmJlZjMyZTg0ODM2ODI2Njhh
NzQ0ODAzMzkyZC4uYTBiMjJkZDA2MGEzM2RiOTQ1ZDFlZWJjZDU2NTE1ZjNjNzNkMTgwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTczMiw3ICs3MzIs
NyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9zaXRp
b25lZE1vdmVtZW50TGF5b3V0KCkKIAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29udGFp
bmluZ0Jsb2NrKCkgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIG8gPSBwYXJlbnQoKTsKKyAg
ICBSZW5kZXJFbGVtZW50KiBvID0gcGFyZW50KCk7CiAgICAgaWYgKCFvICYmIGlzUmVuZGVyU2Ny
b2xsYmFyUGFydCgpKQogICAgICAgICBvID0gdG9SZW5kZXJTY3JvbGxiYXJQYXJ0KHRoaXMpLT5y
ZW5kZXJlck93bmluZ1Njcm9sbGJhcigpOwogCkBAIC03NTcsOCArNzU3LDggQEAgc3RhdGljIGJv
b2wgbXVzdFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNv
bnN0IEZpbGxMYXllcioKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBNYWtlIHN1cmUg
d2UgaGF2ZSBhIHZhbGlkIGltYWdlLgotICAgIFN0eWxlSW1hZ2UqIGltZyA9IGxheWVyLT5pbWFn
ZSgpOwotICAgIGlmICghaW1nIHx8ICFpbWctPmNhblJlbmRlcihyZW5kZXJlciwgcmVuZGVyZXIt
PnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpCisgICAgU3R5bGVJbWFnZSogaW1hZ2UgPSBsYXll
ci0+aW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Y2FuUmVuZGVyKHJlbmRlcmVy
LCByZW5kZXJlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCFsYXllci0+eFBvc2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVyLT55
UG9zaXRpb24oKS5pc1plcm8oKSkKQEAgLTc3NCw5ICs3NzQsOSBAQCBzdGF0aWMgYm9vbCBtdXN0
UmVwYWludEZpbGxMYXllcnMoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgRmls
bExheWVyKgogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpLmlzUGVyY2VudCgpIHx8IHNpemUuaGVp
Z2h0KCkuaXNQZXJjZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8g
SWYgdGhlIGltYWdlIGhhcyBuZWl0aGVyIGFuIGludHJpbnNpYyB3aWR0aCBub3IgYW4gaW50cmlu
c2ljIGhlaWdodCwgaXRzIHNpemUgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgJ2NvbnRhaW4nLgotICAg
ICAgICBpZiAoKHNpemUud2lkdGgoKS5pc0F1dG8oKSB8fCBzaXplLmhlaWdodCgpLmlzQXV0bygp
KSAmJiBpbWctPmlzR2VuZXJhdGVkSW1hZ2UoKSkKKyAgICAgICAgaWYgKChzaXplLndpZHRoKCku
aXNBdXRvKCkgfHwgc2l6ZS5oZWlnaHQoKS5pc0F1dG8oKSkgJiYgaW1hZ2UtPmlzR2VuZXJhdGVk
SW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAoaW1nLT51
c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCisgICAgfSBlbHNlIGlmIChpbWFnZS0+dXNlc0ltYWdl
Q29udGFpbmVyU2l6ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTc4Nyw3ICs3ODcsNyBAQCBib29sIFJlbmRlck9iamVjdDo6Ym9yZGVySW1hZ2VJc0xv
YWRlZEFuZENhbkJlUmVuZGVyZWQoKSBjb25zdAogICAgIEFTU0VSVChzdHlsZSgpLT5oYXNCb3Jk
ZXIoKSk7CiAKICAgICBTdHlsZUltYWdlKiBib3JkZXJJbWFnZSA9IHN0eWxlKCktPmJvcmRlcklt
YWdlKCkuaW1hZ2UoKTsKLSAgICByZXR1cm4gYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UtPmNh
blJlbmRlcih0aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICYmIGJvcmRlckltYWdlLT5p
c0xvYWRlZCgpOworICAgIHJldHVybiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS0+Y2FuUmVu
ZGVyKHRvUmVuZGVyRWxlbWVudCh0aGlzKSwgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSAmJiBi
b3JkZXJJbWFnZS0+aXNMb2FkZWQoKTsKIH0KIAogYm9vbCBSZW5kZXJPYmplY3Q6Om11c3RSZXBh
aW50QmFja2dyb3VuZE9yQm9yZGVyKCkgY29uc3QKQEAgLTE5ODUsOCArMTk4NSw2IEBAIHZvaWQg
UmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIGlmIChmcmFtZSgpLmV2ZW50SGFu
ZGxlcigpLmF1dG9zY3JvbGxSZW5kZXJlcigpID09IHRoaXMpCiAgICAgICAgIGZyYW1lKCkuZXZl
bnRIYW5kbGVyKCkuc3RvcEF1dG9zY3JvbGxUaW1lcih0cnVlKTsKIAotICAgIGFuaW1hdGlvbigp
LmNhbmNlbEFuaW1hdGlvbnModGhpcyk7Ci0KICAgICAvLyBGb3IgYWNjZXNzaWJpbGl0eSBtYW5h
Z2VtZW50LCBub3RpZnkgdGhlIHBhcmVudCBvZiB0aGUgaW1taW5lbnQgY2hhbmdlIHRvIGl0cyBj
aGlsZCBzZXQuCiAgICAgLy8gV2UgZG8gaXQgbm93LCBiZWZvcmUgcmVtb3ZlKCksIHdoaWxlIHRo
ZSBwYXJlbnQgcG9pbnRlciBpcyBzdGlsbCBhdmFpbGFibGUuCiAgICAgaWYgKEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKQEAgLTE5OTQs
NyArMTk5Miw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogCiAgICAg
cmVtb3ZlRnJvbVBhcmVudCgpOwogCi0gICAgQVNTRVJUKGRvY3VtZW50QmVpbmdEZXN0cm95ZWQo
KSB8fCAhdmlldygpLmZyYW1lVmlldygpLmhhc1Nsb3dSZXBhaW50T2JqZWN0KHRoaXMpKTsKKyAg
ICBBU1NFUlQoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpIHx8ICFpc1JlbmRlckVsZW1lbnQoKSB8
fCAhdmlldygpLmZyYW1lVmlldygpLmhhc1Nsb3dSZXBhaW50T2JqZWN0KHRvUmVuZGVyRWxlbWVu
dCh0aGlzKSkpOwogCiAgICAgLy8gVGhlIHJlbW92ZSgpIGNhbGwgYWJvdmUgbWF5IGludm9rZSBh
eE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZCgpIG9uIHRoZSBwYXJlbnQsIHdoaWNoIG1h
eSByZXF1aXJlIHRoZSBBWCByZW5kZXIKICAgICAvLyBvYmplY3QgZm9yIHRoaXMgcmVuZGVyZXIu
IFNvIHdlIHJlbW92ZSB0aGUgQVggcmVuZGVyIG9iamVjdCBub3csIGFmdGVyIHRoZSByZW5kZXJl
ciBpcyByZW1vdmVkLgpAQCAtMjExNCwxNiArMjExMiw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpk
ZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVuYSgpLCB0aGlzKTsKIH0KIAotI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQotdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVNoYXBlSW1hZ2VD
bGllbnQoU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkKLXsKLSAgICBpZiAoIXNoYXBlVmFsdWUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpZiAoU3R5bGVJbWFnZSogc2hhcGVJbWFnZSA9IHNoYXBlVmFs
dWUtPmltYWdlKCkpCi0gICAgICAgIHNoYXBlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKLX0K
LSNlbmRpZgotCiB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEmIGFy
ZW5hLCB2b2lkKiBiYXNlKQogewogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuaAppbmRleCA2YWUwZTFjYzMwYWY1ZDE2YzViY2QxZjA0OWUyMTRiM2Q5
ZGU2ZmRjLi42YjI4Y2RkOWUwZjk1ZWQ5ZWVkMWUwMzc2N2QxMjZmMDc2NjI2MmJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC05NzIsMTAgKzk3Miw2IEBAIHBy
aXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNXQlIoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgIHZv
aWQgcmVtb3ZlU2hhcGVJbWFnZUNsaWVudChTaGFwZVZhbHVlKik7Ci0jZW5kaWYKLQogI2lmbmRl
ZiBOREVCVUcKICAgICB2b2lkIGNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQo
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clBhcnQuY3BwCmluZGV4IDdmZjVlZGI0MmUzNDRlZjk4ZGVkYjMxMmY4NWNhMDdjN2U3Mzk1NWYu
LmYwYjk2NmI3NjAyNTcxMzdjZGMxMmYzNDNhNDA2MmQ4NmNlNTQ1M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTIwOSwxMCAr
MjA5LDEwIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QKICAgICB9CiB9CiAKLVJlbmRlck9iamVj
dCogUmVuZGVyU2Nyb2xsYmFyUGFydDo6cmVuZGVyZXJPd25pbmdTY3JvbGxiYXIoKSBjb25zdAor
UmVuZGVyQm94KiBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpyZW5kZXJlck93bmluZ1Njcm9sbGJhcigp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX3Njcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX3Njcm9sbGJhci0+b3duaW5nUmVuZGVy
ZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNj
cm9sbGJhclBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQ
YXJ0LmgKaW5kZXggMDFmNmY0N2M2OTRiMTNmMzUyZTVjNGRmN2IxNTIxNGM5MjFiOWE5MS4uNjJj
YWMzZTRkYmE1MzExYzliMjA1ZjAwMDNmNjc0YzcwZDBmNzM2OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCBPVkVSUklE
RSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdpbkJveC5yaWdodCgpKSk7IHJldHVybiBt
X21hcmdpbkJveC5yaWdodCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJTY3JvbGxi
YXJQYXJ0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXJPd25pbmdTY3JvbGxiYXIoKSBjb25zdDsKKyAgICBSZW5kZXJCb3gqIHJlbmRlcmVyT3duaW5n
U2Nyb2xsYmFyKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVX
aWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3U3R5
bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAppbmRl
eCBlMGZkZTU4ZTViNDJkMTA2YzliNzY1YWMxYTRlNTRiZWE1NjcxNzZkLi4yMDljYzEwYWY0MGQ5
YTdmZTcwMTJjZGY4OGZlNWIwNjc2MjQ4ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTI2NCw3ICsxMjY0LDcgQEAgdm9pZCBSZW5kZXJU
YWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mIHBhaW50SW5mbywgY29u
c3QgTGF5b3V0UG8KICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tn
cm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQm
IHBhaW50T2Zmc2V0LCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmplY3QpCit2b2lkIFJlbmRl
clRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUmVuZGVyRWxlbWVudCogYmFja2dy
b3VuZE9iamVjdCkKIHsKICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJvb3Qo
dGhpcykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuaAppbmRleCBmZjNiMzdiZWVhNzM2ZTJkMzFkOGFjZjUzOTY5Y2YxZWY3MzczMGJi
Li5jYzIzYTg0MmE3YzA3MDc1NjYwNGQ5YjIyM2U3YTRiMDQ2MjE5MWYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0xMjgsNyArMTI4LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgYWxpZ25MZWZ0UmlnaHRCb3JkZXJQYWludFJlY3QoaW50JiBsZWZ0WE9m
ZnNldCwgaW50JiByaWdodFhPZmZzZXQpOwogICAgIGJvb2wgYWxpZ25Ub3BCb3R0b21Cb3JkZXJQ
YWludFJlY3QoaW50JiB0b3BZT2Zmc2V0LCBpbnQmIGJvdHRvbVlPZmZzZXQpOwogICAgIHZvaWQg
cGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0g
ICAgdm9pZCBwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCk7CisgICAgdm9pZCBwYWlu
dEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYsIFJl
bmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QpOwogCiAgICAgTGF5b3V0VW5pdCBjZWxsQmFz
ZWxpbmVQb3NpdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNCYXNlbGluZUFsaWduZWQoKSBjb25z
dCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA2MWI2YTBlYjBj
MDBlOTc1MjNiZGRkOGVkMTEwZWU5ZDc2MDZiZTgyLi40NDQwYThjNzA5ODM4NDg0ZmE0ZTYxYzMx
MTI0NDZjZGU4ZDk5MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CkBAIC02Niw3ICs2Niw3IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3Vt
ZW50KQogICAgICwgbV9tYXhpbWFsT3V0bGluZVNpemUoMCkKICAgICAsIG1fcGFnZUxvZ2ljYWxI
ZWlnaHQoMCkKICAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQotICAgICwg
bV9sYXlvdXRTdGF0ZSgwKQorICAgICwgbV9sYXlvdXRTdGF0ZShudWxscHRyKQogICAgICwgbV9s
YXlvdXRTdGF0ZURpc2FibGVDb3VudCgwKQogICAgICwgbV9yZW5kZXJRdW90ZUhlYWQoMCkKICAg
ICAsIG1fcmVuZGVyQ291bnRlckNvdW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuY3BwCmluZGV4IDUzMDc0NzE2N2JmNDdiOTFkOTZiYTdhNzYyYzg5YzE0
Y2RlZGFjMDcuLjNjNTYzYjI3OGRmZDQ2ZDZkMDA5NzQ0ZGM3YTg2MGVkMmQ5MzMyYWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCkBAIC0zNTAsNyAr
MzUwLDcgQEAgYm9vbCBGaWxsTGF5ZXI6OmltYWdlc0FyZUxvYWRlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdl
KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIGlmICghbV9pbWFn
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L0ZpbGxMYXllci5oCmluZGV4IGU5ODA3MzRkYWE0NGZjMDY1OTBiZjRmZTUwNDFiMWUzZWYyNWIx
NjEuLmJlNDgxOGZmZmQ1ZjI2NDFhZTVmZjQ1MTlkMTU3OWEyYWFmMjFhMTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM0LDYgKzM0LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJFbGVtZW50OworCiBzdHJ1Y3QgRmls
bFNpemUgewogICAgIEZpbGxTaXplKCkKICAgICAgICAgOiB0eXBlKFNpemVMZW5ndGgpCkBAIC0x
NjYsNyArMTY4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9uZXh0LT5o
YXNGaXhlZEltYWdlKCkgOiBmYWxzZTsKICAgICB9CiAKLSAgICBib29sIGhhc09wYXF1ZUltYWdl
KGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wgaGFzT3BhcXVlSW1hZ2UoY29u
c3QgUmVuZGVyRWxlbWVudCopIGNvbnN0OwogICAgIGJvb2wgaGFzUmVwZWF0WFkoKSBjb25zdDsK
ICAgICBib29sIGNsaXBPY2NsdWRlc05leHRMYXllcnMoYm9vbCBmaXJzdExheWVyKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlz
dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oCmluZGV4
IDBhYTRkNmZiZTRmNTExM2RiM2ZiZTI3ZTZlOTBiOGJlNGJmMjMyMDIuLjZiOGM3ZjMyM2QwZjU1
ZDAyNmYwNDVkM2Y3NTBkYjE3ZWY3MmQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmgKQEAgLTM0LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xh
c3MgS2V5ZnJhbWVWYWx1ZSB7CkBAIC02Myw3ICs2Miw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIEtl
eWZyYW1lTGlzdCB7CiBwdWJsaWM6Ci0gICAgS2V5ZnJhbWVMaXN0KFJlbmRlck9iamVjdCosIGNv
bnN0IEF0b21pY1N0cmluZyYgYW5pbWF0aW9uTmFtZSkKKyAgICBleHBsaWNpdCBLZXlmcmFtZUxp
c3QoY29uc3QgQXRvbWljU3RyaW5nJiBhbmltYXRpb25OYW1lKQogICAgICAgICA6IG1fYW5pbWF0
aW9uTmFtZShhbmltYXRpb25OYW1lKQogICAgIHsKICAgICAgICAgaW5zZXJ0KEtleWZyYW1lVmFs
dWUoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2UuY3BwCmluZGV4IDZhNzEyODZlMGExZDc3ZjJjMzZmODZlZDk3MTg0YzdhMDIx
NGI3NGIuLjA0ZDU1ZTk0MjIxNjVmMDllYzc5MDFmMDJiYTYyNGE2ODlmYjQwNjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAK
QEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAKICNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2MSw3
IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZTo6ZXJyb3JPY2N1cnJlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIG1faW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsKIH0KIAotTGF5b3V0U2l6ZSBTdHlsZUNhY2hl
ZEltYWdlOjppbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgZmxvYXQgbXVs
dGlwbGllcikgY29uc3QKK0xheW91dFNpemUgU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2VTaXplKGNv
bnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVsdGlw
bGllcik7CiB9CkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2VI
YXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlOjpjb21wdXRlSW50cmlu
c2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRo
LCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykKK3Zv
aWQgU3R5bGVDYWNoZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVu
ZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewogICAgIG1faW1hZ2UtPmNvbXB1dGVJ
bnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJp
bnNpY1JhdGlvKTsKIH0KQEAgLTg2LDI3ICs4NiwyNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2U6
OnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlLT51c2Vz
SW1hZ2VDb250YWluZXJTaXplKCk7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6c2V0Q29u
dGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0
IEludFNpemUmIGltYWdlQ29udGFpbmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJab29tRmFj
dG9yKQordm9pZCBTdHlsZUNhY2hlZEltYWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIo
Y29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIGltYWdlQ29udGFp
bmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKQogewogICAgIG1faW1hZ2Ut
PnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgaW1hZ2VDb250YWluZXJTaXpl
LCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6
OmFkZENsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBTdHlsZUNhY2hlZEltYWdl
OjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgbV9pbWFnZS0+YWRk
Q2xpZW50KHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlOjpyZW1vdmVDbGll
bnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6cmVtb3Zl
Q2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIG1faW1hZ2UtPnJlbW92ZUNs
aWVudChyZW5kZXJlcik7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2U6
OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmKSBjb25zdAorUGFz
c1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGNvbnN0IEludFNpemUmKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgU3R5
bGVDYWNoZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUocmVuZGVyZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZUNhY2hlZEltYWdlLmgKaW5kZXggYjgxYjQzYTUyNDkyYTBmNTNlZTRiNzlhYTJkZWEy
ODk4YzJlODJhYS4uYzU5ZDQ2MDI5ZmY0OWYxZGFhN2JhOGM0M2Q0MzJjMjg0ZDRhZmU5MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5o
CkBAIC0zMiwzNCArMzIsMzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRJ
bWFnZTsKIAotY2xhc3MgU3R5bGVDYWNoZWRJbWFnZSA6IHB1YmxpYyBTdHlsZUltYWdlLCBwcml2
YXRlIENhY2hlZEltYWdlQ2xpZW50IHsKK2NsYXNzIFN0eWxlQ2FjaGVkSW1hZ2UgRklOQUwgOiBw
dWJsaWMgU3R5bGVJbWFnZSwgcHJpdmF0ZSBDYWNoZWRJbWFnZUNsaWVudCB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVD
YWNoZWRJbWFnZT4gY3JlYXRlKENhY2hlZEltYWdlKiBpbWFnZSkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IFN0eWxlQ2FjaGVkSW1hZ2UoaW1hZ2UpKTsgfQogICAgIHZpcnR1YWwgflN0eWxlQ2FjaGVk
SW1hZ2UoKTsKIAotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCB7IHJl
dHVybiBtX2ltYWdlLmdldCgpOyB9Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGNzc1ZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNhblJlbmRlcihjb25z
dCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgaXNMb2FkZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0
KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlt
YWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlSGVpZ2h0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKGNvbnN0IFJlbmRlck9iamVjdCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKTsKLSAgICB2
aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29u
c3QgSW50U2l6ZSYsIGZsb2F0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlck9i
amVjdCopOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJ
bnRTaXplJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBS
ZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBj
YWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KLSAg
ICAKKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTdHlsZUNhY2hlZEltYWdlKENhY2hlZEltYWdl
Kik7CisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gY3NzVmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgY2Fu
UmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBM
YXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGll
cikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0
aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVp
Z2h0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBM
ZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUm
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0
IFJlbmRlckVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKKworICAgIGV4cGxpY2l0IFN0eWxlQ2Fj
aGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKKwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZEltYWdlPiBtX2ltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCmluZGV4IGY0ZjJmOGIzMDA1YjAzZjAz
MThjY2JjOTQyNDRhNTQxOTMyNzFiZjMuLmY5NWIyYzk0MGQwYTA4MTM1NzdlM2Q2MjczOWUxNzg0
OTE0NTdhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVDYWNoZWRJbWFnZVNldC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNT
U0ltYWdlU2V0VmFsdWUuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6ZXJy
b3JPY2N1cnJlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5lcnJvck9jY3Vy
cmVkKCk7CiB9CiAKLUxheW91dFNpemUgU3R5bGVDYWNoZWRJbWFnZVNldDo6aW1hZ2VTaXplKGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CitMYXlv
dXRTaXplIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKIHsKICAgICBMYXlvdXRTaXplIHNj
YWxlZEltYWdlU2l6ZSA9IG1fYmVzdEZpdEltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihyZW5k
ZXJlciwgbXVsdGlwbGllcik7CiAgICAgc2NhbGVkSW1hZ2VTaXplLnNjYWxlKDEgLyBtX2ltYWdl
U2NhbGVGYWN0b3IpOwpAQCAtODYsNyArODYsNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6
OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2VT
ZXQ6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlck9iamVjdCosIExlbmd0
aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGlu
dHJpbnNpY1JhdGlvKQordm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0Ojpjb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwg
TGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCiB7CiAg
ICAgbV9iZXN0Rml0SW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dp
ZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKIH0KQEAgLTk2LDI3ICs5Niwy
NyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBj
b25zdAogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgp
OwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnNldENvbnRhaW5lclNpemVGb3JSZW5k
ZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBpbWFnZUNv
bnRhaW5lclNpemUsIGZsb2F0IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKK3ZvaWQgU3R5bGVD
YWNoZWRJbWFnZVNldDo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBpbWFnZUNvbnRhaW5lclNpemUsIGZsb2F0
IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKIHsKICAgICBtX2Jlc3RGaXRJbWFnZS0+c2V0Q29u
dGFpbmVyU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBpbWFnZUNvbnRhaW5lclNpemUsIGltYWdl
Q29udGFpbmVyWm9vbUZhY3Rvcik7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6YWRk
Q2xpZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6
OmFkZENsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBtX2Jlc3RGaXRJbWFn
ZS0+YWRkQ2xpZW50KHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0Ojpy
ZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVDYWNoZWRJbWFn
ZVNldDo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIG1fYmVz
dEZpdEltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIpOwogfQogCi1QYXNzUmVmUHRyPEltYWdl
PiBTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBJbnRTaXplJikgY29uc3QKK1Bhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6
OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJikgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwog
fQogCi1ib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojprbm93
blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIG1fYmVzdEZpdEltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUocmVuZGVy
ZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q2FjaGVkSW1hZ2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlU2V0LmgKaW5kZXggMjFiMGUwY2FiMDZhODU1MmI0OWVmNDMxZThkYzVmZGE5Y2I2
NmU5NC4uNTY2NjUwNzI3NmUxOTJmM2NiYTI1YzE2NjI2MTZlZDY0YTQ1N2U4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5o
CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIENTU0ltYWdlU2V0VmFsdWU7CiAKIC8vIFRoaXMgY2xh
c3Mga2VlcHMgb25lIGNhY2hlZCBpbWFnZSBhbmQgaGFzIGFjY2VzcyB0byBhIHNldCBvZiBhbHRl
cm5hdGl2ZXMuCiAKLWNsYXNzIFN0eWxlQ2FjaGVkSW1hZ2VTZXQgOiBwdWJsaWMgU3R5bGVJbWFn
ZSwgcHJpdmF0ZSBDYWNoZWRJbWFnZUNsaWVudCB7CitjbGFzcyBTdHlsZUNhY2hlZEltYWdlU2V0
IEZJTkFMIDogcHVibGljIFN0eWxlSW1hZ2UsIHByaXZhdGUgQ2FjaGVkSW1hZ2VDbGllbnQgewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0eWxlQ2FjaGVkSW1hZ2VTZXQ+IGNyZWF0ZShDYWNoZWRJbWFnZSogaW1hZ2UsIGZsb2F0
IGltYWdlU2NhbGVGYWN0b3IsIENTU0ltYWdlU2V0VmFsdWUqIHZhbHVlKQpAQCAtNDksMzIgKzQ5
LDMzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+U3R5bGVDYWNoZWRJbWFnZVNldCgp
OwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9iZXN0Rml0SW1hZ2UuZ2V0KCk7IH0KKworICAgIHZvaWQgY2xlYXJJbWFnZVNldFZh
bHVlKCkgeyBtX2ltYWdlU2V0VmFsdWUgPSBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwogCi0g
ICAgLy8gRklYTUU6IFRoaXMgaXMgdXNlZCBieSBTdHlsZUltYWdlIGZvciBlcXVhbHMgY29tcGFy
aXNvbiwgYnV0IHRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAvLyBGSVhNRTogVGhpcyBpcyB1c2Vk
IGJ5IFN0eWxlSW1hZ2UgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb24sIGJ1dCB0aGlzIGltcGxlbWVu
dGF0aW9uCiAgICAgLy8gb25seSBsb29rcyBhdCB0aGUgaW1hZ2UgZnJvbSB0aGUgc2V0IHRoYXQg
d2UgaGF2ZSBsb2FkZWQuIEknbSBub3Qgc3VyZSBpZiB0aGF0IGlzCiAgICAgLy8gbWVhbmluZ2Z1
bCBlbm91Z2ggb3Igbm90LgotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25z
dCB7IHJldHVybiBtX2Jlc3RGaXRJbWFnZS5nZXQoKTsgfQotCi0gICAgdm9pZCBjbGVhckltYWdl
U2V0VmFsdWUoKSB7IG1faW1hZ2VTZXRWYWx1ZSA9IDA7IH0KLQotICAgIHZpcnR1YWwgYm9vbCBj
YW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Q7Ci0g
ICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGVycm9y
T2NjdXJyZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNvbnN0
IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VI
YXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmlu
c2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRo
LCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbyk7Ci0g
ICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCos
IGNvbnN0IEludFNpemUmLCBmbG9hdCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5k
ZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCop
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29u
c3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgaW1hZ2VTY2FsZUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTY2FsZUZhY3RvcjsgfQotICAgIHZpcnR1YWwgYm9vbCBr
bm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX2Jlc3RGaXRJbWFnZS5nZXQoKTsgfQotICAgIAotcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9iZXN0Rml0SW1h
Z2UuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2Jq
ZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGlzTG9hZGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJy
ZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNv
bnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVy
RWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0
LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0
IEludFNpemUmLCBmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChS
ZW5kZXJFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChS
ZW5kZXJFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBp
bWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1faW1hZ2VTY2FsZUZhY3RvcjsgfQorICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IE9WRVJSSURFOworCiAgICAgU3R5bGVDYWNoZWRJ
bWFnZVNldChDYWNoZWRJbWFnZSosIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IsIENTU0ltYWdlU2V0
VmFsdWUqKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2Jlc3RG
aXRJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBiODE2MWZlZmQzZTgyYzQxOWQ1MTVkZWZlMjliZjQ2
MWQ3NGQyNWZjLi4yNzhhODU3NzAyMWExYjIxMTg0NTAwMTRlNjNhOTlhMDJhZDYzMTUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVk
SW1hZ2UuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJbWFn
ZS5oIgogCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIgotI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHls
ZVJlc29sdmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDcgKzQyLDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25zdAog
ICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWU7CiB9CiAKLUxheW91dFNpemUgU3R5bGVH
ZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGZs
b2F0IG11bHRpcGxpZXIpIGNvbnN0CitMYXlvdXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6Omlt
YWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikg
Y29uc3QKIHsKICAgICBpZiAobV9maXhlZFNpemUpIHsKICAgICAgICAgSW50U2l6ZSBmaXhlZFNp
emUgPSBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmZpeGVkU2l6ZShyZW5kZXJlcik7CkBAIC02NSw3
ICs2NSw3IEBAIExheW91dFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0
IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGZsb2F0IG11CiAgICAgcmV0dXJuIG1fY29udGFpbmVy
U2l6ZTsKIH0KIAotdm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBMZW5ndGgmIGludHJpbnNpY1dp
ZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykK
K3ZvaWQgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29u
c3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0
aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewogICAgIC8v
IEF0IGEgem9vbSBsZXZlbCBvZiAxIHRoZSBpbWFnZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYW4g
aW50ZWdlciBzaXplLgogICAgIEludFNpemUgc2l6ZSA9IGZsb29yZWRJbnRTaXplKGltYWdlU2l6
ZShyZW5kZXJlciwgMSkpOwpAQCAtNzQsMjIgKzc0LDIyIEBAIHZvaWQgU3R5bGVHZW5lcmF0ZWRJ
bWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplOwogfQogCi12b2lkIFN0eWxlR2VuZXJhdGVk
SW1hZ2U6OmFkZENsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBTdHlsZUdlbmVy
YXRlZEltYWdlOjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgbV9p
bWFnZUdlbmVyYXRvclZhbHVlLT5hZGRDbGllbnQocmVuZGVyZXIpOwogfQogCi12b2lkIFN0eWxl
R2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9p
ZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIpCiB7CiAgICAgbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIp
OwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAorUGFzc1JlZlB0
cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2VHZW5l
cmF0b3JWYWx1ZS0+aW1hZ2UocmVuZGVyZXIsIHNpemUpOwogfQogCi1ib29sIFN0eWxlR2VuZXJh
dGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBj
b25zdAorYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2VHZW5lcmF0
b3JWYWx1ZS0+a25vd25Ub0JlT3BhcXVlKHJlbmRlcmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDBlYTRm
ZmI1OGZiZjMxOTEwMzg0ODY3OTcwNjg5OTU5MDc2ZjZmNmEuLjA0MzEwMGMyYjg5MjJjMGIzM2M1
MTgzYmRlYTY2OGMzMWFmY2U5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzEsMzAgKzMxLDMxIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTsKIAotY2xhc3MgU3R5bGVHZW5lcmF0ZWRJbWFnZSA6IHB1YmxpYyBTdHlsZUltYWdlIHsK
K2NsYXNzIFN0eWxlR2VuZXJhdGVkSW1hZ2UgRklOQUwgOiBwdWJsaWMgU3R5bGVJbWFnZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVHZW5lcmF0ZWRJbWFnZT4gY3JlYXRl
KENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBTdHlsZUdlbmVyYXRlZEltYWdlKHZhbHVlKSk7CiAgICAgfQogCi0gICAgdmly
dHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VHZW5lcmF0
b3JWYWx1ZS5nZXQoKTsgfQogICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIGltYWdlVmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCk7IH0KIAotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdDsKLQotICAgIHZpcnR1
YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlw
bGllcikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gIW1fZml4ZWRTaXplOyB9Ci0g
ICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlck9i
amVjdCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBG
bG9hdFNpemUmIGludHJpbnNpY1JhdGlvKTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29u
dGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29u
c3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQpIHsgbV9jb250YWluZXJTaXplID0gY29u
dGFpbmVyU2l6ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0Kik7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUm
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9i
amVjdCopIGNvbnN0IE9WRVJSSURFOwotICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFdyYXBw
ZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbWFnZUdlbmVyYXRv
clZhbHVlLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1Zh
bHVlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXpl
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gIW1fZml4ZWRTaXplOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVu
dCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9h
dFNpemUmIGludHJpbnNpY1JhdGlvKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0KSBPVkVSUklE
RSB7IG1fY29udGFpbmVyU2l6ZSA9IGNvbnRhaW5lclNpemU7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJikgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVt
ZW50KikgY29uc3QgT1ZFUlJJREU7CisKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NSZWZQ
dHI8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4pOwogICAgIAogICAgIFJlZlB0cjxDU1NJbWFnZUdl
bmVyYXRvclZhbHVlPiBtX2ltYWdlR2VuZXJhdG9yVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAppbmRleCA3MGYzMzYwODgzOGQ2YzQxZTcxMjAyMDY3
YzRmNzhlMThiZjIxNzFmLi5jM2NkMTNhZTBiODdlYWMzN2I2NDNiZjI1ZTMwN2QyYTNjNmQxYzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKQEAgLTM2
LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRJbWFnZTsKIGNs
YXNzIENTU1ZhbHVlOworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlck9iamVjdDsK
IAogdHlwZWRlZiB2b2lkKiBXcmFwcGVkSW1hZ2VQdHI7CkBAIC01NCwxOCArNTUsMTggQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxv
YXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGVy
cm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgTGF5b3V0
U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25z
dCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNp
Y0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgPSAwOworICAgIHZpcnR1YWwgTGF5
b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxpZXIp
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMo
Y29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50
cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSA9IDA7CiAgICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IEludFNp
emUmLCBmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0
KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KikgPSAw
OwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29u
c3QgSW50U2l6ZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6
ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KikgPSAwOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNp
emUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biAxOyB9Ci0gICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBS
ZW5kZXJFbGVtZW50KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ2FjaGVkSW1hZ2UqIGNhY2hl
ZEltYWdlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlz
Q2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FjaGVkSW1hZ2U7IH0KQEAgLTczLDE0
ICs3NCw5IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZW5lcmF0ZWRJbWFn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0ZWRJbWFnZTsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0NhY2hlZEltYWdlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZEltYWdl
U2V0OyB9CiAgICAgCi0gICAgc3RhdGljICBib29sIGltYWdlc0VxdWl2YWxlbnQoU3R5bGVJbWFn
ZSogaW1hZ2UxLCBTdHlsZUltYWdlKiBpbWFnZTIpCisgICAgc3RhdGljIGJvb2wgaW1hZ2VzRXF1
aXZhbGVudChTdHlsZUltYWdlKiBpbWFnZTEsIFN0eWxlSW1hZ2UqIGltYWdlMikKICAgICB7Ci0g
ICAgICAgIGlmIChpbWFnZTEgIT0gaW1hZ2UyKSB7Ci0gICAgICAgICAgICBpZiAoIWltYWdlMSB8
fCAhaW1hZ2UyKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHJl
dHVybiAqaW1hZ2UxID09ICppbWFnZTI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgIHJldHVybiBpbWFnZTEgPT0gaW1hZ2UyIHx8IChpbWFnZTEgJiYgaW1hZ2UyICYm
ICppbWFnZTEgPT0gKmltYWdlMik7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC05MSwxMCArODcs
MTAgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1faXNDYWNoZWRJbWFnZVNldChmYWxzZSkKICAg
ICB7CiAgICAgfQotICAgIGJvb2wgbV9pc0NhY2hlZEltYWdlOjE7Ci0gICAgYm9vbCBtX2lzUGVu
ZGluZ0ltYWdlOjE7Ci0gICAgYm9vbCBtX2lzR2VuZXJhdGVkSW1hZ2U6MTsKLSAgICBib29sIG1f
aXNDYWNoZWRJbWFnZVNldDoxOworICAgIGJvb2wgbV9pc0NhY2hlZEltYWdlIDogMTsKKyAgICBi
b29sIG1faXNQZW5kaW5nSW1hZ2UgOiAxOworICAgIGJvb2wgbV9pc0dlbmVyYXRlZEltYWdlIDog
MTsKKyAgICBib29sIG1faXNDYWNoZWRJbWFnZVNldCA6IDE7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCmluZGV4IDEy
ODI3YzZhMTUyZWM4NjQ1MGE5OTk3ZjU4NjYzYjk0YzNlMWE4MTAuLjQzNmFiY2Y1MDI1YWE1NTRh
NzY5NGYzNzk0N2VhZGE5ZDQ1ZDY4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCkBAIC0yOCwxMyArMjgsMTQgQEAKIAogI2lu
Y2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVyYXRv
clZhbHVlLmgiCi0jaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi0jaW5jbHVkZSAiQ1NTSW1hZ2VT
ZXRWYWx1ZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogCisjaWYgRU5BQkxFKENTU19JTUFH
RV9TRVQpCisjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgorI2VuZGlmCisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogLy8gU3R5bGVQZW5kaW5nSW1hZ2UgaXMgYSBwbGFjZWhvbGRlciBTdHls
ZUltYWdlIHRoYXQgaXMgZW50ZXJlZCBpbnRvIHRoZSBSZW5kZXJTdHlsZSBkdXJpbmcKQEAgLTQ1
LDMyICs0NiwzNSBAQCBjbGFzcyBTdHlsZVBlbmRpbmdJbWFnZSA6IHB1YmxpYyBTdHlsZUltYWdl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVBlbmRpbmdJbWFnZT4gY3Jl
YXRlKENTU1ZhbHVlKiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUGVuZGluZ0lt
YWdlKHZhbHVlKSk7IH0KIAotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25z
dCB7IHJldHVybiB0b0NTU0ltYWdlVmFsdWUobV92YWx1ZSk7IH0KLQotICAgIHZpcnR1YWwgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9Ci0g
ICAgQ1NTSW1hZ2VWYWx1ZSogY3NzSW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUt
PmlzSW1hZ2VWYWx1ZSgpID8gdG9DU1NJbWFnZVZhbHVlKG1fdmFsdWUpIDogMDsgfQotICAgIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUqIGNzc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSA/IHN0YXRpY19jYXN0PENTU0lt
YWdlR2VuZXJhdG9yVmFsdWUqPihtX3ZhbHVlKSA6IDA7IH0KLSAgICBDU1NDdXJzb3JJbWFnZVZh
bHVlKiBjc3NDdXJzb3JJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS0+aXNDdXJz
b3JJbWFnZVZhbHVlKCkgPyBzdGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4obV92YWx1
ZSkgOiAwOyB9CisgICAgQ1NTSW1hZ2VWYWx1ZSogY3NzSW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdmFsdWUtPmlzSW1hZ2VWYWx1ZSgpID8gdG9DU1NJbWFnZVZhbHVlKG1fdmFsdWUpIDog
bnVsbHB0cjsgfQorICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIGNzc0ltYWdlR2VuZXJhdG9y
VmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSA/
IHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPihtX3ZhbHVlKSA6IG51bGxwdHI7
IH0KKyAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBjc3NDdXJzb3JJbWFnZVZhbHVlKCkgY29uc3Qg
eyByZXR1cm4gbV92YWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkgPyBzdGF0aWNfY2FzdDxDU1ND
dXJzb3JJbWFnZVZhbHVlKj4obV92YWx1ZSkgOiBudWxscHRyOyB9CiAjaWYgRU5BQkxFKENTU19J
TUFHRV9TRVQpCi0gICAgQ1NTSW1hZ2VTZXRWYWx1ZSogY3NzSW1hZ2VTZXRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUtPmlzSW1hZ2VTZXRWYWx1ZSgpID8gdG9DU1NJbWFnZVNldFZhbHVl
KG1fdmFsdWUpIDogMDsgfQorICAgIENTU0ltYWdlU2V0VmFsdWUqIGNzc0ltYWdlU2V0VmFsdWUo
KSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLT5pc0ltYWdlU2V0VmFsdWUoKSA/IHRvQ1NTSW1hZ2VT
ZXRWYWx1ZShtX3ZhbHVlKSA6IG51bGxwdHI7IH0KICNlbmRpZgorCitwcml2YXRlOgorICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0b0NT
U0ltYWdlVmFsdWUobV92YWx1ZSk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gY3NzVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgCi0g
ICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqLCBmbG9h
dCAvKm11bHRpcGxpZXIqLykgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0U2l6ZSgpOyB9
Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGlt
ZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIC8qIGludHJpbnNpY1dpZHRoICov
ICwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNIZWlnaHQgKi8sIEZsb2F0U2l6ZSYgLyogaW50cmluc2lj
UmF0aW8gKi8pIHsgfQotICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6
ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmLCBmbG9hdCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCopIHsgfQotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpIGNv
bnN0CisgICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50
KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91dFNp
emUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExl
bmd0aCYgLyogaW50cmluc2ljV2lkdGggKi8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdodCAq
LywgRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLykgeyB9CisgICAgdmlydHVhbCBib29s
IHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVu
ZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCkgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREUgeyB9CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREUgeyB9CisKKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJ
bnRTaXplJikgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQot
ICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgCi1wcml2YXRlOgogICAgIFN0eWxlUGVuZGluZ0ltYWdlKENTU1ZhbHVlKiB2YWx1ZSkKICAg
ICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcAppbmRleCA0ZTkwNjIzNGU2ZjM5ZmJlYzQ2NjY1YzZkOGRhZjUwNjIwYjQ3MDFlLi44OTVh
MjYzMDcwYWVhNTBjMjM2Mzc0OWU1NmIxMDdjMDE5MTUyN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwCkBAIC03Nyw3ICs3Nyw2IEBACiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNp
bmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlck1lbnVMaXN0
LmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4
dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgiCkBAIC02OTAsNyArNjg5LDcgQEAgUGFzc1JlZlB0cjxDbGllbnRSZWN0PiBJbnRl
cm5hbHM6OmJvdW5kaW5nQm94KEVsZW1lbnQqIGVsZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGUKICAg
ICB9CiAKICAgICBlbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOwotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5k
ZXJlcigpOworICAgIGF1dG8gcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwogICAgIGlm
ICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBDbGllbnRSZWN0OjpjcmVhdGUoKTsKICAgICBy
ZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKHJlbmRlcmVyLT5hYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dElnbm9yaW5nVHJhbnNmb3JtcygpKTsKQEAgLTIwMDIsNyArMjAwMSw3IEBAIGJvb2wgSW50ZXJu
YWxzOjppc1NlbGVjdFBvcHVwVmlzaWJsZShOb2RlKiBub2RlKQogCiAgICAgSFRNTFNlbGVjdEVs
ZW1lbnQqIHNlbGVjdCA9IHRvSFRNTFNlbGVjdEVsZW1lbnQobm9kZSk7CiAKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gc2VsZWN0LT5yZW5kZXJlcigpOworICAgIGF1dG8gcmVuZGVyZXIg
PSBzZWxlY3QtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlci0+aXNNZW51TGlzdCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTIxMjQsNyArMjEyMyw3IEBAIGJvb2wgSW50ZXJu
YWxzOjppc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQoRWxlbWVudCogZWxl
bWVudCwgRXhjZXB0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVy
ID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+
aXNFbWJlZGRlZE9iamVjdCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwog
ICAgICAgICByZXR1cm4gZmFsc2U7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212935</attachid>
            <date>2013-09-29 15:10:53 -0700</date>
            <delta_ts>2013-09-29 18:37:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122078-20130929151052.patch</filename>
            <type>text/plain</type>
            <size>255041</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggZDk1ZGE1MDJjZTQ0ZjljMjYzZWU2OGNiMDY5OTQ5OTYzNzYwMDRkYS4uNjNmZDhjYWY4Mzc2
Yjg4OGFiMGE4NzhjZTIxMGY0YjQ3YWRiMDY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgUmVuZGVyRWxlbWVudCBpbnN0ZWFkIG9mIFJlbmRlck9iamVj
dCBpbiBtYW55IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBMZXQgWGNvZGUgZG8g
aXRzIHRoaW5nIHRvIHRoaXMgZmlsZS4KKwogMjAxMy0wOS0yNCAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNDk3MTUxOD4gV2ViS2l0IHNo
b3VsZCBidWlsZCBhZ2FpbnN0IHRoZSBYY29kZSBkZWZhdWx0IHRvb2xjaGFpbiB3aGVuIHRhcmdl
dGluZyBPUyBYIDEwLjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyZTg3MWFmMDMxMTgyY2NkMzI1ZjQ1MGQ3Njcz
ZTAxNmIxYmVlZWNmLi43YmNkNzQ4MjUzZTBhNmI5Y2IyN2I3N2ZlYzhhNzE4MDU5ZWU3YjYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkzIEBACisyMDEzLTA5LTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmVuZGVyRWxlbWVudCBpbnN0ZWFkIG9mIFJl
bmRlck9iamVjdCBpbiBtYW55IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlZCBmb3IgbmFtZSBjaGFu
Z2VzLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5r
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmltYWdl
TWFwTGlua1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlJbWFnZU1h
cExpbms6OmRldGFjaEZyb21QYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluazo6ZWxlbWVudFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eUltYWdlTWFwTGluazo6ZWxlbWVudFJlY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCk6CisgICAgICAg
ICogYmluZGluZ3Mvb2JqYy9ET00ubW06CisgICAgICAgICgtW0RPTUVsZW1lbnQgaW1hZ2VdKToK
KyAgICAgICAgKC1bRE9NRWxlbWVudCBfZm9udF0pOgorICAgICAgICAoLVtET01FbGVtZW50IF9p
bWFnZVRJRkZSZXByZXNlbnRhdGlvbl0pOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzUmVzaXplZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDYW52YXNWYWx1ZTo6Y2FudmFzRGVzdHJveWVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjpmaXhlZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
Q2FudmFzVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvQ1NTQ2FudmFzVmFsdWUuaDoKKyAg
ICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXB1dGVSZW5kZXJTdHlsZUZvclByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NT
Q3Jvc3NmYWRlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3ViaW1hZ2VLbm93blRvQmVP
cGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3Jvc3NmYWRlQ2hhbmdlZCk6CisgICAgICAgICog
Y3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6Zml4ZWRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaWx0ZXJJbWFnZUNoYW5nZWQpOgor
ICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHA6CisgICAgICAgICogY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3Jh
ZGllbnRWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0xpbmVh
ckdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Jh
ZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KToKKyAgICAgICAgKiBjc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTR3JhZGllbnRWYWx1ZTo6Zml4ZWRT
aXplKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjphZGRDbGllbnQpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmZpeGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIGNz
cy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpjbGllbnRzKToKKyAgICAgICAgKiBjc3MvQ1NTSW1hZ2VWYWx1ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAg
ICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmg6CisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJr
ZXJzRnJvbUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXJDb250cm9sbGVy
OjpyZXBhaW50TWFya2Vycyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bG9jYWxab29tRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0
Rm9yTG9jYWxab29tKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om9mZnNldFBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1cGRhdGVFeGlzdGluZ1BzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnRSYXJlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0
YTo6RWxlbWVudFJhcmVEYXRhKToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOb2RlOjplbnN1cmVSYXJlRGF0YSk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVC
dXR0b25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzRGVsZXRhYmxlRWxlbWVu
dCk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpoYXNCaWRpU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YmFzZVdy
aXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rpb25TdGFydCk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnZlcnRpY2FsU2Nyb2xsRGlzdGFuY2Up
OgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZGlyZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9y
SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OmdldEltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JN
YWMubW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0SW1hZ2UpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoK
KyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQXJlYUVsZW1lbnQ6OmNvbXB1dGVQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVh
RWxlbWVudDo6Y29tcHV0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVtZW50
OjpzZXRGb2N1cyk6CisgICAgICAgICogaHRtbC9IVE1MQXJlYUVsZW1lbnQuaDoKKyAgICAgICAg
KiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDYW52
YXNFbGVtZW50OjpyZXNldCk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJUZXh0KToKKyAgICAgICAgKiBodG1s
L0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dXBkYXRlRnJv
bUVsZW1lbnRDYWxsYmFjayk6CisgICAgICAgICogaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToKKyAg
ICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRN
TEltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50Ojp4
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OnkpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTEltYWdlRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMpOgor
ICAgICAgICAqIGh0bWwvSFRNTE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE1ldGVyRWxlbWVudDo6cmVuZGVyTWV0ZXIpOgorICAgICAg
ICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9w
dGlvbkVsZW1lbnQ6OmRpZFJlY2FsY1N0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50Ojp3aWxsUmVz
cG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0lu
RWxlbWVudDo6aXNLZXlib2FyZEZvY3VzYWJsZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0lu
SW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTFByb2dyZXNzRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUHJvZ3Jlc3NFbGVtZW50OjpyZW5kZXJQ
cm9ncmVzcyk6CisgICAgICAgICogaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ6OnNldE9wdGlvbnNDaGFuZ2VkT25SZW5kZXJl
cik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0T3B0aW9uKToK
KyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUNlbGxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUYWJsZUNlbGxFbGVtZW50OjpjZWxsQWJvdmUpOgorICAgICAgICAqIGh0bWwvSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aGFzVmlzaWJs
ZVRleHRBcmVhKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpzZXRTZWxlY3Rpb25SYW5nZSk6CisgICAgICAgICogaHRtbC9JbnB1dFR5cGUuaDoKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwOgorICAgICAgICAqIGh0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xFbGVtZW50OjpzZXREaXNwbGF5VHlwZSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sUGFuZWxFbGVtZW50OjpzdGFydERyYWcpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW50
YXRpb25JbWFnZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpNZXRlcklubmVyRWxlbWVudDo6cmVuZGVyZXJJc05lZWRl
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxvYWRlcjo6cmVuZGVySW1hZ2VSZXNvdXJj
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxF
bGVtZW50LmNwcDoKKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6Cisg
ICAgICAgICogcGFnZS9EcmFnQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFn
Q29udHJvbGxlcjo6ZHJhZ2dhYmxlRWxlbWVudCk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpjbGVhcik6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6YXV0b3Njcm9sbFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50
SGFuZGxlcjo6c2Nyb2xsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
Ojpsb2dpY2FsU2Nyb2xsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpzdWJmcmFtZUZvclRhcmdldE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVy
OjpzZWxlY3RDdXJzb3IpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJGb3JOb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyR2VzdHVyZVNjcm9sbE5vZGVzKToKKyAgICAgICAg
KiBwYWdlL0V2ZW50SGFuZGxlci5oOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpv
d25lclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjp2aXNpYmxlUG9zaXRpb25G
b3JQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6bm9kZUltYWdlKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFwcGx5
T3ZlcmZsb3dUb1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YXBwbHlQ
YWdpbmF0aW9uVG9WaWV3cG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNhbGN1
bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6aXNFbmNsb3NlZEluQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OmFkZFNsb3dSZXBhaW50T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6cmVt
b3ZlU2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphZGRW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
cmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OnNjcm9sbENvbnRlbnRzRmFzdFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVW
aWV3OjpyZXBhaW50U2xvd1JlcGFpbnRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2V0Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNOZWVkTGF5b3V0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVTY3JvbGxDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6
Y29udmVydEZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNvbnZl
cnRUb1JlbmRlcmVyKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5oOgorICAgICAgICAqIHBh
Z2UvUGFnZVNlcmlhbGl6ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6
OmFkZEltYWdlVG9SZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvUGFnZVNlcmlhbGl6ZXIuaDoK
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvbkJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6
QW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVNYWNoaW5lKToKKyAgICAgICAgKiBwYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjpy
ZW5kZXJlcik6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6ZW5zdXJl
Q29tcG9zaXRlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xs
ZXJQcml2YXRlOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9uVGltZXJGb3JSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6aXNSdW5uaW5nQW5pbWF0
aW9uT25SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzdXNwZW5kQW5pbWF0aW9uc0Zv
ckRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
OjpyZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUp
OgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmdldEFuaW1h
dGVkU3R5bGVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpwYXVzZUFuaW1h
dGlvbkF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpwYXVz
ZVRyYW5zaXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxl
cjo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25Db250cm9sbGVyOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIp
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyb3NzZmFkZUJsZW5kKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29tcG9zaXRlQW5pbWF0aW9uOjp1
cGRhdGVUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246
OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVB
bmltYXRpb246OmFuaW1hdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFu
aW1hdGlvbi5oOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpJbXBsaWNpdEFuaW1hdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6YW5pbWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmg6CisgICAgICAgIChXZWJD
b3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlv
bi9LZXlmcmFtZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1h
dGlvbjo6S2V5ZnJhbWVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmlt
YXRpb246OmFuaW1hdGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OnBh
dXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9uOjplbmRB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OnNlbmRBbmlt
YXRpb25FdmVudCk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
aDoKKyAgICAgICAgKiBwYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1l
KToKKyAgICAgICAgKiBwYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OnNuYXBzaG90RHJhZ0ltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9Db3VudGVy
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6Q291bnRlck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q291bnRlck5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogcmVuZGVy
aW5nL0NvdW50ZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6b3duZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKToKKyAgICAgICAg
KiByZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
SGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpzcGVs
bGluZ1Rvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6dGl0bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW5uZXJUZXh0SWZUcnVuY2F0ZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aW1hZ2UpOgorICAgICAgICAqIHJlbmRl
cmluZy9MYXlvdXRSZXBhaW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0UmVwYWlu
dGVyOjpMYXlvdXRSZXBhaW50ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRSZXBhaW50
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvTGF5b3V0U3RhdGUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dFN0YXRlOjpMYXlvdXRTdGF0ZSk6CisgICAgICAgICogcmVuZGVyaW5nL0xpbmVX
aWR0aC5oOgorICAgICAgICAqIHJlbmRlcmluZy9Mb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVz
Lmg6CisgICAgICAgIChXZWJDb3JlOjppc0NvbnRhaW5pbmdCbG9ja0NhbmRpZGF0ZUZvckFic29s
dXRlbHlQb3NpdGlvbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmlzTm9uUmVuZGVyQmxv
Y2tJbmxpbmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0Jsb2NrRm9yRml4ZWRQb3Np
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluaW5nQmxvY2tGb3JBYnNvbHV0ZVBvc2l0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5pbmdCbG9ja0Zvck9iamVjdEluRmxvdyk6
CisgICAgICAgIChXZWJDb3JlOjpMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzOjpMb2dpY2Fs
U2VsZWN0aW9uT2Zmc2V0Q2FjaGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUGFpbnRJbmZvLmg6
CisgICAgICAgIChXZWJDb3JlOjpQYWludEluZm86OlBhaW50SW5mbyk6CisgICAgICAgIChXZWJD
b3JlOjpQYWludEluZm86OnVwZGF0ZVN1YnRyZWVQYWludFJvb3RGb3JDaGlsZHJlbik6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
b3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50
RmlsbExheWVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4dGVuZGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpjYWxjdWxhdGVCYWNrZ3JvdW5kSW1hZ2VHZW9t
ZXRyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4
dEluUHJlT3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6cGxhbkNvdW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6bWFrZUNvdW50ZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50
ZXI6Om9yaWdpbmFsVGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6flJlbmRlckVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6aW5zZXJ0Q2hpbGRJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZW1vdmVDaGlsZEludGVybmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OndpbGxCZURlc3Ryb3llZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5kKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFsaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcklt
YWdlUmVzb3VyY2VTdHlsZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJJbWFnZVJl
c291cmNlU3R5bGVJbWFnZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6c2hvdWxkUHJvcGFnYXRlQ29tcG9zaXRpbmdUb0VuY2xvc2luZ0ZyYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2FuQmVDb21wb3Np
dGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNP
d25CYWNraW5nU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZWFzb25zRm9yQ29tcG9zaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJD
b21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVv
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21w
b3NpdGluZ0ZvckNhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yQmxlbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjppc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbik6
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2Jq
ZWN0Ojpjb250YWluaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6bXVzdFJlcGFpbnRGaWxs
TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Ym9yZGVySW1hZ2VJc0xv
YWRlZEFuZENhbkJlUmVuZGVyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp3
aWxsQmVEZXN0cm95ZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclBhcnQ6OnJlbmRlcmVyT3du
aW5nU2Nyb2xsYmFyKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OlJlbmRlclZpZXcp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lTGlzdDo6S2V5ZnJhbWVMaXN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNhY2hlZEltYWdlOjppbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVDYWNoZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OmFkZENsaWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlOjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNo
ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5
bGVDYWNoZWRJbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlU2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0Ojpjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0
OjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVD
YWNoZWRJbWFnZVNldDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVk
SW1hZ2VTZXQ6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZElt
YWdlU2V0OjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZEltYWdlU2V0Ojpr
bm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZElt
YWdlU2V0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNE
aW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OmFkZENs
aWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGll
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUlt
YWdlOjppbWFnZXNFcXVpdmFsZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVQ
ZW5kaW5nSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjpjc3NJ
bWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjpjc3NJbWFn
ZUdlbmVyYXRvclZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdlOjpj
c3NDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdl
Ojpjc3NJbWFnZVNldFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUGVuZGluZ0ltYWdl
Ojpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5h
bHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpib3VuZGluZ0JveCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBWaXNpYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6aXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1
cmVkKToKKyAgICAgICAgVXNlIFJlbmRlckVsZW1lbnQgaW5zdGVhZCBvZiBSZW5kZXJPYmplY3Qg
d2hlcmUgaXQgd2FzIGVhc3kgdG8gZG8gc28uCisgICAgICAgIEZvciBsb2NhbCB2YXJpYWJsZXMg
aG9sZGluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIHJlbmRlcmVyKCkgZnVuY3Rpb25zLAorICAgICAg
ICB1c2UgYXV0byBpbnN0ZWFkLCBzbyB0aGUgbW9zdC1zcGVjaWZpYyBwb3NzaWJsZSB0eXBlIHdp
bGwgYmUgdXNlZCwKKyAgICAgICAgd2l0aG91dCBoYXZpbmcgdG8gZmlndXJlIG91dCB3aGF0IHRo
YXQgaXMgaW4gZWFjaCBjYXNlLiBBbHNvIHVzZSBzb21lCisgICAgICAgIG1vcmUgT1ZFUlJJREUg
YW5kIEZJTkFMIGFuZCB1c2UgbnVsbHB0ciBpbnN0ZWFkIG9mIDAuIEFuZCByZXBsYWNlIHNvbWUK
KyAgICAgICAgY3J5cHRpYyBzaG9ydCBsb2NhbCB2YXJpYWJsZSBuYW1lcyB3aXRoIHdvcmRzLgor
CiAyMDEzLTA5LTI5ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBUaWdodGVuIHR5cGluZyBpbiBpbmxpbmUgcmVuZGVyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBk
NjQyYjcyNzFjYjJiYTY3ODFjZGJmMmMyNWM5M2FmMWFkZDk1ZjNhLi4wODVkOTY4NTM0Mzg5OWJk
ZmNlMjk5NWRkNDU2NmU5YzAyN2M0YTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2NiwxMSArMTY2
LDExIEBACiAJCTQ5OTUxQzA2MTRCN0FBRDgwMDYwRTk2RSAvKiBCdWlsdEluRnVuY3Rpb25FbXVs
YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCdWlsdEluRnVuY3Rpb25F
bXVsYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0IxM0ZEMjE3OURCM0ZE
MDAxRjg1MUQgLyogRGV0ZWN0Q2FsbERlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERldGVjdENhbGxEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDQjEzRkQzMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQjEzRkRGMTc5RjQ2NTgwMDFGODUxRCAvKiBFeHByZXNz
aW9uUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV4cHJl
c3Npb25QYXJzZXIuY3BwOyBwYXRoID0gRXhwcmVzc2lvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTVDQjEzRkUwMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xl
eC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBnbHNsYW5nX2xleC5j
cHA7IHBhdGggPSBnbHNsYW5nX2xleC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDQjEzRkUxMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX3RhYi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBnbHNsYW5nX3RhYi5jcHA7IHBhdGggPSBnbHNsYW5n
X3RhYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTVDQjEzRkUyMTc5RjQ2NTgw
MDFGODUxRCAvKiBnbHNsYW5nX3RhYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBnbHNsYW5nX3RhYi5oOyBwYXRoID0gZ2xzbGFuZ190YWIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJNUNCMTNGRTMxNzlGNDY1ODAwMUY4NTFEIC8qIFRva2VuaXplci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBUb2tlbml6ZXIuY3BwOyBwYXRoID0g
VG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMTNGREYxNzlG
NDY1ODAwMUY4NTFEIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gRXhwcmVzc2lvblBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTVDQjEzRkUwMTc5RjQ2NTgwMDFGODUxRCAvKiBnbHNsYW5nX2xleC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNsYW5nX2xleC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjEzRkUxMTc5RjQ2NTgwMDFGODUxRCAvKiBn
bHNsYW5nX3RhYi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBnbHNs
YW5nX3RhYi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjEzRkUyMTc5RjQ2
NTgwMDFGODUxRCAvKiBnbHNsYW5nX3RhYi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBnbHNsYW5nX3RhYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0IxM0ZF
MzE3OUY0NjU4MDAxRjg1MUQgLyogVG9rZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFRva2VuaXplci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVEN0M1OUM1MTIwOEM2OEIwMDFDODczRSAvKiBBTkdMRS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBBTkdMRS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNUQ3QzU5QzYxMjA4QzY4QjAwMUM4NzNFIC8qIEJhc2UueGNjb25maWcgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzcxMjA4QzY4QjAwMUM4NzNFIC8qIERlYnVnUmVsZWFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmlu
ZGV4IDQ5N2FhZGY1NTg5NmQ2YTRiNDdiMDA3OGJlMTFlNDZlMzA1ZWJjMzAuLmJiNzhjMGU5M2Q5
YjM2OWJjNzYxMWNlMzI4N2M2YzhlZTBlMmM5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02
MzgsOCArNjM4LDYgQEAgX19aTjdXZWJDb3JlMThwbHVnaW5TY3JpcHRPYmplY3RFUE4zSlNDOUV4
ZWNTdGF0ZUVQTlNfMTNKU0hUTUxFbGVtZW50RQogX19aTjdXZWJDb3JlMThwcm94eVNlcnZlcnNG
b3JVUkxFUktOU18zVVJMRVBLTlNfMTdOZXR3b3JraW5nQ29udGV4dEUKIF9fWk43V2ViQ29yZTE5
QW5pbWF0aW9uQ29udHJvbGxlcjE2cmVzdW1lQW5pbWF0aW9uc0V2CiBfX1pON1dlYkNvcmUxOUFu
aW1hdGlvbkNvbnRyb2xsZXIxN3N1c3BlbmRBbmltYXRpb25zRXYKLV9fWk43V2ViQ29yZTE5QW5p
bWF0aW9uQ29udHJvbGxlcjIwcGF1c2VBbmltYXRpb25BdFRpbWVFUE5TXzEyUmVuZGVyT2JqZWN0
RVJLTjNXVEYxMkF0b21pY1N0cmluZ0VkCi1fX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xs
ZXIyMXBhdXNlVHJhbnNpdGlvbkF0VGltZUVQTlNfMTJSZW5kZXJPYmplY3RFUktOM1dURjZTdHJp
bmdFZAogX19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMzZzZXRBbGxvd3NOZXdBbmlt
YXRpb25zV2hpbGVTdXNwZW5kZWRFYgogX19aTjdXZWJDb3JlMTlIVE1MVGV4dEFyZWFFbGVtZW50
OHNldFZhbHVlRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1
bGVyMTBpbnZhbGlkYXRlRXYKQEAgLTE2OTMsMTEgKzE2OTEsMTEgQEAgX19aTks3V2ViQ29yZTlG
cmFtZVZpZXcxMW5lZWRzTGF5b3V0RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTNpc1RyYW5z
cGFyZW50RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTNwYWludEJlaGF2aW9yRXYKIF9fWk5L
N1dlYkNvcmU5RnJhbWVWaWV3MTRkaWRGaXJzdExheW91dEV2Ci1fX1pOSzdXZWJDb3JlOUZyYW1l
VmlldzE3Y29udmVydFRvUmVuZGVyZXJFUEtOU18xMlJlbmRlck9iamVjdEVSS05TXzdJbnRSZWN0
RQotX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxN2NvbnZlcnRUb1JlbmRlcmVyRVBLTlNfMTJSZW5k
ZXJPYmplY3RFUktOU184SW50UG9pbnRFCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzE3Y29udmVy
dFRvUmVuZGVyZXJFUEtOU18xM1JlbmRlckVsZW1lbnRFUktOU183SW50UmVjdEUKK19fWk5LN1dl
YkNvcmU5RnJhbWVWaWV3MTdjb252ZXJ0VG9SZW5kZXJlckVQS05TXzEzUmVuZGVyRWxlbWVudEVS
S05TXzhJbnRQb2ludEUKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTliYXNlQmFja2dyb3VuZENv
bG9yRXYKLV9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTljb252ZXJ0RnJvbVJlbmRlcmVyRVBLTlNf
MTJSZW5kZXJPYmplY3RFUktOU183SW50UmVjdEUKLV9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTlj
b252ZXJ0RnJvbVJlbmRlcmVyRVBLTlNfMTJSZW5kZXJPYmplY3RFUktOU184SW50UG9pbnRFCitf
X1pOSzdXZWJDb3JlOUZyYW1lVmlldzE5Y29udmVydEZyb21SZW5kZXJlckVQS05TXzEzUmVuZGVy
RWxlbWVudEVSS05TXzdJbnRSZWN0RQorX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxOWNvbnZlcnRG
cm9tUmVuZGVyZXJFUEtOU18xM1JlbmRlckVsZW1lbnRFUktOU184SW50UG9pbnRFCiBfX1pOSzdX
ZWJDb3JlOUZyYW1lVmlldzIwaXNTb2Z0d2FyZVJlbmRlcmFibGVFdgogX19aTks3V2ViQ29yZTlG
cmFtZVZpZXcyMW1heGltdW1TY3JvbGxQb3NpdGlvbkV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmll
dzIxbWluaW11bVNjcm9sbFBvc2l0aW9uRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4IDc5MWJm
MWM0ZWNiZmZmMjFiZjY3NzczZmUzYmVhMDgxMTM5NTNlY2IuLjVjMzI3NzkyNTMwYTU5NTBhYWE1
ZGM1Y2ZlNWRjZTNmMjdlNTMwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtMTM0LDE0ICsx
MzQsMTQgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnRpdGxlKCkgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eUlt
YWdlTWFwTGluazo6aW1hZ2VNYXBMaW5rUmVuZGVyZXIoKSBjb25zdAorUmVuZGVyRWxlbWVudCog
QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6aW1hZ2VNYXBMaW5rUmVuZGVyZXIoKSBjb25zdAog
ewotICAgIGlmICghbV9tYXBFbGVtZW50LmdldCgpIHx8ICFtX2FyZWFFbGVtZW50LmdldCgpKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fbWFwRWxlbWVudCB8fCAhbV9hcmVhRWxlbWVu
dCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gMDsKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7CiAgICAgaWYgKG1f
cGFyZW50ICYmIG1fcGFyZW50LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAg
ICAgcmVuZGVyZXIgPSBzdGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9w
YXJlbnQpLT5yZW5kZXJlcigpOworICAgICAgICByZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9wYXJlbnQpLT5yZW5kZXJl
cigpKTsKICAgICBlbHNlCiAgICAgICAgIHJlbmRlcmVyID0gbV9tYXBFbGVtZW50LT5yZW5kZXJl
cigpOwogICAgIApAQCAtMTUxLDEzICsxNTEsMTMgQEAgUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rOjppbWFnZU1hcExpbmtSZW5kZXJlcigpIGNvbnN0CiB2b2lkIEFjY2Vz
c2liaWxpdHlJbWFnZU1hcExpbms6OmRldGFjaEZyb21QYXJlbnQoKQogewogICAgIEFjY2Vzc2li
aWxpdHlNb2NrT2JqZWN0OjpkZXRhY2hGcm9tUGFyZW50KCk7Ci0gICAgbV9hcmVhRWxlbWVudCA9
IDA7Ci0gICAgbV9tYXBFbGVtZW50ID0gMDsKKyAgICBtX2FyZWFFbGVtZW50ID0gbnVsbHB0cjsK
KyAgICBtX21hcEVsZW1lbnQgPSBudWxscHRyOwogfQogCiBQYXRoIEFjY2Vzc2liaWxpdHlJbWFn
ZU1hcExpbms6OmVsZW1lbnRQYXRoKCkgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gaW1hZ2VNYXBMaW5rUmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gaW1hZ2VN
YXBMaW5rUmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gUGF0
aCgpOwogICAgIApAQCAtMTY2LDcgKzE2Niw3IEBAIFBhdGggQWNjZXNzaWJpbGl0eUltYWdlTWFw
TGluazo6ZWxlbWVudFBhdGgoKSBjb25zdAogICAgIAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rOjplbGVtZW50UmVjdCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IGltYWdlTWFwTGlua1JlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IGlt
YWdlTWFwTGlua1JlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
IExheW91dFJlY3QoKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluay5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKaW5kZXggMmYxZmIwYjcyNzI0NTJi
NmIzYmJhZGU4MTQwZGVjZmE0MTQyMjRhNC4uNDYwMGUzYzQxZDVmYzk1MTg4MmQzY2ZkOTk2OTZm
YzZkYTBkZTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRnJvbVBhcmVudCgpIE9WRVJSSURFOwogCiAgICAgdmly
dHVhbCBQYXRoIGVsZW1lbnRQYXRoKCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0KiBpbWFnZU1h
cExpbmtSZW5kZXJlcigpIGNvbnN0OworICAgIFJlbmRlckVsZW1lbnQqIGltYWdlTWFwTGlua1Jl
bmRlcmVyKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VGV4dD4mKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmso
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDJlNDE4M2Nk
Y2I2ZjQxZGU5ZDEwMGI5MzY1ZGE0ZDZmZTExOGM0ZGYuLjhhZjNlMmYwMWIwN2IxNzNmODBhNzA4
MmI1NzQ3ZDdmZmYzOTUzMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTI2Miw3ICsxMjYy
LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0
eUlzSWdub3JlZCgpIGNvbnN0CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIGNoZWNrIHdo
ZXRoZXIgcmVuZGVyZWQgaW1hZ2Ugd2FzIHN0cmV0Y2hlZCBmcm9tIG9uZS1kaW1lbnNpb25hbCBm
aWxlIGltYWdlCiAgICAgICAgICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkpIHsKLSAgICAg
ICAgICAgICAgICBMYXlvdXRTaXplIGltYWdlU2l6ZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5p
bWFnZVNpemVGb3JSZW5kZXJlcihtX3JlbmRlcmVyLCBpbWFnZS0+dmlldygpLnpvb21GYWN0b3Io
KSk7CisgICAgICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+Y2FjaGVk
SW1hZ2UoKS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIodG9SZW5kZXJFbGVtZW50KG1fcmVuZGVyZXIp
LCBpbWFnZS0+dmlldygpLnpvb21GYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGlt
YWdlU2l6ZS5oZWlnaHQoKSA8PSAxIHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDE7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvRE9NLm1tIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNGZm
ZTg2MWE3N2QyY2QyMGY3YzM0Mzg1N2I3MzU2NGY3MzU5MGY0Ny4uYzAyZWY5ZjUwOGYxZGQ5YmMx
YzQ4MzRjNjM3NDlhYTc2OTE5NzA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET00ubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0K
QEAgLTM2NiwxMCArMzY2LDEwIEBAIC0gKE5TSW1hZ2UqKWltYWdlCiAgICAgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBXZWJDb3JlOjpD
YWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+Y2FjaGVk
SW1hZ2UoKTsKICAgICBpZiAoIWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3Vy
cmVkKCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFn
ZUZvclJlbmRlcmVyKHJlbmRlcmVyKS0+Z2V0TlNJbWFnZSgpOworICAgIHJldHVybiBjYWNoZWRJ
bWFnZS0+aW1hZ2VGb3JSZW5kZXJlcih0b1JlbmRlckltYWdlKHJlbmRlcmVyKSktPmdldE5TSW1h
Z2UoKTsKIH0KIAogQGVuZApAQCAtMzc5LDcgKzM3OSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBET01F
bGVtZW50IChXZWJQcml2YXRlKQogLSAoTlNGb250ICopX2ZvbnQKIHsKICAgICAvLyBGSVhNRTog
Q291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6OkVsZW1lbnQgYW5kIGF1dG9n
ZW5lcmF0ZT8KLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxm
KS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBy
ZW5kZXJlci0+c3R5bGUoKS0+Zm9udCgpLnByaW1hcnlGb250KCktPmdldE5TRm9udCgpOwpAQCAt
Mzg4LDcgKzM4OCw3IEBAIC0gKE5TRm9udCAqKV9mb250CiAtIChOU0RhdGEgKilfaW1hZ2VUSUZG
UmVwcmVzZW50YXRpb24KIHsKICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0
aW9uIHRvIFdlYkNvcmU6OkVsZW1lbnQgYW5kIGF1dG9nZW5lcmF0ZT8KLSAgICBXZWJDb3JlOjpS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBhdXRv
IHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8
ICFyZW5kZXJlci0+aXNJbWFnZSgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIFdlYkNvcmU6
OkNhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlcklt
YWdlKj4ocmVuZGVyZXIpLT5jYWNoZWRJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNW
YWx1ZS5jcHAKaW5kZXggMWZlMmEzNTBmMWQyZjkwOThkNTY5NDI1NWY0ZjAzMTQ3NDFiNWQ3Yi4u
NDhmODMzMzVlYzQwNTY2ZjllMjFmMGIxYjc3MzUyNWExMmU3M2YwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ2FudmFzVmFsdWUuY3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTQ2Fu
dmFzVmFsdWUuaCIKIAogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMjUgKzUwLDIz
IEBAIFN0cmluZyBDU1NDYW52YXNWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB2b2lkIENT
U0NhbnZhc1ZhbHVlOjpjYW52YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50KiwgY29uc3QgRmxv
YXRSZWN0JiBjaGFuZ2VkUmVjdCkKIHsKICAgICBJbnRSZWN0IGltYWdlQ2hhbmdlUmVjdCA9IGVu
Y2xvc2luZ0ludFJlY3QoY2hhbmdlZFJlY3QpOwotICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlck9i
amVjdCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjbGllbnRzKCkuZW5kKCk7Ci0gICAgZm9yIChI
YXNoQ291bnRlZFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVu
dHMoKS5iZWdpbigpOyBjdXJyICE9IGVuZDsgKytjdXJyKQotICAgICAgICBjb25zdF9jYXN0PFJl
bmRlck9iamVjdCo+KGN1cnItPmtleSktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVk
SW1hZ2VQdHI+KHRoaXMpLCAmaW1hZ2VDaGFuZ2VSZWN0KTsKKyAgICBmb3IgKGF1dG8gaXQgPSBj
bGllbnRzKCkuYmVnaW4oKSwgZW5kID0gY2xpZW50cygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
CisgICAgICAgIGl0LT5rZXktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQ
dHI+KHRoaXMpLCAmaW1hZ2VDaGFuZ2VSZWN0KTsKIH0KIAogdm9pZCBDU1NDYW52YXNWYWx1ZTo6
Y2FudmFzUmVzaXplZChIVE1MQ2FudmFzRWxlbWVudCopCiB7Ci0gICAgSGFzaENvdW50ZWRTZXQ8
UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNsaWVudHMoKS5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hDb3VudGVkU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBjdXJy
ID0gY2xpZW50cygpLmJlZ2luKCk7IGN1cnIgIT0gZW5kOyArK2N1cnIpCi0gICAgICAgIGNvbnN0
X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4oY3Vyci0+a2V5KS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0
PFdyYXBwZWRJbWFnZVB0cj4odGhpcykpOworICAgIGZvciAoYXV0byBpdCA9IGNsaWVudHMoKS5i
ZWdpbigpLCBlbmQgPSBjbGllbnRzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAg
aXQtPmtleS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4odGhpcykp
OwogfQogCiB2b2lkIENTU0NhbnZhc1ZhbHVlOjpjYW52YXNEZXN0cm95ZWQoSFRNTENhbnZhc0Vs
ZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUX1VOVVNFRChlbGVtZW50LCBlbGVtZW50ID09
IG1fZWxlbWVudCk7Ci0gICAgbV9lbGVtZW50ID0gMDsKKyAgICBtX2VsZW1lbnQgPSBudWxscHRy
OwogfQogCi1JbnRTaXplIENTU0NhbnZhc1ZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKK0ludFNpemUgQ1NTQ2FudmFzVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQqIGVs
dCA9IGVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm4gSW50U2l6
ZShlbHQtPndpZHRoKCksIGVsdC0+aGVpZ2h0KCkpOwpAQCAtODYsMTMgKzg0LDEzIEBAIEhUTUxD
YW52YXNFbGVtZW50KiBDU1NDYW52YXNWYWx1ZTo6ZWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQp
CiAgICAgcmV0dXJuIG1fZWxlbWVudDsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFz
VmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIC8qc2l6
ZSovKQorUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiAvKnNpemUqLykKIHsKICAgICBBU1NFUlQoY2xp
ZW50cygpLmNvbnRhaW5zKHJlbmRlcmVyKSk7Ci0gICAgSFRNTENhbnZhc0VsZW1lbnQqIGVsdCA9
IGVsZW1lbnQocmVuZGVyZXItPmRvY3VtZW50KCkpOwotICAgIGlmICghZWx0IHx8ICFlbHQtPmJ1
ZmZlcigpKQorICAgIEhUTUxDYW52YXNFbGVtZW50KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudChy
ZW5kZXJlci0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5idWZm
ZXIoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGVsdC0+Y29waWVkSW1hZ2UoKTsK
KyAgICByZXR1cm4gZWxlbWVudC0+Y29waWVkSW1hZ2UoKTsKIH0KIAogYm9vbCBDU1NDYW52YXNW
YWx1ZTo6ZXF1YWxzKGNvbnN0IENTU0NhbnZhc1ZhbHVlJiBvdGhlcikgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NhbnZhc1ZhbHVlLmgKaW5kZXggMzMzYjMzMDQxYzNjOTlmZTM3MWNkN2MwODQ5NjMw
M2U2NmVlYmIyOS4uNWY4ZWNhZGMyN2JkOWI3OWUyNzRiM2RkNjg0ZDJhN2M4YjQ4MmVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKQEAgLTQwLDkgKzQwLDkgQEAgcHVibGljOgog
CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1h
Z2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRy
PEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wg
aXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNp
emUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVu
ZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cAppbmRleCA0ZTZlZTFhZDZjYmQ2MDY3NjhkY2JkNTZmNTFlMjNhOWU5MmI2NGNkLi41NzJhYTA0
OWI1MGJhMTIxZTI3NWM1N2ZmYWU2YTkzZjJiZjZmMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTY5Niw3ICsxNjk2
LDcgQEAgc3RhdGljIGlubGluZSBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlUmVuZGVy
U3R5bGVGb3JQcm9wZXJ0eShOb2RlKiBzdHlsZWQKIAogICAgIGlmIChyZW5kZXJlciAmJiByZW5k
ZXJlci0+aXNDb21wb3NpdGVkKCkgJiYgQW5pbWF0aW9uQ29udHJvbGxlcjo6c3VwcG9ydHNBY2Nl
bGVyYXRlZEFuaW1hdGlvbk9mUHJvcGVydHkocHJvcGVydHlJRCkpIHsKICAgICAgICAgQW5pbWF0
aW9uVXBkYXRlQmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2soJnJlbmRlcmVyLT5hbmltYXRpb24o
KSk7Ci0gICAgICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSByZW5kZXJlci0+YW5pbWF0
aW9uKCkuZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICAgICAgUmVm
UHRyPFJlbmRlclN0eWxlPiBzdHlsZSA9IHJlbmRlcmVyLT5hbmltYXRpb24oKS5nZXRBbmltYXRl
ZFN0eWxlRm9yUmVuZGVyZXIodG9SZW5kZXJFbGVtZW50KHJlbmRlcmVyKSk7CiAgICAgICAgIGlm
IChwc2V1ZG9FbGVtZW50U3BlY2lmaWVyICYmICFzdHlsZWROb2RlLT5pc1BzZXVkb0VsZW1lbnQo
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxs
IG9ubHkgZXhpc3QgaWYgdGhlIGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4K
ICAgICAgICAgICAgIHJldHVybiBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxl
bWVudFNwZWNpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3Nm
YWRlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcApp
bmRleCAxYTMzMTZiMzI3ZjY5MGJmYmM2MmFmMTMyN2NmNGYxN2Y4N2E1ZTE2Li5jOTQ0YjY3ODcw
NDRjMDhhMDU5YmM5YzliOTRiMmQ5YWNkOThiZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
cm9zc2ZhZGVWYWx1ZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNv
dXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgiCiAjaW5j
bHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1
ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIGJsZW5kRnVuYyhk
b3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgcmV0dXJuIGJsZW5k
KGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRpYyBib29sIHN1YmltYWdlS25vd25Ub0Jl
T3BhcXVlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0
YXRpYyBib29sIHN1YmltYWdlS25vd25Ub0JlT3BhcXVlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3Qg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIHRvQ1NTSW1hZ2VWYWx1ZSh2YWx1ZSktPmtub3duVG9CZU9wYXF1
ZShyZW5kZXJlcik7CkBAIC03OCw3ICs3OCw3IEBAIFN0cmluZyBDU1NDcm9zc2ZhZGVWYWx1ZTo6
Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQog
Ci1JbnRTaXplIENTU0Nyb3NzZmFkZVZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK0ludFNpemUgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBmbG9hdCBwZXJjZW50YWdlID0gbV9wZXJj
ZW50YWdlVmFsdWUtPmdldEZsb2F0VmFsdWUoKTsKICAgICBmbG9hdCBpbnZlcnNlUGVyY2VudGFn
ZSA9IDEgLSBwZXJjZW50YWdlOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRl
VmFsdWU6OmlzUGVuZGluZygpIGNvbnN0CiAgICAgICAgIHx8IENTU0ltYWdlR2VuZXJhdG9yVmFs
dWU6OnN1YmltYWdlSXNQZW5kaW5nKG1fdG9WYWx1ZS5nZXQoKSk7CiB9CiAKLWJvb2wgQ1NTQ3Jv
c3NmYWRlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdAorYm9vbCBDU1NDcm9zc2ZhZGVWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIHJldHVybiBzdWJpbWFnZUtub3du
VG9CZU9wYXF1ZShtX2Zyb21WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpICYmIHN1YmltYWdlS25vd25U
b0JlT3BhcXVlKG1fdG9WYWx1ZS5nZXQoKSwgcmVuZGVyZXIpOwogfQpAQCAtMTM4LDcgKzEzOCw3
IEBAIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyCiAgICAgbV9jcm9zc2ZhZGVTdWJpbWFnZU9ic2Vy
dmVyLnNldFJlYWR5KHRydWUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVW
YWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkK
K1Bhc3NSZWZQdHI8SW1hZ2U+IENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTYzLDExICsxNjMsOCBAQCBQYXNzUmVmUHRyPElt
YWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29u
c3QgSW50U2l6ZQogCiB2b2lkIENTU0Nyb3NzZmFkZVZhbHVlOjpjcm9zc2ZhZGVDaGFuZ2VkKGNv
bnN0IEludFJlY3QmKQogewotICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlck9iamVjdCo+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBjbGllbnRzKCkuZW5kKCk7Ci0gICAgZm9yIChIYXNoQ291bnRlZFNl
dDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVudHMoKS5iZWdpbigp
OyBjdXJyICE9IGVuZDsgKytjdXJyKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50ID0g
Y29uc3RfY2FzdDxSZW5kZXJPYmplY3QqPihjdXJyLT5rZXkpOwotICAgICAgICBjbGllbnQtPmlt
YWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKLSAgICB9Cisg
ICAgZm9yIChhdXRvIGl0ID0gY2xpZW50cygpLmJlZ2luKCksIGVuZCA9IGNsaWVudHMoKS5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBpdC0+a2V5LT5pbWFnZUNoYW5nZWQoc3RhdGlj
X2Nhc3Q8V3JhcHBlZEltYWdlUHRyPih0aGlzKSk7CiB9CiAKIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFs
dWU6OkNyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQcm94eTo6aW1hZ2VDaGFuZ2VkKENhY2hlZElt
YWdlKiwgY29uc3QgSW50UmVjdCogcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDcm9zc2ZhZGVWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZh
bHVlLmgKaW5kZXggZjlkYmJhYzE5ZDM4YTJlYWFjYTMzMDZlYjkyMmUxMTdlODg2MDZhZS4uOTY0
YjExNmU5MmI0NTk4MmExNTExODhjZWQ4ZGE1NmQ3NzhhNjNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0Nyb3NzZmFkZVZhbHVlLmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIENyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQ
cm94eTsKLWNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBE
b2N1bWVudDsKIAogY2xhc3MgQ1NTQ3Jvc3NmYWRlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5l
cmF0b3JWYWx1ZSB7CkBAIC01MiwxMiArNTIsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1
c3RvbUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRl
ck9iamVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShS
ZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVy
T2JqZWN0Kik7CisgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwog
CiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAgICBib29sIGtub3duVG9CZU9wYXF1ZShj
b25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25z
dCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVk
UmVzb3VyY2VMb2FkZXIqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zp
bHRlckltYWdlVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFs
dWUuY3BwCmluZGV4IDU3ZDJlYmZmMzkzNzQzZGRlZjZmZmExZWNjZWU3MDI1Y2Y0OTZjYWMuLmVj
MWI1ZGQwZTJlYzNjZDRlODU4MGMwYTFkOTBjZGMzOWEwOWJlOGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRl
ICJDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRl
cmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFn
ZS5oIgogI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCkBAIC01OSw3ICs1OSw3IEBAIFN0cmluZyBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpj
dXN0b21DU1NUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAK
LUludFNpemUgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCitJbnRTaXplIENTU0ZpbHRlckltYWdlVmFsdWU6OmZpeGVkU2l6ZShjb25z
dCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpOwogICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGNhY2hlZEltYWdlRm9y
Q1NTVmFsdWUobV9pbWFnZVZhbHVlLmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CkBAIC03
NSw3ICs3NSw3IEBAIGJvb2wgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6aXNQZW5kaW5nKCkgY29uc3QK
ICAgICByZXR1cm4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcobV9p
bWFnZVZhbHVlLmdldCgpKTsKIH0KIAotYm9vbCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjprbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKK2Jvb2wgQ1NTRmlsdGVySW1hZ2VW
YWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdAogewogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDU1NGaWx0ZXJJbWFnZVZh
bHVlOjpsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWQKICAgICBtX2ZpbHRlclN1YmltYWdlT2JzZXJ2ZXIuc2V0UmVhZHkodHJ1ZSk7CiB9CiAKLVBh
c3NSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0
ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtMTMzLDExICsxMzMsOSBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVl
OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaQogCiB2b2lkIENTU0Zp
bHRlckltYWdlVmFsdWU6OmZpbHRlckltYWdlQ2hhbmdlZChjb25zdCBJbnRSZWN0JikKIHsKLSAg
ICBIYXNoQ291bnRlZFNldDxSZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2xp
ZW50cygpLmVuZCgpOwotICAgIGZvciAoSGFzaENvdW50ZWRTZXQ8UmVuZGVyT2JqZWN0Kj46OmNv
bnN0X2l0ZXJhdG9yIGN1cnIgPSBjbGllbnRzKCkuYmVnaW4oKTsgY3VyciAhPSBlbmQ7ICsrY3Vy
cikgewotICAgICAgICBSZW5kZXJPYmplY3QqIGNsaWVudCA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2Jq
ZWN0Kj4oY3Vyci0+a2V5KTsKLSAgICAgICAgY2xpZW50LT5pbWFnZUNoYW5nZWQoc3RhdGljX2Nh
c3Q8V3JhcHBlZEltYWdlUHRyPih0aGlzKSk7Ci0gICAgfQorICAgIGF1dG8gZW5kID0gY2xpZW50
cygpLmVuZCgpOworICAgIGZvciAoYXV0byBpdCA9IGNsaWVudHMoKS5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCisgICAgICAgIGl0LT5rZXktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFw
cGVkSW1hZ2VQdHI+KHRoaXMpKTsKIH0KIAogdm9pZCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpjcmVh
dGVGaWx0ZXJPcGVyYXRpb25zKFN0eWxlUmVzb2x2ZXIqIHJlc29sdmVyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmgKaW5kZXggOWE1YmYwZWQ2MzgzMjM5Y2NlYjgxNmFi
MTVlOWE1NmFlYjQ0YmU5My4uMWMyY2I1ZjEyNmZhYjJhODQ3ZjJhZWMyNzdlNmU5YzBhNGI4ZDUz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCkBAIC00MSw3ICs0
MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1hZ2U7CiBjbGFzcyBG
aWx0ZXJTdWJpbWFnZU9ic2VydmVyUHJveHk7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBS
ZW5kZXJFbGVtZW50OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogCkBA
IC01NywxMiArNTcsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBj
b25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0
IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50Kiwg
Y29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAg
SW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1Bl
bmRpbmcoKSBjb25zdDsKLSAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmpl
Y3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50
KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcAppbmRleCA4MmNjNTA3MTFj
N2E4MGEzY2U0MzQwODliZjNlMTYxMGE2YzA3ZjAwLi4xMmZmNThlNDE4MmIzNDcyNWQ4MTQ1ZDgy
N2RmOWJlOTdkY2Y0YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcApA
QCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIkZvbnRDYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNpbXBsZUZvbnREYXRhLmgiCiAjaW5j
bHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCmluZGV4IDAzYWMxOWI0OTg3MGJjNzdjYmNkY2JlM2RmZjA0YTk4ODliNGExZGUuLjJm
MTM1MTA3NTIzZTRlMTJhYjE0MGFhMDIyNzg1OWJhYWIwYzBlYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NHcmFk
aWVudFZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBz
aXplKQorUGFzc1JlZlB0cjxJbWFnZT4gQ1NTR3JhZGllbnRWYWx1ZTo6aW1hZ2UoUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgaWYgKHNpemUuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEzMiw3ICsxMzIsNyBAQCBQYXNzUmVmUHRy
PENTU0dyYWRpZW50VmFsdWU+IENTU0dyYWRpZW50VmFsdWU6OmdyYWRpZW50V2l0aFN0eWxlc1Jl
c29sdmVkKFN0eWxlUgogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCi12b2lkIENT
U0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKEdyYWRpZW50KiBncmFkaWVudCwgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZmxvYXQgbWF4TGVuZ3RoRm9yUmVw
ZWF0KQordm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQs
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBmbG9hdCBt
YXhMZW5ndGhGb3JSZXBlYXQpCiB7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIt
PnN0eWxlKCk7CiAKQEAgLTQ1OSw3ICs0NTksNyBAQCBib29sIENTU0dyYWRpZW50VmFsdWU6Omlz
Q2FjaGVhYmxlKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NHcmFkaWVu
dFZhbHVlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QKK2Jvb2wg
Q1NTR3JhZGllbnRWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBj
b25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9zdG9wcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBpZiAobV9zdG9wc1tpXS5tX3Jlc29sdmVkQ29sb3IuaGFzQWxwaGEoKSkKQEAg
LTY0Myw3ICs2NDMsNyBAQCBzdGF0aWMgdm9pZCBlbmRQb2ludHNGcm9tQW5nbGUoZmxvYXQgYW5n
bGVEZWcsIGNvbnN0IEludFNpemUmIHNpemUsIEZsb2F0UG9pbnQmCiAgICAgZmlyc3RQb2ludC5z
ZXQoaGFsZldpZHRoIC0gZW5kWCwgaGFsZkhlaWdodCArIGVuZFkpOwogfQogCi1QYXNzUmVmUHRy
PEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQorUGFzc1JlZlB0cjxHcmFkaWVu
dD4gQ1NTTGluZWFyR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1w
dHkoKSk7CiAKQEAgLTk4Myw3ICs5ODMsNyBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IGhvcml6b250
YWxFbGxpcHNlUmFkaXVzKGNvbnN0IEZsb2F0U2l6ZSYgcCwgZmxvYXQgYXNwZWN0UmF0aQogfQog
CiAvLyBGSVhNRTogc2hhcmUgY29kZSB3aXRoIHRoZSBsaW5lYXIgdmVyc2lvbgotUGFzc1JlZlB0
cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8R3JhZGll
bnQ+IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAgIEFTU0VSVCghc2l6ZS5pc0Vt
cHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaAppbmRleCAzZjFlYzA0
ODBkNzZkNzEzYWRlYjBhOGM4MmZkNTJiMzk3N2VjOWQ4Li45NjJkOGRkM2Y2ZTg1NWI0OTk5NTgx
Nzk1ZDg5YzIyMmM1YzQzYTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
ZGllbnRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgK
QEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IENTU0dyYWRpZW50Q29sb3JTdG9wIHsKIAogY2xhc3Mg
Q1NTR3JhZGllbnRWYWx1ZSA6IHB1YmxpYyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIHsKIHB1Ymxp
YzoKLSAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJik7CisgICAgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0
IEludFNpemUmKTsKIAogICAgIHZvaWQgc2V0Rmlyc3RYKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbCkgeyBtX2ZpcnN0WCA9IHZhbDsgfQogICAgIHZvaWQgc2V0Rmlyc3RZKFBhc3NS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2ZpcnN0WSA9IHZhbDsgfQpAQCAtODIs
MTAgKzgyLDEwIEBAIHB1YmxpYzoKICAgICBDU1NHcmFkaWVudFR5cGUgZ3JhZGllbnRUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9ncmFkaWVudFR5cGU7IH0KIAogICAgIGJvb2wgaXNGaXhlZFNpemUo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJl
bmRlck9iamVjdCopIGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQorICAgIEludFNpemUgZml4
ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCB7IHJldHVybiBJbnRTaXplKCk7IH0K
IAogICAgIGJvb2wgaXNQZW5kaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICBib29s
IGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGtu
b3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGxv
YWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKSB7IH0KICAgICBQYXNzUmVmUHRyPENT
U0dyYWRpZW50VmFsdWU+IGdyYWRpZW50V2l0aFN0eWxlc1Jlc29sdmVkKFN0eWxlUmVzb2x2ZXIq
KTsKQEAgLTExMiw3ICsxMTIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgewogICAgIH0KIAotICAgIHZv
aWQgYWRkU3RvcHMoR3JhZGllbnQqLCBSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlLCBmbG9hdCBtYXhMZW5ndGhGb3JSZXBlYXQgPSAwKTsKKyAgICB2b2lkIGFkZFN0b3BzKEdy
YWRpZW50KiwgUmVuZGVyRWxlbWVudCosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGZsb2F0IG1h
eExlbmd0aEZvclJlcGVhdCA9IDApOwogCiAgICAgLy8gUmVzb2x2ZSBwb2ludHMvcmFkaWkgdG8g
ZnJvbnQgZW5kIHZhbHVlcy4KICAgICBGbG9hdFBvaW50IGNvbXB1dGVFbmRQb2ludChDU1NQcmlt
aXRpdmVWYWx1ZSosIENTU1ByaW1pdGl2ZVZhbHVlKiwgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHls
ZSogcm9vdFN0eWxlLCBjb25zdCBJbnRTaXplJik7CkBAIC0xNDcsNyArMTQ3LDcgQEAgcHVibGlj
OgogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29uc3Q7CiAKICAgICAvLyBDcmVhdGUgdGhl
IGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3Jl
YXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBhc3NSZWZQ
dHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXpl
Jik7CiAKICAgICBQYXNzUmVmUHRyPENTU0xpbmVhckdyYWRpZW50VmFsdWU+IGNsb25lKCkgY29u
c3QKICAgICB7CkBAIC0xOTUsNyArMTk1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RW5kVmVy
dGljYWxTaXplKFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbCkgeyBtX2VuZFZlcnRp
Y2FsU2l6ZSA9IHZhbDsgfQogCiAgICAgLy8gQ3JlYXRlIHRoZSBncmFkaWVudCBmb3IgYSBnaXZl
biBzaXplLgotICAgIFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlck9i
amVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVH
cmFkaWVudChSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogCiAgICAgYm9vbCBlcXVh
bHMoY29uc3QgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZSYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKaW5kZXggYTkwNWYyMzVmY2JjYjMy
YTk0NmQyMjg4ZWJhODY1ZDg0NmU4MDY2Zi4uMTAxNTc1ZGEwZDlmNWUxY2MzNTYyNTVkNmFmNDRl
YjNkMmRhMDdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJh
dG9yVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkNTU0dyYWRpZW50VmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
U3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC01MCwxNCArNTAsMTQgQEAgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6fkNTU0ltYWdlR2VuZXJh
dG9yVmFsdWUoKQogewogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmFkZENsaWVu
dChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjph
ZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgQVNTRVJUKHJlbmRlcmVy
KTsKICAgICByZWYoKTsKICAgICBtX2NsaWVudHMuYWRkKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKK3ZvaWQgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyKQogewogICAgIEFTU0VSVChyZW5kZXJlcik7CiAgICAgbV9jbGllbnRzLnJl
bW92ZShyZW5kZXJlcik7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBDU1NJbWFnZUdlbmVyYXRv
clZhbHVlOjpDYWNoZWRHZW5lcmF0ZWRJbWFnZTo6ZXZpY3Rpb25UaW1lckZpcmVkKERlZmVycmFi
bGUKICAgICBtX293bmVyLmV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UobV9zaXplKTsKIH0KIAot
UGFzc1JlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8SW1hZ2U+IENT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBJbnRTaXplJiBzaXplKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAgICBjYXNl
IENhbnZhc0NsYXNzOgpAQCAtMTQ2LDcgKzE0Niw3IEBAIGJvb2wgQ1NTSW1hZ2VHZW5lcmF0b3JW
YWx1ZTo6aXNGaXhlZFNpemUoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotSW50U2l6
ZSBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKK0ludFNpemUgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsK
ICAgICBjYXNlIENhbnZhc0NsYXNzOgpAQCAtMTg4LDcgKzE4OCw3IEBAIGJvb2wgQ1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZTo6aXNQZW5kaW5nKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LWJvb2wgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6Omtu
b3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKIHsKICAg
ICBzd2l0Y2ggKGNsYXNzVHlwZSgpKSB7CiAgICAgY2FzZSBDcm9zc2ZhZGVDbGFzczoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCmluZGV4IDY4ZThhODI3ZGFl
MGI5ZTQ3ZmUwMGEyYzE4ODVmMTRlM2ZmZDg3N2YuLjIxNDE5ZmFjMmU3MWQ0YWQwMWI0YWQzYzA1
MGUxZWY0YmFjYzIzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9y
VmFsdWUuaApAQCAtMzgsMjMgKzM4LDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBHZW5lcmF0ZWRJbWFnZTsKLWNsYXNzIFJlbmRl
ck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBTdHlsZVJlc29sdmVyOwogCiBj
bGFzcyBDU1NJbWFnZUdlbmVyYXRvclZhbHVlIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoK
ICAgICB+Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpOwogCi0gICAgdm9pZCBhZGRDbGllbnQoUmVu
ZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7CisgICAg
dm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopOworICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFJl
bmRlckVsZW1lbnQqKTsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVj
dCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJF
bGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogCiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0
OwotICAgIEludFNpemUgZml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCopOworICAgIEludFNp
emUgZml4ZWRTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqKTsKIAogICAgIGJvb2wgaXNQZW5kaW5n
KCkgY29uc3Q7Ci0gICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0Kikg
Y29uc3Q7CisgICAgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNv
bnN0OwogCiAgICAgdm9pZCBsb2FkU3ViaW1hZ2VzKENhY2hlZFJlc291cmNlTG9hZGVyKik7CiAK
QEAgLTYzLDcgKzYzLDcgQEAgcHJvdGVjdGVkOgogCiAgICAgR2VuZXJhdGVkSW1hZ2UqIGNhY2hl
ZEltYWdlRm9yU2l6ZShJbnRTaXplKTsKICAgICB2b2lkIHNhdmVDYWNoZWRJbWFnZUZvclNpemUo
SW50U2l6ZSwgUGFzc1JlZlB0cjxHZW5lcmF0ZWRJbWFnZT4pOwotICAgIGNvbnN0IEhhc2hDb3Vu
dGVkU2V0PFJlbmRlck9iamVjdCo+JiBjbGllbnRzKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRz
OyB9CisgICAgY29uc3QgSGFzaENvdW50ZWRTZXQ8UmVuZGVyRWxlbWVudCo+JiBjbGllbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9jbGllbnRzOyB9CiAKICAgICAvLyBIZWxwZXIgZnVuY3Rpb25zIGZv
ciBDcm9zc2ZhZGUgYW5kIEZpbHRlci4KICAgICBzdGF0aWMgQ2FjaGVkSW1hZ2UqIGNhY2hlZElt
YWdlRm9yQ1NTVmFsdWUoQ1NTVmFsdWUqLCBDYWNoZWRSZXNvdXJjZUxvYWRlciopOwpAQCAtODgs
NyArODgsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRHZW5lcmF0ZWRJbWFn
ZTsKICAgICB2b2lkIGV2aWN0Q2FjaGVkR2VuZXJhdGVkSW1hZ2UoSW50U2l6ZSk7CiAKLSAgICBI
YXNoQ291bnRlZFNldDxSZW5kZXJPYmplY3QqPiBtX2NsaWVudHM7CisgICAgSGFzaENvdW50ZWRT
ZXQ8UmVuZGVyRWxlbWVudCo+IG1fY2xpZW50czsKICAgICBIYXNoTWFwPEludFNpemUsIE93blB0
cjxDYWNoZWRHZW5lcmF0ZWRJbWFnZT4gPiBtX2ltYWdlczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NJbWFnZVZhbHVlLmNwcAppbmRleCBmYzIzNjhkYmEwZDE0MGUzZTMwOGZhYWRkYjRlYWM2NjJj
ZjdiOGVjLi5iOWRlYjZjMWJhMGFlMGI3ZDc4N2I5NTdkOTRhMDNlZmEwYmY5ZjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTSW1hZ2VWYWx1ZTo6Y2xvbmVGb3JDU1NPTSgpIGNvbnN0CiAgICAgcmV0
dXJuIHVyaVZhbHVlLnJlbGVhc2UoKTsKIH0KIAotYm9vbCBDU1NJbWFnZVZhbHVlOjprbm93blRv
QmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgQ1NTSW1h
Z2VWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBj
b25zdAogewogICAgIHJldHVybiBtX2ltYWdlID8gbV9pbWFnZS0+a25vd25Ub0JlT3BhcXVlKHJl
bmRlcmVyKSA6IGZhbHNlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0lt
YWdlVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKaW5kZXggOTli
MGM2Y2MzZTcwODU2MzQ4NTBkYTlmMzdhMjJkMzI5NzBiYTkwOS4uNWRiMjA0MzAxZTZhZmFjMmNh
OWIyOGM1Y2RmMGE5YjM1Nzc3YjRlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlVmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCkBA
IC0zMCw3ICszMCw3IEBAIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3MgRWxlbWVu
dDsKIGNsYXNzIFN0eWxlQ2FjaGVkSW1hZ2U7CiBjbGFzcyBTdHlsZUltYWdlOwotY2xhc3MgUmVu
ZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9w
dGlvbnM7CiAKIGNsYXNzIENTU0ltYWdlVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUgewpAQCAtNTQs
NyArNTQsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NJbWFnZVZhbHVl
JikgY29uc3Q7CiAKLSAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kikg
Y29uc3Q7CiAKICAgICB2b2lkIHNldEluaXRpYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IHsgbV9pbml0aWF0b3JOYW1lID0gbmFtZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVw
cmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKaW5kZXggYjJhMGZhNzQ2NzlkY2FkOGI1MGIyNTMwNTJh
NWYzYzY3Yjg0MDA3Yi4uNWM4ODdmNzlmZWVjMTI4MmNlYmI0MGJlMDk4YmRjN2U3NDcwN2U0NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcApAQCAt
NDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2lu
Y2x1ZGUgIlJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5k
ZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApp
bmRleCAxZjA3M2I1NzVjMmJlMWViNjMyMzVkZWQ3MTQ1YjhiMDk5MDUwMTM3Li41Zjk4YWNlZGE0
MDYyZmE4YWJlZmQ2YWY3YjJmNzZmMGM2MzAwYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcApAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQg
RG9jdW1lbnRNYXJrZXJDb250cm9sbGVyOjpyZW1vdmVNYXJrZXJzRnJvbUxpc3QoTWFya2VyTWFw
OjppdGVyYXRvciBpdGVyYXRvCiAgICAgfQogCiAgICAgaWYgKG5lZWRzUmVwYWludGluZykgewot
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0ZXJhdG9yLT5rZXktPnJlbmRl
cmVyKCkpCisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gaXRlcmF0b3ItPmtleS0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CiAgICAgfQogCkBAIC00OTMs
NyArNDkzLDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlcGFpbnRNYXJrZXJz
KERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlcyBtYXJrZXIKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIC8vIGNhdXNlIHRoZSBub2RlIHRvIGJlIHJlZHJhd24KLSAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQorICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+
cmVwYWludCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAzYmRmYjNjZDQz
ZjcxNmYzMDVjYjMzNTA1YzEyOTM1MjlmMDM5ZTMxLi41YjM5NjQ3ODllOGZiYmU2YzYwZDU1ZTQw
MTEzYTUxZTIxYjVkZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02MDMsMTcgKzYwMywx
NyBAQCB2b2lkIEVsZW1lbnQ6OnNjcm9sbEJ5UGFnZXMoaW50IHBhZ2VzKQogICAgIHNjcm9sbEJ5
VW5pdHMocGFnZXMsIFNjcm9sbEJ5UGFnZSk7CiB9CiAKLXN0YXRpYyBmbG9hdCBsb2NhbFpvb21G
b3JSZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIGZsb2F0IGxvY2FsWm9v
bUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXMgdGhlIHdyb25nIHRoaW5nIGlmIHR3byBvcHBvc2luZyB6b29tcyBhcmUgaW4gZWZm
ZWN0IGFuZCBjYW5jZWxlZCBlYWNoCiAgICAgLy8gb3RoZXIgb3V0LCBidXQgdGhlIGFsdGVybmF0
aXZlIGlzIHRoYXQgd2UnZCBoYXZlIHRvIGNyYXdsIHVwIHRoZSB3aG9sZSByZW5kZXIgdHJlZSBl
dmVyeQogICAgIC8vIHRpbWUgKG9yIHN0b3JlIGFuIGFkZGl0aW9uYWwgYml0IGluIHRoZSBSZW5k
ZXJTdHlsZSB0byBpbmRpY2F0ZSB0aGF0IGEgem9vbSB3YXMgc3BlY2lmaWVkKS4KICAgICBmbG9h
dCB6b29tRmFjdG9yID0gMTsKICAgICBpZiAocmVuZGVyZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSAhPSAxKSB7Ci0gICAgICAgIC8vIE5lZWQgdG8gZmluZCB0aGUgbmVhcmVzdCBlbmNsb3Np
bmcgUmVuZGVyT2JqZWN0IHRoYXQgc2V0IHVwCisgICAgICAgIC8vIE5lZWQgdG8gZmluZCB0aGUg
bmVhcmVzdCBlbmNsb3NpbmcgUmVuZGVyRWxlbWVudCB0aGF0IHNldCB1cAogICAgICAgICAvLyBh
IGRpZmZlcmluZyB6b29tLCBhbmQgdGhlbiB3ZSBkaXZpZGUgb3VyIHJlc3VsdCBieSBpdCB0byBl
bGltaW5hdGUgdGhlIHpvb20uCi0gICAgICAgIFJlbmRlck9iamVjdCogcHJldiA9IHJlbmRlcmVy
OwotICAgICAgICBmb3IgKFJlbmRlck9iamVjdCogY3VyciA9IHByZXYtPnBhcmVudCgpOyBjdXJy
OyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKKyAgICAgICAgUmVuZGVyRWxlbWVudCogcHJldiA9
IHJlbmRlcmVyOworICAgICAgICBmb3IgKFJlbmRlckVsZW1lbnQqIGN1cnIgPSBwcmV2LT5wYXJl
bnQoKTsgY3VycjsgY3VyciA9IGN1cnItPnBhcmVudCgpKSB7CiAgICAgICAgICAgICBpZiAoY3Vy
ci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpICE9IHByZXYtPnN0eWxlKCktPmVmZmVjdGl2ZVpv
b20oKSkgewogICAgICAgICAgICAgICAgIHpvb21GYWN0b3IgPSBwcmV2LT5zdHlsZSgpLT56b29t
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC02MjYsNyArNjI2LDcgQEAgc3RhdGljIGZs
b2F0IGxvY2FsWm9vbUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0
dXJuIHpvb21GYWN0b3I7CiB9CiAKLXN0YXRpYyBpbnQgYWRqdXN0Rm9yTG9jYWxab29tKExheW91
dFVuaXQgdmFsdWUsIFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitzdGF0aWMgaW50IGFkanVzdEZv
ckxvY2FsWm9vbShMYXlvdXRVbml0IHZhbHVlLCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsK
ICAgICBmbG9hdCB6b29tRmFjdG9yID0gbG9jYWxab29tRm9yUmVuZGVyZXIocmVuZGVyZXIpOwog
ICAgIGlmICh6b29tRmFjdG9yID09IDEpCkBAIC02OTIsMTEgKzY5MiwxMyBAQCBFbGVtZW50KiBF
bGVtZW50OjpiaW5kaW5nc09mZnNldFBhcmVudCgpCiBFbGVtZW50KiBFbGVtZW50OjpvZmZzZXRQ
YXJlbnQoKQogewogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9mZnNldFBhcmVudCA9IHJlbmRlcmVy
LT5vZmZzZXRQYXJlbnQoKSkKLSAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQob2Zmc2V0UGFy
ZW50LT5ub2RlKCkpOwotICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICBhdXRvIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBhdXRvIG9mZnNldFBhcmVudCA9IHJlbmRlcmVyLT5vZmZzZXRQYXJlbnQoKTsK
KyAgICBpZiAoIW9mZnNldFBhcmVudCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIG9mZnNldFBhcmVudC0+ZWxlbWVudCgpOwogfQogCiBpbnQgRWxlbWVudDo6Y2xpZW50TGVm
dCgpCkBAIC0yMzUwLDcgKzIzNTIsNyBAQCBib29sIEVsZW1lbnQ6OnVwZGF0ZUV4aXN0aW5nUHNl
dWRvRWxlbWVudChQc2V1ZG9FbGVtZW50KiBleGlzdGluZ1BzZXVkb0VsZW1lbnQsCiAgICAgLy8g
RklYTUU6IFRoaXMgaXMgc2lsbHkuCiAgICAgLy8gV2FpdCB1bnRpbCBvdXIgcGFyZW50IGlzIG5v
dCBkaXNwbGF5ZWQgb3IgcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQKICAgICAvLyBpcyBm
YWxzZSwgb3RoZXJ3aXNlIHdlIGNvdWxkIGNvbnRpbm91c2x5IGNyZWF0ZSBhbmQgZGVzdHJveSBQ
c2V1ZG9FbGVtZW50cwotICAgIC8vIHdoZW4gUmVuZGVyT2JqZWN0Ojppc0NoaWxkQWxsb3dlZCBv
biBvdXIgcGFyZW50IHJldHVybnMgZmFsc2UgZm9yIHRoZQorICAgIC8vIHdoZW4gUmVuZGVyRWxl
bWVudDo6aXNDaGlsZEFsbG93ZWQgb24gb3VyIHBhcmVudCByZXR1cm5zIGZhbHNlIGZvciB0aGUK
ICAgICAvLyBQc2V1ZG9FbGVtZW50J3MgcmVuZGVyZXIgZm9yIGVhY2ggc3R5bGUgcmVjYWxjLgog
ICAgIHJldHVybiByZW5kZXJlcigpICYmIHBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKGV4
aXN0aW5nUHNldWRvRWxlbWVudC0+cmVuZGVyU3R5bGUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudFJhcmVEYXRhLmgKaW5kZXggYjU1Njg2N2EyMmMwMjNkYzQxMDgwOTU2MzM1YThmMDgyMTI3
YTNkNi4uZmUyYTgyNWMzM2RkZTE1OWQ2YTk5ZWMwNzhlNzU1YjVjY2JiZTQ3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIk5h
bWVkTm9kZU1hcC5oIgogI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgogI2luY2x1ZGUgIlBzZXVk
b0VsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2hhZG93
Um9vdC5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KQEAgLTM1LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBF
bGVtZW50UmFyZURhdGEgOiBwdWJsaWMgTm9kZVJhcmVEYXRhIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxFbGVtZW50UmFyZURhdGE+IGNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSB7IHJldHVybiBhZG9wdFB0cihuZXcgRWxlbWVudFJhcmVEYXRhKHJlbmRlcmVyKSk7IH0K
KyAgICBzdGF0aWMgUGFzc093blB0cjxFbGVtZW50UmFyZURhdGE+IGNyZWF0ZShSZW5kZXJFbGVt
ZW50KiByZW5kZXJlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEVsZW1lbnRSYXJlRGF0YShyZW5k
ZXJlcikpOyB9CiAKICAgICB+RWxlbWVudFJhcmVEYXRhKCk7CiAKQEAgLTE2Niw3ICsxNjcsNyBA
QCBwcml2YXRlOgogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2JlZm9yZVBzZXVkb0VsZW1l
bnQ7CiAgICAgUmVmUHRyPFBzZXVkb0VsZW1lbnQ+IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50OwogCi0g
ICAgZXhwbGljaXQgRWxlbWVudFJhcmVEYXRhKFJlbmRlck9iamVjdCopOworICAgIGV4cGxpY2l0
IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJFbGVtZW50Kik7CiAgICAgdm9pZCByZWxlYXNlUHNldWRv
RWxlbWVudChQc2V1ZG9FbGVtZW50Kik7CiB9OwogCkBAIC0xNzUsNyArMTc2LDcgQEAgaW5saW5l
IEludFNpemUgZGVmYXVsdE1pbmltdW1TaXplRm9yUmVzaXppbmcoKQogICAgIHJldHVybiBJbnRT
aXplKExheW91dFVuaXQ6Om1heCgpLCBMYXlvdXRVbml0OjptYXgoKSk7CiB9CiAKLWlubGluZSBF
bGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQor
aW5saW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyKQogICAgIDogTm9kZVJhcmVEYXRhKHJlbmRlcmVyKQogICAgICwgbV90YWJJbmRleCgw
KQogICAgICwgbV9jaGlsZEluZGV4KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggYWEyMTk2ZTU0MzZi
ZTczNzhhOGVmZDBmMWEzNWZmZTk3YmVjMTcwMC4uMTZmYzMzMTE1MjJlYzUyMzRjOTU5N2VmNjhj
ZmU4YzMyODQ4OWFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMzg2LDcgKzM4Niw3IEBAIE5vZGVS
YXJlRGF0YSYgTm9kZTo6ZW5zdXJlUmFyZURhdGEoKQogCiAgICAgTm9kZVJhcmVEYXRhKiBkYXRh
OwogICAgIGlmIChpc0VsZW1lbnROb2RlKCkpCi0gICAgICAgIGRhdGEgPSBFbGVtZW50UmFyZURh
dGE6OmNyZWF0ZShtX2RhdGEubV9yZW5kZXJlcikubGVha1B0cigpOworICAgICAgICBkYXRhID0g
RWxlbWVudFJhcmVEYXRhOjpjcmVhdGUodG9SZW5kZXJFbGVtZW50KG1fZGF0YS5tX3JlbmRlcmVy
KSkubGVha1B0cigpOwogICAgIGVsc2UKICAgICAgICAgZGF0YSA9IE5vZGVSYXJlRGF0YTo6Y3Jl
YXRlKG1fZGF0YS5tX3JlbmRlcmVyKS5sZWFrUHRyKCk7CiAgICAgQVNTRVJUKGRhdGEpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5k
ZXggOTQ2MTBhMmMyYjk4YmY2OTFjNmQ5ODQ5NjkwNmUxNDlhODY3NzgzYy4uNjBkYzlkN2U2MTI0
ZWI3YWRkMGU3ZTFiMWUzNmJmNjFiNGViMThlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCkBAIC0xMDIsMjQgKzEwMiwyNCBAQCBz
dGF0aWMgYm9vbCBpc0RlbGV0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICBpZiAo
KGJvcmRlckJvdW5kaW5nQm94LndpZHRoKCkgKiBib3JkZXJCb3VuZGluZ0JveC5oZWlnaHQoKSkg
PCBtaW5pbXVtQXJlYSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHJlbmRlcmVy
LT5pc1RhYmxlKCkpCisgICAgaWYgKGJveC0+aXNUYWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHVsVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1l
KG9sVGFnKSB8fCBub2RlLT5oYXNUYWdOYW1lKGlmcmFtZVRhZykpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKKyAgICBp
ZiAoYm94LT5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAK
LSAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSAmJiAhcmVuZGVyZXItPmlzVGFibGVD
ZWxsKCkpIHsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7
CisgICAgaWYgKGJveC0+aXNSZW5kZXJCbG9jaygpICYmICFib3gtPmlzVGFibGVDZWxsKCkpIHsK
KyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gYm94LT5zdHlsZSgpOwogICAgICAgICBpZiAo
IXN0eWxlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIEFsbG93IGJs
b2NrcyB0aGF0IGhhdmUgYmFja2dyb3VuZCBpbWFnZXMKICAgICAgICAgaWYgKHN0eWxlLT5oYXNC
YWNrZ3JvdW5kSW1hZ2UoKSkgewogICAgICAgICAgICAgZm9yIChjb25zdCBGaWxsTGF5ZXIqIGJh
Y2tncm91bmQgPSBzdHlsZS0+YmFja2dyb3VuZExheWVycygpOyBiYWNrZ3JvdW5kOyBiYWNrZ3Jv
dW5kID0gYmFja2dyb3VuZC0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJhY2tncm91
bmQtPmltYWdlKCkgJiYgYmFja2dyb3VuZC0+aW1hZ2UoKS0+Y2FuUmVuZGVyKHJlbmRlcmVyLCAx
KSkKKyAgICAgICAgICAgICAgICBpZiAoYmFja2dyb3VuZC0+aW1hZ2UoKSAmJiBiYWNrZ3JvdW5k
LT5pbWFnZSgpLT5jYW5SZW5kZXIoYm94LCAxKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0
aWMgYm9vbCBpc0RlbGV0YWJsZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKICAgICAgICAgaWYg
KCFwYXJlbnRTdHlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
cmVuZGVyZXItPmhhc0JhY2tncm91bmQoKSAmJiAoIXBhcmVudFJlbmRlcmVyLT5oYXNCYWNrZ3Jv
dW5kKCkgfHwgc3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcikgIT0gcGFyZW50U3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcikpKQorICAgICAgICBpZiAoYm94LT5oYXNCYWNrZ3JvdW5kKCkgJiYg
KCFwYXJlbnRSZW5kZXJlci0+aGFzQmFja2dyb3VuZCgpIHx8IHN0eWxlLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpICE9IHBhcmVudFN0eWxlLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDM1YjMwMWZlNTk3OGNkYzRmM2YxZjkzN2FhNmI3MDc0ODJkNmI4ODMuLjE5N2ExZTY5OWM5N2Q4
MGQ0NjFmZTBkNmFmNWM2NDNhM2E4MGNlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTU4MCw3ICs1ODAsNyBAQCBib29sIEVkaXRvcjo6aGFzQmlkaVNlbGVjdGlvbigpIGNvbnN0
CiAgICAgfSBlbHNlCiAgICAgICAgIHN0YXJ0Tm9kZSA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgp
OwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKTsK
KyAgICBhdXRvIHJlbmRlcmVyID0gc3RhcnROb2RlLT5yZW5kZXJlcigpOwogICAgIHdoaWxlIChy
ZW5kZXJlciAmJiAhcmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSkKICAgICAgICAgcmVuZGVyZXIg
PSByZW5kZXJlci0+cGFyZW50KCk7CiAKQEAgLTE0MzgsNyArMTQzOCw3IEBAIFdyaXRpbmdEaXJl
Y3Rpb24gRWRpdG9yOjpiYXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29u
c3QKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gcmVz
dWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA4MGU0
MmEzNmRkNGRmY2JiZDk3NDI3YTRkNWU0YjkwMzQ0ZDA2MjI3Li42YzA3Njk5OTlmNWE2ZjcyY2Rl
NTAzYjU1MGVmNjQwYzg2NTZhNmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHAKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmVydGljYWxTY3Jv
bGxEaXN0YW5jZShGcmFtZSYgZnJhbWUpCiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBm
cmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwogICAgIGlmICghZm9jdXNlZEVsZW1l
bnQpCiAgICAgICAgIHJldHVybiAwOwotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1
c2VkRWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gZm9jdXNlZEVsZW1l
bnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzQm94KCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRlcmVyLT5z
dHlsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA4NzQzYjI0
MTBkNzU2MDkwZDI5ZThlZjkyY2Y1Y2NlY2UzOGVhMmU4Li5iOTAxMDUwYTliNWZhMjUyMGQwN2Ix
OWM5YzBhOGUyZWQ5OGRhMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cApAQCAtMzI2LDExICszMjYsMTMgQEAgRWxlbWVudCogZW5jbG9zaW5nQmxvY2soTm9kZSogbm9k
ZSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUpCiAKIFRleHREaXJlY3Rpb24gZGly
ZWN0aW9uT2ZFbmNsb3NpbmdCbG9jayhjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24pCiB7Ci0gICAg
Tm9kZSogZW5jbG9zaW5nQmxvY2tOb2RlID0gZW5jbG9zaW5nQmxvY2socG9zaXRpb24uY29udGFp
bmVyTm9kZSgpKTsKLSAgICBpZiAoIWVuY2xvc2luZ0Jsb2NrTm9kZSkKKyAgICBhdXRvIGJsb2Nr
ID0gZW5jbG9zaW5nQmxvY2socG9zaXRpb24uY29udGFpbmVyTm9kZSgpKTsKKyAgICBpZiAoIWJs
b2NrKQogICAgICAgICByZXR1cm4gTFRSOwotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBl
bmNsb3NpbmdCbG9ja05vZGUtPnJlbmRlcmVyKCk7Ci0gICAgcmV0dXJuIHJlbmRlcmVyID8gcmVu
ZGVyZXItPnN0eWxlKCktPmRpcmVjdGlvbigpIDogTFRSOworICAgIGF1dG8gcmVuZGVyZXIgPSBi
bG9jay0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gTFRS
OworICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7CiB9CiAKIC8vIFRo
aXMgbWV0aG9kIGlzIHVzZWQgdG8gY3JlYXRlIHBvc2l0aW9ucyBpbiB0aGUgRE9NLiBJdCByZXR1
cm5zIHRoZSBtYXhpbXVtIHZhbGlkIG9mZnNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRp
dG9ySU9TLm1tCmluZGV4IGUwOTRmMGY0MTMyZDhiMDcwYjVmNTk4ZDM5YjEwYzgxZjNjNjViN2Mu
LmI5NWUwZGJhNDU5NDcxZGEwYjRiMDg3NDNhZmJkMGIwYWI5YTAxZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KQEAgLTI0NCw3ICsyNDQsNyBAQCBjb25zdCBTaW1w
bGVGb250RGF0YSogRWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9u
dHMpIGNvbnN0CiAgICAgICAgIC8vIEluIHRoZSBsb29wIGJlbG93LCBuIHNob3VsZCBldmVudHVh
bGx5IG1hdGNoIHBhc3RFbmQgYW5kIG5vdCBiZWNvbWUgbmlsLCBidXQgd2UndmUgc2VlbiBhdCBs
ZWFzdCBvbmUKICAgICAgICAgLy8gdW5yZXByb2R1Y2libGUgY2FzZSB3aGVyZSB0aGlzIGRpZG4n
dCBoYXBwZW4sIHNvIGNoZWNrIGZvciBudWxsIGFsc28uCiAgICAgICAgIGZvciAoTm9kZSogbm9k
ZSA9IHN0YXJ0Tm9kZTsgbm9kZSAmJiBub2RlICE9IHBhc3RFbmQ7IG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KG5vZGUpKSB7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5k
ZXJlcigpOwogICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBBcmUgdGhlcmUgYW55IG5vZGUgdHlwZXMgdGhh
dCBoYXZlIHJlbmRlcmVycywgYnV0IHRoYXQgd2Ugc2hvdWxkIGJlIHNraXBwaW5nPwpAQCAtMzQ0
LDcgKzM0NCw3IEBAIHZvaWQgRWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0
ZWJvYXJkJiBwYXN0ZWJvYXJkKQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFn
ZUVsZW1lbnQsIFJlZlB0cjxJbWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hlZEltYWdl
KQogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQucmVuZGVyZXIo
KTsKKyAgICBhdXRvIHJlbmRlcmVyID0gaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYg
KCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KaW5kZXggZGQ0NDM2MzdjOWQ2Njhk
MmNmNjgxMDBmODM1MGNkMGUwZDJiMjhjOS4uNzFiMTg0Y2NiNGNjOTkyNjM5MDg4MzEyYmRiODQx
MWE1NjhkNGMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQpAQCAt
MTU5LDcgKzE1OSw3IEBAIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBFZGl0b3I6OmZvbnRGb3JTZWxl
Y3Rpb24oYm9vbCYgaGFzTXVsdGlwbGVGb250cykgY29uc3QKICAgICAgICAgLy8gSW4gdGhlIGxv
b3AgYmVsb3csIG4gc2hvdWxkIGV2ZW50dWFsbHkgbWF0Y2ggcGFzdEVuZCBhbmQgbm90IGJlY29t
ZSBuaWwsIGJ1dCB3ZSd2ZSBzZWVuIGF0IGxlYXN0IG9uZQogICAgICAgICAvLyB1bnJlcHJvZHVj
aWJsZSBjYXNlIHdoZXJlIHRoaXMgZGlkbid0IGhhcHBlbiwgc28gY2hlY2sgZm9yIG51bGwgYWxz
by4KICAgICAgICAgZm9yIChOb2RlKiBub2RlID0gc3RhcnROb2RlOyBub2RlICYmIG5vZGUgIT0g
cGFzdEVuZDsgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSkpIHsKLSAgICAgICAgICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICAgICAg
YXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAoIXJlbmRl
cmVyKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgLy8gRklYTUU6IEFy
ZSB0aGVyZSBhbnkgbm9kZSB0eXBlcyB0aGF0IGhhdmUgcmVuZGVyZXJzLCBidXQgdGhhdCB3ZSBz
aG91bGQgYmUgc2tpcHBpbmc/CkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBFZGl0b3I6OndyaXRl
U2VsZWN0aW9uVG9QYXN0ZWJvYXJkKFBhc3RlYm9hcmQmIHBhc3RlYm9hcmQpCiAKIHN0YXRpYyB2
b2lkIGdldEltYWdlKEVsZW1lbnQmIGltYWdlRWxlbWVudCwgUmVmUHRyPEltYWdlPiYgaW1hZ2Us
IENhY2hlZEltYWdlKiYgY2FjaGVkSW1hZ2UpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGltYWdlRWxlbWVudC5yZW5kZXJlcigpOworICAgIGF1dG8gcmVuZGVyZXIgPSBpbWFnZUVs
ZW1lbnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFn
ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA1
MWVmM2YyZWM5ZWVkMjBiZjc4MDM4MzE2Y2M0MjFiMjZmMTY0NjU3Li5hNzQzYmI2NDY2MTUwOWY3
ODk1M2I1YjA5ODg4NWZjZTNkYzU5Y2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBA
IC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiTWFya3VwQWNjdW11bGF0b3IuaCIKICNpbmNsdWRl
ICJSYW5nZS5oIgogI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEFyZWFFbGVtZW50LmNwcAppbmRleCA1MjA3ZjBlZmE3YmVmM2UxMjQyYmMxOTRhM2ZiNGZh
YWI0ZDc5ZmMzLi5kYjQxYzViMzk4ZGY4Yjk4ODQ1YmNjYTU5Nzc4Y2RlMDhmZDQyYTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIGJv
b2wgSFRNTEFyZWFFbGVtZW50OjptYXBNb3VzZUV2ZW50KExheW91dFBvaW50IGxvY2F0aW9uLCBj
b25zdCBMYXlvdXRTaXplJiBzaXplCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVBhdGggSFRNTEFy
ZWFFbGVtZW50Ojpjb21wdXRlUGF0aChSZW5kZXJPYmplY3QqIG9iaikgY29uc3QKK1BhdGggSFRN
TEFyZWFFbGVtZW50Ojpjb21wdXRlUGF0aChSZW5kZXJFbGVtZW50KiBvYmopIGNvbnN0CiB7CiAg
ICAgaWYgKCFvYmopCiAgICAgICAgIHJldHVybiBQYXRoKCk7CkBAIC0xMTksNyArMTE5LDcgQEAg
UGF0aCBIVE1MQXJlYUVsZW1lbnQ6OmNvbXB1dGVQYXRoKFJlbmRlck9iamVjdCogb2JqKSBjb25z
dAogICAgIHJldHVybiBwOwogfQogICAgIAotTGF5b3V0UmVjdCBIVE1MQXJlYUVsZW1lbnQ6OmNv
bXB1dGVSZWN0KFJlbmRlck9iamVjdCogb2JqKSBjb25zdAorTGF5b3V0UmVjdCBIVE1MQXJlYUVs
ZW1lbnQ6OmNvbXB1dGVSZWN0KFJlbmRlckVsZW1lbnQqIG9iaikgY29uc3QKIHsKICAgICByZXR1
cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChjb21wdXRlUGF0aChvYmopLmZhc3RCb3VuZGluZ1JlY3Qo
KSk7CiB9CkBAIC0yMjAsNyArMjIwLDcgQEAgdm9pZCBIVE1MQXJlYUVsZW1lbnQ6OnNldEZvY3Vz
KGJvb2wgc2hvdWxkQmVGb2N1c2VkKQogICAgIGlmICghaW1hZ2VFbGVtZW50KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW1hZ2VFbGVtZW50LT5yZW5k
ZXJlcigpOworICAgIGF1dG8gcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQtPnJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQuaAppbmRleCA5Y2RiZjY2NjEzYjYy
OWRmZjM2YzczMDUzODIzNTM3ODRmNTYxNWMwLi4xODBmNjEzMDY0Yjg0Mjg4MTQyYTdlOTJhMjZl
ZTQ4MTQ4NzE4NWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKQEAgLTQx
LDggKzQxLDggQEAgcHVibGljOgogCiAgICAgYm9vbCBtYXBNb3VzZUV2ZW50KExheW91dFBvaW50
IGxvY2F0aW9uLCBjb25zdCBMYXlvdXRTaXplJiwgSGl0VGVzdFJlc3VsdCYpOwogCi0gICAgTGF5
b3V0UmVjdCBjb21wdXRlUmVjdChSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICBQYXRoIGNvbXB1
dGVQYXRoKFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIExheW91dFJlY3QgY29tcHV0ZVJlY3Qo
UmVuZGVyRWxlbWVudCopIGNvbnN0OworICAgIFBhdGggY29tcHV0ZVBhdGgoUmVuZGVyRWxlbWVu
dCopIGNvbnN0OwogCiAgICAgLy8gVGhlIHBhcmVudCBtYXAncyBpbWFnZS4KICAgICBIVE1MSW1h
Z2VFbGVtZW50KiBpbWFnZUVsZW1lbnQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5jcHAKaW5kZXggY2NhNGY4NjA1MDZkODI2YThjZmFjNGVlOTczM2U3NWQ1
YzU3NzVhOS4uYWFkODNhZDUzOTFmOTI5OGNmMDJiOTBlNzJlNzM0OTQxMzE1ZWVhMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTM0MCw3ICszNDAsNyBA
QCB2b2lkIEhUTUxDYW52YXNFbGVtZW50OjpyZXNldCgpCiAgICAgICAgIHN0YXRpY19jYXN0PFdl
YkdMUmVuZGVyaW5nQ29udGV4dCo+KG1fY29udGV4dC5nZXQoKSktPnJlc2hhcGUod2lkdGgoKSwg
aGVpZ2h0KCkpOwogI2VuZGlmCiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgaWYgKG1fcmVuZGVyZXJJc0NhbnZhcykgewogICAgICAgICAgICAgaWYg
KG9sZFNpemUgIT0gc2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgdG9SZW5kZXJIVE1MQ2FudmFz
KHJlbmRlcmVyKS0+Y2FudmFzU2l6ZUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVu
dC5jcHAKaW5kZXggYzRlZjg1YmQwZDYwZTk3MWM4YTk5MGJjYTA2M2RkZGNjOGJkZTI4Mi4uMjA4
NjE0Y2ViOGNhMmFjYTU5ZjY1NmNhYmVlM2Y4MmJjMzc1OTdjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5jcHAKQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJ
bm5lclRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyBG
SVhNRTogRG8gd2UgbmVlZCB0byBiZSBhYmxlIHRvIGRldGVjdCBwcmVzZXJ2ZU5ld2xpbmUgc3R5
bGUgZXZlbiB3aGVuIHRoZXJlJ3Mgbm8gcmVuZGVyZXI/CiAgICAgLy8gRklYTUU6IENhbiB0aGUg
cmVuZGVyZXIgYmUgb3V0IG9mIGRhdGUgaGVyZT8gRG8gd2UgbmVlZCB0byBjYWxsIHVwZGF0ZVN0
eWxlSWZOZWVkZWQ/CiAgICAgLy8gRm9yIGV4YW1wbGUsIGZvciB0aGUgY29udGVudHMgb2YgdGV4
dGFyZWEgZWxlbWVudHMgdGhhdCBhcmUgZGlzcGxheTpub25lPwotICAgIFJlbmRlck9iamVjdCog
ciA9IHJlbmRlcmVyKCk7CisgICAgYXV0byByID0gcmVuZGVyZXIoKTsKICAgICBpZiAociAmJiBy
LT5zdHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgewogICAgICAgICBpZiAoIXRleHQuY29udGFp
bnMoJ1xyJykpIHsKICAgICAgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhUZXh0KCp0aGlzLCB0
ZXh0LCBlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJv
bEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCA4NzdmZTI2YTY3MWJjMDI0ZTM5YmEwNjUwNWViOTZkOTMzNGY3MzY2Li5mYmJl
NTFkZTVlYjg3NDIzMDc4ODBjMjZlY2Q4NjViMmVkMDE5Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTI4OSw5ICsyODksNyBAQCBi
b29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmlzUmVxdWlyZWQoKSBjb25zdAogCiBzdGF0aWMg
dm9pZCB1cGRhdGVGcm9tRWxlbWVudENhbGxiYWNrKE5vZGUqIG5vZGUsIHVuc2lnbmVkKQogewot
ICAgIEFTU0VSVF9BUkcobm9kZSwgbm9kZS0+aXNFbGVtZW50Tm9kZSgpKTsKLSAgICBBU1NFUlRf
QVJHKG5vZGUsIHRvRWxlbWVudChub2RlKS0+aXNGb3JtQ29udHJvbEVsZW1lbnQoKSk7Ci0gICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpKQorICAgIGlmIChh
dXRvIHJlbmRlcmVyID0gdG9IVE1MRm9ybUNvbnRyb2xFbGVtZW50KG5vZGUpLT5yZW5kZXJlcigp
KQogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDdkN2Q2MmQ0NjdhMjViZThmN2ZkOTIz
ZWQ5NjZhMWMyZjkxNmUzMWEuLmFhNjgyMjFlZjM3Y2ZiMTAyZmIyODA0MGRlNDIzYTA3MTk3YzA3
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKQEAgLTk5LDE4ICs5
OSwxOCBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiAgICAgaWYgKCFtX3dhc0RlbW90ZWQpCiAgICAgICAgIHJldHVybiBI
VE1MRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChzdHlsZSk7CiAKLSAgICBDb250YWluZXJOb2Rl
KiBub2RlID0gcGFyZW50Tm9kZSgpOwotICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOworICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQo
KTsKKyAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRSZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIo
KTsKIAogICAgIGlmICghcGFyZW50UmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgYWxzbyBjaGVjayBmb3IgdGFibGUgY2FwdGlvbiAo
c2VlIHxmb3JtSXNUYWJsZVBhcnR8IGJlbG93KS4KLSAgICBib29sIHBhcmVudElzVGFibGVFbGVt
ZW50UGFydCA9IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZSgpICYmIGlzSFRNTFRhYmxlRWxlbWVu
dChub2RlKSkKLSAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlUm93KCkgJiYgbm9k
ZS0+aGFzVGFnTmFtZSh0clRhZykpCi0gICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJs
ZVNlY3Rpb24oKSAmJiBub2RlLT5oYXNUYWdOYW1lKHRib2R5VGFnKSkKLSAgICAgICAgfHwgKHBh
cmVudFJlbmRlcmVyLT5pc1JlbmRlclRhYmxlQ29sKCkgJiYgbm9kZS0+aGFzVGFnTmFtZShjb2xU
YWcpKQotICAgICAgICB8fCAocGFyZW50UmVuZGVyZXItPmlzVGFibGVDZWxsKCkgJiYgbm9kZS0+
aGFzVGFnTmFtZSh0clRhZykpOworICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQYXJ0ID0g
KHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlKCkgJiYgaXNIVE1MVGFibGVFbGVtZW50KHBhcmVudCkp
CisgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZVJvdygpICYmIHBhcmVudC0+aGFz
VGFnTmFtZSh0clRhZykpCisgICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZVNlY3Rp
b24oKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUodGJvZHlUYWcpKQorICAgICAgICB8fCAocGFyZW50
UmVuZGVyZXItPmlzUmVuZGVyVGFibGVDb2woKSAmJiBwYXJlbnQtPmhhc1RhZ05hbWUoY29sVGFn
KSkKKyAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgpICYmIHBhcmVudC0+
aGFzVGFnTmFtZSh0clRhZykpOwogCiAgICAgaWYgKCFwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQp
CiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVPd25lckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lT3du
ZXJFbGVtZW50LmgKaW5kZXggY2FlMjI1MDAwZWYzNzVjOTc3NGFiNjc1M2NlYWU3ZTIzMTM1NzFm
NS4uOTUwNTk0Y2VjZWY3ZDkwMTUwNjk5YmJkODhlMzUwMzBhMDE0MGFiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKIAogICAgIC8vIE1vc3Qgc3ViY2xhc3NlcyB1c2UgUmVuZGVyV2lkZ2V0IChlaXRoZXIg
UmVuZGVyRW1iZWRkZWRPYmplY3Qgb3IgUmVuZGVySUZyYW1lKQogICAgIC8vIGV4Y2VwdCBmb3Ig
SFRNTE9iamVjdEVsZW1lbnQgYW5kIEhUTUxFbWJlZEVsZW1lbnQgd2hpY2ggbWF5IHJldHVybiBh
bnkKLSAgICAvLyBSZW5kZXJPYmplY3Qgd2hlbiB1c2luZyBmYWxsYmFjayBjb250ZW50LgorICAg
IC8vIFJlbmRlckVsZW1lbnQgd2hlbiB1c2luZyBmYWxsYmFjayBjb250ZW50LgogICAgIFJlbmRl
cldpZGdldCogcmVuZGVyV2lkZ2V0KCkgY29uc3Q7CiAKICNpZiBFTkFCTEUoU1ZHKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggMjVmNTE2NmY2ZjMwMDE2ZTcy
ZTg2OWU2MGM5MTdlNDc3OTUzMDdlOS4uM2U5NjI2ODIyMzg2NTYxZjkyNzdmZjdiMjhlYTZmYzAw
MzQ1ODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC0z
MjYsMjQgKzMyNiwyMiBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnNldFdpZHRoKGludCB2YWx1
ZSkKIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6OngoKSBjb25zdAogewotICAgIFJlbmRlck9iamVj
dCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyKQorICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMu
Ci0gICAgRmxvYXRQb2ludCBhYnNQb3MgPSByLT5sb2NhbFRvQWJzb2x1dGUoKTsKLSAgICByZXR1
cm4gYWJzUG9zLngoKTsKKyAgICByZXR1cm4gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpLngo
KTsKIH0KIAogaW50IEhUTUxJbWFnZUVsZW1lbnQ6OnkoKSBjb25zdAogewotICAgIFJlbmRlck9i
amVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyKQorICAgIGF1dG8gcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9y
bXMuCi0gICAgRmxvYXRQb2ludCBhYnNQb3MgPSByLT5sb2NhbFRvQWJzb2x1dGUoKTsKLSAgICBy
ZXR1cm4gYWJzUG9zLnkoKTsKKyAgICByZXR1cm4gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgp
LnkoKTsKIH0KIAogYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpjb21wbGV0ZSgpIGNvbnN0CkBAIC0z
ODQsNyArMzgyLDcgQEAgYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNvbnN0
CiAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS83NzI1
MTU4Pi4gV2Ugc2hvdWxkIGZpbmQgYSBiZXR0ZXIgcGxhY2UgZm9yIHRoZSB0b3VjaENhbGxvdXRF
bmFibGVkKCkgbG9naWMuCiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3Vz
ZUNsaWNrRXZlbnRzKCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBSZW5k
ZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogbnVsbHB0cjsK
ICAgICBpZiAoIXN0eWxlIHx8IHN0eWxlLT50b3VjaENhbGxvdXRFbmFibGVkKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcAppbmRleCBl
ZjQ3Mzg4ODFiNTZlNjhlMjg4NDFiMDE2MGYwMjIxNDkxZGI1ZGY2Li5mODI1YmIxNWQ2NTEzOGFm
MTliMWQ4NzUwYzNmNTZhZDk1YWIzYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVt
ZW50LmNwcApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1
ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDRkNjQyNTdmMGZiZjNjMTI1MGFiOTRlNzgyNGE5
MzRkMjlmMDYyOWYuLmZhNTU0ZWZmOWZjOTc3ZDI1OTcxNDQ5MDVkNDg0ODMzMGRmMTM0YjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNDI2NCwxMiArNDI2
NCwxMSBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhVm9sdW1lRGlkQ2hhbmdlKCkKIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7
CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgUmVuZGVyT2JqZWN0KiBy
ID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoIXIgfHwgIXItPmlzV2lkZ2V0KCkpCisgICAgYXV0byBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVy
ZXItPmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdpZGdldCogd2lkZ2V0ID0g
dG9SZW5kZXJXaWRnZXQociktPndpZGdldCgpOwotICAgIGlmICh3aWRnZXQpCisgICAgaWYgKFdp
ZGdldCogd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVuZGVyZXIpLT53aWRnZXQoKSkKICAgICAg
ICAgd2lkZ2V0LT5oYW5kbGVFdmVudChldmVudCk7CiAjZWxzZQogICAgIEhUTUxFbGVtZW50Ojpk
ZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVs
ZW1lbnQuY3BwCmluZGV4IGIzNWU4ODQwNTYxZmUzMjNkYWViYjliNGFjN2ZhMWMxYzM2MDk0ZmQu
LjBlOGFiMjc0ZTAzOTk1MDRmNTk2N2EwNzgzMDczODI1NGQ4YWYyNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUg
IkhUTUxNZXRlckVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUg
IkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZvcm1EYXRhTGlzdC5oIgpAQCAtMjIwLDExICsy
MjEsOCBAQCB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OmRpZEVsZW1lbnRTdGF0ZUNoYW5nZSgpCiBS
ZW5kZXJNZXRlciogSFRNTE1ldGVyRWxlbWVudDo6cmVuZGVyTWV0ZXIoKSBjb25zdAogewogICAg
IGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzTWV0ZXIoKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFJlbmRlck1ldGVyKj4ocmVuZGVyZXIoKSk7Ci0KLSAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+Zmlyc3RDaGlsZCgpLT5y
ZW5kZXJlcigpOwotICAgIEFTU0VSVCghcmVuZGVyT2JqZWN0IHx8IHJlbmRlck9iamVjdC0+aXNN
ZXRlcigpKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyTWV0ZXIqPihyZW5kZXJPYmpl
Y3QpOworICAgICAgICByZXR1cm4gdG9SZW5kZXJNZXRlcihyZW5kZXJlcigpKTsKKyAgICByZXR1
cm4gdG9SZW5kZXJNZXRlcihFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbih1c2VyQWdlbnRT
aGFkb3dSb290KCkpLT5yZW5kZXJlcigpKTsKIH0KIAogdm9pZCBIVE1MTWV0ZXJFbGVtZW50Ojpk
aWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqIHJvb3QpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM4NGQ4NjY5MjUzNTY0YWRiY2Y0Y2Rj
ODQ1NzljYjU4NmI2ZjVkN2EuLjQ4NjAzNTU2ODQ5ODcxYmE2ZDczNDFkOTI0NTg0YjdmNjMyMGJk
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCkBAIC0zMjQs
OCArMzI0LDggQEAgdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUoU3R5bGU6
OkNoYW5nZSkKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBuYXN0eSwgd2UgYXNrIG91ciBvd25l
ciBzZWxlY3QgdG8gcmVwYWludCBldmVuIGlmIHRoZSBuZXcKICAgICAvLyBzdHlsZSBpcyBleGFj
dGx5IHRoZSBzYW1lLgotICAgIGlmIChIVE1MU2VsZWN0RWxlbWVudCogc2VsZWN0ID0gb3duZXJT
ZWxlY3RFbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBz
ZWxlY3QtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gc2VsZWN0ID0gb3duZXJTZWxlY3RFbGVt
ZW50KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBzZWxlY3QtPnJlbmRlcmVyKCkp
CiAgICAgICAgICAgICByZW5kZXJlci0+cmVwYWludCgpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggODFmY2IyNjBhMjRiNzI4NTZjMTJh
ZGYwYTUyOWRkZWQyYTc2YTFhNy4uMGY5M2FmN2RiNDUxMGE3NTIxMmU1ZTZjM2I4MGZmNWE3MmZj
YmUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTg2
LDEyICs4Niw4IEBAIGJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OndpbGxSZXNwb25kVG9Nb3VzZUNs
aWNrRXZlbnRzKCkKIHsKICAgICBpZiAoaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOwotICAgIGlm
ICghcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghci0+aXNFbWJlZGRlZE9iamVj
dCgpICYmICFyLT5pc1dpZGdldCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgcmV0dXJu
IHJlbmRlcmVyICYmIChyZW5kZXJlci0+aXNFbWJlZGRlZE9iamVjdCgpIHx8IHJlbmRlcmVyLT5p
c1dpZGdldCgpKTsKIH0KIAogdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbERldGFjaFJlbmRl
cmVycygpCkBAIC0xOTcsMTUgKzE5MywxNSBAQCB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIAogICAgIC8vIEZJWE1FOiBNb3VzZSBkb3du
IGFuZCBzY3JvbGwgZXZlbnRzIGFyZSBwYXNzZWQgZG93biB0byBwbHVnLWluIHZpYSBjdXN0b20g
Y29kZSBpbiBFdmVudEhhbmRsZXI7IHRoZXNlIGNvZGUgcGF0aHMgc2hvdWxkIGJlIHVuaXRlZC4K
IAotICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKHIgJiYgci0+aXNF
bWJlZGRlZE9iamVjdCgpKSB7Ci0gICAgICAgIGlmICh0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIp
LT5pc1BsdWdpblVuYXZhaWxhYmxlKCkpIHsKLSAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRP
YmplY3QociktPmhhbmRsZVVuYXZhaWxhYmxlUGx1Z2luSW5kaWNhdG9yRXZlbnQoZXZlbnQpOwor
ICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmIChyZW5kZXJlciAm
JiByZW5kZXJlci0+aXNFbWJlZGRlZE9iamVjdCgpKSB7CisgICAgICAgIGlmICh0b1JlbmRlckVt
YmVkZGVkT2JqZWN0KHJlbmRlcmVyKS0+aXNQbHVnaW5VbmF2YWlsYWJsZSgpKSB7CisgICAgICAg
ICAgICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVyKS0+aGFuZGxlVW5hdmFpbGFibGVQ
bHVnaW5JbmRpY2F0b3JFdmVudChldmVudCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoci0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRpc3BsYXlTdGF0
ZSgpIDwgUmVzdGFydGluZykgewotICAgICAgICAgICAgdG9SZW5kZXJTbmFwc2hvdHRlZFBsdWdJ
bihyKS0+aGFuZGxlRXZlbnQoZXZlbnQpOworICAgICAgICBpZiAodG9SZW5kZXJFbWJlZGRlZE9i
amVjdChyZW5kZXJlciktPmlzU25hcHNob3R0ZWRQbHVnSW4oKSAmJiBkaXNwbGF5U3RhdGUoKSA8
IFJlc3RhcnRpbmcpIHsKKyAgICAgICAgICAgIHRvUmVuZGVyU25hcHNob3R0ZWRQbHVnSW4ocmVu
ZGVyZXIpLT5oYW5kbGVFdmVudChldmVudCk7CiAgICAgICAgICAgICBIVE1MRnJhbWVPd25lckVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0yMTQsOSArMjEwLDkgQEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKCFyIHx8ICFyLT5pc1dpZGdldCgpKQorICAgIGlmICghcmVuZGVyZXIgfHwg
IXJlbmRlcmVyLT5pc1dpZGdldCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPFdpZGdl
dD4gd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQociktPndpZGdldCgpOworICAgIFJlZlB0cjxXaWRn
ZXQ+IHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7CiAgICAgaWYg
KCF3aWRnZXQpCiAgICAgICAgIHJldHVybjsKICAgICB3aWRnZXQtPmhhbmRsZUV2ZW50KGV2ZW50
KTsKQEAgLTIyNSwxNyArMjIxLDE2IEBAIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6ZGVm
YXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKLWJvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6Omlz
S2V5Ym9hcmRGb2N1c2FibGUoS2V5Ym9hcmRFdmVudCogZXZlbnQpIGNvbnN0Citib29sIEhUTUxQ
bHVnSW5FbGVtZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZlbnQqKSBjb25zdAog
ewotICAgIFVOVVNFRF9QQVJBTShldmVudCk7CiAgICAgaWYgKCFkb2N1bWVudCgpLnBhZ2UoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgY29uc3QgUGx1Z2luVmlld0Jhc2UqIHBsdWdp
biA9IHBsdWdpbldpZGdldCgpICYmIHBsdWdpbldpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkg
PyBzdGF0aWNfY2FzdDxjb25zdCBQbHVnaW5WaWV3QmFzZSo+KHBsdWdpbldpZGdldCgpKSA6IDA7
Ci0gICAgaWYgKHBsdWdpbikKLSAgICAgICAgcmV0dXJuIHBsdWdpbi0+c3VwcG9ydHNLZXlib2Fy
ZEZvY3VzKCk7CisgICAgY29uc3QgUGx1Z2luVmlld0Jhc2UqIHBsdWdpbiA9IHBsdWdpbldpZGdl
dCgpICYmIHBsdWdpbldpZGdldCgpLT5pc1BsdWdpblZpZXdCYXNlKCkgPyBzdGF0aWNfY2FzdDxj
b25zdCBQbHVnaW5WaWV3QmFzZSo+KHBsdWdpbldpZGdldCgpKSA6IG51bGxwdHI7CisgICAgaWYg
KCFwbHVnaW4pCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmYWxzZTsKKyAg
ICByZXR1cm4gcGx1Z2luLT5zdXBwb3J0c0tleWJvYXJkRm9jdXMoKTsKIH0KIAogYm9vbCBIVE1M
UGx1Z0luRWxlbWVudDo6aXNQbHVnaW5FbGVtZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCmluZGV4IGM2MzZjZDQxMWM0OWNhYTkx
MzU0YzAwZGI2ZGUwZmQzZjA5OGVlM2IuLjljMjgxM2JhMDA1MDNmNjY5MjZlYmRmMDM5NDIwNjlm
YjM4Y2I4Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcApAQCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
c3ViZnJhbWVMb2FkZXJEaWRDcmVhdGVQbHVnSW4oY29uc3QgV2lkZ2V0KiB3aWRnZXQpCiAKIHZv
aWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZl
bnQpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByID0gcmVuZGVyZXIoKTsKKyAgICBSZW5kZXJFbGVt
ZW50KiByID0gcmVuZGVyZXIoKTsKICAgICBpZiAociAmJiByLT5pc0VtYmVkZGVkT2JqZWN0KCkp
IHsKICAgICAgICAgaWYgKGlzUGx1Z0luSW1hZ2VFbGVtZW50KCkgJiYgZGlzcGxheVN0YXRlKCkg
PT0gV2FpdGluZ0ZvclNuYXBzaG90ICYmIGV2ZW50LT5pc01vdXNlRXZlbnQoKSAmJiBldmVudC0+
dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7CiAgICAgICAgICAgICBNb3VzZUV2
ZW50KiBtb3VzZUV2ZW50ID0gdG9Nb3VzZUV2ZW50KGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwCmluZGV4IDYxZGQ5NDQ2NTIwM2QwZmM2MzU4ZTZl
YmQzYjQ4ZTgwYjUyNjgyYjguLmE2MTcxZjFhMzY3MmUzODk1MDMwNmFhMzliMDZkNjUwMThjMTRj
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcApAQCAt
MjMsNiArMjMsNyBAQAogI2luY2x1ZGUgIkhUTUxQcm9ncmVzc0VsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkhU
TUxEaXZFbGVtZW50LmgiCkBAIC03NCwxMSArNzUsOCBAQCBib29sIEhUTUxQcm9ncmVzc0VsZW1l
bnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSogY2hpbGQpIGNvbnN0CiBS
ZW5kZXJQcm9ncmVzcyogSFRNTFByb2dyZXNzRWxlbWVudDo6cmVuZGVyUHJvZ3Jlc3MoKSBjb25z
dAogewogICAgIGlmIChyZW5kZXJlcigpICYmIHJlbmRlcmVyKCktPmlzUHJvZ3Jlc3MoKSkKLSAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbmRlclByb2dyZXNzKj4ocmVuZGVyZXIoKSk7Ci0K
LSAgICBSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+
Zmlyc3RDaGlsZCgpLT5yZW5kZXJlcigpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFyZW5kZXJPYmplY3QgfHwgcmVuZGVyT2JqZWN0LT5pc1Byb2dyZXNzKCkpOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJQcm9ncmVzcyo+KHJlbmRlck9iamVjdCk7CisgICAg
ICAgIHJldHVybiB0b1JlbmRlclByb2dyZXNzKHJlbmRlcmVyKCkpOworICAgIHJldHVybiB0b1Jl
bmRlclByb2dyZXNzKEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHVzZXJBZ2VudFNoYWRv
d1Jvb3QoKSktPnJlbmRlcmVyKCkpOwogfQogCiB2b2lkIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCmluZGV4
IGJlZTczZmQyYzI2MTYxYTM1YWRiNjBlNTg3Zjg1OGVkYTc2ZTljMDUuLmM2MjAzYjlkMDkzNTU4
NmVlMGZjMDA3ZjZlNDU4MDU1NjIyMDRlYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNl
bGVjdEVsZW1lbnQuY3BwCkBAIC02NzksMTMgKzY3OSwxMyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVt
ZW50OjpzY3JvbGxUb1NlbGVjdGlvbigpCiAgICAgaWYgKHVzZXNNZW51TGlzdCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCisgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkKICAgICAgICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2VsZWN0aW9uQ2hhbmdlZCgp
OwogfQogCiB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVy
ZXIoKQogewotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkgeworICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAg
ICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRl
cmVyKS0+c2V0T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKQEAgLTg1MSw3ICs4
NTEsNyBAQCB2b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RPcHRpb24oaW50IG9wdGlvbklu
ZGV4LCBTZWxlY3RPcHRpb25GbGFncyBmbGFncykKICAgICAgICAgZGVzZWxlY3RJdGVtc1dpdGhv
dXRWYWxpZGF0aW9uKGVsZW1lbnQpOwogCiAgICAgLy8gRm9yIHRoZSBtZW51IGxpc3QgY2FzZSwg
dGhpcyBpcyB3aGF0IG1ha2VzIHRoZSBzZWxlY3RlZCBlbGVtZW50IGFwcGVhci4KLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJv
bUVsZW1lbnQoKTsKIAogICAgIHNjcm9sbFRvU2VsZWN0aW9uKCk7CkBAIC04NjAsNyArODYwLDcg
QEAgdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0T3B0aW9uKGludCBvcHRpb25JbmRleCwg
U2VsZWN0T3B0aW9uRmxhZ3MgZmxhZ3MpCiAgICAgICAgIG1faXNQcm9jZXNzaW5nVXNlckRyaXZl
bkNoYW5nZSA9IGZsYWdzICYgVXNlckRyaXZlbjsKICAgICAgICAgaWYgKGZsYWdzICYgRGlzcGF0
Y2hDaGFuZ2VFdmVudCkKICAgICAgICAgICAgIGRpc3BhdGNoQ2hhbmdlRXZlbnRGb3JNZW51TGlz
dCgpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAgICAgICAgdG9SZW5kZXJN
ZW51TGlzdChyZW5kZXJlciktPmRpZFNldFNlbGVjdGVkSW5kZXgobGlzdEluZGV4KTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKHJlbmRlcmVyLT5pc0xpc3RCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggZjM1NzI2MDYwODE4ZDVmMzNlMjli
MWU1OThkZDczYTkzMTU4MjRjZi4uNjkxNDRmYWI3Zjk3MThmNGZlZDMyMGYxOGZlN2Q4MmMwYTJl
YjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAK
QEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIEhUTUxUYWJsZUNlbGxFbGVtZW50OjphZGRTdWJyZXNv
dXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYgdXJscykgYwogCiBIVE1MVGFibGVD
ZWxsRWxlbWVudCogSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNlbGxBYm92ZSgpIGNvbnN0CiB7Ci0g
ICAgUmVuZGVyT2JqZWN0KiBjZWxsUmVuZGVyZXIgPSByZW5kZXJlcigpOworICAgIFJlbmRlckVs
ZW1lbnQqIGNlbGxSZW5kZXJlciA9IHJlbmRlcmVyKCk7CiAgICAgaWYgKCFjZWxsUmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiAwOwogICAgIGlmICghY2VsbFJlbmRlcmVyLT5pc1RhYmxlQ2VsbCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCAxMTMwMDNiYjBlNDkyZThmYTMyMjNhMDJlODNhNGNiMWNmZjYzNjI4Li45OTE4
NGZlOWZkMzI3Mzg4NzlkOGM0YjIzMzA0MDgxODUzMjFkMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMjAzLDEwICsy
MDMsOSBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXNwYXRjaEZvcm1Db250
cm9sQ2hhbmdlRXZlbnQoKQogICAgIHNldENoYW5nZWRTaW5jZUxhc3RGb3JtQ29udHJvbENoYW5n
ZUV2ZW50KGZhbHNlKTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGhhc1Zpc2libGVUZXh0QXJl
YShSZW5kZXJPYmplY3QqIHRleHRDb250cm9sLCBIVE1MRWxlbWVudCogaW5uZXJUZXh0KQorc3Rh
dGljIGlubGluZSBib29sIGhhc1Zpc2libGVUZXh0QXJlYShSZW5kZXJFbGVtZW50JiB0ZXh0Q29u
dHJvbCwgSFRNTEVsZW1lbnQqIGlubmVyVGV4dCkKIHsKLSAgICBBU1NFUlQodGV4dENvbnRyb2wp
OwotICAgIHJldHVybiB0ZXh0Q29udHJvbC0+c3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IEhJRERF
TiAmJiBpbm5lclRleHQgJiYgaW5uZXJUZXh0LT5yZW5kZXJlcigpICYmIGlubmVyVGV4dC0+cmVu
ZGVyQm94KCktPmhlaWdodCgpOworICAgIHJldHVybiB0ZXh0Q29udHJvbC5zdHlsZSgpLT52aXNp
YmlsaXR5KCkgIT0gSElEREVOICYmIGlubmVyVGV4dCAmJiBpbm5lclRleHQtPnJlbmRlcmVyKCkg
JiYgaW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+aGVpZ2h0KCk7CiB9CiAKIHZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldFJhbmdlVGV4dChjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
LCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTI4OSw3ICsyODgsNyBAQCB2b2lkIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50OjpzZXRTZWxlY3Rpb25SYW5nZShpbnQgc3RhcnQsIGludCBlbmQsIFRl
eHRGaWVsZAogICAgIGVuZCA9IG1heChlbmQsIDApOwogICAgIHN0YXJ0ID0gbWluKG1heChzdGFy
dCwgMCksIGVuZCk7CiAKLSAgICBpZiAoIWhhc1Zpc2libGVUZXh0QXJlYShyZW5kZXJlcigpLCBp
bm5lclRleHRFbGVtZW50KCkpKSB7CisgICAgaWYgKCFoYXNWaXNpYmxlVGV4dEFyZWEoKnJlbmRl
cmVyKCksIGlubmVyVGV4dEVsZW1lbnQoKSkpIHsKICAgICAgICAgY2FjaGVTZWxlY3Rpb24oc3Rh
cnQsIGVuZCwgZGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lu
cHV0VHlwZS5oCmluZGV4IDM3ZTZkYTJmYzFjZGZjZjQ1Zjc4OWJjZWQxMmZlOWQxMmRkNGMwYTAu
LjJiMjQ2MmFhYWNjMTdlMWQwYTRkZTk2NTFjNmNlYzAxOGUyOWMwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9J
bnB1dFR5cGUuaApAQCAtNTksNyArNTksNiBAQCBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3Mg
TW91c2VFdmVudDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBSZW5kZXJBcmVuYTsKLWNsYXNzIFJlbmRl
ck9iamVjdDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVG91Y2hFdmVudDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAK
aW5kZXggYjEwMDk5NzhhNjFhZTIzYWI2MDEwMGFjYmY2YjRhNWExMjg5NGQ2ZC4uYmY0MzQ2YTRh
NDNlOTM0M2IwNTlhYWFjZTFkY2RjMWYwMGE2MzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCkBAIC0zMSw3ICszMSw2
IEBACiAKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAppbmRleCA4MTZhZTMwMjI1NmJj
MjdiMDAzZWEyODg3OThjOTlkYzAxNjZiOTE0Li42NjkzOGY5Y2MwODM2Njg0OTdkZGUyNDIyMGMw
OGE5ZmRkZjkxN2FkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRp
YUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbEVsZW1lbnQ6OnNldERpc3BsYXlUeXBlKE1lZGlhQ29udHJvbEVsZW1lbnRUeXBl
IGRpc3BsYXlUeXBlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Rpc3BsYXlUeXBlID0gZGlz
cGxheVR5cGU7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gbV9lbGVtZW50LT5yZW5k
ZXJlcigpKQorICAgIGlmIChhdXRvIG9iamVjdCA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKSkKICAg
ICAgICAgb2JqZWN0LT5yZXBhaW50KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCA4ZWY2YTg1NjllYWRmZTRh
ZWU4NThlZDgzMThmODg5OWE1NDRjNDdlLi45NDE2MTQxOTY1OTk3MDUyYmFmOTU3ODQ5MTY3MDhj
ZWE0Njg3OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xQ
YW5lbEVsZW1lbnQ6OnN0YXJ0RHJhZyhjb25zdCBMYXlvdXRQb2ludCYgZXZlbnRMb2NhdGlvbikK
ICAgICBpZiAobV9pc0JlaW5nRHJhZ2dlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzQm94
KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTM5NiwyMCArMTM5NiwyMCBAQCB2b2lkIE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKGJvb2wgZm9yY2VV
cGRhdGUpCiBQYXNzUmVmUHRyPEltYWdlPiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJF
bGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkltYWdlKCkKIHsKICAgICBpZiAo
IWhhc0NoaWxkTm9kZXMoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IGRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KTsKICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBpZiAoIXJlbmRlcmVyLT5oYXNMYXllcigpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZW5kZXJMYXllciogbGF5ZXIg
PSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOwogCkBAIC0xNDE4
LDkgKzE0MTgsMTAgQEAgUGFzc1JlZlB0cjxJbWFnZT4gTWVkaWFDb250cm9sVGV4dFRyYWNrQ29u
dGFpbmVyRWxlbWVudDo6Y3JlYXRlVGV4dFRyYWNrUmVwcmVzZW4KICAgICAgICAgZGV2aWNlU2Nh
bGVGYWN0b3IgPSBwYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogCiAgICAgSW50UmVjdCBwYWlu
dGluZ1JlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5zaXplKCkpOworCiAgICAgT3du
UHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZmZXI6OmNyZWF0ZShwYWludGluZ1JlY3Qu
c2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JTcGFjZURldmljZVJHQikpOwogICAgIGlm
ICghYnVmZmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBsYXllci0+cGFpbnQoYnVmZmVyLT5jb250ZXh0KCksIHBhaW50aW5nUmVjdCwgUGFpbnRC
ZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycywgMCwgMCwgUmVuZGVyTGF5ZXI6OlBhaW50
TGF5ZXJQYWludGluZ0NvbXBvc2l0aW5nQWxsUGhhc2VzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKaW5kZXggZTA0MmM2ZWZhNTcx
MWM5MmUxZWJhNGNiOGM1NzBhMzBlN2JhYTg4OS4uNjNlMzdmYTgyNjNiMzA5MWE2MmVlYzBkM2Q1
NzI1MGU3MzViZTc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0
ZXJTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRl
clNoYWRvd0VsZW1lbnQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIEhUTUxNZXRlckVsZW1lbnQqIE1l
dGVyU2hhZG93RWxlbWVudDo6bWV0ZXJFbGVtZW50KCkgY29uc3QKIAogYm9vbCBNZXRlclNoYWRv
d0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyID0gbWV0ZXJFbGVtZW50KCktPnJlbmRlcmVyKCk7Cisg
ICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKICAgICByZXR1cm4g
cmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCktPnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgp
LT5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxl
KTsKIH0KIApAQCAtNzIsNyArNzIsNyBAQCBib29sIE1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICBpZiAobWV0ZXJFbGVtZW50
KCktPmhhc0F1dGhvclNoYWRvd1Jvb3QoKSkKICAgICAgICAgcmV0dXJuIEhUTUxEaXZFbGVtZW50
OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyID0g
bWV0ZXJFbGVtZW50KCktPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXIgPSBtZXRlckVsZW1l
bnQoKS0+cmVuZGVyZXIoKTsKICAgICByZXR1cm4gcmVuZGVyICYmICFyZW5kZXItPnRoZW1lKCkt
PnN1cHBvcnRzTWV0ZXIocmVuZGVyLT5zdHlsZSgpLT5hcHBlYXJhbmNlKCkpICYmIEhUTUxEaXZF
bGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDdhOWVjYWNlNTAyNGM5NTRkNjg5
MGM4NmMyMTkxNTA5MWI1MWQ3ZmEuLjk3NWQ1YTY3NTUzOGFlOGE3NmU3YzQyZjQ4MDAyOTk4ZmU2
NjY3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTQ0LDEwICs0NCwxMCBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyRmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRl
cklubGluZS5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgotI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggN2Fm
YWZjMDk0NDJmYjJkMGQwZjJkNmQ1NDRkMDdmMmNiMGM0NjA1ZC4uMGFhZDYzOTc4ZTcwNGRkNThh
NDI1ZGM5Yzg4MzUzYzA5OWM5YjhjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQAogI2luY2x1
ZGUgIkluc3BlY3RvclN0YXRlLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgog
I2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDQ1
OTJjYjE2NzU4MThkYjQxYWNmNjNmYTJiZTcwZDQwYjQxY2RiYTguLjhmM2YzYzJhZTU2ZjVkMGY2
OWM1MzAyZTM1ODA5ZDNkOGM2YTc2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKwogY2xhc3MgRXZlbnQ7CiBj
bGFzcyBGbG9hdFF1YWQ7CiBjbGFzcyBGcmFtZTsKQEAgLTI1OSw3ICsyNjAsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgaW5uZXJBZGRSZWNvcmRUb1RpbWVsaW5lKFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiwgVGltZWxpbmVSZWNvcmRUeXBlKTsKICAgICB2b2lkIGNsZWFyUmVjb3JkU3RhY2so
KTsKIAotICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVy
ZXIsIGNvbnN0IExheW91dFJlY3QmLCBGbG9hdFF1YWQqKTsKKyAgICB2b2lkIGxvY2FsVG9QYWdl
UXVhZChjb25zdCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7
CiAgICAgY29uc3QgVGltZWxpbmVUaW1lQ29udmVydGVyJiB0aW1lQ29udmVydGVyKCkgY29uc3Qg
eyByZXR1cm4gbV90aW1lQ29udmVydGVyOyB9CiAgICAgZG91YmxlIHRpbWVzdGFtcCgpOwogICAg
IFBhZ2UqIHBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDEx
ZWM5ODlhYmQ3ODgzY2ZjNzJlOTNhMmY4MjI5ZDg5M2FjMDBmNDUuLjdjNzk4ZjRkMjRhNzFmOGQ3
NDhjMWM3ZTRhM2JlMGY5MzMxZTdkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcApAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgSW1hZ2VMb2FkZXI6Om5vdGlmeUZpbmlzaGVk
KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIAogUmVuZGVySW1hZ2VSZXNvdXJjZSogSW1hZ2VM
b2FkZXI6OnJlbmRlckltYWdlUmVzb3VyY2UoKQogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIg
PSBtX2VsZW1lbnQtPnJlbmRlcmVyKCk7CiAKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICBy
ZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmlu
ZGV4IDI5YjMxMWRmYmYzOTczZWIyNjE5ZGJiNjZiMjFkMDc2ZjNiYTE3NjUuLmVlZjVhZGRkZjE3
MjI5ZGZjNWY0YzEyMzQwNzBjZTgxNmRjMmQ2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgotI2lu
Y2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUJ1ZmZlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U3VicmVzb3VyY2VMb2FkZXIuaCIKQEAgLTUyNCw3ICs1MjQsNyBAQCB2b2lkIENhY2hlZEltYWdl
OjpyZXN1bWVBbmltYXRpbmdJbWFnZXNGb3JMb2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxv
YWRlcikKICAgICB9CiB9CiAKLWJvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9C
ZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorYm9vbCBDYWNoZWRJbWFnZTo6
Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KQogewogICAgIEltYWdlKiBpbWFnZSA9IGltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIpOwogICAg
IGlmIChpbWFnZS0+aXNCaXRtYXBJbWFnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuaAppbmRleCA0MzFiNzQwNjI2YTg2ZGI3OTllZGM5YTY3MjMzNzdkNzM3ODky
ODNmLi42YmUxMjNkMzUyZTk0MzhjNjI3MDRjZDIwMjQwMjQwN2IxMTI2OTllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtMzgsNyArMzgsOSBAQCBjbGFz
cyBDYWNoZWRJbWFnZUNsaWVudDsKIGNsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyOwogY2xhc3Mg
RmxvYXRTaXplOwogY2xhc3MgTWVtb3J5Q2FjaGU7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xh
c3MgUmVuZGVyT2JqZWN0OworCiBzdHJ1Y3QgTGVuZ3RoOwogCiBjbGFzcyBDYWNoZWRJbWFnZSBG
SU5BTCA6IHB1YmxpYyBDYWNoZWRSZXNvdXJjZSwgcHVibGljIEltYWdlT2JzZXJ2ZXIgewpAQCAt
NTIsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2UqIGltYWdlKCk7IC8vIFJldHVybnMgdGhl
IG51bGxJbWFnZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBJbWFn
ZSogaW1hZ2VGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqKTsgLy8gUmV0dXJucyB0aGUg
bnVsbEltYWdlKCkgaWYgdGhlIGltYWdlIGlzIG5vdCBhdmFpbGFibGUgeWV0LgogICAgIGJvb2wg
aGFzSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9Ci0gICAgYm9vbCBjdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFNpZGUgZWZm
ZWN0OiBlbnN1cmVzIGRlY29kZWQgaW1hZ2UgaXMgaW4gY2FjaGUsIHRoZXJlZm9yZSBzaG91bGQg
b25seSBiZSBjYWxsZWQgd2hlbiBhYm91dCB0byBkcmF3IHRoZSBpbWFnZS4KKyAgICBib29sIGN1
cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kik7IC8vIFNpZGUg
ZWZmZWN0OiBlbnN1cmVzIGRlY29kZWQgaW1hZ2UgaXMgaW4gY2FjaGUsIHRoZXJlZm9yZSBzaG91
bGQgb25seSBiZSBjYWxsZWQgd2hlbiBhYm91dCB0byBkcmF3IHRoZSBpbWFnZS4KIAogICAgIHN0
ZDo6cGFpcjxJbWFnZSosIGZsb2F0PiBicm9rZW5JbWFnZShmbG9hdCBkZXZpY2VTY2FsZUZhY3Rv
cikgY29uc3Q7IC8vIFJldHVybnMgYW4gaW1hZ2UgYW5kIHRoZSBpbWFnZSdzIHJlc29sdXRpb24g
c2NhbGUgZmFjdG9yLgogICAgIGJvb2wgd2lsbFBhaW50QnJva2VuSW1hZ2UoKSBjb25zdDsgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKaW5kZXggNTViNDc2YjdkZjhhYzFh
YmVhNDRhYzdiZDYwNDE2YjUxMWE0OGY0Yy4uMDZlZWE0OGU0YmY3Y2VkNGUzNzU5YmYzZDU3OGU3
MzVmY2ExMDQ0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcApAQCAt
MzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIk1hdGhNTEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIk1h
dGhNTE5hbWVzLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
VGFibGVDZWxsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCBhNjNjMDczMzgxYmVmYWUzZTYxMTZi
ZWU2YmFhOTU3OTkwOTNiZDFmLi4xNzFjYmQ5MTJkMTIwMjQ5ODM2NTVhZGVhZGRjZDdhMmVmNWYx
NjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3Bw
CkBAIC02MCw3ICs2MCw2IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybUV2ZW50LmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAj
aW5jbHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJl
cXVlc3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAppbmRleCA3OTQyMjdhN2I2MTFkMzJkZmJjYmNmMGZjMWVlZGU2YTFjZjVhMDU0
Li5jZjQxNzg0ZDYyMWI3YTcwYjMyNTQ5YjM3NjU0MzBmMGQyOGQ3NDMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNjMyLDM2ICs2MzIsMzAgQEAgRWxlbWVudCog
RHJhZ0NvbnRyb2xsZXI6OmRyYWdnYWJsZUVsZW1lbnQoY29uc3QgRnJhbWUqIHNvdXJjZUZyYW1l
LCBFbGVtZW50KiBzdGEKICAgICBpZiAoIXN0YXJ0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBmb3IgKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydEVsZW1lbnQt
PnJlbmRlcmVyKCk7IHJlbmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewot
ICAgICAgICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vblBzZXVkb05vZGUoKTsKLSAgICAgICAg
aWYgKCFub2RlKQotICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9uJ3Qg
Y29ycmVzcG9uZCB0byBhY3R1YWwgRE9NIG5vZGVzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQotICAg
ICAgICAgICAgLy8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIG5vZGUu
CisgICAgZm9yIChhdXRvIHJlbmRlcmVyID0gc3RhcnRFbGVtZW50LT5yZW5kZXJlcigpOyByZW5k
ZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkpIHsKKyAgICAgICAgRWxlbWVudCog
ZWxlbWVudCA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9FbGVtZW50KCk7CisgICAgICAgIGlmICghZWxl
bWVudCkgeworICAgICAgICAgICAgLy8gQW5vbnltb3VzIHJlbmRlciBibG9ja3MgZG9uJ3QgY29y
cmVzcG9uZCB0byBhY3R1YWwgRE9NIGVsZW1lbnRzLCBzbyB3ZSBza2lwIG92ZXIgdGhlbQorICAg
ICAgICAgICAgLy8gZm9yIHRoZSBwdXJwb3NlcyBvZiBmaW5kaW5nIGEgZHJhZ2dhYmxlIGVsZW1l
bnQuCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKCEoc3RhdGUudHlwZSAmIERy
YWdTb3VyY2VBY3Rpb25TZWxlY3Rpb24pICYmIG5vZGUtPmlzVGV4dE5vZGUoKSAmJiBub2RlLT5j
YW5TdGFydFNlbGVjdGlvbigpKQotICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGhhdmUg
YSBjbGljayBpbiB0aGUgdW5zZWxlY3RlZCBwb3J0aW9uIG9mIHRleHQuIElmIHRoaXMgdGV4dCBp
cwotICAgICAgICAgICAgLy8gc2VsZWN0YWJsZSwgd2Ugd2FudCB0byBzdGFydCB0aGUgc2VsZWN0
aW9uIHByb2Nlc3MgaW5zdGVhZCBvZiBsb29raW5nIGZvciBhIHBhcmVudAotICAgICAgICAgICAg
Ly8gdG8gdHJ5IHRvIGRyYWcuCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgaWYgKG5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkgewotICAgICAgICAgICAgRVVzZXJEcmFnIGRyYWdNb2RlID0g
cmVuZGVyZXItPnN0eWxlKCktPnVzZXJEcmFnKCk7Ci0gICAgICAgICAgICBpZiAoKG1fZHJhZ1Nv
dXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0gRFJBR19F
TEVNRU5UKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdT
b3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uREhUTUwpOwotICAgICAg
ICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CisgICAgICAgIH0KKyAgICAgICAgRVVz
ZXJEcmFnIGRyYWdNb2RlID0gcmVuZGVyZXItPnN0eWxlKCktPnVzZXJEcmFnKCk7CisgICAgICAg
IGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKSAmJiBkcmFn
TW9kZSA9PSBEUkFHX0VMRU1FTlQpIHsKKyAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNf
Y2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkRIVE1M
KTsKKyAgICAgICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICB9CisgICAgICAgIGlmIChk
cmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKKyAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0
aW9uICYgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKQorICAgICAgICAgICAgICAgICYmIGlzSFRNTElt
YWdlRWxlbWVudChlbGVtZW50KQorICAgICAgICAgICAgICAgICYmIHNvdXJjZUZyYW1lLT5zZXR0
aW5ncygpLmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKSB7CisgICAgICAgICAgICAgICAgc3Rh
dGUudHlwZSA9IHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFn
U291cmNlQWN0aW9uSW1hZ2UpOworICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50OwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRyYWdNb2RlID09IERSQUdfQVVUTykgewotICAg
ICAgICAgICAgICAgIGlmICgobV9kcmFnU291cmNlQWN0aW9uICYgRHJhZ1NvdXJjZUFjdGlvbklt
YWdlKQotICAgICAgICAgICAgICAgICAgICAmJiBpc0hUTUxJbWFnZUVsZW1lbnQobm9kZSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgc291cmNlRnJhbWUtPnNldHRpbmdzKCkubG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRp
Y19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uSW1h
Z2UpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKQotICAgICAgICAgICAgICAgICAgICAmJiBpc0hUTUxBbmNob3JF
bGVtZW50KG5vZGUpCi0gICAgICAgICAgICAgICAgICAgICYmIHRvSFRNTEFuY2hvckVsZW1lbnQo
bm9kZSktPmlzTGl2ZUxpbmsoKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0g
c3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rp
b25MaW5rKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLSAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25MaW5rKQorICAgICAgICAgICAgICAgICYmIGlzSFRNTEFuY2hvckVsZW1l
bnQoZWxlbWVudCkKKyAgICAgICAgICAgICAgICAmJiB0b0hUTUxBbmNob3JFbGVtZW50KGVsZW1l
bnQpLT5pc0xpdmVMaW5rKCkpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGlj
X2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25MaW5r
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhNWY4ZWMz
MmFhNDkzMjM5OWY3ZGQ1OWUzMzU2ZGFlZmZhOWZhZGI5Li41ZmRlMmM0NjdhYWFmYmRhZGFjZTFm
NjkzN2RjMWUwN2NkY2I5YmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBA
IC0zNDQsNyArMzQ0LDcgQEAgRXZlbnRIYW5kbGVyOjpFdmVudEhhbmRsZXIoRnJhbWUmIGZyYW1l
KQogICAgICwgbV90b3VjaFByZXNzZWQoZmFsc2UpCiAjZW5kaWYKICNpZiBFTkFCTEUoR0VTVFVS
RV9FVkVOVFMpCi0gICAgLCBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUoMCkKKyAgICAsIG1f
c2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZShudWxscHRyKQogICAgICwgbV9sYXN0SGl0VGVzdFJl
c3VsdE92ZXJXaWRnZXQoZmFsc2UpCiAjZW5kaWYKICAgICAsIG1fbWF4TW91c2VNb3ZlZER1cmF0
aW9uKDApCkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmNsZWFyKCkKICAg
ICBtX29yaWdpbmF0aW5nVG91Y2hQb2ludFRhcmdldEtleSA9IDA7CiAjZW5kaWYKICNpZiBFTkFC
TEUoR0VTVFVSRV9FVkVOVFMpCi0gICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gMDsK
KyAgICBtX3Njcm9sbEdlc3R1cmVIYW5kbGluZ05vZGUgPSBudWxscHRyOwogICAgIG1fbGFzdEhp
dFRlc3RSZXN1bHRPdmVyV2lkZ2V0ID0gZmFsc2U7CiAgICAgbV9wcmV2aW91c0dlc3R1cmVTY3Jv
bGxlZEVsZW1lbnQgPSBudWxscHRyOwogICAgIG1fc2Nyb2xsYmFySGFuZGxpbmdTY3JvbGxHZXN0
dXJlID0gMDsKQEAgLTk4MCw3ICs5ODAsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6ZGlkUGFuU2Ny
b2xsU3RvcCgpCiAgICAgbV9hdXRvc2Nyb2xsQ29udHJvbGxlci0+ZGlkUGFuU2Nyb2xsU3RvcCgp
OwogfQogCi12b2lkIEV2ZW50SGFuZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKK3ZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGluZyhSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyLT5pc0JveCgpKQogICAgICAg
ICByZXR1cm47CkBAIC05OTAsNyArOTkwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0UGFu
U2Nyb2xsaW5nKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAKICNlbmRpZiAvLyBFTkFCTEUoUEFO
X1NDUk9MTElORykKIAotUmVuZGVyT2JqZWN0KiBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxSZW5k
ZXJlcigpIGNvbnN0CitSZW5kZXJFbGVtZW50KiBFdmVudEhhbmRsZXI6OmF1dG9zY3JvbGxSZW5k
ZXJlcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPmF1dG9z
Y3JvbGxSZW5kZXJlcigpOwogfQpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnNjcm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGcKICAgICAgICAgbm9kZSA9IG1fbW91c2VQcmVzc05vZGUuZ2V0KCk7CiAgICAgCiAg
ICAgaWYgKG5vZGUpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByID0gbm9kZS0+cmVuZGVyZXIo
KTsKKyAgICAgICAgYXV0byByID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKHIgJiYg
IXItPmlzTGlzdEJveCgpICYmIHItPmVuY2xvc2luZ0JveCgpLT5zY3JvbGwoZGlyZWN0aW9uLCBn
cmFudWxhcml0eSkpIHsKICAgICAgICAgICAgIHNldEZyYW1lV2FzU2Nyb2xsZWRCeVVzZXIoKTsK
ICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTEwMyw3ICsxMTAzLDcgQEAgYm9vbCBFdmVu
dEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRp
cmVjdGlvbiwgU2Nyb2wKICAgICAgICAgbm9kZSA9IG1fbW91c2VQcmVzc05vZGUuZ2V0KCk7CiAg
ICAgCiAgICAgaWYgKG5vZGUpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByID0gbm9kZS0+cmVu
ZGVyZXIoKTsKKyAgICAgICAgYXV0byByID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYg
KHIgJiYgIXItPmlzTGlzdEJveCgpICYmIHItPmVuY2xvc2luZ0JveCgpLT5sb2dpY2FsU2Nyb2xs
KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKSB7CiAgICAgICAgICAgICBzZXRGcmFtZVdhc1Njcm9s
bGVkQnlVc2VyKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExNzYsNyArMTE3Niw3
IEBAIEZyYW1lKiBFdmVudEhhbmRsZXI6OnN1YmZyYW1lRm9yVGFyZ2V0Tm9kZShOb2RlKiBub2Rl
KQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNXaWRnZXQoKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEyOTAsNyArMTI5MCw3IEBAIE9wdGlvbmFsQ3Vyc29y
IEV2ZW50SGFuZGxlcjo6c2VsZWN0Q3Vyc29yKGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwg
Ym9vbCBzaGlmCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gTm9DdXJzb3JDaGFuZ2U7
CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBh
dXRvIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUg
PSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogMDsKICAgICBib29sIGhvcml6b250YWxU
ZXh0ID0gIXN0eWxlIHx8IHN0eWxlLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwogICAgIGNv
bnN0IEN1cnNvciYgaUJlYW0gPSBob3Jpem9udGFsVGV4dCA/IGlCZWFtQ3Vyc29yKCkgOiB2ZXJ0
aWNhbFRleHRDdXJzb3IoKTsKQEAgLTE2NzIsNyArMTY3Miw3IEBAIHN0YXRpYyBSZW5kZXJMYXll
ciogbGF5ZXJGb3JOb2RlKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwor
ICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIp
CiAgICAgICAgIHJldHVybiAwOwogCkBAIC0yNDU0LDEwICsyNDU0LDkgQEAgRXZlbnRIYW5kbGVy
OjpEb21pbmFudFNjcm9sbEdlc3R1cmVEaXJlY3Rpb24gRXZlbnRIYW5kbGVyOjpkb21pbmFudFNj
cm9sbEdlc3R1cmUKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3Qg
UGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogewotICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLmRv
Y3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwog
Ci0gICAgUmVuZGVyT2JqZWN0KiBkb2NSZW5kZXJlciA9IGRvYy0+cmVuZGVyVmlldygpOwotICAg
IGlmICghZG9jUmVuZGVyZXIpCisgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9y
KG1fZnJhbWUudmlldygpKTsKQEAgLTI0NzIsNyArMjQ3MSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKIAogICAgIEhp
dFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJl
cXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQo
dlBvaW50KTsKLSAgICBkb2MtPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQp
OworICAgIGRvY3VtZW50LT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsK
IAogICAgIGJvb2wgdXNlTGF0Y2hlZFdoZWVsRXZlbnRFbGVtZW50ID0gZS51c2VMYXRjaGVkRXZl
bnRFbGVtZW50KCk7CiAKQEAgLTI4ODcsNyArMjg4Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpz
ZW5kU2Nyb2xsRXZlbnRUb1ZpZXcoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVF
dmVuCiAKIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhckdlc3R1cmVTY3JvbGxOb2RlcygpCiB7Ci0g
ICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gMDsKKyAgICBtX3Njcm9sbEdlc3R1cmVI
YW5kbGluZ05vZGUgPSBudWxscHRyOwogICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWRFbGVt
ZW50ID0gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5kZXggZDU4
MDY1NmNmYThiODc1ODA0ODU2NTQzNjFhYmFhMmQ2M2VkNzJkMi4uNmU5ODA1MGVkNzUzOTI3YTAx
MDFiMDU3NDIyMTJkNmJkNzQ0OWI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCkBA
IC03MSw2ICs3MSw3IEBAIGNsYXNzIE9wdGlvbmFsQ3Vyc29yOwogY2xhc3MgUGxhdGZvcm1LZXli
b2FyZEV2ZW50OwogY2xhc3MgUGxhdGZvcm1Ub3VjaEV2ZW50OwogY2xhc3MgUGxhdGZvcm1XaGVl
bEV2ZW50OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckxheWVyOwogY2xhc3Mg
UmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyV2lkZ2V0OwpAQCAtMTE3LDExICsxMTgsMTEgQEAg
cHVibGljOgogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQogICAgIHZvaWQgZGlkUGFuU2Nyb2xs
U3RhcnQoKTsKICAgICB2b2lkIGRpZFBhblNjcm9sbFN0b3AoKTsKLSAgICB2b2lkIHN0YXJ0UGFu
U2Nyb2xsaW5nKFJlbmRlck9iamVjdCopOworICAgIHZvaWQgc3RhcnRQYW5TY3JvbGxpbmcoUmVu
ZGVyRWxlbWVudCopOwogI2VuZGlmCiAKICAgICB2b2lkIHN0b3BBdXRvc2Nyb2xsVGltZXIoYm9v
bCByZW5kZXJlcklzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZSk7Ci0gICAgUmVuZGVyT2JqZWN0KiBh
dXRvc2Nyb2xsUmVuZGVyZXIoKSBjb25zdDsKKyAgICBSZW5kZXJFbGVtZW50KiBhdXRvc2Nyb2xs
UmVuZGVyZXIoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUF1dG9zY3JvbGxSZW5kZXJlcigpOwog
ICAgIGJvb2wgYXV0b3Njcm9sbEluUHJvZ3Jlc3MoKSBjb25zdDsKICAgICBib29sIG1vdXNlRG93
bldhc0luU3ViZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX21vdXNlRG93bldhc0luU3ViZnJhbWU7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCA3MTM2YTY1YWQ0
MGEyYTc4NzRmZWIyZTQzY2I2YWJjNjRmYjVjNWY4Li4wMTIzZjc1YmE2ZDk5M2I4ZjVmODhiOTc3
MTkxZGIxYjY4ODRjZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiTm9kZVJlbmRlcmluZ1RyYXZlcnNhbC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSYW5nZS5oIgotI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgogI2luY2x1ZGUgIlJlbmRlcldpZGdldC5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1h
dG9yLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZjRh
YjYwYzk0ZjM4MGY1OThjNjI2YzdjM2YwY2E0Mzc3NWY3ZmUwNC4uMjEwMTFiYWVjYWU2OWViNTU3
NzVmNTFhODFkZDMyMzI1OTQ1MTQ2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTU3MSw3ICs1
NzEsNyBAQCBSZW5kZXJXaWRnZXQqIEZyYW1lOjpvd25lclJlbmRlcmVyKCkgY29uc3QKICAgICBI
VE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IG1fb3duZXJFbGVtZW50OwogICAg
IGlmICghb3duZXJFbGVtZW50KQogICAgICAgICByZXR1cm4gMDsKLSAgICBSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IG93bmVyRWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIG9iamVjdCA9IG93
bmVyRWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJu
IDA7CiAgICAgLy8gRklYTUU6IElmIDxvYmplY3Q+IGlzIGV2ZXIgZml4ZWQgdG8gZGlzYXNzb2Np
YXRlIGl0c2VsZiBmcm9tIGZyYW1lcwpAQCAtNjY0LDcgKzY2NCw3IEBAIFZpc2libGVQb3NpdGlv
biBGcmFtZTo6dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9p
bnQpCiAgICAgTm9kZSogbm9kZSA9IHJlc3VsdC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0g
bm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gVmlz
aWJsZVBvc2l0aW9uKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3MgPSByZW5kZXJl
ci0+cG9zaXRpb25Gb3JQb2ludChyZXN1bHQubG9jYWxQb2ludCgpKTsKQEAgLTEwMDEsNyArMTAw
MSw3IEBAIHN0cnVjdCBTY29wZWRGcmFtZVBhaW50aW5nU3RhdGUgewogRHJhZ0ltYWdlUmVmIEZy
YW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUtPnJlbmRlcmVyKCkp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0
IFNjb3BlZEZyYW1lUGFpbnRpbmdTdGF0ZSBzdGF0ZSh0aGlzLCBub2RlKTsKIApAQCAtMTAxMiwx
MCArMTAxMiwxMCBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFnZShOb2RlKiBub2RlKQog
ICAgIG1fZG9jLT51cGRhdGVMYXlvdXQoKTsKICAgICBtX3ZpZXctPnNldE5vZGVUb0RyYXcobm9k
ZSk7IC8vIEVuYWJsZSBzcGVjaWFsIHN1Yi10cmVlIGRyYXdpbmcgbW9kZS4KIAotICAgIC8vIERv
Y3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUgb3JpZ2luYWwgUmVu
ZGVyT2JqZWN0LgotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OworICAgIC8vIERvY3VtZW50Ojp1cGRhdGVMYXlvdXQgbWF5IGhhdmUgYmxvd24gYXdheSB0aGUg
b3JpZ2luYWwgcmVuZGVyZXIuCisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAogICAgIExheW91dFJlY3QgdG9wTGV2ZWxSZWN0OwogICAgIEludFJlY3QgcGFpbnRp
bmdSZWN0ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChyZW5kZXJlci0+cGFpbnRpbmdSb290UmVjdCh0
b3BMZXZlbFJlY3QpKTsKQEAgLTEwMjgsNyArMTAyOCw3IEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6
bm9kZUltYWdlKE5vZGUqIG5vZGUpCiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9y
LCBDb2xvclNwYWNlRGV2aWNlUkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBidWZmZXItPmNvbnRleHQoKS0+dHJh
bnNsYXRlKC1wYWludGluZ1JlY3QueCgpLCAtcGFpbnRpbmdSZWN0LnkoKSk7CiAgICAgYnVmZmVy
LT5jb250ZXh0KCktPmNsaXAoRmxvYXRSZWN0KDAsIDAsIHBhaW50aW5nUmVjdC5tYXhYKCksIHBh
aW50aW5nUmVjdC5tYXhZKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IGM3
NDdiMGUzZWQxZDA3ODJkZTJhYTBjZGYxZDA2YjM0OWE5YTUyMjIuLjE4YjAxYWVlMDVlNGI0OTQ1
NzQ2MDFmZmM3OTY1MGU4M2U0MjExNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAg
LTU5OCw3ICs1OTgsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUoKQogICAgIHNl
dENvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dU
b1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJh
ck1vZGUmIHZNb2RlKQordm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJl
bmRlckVsZW1lbnQqIG8sIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9k
ZSkKIHsKICAgICAvLyBIYW5kbGUgdGhlIG92ZXJmbG93OmhpZGRlbi9zY3JvbGwgY2FzZSBmb3Ig
dGhlIGJvZHkvaHRtbCBlbGVtZW50cy4gIFdpbklFIHRyZWF0cwogICAgIC8vIG92ZXJmbG93Omhp
ZGRlbiBhbmQgb3ZlcmZsb3c6c2Nyb2xsIG9uIDxib2R5PiBhcyBhcHBseWluZyB0byB0aGUgZG9j
dW1lbnQncwpAQCAtNjY2LDEwICs2NjYsMTAgQEAgdm9pZCBGcmFtZVZpZXc6OmFwcGx5T3ZlcmZs
b3dUb1ZpZXdwb3J0KFJlbmRlck9iamVjdCogbywgU2Nyb2xsYmFyTW9kZSYgaE1vZGUsIFMKIHZv
aWQgRnJhbWVWaWV3OjphcHBseVBhZ2luYXRpb25Ub1ZpZXdwb3J0KCkKIHsKICAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgTm9kZSogZG9jdW1lbnRFbGVt
ZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwotICAgIFJlbmRlck9iamVjdCogZG9j
dW1lbnRSZW5kZXJlciA9IGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+cmVuZGVy
ZXIoKSA6IDA7Ci0gICAgUmVuZGVyT2JqZWN0KiBkb2N1bWVudE9yQm9keVJlbmRlcmVyID0gZG9j
dW1lbnRSZW5kZXJlcjsKLSAgICBOb2RlKiBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKKyAgICBh
dXRvIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBS
ZW5kZXJFbGVtZW50KiBkb2N1bWVudFJlbmRlcmVyID0gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1l
bnRFbGVtZW50LT5yZW5kZXJlcigpIDogbnVsbHB0cjsKKyAgICBSZW5kZXJFbGVtZW50KiBkb2N1
bWVudE9yQm9keVJlbmRlcmVyID0gZG9jdW1lbnRSZW5kZXJlcjsKKyAgICBhdXRvIGJvZHkgPSBk
b2N1bWVudC0+Ym9keSgpOwogICAgIGlmIChib2R5ICYmIGJvZHktPnJlbmRlcmVyKCkpIHsKICAg
ICAgICAgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpCiAgICAgICAgICAgICBkb2N1bWVu
dE9yQm9keVJlbmRlcmVyID0gZG9jdW1lbnRSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkg
PT0gT1ZJU0lCTEUgJiYgZG9jdW1lbnRFbGVtZW50LT5oYXNUYWdOYW1lKGh0bWxUYWcpID8gYm9k
eS0+cmVuZGVyZXIoKSA6IGRvY3VtZW50UmVuZGVyZXI7CkBAIC03MTYsOSArNzE2LDkgQEAgdm9p
ZCBGcmFtZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1v
ZGUmIGhNb2RlLCBTY3JvbGxiYXIKICAgICAKICAgICBpZiAoIW1fbGF5b3V0Um9vdCkgewogICAg
ICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIE5v
ZGUqIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICAg
ICAgUmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVu
dEVsZW1lbnQtPnJlbmRlcmVyKCkgOiAwOwotICAgICAgICBOb2RlKiBib2R5ID0gZG9jdW1lbnQt
PmJvZHkoKTsKKyAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCk7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIHJvb3RSZW5kZXJlciA9IGRvY3Vt
ZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVudC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAg
ICAgIGF1dG8gYm9keSA9IGRvY3VtZW50LT5ib2R5KCk7CiAgICAgICAgIGlmIChib2R5ICYmIGJv
ZHktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGlmIChib2R5LT5oYXNUYWdOYW1lKGZyYW1l
c2V0VGFnKSAmJiAhZnJhbWVGbGF0dGVuaW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICAgICAg
dk1vZGUgPSBTY3JvbGxiYXJBbHdheXNPZmY7CkBAIC03MjYsNyArNzI2LDcgQEAgdm9pZCBGcmFt
ZVZpZXc6OmNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXIKICAgICAgICAgICAgIH0gZWxzZSBpZiAoYm9keS0+aGFzVGFnTmFtZShi
b2R5VGFnKSkgewogICAgICAgICAgICAgICAgIC8vIEl0J3Mgc3VmZmljaWVudCB0byBqdXN0IGNo
ZWNrIHRoZSBYIG92ZXJmbG93LAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIGl0J3MgaWxsZWdh
bCB0byBoYXZlIHZpc2libGUgaW4gb25seSBvbmUgZGlyZWN0aW9uLgotICAgICAgICAgICAgICAg
IFJlbmRlck9iamVjdCogbyA9IHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0g
T1ZJU0lCTEUgJiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGh0bWxU
YWcpID8gYm9keS0+cmVuZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKKyAgICAgICAgICAgICAgICBS
ZW5kZXJFbGVtZW50KiBvID0gcm9vdFJlbmRlcmVyLT5zdHlsZSgpLT5vdmVyZmxvd1goKSA9PSBP
VklTSUJMRSAmJiBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPmhhc1RhZ05hbWUoaHRtbFRh
ZykgPyBib2R5LT5yZW5kZXJlcigpIDogcm9vdFJlbmRlcmVyOwogICAgICAgICAgICAgICAgIGFw
cGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KG8sIGhNb2RlLCB2TW9kZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZSBpZiAocm9vdFJlbmRlcmVyKQpAQCAtOTg2LDcgKzk4Niw3IEBAIHZvaWQg
RnJhbWVWaWV3OjplbnRlckNvbXBvc2l0aW5nTW9kZSgpCiBib29sIEZyYW1lVmlldzo6aXNFbmNs
b3NlZEluQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQotICAgIFJlbmRlck9iamVjdCogZnJhbWVPd25lclJlbmRlcmVyID0gZnJhbWUo
KS5vd25lclJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogZnJhbWVPd25lclJlbmRlcmVy
ID0gZnJhbWUoKS5vd25lclJlbmRlcmVyKCk7CiAgICAgaWYgKGZyYW1lT3duZXJSZW5kZXJlciAm
JiBmcmFtZU93bmVyUmVuZGVyZXItPmNvbnRhaW5lckZvclJlcGFpbnQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTEzNzEsMTggKzEzNzEsMTggQEAgUmVuZGVyQm94KiBGcmFtZVZpZXc6
OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAjaWYgRU5BQkxFKFNWRykKICAgICBSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwogICAgIGlmICghcmVuZGVyVmll
dykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgUmVu
ZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gcmVuZGVyVmlldy0+Zmlyc3RDaGlsZCgpOwogICAgIGlm
ICghZmlyc3RDaGlsZCB8fCAhZmlyc3RDaGlsZC0+aXNCb3goKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQ3VyZW50bHkgb25seSBlbWJlZGRl
ZCBTVkcgZG9jdW1lbnRzIHBhcnRpY2lwYXRlIGluIHRoZSBzaXplLW5lZ290aWF0aW9uIGxvZ2lj
LgotICAgIGlmIChmaXJzdENoaWxkLT5pc1NWR1Jvb3QoKSkKKyAgICBpZiAodG9SZW5kZXJCb3go
Zmlyc3RDaGlsZCktPmlzU1ZHUm9vdCgpKQogICAgICAgICByZXR1cm4gdG9SZW5kZXJCb3goZmly
c3RDaGlsZCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwog
fQogCiB2b2lkIEZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RUb1VwZGF0ZShSZW5kZXJFbWJl
ZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCkBAIC0xNDkxLDEyICsxNDkxLDEyIEBAIHZvaWQg
RnJhbWVWaWV3OjpzZXRDYW5ub3RCbGl0VG9XaW5kb3coKQogICAgIHVwZGF0ZUNhbkJsaXRPblNj
cm9sbFJlY3Vyc2l2ZWx5KCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphZGRTbG93UmVwYWludE9i
amVjdChSZW5kZXJPYmplY3QqIG8pCit2b2lkIEZyYW1lVmlldzo6YWRkU2xvd1JlcGFpbnRPYmpl
Y3QoUmVuZGVyRWxlbWVudCogbykKIHsKICAgICBib29sIGhhZFNsb3dSZXBhaW50T2JqZWN0cyA9
IGhhc1Nsb3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFtX3Nsb3dSZXBhaW50T2JqZWN0
cykKLSAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBhZG9wdFB0cihuZXcgUmVuZGVyT2Jq
ZWN0U2V0KTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBhZG9wdFB0cihuZXcgSGFz
aFNldDxSZW5kZXJFbGVtZW50Kj4pOwogCiAgICAgbV9zbG93UmVwYWludE9iamVjdHMtPmFkZChv
KTsKIApAQCAtMTUxMCw3ICsxNTEwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFNsb3dSZXBhaW50
T2JqZWN0KFJlbmRlck9iamVjdCogbykKICAgICB9CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpyZW1v
dmVTbG93UmVwYWludE9iamVjdChSZW5kZXJPYmplY3QqIG8pCit2b2lkIEZyYW1lVmlldzo6cmVt
b3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCogbykKIHsKICAgICBpZiAoIW1fc2xv
d1JlcGFpbnRPYmplY3RzKQogICAgICAgICByZXR1cm47CkBAIC0xNTI3LDcgKzE1MjcsNyBAQCB2
b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyT2JqZWN0KiBvKQog
ICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lkIEZyYW1lVmlldzo6YWRkVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdChSZW5kZXJFbGVtZW50KiBvYmplY3QpCiB7CiAgICAgaWYgKCFtX3ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzKQogICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Rz
ID0gYWRvcHRQdHIobmV3IFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQpOwpAQCAtMTU0NCw3
ICsxNTQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgfQogfQogCi12b2lkIEZyYW1lVmlldzo6cmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJPYmplY3QqIG9iamVjdCkKK3ZvaWQgRnJh
bWVWaWV3OjpyZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqIG9i
amVjdCkKIHsKICAgICBpZiAobV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyAmJiBtX3ZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3RzLT5yZW1vdmUob2JqZWN0KSkgewogICAgICAgICBpZiAoUGFn
ZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CkBAIC0xNjQzLDcgKzE2NDMsNyBAQCBib29sIEZy
YW1lVmlldzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aChjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSwgY29uc3QgSW50UmVjdAogICAgIFJlZ2lvbiByZWdpb25Ub1VwZGF0ZTsKICAgICBWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3RzLT5lbmQoKTsKICAgICBmb3IgKFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSAqaXQ7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gKml0OwogICAgICAg
ICBpZiAoIXJlbmRlcmVyLT5zdHlsZSgpLT5oYXNWaWV3cG9ydENvbnN0cmFpbmVkUG9zaXRpb24o
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKQEAgLTE3NDIsMTEgKzE3NDIsOCBAQCB2b2lkIEZyYW1lVmlldzo6cmVwYWludFNsb3dSZXBh
aW50T2JqZWN0cygpCiAKICAgICAvLyBSZW5kZXJlcnMgd2l0aCBmaXhlZCBiYWNrZ3JvdW5kcyBt
YXkgYmUgaW4gY29tcG9zaXRpbmcgbGF5ZXJzLCBzbyB3ZSBuZWVkIHRvIGV4cGxpY2l0bHkKICAg
ICAvLyByZXBhaW50IHRoZW0gYWZ0ZXIgc2Nyb2xsaW5nLgotICAgIFJlbmRlck9iamVjdFNldDo6
Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9zbG93UmVwYWludE9iamVjdHMtPmVuZCgpOwotICAgIGZv
ciAoUmVuZGVyT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc2xvd1JlcGFpbnRPYmpl
Y3RzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9ICppdDsKLSAgICAgICAgcmVuZGVyZXItPnJlcGFpbnQoKTsKLSAgICB9CisgICAg
Zm9yIChhdXRvIGl0ID0gbV9zbG93UmVwYWludE9iamVjdHMtPmJlZ2luKCksIGVuZCA9IG1fc2xv
d1JlcGFpbnRPYmplY3RzLT5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICAoKml0KS0+
cmVwYWludCgpOwogfQogCiAvLyBOb3RlIHRoYXQgdGhpcyBnZXRzIGNhbGxlZCBhdCBwYWludGlu
ZyB0aW1lLgpAQCAtMTk0NSwxMSArMTk0Miw5IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRWaWV3cG9y
dENvbnN0cmFpbmVkT2JqZWN0c05lZWRMYXlvdXQoKQogICAgIGlmICghaGFzVmlld3BvcnRDb25z
dHJhaW5lZE9iamVjdHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVmlld3BvcnRDb25zdHJh
aW5lZE9iamVjdFNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cy0+ZW5kKCk7Ci0gICAgZm9yIChWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0Ojpj
b25zdF9pdGVyYXRvciBpdCA9IG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gKml0
OwotICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgfQorICAgIGF1
dG8gZW5kID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+ZW5kKCk7CisgICAgZm9yIChh
dXRvIGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICAoKml0KS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7CiB9CiAKIHZvaWQg
RnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFQbGF0Zm9ybVdpZGdldCgpCkBAIC0y
OTc3LDggKzI5NzIsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9v
bCBob3Jpem9udGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZgogICAgICAgICBtX3ZlcnRp
Y2FsT3ZlcmZsb3cgPSB2ZXJ0aWNhbE92ZXJmbG93OwogICAgICAgICAKICAgICAgICAgc2NoZWR1
bGVFdmVudChPdmVyZmxvd0V2ZW50OjpjcmVhdGUoaG9yaXpvbnRhbE92ZXJmbG93Q2hhbmdlZCwg
aG9yaXpvbnRhbE92ZXJmbG93LAotICAgICAgICAgICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQs
IHZlcnRpY2FsT3ZlcmZsb3cpLAotICAgICAgICAgICAgbV92aWV3cG9ydFJlbmRlcmVyLT5ub2Rl
KCkpOworICAgICAgICAgICAgdmVydGljYWxPdmVyZmxvd0NoYW5nZWQsIHZlcnRpY2FsT3ZlcmZs
b3cpLCBtX3ZpZXdwb3J0UmVuZGVyZXItPmVsZW1lbnQoKSk7CiAgICAgfQogICAgIAogfQpAQCAt
MzIxMyw3ICszMjA3LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUFubm90YXRlZFJlZ2lvbnMo
KQogCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlU2Nyb2xsQ29ybmVyKCkKIHsKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gMDsKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IDA7CiAg
ICAgUmVmUHRyPFJlbmRlclN0eWxlPiBjb3JuZXJTdHlsZTsKICAgICBJbnRSZWN0IGNvcm5lclJl
Y3QgPSBzY3JvbGxDb3JuZXJSZWN0KCk7CiAgICAgCkBAIC0zNTE4LDcgKzM1MTIsNyBAQCB2b2lk
IEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIHAsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCiAgICAgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciA9IHJlbmRlclZpZXctPmxheWVy
KCk7CiAKICNpZm5kZWYgTkRFQlVHCi0gICAgUmVuZGVyT2JqZWN0OjpTZXRMYXlvdXROZWVkZWRG
b3JiaWRkZW5TY29wZSBmb3JiaWRTZXROZWVkc0xheW91dCgmcm9vdExheWVyLT5yZW5kZXJlcigp
KTsKKyAgICBSZW5kZXJFbGVtZW50OjpTZXRMYXlvdXROZWVkZWRGb3JiaWRkZW5TY29wZSBmb3Ji
aWRTZXROZWVkc0xheW91dCgmcm9vdExheWVyLT5yZW5kZXJlcigpKTsKICNlbmRpZgogCiAgICAg
cm9vdExheWVyLT5wYWludChwLCByZWN0LCBtX3BhaW50QmVoYXZpb3IsIGVsdFJlbmRlcmVyKTsK
QEAgLTM4MDEsNyArMzc5NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjphZGp1c3RQYWdlSGVpZ2h0RGVw
cmVjYXRlZChmbG9hdCAqbmV3Qm90dG9tLCBmbG9hdCBvbGRUb3AsIGZsb2F0CiAgICAgcmVuZGVy
Vmlldy0+c2V0UHJpbnRSZWN0KEludFJlY3QoKSk7CiB9CiAKLUludFJlY3QgRnJhbWVWaWV3Ojpj
b252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IElu
dFJlY3QmIHJlbmRlcmVyUmVjdCkgY29uc3QKK0ludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJv
bVJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRSZWN0JiBy
ZW5kZXJlclJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0ID0gcGl4ZWxTbmFwcGVkSW50
UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZs
b2F0UmVjdChyZW5kZXJlclJlY3QpKS5ib3VuZGluZ0JveCgpKSk7CiAKQEAgLTM4MTIsNyArMzgw
Niw3IEBAIEludFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFJlCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKLUlu
dFJlY3QgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBjb25zdCBJbnRSZWN0JiB2aWV3UmVjdCkgY29uc3QKK0ludFJlY3QgRnJhbWVWaWV3
Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
SW50UmVjdCYgdmlld1JlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCByZWN0ID0gdmlld1JlY3Q7
CiAgICAgCkBAIC0zODI2LDcgKzM4MjAsNyBAQCBJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVydFRv
UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UmVjdAogICAg
IHJldHVybiByZWN0OwogfQogCi1JbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVy
ZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHJlbmRlcmVy
UG9pbnQpIGNvbnN0CitJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFBvaW50JiByZW5kZXJlclBvaW50
KSBjb25zdAogewogICAgIEludFBvaW50IHBvaW50ID0gcm91bmRlZEludFBvaW50KHJlbmRlcmVy
LT5sb2NhbFRvQWJzb2x1dGUocmVuZGVyZXJQb2ludCwgVXNlVHJhbnNmb3JtcykpOwogCkBAIC0z
ODM2LDcgKzM4MzAsNyBAQCBJbnRQb2ludCBGcmFtZVZpZXc6OmNvbnZlcnRGcm9tUmVuZGVyZXIo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50UAogICAgIHJldHVybiBwb2lu
dDsKIH0KIAotSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRQb2ludCYgdmlld1BvaW50KSBjb25zdAorSW50
UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHZpZXdQb2ludCkgY29uc3QKIHsKICAgICBJbnRQb2lu
dCBwb2ludCA9IHZpZXdQb2ludDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKaW5kZXggODZjNThj
ZGY5N2YyMzUzNTMwOTI3MDM4OGFiMmIwN2Q5ZGE2MWY1MC4uN2MzMTgyNGUwZDk4MzQ3YmZhM2I0
NDI5YWVkZWNhZjgzYTYxYzdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCkBAIC00OSw2ICs0
OSw3IEBAIGNsYXNzIFVSTDsKIGNsYXNzIE5vZGU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUmVuZGVy
Qm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckVtYmVkZGVkT2JqZWN0Owog
Y2xhc3MgUmVuZGVyTGF5ZXI7CiBjbGFzcyBSZW5kZXJPYmplY3Q7CkBAIC0xMTEsNyArMTEyLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNJbkxheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1faW5MYXlv
dXQ7IH0KIAogICAgIFJlbmRlck9iamVjdCogbGF5b3V0Um9vdChib29sIG9ubHlEdXJpbmdMYXlv
dXQgPSBmYWxzZSkgY29uc3Q7Ci0gICAgdm9pZCBjbGVhckxheW91dFJvb3QoKSB7IG1fbGF5b3V0
Um9vdCA9IDA7IH0KKyAgICB2b2lkIGNsZWFyTGF5b3V0Um9vdCgpIHsgbV9sYXlvdXRSb290ID0g
bnVsbHB0cjsgfQogICAgIGludCBsYXlvdXRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0
Q291bnQ7IH0KIAogICAgIGJvb2wgbmVlZHNMYXlvdXQoKSBjb25zdDsKQEAgLTIxNywxNSArMjE4
LDE1IEBAIHB1YmxpYzoKICAgICBib29sIGlzT3ZlcmxhcHBlZEluY2x1ZGluZ0FuY2VzdG9ycygp
IGNvbnN0OwogICAgIHZvaWQgc2V0Q29udGVudElzT3BhcXVlKGJvb2wpOwogCi0gICAgdm9pZCBh
ZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJPYmplY3QqKTsKLSAgICB2b2lkIHJlbW92ZVNsb3dS
ZXBhaW50T2JqZWN0KFJlbmRlck9iamVjdCopOwotICAgIGJvb2wgaGFzU2xvd1JlcGFpbnRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvKSBjb25zdCB7IHJldHVybiBtX3Nsb3dSZXBhaW50T2JqZWN0cyAm
JiBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+Y29udGFpbnMobyk7IH0KKyAgICB2b2lkIGFkZFNsb3dS
ZXBhaW50T2JqZWN0KFJlbmRlckVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZVNsb3dSZXBhaW50
T2JqZWN0KFJlbmRlckVsZW1lbnQqKTsKKyAgICBib29sIGhhc1Nsb3dSZXBhaW50T2JqZWN0KFJl
bmRlckVsZW1lbnQqIG8pIGNvbnN0IHsgcmV0dXJuIG1fc2xvd1JlcGFpbnRPYmplY3RzICYmIG1f
c2xvd1JlcGFpbnRPYmplY3RzLT5jb250YWlucyhvKTsgfQogICAgIGJvb2wgaGFzU2xvd1JlcGFp
bnRPYmplY3RzKCkgY29uc3QgeyByZXR1cm4gbV9zbG93UmVwYWludE9iamVjdHMgJiYgbV9zbG93
UmVwYWludE9iamVjdHMtPnNpemUoKTsgfQogCiAgICAgLy8gSW5jbHVkZXMgZml4ZWQtIGFuZCBz
dGlja3ktcG9zaXRpb24gb2JqZWN0cy4KLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVuZGVyT2JqZWN0
Kj4gVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldDsKLSAgICB2b2lkIGFkZFZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCByZW1vdmVWaWV3cG9ydENv
bnN0cmFpbmVkT2JqZWN0KFJlbmRlck9iamVjdCopOworICAgIHR5cGVkZWYgSGFzaFNldDxSZW5k
ZXJFbGVtZW50Kj4gVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdFNldDsKKyAgICB2b2lkIGFkZFZp
ZXdwb3J0Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCopOworICAgIHZvaWQgcmVtb3Zl
Vmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJFbGVtZW50Kik7CiAgICAgY29uc3QgVmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdFNldCogdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSBj
b25zdCB7IHJldHVybiBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLmdldCgpOyB9CiAgICAg
Ym9vbCBoYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMgJiYgbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+
c2l6ZSgpID4gMDsgfQogCkBAIC0zMzEsMTAgKzMzMiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
Y3JvbGxFbGVtZW50VG9SZWN0KEVsZW1lbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAKICAgICAvLyBN
ZXRob2RzIHRvIGNvbnZlcnQgcG9pbnRzIGFuZCByZWN0cyBiZXR3ZWVuIHRoZSBjb29yZGluYXRl
IHNwYWNlIG9mIHRoZSByZW5kZXJlciwgYW5kIHRoaXMgdmlldy4KLSAgICBJbnRSZWN0IGNvbnZl
cnRGcm9tUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UmVjdCYpIGNvbnN0
OwotICAgIEludFJlY3QgY29udmVydFRvUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29u
c3QgSW50UmVjdCYpIGNvbnN0OwotICAgIEludFBvaW50IGNvbnZlcnRGcm9tUmVuZGVyZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKLSAgICBJbnRQb2ludCBj
b252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRQb2ludCYpIGNv
bnN0OworICAgIEludFJlY3QgY29udmVydEZyb21SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50
KiwgY29uc3QgSW50UmVjdCYpIGNvbnN0OworICAgIEludFJlY3QgY29udmVydFRvUmVuZGVyZXIo
Y29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKKyAgICBJbnRQb2lu
dCBjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRQb2lu
dCYpIGNvbnN0OworICAgIEludFBvaW50IGNvbnZlcnRUb1JlbmRlcmVyKGNvbnN0IFJlbmRlckVs
ZW1lbnQqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc0ZyYW1lVmlld1Nj
cm9sbENvcm5lcihSZW5kZXJTY3JvbGxiYXJQYXJ0KiBzY3JvbGxDb3JuZXIpIGNvbnN0IHsgcmV0
dXJuIG1fc2Nyb2xsQ29ybmVyID09IHNjcm9sbENvcm5lcjsgfQogCkBAIC00NTksNyArNDYwLDcg
QEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkVXBkYXRlRml4ZWRFbGVtZW50c0FmdGVyU2Ny
b2xsaW5nKCk7CiAKLSAgICB2b2lkIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlck9iamVj
dCosIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSk7CisgICAgdm9p
ZCBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVtZW50KiwgU2Nyb2xsYmFyTW9kZSYg
aE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlKTsKICAgICB2b2lkIGFwcGx5UGFnaW5hdGlvblRv
Vmlld3BvcnQoKTsKIAogICAgIHZvaWQgdXBkYXRlT3ZlcmZsb3dTdGF0dXMoYm9vbCBob3Jpem9u
dGFsT3ZlcmZsb3csIGJvb2wgdmVydGljYWxPdmVyZmxvdyk7CkBAIC01NTEsOCArNTUyLDcgQEAg
cHJpdmF0ZToKICAgICBPd25QdHI8TGlzdEhhc2hTZXQ8UmVuZGVyRW1iZWRkZWRPYmplY3QqPj4g
bV9lbWJlZGRlZE9iamVjdHNUb1VwZGF0ZTsKICAgICBjb25zdCBSZWZQdHI8RnJhbWU+IG1fZnJh
bWU7CiAKLSAgICB0eXBlZGVmIEhhc2hTZXQ8UmVuZGVyT2JqZWN0Kj4gUmVuZGVyT2JqZWN0U2V0
OwotICAgIE93blB0cjxSZW5kZXJPYmplY3RTZXQ+IG1fc2xvd1JlcGFpbnRPYmplY3RzOworICAg
IE93blB0cjxIYXNoU2V0PFJlbmRlckVsZW1lbnQqPj4gbV9zbG93UmVwYWludE9iamVjdHM7CiAK
ICAgICBib29sIG1fbmVlZHNGdWxsUmVwYWludDsKICAgICAKQEAgLTU4OSw3ICs1ODksNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9vdmVyZmxvd1N0YXR1c0RpcnR5OwogICAgIGJvb2wgbV9ob3Jp
em9udGFsT3ZlcmZsb3c7CiAgICAgYm9vbCBtX3ZlcnRpY2FsT3ZlcmZsb3c7ICAgIAotICAgIFJl
bmRlck9iamVjdCogbV92aWV3cG9ydFJlbmRlcmVyOworICAgIFJlbmRlckVsZW1lbnQqIG1fdmll
d3BvcnRSZW5kZXJlcjsKIAogICAgIFBhZ2luYXRpb24gbV9wYWdpbmF0aW9uOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmluZGV4IDlhNDhmODU4YmVmYzEyZWQ2NGVlOTAz
NjgzYWQ5ZWFhOGQzYzI1YzkuLjZiMWQ5Y2I2YzVmNDUyYWNjMDNmODZiM2Y1YmE1YzdhZTFlZDNm
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCkBAIC0yOTEsNyArMjkx
LDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwKICAgICB9CiB9CiAKLXZvaWQgUGFnZVNlcmlh
bGl6ZXI6OmFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJPYmpl
Y3QqIGltYWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQordm9pZCBQYWdlU2VyaWFsaXplcjo6
YWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNoZWRJbWFnZSogaW1hZ2UsIFJlbmRlckVsZW1lbnQqIGlt
YWdlUmVuZGVyZXIsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmICghdXJsLmlzVmFsaWQoKSB8
fCBtX3Jlc291cmNlVVJMcy5jb250YWlucyh1cmwpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKaW5kZXggMTczMWQzOWUwYjAwNzM1ZjgwYzI0YjY0Mjlm
MTQxZjRhYjlmZjY2NS4uMjc4OThlYTZlYWVhNDJmMWNkM2NlNDg2NTQ5YmYyM2Q3ZjVlYmViYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaApAQCAtNDUsNyArNDUsNyBAQCBjbGFz
cyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIFBh
Z2U7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgU3R5
bGVQcm9wZXJ0eVNldDsKIGNsYXNzIFN0eWxlUnVsZTsKIApAQCAtNzcsNyArNzcsNyBAQCBwcml2
YXRlOgogICAgIC8vIEl0IGFsc28gYWRkcyBhbnkgcmVzb3VyY2VzIGluY2x1ZGVkIGluIHRoYXQg
c3R5bGVzaGVldCAoaW5jbHVkaW5nIGFueSBpbXBvcnRlZCBzdHlsZXNoZWV0cyBhbmQgdGhlaXIg
b3duIHJlc291cmNlcykuCiAgICAgdm9pZCBzZXJpYWxpemVDU1NTdHlsZVNoZWV0KENTU1N0eWxl
U2hlZXQqLCBjb25zdCBVUkwmKTsKIAotICAgIHZvaWQgYWRkSW1hZ2VUb1Jlc291cmNlcyhDYWNo
ZWRJbWFnZSosIFJlbmRlck9iamVjdCosIGNvbnN0IFVSTCYpOworICAgIHZvaWQgYWRkSW1hZ2VU
b1Jlc291cmNlcyhDYWNoZWRJbWFnZSosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBVUkwmKTsKICAg
ICB2b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9yUHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5
U2V0KiwgRG9jdW1lbnQqKTsKICAgICB2b2lkIHJldHJpZXZlUmVzb3VyY2VzRm9yUnVsZShTdHls
ZVJ1bGUqLCBEb2N1bWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IGJhNzBiNmI1YTQ4ZWJjZTI0NDA2NTQ0NTI3ZTIwMmI0
MDdlYWNlNmMuLjM3Y2NhZjU4MDk4ZjI2MGEyOWI4YjAxNGJmMTM2YjQxMzM1NTQyNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC03
MCw3ICs3MCw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlU3RlcHNGdW5jdGlvbihpbnQg
bnVtU3RlcHMsIGJvb2wgc3RlcEF0U3RhcnQsIGRvdWJsZSB0CiAgICAgcmV0dXJuIGZsb29yKG51
bVN0ZXBzICogdCkgLyBudW1TdGVwczsKIH0KIAotQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uQmFz
ZShjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24sIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENv
bXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0pCitBbmltYXRpb25CYXNlOjpBbmltYXRpb25CYXNl
KGNvbnN0IEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENv
bXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0pCiAgICAgOiBtX2FuaW1TdGF0ZShBbmltYXRpb25T
dGF0ZU5ldykKICAgICAsIG1faXNBY2NlbGVyYXRlZChmYWxzZSkKICAgICAsIG1fdHJhbnNmb3Jt
RnVuY3Rpb25MaXN0VmFsaWQoZmFsc2UpCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBBbmltYXRp
b25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBw
YXJhbSkKIAogICAgICAgICAgICAgICAgIC8vIFRyaWdnZXIgYSByZW5kZXIgc28gd2UgY2FuIHN0
YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAg
ICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNo
YW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Y29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2go
bV9vYmplY3QtPmVsZW1lbnQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIEFTU0VSVCghcGF1c2VkKCkpOwogICAgICAgICAgICAgICAgIC8vIFdlJ3JlIHdhaXRpbmcg
Zm9yIHRoZSBzdGFydCB0aW1lciB0byBmaXJlIGFuZCB3ZSBnb3QgYSBwYXVzZS4gQ2FuY2VsIHRo
ZSB0aW1lciwgcGF1c2UgYW5kIHdhaXQKQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkIEFuaW1hdGlv
bkJhc2U6OnVwZGF0ZVN0YXRlTWFjaGluZShBbmltU3RhdGVJbnB1dCBpbnB1dCwgZG91YmxlIHBh
cmFtKQogCiAgICAgICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdXBkYXRlU3R5bGVJZk5lZWRlZCBz
byB3ZSBjYW4gc3RhcnQgdGhlIGFuaW1hdGlvbgogICAgICAgICAgICAgICAgIGlmIChtX29iamVj
dCkKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigp
LT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdl
VG9EaXNwYXRjaChtX29iamVjdC0+ZWxlbWVudCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgLy8gV2UgYXJlIHBhdXNpbmcgd2hpbGUgd2FpdGluZyBmb3IgYSBzdGFy
dCByZXNwb25zZS4gQ2FuY2VsIHRoZSBhbmltYXRpb24gYW5kIHdhaXQuIFdoZW4gCiAgICAgICAg
ICAgICAgICAgLy8gd2UgdW5wYXVzZSwgd2Ugd2lsbCBhY3QgYXMgdGhvdWdoIHRoZSBzdGFydCB0
aW1lciBqdXN0IGZpcmVkCkBAIC0zMzgsNyArMzM4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1
cGRhdGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRpb25zKCk7CiAKICAg
ICAgICAgICAgICAgICAgICAgLy8gRmlyZSBvZmYgYW5vdGhlciBzdHlsZSBjaGFuZ2Ugc28gd2Ug
Y2FuIHNldCB0aGUgZmluYWwgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+
YW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+
bm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbV9jb21wQW5pbS0+YW5pbWF0aW9uQ29udHJv
bGxlcigpLT5hZGROb2RlQ2hhbmdlVG9EaXNwYXRjaChtX29iamVjdC0+ZWxlbWVudCgpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8v
IFdlIGFyZSBwYXVzaW5nIHdoaWxlIHJ1bm5pbmcuIENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3
YWl0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgKaW5k
ZXggMjZkNzMyYTc3YWQwYjdkOThkZWJhNTdjMGE3MGM3ZTI5NjMxMDdjZS4uMmJhMmQwNGQ0NzU2
OTIyOTJiOTliOGIzMGUzZDAwZDg5YTc0M2NiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBBbmltYXRp
b25Db250cm9sbGVyOwogY2xhc3MgQ29tcG9zaXRlQW5pbWF0aW9uOwogY2xhc3MgRWxlbWVudDsK
IGNsYXNzIE5vZGU7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50Owog
Y2xhc3MgUmVuZGVyU3R5bGU7CiBjbGFzcyBUaW1pbmdGdW5jdGlvbjsKIApAQCAtNTMsMTAgKzUz
LDEwIEBAIGNsYXNzIEFuaW1hdGlvbkJhc2UgOiBwdWJsaWMgUmVmQ291bnRlZDxBbmltYXRpb25C
YXNlPiB7CiAgICAgZnJpZW5kIGNsYXNzIENTU1Byb3BlcnR5QW5pbWF0aW9uOwogCiBwdWJsaWM6
Ci0gICAgQW5pbWF0aW9uQmFzZShjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24sIFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0pOworICAgIEFuaW1h
dGlvbkJhc2UoY29uc3QgQW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBSZW5kZXJFbGVtZW50KiwgQ29t
cG9zaXRlQW5pbWF0aW9uKik7CiAgICAgdmlydHVhbCB+QW5pbWF0aW9uQmFzZSgpIHsgfQogCi0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0OyB9Cisg
ICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQog
ICAgIHZvaWQgY2xlYXIoKQogICAgIHsKICAgICAgIGVuZEFuaW1hdGlvbigpOwpAQCAtMTM0LDcg
KzEzNCw3IEBAIHB1YmxpYzoKIAogICAgIGRvdWJsZSBwcm9ncmVzcyhkb3VibGUgc2NhbGUsIGRv
dWJsZSBvZmZzZXQsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uKikgY29uc3Q7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJPYmplY3QqLCBjb25zdCBS
ZW5kZXJTdHlsZSogLypjdXJyZW50U3R5bGUqLywgUmVuZGVyU3R5bGUqIC8qdGFyZ2V0U3R5bGUq
LywgUmVmUHRyPFJlbmRlclN0eWxlPiYgLyphbmltYXRlZFN0eWxlKi8pID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVtZW50KiwgY29u
c3QgUmVuZGVyU3R5bGUqIC8qY3VycmVudFN0eWxlKi8sIFJlbmRlclN0eWxlKiAvKnRhcmdldFN0
eWxlKi8sIFJlZlB0cjxSZW5kZXJTdHlsZT4mIC8qYW5pbWF0ZWRTdHlsZSovKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIGdldEFuaW1hdGVkU3R5bGUoUmVmUHRyPFJlbmRlclN0eWxlPiYgLyphbmlt
YXRlZFN0eWxlKi8pID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRGaXJlRXZlbnRzKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTIzNCw3ICsyMzQsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgZG91YmxlIG1fdG90YWxEdXJhdGlvbjsKICAgICBkb3VibGUgbV9uZXh0SXRlcmF0aW9uRHVy
YXRpb247CiAKLSAgICBSZW5kZXJPYmplY3QqIG1fb2JqZWN0OworICAgIFJlbmRlckVsZW1lbnQq
IG1fb2JqZWN0OwogCiAgICAgUmVmUHRyPEFuaW1hdGlvbj4gbV9hbmltYXRpb247CiAgICAgQ29t
cG9zaXRlQW5pbWF0aW9uKiBtX2NvbXBBbmltOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA2MmVhYmM3Mjk0YjNj
NDQ4M2JmYzE1ODQwMDRhOTJmNTMxMDk2MDRmLi5lY2IzNTVmMjQzODcwOTNkNjE3MTdjZWRiYTQ5
NTQxNTlhMzFkNzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtNjcsMTUgKzY3LDE1IEBAIEFuaW1hdGlvbkNv
bnRyb2xsZXJQcml2YXRlOjp+QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUoKQogewogfQogCi1D
b21wb3NpdGVBbmltYXRpb24mIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjplbnN1cmVDb21w
b3NpdGVBbmltYXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0NvbXBvc2l0ZUFuaW1hdGlv
biYgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmVuc3VyZUNvbXBvc2l0ZUFuaW1hdGlvbihS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKLSAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6
OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYWRkKHJlbmRlcmVyLCBu
dWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5hZGQocmVu
ZGVyZXIsIG51bGxwdHIpOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkKICAgICAgICAgcmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZSA9IENvbXBvc2l0ZUFuaW1hdGlvbjo6Y3JlYXRlKHRoaXMpOwog
ICAgIHJldHVybiAqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotYm9vbCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6Y2xlYXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2Jvb2wgQW5p
bWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmNsZWFyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQog
ewogICAgIC8vIFJldHVybiBmYWxzZSBpZiB3ZSBkaWRuJ3QgZG8gYW55dGhpbmcgT1Igd2UgYXJl
IHN1c3BlbmRlZCAoc28gd2UgZG9uJ3QgdHJ5IHRvCiAgICAgLy8gZG8gYSBzZXROZWVkc1N0eWxl
UmVjYWxjKCkgd2hlbiBzdXNwZW5kZWQpLgpAQCAtOTEsMjIgKzkxLDIxIEBAIGRvdWJsZSBBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxT
ZXRDaGFuZ2VkLyoKICAgICBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UgPSAtMTsKICAgICBib29s
IGNhbGxlZFNldENoYW5nZWQgPSBmYWxzZTsKIAotICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1h
cDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5l
bmQoKTsKLSAgICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsg
KytpdCkgewotICAgICAgICBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltID0gaXQtPnZhbHVl
LmdldCgpOwotICAgICAgICBpZiAoIWNvbXBBbmltLT5pc1N1c3BlbmRlZCgpICYmIGNvbXBBbmlt
LT5oYXNBbmltYXRpb25zKCkpIHsKLSAgICAgICAgICAgIGRvdWJsZSB0ID0gY29tcEFuaW0tPnRp
bWVUb05leHRTZXJ2aWNlKCk7CisgICAgYXV0byBlbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMu
ZW5kKCk7CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBDb21wb3NpdGVBbmltYXRpb24mIGFuaW1hdGlv
biA9ICppdC0+dmFsdWU7CisgICAgICAgIGlmICghYW5pbWF0aW9uLmlzU3VzcGVuZGVkKCkgJiYg
YW5pbWF0aW9uLmhhc0FuaW1hdGlvbnMoKSkgeworICAgICAgICAgICAgZG91YmxlIHQgPSBhbmlt
YXRpb24udGltZVRvTmV4dFNlcnZpY2UoKTsKICAgICAgICAgICAgIGlmICh0ICE9IC0xICYmICh0
IDwgdGltZVRvTmV4dFNlcnZpY2UgfHwgdGltZVRvTmV4dFNlcnZpY2UgPT0gLTEpKQogICAgICAg
ICAgICAgICAgIHRpbWVUb05leHRTZXJ2aWNlID0gdDsKICAgICAgICAgICAgIGlmICghdGltZVRv
TmV4dFNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICBpZiAoY2FsbFNldENoYW5nZWQgPT0gQ2Fs
bFNldENoYW5nZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGl0LT5rZXkt
Pm5vZGUoKTsKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFub2RlIHx8ICFub2RlLT5kb2N1
bWVudCgpLmluUGFnZUNhY2hlKCkpOwotICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXROZWVk
c1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKLSAgICAgICAgICAgICAgICAgICAg
Y2FsbGVkU2V0Q2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiAoY2FsbFNldENoYW5nZWQgIT0gQ2FsbFNldENo
YW5nZWQpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIEVsZW1l
bnQqIGVsZW1lbnQgPSBpdC0+a2V5LT5lbGVtZW50KCk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGVsZW1lbnQpOworICAgICAgICAgICAgICAgIEFTU0VSVCghZWxlbWVudC0+ZG9jdW1lbnQoKS5p
blBhZ2VDYWNoZSgpKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVj
YWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICBjYWxsZWRTZXRDaGFu
Z2VkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTExNyw3ICsx
MTYsNyBAQCBkb3VibGUgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlv
bnMoU2V0Q2hhbmdlZCBjYWxsU2V0Q2hhbmdlZC8qCiAgICAgcmV0dXJuIHRpbWVUb05leHRTZXJ2
aWNlOwogfQogCi12b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRp
b25UaW1lckZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIEFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25UaW1lckZvclJlbmRlcmVyKFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGRvdWJsZSB0aW1lVG9OZXh0U2VydmljZSA9IDA7
CiAKQEAgLTI0MywyMiArMjQyLDE2IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6
OmFuaW1hdGlvblRpbWVyRmlyZWQoVGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByCiAgICAgZmly
ZUV2ZW50c0FuZFVwZGF0ZVN0eWxlKCk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0Citib29s
IEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjppc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGlz
UnVubmluZ05vdykgY29uc3QKIHsKICAgICBjb25zdCBDb21wb3NpdGVBbmltYXRpb24qIGFuaW1h
dGlvbiA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5nZXQocmVuZGVyZXIpOwotICAgIGlmICghYW5p
bWF0aW9uKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gYW5pbWF0aW9uLT5p
c0FuaW1hdGluZ1Byb3BlcnR5KHByb3BlcnR5LCBmYWxzZSwgaXNSdW5uaW5nTm93KTsKKyAgICBy
ZXR1cm4gYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNBbmltYXRpbmdQcm9wZXJ0eShwcm9wZXJ0
eSwgZmFsc2UsIGlzUnVubmluZ05vdyk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGlzUnVubmluZ05vdykg
Y29uc3QKK2Jvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmlzUnVubmluZ0FjY2VsZXJh
dGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0CiB7CiAgICAgY29uc3QgQ29t
cG9zaXRlQW5pbWF0aW9uKiBhbmltYXRpb24gPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZ2V0KHJl
bmRlcmVyKTsKLSAgICBpZiAoIWFuaW1hdGlvbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgcmV0dXJuIGFuaW1hdGlvbi0+aXNBbmltYXRpbmdQcm9wZXJ0eShwcm9wZXJ0eSwgdHJ1ZSwg
aXNSdW5uaW5nTm93KTsKKyAgICByZXR1cm4gYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNBbmlt
YXRpbmdQcm9wZXJ0eShwcm9wZXJ0eSwgdHJ1ZSwgaXNSdW5uaW5nTm93KTsKIH0KIAogdm9pZCBB
bmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnMoKQpAQCAtMjkzLDEz
ICsyODYsOSBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzdXNwZW5kQW5pbWF0
aW9uc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudAogewogICAgIHNldEJlZ2luQW5pbWF0
aW9uVXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25VcGRhdGVUaW1lTm90U2V0KTsKIAotICAgIFJl
bmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1f
Y29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsKLSAgICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlv
bk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsg
aXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gaXQtPmtleTsKLSAgICAgICAgaWYgKCZyZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1
bWVudCkgewotICAgICAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52
YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgIGNvbXBBbmltLT5zdXNwZW5kQW5pbWF0aW9ucygpOwot
ICAgICAgICB9CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmJlZ2lu
KCksIGVuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgIGlmICgmaXQtPmtleS0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkKKyAgICAgICAg
ICAgIGl0LT52YWx1ZS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKICAgICB9CiAKICAgICB1cGRhdGVB
bmltYXRpb25UaW1lcigpOwpAQCAtMzA5LDEzICsyOTgsOSBAQCB2b2lkIEFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlOjpyZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50KQogewogICAgIHNldEJlZ2luQW5pbWF0aW9uVXBkYXRlVGltZShjQmVnaW5BbmltYXRpb25V
cGRhdGVUaW1lTm90U2V0KTsKIAotICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3Rf
aXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsKLSAg
ICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytpdCkgewot
ICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXQtPmtleTsKLSAgICAgICAgaWYgKCZy
ZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkgewotICAgICAgICAgICAgQ29tcG9zaXRl
QW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAgICAgIGNvbXBB
bmltLT5yZXN1bWVBbmltYXRpb25zKCk7Ci0gICAgICAgIH0KKyAgICBmb3IgKGF1dG8gaXQgPSBt
X2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25z
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCZpdC0+a2V5LT5kb2N1bWVu
dCgpID09IGRvY3VtZW50KQorICAgICAgICAgICAgaXQtPnZhbHVlLT5yZXN1bWVBbmltYXRpb25z
KCk7CiAgICAgfQogCiAgICAgdXBkYXRlQW5pbWF0aW9uVGltZXIoKTsKQEAgLTMzMiwxNCArMzE3
LDE0IEBAIHZvaWQgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnNldEFsbG93c05ld0FuaW1h
dGlvbnNXaGlsZVN1c3BlbmRlZChib29sIGFsbG93CiAgICAgbV9hbGxvd3NOZXdBbmltYXRpb25z
V2hpbGVTdXNwZW5kZWQgPSBhbGxvd2VkOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGRvdWJsZSB0KQorYm9vbCBBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpCiB7CiAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQ29tcG9zaXRlQW5pbWF0aW9uJiBjb21wb3Np
dGVBbmltYXRpb24gPSBlbnN1cmVDb21wb3NpdGVBbmltYXRpb24ocmVuZGVyZXIpOwogICAgIGlm
IChjb21wb3NpdGVBbmltYXRpb24ucGF1c2VBbmltYXRpb25BdFRpbWUobmFtZSwgdCkpIHsKLSAg
ICAgICAgcmVuZGVyZXItPm5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHls
ZUNoYW5nZSk7CisgICAgICAgIHJlbmRlcmVyLT5lbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNh
bGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVk
ZWREaXNwYXRjaGVyKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM0NywxNCAr
MzMyLDE0IEBAIGJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlQW5pbWF0aW9u
QXRUaW1lKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQp
Citib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUo
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0
KQogewogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIENv
bXBvc2l0ZUFuaW1hdGlvbiYgY29tcG9zaXRlQW5pbWF0aW9uID0gZW5zdXJlQ29tcG9zaXRlQW5p
bWF0aW9uKHJlbmRlcmVyKTsKICAgICBpZiAoY29tcG9zaXRlQW5pbWF0aW9uLnBhdXNlVHJhbnNp
dGlvbkF0VGltZShjc3NQcm9wZXJ0eUlEKHByb3BlcnR5KSwgdCkpIHsKLSAgICAgICAgcmVuZGVy
ZXItPm5vZGUoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Cisg
ICAgICAgIHJlbmRlcmVyLT5lbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGlj
U3R5bGVDaGFuZ2UpOwogICAgICAgICBzdGFydFVwZGF0ZVN0eWxlSWZOZWVkZWREaXNwYXRjaGVy
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTM4Miw3ICszNjcsNyBAQCB2b2lk
IEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpyZWNlaXZlZFN0YXJ0VGltZVJlc3BvbnNlKGRv
dWJsZSB0aW1lKQogICAgIHN0YXJ0VGltZVJlc3BvbnNlKHRpbWUpOwogfQogCi1QYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRTdHls
ZUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitQYXNzUmVmUHRyPFJlbmRlclN0
eWxlPiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRl
cmVyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGlmICghcmVuZGVyZXIpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtNDAyLDE0ICszODcsMTEgQEAgdW5zaWduZWQgQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGU6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1l
bnQKIHsKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgCi0gICAgUmVuZGVyT2JqZWN0QW5p
bWF0aW9uTWFwOjpjb25zdF9pdGVyYXRvciBhbmltYXRpb25zRW5kID0gbV9jb21wb3NpdGVBbmlt
YXRpb25zLmVuZCgpOwotICAgIGZvciAoUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBhbmltYXRp
b25zRW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBpdC0+a2V5
OwotICAgICAgICBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltID0gaXQtPnZhbHVlLmdldCgp
OwotICAgICAgICBpZiAoJnJlbmRlcmVyLT5kb2N1bWVudCgpID09IGRvY3VtZW50KQotICAgICAg
ICAgICAgY291bnQgKz0gY29tcEFuaW0tPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOworICAg
IGZvciAoYXV0byBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpLCBlbmQgPSBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBpZiAo
Jml0LT5rZXktPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpCisgICAgICAgICAgICBjb3VudCArPSBp
dC0+dmFsdWUtPm51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpOwogICAgIH0KLSAgICAKKwogICAg
IHJldHVybiBjb3VudDsKIH0KIApAQCAtNTAwLDIwICs0ODIsMjAgQEAgQW5pbWF0aW9uQ29udHJv
bGxlcjo6fkFuaW1hdGlvbkNvbnRyb2xsZXIoKQogewogfQogCi12b2lkIEFuaW1hdGlvbkNvbnRy
b2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgQW5p
bWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJl
cikKIHsKICAgICBpZiAoIW1fZGF0YS0+aGFzQW5pbWF0aW9ucygpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9kYXRhLT5jbGVhcihyZW5kZXJlcikpIHsKLSAgICAgICAgTm9kZSogbm9k
ZSA9IHJlbmRlcmVyLT5ub2RlKCk7Ci0gICAgICAgIEFTU0VSVCghbm9kZSB8fCAhbm9kZS0+ZG9j
dW1lbnQoKS5pblBhZ2VDYWNoZSgpKTsKLSAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICBu
b2RlLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdlKTsKKyAgICAgICAg
RWxlbWVudCogZWxlbWVudCA9IHJlbmRlcmVyLT5lbGVtZW50KCk7CisgICAgICAgIEFTU0VSVCgh
ZWxlbWVudCB8fCAhZWxlbWVudC0+ZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKTsKKyAgICAgICAg
aWYgKGVsZW1lbnQpCisgICAgICAgICAgICBlbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5
bnRoZXRpY1N0eWxlQ2hhbmdlKTsKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IEFuaW1hdGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5p
bWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciwgUmVuZGVyU3R5bGUqIG5ld1N0eWxlKQogewogICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlm
IHdlJ3JlIGluIHRoZSBjYWNoZQogICAgIGlmIChyZW5kZXJlci0+ZG9jdW1lbnQoKS5pblBhZ2VD
YWNoZSgpKQpAQCAtNTM0LDcgKzUxNiw3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFuaW1h
dGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kCiAgICAg
Ly8gYSBuZXcgc3R5bGUuCiAKICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGFub255bW91cyBwc2V1
ZG8gZWxlbWVudHMgbGlrZSA6Zmlyc3QtbGluZSBvciA6Zmlyc3QtbGV0dGVyLgotICAgIEFTU0VS
VChyZW5kZXJlci0+bm9kZSgpKTsKKyAgICBBU1NFUlQocmVuZGVyZXItPmVsZW1lbnQoKSk7CiAK
ICAgICBDb21wb3NpdGVBbmltYXRpb24mIHJlbmRlcmVyQW5pbWF0aW9ucyA9IG1fZGF0YS0+ZW5z
dXJlQ29tcG9zaXRlQW5pbWF0aW9uKHJlbmRlcmVyKTsKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IGJsZW5kZWRTdHlsZSA9IHJlbmRlcmVyQW5pbWF0aW9ucy5hbmltYXRlKHJlbmRlcmVyLCBvbGRT
dHlsZSwgbmV3U3R5bGUpOwpAQCAtNTU2LDE3ICs1MzgsMTcgQEAgUGFzc1JlZlB0cjxSZW5kZXJT
dHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6dXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJPYmplY3Qq
IHJlbmQKICAgICByZXR1cm4gYmxlbmRlZFN0eWxlLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29udHJvbGxlcjo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJl
bmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBB
bmltYXRpb25Db250cm9sbGVyOjpnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIpCiB7CiAgICAgcmV0dXJuIG1fZGF0YS0+Z2V0QW5pbWF0ZWRTdHlsZUZv
clJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAotdm9pZCBBbmltYXRpb25Db250cm9sbGVyOjpub3Rp
ZnlBbmltYXRpb25TdGFydGVkKFJlbmRlck9iamVjdCosIGRvdWJsZSBzdGFydFRpbWUpCit2b2lk
IEFuaW1hdGlvbkNvbnRyb2xsZXI6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoUmVuZGVyRWxlbWVu
dCosIGRvdWJsZSBzdGFydFRpbWUpCiB7CiAgICAgbV9kYXRhLT5yZWNlaXZlZFN0YXJ0VGltZVJl
c3BvbnNlKHN0YXJ0VGltZSk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6cGF1c2VB
bmltYXRpb25BdFRpbWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lLCBkb3VibGUgdCkKK2Jvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6cGF1c2VBbmltYXRp
b25BdFRpbWUoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgZG91YmxlIHQpCiB7CiAgICAgcmV0dXJuIG1fZGF0YS0+cGF1c2VBbmltYXRpb25BdFRpbWUo
cmVuZGVyZXIsIG5hbWUsIHQpOwogfQpAQCAtNTc2LDE3ICs1NTgsMTcgQEAgdW5zaWduZWQgQW5p
bWF0aW9uQ29udHJvbGxlcjo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKERvY3VtZW50KiBkb2N1
bWVudCkgY29uc3QKICAgICByZXR1cm4gbV9kYXRhLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMo
ZG9jdW1lbnQpOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlv
bkF0VGltZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBk
b3VibGUgdCkKK2Jvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6cGF1c2VUcmFuc2l0aW9uQXRUaW1l
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUg
dCkKIHsKICAgICByZXR1cm4gbV9kYXRhLT5wYXVzZVRyYW5zaXRpb25BdFRpbWUocmVuZGVyZXIs
IHByb3BlcnR5LCB0KTsKIH0KIAotYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjppc1J1bm5pbmdB
bmltYXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENTU1Byb3BlcnR5SUQg
cHJvcGVydHksIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdAorYm9vbCBBbmltYXRpb25Db250cm9s
bGVyOjppc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBib29sIGlzUnVubmluZ05vdykgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9kYXRhLT5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKHJlbmRlcmVyLCBw
cm9wZXJ0eSwgaXNSdW5uaW5nTm93KTsKIH0KIAotYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjpp
c1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0Citi
b29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25S
ZW5kZXJlcihSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwg
Ym9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZGF0YS0+aXNSdW5uaW5n
QWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKHJlbmRlcmVyLCBwcm9wZXJ0eSwgaXNSdW5u
aW5nTm93KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXIuaAppbmRleCBjYzYyOTFlM2U2YTE2YTU0ZDM0NWYzNTJmMmI0NmMxMjI2
ODYzMTdmLi42MGMyMDMyYWZhYjUxNDIwMTkwM2MyMDk3Yzg0YzA0NWQwY2E4NjQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNz
IEZyYW1lOwogY2xhc3MgTm9kZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVs
ZW1lbnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgQW5pbWF0aW9uQ29udHJvbGxlciB7
CkBAIC00OSwxOSArNDksMTkgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEFuaW1hdGlvbkNvbnRy
b2xsZXIoRnJhbWUmKTsKICAgICB+QW5pbWF0aW9uQ29udHJvbGxlcigpOwogCi0gICAgdm9pZCBj
YW5jZWxBbmltYXRpb25zKFJlbmRlck9iamVjdCopOwotICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IHVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqIG5ld1N0eWxl
KTsKLSAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBnZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVy
ZXIoUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCBjYW5jZWxBbmltYXRpb25zKFJlbmRlckVsZW1l
bnQqKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiB1cGRhdGVBbmltYXRpb25zKFJlbmRl
ckVsZW1lbnQqLCBSZW5kZXJTdHlsZSogbmV3U3R5bGUpOworICAgIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJFbGVtZW50Kik7CiAKICAg
ICAvLyBUaGlzIGlzIGNhbGxlZCB3aGVuIGFuIGFjY2VsZXJhdGVkIGFuaW1hdGlvbiBvciB0cmFu
c2l0aW9uIGhhcyBhY3R1YWxseSBzdGFydGVkIHRvIGFuaW1hdGUuCi0gICAgdm9pZCBub3RpZnlB
bmltYXRpb25TdGFydGVkKFJlbmRlck9iamVjdCosIGRvdWJsZSBzdGFydFRpbWUpOworICAgIHZv
aWQgbm90aWZ5QW5pbWF0aW9uU3RhcnRlZChSZW5kZXJFbGVtZW50KiwgZG91YmxlIHN0YXJ0VGlt
ZSk7CiAKLSAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlck9iamVjdCosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpOyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRl
c3RpbmcKLSAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJPYmplY3QqLCBjb25z
dCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUgdCk7IC8vIFRvIGJlIHVzZWQgb25seSBmb3IgdGVz
dGluZworICAgIGJvb2wgcGF1c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpOyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRl
c3RpbmcKKyAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJFbGVtZW50KiwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQpOyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRl
c3RpbmcKICAgICB1bnNpZ25lZCBudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoRG9jdW1lbnQqKSBj
b25zdDsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCiAgICAgCi0gICAgYm9vbCBpc1J1
bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCosIENTU1Byb3BlcnR5SUQsIGJv
b2wgaXNSdW5uaW5nTm93ID0gdHJ1ZSkgY29uc3Q7Ci0gICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVy
YXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiwgQ1NTUHJvcGVydHlJRCwgYm9v
bCBpc1J1bm5pbmdOb3cgPSB0cnVlKSBjb25zdDsKKyAgICBib29sIGlzUnVubmluZ0FuaW1hdGlv
bk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5n
Tm93ID0gdHJ1ZSkgY29uc3Q7CisgICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlv
bk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5n
Tm93ID0gdHJ1ZSkgY29uc3Q7CiAKICAgICBib29sIGlzU3VzcGVuZGVkKCkgY29uc3Q7CiAgICAg
dm9pZCBzdXNwZW5kQW5pbWF0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKaW5kZXggMjY5YmZk
ZDBmNTYwNDMwM2M5N2Q1YzM3N2Y1NGE4MGY5MmNhMTkxOC4uOTVmMTY0MmMzYzdiYjZiYzFlYmI3
MDg4MTMwMjcyMWE2YmEyMGM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCkBAIC00Nyw3ICs0Nyw3
IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwogY2xhc3Mg
Tm9kZTsKLWNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBS
ZW5kZXJTdHlsZTsKIAogZW51bSBTZXRDaGFuZ2VkIHsKQEAgLTY1LDggKzY1LDggQEAgcHVibGlj
OgogICAgIGRvdWJsZSB1cGRhdGVBbmltYXRpb25zKFNldENoYW5nZWQgY2FsbFNldENoYW5nZWQg
PSBEb05vdENhbGxTZXRDaGFuZ2VkKTsKICAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvblRpbWVyKFNl
dENoYW5nZWQgY2FsbFNldENoYW5nZWQgPSBEb05vdENhbGxTZXRDaGFuZ2VkKTsKIAotICAgIENv
bXBvc2l0ZUFuaW1hdGlvbiYgZW5zdXJlQ29tcG9zaXRlQW5pbWF0aW9uKFJlbmRlck9iamVjdCop
OwotICAgIGJvb2wgY2xlYXIoUmVuZGVyT2JqZWN0Kik7CisgICAgQ29tcG9zaXRlQW5pbWF0aW9u
JiBlbnN1cmVDb21wb3NpdGVBbmltYXRpb24oUmVuZGVyRWxlbWVudCopOworICAgIGJvb2wgY2xl
YXIoUmVuZGVyRWxlbWVudCopOwogCiAgICAgdm9pZCB1cGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0
Y2hlckZpcmVkKFRpbWVyPEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlPiopOwogICAgIHZvaWQg
c3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpOwpAQCAtODYsMTQgKzg2LDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZUFuaW1hdGlvbnNGb3JEb2N1bWVudChEb2N1bWVudCop
OwogICAgIHZvaWQgc3RhcnRBbmltYXRpb25zSWZOb3RTdXNwZW5kZWQoRG9jdW1lbnQqKTsKIAot
ICAgIGJvb2wgaXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJPYmplY3QqLCBDU1NQ
cm9wZXJ0eUlELCBib29sIGlzUnVubmluZ05vdykgY29uc3Q7Ci0gICAgYm9vbCBpc1J1bm5pbmdB
Y2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiwgQ1NTUHJvcGVydHlJ
RCwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0OworICAgIGJvb2wgaXNSdW5uaW5nQW5pbWF0aW9u
T25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiwgQ1NTUHJvcGVydHlJRCwgYm9vbCBpc1J1bm5pbmdO
b3cpIGNvbnN0OworICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRl
cmVyKFJlbmRlckVsZW1lbnQqLCBDU1NQcm9wZXJ0eUlELCBib29sIGlzUnVubmluZ05vdykgY29u
c3Q7CiAKLSAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlck9iamVjdCosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgZG91YmxlIHQpOwotICAgIGJvb2wgcGF1c2VUcmFuc2l0aW9u
QXRUaW1lKFJlbmRlck9iamVjdCosIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0KTsK
KyAgICBib29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGRvdWJsZSB0KTsKKyAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGlt
ZShSZW5kZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQpOwogICAg
IHVuc2lnbmVkIG51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhEb2N1bWVudCopIGNvbnN0OwogCi0g
ICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpOworICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGdldEFu
aW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJFbGVtZW50KiByZW5kZXJlcik7CiAKICAgICBk
b3VibGUgYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lKCk7CiAgICAgdm9pZCBzZXRCZWdpbkFuaW1h
dGlvblVwZGF0ZVRpbWUoZG91YmxlIHQpIHsgbV9iZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUgPSB0
OyB9CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhbmltYXRpb25XaWxs
QmVSZW1vdmVkKEFuaW1hdGlvbkJhc2UqKTsKIAotICAgIHZvaWQgdXBkYXRlQW5pbWF0aW9uVGlt
ZXJGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvblRp
bWVyRm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBhbGxvd3NOZXdBbmlt
YXRpb25zV2hpbGVTdXNwZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c05ld0FuaW1hdGlv
bnNXaGlsZVN1c3BlbmRlZDsgfQogICAgIHZvaWQgc2V0QWxsb3dzTmV3QW5pbWF0aW9uc1doaWxl
U3VzcGVuZGVkKGJvb2wpOwpAQCAtMTIwLDkgKzEyMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBm
aXJlRXZlbnRzQW5kVXBkYXRlU3R5bGUoKTsKICAgICB2b2lkIHN0YXJ0VGltZVJlc3BvbnNlKGRv
dWJsZSB0KTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBSZWZQdHI8Q29t
cG9zaXRlQW5pbWF0aW9uPiA+IFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDsKLQotICAgIFJlbmRl
ck9iamVjdEFuaW1hdGlvbk1hcCBtX2NvbXBvc2l0ZUFuaW1hdGlvbnM7CisgICAgSGFzaE1hcDxS
ZW5kZXJFbGVtZW50KiwgUmVmUHRyPENvbXBvc2l0ZUFuaW1hdGlvbj4+IG1fY29tcG9zaXRlQW5p
bWF0aW9uczsKICAgICBUaW1lcjxBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4gbV9hbmltYXRp
b25UaW1lcjsKICAgICBUaW1lcjxBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4gbV91cGRhdGVT
dHlsZUlmTmVlZGVkRGlzcGF0Y2hlcjsKICAgICBGcmFtZSYgbV9mcmFtZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApp
bmRleCA1NzUwNGU2NWQ2MjRjOGUzMDIwN2UzYzk2NTUwMmU4NDJmMWI3MWUyLi4yN2I2NDgzNzBi
YWY0NGU5MDcxYjVlZTE2MDgwYTQ3Y2YwNTYyNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBAIC0yODIsMTEg
KzI4Miw4IEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBjcm9zc2ZhZGVC
bGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgU3R5bGVDCiAgICAgaWYgKHByb2dyZXNzID09IDEp
CiAgICAgICAgIHJldHVybiB0b1N0eWxlSW1hZ2U7CiAKLSAgICBDYWNoZWRJbWFnZSogZnJvbUNh
Y2hlZEltYWdlID0gc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihmcm9tU3R5bGVJbWFnZS0+ZGF0
YSgpKTsKLSAgICBDYWNoZWRJbWFnZSogdG9DYWNoZWRJbWFnZSA9IHN0YXRpY19jYXN0PENhY2hl
ZEltYWdlKj4odG9TdHlsZUltYWdlLT5kYXRhKCkpOwotCi0gICAgUmVmUHRyPENTU0ltYWdlVmFs
dWU+IGZyb21JbWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKGZyb21DYWNoZWRJbWFn
ZS0+dXJsKCksIGZyb21TdHlsZUltYWdlKTsKLSAgICBSZWZQdHI8Q1NTSW1hZ2VWYWx1ZT4gdG9J
bWFnZVZhbHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHRvQ2FjaGVkSW1hZ2UtPnVybCgpLCB0
b1N0eWxlSW1hZ2UpOworICAgIFJlZlB0cjxDU1NJbWFnZVZhbHVlPiBmcm9tSW1hZ2VWYWx1ZSA9
IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShmcm9tU3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+dXJs
KCksIGZyb21TdHlsZUltYWdlKTsKKyAgICBSZWZQdHI8Q1NTSW1hZ2VWYWx1ZT4gdG9JbWFnZVZh
bHVlID0gQ1NTSW1hZ2VWYWx1ZTo6Y3JlYXRlKHRvU3R5bGVJbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+
dXJsKCksIHRvU3R5bGVJbWFnZSk7CiAgICAgUmVmUHRyPENTU0Nyb3NzZmFkZVZhbHVlPiBjcm9z
c2ZhZGVWYWx1ZSA9IENTU0Nyb3NzZmFkZVZhbHVlOjpjcmVhdGUoZnJvbUltYWdlVmFsdWUsIHRv
SW1hZ2VWYWx1ZSk7CiAKICAgICBjcm9zc2ZhZGVWYWx1ZS0+c2V0UGVyY2VudGFnZShDU1NQcmlt
aXRpdmVWYWx1ZTo6Y3JlYXRlKHByb2dyZXNzLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRl
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFu
aW1hdGlvbi5jcHAKaW5kZXggOWNiZDFjNTM3MGNhMjM2MTZiMTBiMmI5MzM3ZTE5ZWFlYzVlY2Y0
MS4uNThkMjcxOWRjNmZkM2NmZDZlZTVlNGJiODMyOTMzMzVkYTJkOTg1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3BwCkBA
IC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSW1wbGljaXRBbmltYXRpb24uaCIKICNpbmNsdWRl
ICJLZXlmcmFtZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTgwLDcgKzgw
LDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OmNsZWFyUmVuZGVyZXIoKQogICAgIH0KIH0K
IAotdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZVRyYW5zaXRpb25zKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJn
ZXRTdHlsZSkKK3ZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5
bGUqIHRhcmdldFN0eWxlKQogewogICAgIC8vIElmIGN1cnJlbnRTdHlsZSBpcyBudWxsIG9yIHRo
ZXJlIGFyZSBubyBvbGQgb3IgbmV3IHRyYW5zaXRpb25zLCBqdXN0IHNraXAgaXQKICAgICBpZiAo
IWN1cnJlbnRTdHlsZSB8fCAoIXRhcmdldFN0eWxlLT50cmFuc2l0aW9ucygpICYmIG1fdHJhbnNp
dGlvbnMuaXNFbXB0eSgpKSkKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIENvbXBvc2l0ZUFuaW1h
dGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyU3R5
bGUqCiAgICAgICAgIG1fdHJhbnNpdGlvbnMucmVtb3ZlKHRvQmVSZW1vdmVkW2pdKTsKIH0KIAot
dm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJP
YmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSog
dGFyZ2V0U3R5bGUpCit2b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlS2V5ZnJhbWVBbmlt
YXRpb25zKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxl
LCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpCiB7CiAgICAgLy8gTm90aGluZyB0byBkbyBpZiB3
ZSBkb24ndCBoYXZlIGFueSBhbmltYXRpb25zLCBhbmQgZGlkbid0IGhhdmUgYW55IGJlZm9yZQog
ICAgIGlmIChtX2tleWZyYW1lQW5pbWF0aW9ucy5pc0VtcHR5KCkgJiYgIXRhcmdldFN0eWxlLT5o
YXNBbmltYXRpb25zKCkpCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRp
b246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5k
ZXIKICAgICAgICAgbV9rZXlmcmFtZUFuaW1hdGlvbnMucmVtb3ZlKGFuaW1zVG9CZVJlbW92ZWRb
al0pOwogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDb21wb3NpdGVBbmltYXRpb246OmFu
aW1hdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
UmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ29tcG9z
aXRlQW5pbWF0aW9uOjphbmltYXRlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBSZW5kZXJTdHls
ZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpCiB7CiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiByZXN1bHRTdHlsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uaAppbmRleCA0ZjQ5MTkwNzBjMzI0N2JiMzg3
MGQ3Y2ZmOWEyNWIxY2I5ZDZkN2Y5Li4xNWU5MDUzNTViNThlZWZkZGNlNWQyMjUzZmVlMTU5NTU1
N2FiN2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3Np
dGVBbmltYXRpb24uaApAQCAtMzksMTEgKzM5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU7CiBjbGFzcyBBbmltYXRpb25Db250cm9s
bGVyOwotY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJl
bmRlclN0eWxlOwogCiAvLyBBIENvbXBvc2l0ZUFuaW1hdGlvbiByZXByZXNlbnRzIGEgY29sbGVj
dGlvbiBvZiBhbmltYXRpb25zIHRoYXQgYXJlIHJ1bm5pbmcKLS8vIG9uIGEgc2luZ2xlIFJlbmRl
ck9iamVjdCwgc3VjaCBhcyBhIG51bWJlciBvZiBwcm9wZXJ0aWVzIHRyYW5zaXRpb25pbmcgYXQg
b25jZS4KKy8vIG9uIGEgc2luZ2xlIFJlbmRlckVsZW1lbnQsIHN1Y2ggYXMgYSBudW1iZXIgb2Yg
cHJvcGVydGllcyB0cmFuc2l0aW9uaW5nIGF0IG9uY2UuCiBjbGFzcyBDb21wb3NpdGVBbmltYXRp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxDb21wb3NpdGVBbmltYXRpb24+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDb21wb3NpdGVBbmltYXRpb24+IGNyZWF0ZShBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZSogYW5pbWF0aW9uQ29udHJvbGxlcikKQEAgLTU1LDcgKzU1LDcgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgY2xlYXJSZW5kZXJlcigpOwogCi0gICAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gYW5pbWF0ZShSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSogY3VycmVu
dFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpOworICAgIFBhc3NSZWZQdHI8UmVuZGVy
U3R5bGU+IGFuaW1hdGUoUmVuZGVyRWxlbWVudCosIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUs
IFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSk7CiAgICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
Z2V0QW5pbWF0ZWRTdHlsZSgpIGNvbnN0OwogCiAgICAgZG91YmxlIHRpbWVUb05leHRTZXJ2aWNl
KCkgY29uc3Q7CkBAIC04Miw4ICs4Miw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQ29tcG9z
aXRlQW5pbWF0aW9uKEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlKik7CiAKLSAgICB2b2lkIHVw
ZGF0ZVRyYW5zaXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUs
IFJlbmRlclN0eWxlKiB0YXJnZXRTdHlsZSk7Ci0gICAgdm9pZCB1cGRhdGVLZXlmcmFtZUFuaW1h
dGlvbnMoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5
bGUqIHRhcmdldFN0eWxlKTsKKyAgICB2b2lkIHVwZGF0ZVRyYW5zaXRpb25zKFJlbmRlckVsZW1l
bnQqLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUp
OworICAgIHZvaWQgdXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRlckVsZW1lbnQqLCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpOwogICAgIAog
ICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gPiBDU1NQ
cm9wZXJ0eVRyYW5zaXRpb25zTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJ
bXBsKiwgUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiA+ICBBbmltYXRpb25OYW1lTWFwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3Bw
CmluZGV4IDM2OGJjNTg3Y2NjM2EzNTlmMjRmNDE1ZTlhYTYwZmJhZGMzMzIxMzUuLmYzNDQ2ODg0
NjcyZjg1ODM2MzUxNTZkYmMxNjkzNDY1ZTk3NmU5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbXBsaWNpdEFuaW1hdGlvbjo6SW1wbGljaXRB
bmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBDU1NQcm9wZXJ0eUlEIGFuaW1h
dGluZ1Byb3BlcnR5LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBDb21wb3NpdGVBbmltYXRpb24q
IGNvbXBBbmltLCBSZW5kZXJTdHlsZSogZnJvbVN0eWxlKQorSW1wbGljaXRBbmltYXRpb246Oklt
cGxpY2l0QW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgQ1NTUHJvcGVydHlJ
RCBhbmltYXRpbmdQcm9wZXJ0eSwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENvbXBvc2l0ZUFu
aW1hdGlvbiogY29tcEFuaW0sIFJlbmRlclN0eWxlKiBmcm9tU3R5bGUpCiAgICAgOiBBbmltYXRp
b25CYXNlKHRyYW5zaXRpb24sIHJlbmRlcmVyLCBjb21wQW5pbSkKICAgICAsIG1fdHJhbnNpdGlv
blByb3BlcnR5KHRyYW5zaXRpb24ucHJvcGVydHkoKSkKICAgICAsIG1fYW5pbWF0aW5nUHJvcGVy
dHkoYW5pbWF0aW5nUHJvcGVydHkpCkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgSW1wbGljaXRBbmlt
YXRpb246OnNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVyKERvY3VtZW50OjpMaXN0ZW5lclR5cGUg
aW5MaXN0CiAgICAgcmV0dXJuIG1fb2JqZWN0LT5kb2N1bWVudCgpLmhhc0xpc3RlbmVyVHlwZShp
bkxpc3RlbmVyVHlwZSk7CiB9CiAKLXZvaWQgSW1wbGljaXRBbmltYXRpb246OmFuaW1hdGUoQ29t
cG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBSZW5k
ZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUp
Cit2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJl
bmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiB0YXJnZXRTdHls
ZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkKIHsKICAgICAvLyBJZiB3ZSBn
ZXQgdGhpcyBmYXIgYW5kIHRoZSBhbmltYXRpb24gaXMgZG9uZSwgaXQgbWVhbnMgd2UgYXJlIGNs
ZWFuaW5nIHVwIGEganVzdCBmaW5pc2hlZCBhbmltYXRpb24uCiAgICAgLy8gU28ganVzdCByZXR1
cm4uIEV2ZXJ5dGhpbmcgaXMgYWxyZWFkeSBhbGwgY2xlYW5lZCB1cC4KQEAgLTEyNSw3ICsxMjUs
NyBAQCB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbihkb3VibGUgdGltZU9m
ZnNldCkKICNlbmRpZgogICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsICh1bmFuaW1hdGVkKSBz
dHlsZQogICAgIGlmICghcGF1c2VkKCkpCi0gICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9v
YmplY3QtPm5vZGUoKSk7CisgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMobV9vYmplY3QtPmVs
ZW1lbnQoKSk7CiB9CiAKIHZvaWQgSW1wbGljaXRBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCkBA
IC0xNjAsOSArMTYwLDcgQEAgYm9vbCBJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25F
dmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgZG91YmwKICAgICAgICAgICAgIFN0
cmluZyBwcm9wZXJ0eU5hbWUgPSBnZXRQcm9wZXJ0eU5hbWVTdHJpbmcobV9hbmltYXRpbmdQcm9w
ZXJ0eSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBEaXNwYXRjaCB0aGUgZXZl
bnQKLSAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gMDsKLSAgICAgICAgICAg
IGlmIChtX29iamVjdC0+bm9kZSgpICYmIG1fb2JqZWN0LT5ub2RlKCktPmlzRWxlbWVudE5vZGUo
KSkKLSAgICAgICAgICAgICAgICBlbGVtZW50ID0gdG9FbGVtZW50KG1fb2JqZWN0LT5ub2RlKCkp
OworICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBtX29iamVjdC0+ZWxlbWVu
dCgpOwogCiAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwgIWVsZW1lbnQtPmRvY3VtZW50
KCkuaW5QYWdlQ2FjaGUoKSk7CiAgICAgICAgICAgICBpZiAoIWVsZW1lbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaAppbmRleCBlZGY4
YTgxNWI0MDYxMzUwMGQ3OTNkNDkwZmU2OTI3NTI4NTgzYmVhLi5iZjQ3MWNlNzA2NDAyMGE4ZThj
NjA1YWJhNjg5ZjM0MGYzNTExZmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5p
bWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKQEAgLTM1LDExICszNSwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CisKIC8vIEFuIEltcGxpY2l0QW5p
bWF0aW9uIHRyYWNrcyB0aGUgc3RhdGUgb2YgYSB0cmFuc2l0aW9uIG9mIGEgc3BlY2lmaWMgQ1NT
IHByb3BlcnR5Ci0vLyBmb3IgYSBzaW5nbGUgUmVuZGVyT2JqZWN0LgorLy8gZm9yIGEgc2luZ2xl
IFJlbmRlckVsZW1lbnQuCiBjbGFzcyBJbXBsaWNpdEFuaW1hdGlvbiA6IHB1YmxpYyBBbmltYXRp
b25CYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbXBsaWNpdEFuaW1hdGlv
bj4gY3JlYXRlKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBDU1NQcm9wZXJ0eUlEIGFuaW1h
dGluZ1Byb3BlcnR5LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBDb21wb3NpdGVBbmltYXRpb24q
IGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyU3R5bGUqIGZyb21TdHlsZSkKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJbXBsaWNpdEFuaW1hdGlvbj4gY3JlYXRlKGNvbnN0IEFuaW1hdGlvbiYgYW5p
bWF0aW9uLCBDU1NQcm9wZXJ0eUlEIGFuaW1hdGluZ1Byb3BlcnR5LCBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVBbmltYXRpb24sIFJlbmRlclN0
eWxlKiBmcm9tU3R5bGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltcGxp
Y2l0QW5pbWF0aW9uKGFuaW1hdGlvbiwgYW5pbWF0aW5nUHJvcGVydHksIHJlbmRlcmVyLCBjb21w
b3NpdGVBbmltYXRpb24sIGZyb21TdHlsZSkpOwogICAgIH07CkBAIC01Miw3ICs1NCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGF1c2VBbmltYXRpb24oZG91YmxlIC8qdGltZU9mZnNl
dCovKTsKICAgICB2aXJ0dWFsIHZvaWQgZW5kQW5pbWF0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5k
ZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxS
ZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpOworICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKENv
bXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSogY3Vy
cmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxSZW5kZXJTdHlsZT4m
IGFuaW1hdGVkU3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBbmltYXRlZFN0eWxlKFJlZlB0
cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCByZXNldChS
ZW5kZXJTdHlsZSogdG8pOwogCkBAIC04Miw3ICs4NCw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgog
CiBwcml2YXRlOgotICAgIEltcGxpY2l0QW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYsIENTU1By
b3BlcnR5SUQsIFJlbmRlck9iamVjdCosIENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlclN0eWxl
Kik7CisgICAgSW1wbGljaXRBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiwgQ1NTUHJvcGVydHlJ
RCwgUmVuZGVyRWxlbWVudCosIENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlclN0eWxlKik7CiAg
ICAgdmlydHVhbCB+SW1wbGljaXRBbmltYXRpb24oKTsKIAogICAgIENTU1Byb3BlcnR5SUQgbV90
cmFuc2l0aW9uUHJvcGVydHk7IC8vIFRyYW5zaXRpb24gcHJvcGVydHkgYXMgc3BlY2lmaWVkIGlu
IHRoZSBSZW5kZXJTdHlsZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0tleWZyYW1lQW5pbWF0aW9uLmNwcAppbmRleCBiYWYyZmU0N2Y4MTczNjhmNjU3MjhhNzlmMDVl
YzAwNTA3OTRiOWEyLi4yN2M1MTQzYjVjMzg4YTkzNjBjZDI2ODc2NDllMTE4NWYyNTM3YjBjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRp
b24uY3BwCkBAIC00MiwxNiArNDIsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1LZXlmcmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRpb24oY29u
c3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGludCBpbmRl
eCwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRT
dHlsZSkKK0tleWZyYW1lQW5pbWF0aW9uOjpLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRp
b24mIGFuaW1hdGlvbiwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGludCBpbmRleCwgQ29tcG9z
aXRlQW5pbWF0aW9uKiBjb21wQW5pbSwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSkKICAg
ICA6IEFuaW1hdGlvbkJhc2UoYW5pbWF0aW9uLCByZW5kZXJlciwgY29tcEFuaW0pCi0gICAgLCBt
X2tleWZyYW1lcyhyZW5kZXJlciwgYW5pbWF0aW9uLm5hbWUoKSkKKyAgICAsIG1fa2V5ZnJhbWVz
KGFuaW1hdGlvbi5uYW1lKCkpCiAgICAgLCBtX2luZGV4KGluZGV4KQogICAgICwgbV9zdGFydEV2
ZW50RGlzcGF0Y2hlZChmYWxzZSkKICAgICAsIG1fdW5hbmltYXRlZFN0eWxlKHVuYW5pbWF0ZWRT
dHlsZSkKIHsKICAgICAvLyBHZXQgdGhlIGtleWZyYW1lIFJlbmRlclN0eWxlcwotICAgIGlmICht
X29iamVjdCAmJiBtX29iamVjdC0+bm9kZSgpICYmIG1fb2JqZWN0LT5ub2RlKCktPmlzRWxlbWVu
dE5vZGUoKSkKLSAgICAgICAgbV9vYmplY3QtPmRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZl
cigpLmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKHRvRWxlbWVudChtX29iamVjdC0+bm9kZSgp
KSwgdW5hbmltYXRlZFN0eWxlLCBtX2tleWZyYW1lcyk7CisgICAgaWYgKG1fb2JqZWN0ICYmIG1f
b2JqZWN0LT5lbGVtZW50KCkpCisgICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLmVuc3VyZVN0
eWxlUmVzb2x2ZXIoKS5rZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihtX29iamVjdC0+ZWxlbWVu
dCgpLCB1bmFuaW1hdGVkU3R5bGUsIG1fa2V5ZnJhbWVzKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUg
bV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RWYWxpZCBmbGFnIGJhc2VkIG9uIHdoZXRoZXIgdGhlIGZ1
bmN0aW9uIGxpc3RzIGluIHRoZSBrZXlmcmFtZXMgbWF0Y2guCiAgICAgdmFsaWRhdGVUcmFuc2Zv
cm1GdW5jdGlvbkxpc3QoKTsKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEtleWZyYW1lQW5pbWF0
aW9uOjpmZXRjaEludGVydmFsRW5kcG9pbnRzRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eQogICAgIHByb2cgPSBwcm9ncmVzcyhzY2FsZSwgb2Zmc2V0LCB0aW1pbmdGdW5jdGlvbik7
CiB9CiAKLXZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9u
KiBjb21wb3NpdGVBbmltYXRpb24sIFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlclN0eWxlKiwg
UmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0
eWxlKQordm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24q
IGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiwg
UmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0
eWxlKQogewogICAgIC8vIEZpcmUgdGhlIHN0YXJ0IHRpbWVvdXQgaWYgbmVlZGVkCiAgICAgZmly
ZUFuaW1hdGlvbkV2ZW50c0lmTmVlZGVkKCk7CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBLZXlm
cmFtZUFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5kaWYK
ICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAo
IXBhdXNlZCgpKQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkp
OworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5lbGVtZW50KCkpOwogfQog
CiB2b2lkIEtleWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24oKQpAQCAtMjY1LDcgKzI2NSw3
IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1hdGlvbigpCiAjZW5kaWYKICAgICAv
LyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBpZiAoIXBhdXNl
ZCgpKQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2RlKCkpOworICAg
ICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5lbGVtZW50KCkpOwogfQogCiBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjpzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6
TGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QKQEAgLTMwOSw5ICszMDksNyBAQCBib29s
IEtleWZyYW1lQW5pbWF0aW9uOjpzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIGRvdWJsZQogCiAgICAgaWYgKHNob3VsZFNlbmRFdmVudEZvckxpc3RlbmVy
KGxpc3RlbmVyVHlwZSkpIHsKICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50Ci0gICAgICAg
IFJlZlB0cjxFbGVtZW50PiBlbGVtZW50OwotICAgICAgICBpZiAobV9vYmplY3QtPm5vZGUoKSAm
JiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAgICAgICBlbGVtZW50
ID0gdG9FbGVtZW50KG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4g
ZWxlbWVudCA9IG1fb2JqZWN0LT5lbGVtZW50KCk7CiAKICAgICAgICAgQVNTRVJUKCFlbGVtZW50
IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpOwogICAgICAgICBpZiAoIWVs
ZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFt
ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmlt
YXRpb24uaAppbmRleCBiMjE1ZDkyY2I2NDEyNzZhMzJmODA3ZGYzZTZkOWQ1OTVhOTUwZjQwLi40
OTRmMTFmNTM5NDkxMmUyYTg0YjYzZjI4Yzg1MzEwNmJlZGVkYzM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKQEAgLTM3LDE3ICsz
NywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlbmRlclN0eWxlOwogCi0vLyBB
IEtleWZyYW1lQW5pbWF0aW9uIHRyYWNrcyB0aGUgc3RhdGUgb2YgYW4gZXhwbGljaXQgYW5pbWF0
aW9uCi0vLyBmb3IgYSBzaW5nbGUgUmVuZGVyT2JqZWN0LgotY2xhc3MgS2V5ZnJhbWVBbmltYXRp
b24gOiBwdWJsaWMgQW5pbWF0aW9uQmFzZSB7CisvLyBBIEtleWZyYW1lQW5pbWF0aW9uIHRyYWNr
cyB0aGUgc3RhdGUgb2YgYW4gZXhwbGljaXQgYW5pbWF0aW9uIGZvciBhIHNpbmdsZSBSZW5kZXJF
bGVtZW50LgorY2xhc3MgS2V5ZnJhbWVBbmltYXRpb24gRklOQUwgOiBwdWJsaWMgQW5pbWF0aW9u
QmFzZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8S2V5ZnJhbWVBbmltYXRpb24+
IGNyZWF0ZShjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgaW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVu
ZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxLZXlmcmFt
ZUFuaW1hdGlvbj4gY3JlYXRlKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgaW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFu
aW1hdGlvbiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCByZW5kZXJlciwg
aW5kZXgsIGNvbXBvc2l0ZUFuaW1hdGlvbiwgdW5hbmltYXRlZFN0eWxlKSk7CiAgICAgfTsKIAot
ICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlck9iamVj
dCosIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRT
dHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSk7Ci0gICAgdmlydHVhbCB2
b2lkIGdldEFuaW1hdGVkU3R5bGUoUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSk7
CisgICAgdmlydHVhbCB2b2lkIGFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyRWxl
bWVudCosIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJn
ZXRTdHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldEFuaW1hdGVkU3R5bGUoUmVmUHRyPFJlbmRlclN0eWxlPiYpIE9W
RVJSSURFOwogCiAgICAgY29uc3QgS2V5ZnJhbWVMaXN0JiBrZXlmcmFtZXMoKSBjb25zdCB7IHJl
dHVybiBtX2tleWZyYW1lczsgfQogCkBAIC02MCwyMyArNTksMjMgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0VW5hbmltYXRlZFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlKSB7IG1f
dW5hbmltYXRlZFN0eWxlID0gc3R5bGU7IH0KICAgICBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0
eWxlKCkgY29uc3QgeyByZXR1cm4gbV91bmFuaW1hdGVkU3R5bGUuZ2V0KCk7IH0KIAotICAgIHZp
cnR1YWwgZG91YmxlIHRpbWVUb05leHRTZXJ2aWNlKCk7CisgICAgdmlydHVhbCBkb3VibGUgdGlt
ZVRvTmV4dFNlcnZpY2UoKSBPVkVSUklERTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9p
ZCBvbkFuaW1hdGlvblN0YXJ0KGRvdWJsZSBlbGFwc2VkVGltZSk7Ci0gICAgdmlydHVhbCB2b2lk
IG9uQW5pbWF0aW9uSXRlcmF0aW9uKGRvdWJsZSBlbGFwc2VkVGltZSk7Ci0gICAgdmlydHVhbCB2
b2lkIG9uQW5pbWF0aW9uRW5kKGRvdWJsZSBlbGFwc2VkVGltZSk7Ci0gICAgdmlydHVhbCBib29s
IHN0YXJ0QW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGF1
c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpOwotICAgIHZpcnR1YWwgdm9pZCBlbmRBbmlt
YXRpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25BbmltYXRpb25TdGFydChkb3VibGUgZWxhcHNl
ZFRpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvbkFuaW1hdGlvbkl0ZXJhdGlvbihk
b3VibGUgZWxhcHNlZFRpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvbkFuaW1hdGlv
bkVuZChkb3VibGUgZWxhcHNlZFRpbWUpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzdGFy
dEFuaW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZW5kQW5pbWF0aW9uKCkgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb3ZlcnJp
ZGVBbmltYXRpb25zKCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc3VtZU92ZXJyaWRkZW5BbmltYXRp
b25zKCk7CisgICAgdmlydHVhbCB2b2lkIG92ZXJyaWRlQW5pbWF0aW9ucygpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCByZXN1bWVPdmVycmlkZGVuQW5pbWF0aW9ucygpIE9WRVJSSURFOwog
CiAgICAgYm9vbCBzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJU
eXBlIGluTGlzdGVuZXJUeXBlKSBjb25zdDsKICAgICBib29sIHNlbmRBbmltYXRpb25FdmVudChj
b25zdCBBdG9taWNTdHJpbmcmLCBkb3VibGUgZWxhcHNlZFRpbWUpOwogCi0gICAgdmlydHVhbCBi
b29sIGFmZmVjdHNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgYWZmZWN0c1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
dm9pZCB2YWxpZGF0ZVRyYW5zZm9ybUZ1bmN0aW9uTGlzdCgpOwogI2lmIEVOQUJMRShDU1NfRklM
VEVSUykKQEAgLTg0LDcgKzgzLDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0g
ICAgS2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiwgUmVuZGVyT2JqZWN0KiwgaW50
IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJTdHlsZSogdW5hbmltYXRlZFN0eWxl
KTsKKyAgICBLZXlmcmFtZUFuaW1hdGlvbihjb25zdCBBbmltYXRpb24mLCBSZW5kZXJFbGVtZW50
KiwgaW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJTdHlsZSogdW5hbmltYXRl
ZFN0eWxlKTsKICAgICB2aXJ0dWFsIH5LZXlmcmFtZUFuaW1hdGlvbigpOwogICAgIAogICAgIC8v
IEdldCB0aGUgc3R5bGVzIGZvciB0aGUgZ2l2ZW4gcHJvcGVydHkgc3Vycm91bmRpbmcgdGhlIGN1
cnJlbnQgYW5pbWF0aW9uIHRpbWUgYW5kIHRoZSBwcm9ncmVzcyBiZXR3ZWVuIHRoZW0uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KaW5kZXggOTA2MmNiMWM3MTUy
ZTQ2OWE0MGQ1NDEyNDIzNzI4MGMyYjhmNTMyNS4uOGVjOTU2MGNkNzRlMTQzMGU5NGNkZGEwNDQ3
NzdhMjkyMDBlNWI4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRI
YW5kbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpmb2N1c0RvY3VtZW50
VmlldygpCiBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1dpZGdldE1vdXNlRG93bkV2ZW50VG9XaWRn
ZXQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7CiAgICAgLy8g
RmlndXJlIG91dCB3aGljaCB2aWV3IHRvIHNlbmQgdGhlIGV2ZW50IHRvLgotICAgIFJlbmRlck9i
amVjdCogdGFyZ2V0ID0gZXZlbnQudGFyZ2V0Tm9kZSgpID8gZXZlbnQudGFyZ2V0Tm9kZSgpLT5y
ZW5kZXJlcigpIDogMDsKKyAgICBhdXRvIHRhcmdldCA9IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2
ZW50LnRhcmdldE5vZGUoKS0+cmVuZGVyZXIoKSA6IDA7CiAgICAgaWYgKCF0YXJnZXQgfHwgIXRh
cmdldC0+aXNXaWRnZXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMzU2LDcg
KzM1Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUo
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgICAgICAgICBOb2RlKiBub2Rl
ID0gZXZlbnQudGFyZ2V0Tm9kZSgpOwogICAgICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBub2RlLT5yZW5kZXJlcigpOworICAgICAgICAgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7CiAgICAgICAgICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNXaWRn
ZXQoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBXaWRnZXQq
IHdpZGdldCA9IHRvUmVuZGVyV2lkZ2V0KHJlbmRlcmVyKS0+d2lkZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tCmluZGV4IDRjODg2ZWJk
NDY0M2RiZTUzNDE2N2QwNmQ5MzFlY2MxNWIwMmY5YWEuLjI5ZWM3N2UxNGZlNDgxMmVjZjdjYWJm
M2QxZjk3NTI5ZmFlZmFhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0Zy
YW1lU25hcHNob3R0aW5nTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0ZyYW1l
U25hcHNob3R0aW5nTWFjLm1tCkBAIC0xMzUsNyArMTM1LDcgQEAgTlNJbWFnZSogc25hcHNob3RE
cmFnSW1hZ2UoRnJhbWUqIGZyYW1lLCBOb2RlKiBub2RlLCBOU1JlY3QqIGltYWdlUmVjdCwgTlNS
ZWN0KgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltcGx5IG5l
dyBzdHlsZXMsIHBsdXMgSlMgY291bGQgaGF2ZSBjaGFuZ2VkIG90aGVyIHRoaW5ncwogCiAKLSAg
ICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdp
bmFsIFJlbmRlck9iamVjdC4KKyAgICAvLyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZl
IGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIFJlbmRlckVsZW1lbnQuCiAgICAgcmVuZGVyZXIgPSBu
b2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBuaWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvTWVkaWFQ
bGF5ZXJQcml2YXRlUVRLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KaW5kZXggMGM4NGY4YTk4MjU5MWI3MzQ4ZTlm
MjBhNDY2MzUyMWQ1MGRiN2I5ZS4uZjkzNTFhNzBhY2ZlZTFhNGZhMzkxMDIxOTIxZTJkNzA2NThi
MzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01l
ZGlhUGxheWVyUHJpdmF0ZVFUS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQpAQCAtNTIsOCArNTIsOCBAQAog
I2lmIERSQVdfRlJBTUVfUkFURQogI2ltcG9ydCAiRm9udC5oIgogI2ltcG9ydCAiRG9jdW1lbnQu
aCIKLSNpbXBvcnQgIlJlbmRlck9iamVjdC5oIgogI2ltcG9ydCAiUmVuZGVyU3R5bGUuaCIKKyNp
bXBvcnQgIlJlbmRlclZpZXcuaCIKICNlbmRpZgogCiBTT0ZUX0xJTktfRlJBTUVXT1JLKFFUS2l0
KQpAQCAtMTM1MiwxMCArMTM1MiwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVFUS2l0Ojpw
YWludChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHIpCiAjaWYgRFJB
V19GUkFNRV9SQVRFCiAgICAgLy8gRHJhdyB0aGUgZnJhbWUgcmF0ZSBvbmx5IGFmdGVyIGhhdmlu
ZyBwbGF5ZWQgbW9yZSB0aGFuIDEwIGZyYW1lcy4KICAgICBpZiAobV9mcmFtZUNvdW50V2hpbGVQ
bGF5aW5nID4gMTApIHsKLSAgICAgICAgRnJhbWUqIGZyYW1lID0gbV9wbGF5ZXItPmZyYW1lVmll
dygpID8gJm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IE5VTEw7Ci0gICAgICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3VtZW50KCkgOiBOVUxMOwotICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+cmVuZGVy
VmlldygpIDogTlVMTDsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlVG9Vc2UgPSByZW5kZXJl
ciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogTlVMTDsKKyAgICAgICAgRnJhbWUqIGZyYW1lID0gbV9w
bGF5ZXItPmZyYW1lVmlldygpID8gJm1fcGxheWVyLT5mcmFtZVZpZXcoKS0+ZnJhbWUoKSA6IG51
bGxwdHI7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lID8gZnJhbWUtPmRvY3Vt
ZW50KCkgOiBudWxscHRyOworICAgICAgICBhdXRvIHJlbmRlcmVyID0gZG9jdW1lbnQgPyBkb2N1
bWVudC0+cmVuZGVyVmlldygpIDogbnVsbHB0cjsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxl
VG9Vc2UgPSByZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpIDogbnVsbHB0cjsKICAgICAgICAg
aWYgKHN0eWxlVG9Vc2UpIHsKICAgICAgICAgICAgIGRvdWJsZSBmcmFtZVJhdGUgPSAobV9mcmFt
ZUNvdW50V2hpbGVQbGF5aW5nIC0gMSkgLyAoIG1fc3RhcnRlZFBsYXlpbmcgPyAoW05TRGF0ZSB0
aW1lSW50ZXJ2YWxTaW5jZVJlZmVyZW5jZURhdGVdIC0gbV90aW1lU3RhcnRlZFBsYXlpbmcpIDoK
ICAgICAgICAgICAgICAgICAobV90aW1lU3RvcHBlZFBsYXlpbmcgLSBtX3RpbWVTdGFydGVkUGxh
eWluZykgKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9k
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwCmluZGV4IDA5
ZjAxNzVlNTgzZmMyZTA5OTk3ZDQ4YTAwOGRkMDU1NzY1Zjc5ZDkuLmJmMWFkOTFlYmY4YmUyZTY4
NzBhZTU0OTE3N2FmZDlmNmNhN2Y2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9Db3VudGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50
ZXJOb2RlLmNwcApAQCAtMjMsMTIgKzIzLDEyIEBACiAjaW5jbHVkZSAiQ291bnRlck5vZGUuaCIK
IAogI2luY2x1ZGUgIlJlbmRlckNvdW50ZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
KyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1Db3VudGVyTm9kZTo6Q291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiBv
LCBib29sIGhhc1Jlc2V0VHlwZSwgaW50IHZhbHVlKQorQ291bnRlck5vZGU6OkNvdW50ZXJOb2Rl
KFJlbmRlckVsZW1lbnQqIG8sIGJvb2wgaGFzUmVzZXRUeXBlLCBpbnQgdmFsdWUpCiAgICAgOiBt
X2hhc1Jlc2V0VHlwZShoYXNSZXNldFR5cGUpCiAgICAgLCBtX3ZhbHVlKHZhbHVlKQogICAgICwg
bV9jb3VudEluUGFyZW50KDApCkBAIC05MCw3ICs5MCw3IEBAIENvdW50ZXJOb2RlOjp+Q291bnRl
ck5vZGUoKQogICAgIHJlc2V0UmVuZGVyZXJzKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q291bnRlck5v
ZGU+IENvdW50ZXJOb2RlOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiBvd25lciwgYm9vbCBoYXNSZXNl
dFR5cGUsIGludCB2YWx1ZSkKK1Bhc3NSZWZQdHI8Q291bnRlck5vZGU+IENvdW50ZXJOb2RlOjpj
cmVhdGUoUmVuZGVyRWxlbWVudCogb3duZXIsIGJvb2wgaGFzUmVzZXRUeXBlLCBpbnQgdmFsdWUp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDb3VudGVyTm9kZShvd25lciwgaGFzUmVzZXRU
eXBlLCB2YWx1ZSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Nv
dW50ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuaAppbmRl
eCA3ZDZkZWY4MWJkYjdiN2EzNmE5N2MwY2IwYzNiZTkxZTUxOWIyZGQ4Li5hNTM5N2VjYzAxODgz
YmZjNWYwMzAwNDFlZmNhOTRhMmQzYTdkOTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvQ291bnRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291
bnRlck5vZGUuaApAQCAtMzcsMTggKzM3LDE4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyQ291bnRlcjsKK2NsYXNzIFJlbmRlckVs
ZW1lbnQ7CiAKIGNsYXNzIENvdW50ZXJOb2RlIDogcHVibGljIFJlZkNvdW50ZWQ8Q291bnRlck5v
ZGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDb3VudGVyTm9kZT4gY3JlYXRl
KFJlbmRlck9iamVjdCosIGJvb2wgaXNSZXNldCwgaW50IHZhbHVlKTsKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxDb3VudGVyTm9kZT4gY3JlYXRlKFJlbmRlckVsZW1lbnQqLCBib29sIGlzUmVzZXQs
IGludCB2YWx1ZSk7CiAgICAgfkNvdW50ZXJOb2RlKCk7CiAgICAgYm9vbCBhY3RzQXNSZXNldCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUmVzZXRUeXBlIHx8ICFtX3BhcmVudDsgfQogICAgIGJvb2wg
aGFzUmVzZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZXNldFR5cGU7IH0KICAgICBpbnQg
dmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAgaW50IGNvdW50SW5QYXJlbnQo
KSBjb25zdCB7IHJldHVybiBtX2NvdW50SW5QYXJlbnQ7IH0KLSAgICBSZW5kZXJPYmplY3QqIG93
bmVyKCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQorICAgIFJlbmRlckVsZW1lbnQqIG93bmVy
KCkgY29uc3QgeyByZXR1cm4gbV9vd25lcjsgfQogICAgIHZvaWQgYWRkUmVuZGVyZXIoUmVuZGVy
Q291bnRlciopOwogICAgIHZvaWQgcmVtb3ZlUmVuZGVyZXIoUmVuZGVyQ291bnRlciopOwogCkBA
IC03MSw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZUNoaWxkKENvdW50ZXJOb2Rl
Kik7CiAKIHByaXZhdGU6Ci0gICAgQ291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBpc1Jl
c2V0LCBpbnQgdmFsdWUpOworICAgIENvdW50ZXJOb2RlKFJlbmRlckVsZW1lbnQqLCBib29sIGlz
UmVzZXQsIGludCB2YWx1ZSk7CiAgICAgaW50IGNvbXB1dGVDb3VudEluUGFyZW50KCkgY29uc3Q7
CiAgICAgLy8gSW52YWxpZGF0ZXMgdGhlIHRleHQgaW4gdGhlIHJlbmRlcmVyIG9mIHRoaXMgY291
bnRlciwgaWYgYW55LAogICAgIC8vIGFuZCBpbiB0aGUgcmVuZGVyZXJzIG9mIGFsbCBkZXNjZW5k
YW50cyBvZiB0aGlzIGNvdW50ZXIsIGlmIGFueS4KQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faGFzUmVzZXRUeXBlOwogICAgIGludCBtX3ZhbHVlOwogICAgIGludCBtX2Nv
dW50SW5QYXJlbnQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBtX293bmVyOworICAgIFJlbmRlckVsZW1l
bnQqIG1fb3duZXI7CiAgICAgUmVuZGVyQ291bnRlciogbV9yb290UmVuZGVyZXI7CiAKICAgICBD
b3VudGVyTm9kZSogbV9wYXJlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0Zp
bHRlckVmZmVjdFJlbmRlcmVyLmNwcAppbmRleCBiMDZiZDRlNDdmMjEyYjRlMzMzZmNiMGVlNWFm
ZmU0OTc5OTY5NjYyLi4xZGE3ZjA0ZTY0M2MyZGZjMTQ1OWUxN2JjNzU5ZTFmY2U1OGMyYTY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5j
cHAKQEAgLTEyMyw3ICsxMjMsNyBAQCBHcmFwaGljc0NvbnRleHQqIEZpbHRlckVmZmVjdFJlbmRl
cmVyOjppbnB1dENvbnRleHQoKQogICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gc291cmNlSW1h
Z2UoKS0+Y29udGV4dCgpIDogMDsKIH0KIAotUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IEZpbHRl
ckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gcHJldmlvdXNFZmZlY3QsIFJlZmVyZW5jZUZp
bHRlck9wZXJhdGlvbiogZmlsdGVyT3BlcmF0aW9uKQorUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+
IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50
KiByZW5kZXJlciwgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0LCBSZWZl
cmVuY2VGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKIHsKICNpZiBFTkFCTEUoU1ZH
KQogICAgIGlmICghcmVuZGVyZXIpCkBAIC0xNDYsNyArMTQ2LDcgQEAgUGFzc1JlZlB0cjxGaWx0
ZXJFZmZlY3Q+IEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcihSZW5k
ZXJPYmplY3QKICAgICBpZiAoIWZpbHRlcikgewogICAgICAgICAvLyBBbHRob3VnaCB3ZSBkaWQg
bm90IGZpbmQgdGhlIHJlZmVyZW5jZWQgZmlsdGVyLCBpdCBtaWdodCBleGlzdCBsYXRlcgogICAg
ICAgICAvLyBpbiB0aGUgZG9jdW1lbnQKLSAgICAgICAgZG9jdW1lbnQtPmFjY2Vzc1NWR0V4dGVu
c2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlck9wZXJhdGlvbi0+ZnJhZ21lbnQoKSwg
dG9FbGVtZW50KHJlbmRlcmVyLT5ub2RlKCkpKTsKKyAgICAgICAgZG9jdW1lbnQtPmFjY2Vzc1NW
R0V4dGVuc2lvbnMoKS0+YWRkUGVuZGluZ1Jlc291cmNlKGZpbHRlck9wZXJhdGlvbi0+ZnJhZ21l
bnQoKSwgcmVuZGVyZXItPmVsZW1lbnQoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApA
QCAtMTc5LDcgKzE3OSw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0ZXJFZmZlY3RS
ZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyT2JqZWN0CiAjZW5kaWYKIH0KIAot
Ym9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
Y29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXIgY29uc3Vt
ZXIpCitib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXIg
Y29uc3VtZXIpCiB7CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIG1faGFzQ3VzdG9tU2hh
ZGVyRmlsdGVyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
RmlsdGVyRWZmZWN0UmVuZGVyZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJF
ZmZlY3RSZW5kZXJlci5oCmluZGV4IGEwZjQ3YzI3YzljYzZmMGU0NmM3NzVmYWJkNzUyNzUzMThm
NTJhYjcuLmQzYTJiY2NmNWUxMzY5MDljYWY3OWI3OWVmMTM0YjYyZTYyMzQ3ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oCkBAIC0zOCwy
MCArMzgsMjAgQEAKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAiU1ZHRmlsdGVy
QnVpbGRlci5oIgogI2luY2x1ZGUgIlNvdXJjZUdyYXBoaWMuaCIKLQogI2luY2x1ZGUgPHd0Zi9Q
YXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PEZpbHRlckVmZmVjdD4gPiBGaWx0ZXJFZmZlY3RMaXN0OwogY2xhc3MgQ2FjaGVkU2hhZGVyOwog
Y2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgR3JhcGhp
Y3NDb250ZXh0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckxheWVyOwotY2xh
c3MgUmVuZGVyT2JqZWN0OworCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0Pj4g
RmlsdGVyRWZmZWN0TGlzdDsKIAogZW51bSBGaWx0ZXJDb25zdW1lciB7CiAgICAgRmlsdGVyUHJv
cGVydHksCkBAIC0xMDksOCArMTA5LDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4dCog
aW5wdXRDb250ZXh0KCk7CiAgICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IHsgcmV0dXJu
IGxhc3RFZmZlY3QoKS0+YXNJbWFnZUJ1ZmZlcigpOyB9CiAKLSAgICBib29sIGJ1aWxkKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBGaWx0ZXJDb25zdW1l
cik7Ci0gICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0Vm
ZmVjdCwgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKik7CisgICAgYm9vbCBidWlsZChSZW5kZXJF
bGVtZW50KiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYsIEZpbHRlckNvbnN1bWVyKTsKKyAgICBQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVu
dCosIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKik7CiAgICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVjdCk7CiAgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKCk7CiAgICAgdm9pZCBjbGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcAppbmRleCA4NjkyYzhlY2Y1MjcxNjliN2Ex
NGY4ZTljOWQyYjgwMzk5OTA1OGI0Li5iOWEyN2NiMDM1ZTI0YTJiZjMwN2ZhNDBhNjVmZDc1NWYx
ODM4NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3Vs
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBA
IC0yMDAsNyArMjAwLDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnNwZWxsaW5nVG9vbFRpcChU
ZXh0RGlyZWN0aW9uJiBkaXIpIGNvbnN0CiAgICAgaWYgKCFtYXJrZXIpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9pbm5lck5v
blNoYXJlZE5vZGUtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBtX2lubmVy
Tm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKSkKICAgICAgICAgZGlyID0gcmVuZGVyZXItPnN0eWxl
KCktPmRpcmVjdGlvbigpOwogICAgIHJldHVybiBtYXJrZXItPmRlc2NyaXB0aW9uKCk7CiB9CkBA
IC0yMjgsNyArMjI4LDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OnRpdGxlKFRleHREaXJlY3Rp
b24mIGRpcikgY29uc3QKICAgICAgICAgaWYgKHRpdGxlTm9kZS0+aXNFbGVtZW50Tm9kZSgpKSB7
CiAgICAgICAgICAgICBTdHJpbmcgdGl0bGUgPSB0b0VsZW1lbnQodGl0bGVOb2RlKS0+dGl0bGUo
KTsKICAgICAgICAgICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aXRsZU5vZGUtPnJlbmRlcmVyKCkpCisgICAg
ICAgICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aXRsZU5vZGUtPnJlbmRlcmVyKCkpCiAg
ICAgICAgICAgICAgICAgICAgIGRpciA9IHJlbmRlcmVyLT5zdHlsZSgpLT5kaXJlY3Rpb24oKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gdGl0bGU7CiAgICAgICAgICAgICB9CkBAIC0yNDMsNyAr
MjQzLDcgQEAgU3RyaW5nIEhpdFRlc3RSZXN1bHQ6OmlubmVyVGV4dElmVHJ1bmNhdGVkKFRleHRE
aXJlY3Rpb24mIGRpcikgY29uc3QKICAgICAgICAgaWYgKCF0cnVuY2F0ZWROb2RlLT5pc0VsZW1l
bnROb2RlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRydW5jYXRlZE5vZGUtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYg
KGF1dG8gcmVuZGVyZXIgPSB0b0VsZW1lbnQodHJ1bmNhdGVkTm9kZSktPnJlbmRlcmVyKCkpIHsK
ICAgICAgICAgICAgIGlmIChyZW5kZXJlci0+aXNSZW5kZXJCbG9jaygpKSB7CiAgICAgICAgICAg
ICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gdG9SZW5kZXJCbG9jayhyZW5kZXJlcik7CiAgICAg
ICAgICAgICAgICAgaWYgKGJsb2NrLT5zdHlsZSgpLT50ZXh0T3ZlcmZsb3coKSkgewpAQCAtMjkz
LDcgKzI5Myw3IEBAIEltYWdlKiBIaXRUZXN0UmVzdWx0OjppbWFnZSgpIGNvbnN0CiAgICAgaWYg
KCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG1faW5uZXJOb25TaGFyZWROb2RlLT5yZW5kZXJlcigpOwor
ICAgIGF1dG8gcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKTsKICAg
ICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzSW1hZ2UoKSkgewogICAgICAgICBSZW5kZXJJ
bWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJJbWFnZSo+KHJlbmRlcmVy
KTsKICAgICAgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1h
Z2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xheW91dFJlcGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0
UmVwYWludGVyLmNwcAppbmRleCAyMDVhZDRhYjhkMjA2NDEwZThiNjVjZjQ5NTMwNmFlYjdmYWNi
MmU4Li44ZDVlYmRiMTFkY2UwYjM5NTk0MWQwODU0Njc2ZmYxZDZiY2MxNWVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmNwcApAQCAtMjYsMTEgKzI2LDEx
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVwYWludGVyLmgiCiAK
LSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotTGF5b3V0UmVwYWludGVyOjpMYXlvdXRSZXBhaW50ZXIo
UmVuZGVyT2JqZWN0JiBvYmplY3QsIGJvb2wgY2hlY2tGb3JSZXBhaW50KQorTGF5b3V0UmVwYWlu
dGVyOjpMYXlvdXRSZXBhaW50ZXIoUmVuZGVyRWxlbWVudCYgb2JqZWN0LCBib29sIGNoZWNrRm9y
UmVwYWludCkKICAgICA6IG1fb2JqZWN0KG9iamVjdCkKICAgICAsIG1fcmVwYWludENvbnRhaW5l
cigwKQogICAgICwgbV9jaGVja0ZvclJlcGFpbnQoY2hlY2tGb3JSZXBhaW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCmluZGV4IDA2NThlYTg1M2MyMGVhNWMz
NzFkYjFjNDM1YTdjNDZhZGM4MTUyMjYuLmNhZThmMTAyMDIyMjA3NzZmZTZhOTQ1ZWVkYTk1ODEw
MWZhYWYwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBh
aW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWludGVyLmgK
QEAgLTMwLDEyICszMCwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFJlbmRl
ckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJMYXllck1vZGVsT2JqZWN0OwotY2xhc3MgUmVuZGVyT2Jq
ZWN0OwogCiBjbGFzcyBMYXlvdXRSZXBhaW50ZXIgewogcHVibGljOgotICAgIExheW91dFJlcGFp
bnRlcihSZW5kZXJPYmplY3QmLCBib29sIGNoZWNrRm9yUmVwYWludCk7CisgICAgTGF5b3V0UmVw
YWludGVyKFJlbmRlckVsZW1lbnQmLCBib29sIGNoZWNrRm9yUmVwYWludCk7CiAKICAgICBib29s
IGNoZWNrRm9yUmVwYWludCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hlY2tGb3JSZXBhaW50OyB9CiAK
QEAgLTQzLDcgKzQzLDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVwYWludEFmdGVyTGF5b3V0KCk7
CiAKIHByaXZhdGU6Ci0gICAgUmVuZGVyT2JqZWN0JiBtX29iamVjdDsKKyAgICBSZW5kZXJFbGVt
ZW50JiBtX29iamVjdDsKICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBtX3JlcGFpbnRDb250
YWluZXI7CiAgICAgLy8gV2Ugc3RvcmUgdGhlc2UgdmFsdWVzIGFzIExheW91dFJlY3RzLCBidXQg
dGhlIGZpbmFsIGludmFsaWRhdGlvbnMgd2lsbCBiZSBwaXhlbCBzbmFwcGVkCiAgICAgTGF5b3V0
UmVjdCBtX29sZEJvdW5kczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9M
YXlvdXRTdGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFN0YXRlLmgKaW5k
ZXggNDkyYTc1MzVkYWJlNDE1MTA1YjU1OWM1YzAzMzE0M2EzYWJlZDYwOC4uMGJhZWI3ZDE5OTY1
ZWU3YjA3OWJiZWY5YzBhNmM5Y2UyYjgzYTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0xheW91dFN0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xh
eW91dFN0YXRlLmgKQEAgLTM3LDExICszNywxMCBAQCBjbGFzcyBSZW5kZXJBcmVuYTsKIGNsYXNz
IFJlbmRlckJsb2NrOwogY2xhc3MgUmVuZGVyQmxvY2tGbG93OwogY2xhc3MgUmVuZGVyQm94Owot
Y2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlckZs
b3dUaHJlYWQ7Ci0jaWYgRU5BQkxFKENTU19TSEFQRVMpCitjbGFzcyBSZW5kZXJPYmplY3Q7CiBj
bGFzcyBTaGFwZUluc2lkZUluZm87Ci0jZW5kaWYKIAogY2xhc3MgTGF5b3V0U3RhdGUgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKExheW91dFN0YXRlKTsKQEAgLTU0LDE1ICs1MywxNSBAQCBw
dWJsaWM6CiAgICAgICAgICwgbV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQoZmFsc2UpCiAgICAgICAg
ICwgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQoZmFsc2UpCiAjZW5kaWYKLSAgICAgICAgLCBtX2Nv
bHVtbkluZm8oMCkKLSAgICAgICAgLCBtX2xpbmVHcmlkKDApCi0gICAgICAgICwgbV9uZXh0KDAp
CisgICAgICAgICwgbV9jb2x1bW5JbmZvKG51bGxwdHIpCisgICAgICAgICwgbV9saW5lR3JpZChu
dWxscHRyKQorICAgICAgICAsIG1fbmV4dChudWxscHRyKQogI2lmIEVOQUJMRShDU1NfU0hBUEVT
KQotICAgICAgICAsIG1fc2hhcGVJbnNpZGVJbmZvKDApCisgICAgICAgICwgbV9zaGFwZUluc2lk
ZUluZm8obnVsbHB0cikKICNlbmRpZgogICAgICAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHQoMCkK
ICNpZm5kZWYgTkRFQlVHCi0gICAgICAgICwgbV9yZW5kZXJlcigwKQorICAgICAgICAsIG1fcmVu
ZGVyZXIobnVsbHB0cikKICNlbmRpZgogICAgIHsKICAgICB9CkBAIC0xMTMsMTQgKzExMiwxNSBA
QCBwcml2YXRlOgogCiBwdWJsaWM6CiAgICAgLy8gRG8gbm90IGFkZCBhbnl0aGluZyBhcGFydCBm
cm9tIGJpdGZpZWxkcyB1bnRpbCBhZnRlciBtX2NvbHVtbkluZm8uIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMTczCi0gICAgYm9vbCBtX2NsaXBwZWQ6MTsK
LSAgICBib29sIG1faXNQYWdpbmF0ZWQ6MTsKKyAgICBib29sIG1fY2xpcHBlZCA6IDE7CisgICAg
Ym9vbCBtX2lzUGFnaW5hdGVkIDogMTsKICAgICAvLyBJZiBvdXIgcGFnZSBoZWlnaHQgaGFzIGNo
YW5nZWQsIHRoaXMgd2lsbCBmb3JjZSBhbGwgYmxvY2tzIHRvIHJlbGF5b3V0LgotICAgIGJvb2wg
bV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQ6MTsKKyAgICBib29sIG1fcGFnZUxvZ2ljYWxIZWln
aHRDaGFuZ2VkIDogMTsKICNpZiAhQVNTRVJUX0RJU0FCTEVEICYmIEVOQUJMRShTQVRVUkFURURf
TEFZT1VUX0FSSVRITUVUSUMpCi0gICAgYm9vbCBtX2xheW91dERlbHRhWFNhdHVyYXRlZDoxOwot
ICAgIGJvb2wgbV9sYXlvdXREZWx0YVlTYXR1cmF0ZWQ6MTsKKyAgICBib29sIG1fbGF5b3V0RGVs
dGFYU2F0dXJhdGVkIDogMTsKKyAgICBib29sIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkIDogMTsK
ICNlbmRpZgorCiAgICAgLy8gSWYgdGhlIGVuY2xvc2luZyBwYWdpbmF0aW9uIG1vZGVsIGlzIGEg
Y29sdW1uIG1vZGVsLCB0aGVuIHRoaXMgd2lsbCBzdG9yZSBjb2x1bW4gaW5mb3JtYXRpb24gZm9y
IGVhc3kgcmV0cmlldmFsL21hbmlwdWxhdGlvbi4KICAgICBDb2x1bW5JbmZvKiBtX2NvbHVtbklu
Zm87CiAgICAgLy8gVGhlIGN1cnJlbnQgbGluZSBncmlkIHRoYXQgd2UncmUgc25hcHBpbmcgdG8g
YW5kIHRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBncmlkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0xpbmVXaWR0aC5oCmluZGV4IGQwMGIxY2QxZThhYzIyOWQzNjYyMjgyZDE0ZWE4NzJhMDhh
YWNmYTUuLmJhNWE2ZTlmOTQzMmQxNzVmNzI1OGMyMzRjN2I5MjA4YmZlM2NjYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmgKQEAgLTM2LDExICszNiwxMiBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBGbG9hdGluZ09iamVjdDsKLXN0cnVjdCBMaW5lU2VnbWVudDsK
IGNsYXNzIFJlbmRlckJsb2NrOwogY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyUnVi
eVJ1bjsKIAorc3RydWN0IExpbmVTZWdtZW50OworCiBlbnVtIEluZGVudFRleHRPck5vdCB7IERv
Tm90SW5kZW50VGV4dCwgSW5kZW50VGV4dCB9OwogCiBjbGFzcyBMaW5lV2lkdGggewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNo
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Mb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2Fj
aGVzLmgKaW5kZXggNjU4ZTAyMjg1YWIyYTY0MDUzNTEyZjY1NDZlMWFmMjdiZmE3YzVkZS4uYjlh
MjZjYzk4MWZiNTA0OGNlMzc1OTg3ZDkxOTRkYmE5YWZhNmU5YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcy5oCkBA
IC0yNSw3ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIGlubGluZSBi
b29sIGlzQ29udGFpbmluZ0Jsb2NrQ2FuZGlkYXRlRm9yQWJzb2x1dGVseVBvc2l0aW9uZWRPYmpl
Y3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDb250YWluaW5n
QmxvY2tDYW5kaWRhdGVGb3JBYnNvbHV0ZWx5UG9zaXRpb25lZE9iamVjdChSZW5kZXJFbGVtZW50
KiBvYmplY3QpCiB7CiAgICAgcmV0dXJuIG9iamVjdC0+c3R5bGUoKS0+cG9zaXRpb24oKSAhPSBT
dGF0aWNQb3NpdGlvbgogICAgICAgICB8fCAob2JqZWN0LT5oYXNUcmFuc2Zvcm0oKSAmJiBvYmpl
Y3QtPmlzUmVuZGVyQmxvY2soKSkKQEAgLTM1LDI5ICszNSwyOSBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgaXNDb250YWluaW5nQmxvY2tDYW5kaWRhdGVGb3JBYnNvbHV0ZWx5UG9zaXRpb25lZE9iamVj
dChSZW5kZQogICAgICAgICB8fCBvYmplY3QtPmlzUmVuZGVyVmlldygpOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgaXNOb25SZW5kZXJCbG9ja0lubGluZShSZW5kZXJPYmplY3QqIG9iamVjdCkK
K3N0YXRpYyBpbmxpbmUgYm9vbCBpc05vblJlbmRlckJsb2NrSW5saW5lKFJlbmRlckVsZW1lbnQq
IG9iamVjdCkKIHsKICAgICByZXR1cm4gKG9iamVjdC0+aXNJbmxpbmUoKSAmJiAhb2JqZWN0LT5p
c1JlcGxhY2VkKCkpIHx8ICFvYmplY3QtPmlzUmVuZGVyQmxvY2soKTsKIH0KIAotc3RhdGljIGlu
bGluZSBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9ja0ZvckZpeGVkUG9zaXRpb24oUmVuZGVy
T2JqZWN0KiBwYXJlbnQpCitzdGF0aWMgaW5saW5lIFJlbmRlckVsZW1lbnQqIGNvbnRhaW5pbmdC
bG9ja0ZvckZpeGVkUG9zaXRpb24oUmVuZGVyRWxlbWVudCogcGFyZW50KQogewotICAgIFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcGFyZW50OworICAgIFJlbmRlckVsZW1lbnQqIG9iamVjdCA9IHBh
cmVudDsKICAgICB3aGlsZSAob2JqZWN0ICYmICFvYmplY3QtPmNhbkNvbnRhaW5GaXhlZFBvc2l0
aW9uT2JqZWN0cygpKQogICAgICAgICBvYmplY3QgPSBvYmplY3QtPnBhcmVudCgpOwogICAgIEFT
U0VSVCghb2JqZWN0IHx8ICFvYmplY3QtPmlzQW5vbnltb3VzQmxvY2soKSk7CiAgICAgcmV0dXJu
IG9iamVjdDsKIH0KIAotc3RhdGljIGlubGluZSBSZW5kZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9j
a0ZvckFic29sdXRlUG9zaXRpb24oUmVuZGVyT2JqZWN0KiBwYXJlbnQpCitzdGF0aWMgaW5saW5l
IFJlbmRlckVsZW1lbnQqIGNvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlUG9zaXRpb24oUmVuZGVy
RWxlbWVudCogcGFyZW50KQogewotICAgIFJlbmRlck9iamVjdCogb2JqZWN0ID0gcGFyZW50Owor
ICAgIFJlbmRlckVsZW1lbnQqIG9iamVjdCA9IHBhcmVudDsKICAgICB3aGlsZSAob2JqZWN0ICYm
ICFpc0NvbnRhaW5pbmdCbG9ja0NhbmRpZGF0ZUZvckFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0
KG9iamVjdCkpCiAgICAgICAgIG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCk7CiAKICAgICAvLyBG
b3IgYSByZWxhdGl2ZWx5IHBvc2l0aW9uZWQgaW5saW5lLCByZXR1cm4gaXRzIG5lYXJlc3Qgbm9u
LWFub255bW91cyBjb250YWluaW5nIGJsb2NrLAogICAgIC8vIG5vdCB0aGUgaW5saW5lIGl0c2Vs
ZiwgdG8gYXZvaWQgaGF2aW5nIGEgcG9zaXRpb25lZCBvYmplY3RzIGxpc3QgaW4gYWxsIFJlbmRl
cklubGluZXMKLSAgICAvLyBhbmQgdXNlIFJlbmRlckJsb2NrKiBhcyBSZW5kZXJPYmplY3Q6OmNv
bnRhaW5pbmdCbG9jaydzIHJldHVybiB0eXBlLgorICAgIC8vIGFuZCB1c2UgUmVuZGVyQmxvY2sq
IGFzIFJlbmRlckVsZW1lbnQ6OmNvbnRhaW5pbmdCbG9jaydzIHJldHVybiB0eXBlLgogICAgIC8v
IFVzZSBSZW5kZXJCbG9jazo6Y29udGFpbmVyKCkgdG8gb2J0YWluIHRoZSBpbmxpbmUuCiAgICAg
aWYgKG9iamVjdCAmJiBvYmplY3QtPmlzUmVuZGVySW5saW5lKCkpCiAgICAgICAgIG9iamVjdCA9
IG9iamVjdC0+Y29udGFpbmluZ0Jsb2NrKCk7CkBAIC02OCw5ICs2OCw5IEBAIHN0YXRpYyBpbmxp
bmUgUmVuZGVyT2JqZWN0KiBjb250YWluaW5nQmxvY2tGb3JBYnNvbHV0ZVBvc2l0aW9uKFJlbmRl
ck9iamVjdCogcGFyCiAgICAgcmV0dXJuIG9iamVjdDsKIH0KIAotc3RhdGljIGlubGluZSBSZW5k
ZXJPYmplY3QqIGNvbnRhaW5pbmdCbG9ja0Zvck9iamVjdEluRmxvdyhSZW5kZXJPYmplY3QqIHBh
cmVudCkKK3N0YXRpYyBpbmxpbmUgUmVuZGVyRWxlbWVudCogY29udGFpbmluZ0Jsb2NrRm9yT2Jq
ZWN0SW5GbG93KFJlbmRlckVsZW1lbnQqIHBhcmVudCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIG9i
amVjdCA9IHBhcmVudDsKKyAgICBSZW5kZXJFbGVtZW50KiBvYmplY3QgPSBwYXJlbnQ7CiAgICAg
d2hpbGUgKG9iamVjdCAmJiBpc05vblJlbmRlckJsb2NrSW5saW5lKG9iamVjdCkpCiAgICAgICAg
IG9iamVjdCA9IG9iamVjdC0+cGFyZW50KCk7CiAgICAgcmV0dXJuIG9iamVjdDsKQEAgLTEzNiw3
ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgTG9naWNhbFNlbGVjdGlvbk9mZnNldENh
Y2hlcyhSZW5kZXJCbG9jayogcm9vdEJsb2NrKQogICAgIHsKICAgICAgICAgQVNTRVJUKHJvb3RC
bG9jay0+aXNTZWxlY3Rpb25Sb290KCkpOwotICAgICAgICBSZW5kZXJPYmplY3QqIHBhcmVudCA9
IHJvb3RCbG9jay0+cGFyZW50KCk7CisgICAgICAgIGF1dG8gcGFyZW50ID0gcm9vdEJsb2NrLT5w
YXJlbnQoKTsKIAogICAgICAgICAvLyBMb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzIHNob3Vs
ZCBub3QgYmUgdXNlZCBvbiBhbiBvcnBoYW5lZCB0cmVlLgogICAgICAgICBtX2NvbnRhaW5pbmdC
bG9ja0ZvckZpeGVkUG9zaXRpb24uc2V0QmxvY2sodG9SZW5kZXJCbG9jayhjb250YWluaW5nQmxv
Y2tGb3JGaXhlZFBvc2l0aW9uKHBhcmVudCkpLCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9QYWludEluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9QYWlu
dEluZm8uaAppbmRleCBlNjcwYTc3NmY0NGQ1YWJmYWFmNjZiZmFlODFhZDQ2MzM3NzQzZmVmLi44
MjI0NzQ5MDA4NmI0OTVhZGFjNjNmZWYzZWRmMGRhZmNlM2MzMWExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1BhaW50SW5mby5oCkBAIC01NCw4ICs1NCw4IEBAIHR5cGVkZWYgSGFzaE1hcDxPdmVy
bGFwVGVzdFJlcXVlc3RDbGllbnQqLCBJbnRSZWN0PiBPdmVybGFwVGVzdFJlcXVlc3RNYXA7CiAg
Ki8KIHN0cnVjdCBQYWludEluZm8gewogICAgIFBhaW50SW5mbyhHcmFwaGljc0NvbnRleHQqIG5l
d0NvbnRleHQsIGNvbnN0IEludFJlY3QmIG5ld1JlY3QsIFBhaW50UGhhc2UgbmV3UGhhc2UsIFBh
aW50QmVoYXZpb3IgbmV3UGFpbnRCZWhhdmlvciwKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBuZXdT
dWJ0cmVlUGFpbnRSb290ID0gMCwgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAwLCBMaXN0SGFzaFNl
dDxSZW5kZXJJbmxpbmUqPiogbmV3T3V0bGluZU9iamVjdHMgPSAwLAotICAgICAgICBPdmVybGFw
VGVzdFJlcXVlc3RNYXAqIG92ZXJsYXBUZXN0UmVxdWVzdHMgPSAwLCBjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0KiBuZXdQYWludENvbnRhaW5lciA9IDApCisgICAgICAgIFJlbmRlck9iamVj
dCogbmV3U3VidHJlZVBhaW50Um9vdCA9IG51bGxwdHIsIFJlbmRlclJlZ2lvbiogcmVnaW9uID0g
bnVsbHB0ciwgTGlzdEhhc2hTZXQ8UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3RzID0g
bnVsbHB0ciwKKyAgICAgICAgT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVl
c3RzID0gbnVsbHB0ciwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogbmV3UGFpbnRDb250
YWluZXIgPSBudWxscHRyKQogICAgICAgICA6IGNvbnRleHQobmV3Q29udGV4dCkKICAgICAgICAg
LCByZWN0KG5ld1JlY3QpCiAgICAgICAgICwgcGhhc2UobmV3UGhhc2UpCkBAIC03Myw5ICs3Myw5
IEBAIHN0cnVjdCBQYWludEluZm8gewogICAgICAgICBpZiAoIXN1YnRyZWVQYWludFJvb3QpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgLy8gSWYgd2UncmUgdGhlIHBhaW50aW5nIHJv
b3QsIGtpZHMgZHJhdyBub3JtYWxseSwgYW5kIHNlZSByb290IG9mIDAuCisgICAgICAgIC8vIElm
IHdlJ3JlIHRoZSBwYWludGluZyByb290LCBraWRzIGRyYXcgbm9ybWFsbHksIGFuZCBzZWUgcm9v
dCBvZiBudWxscHRyLgogICAgICAgICBpZiAoc3VidHJlZVBhaW50Um9vdCA9PSByZW5kZXJlcikg
ewotICAgICAgICAgICAgc3VidHJlZVBhaW50Um9vdCA9IDA7IAorICAgICAgICAgICAgc3VidHJl
ZVBhaW50Um9vdCA9IG51bGxwdHI7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IGM2MDk3MDgxNmFh
OTE4ZTkzMDgzMTViNGZmMTJmMGVkNThmYzRiZDguLjQ4ZjU1N2YzM2MwNjkwOTdmZDNlZmE5MDY0
OTkxZWZmZDBkOGU5MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBA
IC0xNDU3LDcgKzE0NTcsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckJveDo6bWFza0NsaXBSZWN0KCkK
IH0KIAogdm9pZCBSZW5kZXJCb3g6OnBhaW50RmlsbExheWVycyhjb25zdCBQYWludEluZm8mIHBh
aW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiByZWN0LAotICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2
b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9i
amVjdCkKKyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIENvbXBv
c2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0KQogewogICAg
IFZlY3Rvcjxjb25zdCBGaWxsTGF5ZXIqLCA4PiBsYXllcnM7CiAgICAgY29uc3QgRmlsbExheWVy
KiBjdXJMYXllciA9IGZpbGxMYXllcjsKQEAgLTE0OTYsNyArMTQ5Niw3IEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENv
bG9yJiBjLCBjb25zCiB9CiAKIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcihjb25zdCBQ
YWludEluZm8mIHBhaW50SW5mbywgY29uc3QgQ29sb3ImIGMsIGNvbnN0IEZpbGxMYXllciogZmls
bExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAotICAgIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSBibGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9iamVjdCog
YmFja2dyb3VuZE9iamVjdCkKKyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9p
ZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2Jq
ZWN0KQogewogICAgIHBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBmaWxsTGF5
ZXIsIHJlY3QsIGJsZWVkQXZvaWRhbmNlLCAwLCBMYXlvdXRTaXplKCksIG9wLCBiYWNrZ3JvdW5k
T2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBhMjA4OTky
MzAzNDYwY2YyMWJkN2JiNDZjY2FkZTA3NTRiOTUxYjVhLi4yM2M4YzY0NzNlZDVhYWQ0NDVlMGE2
OGU5YTNjMjI1MDIzNmM1OTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBA
IC02MTEsOCArNjExLDggQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBwYWludEJhY2tncm91bmQo
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lk
YW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUpOwogICAgIAotICAgIHZvaWQgcGFpbnRGaWxsTGF5
ZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25z
dCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRv
ciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KTsKLSAgICB2b2lkIHBhaW50RmlsbExh
eWVycyhjb25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNv
bnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgPSBCYWNrZ3JvdW5kQmxl
ZWROb25lLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIFJlbmRlck9i
amVjdCogYmFja2dyb3VuZE9iamVjdCA9IDApOworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXIoY29u
c3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlv
dXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlLCBDb21wb3NpdGVPcGVyYXRvciwgUmVu
ZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCk7CisgICAgdm9pZCBwYWludEZpbGxMYXllcnMo
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBM
YXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVkTm9u
ZSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50
KiBiYWNrZ3JvdW5kT2JqZWN0ID0gbnVsbHB0cik7CiAKICAgICB2b2lkIHBhaW50TWFza0ltYWdl
cyhjb25zdCBQYWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IDhjMDY3ODFm
N2M0MGY5ZjhhM2Y5NzAxMWE4MDg4OTBhY2Q0ODFkM2QuLjI5YmQ1ZDYwOTczMDNkNTcyMTI2OTRh
ZjkwM2Y5ZDFjNzZhZjM5ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIHN0YXRpYyB2b2lkIGFw
cGx5Qm94U2hhZG93Rm9yQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFJlbmRl
clN0eWxlKiBzCiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVy
RXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjb2xvciwg
Y29uc3QgRmlsbExheWVyKiBiZ0xheWVyLCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LAotICAgIEJh
Y2tncm91bmRCbGVlZEF2b2lkYW5jZSBibGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogYm94
LCBjb25zdCBMYXlvdXRTaXplJiBib3hTaXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVy
T2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KQorICAgIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSBi
bGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogYm94LCBjb25zdCBMYXlvdXRTaXplJiBib3hT
aXplLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCkKIHsKICAgICBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQgPSBwYWludEluZm8uY29udGV4dDsK
ICAgICBpZiAoY29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpIHx8IHJlY3QuaXNFbXB0eSgpKQpA
QCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExh
eWVyRXh0ZW5kZWQoY29uc3QgUGFpbnRJbmZvJiBwYWludEluZm8sIGNvCiAgICAgICAgIGdlb21l
dHJ5LmNsaXAocGFpbnRJbmZvLnJlY3QpOwogICAgICAgICBpZiAoIWdlb21ldHJ5LmRlc3RSZWN0
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cCA9IG9wID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgPyBiZ0xheWVyLT5jb21wb3NpdGUoKSA6IG9w
OwotICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UgPSBi
YWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3VuZE9iamVjdCA6IHRoaXM7CisgICAgICAgICAgICBS
ZW5kZXJFbGVtZW50KiBjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UgPSBiYWNrZ3JvdW5kT2JqZWN0
ID8gYmFja2dyb3VuZE9iamVjdCA6IHRoaXM7CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGlt
YWdlID0gYmdJbWFnZS0+aW1hZ2UoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCBnZW9tZXRyeS50
aWxlU2l6ZSgpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGJn
TGF5ZXItPm1hc2tTb3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7CiAgICAgICAgICAgICBi
b29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4
dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwpAQCAtMTA0Myw3
ICsxMDQzLDcgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0U3BhY2UoaW50IGFyZWFTaXplLCBpbnQg
dGlsZVNpemUpCiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29u
dGFpbmVyLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcGFp
bnRSZWN0LAotICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5JiBnZW9tZXRyeSwgUmVuZGVyT2Jq
ZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KSBjb25zdAorICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5
JiBnZW9tZXRyeSwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCkgY29uc3QKIHsKICAg
ICBMYXlvdXRVbml0IGxlZnQgPSAwOwogICAgIExheW91dFVuaXQgdG9wID0gMDsKQEAgLTExMTEs
NyArMTExMSw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91
bmRJbWFnZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kCiAgICAgICAgIHBvc2l0aW9uaW5n
QXJlYVNpemUgPSBnZW9tZXRyeS5kZXN0UmVjdCgpLnNpemUoKTsKICAgICB9CiAKLSAgICBjb25z
dCBSZW5kZXJPYmplY3QqIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmpl
Y3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpczsKKyAgICBhdXRvIGNsaWVudEZvckJhY2tncm91
bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpczsKICAg
ICBJbnRTaXplIGZpbGxUaWxlU2l6ZSA9IGNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShmaWxsTGF5ZXIs
IHBvc2l0aW9uaW5nQXJlYVNpemUpOwogICAgIGZpbGxMYXllci0+aW1hZ2UoKS0+c2V0Q29udGFp
bmVyU2l6ZUZvclJlbmRlcmVyKGNsaWVudEZvckJhY2tncm91bmRJbWFnZSwgZmlsbFRpbGVTaXpl
LCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwogICAgIGdlb21ldHJ5LnNldFRpbGVTaXplKGZp
bGxUaWxlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oCmluZGV4IDc1N2EzN2ZlMmVkNjQxNGRjMjNmMzMwNmJlZTkzMjUyNDU4OTNkMGQu
LjlkMDY2ZmFmNTU4NmM2MTY4ZmQ4MGQwOGU1MDU5ZjJmYWJjZjFkODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xNjEsNyArMTYx
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29u
c3QgTGF5b3V0UmVjdCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRh
bmNlID0gQmFja2dyb3VuZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0g
dHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFp
bnROaW5lUGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29u
c3QgUmVuZGVyU3R5bGUqLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9y
ID0gQ29tcG9zaXRlU291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQ
YWludEluZm8mLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBTaGFkb3dT
dHlsZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9n
aWNhbFJpZ2h0RWRnZSA9IHRydWUpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChj
b25zdCBQYWludEluZm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExh
eW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gMCwg
Y29uc3QgTGF5b3V0U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29t
cG9zaXRlU291cmNlT3ZlciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0ID0gMCk7Cisg
ICAgdm9pZCBwYWludEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENv
bG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVl
ZEF2b2lkYW5jZSwgSW5saW5lRmxvd0JveCogPSAwLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91
dFNpemUoKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJF
bGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0ID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYm94U2hh
ZG93U2hvdWxkQmVBcHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwg
SW5saW5lRmxvd0JveCogPSAwKSBjb25zdDsKIApAQCAtMjU4LDcgKzI1OCw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgIExheW91dFBvaW50IGFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFy
ZW50KGNvbnN0IExheW91dFBvaW50JikgY29uc3Q7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUJhY2tn
cm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29u
dGFpbmVyLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJh
Y2tncm91bmRJbWFnZUdlb21ldHJ5JiwgUmVuZGVyT2JqZWN0KiA9IDApIGNvbnN0OworICAgIHZv
aWQgY2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdCogcGFpbnRDb250YWluZXIsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJl
Y3QmIHBhaW50UmVjdCwgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkmLCBSZW5kZXJFbGVtZW50KiA9
IDApIGNvbnN0OwogICAgIHZvaWQgZ2V0Qm9yZGVyRWRnZUluZm8oY2xhc3MgQm9yZGVyRWRnZVtd
LCBjb25zdCBSZW5kZXJTdHlsZSosIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUs
IGJvb2wgaW5jbHVkZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKICAgICBib29sIGJv
cmRlck9ic2N1cmVzQmFja2dyb3VuZEVkZ2UoY29uc3QgRmxvYXRTaXplJiBjb250ZXh0U2NhbGUp
IGNvbnN0OwogICAgIGJvb2wgYm9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5kKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggMWY1MjI1M2I1ODlh
ZmMyYTZlNzVkZWE3ZDlkYWUxZTMzYmZlYTE0OS4uZDAyZDM3ZTI3NmNmZjUxYjI5NjM0YTA5MTQy
NTA4ZWIzODMyODhiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcApAQCAtOTMsMzUgKzkzLDMyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVSZW5kZXJlcnNF
bGVtZW50c1NpYmxpbmdzKFJlbmRlck9iamVjdCogZmlyc3QsIFJlbmRlck9iamVjCiAKIC8vIFRo
aXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0cmVlIGluIHRoZSBvcmRlciBvZiB0
aGUgRE9NIHRyZWUKIC8vIGluY2x1ZGluZyBwc2V1ZG8gZWxlbWVudHMgYXMgZGVmaW5lZCBpbiBD
U1MgMi4xLgotc3RhdGljIFJlbmRlck9iamVjdCogbmV4dEluUHJlT3JkZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IEVsZW1lbnQqIHN0YXlXaXRoaW4sIGJvb2wgc2tpcERlc2Nl
bmRhbnRzID0gZmFsc2UpCitzdGF0aWMgUmVuZGVyRWxlbWVudCogbmV4dEluUHJlT3JkZXIoY29u
c3QgUmVuZGVyRWxlbWVudCogZWxlbWVudCwgY29uc3QgRWxlbWVudCogc3RheVdpdGhpbiwgYm9v
bCBza2lwRGVzY2VuZGFudHMgPSBmYWxzZSkKIHsKLSAgICBFbGVtZW50KiBzZWxmID0gdG9FbGVt
ZW50KG9iamVjdC0+bm9kZSgpKTsKKyAgICBFbGVtZW50KiBzZWxmID0gZWxlbWVudC0+ZWxlbWVu
dCgpOwogICAgIEVsZW1lbnQqIG5leHQgPSBza2lwRGVzY2VuZGFudHMgPyBFbGVtZW50VHJhdmVy
c2FsOjpuZXh0SW5jbHVkaW5nUHNldWRvU2tpcHBpbmdDaGlsZHJlbihzZWxmLCBzdGF5V2l0aGlu
KSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQc2V1ZG8oc2VsZiwgc3RheVdpdGhp
bik7CiAgICAgd2hpbGUgKG5leHQgJiYgIW5leHQtPnJlbmRlcmVyKCkpCiAgICAgICAgIG5leHQg
PSBza2lwRGVzY2VuZGFudHMgPyBFbGVtZW50VHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNldWRv
U2tpcHBpbmdDaGlsZHJlbihuZXh0LCBzdGF5V2l0aGluKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5l
eHRJbmNsdWRpbmdQc2V1ZG8obmV4dCwgc3RheVdpdGhpbik7CiAgICAgcmV0dXJuIG5leHQgPyBu
ZXh0LT5yZW5kZXJlcigpIDogMDsKIH0KIAotc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm9vbCYgaXNS
ZXNldCwgaW50JiB2YWx1ZSkKK3N0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQq
IG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sJiBpc1Jlc2V0LCBp
bnQmIHZhbHVlKQogewogICAgIEFTU0VSVChvYmplY3QpOwogCi0gICAgLy8gUmVhbCB0ZXh0IG5v
ZGVzIGRvbid0IGhhdmUgdGhlaXIgb3duIHN0eWxlIHNvIHRoZXkgY2FuJ3QgaGF2ZSBjb3VudGVy
cy4KLSAgICAvLyBXZSBjYW4ndCBldmVuIGxvb2sgYXQgdGhlaXIgc3R5bGVzIG9yIHdlJ2xsIHNl
ZSBleHRyYSByZXNldHMgYW5kIGluY3JlbWVudHMhCi0gICAgaWYgKG9iamVjdC0+aXNUZXh0KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSA9IG9iamVj
dC0+Z2VuZXJhdGluZ05vZGUoKTsKICAgICAvLyBXZSBtdXN0IGhhdmUgYSBnZW5lcmF0aW5nIG5v
ZGUgb3IgZWxzZSB3ZSBjYW5ub3QgaGF2ZSBhIGNvdW50ZXIuCi0gICAgaWYgKCFnZW5lcmF0aW5n
Tm9kZSkKKyAgICBFbGVtZW50KiBnZW5lcmF0aW5nRWxlbWVudCA9IG9iamVjdC0+Z2VuZXJhdGlu
Z0VsZW1lbnQoKTsKKyAgICBpZiAoIWdlbmVyYXRpbmdFbGVtZW50KQogICAgICAgICByZXR1cm4g
ZmFsc2U7CisKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSBvYmplY3QtPnN0eWxlKCk7CiAgICAg
QVNTRVJUKHN0eWxlKTsKIAogICAgIHN3aXRjaCAoc3R5bGUtPnN0eWxlVHlwZSgpKSB7CiAgICAg
Y2FzZSBOT1BTRVVETzoKLSAgICAgICAgLy8gU29tZXRpbWVzIG5vZGVzIGhhdmUgbW9yZSB0aGVu
IG9uZSByZW5kZXJlci4gT25seSB0aGUgZmlyc3Qgb25lIGdldHMgdGhlIGNvdW50ZXIKKyAgICAg
ICAgLy8gU29tZXRpbWVzIGVsZW1lbnRzIGhhdmUgbW9yZSB0aGVuIG9uZSByZW5kZXJlci4gT25s
eSB0aGUgZmlyc3Qgb25lIGdldHMgdGhlIGNvdW50ZXIKICAgICAgICAgLy8gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9jc3MvY291bnRlci1jcmFzaC5odG1sCi0gICAgICAgIGlmIChnZW5lcmF0aW5n
Tm9kZS0+cmVuZGVyZXIoKSAhPSBvYmplY3QpCisgICAgICAgIGlmIChnZW5lcmF0aW5nRWxlbWVu
dC0+cmVuZGVyZXIoKSAhPSBvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQkVGT1JFOgpAQCAtMTQ5LDcgKzE0Niw3IEBAIHN0YXRpYyBi
b29sIHBsYW5Db3VudGVyKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcm
IGlkZW50aWZpZXIsIGJvCiAgICAgICAgICAgICBpc1Jlc2V0ID0gZmFsc2U7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoTm9kZSogZSA9IG9iamVjdC0+
bm9kZSgpKSB7CisgICAgICAgIGlmIChFbGVtZW50KiBlID0gb2JqZWN0LT5lbGVtZW50KCkpIHsK
ICAgICAgICAgICAgIGlmIChlLT5oYXNUYWdOYW1lKG9sVGFnKSkgewogICAgICAgICAgICAgICAg
IHZhbHVlID0gc3RhdGljX2Nhc3Q8SFRNTE9MaXN0RWxlbWVudCo+KGUpLT5zdGFydCgpOwogICAg
ICAgICAgICAgICAgIGlzUmVzZXQgPSB0cnVlOwpAQCAtMjk5LDggKzI5NiwxNSBAQCBzdGF0aWMg
Q291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpZAogewogICAgIEFTU0VSVChvYmplY3QpOwogCi0gICAgaWYgKG9iamVj
dC0+aGFzQ291bnRlck5vZGVNYXAoKSkgewotICAgICAgICBpZiAoQ291bnRlck1hcCogbm9kZU1h
cCA9IGNvdW50ZXJNYXBzKCkuZ2V0KG9iamVjdCkpIHsKKyAgICAvLyBSZWFsIHRleHQgbm9kZXMg
ZG9uJ3QgaGF2ZSB0aGVpciBvd24gc3R5bGUgc28gdGhleSBjYW4ndCBoYXZlIGNvdW50ZXJzLgor
ICAgIC8vIFdlIGNhbid0IGV2ZW4gbG9vayBhdCB0aGVpciBzdHlsZXMgb3Igd2UnbGwgc2VlIGV4
dHJhIHJlc2V0cyBhbmQgaW5jcmVtZW50cyEKKyAgICBpZiAob2JqZWN0LT5pc1RleHQoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW5kZXJFbGVtZW50KiBlbGVtZW50ID0gdG9S
ZW5kZXJFbGVtZW50KG9iamVjdCk7CisKKyAgICBpZiAoZWxlbWVudC0+aGFzQ291bnRlck5vZGVN
YXAoKSkgeworICAgICAgICBpZiAoQ291bnRlck1hcCogbm9kZU1hcCA9IGNvdW50ZXJNYXBzKCku
Z2V0KGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBpZiAoQ291bnRlck5vZGUqIG5vZGUgPSBub2Rl
TWFwLT5nZXQoaWRlbnRpZmllcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAg
ICAgIH0KQEAgLTMwOCwyMSArMzEyLDIxIEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50
ZXJOb2RlKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAKICAg
ICBib29sIGlzUmVzZXQgPSBmYWxzZTsKICAgICBpbnQgdmFsdWUgPSAwOwotICAgIGlmICghcGxh
bkNvdW50ZXIob2JqZWN0LCBpZGVudGlmaWVyLCBpc1Jlc2V0LCB2YWx1ZSkgJiYgIWFsd2F5c0Ny
ZWF0ZUNvdW50ZXIpCi0gICAgICAgIHJldHVybiAwOworICAgIGlmICghcGxhbkNvdW50ZXIoZWxl
bWVudCwgaWRlbnRpZmllciwgaXNSZXNldCwgdmFsdWUpICYmICFhbHdheXNDcmVhdGVDb3VudGVy
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3
UGFyZW50ID0gMDsKICAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5ld1ByZXZpb3VzU2libGluZyA9
IDA7Ci0gICAgUmVmUHRyPENvdW50ZXJOb2RlPiBuZXdOb2RlID0gQ291bnRlck5vZGU6OmNyZWF0
ZShvYmplY3QsIGlzUmVzZXQsIHZhbHVlKTsKLSAgICBpZiAoZmluZFBsYWNlRm9yQ291bnRlcihv
YmplY3QsIGlkZW50aWZpZXIsIGlzUmVzZXQsIG5ld1BhcmVudCwgbmV3UHJldmlvdXNTaWJsaW5n
KSkKKyAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5ld05vZGUgPSBDb3VudGVyTm9kZTo6Y3JlYXRl
KGVsZW1lbnQsIGlzUmVzZXQsIHZhbHVlKTsKKyAgICBpZiAoZmluZFBsYWNlRm9yQ291bnRlcihl
bGVtZW50LCBpZGVudGlmaWVyLCBpc1Jlc2V0LCBuZXdQYXJlbnQsIG5ld1ByZXZpb3VzU2libGlu
ZykpCiAgICAgICAgIG5ld1BhcmVudC0+aW5zZXJ0QWZ0ZXIobmV3Tm9kZS5nZXQoKSwgbmV3UHJl
dmlvdXNTaWJsaW5nLmdldCgpLCBpZGVudGlmaWVyKTsKICAgICBDb3VudGVyTWFwKiBub2RlTWFw
OwotICAgIGlmIChvYmplY3QtPmhhc0NvdW50ZXJOb2RlTWFwKCkpCi0gICAgICAgIG5vZGVNYXAg
PSBjb3VudGVyTWFwcygpLmdldChvYmplY3QpOworICAgIGlmIChlbGVtZW50LT5oYXNDb3VudGVy
Tm9kZU1hcCgpKQorICAgICAgICBub2RlTWFwID0gY291bnRlck1hcHMoKS5nZXQoZWxlbWVudCk7
CiAgICAgZWxzZSB7CiAgICAgICAgIG5vZGVNYXAgPSBuZXcgQ291bnRlck1hcDsKLSAgICAgICAg
Y291bnRlck1hcHMoKS5zZXQob2JqZWN0LCBhZG9wdFB0cihub2RlTWFwKSk7Ci0gICAgICAgIG9i
amVjdC0+c2V0SGFzQ291bnRlck5vZGVNYXAodHJ1ZSk7CisgICAgICAgIGNvdW50ZXJNYXBzKCku
c2V0KGVsZW1lbnQsIGFkb3B0UHRyKG5vZGVNYXApKTsKKyAgICAgICAgZWxlbWVudC0+c2V0SGFz
Q291bnRlck5vZGVNYXAodHJ1ZSk7CiAgICAgfQogICAgIG5vZGVNYXAtPnNldChpZGVudGlmaWVy
LCBuZXdOb2RlKTsKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCkBAIC0zMzAsOSArMzM0LDkg
QEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQKICAgICAvLyBDaGVja2luZyBpZiBzb21lIG5vZGVz
IHRoYXQgd2VyZSBwcmV2aW91c2x5IGNvdW50ZXIgdHJlZSByb290IG5vZGVzCiAgICAgLy8gc2hv
dWxkIGJlY29tZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUgbm93LgogICAgIENvdW50ZXJNYXBzJiBt
YXBzID0gY291bnRlck1hcHMoKTsKLSAgICBFbGVtZW50KiBzdGF5V2l0aGluID0gcGFyZW50T3JQ
c2V1ZG9Ib3N0RWxlbWVudChvYmplY3QpOworICAgIEVsZW1lbnQqIHN0YXlXaXRoaW4gPSBwYXJl
bnRPclBzZXVkb0hvc3RFbGVtZW50KGVsZW1lbnQpOwogICAgIGJvb2wgc2tpcERlc2NlbmRhbnRz
OwotICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyZW50UmVuZGVyZXIgPSBuZXh0SW5QcmVPcmRl
cihvYmplY3QsIHN0YXlXaXRoaW4pOyBjdXJyZW50UmVuZGVyZXI7IGN1cnJlbnRSZW5kZXJlciA9
IG5leHRJblByZU9yZGVyKGN1cnJlbnRSZW5kZXJlciwgc3RheVdpdGhpbiwgc2tpcERlc2NlbmRh
bnRzKSkgeworICAgIGZvciAoUmVuZGVyRWxlbWVudCogY3VycmVudFJlbmRlcmVyID0gbmV4dElu
UHJlT3JkZXIoZWxlbWVudCwgc3RheVdpdGhpbik7IGN1cnJlbnRSZW5kZXJlcjsgY3VycmVudFJl
bmRlcmVyID0gbmV4dEluUHJlT3JkZXIoY3VycmVudFJlbmRlcmVyLCBzdGF5V2l0aGluLCBza2lw
RGVzY2VuZGFudHMpKSB7CiAgICAgICAgIHNraXBEZXNjZW5kYW50cyA9IGZhbHNlOwogICAgICAg
ICBpZiAoIWN1cnJlbnRSZW5kZXJlci0+aGFzQ291bnRlck5vZGVNYXAoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMzkzLDcgKzM5Nyw3IEBAIGJvb2wgUmVuZGVyQ291bnRlcjo6aXNDb3Vu
dGVyKCkgY29uc3QKIFN0cmluZyBSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQoKSBjb25zdAog
ewogICAgIGlmICghbV9jb3VudGVyTm9kZSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIGJlZm9y
ZUFmdGVyQ29udGFpbmVyID0gcGFyZW50KCk7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIGJlZm9y
ZUFmdGVyQ29udGFpbmVyID0gcGFyZW50KCk7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAg
ICAgICAgICBpZiAoIWJlZm9yZUFmdGVyQ29udGFpbmVyKQogICAgICAgICAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApp
bmRleCBjMmJmODhjNmRmY2I5N2I4YTA2MjViYTc1ZmE1MTZjNGEwMzJiOGNkLi42M2YyNjlhY2Y3
MDYxMzhlZTQxOTA2YzczZjhlNWI0NmYxNzFhODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckVsZW1lbnQuY3BwCkBAIC05Miw3ICs5MiwxMCBAQCBSZW5kZXJFbGVtZW50Ojp+
UmVuZGVyRWxlbWVudCgpCiAgICAgICAgICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0
aGlzKTsKIAogI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICByZW1vdmVTaGFwZUltYWdl
Q2xpZW50KG1fc3R5bGUtPnNoYXBlSW5zaWRlKCkpOworICAgICAgICBpZiAoYXV0byBzaGFwZVZh
bHVlID0gbV9zdHlsZS0+c2hhcGVJbnNpZGUoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gc2hh
cGVJbWFnZSA9IHNoYXBlVmFsdWUtPmltYWdlKCkpCisgICAgICAgICAgICAgICAgc2hhcGVJbWFn
ZS0+cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICB9CiAjZW5kaWYKICAgICB9CiB9CkBAIC05
OTAsNiArOTkzLDggQEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUo
KQogCiB2b2lkIFJlbmRlckVsZW1lbnQ6OndpbGxCZURlc3Ryb3llZCgpCiB7CisgICAgYW5pbWF0
aW9uKCkuY2FuY2VsQW5pbWF0aW9ucyh0aGlzKTsKKwogICAgIGRlc3Ryb3lMZWZ0b3ZlckNoaWxk
cmVuKCk7CiAKICAgICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOwpAQCAtMTAwMywx
MiArMTAwOCwxMyBAQCBSZW5kZXJFbGVtZW50KiBSZW5kZXJFbGVtZW50OjpyZW5kZXJlckZvclJv
b3RCYWNrZ3JvdW5kKCkKICAgICAgICAgLy8gdG8gY3Jhd2wgYXJvdW5kIGEgcmVuZGVyIHRyZWUg
d2l0aCBwb3RlbnRpYWwgOmJlZm9yZS86YWZ0ZXIgY29udGVudCBhbmQKICAgICAgICAgLy8gYW5v
bnltb3VzIGJsb2NrcyBjcmVhdGVkIGJ5IGlubGluZSA8Ym9keT4gdGFncyBldGMuIFdlIGNhbiBs
b2NhdGUgdGhlIDxib2R5PgogICAgICAgICAvLyByZW5kZXIgb2JqZWN0IHZlcnkgZWFzaWx5IHZp
YSB0aGUgRE9NLgotICAgICAgICBIVE1MRWxlbWVudCogYm9keSA9IGRvY3VtZW50KCkuYm9keSgp
OwotICAgICAgICBSZW5kZXJFbGVtZW50KiBib2R5T2JqZWN0ID0gKGJvZHkgJiYgYm9keS0+aGFz
TG9jYWxOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykpID8gYm9keS0+cmVuZGVyZXIoKSA6IDA7Ci0g
ICAgICAgIGlmIChib2R5T2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIGJvZHlPYmplY3Q7Cisg
ICAgICAgIGlmIChhdXRvIGJvZHkgPSBkb2N1bWVudCgpLmJvZHkoKSkgeworICAgICAgICAgICAg
aWYgKGJvZHktPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBib2R5LT5yZW5kZXJlcigpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9
Ci0KICAgICByZXR1cm4gdGhpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCmluZGV4IDcwNzA5YzJjN2I0MzQwNDIwYWRlN2M2ZDIy
OWFkMWUxNDUxOTQ4NzAuLmQxMWNiYzlkN2Y1NmRmMDU2MjcwMTc4ZDAyNzA3ODRmNGUyM2Y2ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5j
cHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVuZGVySW1hZ2VSZXNvdXJjZTo6flJlbmRlckltYWdlUmVz
b3VyY2UoKQogewogfQogCi12b2lkIFJlbmRlckltYWdlUmVzb3VyY2U6OmluaXRpYWxpemUoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgUmVuZGVySW1hZ2VSZXNvdXJjZTo6aW5pdGlhbGl6
ZShSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBBU1NFUlQoIW1fcmVuZGVyZXIpOwog
ICAgIEFTU0VSVChyZW5kZXJlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckltYWdlUmVzb3VyY2UuaAppbmRleCAyZjdmYjlhZDUxMjcyYWY3Y2UyZWQwMTdkZDY2ZTJlYzU5
Y2NjZTA4Li41MzM5YjMyYjk5OTVhMjIzM2Y3M2Y1MTM3MWRiMWM2ZjA3NDNmNWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmgKQEAgLTMzLDcg
KzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBSZW5kZXJPYmplY3Q7Citj
bGFzcyBSZW5kZXJFbGVtZW50OwogCiBjbGFzcyBSZW5kZXJJbWFnZVJlc291cmNlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJJbWFnZVJlc291cmNlKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBSZW5kZXJJbWFnZVJlc291cmNlKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
aW5pdGlhbGl6ZShSZW5kZXJPYmplY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShS
ZW5kZXJFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIHNodXRkb3duKCk7CiAKICAgICB2b2lk
IHNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKik7CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
IAogcHJvdGVjdGVkOgogICAgIFJlbmRlckltYWdlUmVzb3VyY2UoKTsKLSAgICBSZW5kZXJPYmpl
Y3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVyRWxlbWVudCogbV9yZW5kZXJlcjsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9jYWNoZWRJbWFnZTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNl
U3R5bGVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNv
dXJjZVN0eWxlSW1hZ2UuY3BwCmluZGV4IDQ0ZWZlMmY5ODhhNzNlNWNhODJkMzdiNzAyYzg2NjI2
ZGVlNDc1ZjAuLmU1MDUyZjE4ZjA4ODc5ZGVhYjJiM2I2M2E3ZTI5MjU5MDE2OWViZjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmNwcApAQCAtNDQsNyArNDQsNyBAQCBSZW5kZXJJbWFnZVJlc291cmNlU3R5
bGVJbWFnZTo6flJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKCkKIHsKIH0KIAotdm9pZCBS
ZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW5pdGlhbGl6ZShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQordm9pZCBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6aW5pdGlhbGl6ZShS
ZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBSZW5kZXJJbWFnZVJlc291cmNlOjppbml0
aWFsaXplKHJlbmRlcmVyKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaAppbmRleCBmNDNmZjcyMmM3YmIzZTEw
OGU3NmZjNTEzODQ5YzkwZjJlM2IwZjJkLi5mMmU4OGNjNTdlMjFlMDVhOTVhNjgxMDQ3MzE2Y2E4
ZDQxMzA5YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1h
Z2VSZXNvdXJjZVN0eWxlSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7
CiAKIGNsYXNzIFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlIDogcHVibGljIFJlbmRlcklt
YWdlUmVzb3VyY2UgewogcHVibGljOgpAQCAtNDIsMjQgKzQyLDI1IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2Uoc3R5bGVJbWFnZSkpOwogICAgIH0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShSZW5k
ZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2h1dGRvd24oKTsKIAotICAgIHZpcnR1YWwg
Ym9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SW1hZ2U+IGltYWdlKGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJ
bWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBpbml0
aWFsaXplKFJlbmRlckVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2h1dGRv
d24oKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdl
KGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAwKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc3R5bGVJ
bWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVy
U2l6ZUZvclJlbmRlcmVyKGNvbnN0IEludFNpemUmKTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdl
Q29udGFpbmVyU2l6ZSgpOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOyB9CisgICAgdmlydHVh
bCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBJbnRTaXplJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVXaWR0aCgpOyB9CisgICAgdmly
dHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsgfQogCiAgICAgdmlydHVh
bCBMYXlvdXRTaXplIGltYWdlU2l6ZShmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6ZShtX3JlbmRlcmVyLCBtdWx0aXBsaWVyKTsg
fQogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbnRyaW5zaWNTaXplKGZsb2F0IG11bHRpcGxpZXIp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VTaXplKG1fcmVuZGVy
ZXIsIG11bHRpcGxpZXIpOyB9CiAKLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0
cigpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZGF0YSgpOyB9CisgICAgdmlydHVhbCBX
cmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3N0eWxl
SW1hZ2UtPmRhdGEoKTsgfQogCi1wcml2YXRlOgogICAgIGV4cGxpY2l0IFJlbmRlckltYWdlUmVz
b3VyY2VTdHlsZUltYWdlKFN0eWxlSW1hZ2UqKTsKICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9z
dHlsZUltYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZjA4YTU0Yjk0ZTAxZmRlNDM1NzE0MDFkYTY0MTdlZTZk
ZmI2NzI0Yy4uNDZhZWY0OGI4YWE5YTg2NzAyZjQ1Mjk3ZjY3ZjA5Mjg5OTcwNzljMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAK
QEAgLTE3MzgsNyArMTczOCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpzaG91bGRQ
cm9wYWdhdGVDb21wb3NpdGluZ1RvRW5jbG9zaW5nRnJhbWUoKSBjb25zdAogICAgIC8vIGlzIHRv
IGhhdmUgdGhlIHBhcmVudCBkb2N1bWVudCBiZWNvbWUgY29tcG9zaXRlZCB0b28uIEhvd2V2ZXIs
IHRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIG9uIHBsYXRmb3JtcyB0aGF0CiAgICAgLy8gdXNlIG5h
dGl2ZSB2aWV3cyBmb3IgZnJhbWVzIChsaWtlIE1hYyksIHNvIGRpc2FibGUgdGhhdCBiZWhhdmlv
ciBvbiB0aG9zZSBwbGF0Zm9ybXMgZm9yIG5vdy4KICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQq
IG93bmVyRWxlbWVudCA9IG1fcmVuZGVyVmlldy5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBvd25lckVsZW1lbnQgPyBvd25lckVsZW1lbnQt
PnJlbmRlcmVyKCkgOiAwOworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gb3duZXJFbGVt
ZW50ID8gb3duZXJFbGVtZW50LT5yZW5kZXJlcigpIDogMDsKIAogICAgIC8vIElmIHdlIGFyZSB0
aGUgdG9wLWxldmVsIGZyYW1lLCBkb24ndCBwcm9wYWdhdGUuCiAgICAgaWYgKCFvd25lckVsZW1l
bnQpCkBAIC0xNzgwLDcgKzE3ODAsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVl
ZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIFJlbmRlcgogLy8gc3Rh
dGljCiBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0xheWVy
KGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgUmVuZGVyTGF5ZXI6OlZpZXdwb3J0Q29uc3RyYWlu
ZWROb3RDb21wb3NpdGVkUmVhc29uKiB2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJl
YXNvbikgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJmxheWVyLT5yZW5k
ZXJlcigpOworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gJmxheWVyLT5yZW5kZXJlcigp
OwogICAgIC8vIFRoZSBjb21wb3NpdGluZyBzdGF0ZSBvZiBhIHJlZmxlY3Rpb24gc2hvdWxkIG1h
dGNoIHRoYXQgb2YgaXRzIHJlZmxlY3RlZCBsYXllci4KICAgICBpZiAobGF5ZXItPmlzUmVmbGVj
dGlvbigpKSB7CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOyAvLyBUaGUg
UmVuZGVyUmVwbGljYSdzIHBhcmVudCBpcyB0aGUgb2JqZWN0IGJlaW5nIHJlZmxlY3RlZC4KQEAg
LTE4MDUsMTIgKzE4MDUsMTIgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNhbkJlQ29t
cG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IFdlIGRpc2FibGUgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgZm9yIGVsZW1lbnRzIGluIGEgUmVu
ZGVyRmxvd1RocmVhZCBhcyBpdCBkb2Vzbid0IHdvcmsgcHJvcGVybHkuCiAgICAgLy8gU2VlIGh0
dHA6Ly93ZWJraXQub3JnL2IvODQ5MDAgdG8gcmUtZW5hYmxlIGl0LgotICAgIHJldHVybiBtX2hh
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcgJiYgbGF5ZXItPmlzU2VsZlBhaW50aW5nTGF5ZXIoKSAm
JiBsYXllci0+cmVuZGVyZXIoKS5mbG93VGhyZWFkU3RhdGUoKSA9PSBSZW5kZXJPYmplY3Q6Ok5v
dEluc2lkZUZsb3dUaHJlYWQ7CisgICAgcmV0dXJuIG1faGFzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
ZyAmJiBsYXllci0+aXNTZWxmUGFpbnRpbmdMYXllcigpICYmIGxheWVyLT5yZW5kZXJlcigpLmZs
b3dUaHJlYWRTdGF0ZSgpID09IFJlbmRlckVsZW1lbnQ6Ok5vdEluc2lkZUZsb3dUaHJlYWQ7CiB9
CiAKIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJhY2tpbmdTdG9yZShj
b25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0Fu
Y2VzdG9yTGF5ZXIsIGNvbnN0IEludFJlY3QmIGxheWVyQ29tcG9zaXRlZEJvdW5kc0luQW5jZXN0
b3IsIGNvbnN0IEludFJlY3QmIGFuY2VzdG9yQ29tcG9zaXRlZEJvdW5kcykgY29uc3QKIHsKLSAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gJmxheWVyLT5yZW5kZXJlcigpOworICAgIFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyID0gJmxheWVyLT5yZW5kZXJlcigpOwogICAgIGlmIChjb21wb3Np
dGluZ0FuY2VzdG9yTGF5ZXIKICAgICAgICAgJiYgIShjb21wb3NpdGluZ0FuY2VzdG9yTGF5ZXIt
PmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpLT5kcmF3c0NvbnRlbnQoKQogICAgICAgICAgICAg
fHwgY29tcG9zaXRpbmdBbmNlc3RvckxheWVyLT5iYWNraW5nKCktPnBhaW50c0ludG9XaW5kb3co
KQpAQCAtMTg1OCw3ICsxODU4LDcgQEAgQ29tcG9zaXRpbmdSZWFzb25zIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWUKICAgICBpZiAo
IWxheWVyIHx8ICFsYXllci0+aXNDb21wb3NpdGVkKCkpCiAgICAgICAgIHJldHVybiByZWFzb25z
OwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9ICZsYXllci0+cmVuZGVyZXIoKTsKKyAg
ICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9ICZsYXllci0+cmVuZGVyZXIoKTsKICAgICBpZiAo
bGF5ZXItPmlzUmVmbGVjdGlvbigpKSB7CiAgICAgICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBh
cmVudCgpOwogICAgICAgICBsYXllciA9IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChyZW5kZXJl
ciktPmxheWVyKCk7CkBAIC0yMDYzLDcgKzIwNjMsNyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS5pc1Njcm9sbGFibGUoKTsKIH0KIAotYm9v
bCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0o
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KSBjb25zdAogewogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNsaWVu
dDo6VGhyZWVEVHJhbnNmb3JtVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIw
NzQsNyArMjA3NCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yVHJhbnNmb3JtKFJlbmRlck9iamVjdCogcmVuZGVyCiAgICAgcmV0dXJuIHJlbmRl
cmVyLT5oYXNUcmFuc2Zvcm0oKSAmJiBzdHlsZS0+dHJhbnNmb3JtKCkuaGFzM0RPcGVyYXRpb24o
KTsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdG
b3JWaWRlbyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JWaWRlbyhSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikgY29uc3QKIHsKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVD
bGllbnQ6OlZpZGVvVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTIxMDIsMTMg
KzIxMDIsMTMgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JWaWRlbyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52
YXMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFzKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KSBjb25zdAogewogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNsaWVu
dDo6Q2FudmFzVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChyZW5k
ZXJlci0+aXNDYW52YXMoKSkgewotICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0g
c3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihyZW5kZXJlci0+bm9kZSgpKTsKKyAgICAg
ICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcyA9IHRvSFRNTENhbnZhc0VsZW1lbnQocmVuZGVy
ZXItPmVsZW1lbnQoKSk7CiAjaWYgVVNFKENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykK
ICAgICAgICAgYm9vbCBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3JjZUNvbXBvc2l0aW5nID0gdHJ1
ZTsKICNlbHNlCkBAIC0yMTE2LDEwICsyMTE2LDExIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFzKFJlbmRlck9iamVjdCogcmVuZGVyZXIp
CiAjZW5kaWYKICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpICYmIGNh
bnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpLT5pc0FjY2VsZXJhdGVkKCkgJiYgKGNhbnZhcy0+cmVu
ZGVyaW5nQ29udGV4dCgpLT5pczNkKCkgfHwgaXNDYW52YXNMYXJnZUVub3VnaFRvRm9yY2VDb21w
b3NpdGluZyk7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JQbHVnaW4oUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAg
aWYgKCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpQbHVnaW5UcmlnZ2Vy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE0MCw3ICsyMTQxLDcgQEAgYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4oUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gY29udGVudEJveC5oZWlnaHQoKSAqIGNvbnRlbnRC
b3gud2lkdGgoKSA+IDE7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgaWYgKCFyZW5kZXJlci0+aXNXaWRnZXQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjE2NSw3ICsyMTY2LDcgQEAgYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKQogICAgIHJldHVybiBjb250ZW50Qm94LmhlaWdodCgpICogY29udGVudEJv
eC53aWR0aCgpID4gMDsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jv
b2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9u
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIGlmICghKG1fY29tcG9zaXRp
bmdUcmlnZ2VycyAmIENocm9tZUNsaWVudDo6QW5pbWF0aW9uVHJpZ2dlcikpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTIxODIsNyArMjE4Myw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKFJlbmRlck9iamVjdCogcmVuZGVy
CiAgICAgICAgICAgICB8fCBhbmltQ29udHJvbGxlci5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRl
cmVyKHJlbmRlcmVyLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CiB9CiAKLWJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24o
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFudHMsIGJv
b2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21w
b3NpdGluZ1JlYXNvbiYgcmVhc29uKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JJbmRpcmVjdFJlYXNvbihSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFudHMsIGJvb2wgaGFzM0RUcmFuc2Zvcm1l
ZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbiYgcmVh
c29uKSBjb25zdAogewogICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxP
YmplY3QocmVuZGVyZXIpLT5sYXllcigpOwogCkBAIC0yMjExLDcgKzIyMTIsNyBAQCBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29u
KFJlbmRlck9iamVjdCogcgogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21w
b3NpdGluZ0ZvckZpbHRlcnMoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAjaWYg
RU5BQkxFKENTU19GSUxURVJTKQogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENo
cm9tZUNsaWVudDo6RmlsdGVyVHJpZ2dlcikpCkBAIC0yMjI0LDcgKzIyMjUsNyBAQCBib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMoUmVuZGVy
T2JqZWN0KiByZW5kZXJlcgogI2VuZGlmCiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikg
Y29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
QmxlbmRpbmcoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAjaWYgRU5BQkxFKENT
U19DT01QT1NJVElORykKICAgICByZXR1cm4gcmVuZGVyZXItPmhhc0JsZW5kTW9kZSgpOwpAQCAt
MjI1MCw3ICsyMjUxLDcgQEAgc3RhdGljIGJvb2wgaXNWaWV3cG9ydENvbnN0cmFpbmVkRml4ZWRP
clN0aWNreUxheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQ
b3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciogbGF5ZXIs
IFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmll
d3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0Citib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBvc2l0aW9uKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIFJlbmRlckxheWVyOjpWaWV3
cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJhaW5lZE5v
dENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgLy8gcG9zaXRpb246Zml4ZWQgZWxlbWVu
dHMgdGhhdCBjcmVhdGUgdGhlaXIgb3duIHN0YWNraW5nIGNvbnRleHQgKGUuZy4gaGF2ZSBhbiBl
eHBsaWNpdCB6LWluZGV4LAogICAgIC8vIG9wYWNpdHksIHRyYW5zZm9ybSkgY2FuIGdldCB0aGVp
ciBvd24gY29tcG9zaXRlZCBsYXllci4gQSBzdGFja2luZyBjb250ZXh0IGlzIHJlcXVpcmVkIG90
aGVyd2lzZQpAQCAtMjMyMSw3ICsyMzIyLDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhjb25zdCBSZW5kZXIKICAg
ICByZXR1cm4gbGF5ZXItPm5lZWRzQ29tcG9zaXRlZFNjcm9sbGluZygpOwogfQogCi1ib29sIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRp
b24oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjppc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbihSZW5kZXJFbGVtZW50
KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBD
aHJvbWVDbGllbnQ6OkFuaW1hdGlvblRyaWdnZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5k
ZXggMDBiNjlmNjQ5MzhmOTE4MGU0MGQ4ZjE2ZmNlZGZkZDRkYTU3MjUzMy4uNjhlYzI1Y2FkYmRk
ZjNkYjBmYjA1MjU4ZmZjOTZhZTY0YTQyOWRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtNDAsMTIgKzQwLDEwIEBAIGNsYXNz
IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogY2xhc3MgR3JhcGhpY3NMYXllcjsK
IGNsYXNzIEdyYXBoaWNzTGF5ZXJVcGRhdGVyOwogY2xhc3MgUmVuZGVyRW1iZWRkZWRPYmplY3Q7
CitjbGFzcyBSZW5kZXJWaWRlbzsKIGNsYXNzIFJlbmRlcldpZGdldDsKIGNsYXNzIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOwogY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwot
I2lmIEVOQUJMRShWSURFTykKLWNsYXNzIFJlbmRlclZpZGVvOwotI2VuZGlmCiBjbGFzcyBUaWxl
ZEJhY2tpbmc7CiAKIHR5cGVkZWYgdW5zaWduZWQgTGF5ZXJUcmVlRmxhZ3M7CkBAIC0zMzcsNyAr
MzM1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZUNvbXBvc2l0ZWRDaGlsZHJlbihSZW5k
ZXJMYXllciopOwogCiAgICAgYm9vbCBsYXllckhhczNEQ29udGVudChjb25zdCBSZW5kZXJMYXll
ciopIGNvbnN0OwotICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRp
b24oUmVuZGVyT2JqZWN0KikgY29uc3Q7CisgICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZFRy
YW5zZm9ybUFuaW1hdGlvbihSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICBib29sIGhhc0Fu
eUFkZGl0aW9uYWxDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyKiByb290TGF5ZXIp
IGNvbnN0OwogCkBAIC0zNjIsMTggKzM2MCwxOCBAQCBwcml2YXRlOgogICAgIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvcigpIGNvbnN0OwogCiAgICAgLy8gV2hldGhl
ciBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciBhbmltYXRpb24gZW5mb3JjZXMgdGhlIG5lZWQgZm9y
IGEgY29tcG9zaXRpbmcgbGF5ZXIuCi0gICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5p
bWF0aW9uKFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclRyYW5zZm9ybShSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICBib29sIHJlcXVpcmVzQ29t
cG9zaXRpbmdGb3JWaWRlbyhSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAgICBib29sIHJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JDYW52YXMoUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0gICAgYm9vbCByZXF1
aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIGJvb2wg
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIGJv
b2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMoUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0g
ICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlcikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKFJl
bmRlckVsZW1lbnQqKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFu
c2Zvcm0oUmVuZGVyRWxlbWVudCopIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclZpZGVvKFJlbmRlckVsZW1lbnQqKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JDYW52YXMoUmVuZGVyRWxlbWVudCopIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXND
b21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJFbGVtZW50KikgY29uc3Q7CisgICAgYm9vbCByZXF1
aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyRWxlbWVudCopIGNvbnN0OworICAgIGJvb2wg
cmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMoUmVuZGVyRWxlbWVudCopIGNvbnN0OworICAg
IGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckJsZW5kaW5nKFJlbmRlckVsZW1lbnQqKSBjb25z
dDsKICAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUoKSBjb25z
dDsKLSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3Qq
LCBjb25zdCBSZW5kZXJMYXllciosIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90
Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JQb3NpdGlvbihSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyTGF5ZXIqLCBSZW5kZXJM
YXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qID0gMCkgY29uc3Q7
CiAgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcoY29uc3Qg
UmVuZGVyTGF5ZXIqKSBjb25zdDsKLSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JJbmRp
cmVjdFJlYXNvbihSZW5kZXJPYmplY3QqLCBib29sIGhhc0NvbXBvc2l0ZWREZXNjZW5kYW50cywg
Ym9vbCBoYXMzRFRyYW5zZm9ybWVkRGVzY2VuZGFudHMsIFJlbmRlckxheWVyOjpJbmRpcmVjdENv
bXBvc2l0aW5nUmVhc29uJikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9y
SW5kaXJlY3RSZWFzb24oUmVuZGVyRWxlbWVudCosIGJvb2wgaGFzQ29tcG9zaXRlZERlc2NlbmRh
bnRzLCBib29sIGhhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50cywgUmVuZGVyTGF5ZXI6OkluZGly
ZWN0Q29tcG9zaXRpbmdSZWFzb24mKSBjb25zdDsKIAogICAgIHZvaWQgYWRkVmlld3BvcnRDb25z
dHJhaW5lZExheWVyKFJlbmRlckxheWVyKik7CiAgICAgdm9pZCByZWdpc3Rlck9yVXBkYXRlVmll
d3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGVlZWZjNjJlNzA5YmZiZWYzMmU4NDgzNjgyNjY4
YTc0NDgwMzM5MmQuLmEwYjIyZGQwNjBhMzNkYjk0NWQxZWViY2Q1NjUxNWYzYzczZDE4MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC03MzIsNyArNzMy
LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldExheWVyTmVlZHNGdWxsUmVwYWludEZvclBvc2l0
aW9uZWRNb3ZlbWVudExheW91dCgpCiAKIFJlbmRlckJsb2NrKiBSZW5kZXJPYmplY3Q6OmNvbnRh
aW5pbmdCbG9jaygpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvID0gcGFyZW50KCk7Cisg
ICAgUmVuZGVyRWxlbWVudCogbyA9IHBhcmVudCgpOwogICAgIGlmICghbyAmJiBpc1JlbmRlclNj
cm9sbGJhclBhcnQoKSkKICAgICAgICAgbyA9IHRvUmVuZGVyU2Nyb2xsYmFyUGFydCh0aGlzKS0+
cmVuZGVyZXJPd25pbmdTY3JvbGxiYXIoKTsKIApAQCAtNzU3LDggKzc1Nyw4IEBAIHN0YXRpYyBi
b29sIG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBGaWxsTGF5ZXIqCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gTWFrZSBzdXJl
IHdlIGhhdmUgYSB2YWxpZCBpbWFnZS4KLSAgICBTdHlsZUltYWdlKiBpbWcgPSBsYXllci0+aW1h
Z2UoKTsKLSAgICBpZiAoIWltZyB8fCAhaW1nLT5jYW5SZW5kZXIocmVuZGVyZXIsIHJlbmRlcmVy
LT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKQorICAgIFN0eWxlSW1hZ2UqIGltYWdlID0gbGF5
ZXItPmltYWdlKCk7CisgICAgaWYgKCFpbWFnZSB8fCAhaW1hZ2UtPmNhblJlbmRlcihyZW5kZXJl
ciwgcmVuZGVyZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGlmICghbGF5ZXItPnhQb3NpdGlvbigpLmlzWmVybygpIHx8ICFsYXllci0+
eVBvc2l0aW9uKCkuaXNaZXJvKCkpCkBAIC03NzQsOSArNzc0LDkgQEAgc3RhdGljIGJvb2wgbXVz
dFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZp
bGxMYXllcioKICAgICAgICAgaWYgKHNpemUud2lkdGgoKS5pc1BlcmNlbnQoKSB8fCBzaXplLmhl
aWdodCgpLmlzUGVyY2VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIC8v
IElmIHRoZSBpbWFnZSBoYXMgbmVpdGhlciBhbiBpbnRyaW5zaWMgd2lkdGggbm9yIGFuIGludHJp
bnNpYyBoZWlnaHQsIGl0cyBzaXplIGlzIGRldGVybWluZWQgYXMgZm9yICdjb250YWluJy4KLSAg
ICAgICAgaWYgKChzaXplLndpZHRoKCkuaXNBdXRvKCkgfHwgc2l6ZS5oZWlnaHQoKS5pc0F1dG8o
KSkgJiYgaW1nLT5pc0dlbmVyYXRlZEltYWdlKCkpCisgICAgICAgIGlmICgoc2l6ZS53aWR0aCgp
LmlzQXV0bygpIHx8IHNpemUuaGVpZ2h0KCkuaXNBdXRvKCkpICYmIGltYWdlLT5pc0dlbmVyYXRl
ZEltYWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGltZy0+
dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpKQorICAgIH0gZWxzZSBpZiAoaW1hZ2UtPnVzZXNJbWFn
ZUNvbnRhaW5lclNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFs
c2U7CkBAIC03ODcsNyArNzg3LDcgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OmJvcmRlckltYWdlSXNM
b2FkZWRBbmRDYW5CZVJlbmRlcmVkKCkgY29uc3QKICAgICBBU1NFUlQoc3R5bGUoKS0+aGFzQm9y
ZGVyKCkpOwogCiAgICAgU3R5bGVJbWFnZSogYm9yZGVySW1hZ2UgPSBzdHlsZSgpLT5ib3JkZXJJ
bWFnZSgpLmltYWdlKCk7Ci0gICAgcmV0dXJuIGJvcmRlckltYWdlICYmIGJvcmRlckltYWdlLT5j
YW5SZW5kZXIodGhpcywgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSAmJiBib3JkZXJJbWFnZS0+
aXNMb2FkZWQoKTsKKyAgICByZXR1cm4gYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UtPmNhblJl
bmRlcih0b1JlbmRlckVsZW1lbnQodGhpcyksIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgJiYg
Ym9yZGVySW1hZ2UtPmlzTG9hZGVkKCk7CiB9CiAKIGJvb2wgUmVuZGVyT2JqZWN0OjptdXN0UmVw
YWludEJhY2tncm91bmRPckJvcmRlcigpIGNvbnN0CkBAIC0xOTg1LDggKzE5ODUsNiBAQCB2b2lk
IFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKICAgICBpZiAoZnJhbWUoKS5ldmVudEhh
bmRsZXIoKS5hdXRvc2Nyb2xsUmVuZGVyZXIoKSA9PSB0aGlzKQogICAgICAgICBmcmFtZSgpLmV2
ZW50SGFuZGxlcigpLnN0b3BBdXRvc2Nyb2xsVGltZXIodHJ1ZSk7CiAKLSAgICBhbmltYXRpb24o
KS5jYW5jZWxBbmltYXRpb25zKHRoaXMpOwotCiAgICAgLy8gRm9yIGFjY2Vzc2liaWxpdHkgbWFu
YWdlbWVudCwgbm90aWZ5IHRoZSBwYXJlbnQgb2YgdGhlIGltbWluZW50IGNoYW5nZSB0byBpdHMg
Y2hpbGQgc2V0LgogICAgIC8vIFdlIGRvIGl0IG5vdywgYmVmb3JlIHJlbW92ZSgpLCB3aGlsZSB0
aGUgcGFyZW50IHBvaW50ZXIgaXMgc3RpbGwgYXZhaWxhYmxlLgogICAgIGlmIChBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCkBAIC0xOTk0
LDcgKzE5OTIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAg
IHJlbW92ZUZyb21QYXJlbnQoKTsKIAotICAgIEFTU0VSVChkb2N1bWVudEJlaW5nRGVzdHJveWVk
KCkgfHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNTbG93UmVwYWludE9iamVjdCh0aGlzKSk7Cisg
ICAgQVNTRVJUKGRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSB8fCAhaXNSZW5kZXJFbGVtZW50KCkg
fHwgIXZpZXcoKS5mcmFtZVZpZXcoKS5oYXNTbG93UmVwYWludE9iamVjdCh0b1JlbmRlckVsZW1l
bnQodGhpcykpKTsKIAogICAgIC8vIFRoZSByZW1vdmUoKSBjYWxsIGFib3ZlIG1heSBpbnZva2Ug
YXhPYmplY3RDYWNoZSgpLT5jaGlsZHJlbkNoYW5nZWQoKSBvbiB0aGUgcGFyZW50LCB3aGljaCBt
YXkgcmVxdWlyZSB0aGUgQVggcmVuZGVyCiAgICAgLy8gb2JqZWN0IGZvciB0aGlzIHJlbmRlcmVy
LiBTbyB3ZSByZW1vdmUgdGhlIEFYIHJlbmRlciBvYmplY3Qgbm93LCBhZnRlciB0aGUgcmVuZGVy
ZXIgaXMgcmVtb3ZlZC4KQEAgLTIxMTQsMTYgKzIxMTIsNiBAQCB2b2lkIFJlbmRlck9iamVjdDo6
ZGVzdHJveSgpCiAgICAgYXJlbmFEZWxldGUocmVuZGVyQXJlbmEoKSwgdGhpcyk7CiB9CiAKLSNp
ZiBFTkFCTEUoQ1NTX1NIQVBFUykKLXZvaWQgUmVuZGVyT2JqZWN0OjpyZW1vdmVTaGFwZUltYWdl
Q2xpZW50KFNoYXBlVmFsdWUqIHNoYXBlVmFsdWUpCi17Ci0gICAgaWYgKCFzaGFwZVZhbHVlKQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKFN0eWxlSW1hZ2UqIHNoYXBlSW1hZ2UgPSBzaGFwZVZh
bHVlLT5pbWFnZSgpKQotICAgICAgICBzaGFwZUltYWdlLT5yZW1vdmVDbGllbnQodGhpcyk7Ci19
Ci0jZW5kaWYKLQogdm9pZCBSZW5kZXJPYmplY3Q6OmFyZW5hRGVsZXRlKFJlbmRlckFyZW5hJiBh
cmVuYSwgdm9pZCogYmFzZSkKIHsKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKaW5kZXggNmFlMGUxY2MzMGFmNWQxNmM1YmNkMWYwNDllMjE0YjNk
OWRlNmZkYy4uNmIyOGNkZDllMGY5NWVkOWVlZDFlMDM3NjdkMTI2ZjA3NjYyNjJiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtOTcyLDEwICs5NzIsNiBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGlzV0JSKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsgcmV0dXJuIGZhbHNlOyB9CiAKLSNpZiBFTkFCTEUoQ1NTX1NIQVBFUykKLSAgICB2
b2lkIHJlbW92ZVNoYXBlSW1hZ2VDbGllbnQoU2hhcGVWYWx1ZSopOwotI2VuZGlmCi0KICNpZm5k
ZWYgTkRFQlVHCiAgICAgdm9pZCBjaGVja0Jsb2NrUG9zaXRpb25lZE9iamVjdHNOZWVkTGF5b3V0
KCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmNwcAppbmRleCA3ZmY1ZWRiNDJlMzQ0ZWY5OGRlZGIzMTJmODVjYTA3YzdlNzM5NTVm
Li5mMGI5NjZiNzYwMjU3MTM3Y2RjMTJmMzQzYTQwNjJkODZjZTU0NTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3BwCkBAIC0yMDksMTAg
KzIwOSwxMCBAQCB2b2lkIFJlbmRlclNjcm9sbGJhclBhcnQ6OnBhaW50SW50b1JlY3QoR3JhcGhp
Y3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0CiAgICAgfQogfQogCi1SZW5kZXJPYmpl
Y3QqIFJlbmRlclNjcm9sbGJhclBhcnQ6OnJlbmRlcmVyT3duaW5nU2Nyb2xsYmFyKCkgY29uc3QK
K1JlbmRlckJveCogUmVuZGVyU2Nyb2xsYmFyUGFydDo6cmVuZGVyZXJPd25pbmdTY3JvbGxiYXIo
KSBjb25zdAogewogICAgIGlmICghbV9zY3JvbGxiYXIpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gbV9zY3JvbGxiYXItPm93bmluZ1JlbmRl
cmVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJQYXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFy
UGFydC5oCmluZGV4IDAxZjZmNDdjNjk0YjEzZjM1MmU1YzRkZjdiMTUyMTRjOTIxYjlhOTEuLjYy
Y2FjM2U0ZGJhNTMxMWM5YjIwNWYwMDAzZjY3NGM3MGQwZjczNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaApAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBMYXlvdXRVbml0IG1hcmdpblJpZ2h0KCkgY29uc3QgT1ZFUlJJ
REUgeyBBU1NFUlQoaXNJbnRlZ2VyVmFsdWUobV9tYXJnaW5Cb3gucmlnaHQoKSkpOyByZXR1cm4g
bV9tYXJnaW5Cb3gucmlnaHQoKTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzUmVuZGVyU2Nyb2xs
YmFyUGFydCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyT3duaW5nU2Nyb2xsYmFyKCkgY29uc3Q7CisgICAgUmVuZGVyQm94KiByZW5kZXJlck93bmlu
Z1Njcm9sbGJhcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0eWxl
V2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG5ld1N0
eWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5k
ZXggZTBmZGU1OGU1YjQyZDEwNmM5Yjc2NWFjMWE0ZTU0YmVhNTY3MTc2ZC4uMjA5Y2MxMGFmNDBk
OWE3ZmU3MDEyY2RmODhmZTViMDY3NjI0OGUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTEyNjQsNyArMTI2NCw3IEBAIHZvaWQgUmVuZGVy
VGFibGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmRlcnMoUGFpbnRJbmZvJiBwYWludEluZm8sIGNv
bnN0IExheW91dFBvCiAgICAgfQogfQogCi12b2lkIFJlbmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNr
Z3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50
JiBwYWludE9mZnNldCwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KQordm9pZCBSZW5k
ZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYgcGFpbnRJ
bmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQsIFJlbmRlckVsZW1lbnQqIGJhY2tn
cm91bmRPYmplY3QpCiB7CiAgICAgaWYgKCFwYWludEluZm8uc2hvdWxkUGFpbnRXaXRoaW5Sb290
KHRoaXMpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmgKaW5kZXggZmYzYjM3YmVlYTczNmUyZDMxZDhhY2Y1Mzk2OWNmMWVmNzM3MzBi
Yi4uY2MyM2E4NDJhN2MwNzA3NTY2MDRkOWIyMjNlN2E0YjA0NjIxOTFmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaApAQCAtMTI4LDcgKzEyOCw3IEBAIHB1
YmxpYzoKICAgICBib29sIGFsaWduTGVmdFJpZ2h0Qm9yZGVyUGFpbnRSZWN0KGludCYgbGVmdFhP
ZmZzZXQsIGludCYgcmlnaHRYT2Zmc2V0KTsKICAgICBib29sIGFsaWduVG9wQm90dG9tQm9yZGVy
UGFpbnRSZWN0KGludCYgdG9wWU9mZnNldCwgaW50JiBib3R0b21ZT2Zmc2V0KTsKICAgICB2b2lk
IHBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYpOwot
ICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiwgY29uc3QgTGF5
b3V0UG9pbnQmLCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmplY3QpOworICAgIHZvaWQgcGFp
bnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmLCBS
ZW5kZXJFbGVtZW50KiBiYWNrZ3JvdW5kT2JqZWN0KTsKIAogICAgIExheW91dFVuaXQgY2VsbEJh
c2VsaW5lUG9zaXRpb24oKSBjb25zdDsKICAgICBib29sIGlzQmFzZWxpbmVBbGlnbmVkKCkgY29u
c3QgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggNjFiNmEwZWIw
YzAwZTk3NTIzYmRkZDhlZDExMGVlOWQ3NjA2YmU4Mi4uNDQ0MGE4YzcwOTgzODQ4NGZhNGU2MWMz
MTEyNDQ2Y2RlOGQ5OTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtNjYsNyArNjYsNyBAQCBSZW5kZXJWaWV3OjpSZW5kZXJWaWV3KERvY3VtZW50JiBkb2N1
bWVudCkKICAgICAsIG1fbWF4aW1hbE91dGxpbmVTaXplKDApCiAgICAgLCBtX3BhZ2VMb2dpY2Fs
SGVpZ2h0KDApCiAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZChmYWxzZSkKLSAgICAs
IG1fbGF5b3V0U3RhdGUoMCkKKyAgICAsIG1fbGF5b3V0U3RhdGUobnVsbHB0cikKICAgICAsIG1f
bGF5b3V0U3RhdGVEaXNhYmxlQ291bnQoMCkKICAgICAsIG1fcmVuZGVyUXVvdGVIZWFkKDApCiAg
ICAgLCBtX3JlbmRlckNvdW50ZXJDb3VudCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvRmlsbExheWVyLmNwcAppbmRleCA1MzA3NDcxNjdiZjQ3YjkxZDk2YmE3YTc2MmM4OWMx
NGNkZWRhYzA3Li4zYzU2M2IyNzhkZmQ0NmQ2ZDAwOTc0NGRjN2E4NjBlZDJkOTMzMmFhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcApAQCAtMzUwLDcg
KzM1MCw3IEBAIGJvb2wgRmlsbExheWVyOjppbWFnZXNBcmVMb2FkZWQoKSBjb25zdAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEZpbGxMYXllcjo6aGFzT3BhcXVlSW1hZ2UoY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFn
ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikgY29uc3QKIHsKICAgICBpZiAoIW1faW1h
Z2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9GaWxsTGF5ZXIuaAppbmRleCBlOTgwNzM0ZGFhNDRmYzA2NTkwYmY0ZmU1MDQxYjFlM2VmMjVi
MTYxLi5iZTQ4MThmZmZkNWYyNjQxYWU1ZmY0NTE5ZDE1NzlhMmFhZjIxYTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oCkBAIC0zNCw2ICszNCw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgUmVuZGVyRWxlbWVudDsKKwogc3RydWN0IEZp
bGxTaXplIHsKICAgICBGaWxsU2l6ZSgpCiAgICAgICAgIDogdHlwZShTaXplTGVuZ3RoKQpAQCAt
MTY2LDcgKzE2OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbmV4dCA/IG1fbmV4dC0+
aGFzRml4ZWRJbWFnZSgpIDogZmFsc2U7CiAgICAgfQogCi0gICAgYm9vbCBoYXNPcGFxdWVJbWFn
ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGhhc09wYXF1ZUltYWdlKGNv
bnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKICAgICBib29sIGhhc1JlcGVhdFhZKCkgY29uc3Q7
CiAgICAgYm9vbCBjbGlwT2NjbHVkZXNOZXh0TGF5ZXJzKGJvb2wgZmlyc3RMYXllcikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxp
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaAppbmRl
eCAwYWE0ZDZmYmU0ZjUxMTNkYjNmYmUyN2U2ZTkwYjhiZTRiZjIzMjAyLi42YjhjN2YzMjNkMGY1
NWQwMjZmMDQ1ZDNmNzUwZGIxN2VmNzJkOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oCkBAIC0zNCw3ICszNCw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNs
YXNzIEtleWZyYW1lVmFsdWUgewpAQCAtNjMsNyArNjIsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBL
ZXlmcmFtZUxpc3QgewogcHVibGljOgotICAgIEtleWZyYW1lTGlzdChSZW5kZXJPYmplY3QqLCBj
b25zdCBBdG9taWNTdHJpbmcmIGFuaW1hdGlvbk5hbWUpCisgICAgZXhwbGljaXQgS2V5ZnJhbWVM
aXN0KGNvbnN0IEF0b21pY1N0cmluZyYgYW5pbWF0aW9uTmFtZSkKICAgICAgICAgOiBtX2FuaW1h
dGlvbk5hbWUoYW5pbWF0aW9uTmFtZSkKICAgICB7CiAgICAgICAgIGluc2VydChLZXlmcmFtZVZh
bHVlKDAsIDApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlLmNwcAppbmRleCA2YTcxMjg2ZTBhMWQ3N2YyYzM2Zjg2ZWQ5NzE4NGM3YTAy
MTRiNzRiLi4wNGQ1NWU5NDIyMTY1ZjA5ZWM3OTAxZjAyYmE2MjRhNjg5ZmI0MDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuY3Bw
CkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgogCiAjaW5j
bHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjEsNyArNjEs
NyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2U6OmVycm9yT2NjdXJyZWQoKSBjb25zdAogICAgIHJl
dHVybiBtX2ltYWdlLT5lcnJvck9jY3VycmVkKCk7CiB9CiAKLUxheW91dFNpemUgU3R5bGVDYWNo
ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGZsb2F0IG11
bHRpcGxpZXIpIGNvbnN0CitMYXlvdXRTaXplIFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9pbWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIG11bHRp
cGxpZXIpOwogfQpAQCAtNzYsNyArNzYsNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZUhhc1Jl
bGF0aXZlSGVpZ2h0KCk7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6Y29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyT2JqZWN0KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCit2
b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJl
bmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hl
aWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykKIHsKICAgICBtX2ltYWdlLT5jb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNXaWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRy
aW5zaWNSYXRpbyk7CiB9CkBAIC04NiwyNyArODYsMjcgQEAgYm9vbCBTdHlsZUNhY2hlZEltYWdl
Ojp1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QKICAgICByZXR1cm4gbV9pbWFnZS0+dXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OnNldENv
bnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25z
dCBJbnRTaXplJiBpbWFnZUNvbnRhaW5lclNpemUsIGZsb2F0IGltYWdlQ29udGFpbmVyWm9vbUZh
Y3RvcikKK3ZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBpbWFnZUNvbnRh
aW5lclNpemUsIGZsb2F0IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKIHsKICAgICBtX2ltYWdl
LT5zZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIocmVuZGVyZXIsIGltYWdlQ29udGFpbmVyU2l6
ZSwgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdl
OjphZGRDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVDYWNoZWRJbWFn
ZTo6YWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIG1faW1hZ2UtPmFk
ZENsaWVudChyZW5kZXJlcik7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6cmVtb3ZlQ2xp
ZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIFN0eWxlQ2FjaGVkSW1hZ2U6OnJlbW92
ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBtX2ltYWdlLT5yZW1vdmVD
bGllbnQocmVuZGVyZXIpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdl
OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJikgY29uc3QKK1Bh
c3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyLCBjb25zdCBJbnRTaXplJikgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+aW1h
Z2VGb3JSZW5kZXJlcihyZW5kZXJlcik7CiB9CiAKLWJvb2wgU3R5bGVDYWNoZWRJbWFnZTo6a25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIFN0
eWxlQ2FjaGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikgY29uc3QKIHsKICAgICByZXR1cm4gbV9pbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0Jl
T3BhcXVlKHJlbmRlcmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZS5oCmluZGV4IGI4MWI0M2E1MjQ5MmEwZjUzZWU0Yjc5YWEyZGVh
Mjg5OGMyZTgyYWEuLmM1OWQ0NjAyOWZmNDlmMWRhYTdiYThjNDNkNDMyYzI4NGQ0YWZlOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2Uu
aApAQCAtMzIsMzQgKzMyLDM1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVk
SW1hZ2U7CiAKLWNsYXNzIFN0eWxlQ2FjaGVkSW1hZ2UgOiBwdWJsaWMgU3R5bGVJbWFnZSwgcHJp
dmF0ZSBDYWNoZWRJbWFnZUNsaWVudCB7CitjbGFzcyBTdHlsZUNhY2hlZEltYWdlIEZJTkFMIDog
cHVibGljIFN0eWxlSW1hZ2UsIHByaXZhdGUgQ2FjaGVkSW1hZ2VDbGllbnQgewogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxl
Q2FjaGVkSW1hZ2U+IGNyZWF0ZShDYWNoZWRJbWFnZSogaW1hZ2UpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBTdHlsZUNhY2hlZEltYWdlKGltYWdlKSk7IH0KICAgICB2aXJ0dWFsIH5TdHlsZUNhY2hl
ZEltYWdlKCk7CiAKLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQotCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBjc3NWYWx1ZSgpIGNvbnN0OwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29u
c3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIGlzTG9hZGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGVycm9yT2NjdXJyZWQoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlck9iamVj
dCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBp
bWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBM
ZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbyk7Ci0gICAg
dmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNv
bnN0IEludFNpemUmLCBmbG9hdCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJP
YmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCopOwot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3Qg
SW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3Qg
UmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBDYWNoZWRJbWFnZSog
Y2FjaGVkSW1hZ2UoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ltYWdlLmdldCgpOyB9Ci0g
ICAgCisKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgU3R5bGVDYWNoZWRJbWFnZShDYWNoZWRJbWFn
ZSopOworICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2ltYWdlLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgCisgICAgdmlydHVhbCBib29sIGNh
blJlbmRlcihjb25zdCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
TGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxp
ZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lk
dGgoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhl
aWdodCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwg
TGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pIE9WRVJS
SURFOworICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25z
dCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0KSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXpl
JikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25z
dCBSZW5kZXJFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7CisKKyAgICBleHBsaWNpdCBTdHlsZUNh
Y2hlZEltYWdlKENhY2hlZEltYWdlKik7CisKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNo
ZWRJbWFnZT4gbV9pbWFnZTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmNwcAppbmRleCBmNGYyZjhiMzAwNWIwM2Yw
MzE4Y2NiYzk0MjQ0YTU0MTkzMjcxYmYzLi5mOTViMmM5NDBkMGEwODEzNTc3ZTNkNjI3MzllMTc4
NDkxNDU3YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVDYWNoZWRJbWFnZVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCkBAIC0zMCw3ICszMCw3IEBACiAKICNpbmNsdWRlICJD
U1NJbWFnZVNldFZhbHVlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKLSNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNjksNyArNjksNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmVy
cm9yT2NjdXJyZWQoKSBjb25zdAogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+ZXJyb3JPY2N1
cnJlZCgpOwogfQogCi1MYXlvdXRTaXplIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlU2l6ZShj
b25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAorTGF5
b3V0U2l6ZSBTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CiB7CiAgICAgTGF5b3V0U2l6ZSBz
Y2FsZWRJbWFnZVNpemUgPSBtX2Jlc3RGaXRJbWFnZS0+aW1hZ2VTaXplRm9yUmVuZGVyZXIocmVu
ZGVyZXIsIG11bHRpcGxpZXIpOwogICAgIHNjYWxlZEltYWdlU2l6ZS5zY2FsZSgxIC8gbV9pbWFn
ZVNjYWxlRmFjdG9yKTsKQEAgLTg2LDcgKzg2LDcgQEAgYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0
OjppbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QKICAgICByZXR1cm4gbV9iZXN0Rml0SW1h
Z2UtPmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdl
U2V0Ojpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5n
dGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBp
bnRyaW5zaWNSYXRpbykKK3ZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6Y29tcHV0ZUludHJpbnNp
Y0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgs
IExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewog
ICAgIG1fYmVzdEZpdEltYWdlLT5jb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhpbnRyaW5zaWNX
aWR0aCwgaW50cmluc2ljSGVpZ2h0LCBpbnRyaW5zaWNSYXRpbyk7CiB9CkBAIC05NiwyNyArOTYs
MjcgQEAgYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojp1c2VzSW1hZ2VDb250YWluZXJTaXplKCkg
Y29uc3QKICAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPnVzZXNJbWFnZUNvbnRhaW5lclNpemUo
KTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0OjpzZXRDb250YWluZXJTaXplRm9yUmVu
ZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgaW1hZ2VD
b250YWluZXJTaXplLCBmbG9hdCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpCit2b2lkIFN0eWxl
Q2FjaGVkSW1hZ2VTZXQ6OnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgaW1hZ2VDb250YWluZXJTaXplLCBmbG9h
dCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpCiB7CiAgICAgbV9iZXN0Rml0SW1hZ2UtPnNldENv
bnRhaW5lclNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgaW1hZ2VDb250YWluZXJTaXplLCBpbWFn
ZUNvbnRhaW5lclpvb21GYWN0b3IpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmFk
ZENsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0
OjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgbV9iZXN0Rml0SW1h
Z2UtPmFkZENsaWVudChyZW5kZXJlcik7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6
cmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ6OnJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBtX2Jl
c3RGaXRJbWFnZS0+cmVtb3ZlQ2xpZW50KHJlbmRlcmVyKTsKIH0KIAotUGFzc1JlZlB0cjxJbWFn
ZT4gU3R5bGVDYWNoZWRJbWFnZVNldDo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29u
c3QgSW50U2l6ZSYpIGNvbnN0CitQYXNzUmVmUHRyPEltYWdlPiBTdHlsZUNhY2hlZEltYWdlU2V0
OjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsK
IH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojprbm93blRvQmVPcGFxdWUoY29uc3QgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6a25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAg
IHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+Y3VycmVudEZyYW1lS25vd25Ub0JlT3BhcXVlKHJlbmRl
cmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlU2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVD
YWNoZWRJbWFnZVNldC5oCmluZGV4IDIxYjBlMGNhYjA2YTg1NTJiNDllZjQzMWU4ZGM1ZmRhOWNi
NjZlOTQuLjU2NjY1MDcyNzZlMTkyZjNjYmEyNWMxNjYyNjE2ZWQ2NGE0NTdlODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlU2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQu
aApAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBDU1NJbWFnZVNldFZhbHVlOwogCiAvLyBUaGlzIGNs
YXNzIGtlZXBzIG9uZSBjYWNoZWQgaW1hZ2UgYW5kIGhhcyBhY2Nlc3MgdG8gYSBzZXQgb2YgYWx0
ZXJuYXRpdmVzLgogCi1jbGFzcyBTdHlsZUNhY2hlZEltYWdlU2V0IDogcHVibGljIFN0eWxlSW1h
Z2UsIHByaXZhdGUgQ2FjaGVkSW1hZ2VDbGllbnQgeworY2xhc3MgU3R5bGVDYWNoZWRJbWFnZVNl
dCBGSU5BTCA6IHB1YmxpYyBTdHlsZUltYWdlLCBwcml2YXRlIENhY2hlZEltYWdlQ2xpZW50IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHlsZUNhY2hlZEltYWdlU2V0PiBjcmVhdGUoQ2FjaGVkSW1hZ2UqIGltYWdlLCBmbG9h
dCBpbWFnZVNjYWxlRmFjdG9yLCBDU1NJbWFnZVNldFZhbHVlKiB2YWx1ZSkKQEAgLTQ5LDMyICs0
OSwzMyBAQCBwdWJsaWM6CiAgICAgfQogICAgIHZpcnR1YWwgflN0eWxlQ2FjaGVkSW1hZ2VTZXQo
KTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fYmVzdEZpdEltYWdlLmdldCgpOyB9CisKKyAgICB2b2lkIGNsZWFySW1hZ2VTZXRW
YWx1ZSgpIHsgbV9pbWFnZVNldFZhbHVlID0gbnVsbHB0cjsgfQorCitwcml2YXRlOgorICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCBPVkVSUklERTsKIAot
ICAgIC8vIEZJWE1FOiBUaGlzIGlzIHVzZWQgYnkgU3R5bGVJbWFnZSBmb3IgZXF1YWxzIGNvbXBh
cmlzb24sIGJ1dCB0aGlzIGltcGxlbWVudGF0aW9uCisgICAgLy8gRklYTUU6IFRoaXMgaXMgdXNl
ZCBieSBTdHlsZUltYWdlIGZvciBlcXVhbGl0eSBjb21wYXJpc29uLCBidXQgdGhpcyBpbXBsZW1l
bnRhdGlvbgogICAgIC8vIG9ubHkgbG9va3MgYXQgdGhlIGltYWdlIGZyb20gdGhlIHNldCB0aGF0
IHdlIGhhdmUgbG9hZGVkLiBJJ20gbm90IHN1cmUgaWYgdGhhdCBpcwogICAgIC8vIG1lYW5pbmdm
dWwgZW5vdWdoIG9yIG5vdC4KLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9iZXN0Rml0SW1hZ2UuZ2V0KCk7IH0KLQotICAgIHZvaWQgY2xlYXJJbWFn
ZVNldFZhbHVlKCkgeyBtX2ltYWdlU2V0VmFsdWUgPSAwOyB9Ci0KLSAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBlcnJv
ck9jY3VycmVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25z
dCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJv
b2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGltYWdl
SGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJp
bnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyT2JqZWN0KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pOwot
ICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3Qq
LCBjb25zdCBJbnRTaXplJiwgZmxvYXQpOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVu
ZGVyT2JqZWN0Kik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3Qq
KTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNv
bnN0IEludFNpemUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3Io
KSBjb25zdCB7IHJldHVybiBtX2ltYWdlU2NhbGVGYWN0b3I7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV9iZXN0Rml0SW1hZ2UuZ2V0KCk7IH0KLSAgICAKLXByaXZhdGU6CisgICAgdmlydHVhbCBX
cmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYmVzdEZpdElt
YWdlLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlck9i
amVjdCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBlcnJvck9jY3Vy
cmVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShj
b25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRl
ckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdo
dCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25z
dCBJbnRTaXplJiwgZmxvYXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQo
UmVuZGVyRWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQo
UmVuZGVyRWxlbWVudCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4g
aW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX2ltYWdlU2NhbGVGYWN0b3I7IH0KKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVl
KGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKKwogICAgIFN0eWxlQ2FjaGVk
SW1hZ2VTZXQoQ2FjaGVkSW1hZ2UqLCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yLCBDU1NJbWFnZVNl
dFZhbHVlKik7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gbV9iZXN0
Rml0SW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHZW5lcmF0ZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVHZW5lcmF0ZWRJbWFnZS5jcHAKaW5kZXggYjgxNjFmZWZkM2U4MmM0MTlkNTE1ZGVmZTI5YmY0
NjFkNzRkMjVmYy4uMjc4YTg1NzcwMjFhMWIyMTE4NDUwMDE0ZTYzYTk5YTAyYWQ2MzE1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRl
ZEltYWdlLmNwcApAQCAtMjUsNyArMjUsNyBAQAogI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVkSW1h
Z2UuaCIKIAogI2luY2x1ZGUgIkNTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaCIKLSNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5
bGVSZXNvbHZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw3ICs0Miw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNzc1ZhbHVlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlOwogfQogCi1MYXlvdXRTaXplIFN0eWxl
R2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBm
bG9hdCBtdWx0aXBsaWVyKSBjb25zdAorTGF5b3V0U2l6ZSBTdHlsZUdlbmVyYXRlZEltYWdlOjpp
bWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIp
IGNvbnN0CiB7CiAgICAgaWYgKG1fZml4ZWRTaXplKSB7CiAgICAgICAgIEludFNpemUgZml4ZWRT
aXplID0gbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5maXhlZFNpemUocmVuZGVyZXIpOwpAQCAtNjUs
NyArNjUsNyBAQCBMYXlvdXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlU2l6ZShjb25z
dCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBmbG9hdCBtdQogICAgIHJldHVybiBtX2NvbnRhaW5l
clNpemU7CiB9CiAKLXZvaWQgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTGVuZ3RoJiBpbnRyaW5zaWNX
aWR0aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8p
Cit2b2lkIFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNv
bnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5n
dGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykKIHsKICAgICAv
LyBBdCBhIHpvb20gbGV2ZWwgb2YgMSB0aGUgaW1hZ2UgaXMgZ3VhcmFudGVlZCB0byBoYXZlIGFu
IGludGVnZXIgc2l6ZS4KICAgICBJbnRTaXplIHNpemUgPSBmbG9vcmVkSW50U2l6ZShpbWFnZVNp
emUocmVuZGVyZXIsIDEpKTsKQEAgLTc0LDIyICs3NCwyMiBAQCB2b2lkIFN0eWxlR2VuZXJhdGVk
SW1hZ2U6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlck9iamVjdCogcmVu
ZGVyZQogICAgIGludHJpbnNpY1JhdGlvID0gc2l6ZTsKIH0KIAotdm9pZCBTdHlsZUdlbmVyYXRl
ZEltYWdlOjphZGRDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVHZW5l
cmF0ZWRJbWFnZTo6YWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIG1f
aW1hZ2VHZW5lcmF0b3JWYWx1ZS0+YWRkQ2xpZW50KHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTdHls
ZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3Zv
aWQgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKQogewogICAgIG1faW1hZ2VHZW5lcmF0b3JWYWx1ZS0+cmVtb3ZlQ2xpZW50KHJlbmRlcmVy
KTsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkgY29uc3QKK1Bhc3NSZWZQ
dHI8SW1hZ2U+IFN0eWxlR2VuZXJhdGVkSW1hZ2U6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlR2Vu
ZXJhdG9yVmFsdWUtPmltYWdlKHJlbmRlcmVyLCBzaXplKTsKIH0KIAotYm9vbCBTdHlsZUdlbmVy
YXRlZEltYWdlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikg
Y29uc3QKK2Jvb2wgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlR2VuZXJh
dG9yVmFsdWUtPmtub3duVG9CZU9wYXF1ZShyZW5kZXJlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaAppbmRleCAwZWE0
ZmZiNThmYmYzMTkxMDM4NDg2Nzk3MDY4OTk1OTA3NmY2ZjZhLi4wNDMxMDBjMmI4OTIyYzBiMzNj
NTE4M2JkZWE2NjhjMzFhZmNlOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKQEAgLTMxLDMwICszMSwzMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIENTU0ltYWdlR2VuZXJhdG9y
VmFsdWU7CiAKLWNsYXNzIFN0eWxlR2VuZXJhdGVkSW1hZ2UgOiBwdWJsaWMgU3R5bGVJbWFnZSB7
CitjbGFzcyBTdHlsZUdlbmVyYXRlZEltYWdlIEZJTkFMIDogcHVibGljIFN0eWxlSW1hZ2Ugewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlR2VuZXJhdGVkSW1hZ2U+IGNyZWF0
ZShDU1NJbWFnZUdlbmVyYXRvclZhbHVlKiB2YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU3R5bGVHZW5lcmF0ZWRJbWFnZSh2YWx1ZSkpOwogICAgIH0KIAotICAgIHZp
cnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlR2VuZXJh
dG9yVmFsdWUuZ2V0KCk7IH0KICAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKiBpbWFnZVZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZUdlbmVyYXRvclZhbHVlLmdldCgpOyB9CiAKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3Q7Ci0KLSAgICB2aXJ0
dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRp
cGxpZXIpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
V2lkdGgoKSBjb25zdCB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJP
YmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwg
RmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbyk7Ci0gICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNv
bnRhaW5lclNpemUoKSBjb25zdCB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNv
bnN0IEludFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0KSB7IG1fY29udGFpbmVyU2l6ZSA9IGNv
bnRhaW5lclNpemU7IH0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlck9iamVjdCop
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdmly
dHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXpl
JikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCBPVkVSUklERTsKLSAgICAKIHByaXZhdGU6CisgICAgdmlydHVhbCBXcmFw
cGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1hZ2VHZW5lcmF0
b3JWYWx1ZS5nZXQoKTsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NW
YWx1ZSgpIGNvbnN0IE9WRVJSSURFOworCisgICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6
ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIW1fZml4ZWRTaXplOyB9CisgICAg
dmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1l
bnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxv
YXRTaXplJiBpbnRyaW5zaWNSYXRpbykgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXNJ
bWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhbV9maXhlZFNpemU7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiBjb250YWluZXJTaXplLCBmbG9hdCkgT1ZFUlJJ
REUgeyBtX2NvbnRhaW5lclNpemUgPSBjb250YWluZXJTaXplOyB9CisgICAgdmlydHVhbCB2b2lk
IGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUNsaWVudChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVm
UHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxl
bWVudCopIGNvbnN0IE9WRVJSSURFOworCiAgICAgU3R5bGVHZW5lcmF0ZWRJbWFnZShQYXNzUmVm
UHRyPENTU0ltYWdlR2VuZXJhdG9yVmFsdWU+KTsKICAgICAKICAgICBSZWZQdHI8Q1NTSW1hZ2VH
ZW5lcmF0b3JWYWx1ZT4gbV9pbWFnZUdlbmVyYXRvclZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKaW5kZXggNzBmMzM2MDg4MzhkNmM0MWU3MTIwMjA2
N2M0Zjc4ZTE4YmYyMTcxZi4uYzNjZDEzYWUwYjg3ZWFjMzdiNjQzYmYyNWUzMDdkMmEzYzZkMWM4
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oCkBAIC0z
Niw2ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ2FjaGVkSW1hZ2U7CiBj
bGFzcyBDU1NWYWx1ZTsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJPYmplY3Q7
CiAKIHR5cGVkZWYgdm9pZCogV3JhcHBlZEltYWdlUHRyOwpAQCAtNTQsMTggKzU1LDE4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZs
b2F0IC8qbXVsdGlwbGllciovKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzTG9hZGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBl
cnJvck9jY3VycmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIExheW91
dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29u
c3QgUmVuZGVyT2JqZWN0KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0aCwgTGVuZ3RoJiBpbnRyaW5z
aWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pID0gMDsKKyAgICB2aXJ0dWFsIExh
eW91dFNpemUgaW1hZ2VTaXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVy
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25z
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGlu
dHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBi
b29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29s
IHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRT
aXplJiwgZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlck9iamVj
dCopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCopID0g
MDsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNv
bnN0IEludFNpemUmKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYsIGZsb2F0
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRT
aXplJikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25z
dCA9IDA7CiAgICAgdmlydHVhbCBmbG9hdCBpbWFnZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1
cm4gMTsgfQotICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2Jq
ZWN0KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3Qg
UmVuZGVyRWxlbWVudCopIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBp
c0NhY2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZEltYWdlOyB9CkBAIC03Mywx
NCArNzQsOSBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzR2VuZXJhdGVkSW1h
Z2UoKSBjb25zdCB7IHJldHVybiBtX2lzR2VuZXJhdGVkSW1hZ2U7IH0KICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNDYWNoZWRJbWFnZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDYWNoZWRJbWFn
ZVNldDsgfQogICAgIAotICAgIHN0YXRpYyAgYm9vbCBpbWFnZXNFcXVpdmFsZW50KFN0eWxlSW1h
Z2UqIGltYWdlMSwgU3R5bGVJbWFnZSogaW1hZ2UyKQorICAgIHN0YXRpYyBib29sIGltYWdlc0Vx
dWl2YWxlbnQoU3R5bGVJbWFnZSogaW1hZ2UxLCBTdHlsZUltYWdlKiBpbWFnZTIpCiAgICAgewot
ICAgICAgICBpZiAoaW1hZ2UxICE9IGltYWdlMikgewotICAgICAgICAgICAgaWYgKCFpbWFnZTEg
fHwgIWltYWdlMikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBy
ZXR1cm4gKmltYWdlMSA9PSAqaW1hZ2UyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICByZXR1cm4gaW1hZ2UxID09IGltYWdlMiB8fCAoaW1hZ2UxICYmIGltYWdlMiAm
JiAqaW1hZ2UxID09ICppbWFnZTIpOwogICAgIH0KIAogcHJvdGVjdGVkOgpAQCAtOTEsMTAgKzg3
LDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgLCBtX2lzQ2FjaGVkSW1hZ2VTZXQoZmFsc2UpCiAg
ICAgewogICAgIH0KLSAgICBib29sIG1faXNDYWNoZWRJbWFnZToxOwotICAgIGJvb2wgbV9pc1Bl
bmRpbmdJbWFnZToxOwotICAgIGJvb2wgbV9pc0dlbmVyYXRlZEltYWdlOjE7Ci0gICAgYm9vbCBt
X2lzQ2FjaGVkSW1hZ2VTZXQ6MTsKKyAgICBib29sIG1faXNDYWNoZWRJbWFnZSA6IDE7CisgICAg
Ym9vbCBtX2lzUGVuZGluZ0ltYWdlIDogMTsKKyAgICBib29sIG1faXNHZW5lcmF0ZWRJbWFnZSA6
IDE7CisgICAgYm9vbCBtX2lzQ2FjaGVkSW1hZ2VTZXQgOiAxOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUGVuZGluZ0ltYWdlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAppbmRleCAx
MjgyN2M2YTE1MmVjODY0NTBhOTk5N2Y1ODY2M2I5NGMzZTFhODEwLi40MzZhYmNmNTAyNWFhNTU0
YTc2OTRmMzc5NDdlYWRhOWQ0NWQ2ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaApAQCAtMjgsMTMgKzI4LDE0IEBACiAKICNp
bmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZS5oIgotI2lmIEVOQUJMRShDU1NfSU1BR0VfU0VUKQotI2luY2x1ZGUgIkNTU0ltYWdl
U2V0VmFsdWUuaCIKLSNlbmRpZgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKICNpbmNsdWRl
ICJJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlSW1hZ2UuaCIKIAorI2lmIEVOQUJMRShDU1NfSU1B
R0VfU0VUKQorI2luY2x1ZGUgIkNTU0ltYWdlU2V0VmFsdWUuaCIKKyNlbmRpZgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIC8vIFN0eWxlUGVuZGluZ0ltYWdlIGlzIGEgcGxhY2Vob2xkZXIgU3R5
bGVJbWFnZSB0aGF0IGlzIGVudGVyZWQgaW50byB0aGUgUmVuZGVyU3R5bGUgZHVyaW5nCkBAIC00
NSwzMiArNDYsMzUgQEAgY2xhc3MgU3R5bGVQZW5kaW5nSW1hZ2UgOiBwdWJsaWMgU3R5bGVJbWFn
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVQZW5kaW5nSW1hZ2U+IGNy
ZWF0ZShDU1NWYWx1ZSogdmFsdWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVBlbmRpbmdJ
bWFnZSh2YWx1ZSkpOyB9CiAKLSAgICB2aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29u
c3QgeyByZXR1cm4gdG9DU1NJbWFnZVZhbHVlKG1fdmFsdWUpOyB9Ci0KLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGNzc1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQot
ICAgIENTU0ltYWdlVmFsdWUqIGNzc0ltYWdlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVl
LT5pc0ltYWdlVmFsdWUoKSA/IHRvQ1NTSW1hZ2VWYWx1ZShtX3ZhbHVlKSA6IDA7IH0KLSAgICBD
U1NJbWFnZUdlbmVyYXRvclZhbHVlKiBjc3NJbWFnZUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV92YWx1ZS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkgPyBzdGF0aWNfY2FzdDxDU1NJ
bWFnZUdlbmVyYXRvclZhbHVlKj4obV92YWx1ZSkgOiAwOyB9Ci0gICAgQ1NTQ3Vyc29ySW1hZ2VW
YWx1ZSogY3NzQ3Vyc29ySW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUtPmlzQ3Vy
c29ySW1hZ2VWYWx1ZSgpID8gc3RhdGljX2Nhc3Q8Q1NTQ3Vyc29ySW1hZ2VWYWx1ZSo+KG1fdmFs
dWUpIDogMDsgfQorICAgIENTU0ltYWdlVmFsdWUqIGNzc0ltYWdlVmFsdWUoKSBjb25zdCB7IHJl
dHVybiBtX3ZhbHVlLT5pc0ltYWdlVmFsdWUoKSA/IHRvQ1NTSW1hZ2VWYWx1ZShtX3ZhbHVlKSA6
IG51bGxwdHI7IH0KKyAgICBDU1NJbWFnZUdlbmVyYXRvclZhbHVlKiBjc3NJbWFnZUdlbmVyYXRv
clZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS0+aXNJbWFnZUdlbmVyYXRvclZhbHVlKCkg
PyBzdGF0aWNfY2FzdDxDU1NJbWFnZUdlbmVyYXRvclZhbHVlKj4obV92YWx1ZSkgOiBudWxscHRy
OyB9CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogY3NzQ3Vyc29ySW1hZ2VWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWUtPmlzQ3Vyc29ySW1hZ2VWYWx1ZSgpID8gc3RhdGljX2Nhc3Q8Q1NT
Q3Vyc29ySW1hZ2VWYWx1ZSo+KG1fdmFsdWUpIDogbnVsbHB0cjsgfQogI2lmIEVOQUJMRShDU1Nf
SU1BR0VfU0VUKQotICAgIENTU0ltYWdlU2V0VmFsdWUqIGNzc0ltYWdlU2V0VmFsdWUoKSBjb25z
dCB7IHJldHVybiBtX3ZhbHVlLT5pc0ltYWdlU2V0VmFsdWUoKSA/IHRvQ1NTSW1hZ2VTZXRWYWx1
ZShtX3ZhbHVlKSA6IDA7IH0KKyAgICBDU1NJbWFnZVNldFZhbHVlKiBjc3NJbWFnZVNldFZhbHVl
KCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS0+aXNJbWFnZVNldFZhbHVlKCkgPyB0b0NTU0ltYWdl
U2V0VmFsdWUobV92YWx1ZSkgOiBudWxscHRyOyB9CiAjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2
aXJ0dWFsIFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdG9D
U1NJbWFnZVZhbHVlKG1fdmFsdWUpOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIAot
ICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxv
YXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91dFNpemUoKTsg
fQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0Rp
bWVuc2lvbnMoY29uc3QgUmVuZGVyT2JqZWN0KiwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNXaWR0aCAq
LyAsIExlbmd0aCYgLyogaW50cmluc2ljSGVpZ2h0ICovLCBGbG9hdFNpemUmIC8qIGludHJpbnNp
Y1JhdGlvICovKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNp
emVGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0KikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKSBj
b25zdAorICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVu
dCosIGZsb2F0IC8qbXVsdGlwbGllciovKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBMYXlvdXRT
aXplKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBM
ZW5ndGgmIC8qIGludHJpbnNpY1dpZHRoICovICwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNIZWlnaHQg
Ki8sIEZsb2F0U2l6ZSYgLyogaW50cmluc2ljUmF0aW8gKi8pIHsgfQorICAgIHZpcnR1YWwgYm9v
bCB1c2VzSW1hZ2VDb250YWluZXJTaXplKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJl
bmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIE9WRVJSSURFIHsgfQorICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopIE9WRVJSSURFIHsgfQorCisg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3Qg
SW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFCiAgICAgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
LSAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVl
KGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQog
ICAgIAotcHJpdmF0ZToKICAgICBTdHlsZVBlbmRpbmdJbWFnZShDU1NWYWx1ZSogdmFsdWUpCiAg
ICAgICAgIDogbV92YWx1ZSh2YWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggNGU5MDYyMzRlNmYzOWZiZWM0NjY2NWM2ZDhkYWY1MDYyMGI0NzAxZS4uODk1
YTI2MzA3MGFlYTUwYzIzNjM3NDllNTZiMTA3YzAxOTE1MjdmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcApAQCAtNzcsNyArNzcsNiBAQAogI2luY2x1ZGUgIlJhbmdlLmgiCiAj
aW5jbHVkZSAiUmVuZGVyRW1iZWRkZWRPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJNZW51TGlz
dC5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRyZWVBc1Rl
eHQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgpAQCAtNjkwLDcgKzY4OSw3IEBAIFBhc3NSZWZQdHI8Q2xpZW50UmVjdD4gSW50
ZXJuYWxzOjpib3VuZGluZ0JveChFbGVtZW50KiBlbGVtZW50LCBFeGNlcHRpb25Db2RlJiBlCiAg
ICAgfQogCiAgICAgZWxlbWVudC0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVu
ZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gQ2xpZW50UmVjdDo6Y3JlYXRlKCk7CiAgICAg
cmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZShyZW5kZXJlci0+YWJzb2x1dGVCb3VuZGluZ0JveFJl
Y3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CkBAIC0yMDAyLDcgKzIwMDEsNyBAQCBib29sIEludGVy
bmFsczo6aXNTZWxlY3RQb3B1cFZpc2libGUoTm9kZSogbm9kZSkKIAogICAgIEhUTUxTZWxlY3RF
bGVtZW50KiBzZWxlY3QgPSB0b0hUTUxTZWxlY3RFbGVtZW50KG5vZGUpOwogCi0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHNlbGVjdC0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVy
ID0gc2VsZWN0LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXItPmlzTWVudUxpc3QoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMTI0LDcgKzIxMjMsNyBAQCBib29sIEludGVy
bmFsczo6aXNQbHVnaW5VbmF2YWlsYWJpbGl0eUluZGljYXRvck9ic2N1cmVkKEVsZW1lbnQqIGVs
ZW1lbnQsIEV4Y2VwdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJl
ciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXIt
PmlzRW1iZWRkZWRPYmplY3QoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212940</attachid>
            <date>2013-09-29 18:37:40 -0700</date>
            <delta_ts>2013-09-29 18:55:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122078-20130929183739.patch</filename>
            <type>text/plain</type>
            <size>377244</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggZDk1ZGE1MDJjZTQ0ZjljMjYzZWU2OGNiMDY5OTQ5OTYzNzYwMDRkYS4uNjNmZDhjYWY4Mzc2
Yjg4OGFiMGE4NzhjZTIxMGY0YjQ3YWRiMDY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEyIEBACisyMDEzLTA5LTI5ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBVc2UgUmVuZGVyRWxlbWVudCBpbnN0ZWFkIG9mIFJlbmRlck9iamVj
dCBpbiBtYW55IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTIyMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBBTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBMZXQgWGNvZGUgZG8g
aXRzIHRoaW5nIHRvIHRoaXMgZmlsZS4KKwogMjAxMy0wOS0yNCAgTWFyayBSb3dlICA8bXJvd2VA
YXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xNDk3MTUxOD4gV2ViS2l0IHNo
b3VsZCBidWlsZCBhZ2FpbnN0IHRoZSBYY29kZSBkZWZhdWx0IHRvb2xjaGFpbiB3aGVuIHRhcmdl
dGluZyBPUyBYIDEwLjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwOTEwYjNhNjc0MjdiYTY0NTRkYzNmNDBjYWE4
ZmRlOGQ5OGYyNTY0Li4xNWYyNWI0YTAyNTc2YmE0YTU3MzBkYjVmOWZjY2M5MzU0ODRlOGY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzk3IEBACisyMDEzLTA5LTI5ICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgUmVuZGVyRWxlbWVudCBpbnN0ZWFkIG9mIFJl
bmRlck9iamVjdCBpbiBtYW55IHBsYWNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogVXBkYXRlZCBmb3IgbmFtZSBjaGFu
Z2VzLgorCisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuaDogTW92ZWQgcmVuZGVyZXIoKSBo
ZXJlIGZyb20gRWxlbWVudC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBNb3ZlZCByZW5kZXJl
cigpIGZyb20gaGVyZSB0byBDb250YWluZXJOb2RlLgorICAgICAgICAqIHJlbmRlci9SZW5kZXJF
bGVtZW50Lmg6IE1vdmVkIHJlbmRlcmVyKCkgZnJvbSBFbGVtZW50IHRvIENvbnRhaW5lck5vZGUu
CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6aW1hZ2VNYXBM
aW5rUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUltYWdlTWFwTGlu
azo6ZGV0YWNoRnJvbVBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rOjplbGVtZW50UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
SW1hZ2VNYXBMaW5rOjplbGVtZW50UmVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNvbXB1dGVBY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTS5tbToKKyAgICAgICAgKC1bRE9NRWxlbWVudCBpbWFnZV0pOgorICAg
ICAgICAoLVtET01FbGVtZW50IF9mb250XSk6CisgICAgICAgICgtW0RPTUVsZW1lbnQgX2ltYWdl
VElGRlJlcHJlc2VudGF0aW9uXSk6CisgICAgICAgICogY3NzL0NTU0NhbnZhc1ZhbHVlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjpjYW52YXNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjpjYW52YXNSZXNpemVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0NhbnZhc1ZhbHVlOjpjYW52YXNEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTQ2FudmFzVmFsdWU6OmZpeGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDYW52
YXNWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9DU1NDYW52YXNWYWx1ZS5oOgorICAgICAg
ICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y29tcHV0ZVJlbmRlclN0eWxlRm9yUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NDcm9z
c2ZhZGVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWJpbWFnZUtub3duVG9CZU9wYXF1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDcm9zc2ZhZGVWYWx1ZTo6Zml4ZWRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTQ3Jvc3NmYWRlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0Nyb3NzZmFkZVZhbHVlOjpjcm9zc2ZhZGVDaGFuZ2VkKToKKyAgICAgICAgKiBjc3Mv
Q1NTQ3Jvc3NmYWRlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXJJbWFnZVZhbHVlOjpmaXhlZFNpemUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmZpbHRlckltYWdlQ2hhbmdlZCk6CisgICAg
ICAgICogY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvQ1NTRm9udFNl
bGVjdG9yLmNwcDoKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVu
dFZhbHVlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTTGluZWFyR3Jh
ZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUmFkaWFs
R3JhZGllbnRWYWx1ZTo6Y3JlYXRlR3JhZGllbnQpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVu
dFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjpmaXhlZFNpemUp
OgorICAgICAgICAqIGNzcy9DU1NJbWFnZUdlbmVyYXRvclZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmFkZENsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjpyZW1vdmVDbGllbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6Zml4ZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ltYWdlR2VuZXJhdG9yVmFsdWU6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICogY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlR2VuZXJh
dG9yVmFsdWU6OmNsaWVudHMpOgorICAgICAgICAqIGNzcy9DU1NJbWFnZVZhbHVlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZSk6CisgICAgICAg
ICogY3NzL0NTU0ltYWdlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVp
bGRlci5jcHA6CisgICAgICAgICogZG9tL0RvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtlcnNG
cm9tTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJl
cGFpbnRNYXJrZXJzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpsb2NhbFpvb21Gb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3JM
b2NhbFpvb20pOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6b2Zmc2V0UGFyZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVwZGF0ZUV4aXN0aW5nUHNldWRvRWxlbWVudCk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dFJhcmVEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpF
bGVtZW50UmFyZURhdGEpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmVuc3VyZVJhcmVEYXRhKToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1dHRv
bkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNEZWxldGFibGVFbGVtZW50KToK
KyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
Omhhc0JpZGlTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpiYXNlV3JpdGlu
Z0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvckNv
bW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxTY3JvbGxEaXN0YW5jZSk6Cisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkaXJl
Y3Rpb25PZkVuY2xvc2luZ0Jsb2NrKToKKyAgICAgICAgKiBlZGl0aW5nL2lvcy9FZGl0b3JJT1Mu
bW06CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0SW1hZ2UpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpnZXRJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAg
ICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxB
cmVhRWxlbWVudDo6Y29tcHV0ZVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFyZWFFbGVt
ZW50Ojpjb21wdXRlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQXJlYUVsZW1lbnQ6OnNl
dEZvY3VzKToKKyAgICAgICAgKiBodG1sL0hUTUxBcmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENhbnZhc0Vs
ZW1lbnQ6OnJlc2V0KToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQpOgorICAgICAgICAqIGh0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVGcm9tRWxl
bWVudENhbGxiYWNrKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQpOgorICAgICAg
ICAqIGh0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OngpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6eSk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MSW1hZ2VFbGVtZW50Ojp3aWxsUmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAg
ICAgICogaHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIpOgorICAgICAgICAqIGh0bWwvSFRNTE1ldGVyRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWV0ZXJFbGVtZW50OjpyZW5kZXJNZXRlcik6CisgICAgICAgICog
aHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9u
RWxlbWVudDo6ZGlkUmVjYWxjU3R5bGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkVsZW1lbnQ6OndpbGxSZXNwb25k
VG9Nb3VzZUNsaWNrRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQbHVnSW5FbGVt
ZW50Ojppc0tleWJvYXJkRm9jdXNhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcik6CisgICAgICAgICogaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9ncmVzc0VsZW1lbnQ6OnJlbmRlclByb2dy
ZXNzKToKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzY3JvbGxUb1NlbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudDo6c2V0T3B0aW9uc0NoYW5nZWRPblJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RPcHRpb24pOgorICAg
ICAgICAqIGh0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmNlbGxBYm92ZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNWaXNpYmxlVGV4
dEFyZWEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNl
dFNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgKiBodG1sL0lucHV0VHlwZS5oOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHA6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbEVsZW1lbnQ6OnNldERpc3BsYXlUeXBlKToKKyAgICAgICAgKiBodG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xQYW5lbEVsZW1lbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tSZXByZXNlbnRhdGlv
bkltYWdlKToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWV0ZXJTaGFkb3dFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1ldGVySW5uZXJFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTG9hZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkSW1hZ2U6OmN1cnJlbnRGcmFtZUtub3duVG9CZU9wYXF1ZSk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbWF0aG1sL01hdGhNTEVsZW1l
bnQuY3BwOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDb250
cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OkV2ZW50SGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50SGFuZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRI
YW5kbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpzY3JvbGxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omxv
Z2ljYWxTY3JvbGxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnN1
YmZyYW1lRm9yVGFyZ2V0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNl
bGVjdEN1cnNvcik6CisgICAgICAgIChXZWJDb3JlOjpsYXllckZvck5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6Y2xlYXJHZXN0dXJlU2Nyb2xsTm9kZXMpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmg6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6Om93bmVy
UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OnZpc2libGVQb3NpdGlvbkZvclBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpub2RlSW1hZ2UpOgorICAgICAgICAqIHBh
Z2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YXBwbHlPdmVy
Zmxvd1RvVmlld3BvcnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjphcHBseVBhZ2lu
YXRpb25Ub1ZpZXdwb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y2FsY3VsYXRl
U2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpp
c0VuY2xvc2VkSW5Db21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6ZW1iZWRkZWRDb250ZW50Qm94KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6YWRk
U2xvd1JlcGFpbnRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1vdmVT
bG93UmVwYWludE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFZpZXdw
b3J0Q29uc3RyYWluZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpyZW1v
dmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmll
dzo6c2Nyb2xsQ29udGVudHNGYXN0UGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6
OnJlcGFpbnRTbG93UmVwYWludE9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjpzZXRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c05lZWRMYXlvdXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3Ojp1cGRhdGVPdmVyZmxvd1N0YXR1cyk6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3Ojpjb252
ZXJ0RnJvbVJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Y29udmVydFRv
UmVuZGVyZXIpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3Lmg6CisgICAgICAgICogcGFnZS9Q
YWdlU2VyaWFsaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6YWRk
SW1hZ2VUb1Jlc291cmNlcyk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5oOgorICAg
ICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uQmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25CYXNlOjp1cGRhdGVTdGF0ZU1hY2hpbmUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OnJlbmRl
cmVyKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjplbnN1cmVDb21w
b3NpdGVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25UaW1lckZvclJlbmRlcmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjppc1J1bm5pbmdBbmltYXRpb25P
blJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRl
Ojppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnN1c3BlbmRBbmltYXRpb25zRm9yRG9j
dW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnJl
c3VtZUFuaW1hdGlvbnNGb3JEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6cGF1c2VBbmltYXRpb25BdFRpbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBhdXNlVHJhbnNpdGlvbkF0VGltZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6Z2V0QW5pbWF0ZWRT
dHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXJQ
cml2YXRlOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uQ29udHJvbGxlcjo6Y2FuY2VsQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpB
bmltYXRpb25Db250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkNvbnRyb2xsZXI6OmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcik6CisgICAg
ICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpub3RpZnlBbmltYXRpb25TdGFydGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9u
QXRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlVHJh
bnNpdGlvbkF0VGltZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyOjpp
c1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
bkNvbnRyb2xsZXI6OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcik6Cisg
ICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oOgorICAgICAgICAq
IHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICog
cGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Y3Jvc3NmYWRlQmxlbmQpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFu
aW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21wb3NpdGVBbmltYXRpb246OnVwZGF0
ZVRyYW5zaXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1hdGlvbjo6dXBk
YXRlS2V5ZnJhbWVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXBvc2l0ZUFuaW1h
dGlvbjo6YW5pbWF0ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0
aW9uLmg6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW1wbGljaXRBbmltYXRpb246OkltcGxpY2l0QW5pbWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OkltcGxpY2l0QW5pbWF0aW9uOjpwYXVzZUFuaW1hdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbXBsaWNpdEFuaW1hdGlvbjo6c2VuZFRyYW5zaXRpb25FdmVudCk6CisgICAgICAg
ICogcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6
OkltcGxpY2l0QW5pbWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0tl
eWZyYW1lQW5pbWF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lQW5pbWF0aW9u
OjpLZXlmcmFtZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlv
bjo6YW5pbWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6cGF1c2VB
bmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVBbmltYXRpb246OmVuZEFuaW1h
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUFuaW1hdGlvbjo6c2VuZEFuaW1hdGlv
bkV2ZW50KToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oOgor
ICAgICAgICAqIHBhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6cGFzc1dpZGdldE1vdXNlRG93bkV2ZW50VG9XaWRnZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUpOgor
ICAgICAgICAqIHBhZ2UvbWFjL0ZyYW1lU25hcHNob3R0aW5nTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6c25hcHNob3REcmFnSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21h
Yy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZVFUS2l0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL0NvdW50ZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJOb2RlOjpDb3VudGVyTm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDb3VudGVyTm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
Q291bnRlck5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJOb2RlOjpvd25lcik6Cisg
ICAgICAgICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQpOgorICAgICAgICAqIHJl
bmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5oOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRU
ZXN0UmVzdWx0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhpdFRlc3RSZXN1bHQ6OnNwZWxsaW5n
VG9vbFRpcCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojp0aXRsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0Ojppbm5lclRleHRJZlRydW5jYXRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjppbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5n
L0xheW91dFJlcGFpbnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRSZXBhaW50ZXI6
OkxheW91dFJlcGFpbnRlcik6CisgICAgICAgICogcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9MYXlvdXRTdGF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0U3RhdGU6OkxheW91dFN0YXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvTGluZVdpZHRo
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL0xvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OmlzQ29udGFpbmluZ0Jsb2NrQ2FuZGlkYXRlRm9yQWJzb2x1dGVs
eVBvc2l0aW9uZWRPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNOb25SZW5kZXJCbG9ja0lu
bGluZSk6CisgICAgICAgIChXZWJDb3JlOjpjb250YWluaW5nQmxvY2tGb3JGaXhlZFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRhaW5pbmdCbG9ja0ZvckFic29sdXRlUG9zaXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Y29udGFpbmluZ0Jsb2NrRm9yT2JqZWN0SW5GbG93KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXM6OkxvZ2ljYWxTZWxl
Y3Rpb25PZmZzZXRDYWNoZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9QYWludEluZm8uaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhaW50SW5mbzo6UGFpbnRJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhaW50SW5mbzo6dXBkYXRlU3VidHJlZVBhaW50Um9vdEZvckNoaWxkcmVuKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6
cGFpbnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxs
TGF5ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Qm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWVyRXh0ZW5kZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0SW5Q
cmVPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgIChXZWJD
b3JlOjptYWtlQ291bnRlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6
b3JpZ2luYWxUZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJFbGVtZW50OjppbnNlcnRDaGlsZEludGVybmFsKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckVsZW1lbnQ6OnJlbW92ZUNoaWxkSW50ZXJuYWwpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckVsZW1lbnQ6OnJlbmRlcmVyRm9yUm9vdEJhY2tncm91bmQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlUmVzb3VyY2U6OmluaXRpYWxpemUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlOjppbml0aWFsaXplKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2VS
ZXNvdXJjZVN0eWxlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlUmVzb3Vy
Y2VTdHlsZUltYWdlOjpjcmVhdGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpz
aG91bGRQcm9wYWdhdGVDb21wb3NpdGluZ1RvRW5jbG9zaW5nRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjYW5CZUNvbXBvc2l0ZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJh
Y2tpbmdTdG9yZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
YXNvbnNGb3JDb21wb3NpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nRm9yQ2FudmFzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6
cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJl
c0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JC
bGVuZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmlzUnVubmluZ0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6
OmNvbnRhaW5pbmdCbG9jayk6CisgICAgICAgIChXZWJDb3JlOjptdXN0UmVwYWludEZpbGxMYXll
cnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpib3JkZXJJbWFnZUlzTG9hZGVk
QW5kQ2FuQmVSZW5kZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OndpbGxC
ZURlc3Ryb3llZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyUGFydDo6cmVuZGVyZXJPd25pbmdT
Y3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0Lmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OnBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVuZGVyVmlldyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGaWxsTGF5ZXI6Omhhc09wYXF1ZUltYWdlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUv
RmlsbExheWVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVMaXN0OjpLZXlmcmFtZUxpc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlQ2FjaGVkSW1hZ2U6OmltYWdlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNh
Y2hlZEltYWdlOjpjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUNhY2hlZEltYWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZTo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlQ2FjaGVkSW1hZ2U6OnJlbW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZUNhY2hlZEltYWdlOjppbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hlZElt
YWdlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUNh
Y2hlZEltYWdlLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VT
ZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFnZVNldDo6aW1hZ2VTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnNl
dENvbnRhaW5lclNpemVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNhY2hl
ZEltYWdlU2V0OjphZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDYWNoZWRJbWFn
ZVNldDo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VT
ZXQ6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omtub3du
VG9CZU9wYXF1ZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VT
ZXQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZVNpemUpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVu
c2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVHZW5lcmF0ZWRJbWFnZTo6YWRkQ2xpZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlR2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRvQmVPcGFxdWUpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlSW1hZ2U6
OmltYWdlc0VxdWl2YWxlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRp
bmdJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQZW5kaW5nSW1hZ2U6OmNzc0ltYWdl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQZW5kaW5nSW1hZ2U6OmNzc0ltYWdlR2Vu
ZXJhdG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQZW5kaW5nSW1hZ2U6OmNzc0N1
cnNvckltYWdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQZW5kaW5nSW1hZ2U6OmNz
c0ltYWdlU2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQZW5kaW5nSW1hZ2U6OmNv
bXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKToKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OmJvdW5kaW5nQm94KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVybmFsczo6aXNTZWxlY3RQb3B1cFZpc2libGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJuYWxzOjppc1BsdWdpblVuYXZhaWxhYmlsaXR5SW5kaWNhdG9yT2JzY3VyZWQp
OgorICAgICAgICBVc2UgUmVuZGVyRWxlbWVudCBpbnN0ZWFkIG9mIFJlbmRlck9iamVjdCB3aGVy
ZSBpdCB3YXMgZWFzeSB0byBkbyBzby4KKyAgICAgICAgRm9yIGxvY2FsIHZhcmlhYmxlcyBob2xk
aW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgcmVuZGVyZXIoKSBmdW5jdGlvbnMsCisgICAgICAgIHVz
ZSBhdXRvIGluc3RlYWQsIHNvIHRoZSBtb3N0LXNwZWNpZmljIHBvc3NpYmxlIHR5cGUgd2lsbCBi
ZSB1c2VkLAorICAgICAgICB3aXRob3V0IGhhdmluZyB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCBp
cyBpbiBlYWNoIGNhc2UuIEFsc28gdXNlIHNvbWUKKyAgICAgICAgbW9yZSBPVkVSUklERSBhbmQg
RklOQUwgYW5kIHVzZSBudWxscHRyIGluc3RlYWQgb2YgMC4gQW5kIHJlcGxhY2Ugc29tZQorICAg
ICAgICBjcnlwdGljIHNob3J0IGxvY2FsIHZhcmlhYmxlIG5hbWVzIHdpdGggd29yZHMuCisKIDIw
MTMtMDktMjkgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXBh
aW50IGJvcmRlcnMgYW5kIG91dGxpbmVzIG9uIHBzZXVkbyBjb250ZW50IGNoYW5nZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IGQ2NDJiNzI3MWNiMmJhNjc4MWNkYmYyYzI1YzkzYWYxYWRkOTVmM2EuLjA4
NWQ5Njg1MzQzODk5YmRmY2UyOTk1ZGQ0NTY2ZTljMDI3YzRhNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL0FOR0xFLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTY2LDExICsxNjYsMTEgQEAKIAkJNDk5NTFDMDYxNEI3QUFEODAwNjBFOTZFIC8qIEJ1aWx0
SW5GdW5jdGlvbkVtdWxhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ1
aWx0SW5GdW5jdGlvbkVtdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
QjEzRkQyMTc5REIzRkQwMDFGODUxRCAvKiBEZXRlY3RDYWxsRGVwdGguY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGV0ZWN0Q2FsbERlcHRoLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCMTNGRDMxNzlEQjNGRDAwMUY4NTFEIC8qIERldGVjdENh
bGxEZXB0aC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZXRlY3RDYWxsRGVw
dGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGREYxNzlGNDY1ODAwMUY4
NTFEIC8qIEV4cHJlc3Npb25QYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gRXhwcmVzc2lvblBhcnNlci5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTAxNzlGNDY1ODAwMUY4NTFE
IC8qIGdsc2xhbmdfbGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IGdsc2xhbmdfbGV4LmNwcDsgcGF0aCA9IGdsc2xhbmdfbGV4LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNUNCMTNGRTExNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGdsc2xhbmdfdGFiLmNwcDsg
cGF0aCA9IGdsc2xhbmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNUNC
MTNGRTIxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IGdsc2xhbmdfdGFiLmg7IHBhdGggPSBnbHNsYW5nX3RhYi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1Q0IxM0ZFMzE3OUY0NjU4MDAxRjg1MUQgLyogVG9r
ZW5pemVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRva2VuaXpl
ci5jcHA7IHBhdGggPSBUb2tlbml6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk1Q0IxM0ZERjE3OUY0NjU4MDAxRjg1MUQgLyogRXhwcmVzc2lvblBhcnNlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeHByZXNzaW9uUGFyc2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMTNGRTAxNzlGNDY1ODAwMUY4NTFEIC8qIGds
c2xhbmdfbGV4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGdsc2xh
bmdfbGV4LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMTNGRTExNzlGNDY1
ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IGdsc2xhbmdfdGFiLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCMTNGRTIxNzlGNDY1ODAwMUY4NTFEIC8qIGdsc2xhbmdfdGFiLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IGdsc2xhbmdfdGFiLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQjEzRkUzMTc5RjQ2NTgwMDFGODUxRCAvKiBUb2tlbml6ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVG9rZW5pemVyLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUQ3QzU5QzUxMjA4QzY4QjAwMUM4NzNFIC8qIEFOR0xFLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEFOR0xFLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNjEyMDhDNjhCMDAxQzg3M0UgLyogQmFz
ZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1RDdDNTlDNzEyMDhDNjhCMDAxQzg3M0Ug
LyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggNDk3YWFkZjU1ODk2ZDZhNGI0N2IwMDc4YmUxMWU0NmUzMDVlYmMz
MC4uZWI1OGEyYTMxYjM5ZmU4NWIxNTZmZTM2ZGQwNTkwNGFmYmM3MmU3YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTYzOCw4ICs2MzgsOCBAQCBfX1pON1dlYkNvcmUxOHBsdWdpblNjcmlwdE9i
amVjdEVQTjNKU0M5RXhlY1N0YXRlRVBOU18xM0pTSFRNTEVsZW1lbnRFCiBfX1pON1dlYkNvcmUx
OHByb3h5U2VydmVyc0ZvclVSTEVSS05TXzNVUkxFUEtOU18xN05ldHdvcmtpbmdDb250ZXh0RQog
X19aTjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMTZyZXN1bWVBbmltYXRpb25zRXYKIF9f
Wk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjE3c3VzcGVuZEFuaW1hdGlvbnNFdgotX19a
TjdXZWJDb3JlMTlBbmltYXRpb25Db250cm9sbGVyMjBwYXVzZUFuaW1hdGlvbkF0VGltZUVQTlNf
MTJSZW5kZXJPYmplY3RFUktOM1dURjEyQXRvbWljU3RyaW5nRWQKLV9fWk43V2ViQ29yZTE5QW5p
bWF0aW9uQ29udHJvbGxlcjIxcGF1c2VUcmFuc2l0aW9uQXRUaW1lRVBOU18xMlJlbmRlck9iamVj
dEVSS04zV1RGNlN0cmluZ0VkCitfX1pON1dlYkNvcmUxOUFuaW1hdGlvbkNvbnRyb2xsZXIyMHBh
dXNlQW5pbWF0aW9uQXRUaW1lRVBOU18xM1JlbmRlckVsZW1lbnRFUktOM1dURjEyQXRvbWljU3Ry
aW5nRWQKK19fWk43V2ViQ29yZTE5QW5pbWF0aW9uQ29udHJvbGxlcjIxcGF1c2VUcmFuc2l0aW9u
QXRUaW1lRVBOU18xM1JlbmRlckVsZW1lbnRFUktOM1dURjZTdHJpbmdFZAogX19aTjdXZWJDb3Jl
MTlBbmltYXRpb25Db250cm9sbGVyMzZzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNwZW5k
ZWRFYgogX19aTjdXZWJDb3JlMTlIVE1MVGV4dEFyZWFFbGVtZW50OHNldFZhbHVlRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTlMYXllckZsdXNoU2NoZWR1bGVyMTBpbnZhbGlkYXRlRXYK
QEAgLTE2OTMsMTEgKzE2OTMsMTEgQEAgX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxMW5lZWRzTGF5
b3V0RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTNpc1RyYW5zcGFyZW50RXYKIF9fWk5LN1dl
YkNvcmU5RnJhbWVWaWV3MTNwYWludEJlaGF2aW9yRXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3
MTRkaWRGaXJzdExheW91dEV2Ci1fX1pOSzdXZWJDb3JlOUZyYW1lVmlldzE3Y29udmVydFRvUmVu
ZGVyZXJFUEtOU18xMlJlbmRlck9iamVjdEVSS05TXzdJbnRSZWN0RQotX19aTks3V2ViQ29yZTlG
cmFtZVZpZXcxN2NvbnZlcnRUb1JlbmRlcmVyRVBLTlNfMTJSZW5kZXJPYmplY3RFUktOU184SW50
UG9pbnRFCitfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzE3Y29udmVydFRvUmVuZGVyZXJFUEtOU18x
M1JlbmRlckVsZW1lbnRFUktOU183SW50UmVjdEUKK19fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTdj
b252ZXJ0VG9SZW5kZXJlckVQS05TXzEzUmVuZGVyRWxlbWVudEVSS05TXzhJbnRQb2ludEUKIF9f
Wk5LN1dlYkNvcmU5RnJhbWVWaWV3MTliYXNlQmFja2dyb3VuZENvbG9yRXYKLV9fWk5LN1dlYkNv
cmU5RnJhbWVWaWV3MTljb252ZXJ0RnJvbVJlbmRlcmVyRVBLTlNfMTJSZW5kZXJPYmplY3RFUktO
U183SW50UmVjdEUKLV9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTljb252ZXJ0RnJvbVJlbmRlcmVy
RVBLTlNfMTJSZW5kZXJPYmplY3RFUktOU184SW50UG9pbnRFCitfX1pOSzdXZWJDb3JlOUZyYW1l
VmlldzE5Y29udmVydEZyb21SZW5kZXJlckVQS05TXzEzUmVuZGVyRWxlbWVudEVSS05TXzdJbnRS
ZWN0RQorX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxOWNvbnZlcnRGcm9tUmVuZGVyZXJFUEtOU18x
M1JlbmRlckVsZW1lbnRFUktOU184SW50UG9pbnRFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzIw
aXNTb2Z0d2FyZVJlbmRlcmFibGVFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcyMW1heGltdW1T
Y3JvbGxQb3NpdGlvbkV2CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzIxbWluaW11bVNjcm9sbFBv
c2l0aW9uRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eUltYWdlTWFwTGluay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbmsuY3BwCmluZGV4IDc5MWJmMWM0ZWNiZmZmMjFiZjY3Nzcz
ZmUzYmVhMDgxMTM5NTNlY2IuLjVjMzI3NzkyNTMwYTU5NTBhYWE1ZGM1Y2ZlNWRjZTNmMjdlNTMw
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmNwcApAQCAtMTM0LDE0ICsxMzQsMTQgQEAgU3RyaW5nIEFj
Y2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OnRpdGxlKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLVJlbmRlck9iamVjdCogQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6aW1hZ2VN
YXBMaW5rUmVuZGVyZXIoKSBjb25zdAorUmVuZGVyRWxlbWVudCogQWNjZXNzaWJpbGl0eUltYWdl
TWFwTGluazo6aW1hZ2VNYXBMaW5rUmVuZGVyZXIoKSBjb25zdAogewotICAgIGlmICghbV9tYXBF
bGVtZW50LmdldCgpIHx8ICFtX2FyZWFFbGVtZW50LmdldCgpKQotICAgICAgICByZXR1cm4gMDsK
KyAgICBpZiAoIW1fbWFwRWxlbWVudCB8fCAhbV9hcmVhRWxlbWVudCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gMDsKKyAgICBSZW5kZXJF
bGVtZW50KiByZW5kZXJlciA9IG51bGxwdHI7CiAgICAgaWYgKG1fcGFyZW50ICYmIG1fcGFyZW50
LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKLSAgICAgICAgcmVuZGVyZXIgPSBzdGF0
aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9wYXJlbnQpLT5yZW5kZXJlcigp
OworICAgICAgICByZW5kZXJlciA9IHRvUmVuZGVyRWxlbWVudChzdGF0aWNfY2FzdDxBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Kj4obV9wYXJlbnQpLT5yZW5kZXJlcigpKTsKICAgICBlbHNlCiAg
ICAgICAgIHJlbmRlcmVyID0gbV9tYXBFbGVtZW50LT5yZW5kZXJlcigpOwogICAgIApAQCAtMTUx
LDEzICsxNTEsMTMgQEAgUmVuZGVyT2JqZWN0KiBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjpp
bWFnZU1hcExpbmtSZW5kZXJlcigpIGNvbnN0CiB2b2lkIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExp
bms6OmRldGFjaEZyb21QYXJlbnQoKQogewogICAgIEFjY2Vzc2liaWxpdHlNb2NrT2JqZWN0Ojpk
ZXRhY2hGcm9tUGFyZW50KCk7Ci0gICAgbV9hcmVhRWxlbWVudCA9IDA7Ci0gICAgbV9tYXBFbGVt
ZW50ID0gMDsKKyAgICBtX2FyZWFFbGVtZW50ID0gbnVsbHB0cjsKKyAgICBtX21hcEVsZW1lbnQg
PSBudWxscHRyOwogfQogCiBQYXRoIEFjY2Vzc2liaWxpdHlJbWFnZU1hcExpbms6OmVsZW1lbnRQ
YXRoKCkgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW1hZ2VNYXBMaW5r
UmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gaW1hZ2VNYXBMaW5rUmVuZGVyZXIoKTsK
ICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gUGF0aCgpOwogICAgIApAQCAtMTY2
LDcgKzE2Niw3IEBAIFBhdGggQWNjZXNzaWJpbGl0eUltYWdlTWFwTGluazo6ZWxlbWVudFBhdGgo
KSBjb25zdAogICAgIAogTGF5b3V0UmVjdCBBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rOjplbGVt
ZW50UmVjdCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGltYWdlTWFw
TGlua1JlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IGltYWdlTWFwTGlua1JlbmRlcmVy
KCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUltYWdlTWFwTGluay5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5SW1hZ2VNYXBMaW5rLmgKaW5kZXggMmYxZmIwYjcyNzI0NTJiNmIzYmJhZGU4MTQwZGVjZmE0
MTQyMjRhNC4uNDYwMGUzYzQxZDVmYzk1MTg4MmQzY2ZkOTk2OTZmYzZkYTBkZTE1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1hZ2VNYXBM
aW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5SW1h
Z2VNYXBMaW5rLmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoRnJvbVBhcmVudCgpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBQYXRoIGVsZW1lbnRQ
YXRoKCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0KiBpbWFnZU1hcExpbmtSZW5kZXJlcigpIGNv
bnN0OworICAgIFJlbmRlckVsZW1lbnQqIGltYWdlTWFwTGlua1JlbmRlcmVyKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlUZXh0KFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4
dD4mKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFnZU1hcExpbmsoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzUGF0aCgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDJlNDE4M2NkY2I2ZjQxZGU5ZDEwMGI5MzY1
ZGE0ZDZmZTExOGM0ZGYuLjhhZjNlMmYwMWIwN2IxNzNmODBhNzA4MmI1NzQ3ZDdmZmYzOTUzMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTI2Miw3ICsxMjYyLDcgQEAgYm9vbCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0Ojpjb21wdXRlQWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIGNoZWNrIHdoZXRoZXIgcmVuZGVyZWQgaW1h
Z2Ugd2FzIHN0cmV0Y2hlZCBmcm9tIG9uZS1kaW1lbnNpb25hbCBmaWxlIGltYWdlCiAgICAgICAg
ICAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkpIHsKLSAgICAgICAgICAgICAgICBMYXlvdXRT
aXplIGltYWdlU2l6ZSA9IGltYWdlLT5jYWNoZWRJbWFnZSgpLT5pbWFnZVNpemVGb3JSZW5kZXJl
cihtX3JlbmRlcmVyLCBpbWFnZS0+dmlldygpLnpvb21GYWN0b3IoKSk7CisgICAgICAgICAgICAg
ICAgTGF5b3V0U2l6ZSBpbWFnZVNpemUgPSBpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+aW1hZ2VTaXpl
Rm9yUmVuZGVyZXIodG9SZW5kZXJFbGVtZW50KG1fcmVuZGVyZXIpLCBpbWFnZS0+dmlldygpLnpv
b21GYWN0b3IoKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGltYWdlU2l6ZS5oZWlnaHQoKSA8
PSAxIHx8IGltYWdlU2l6ZS53aWR0aCgpIDw9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvRE9NLm1tIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KaW5kZXggNGZmZTg2MWE3N2QyY2QyMGY3YzM0
Mzg1N2I3MzU2NGY3MzU5MGY0Ny4uYzAyZWY5ZjUwOGYxZGQ5YmMxYzQ4MzRjNjM3NDlhYTc2OTE5
NzA3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET00ubW0KQEAgLTM2NiwxMCArMzY2LDEw
IEBAIC0gKE5TSW1hZ2UqKWltYWdlCiAgICAgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IGNvcmUoc2VsZiktPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVy
ZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBXZWJDb3JlOjpDYWNoZWRJ
bWFnZSogY2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpSZW5kZXJJbWFnZSo+KHJl
bmRlcmVyKS0+Y2FjaGVkSW1hZ2UoKTsKKyAgICBXZWJDb3JlOjpDYWNoZWRJbWFnZSogY2FjaGVk
SW1hZ2UgPSB0b1JlbmRlckltYWdlKHJlbmRlcmVyKS0+Y2FjaGVkSW1hZ2UoKTsKICAgICBpZiAo
IWNhY2hlZEltYWdlIHx8IGNhY2hlZEltYWdlLT5lcnJvck9jY3VycmVkKCkpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKHJlbmRl
cmVyKS0+Z2V0TlNJbWFnZSgpOworICAgIHJldHVybiBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5k
ZXJlcih0b1JlbmRlckltYWdlKHJlbmRlcmVyKSktPmdldE5TSW1hZ2UoKTsKIH0KIAogQGVuZApA
QCAtMzc5LDcgKzM3OSw3IEBAIEBpbXBsZW1lbnRhdGlvbiBET01FbGVtZW50IChXZWJQcml2YXRl
KQogLSAoTlNGb250ICopX2ZvbnQKIHsKICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlz
IGZ1bmN0aW9uIHRvIFdlYkNvcmU6OkVsZW1lbnQgYW5kIGF1dG9nZW5lcmF0ZT8KLSAgICBXZWJD
b3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAg
ICBhdXRvIHJlbmRlcmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRl
cmVyKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiByZW5kZXJlci0+c3R5bGUoKS0+
Zm9udCgpLnByaW1hcnlGb250KCktPmdldE5TRm9udCgpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIC0g
KE5TRm9udCAqKV9mb250CiAtIChOU0RhdGEgKilfaW1hZ2VUSUZGUmVwcmVzZW50YXRpb24KIHsK
ICAgICAvLyBGSVhNRTogQ291bGQgd2UgbW92ZSB0aGlzIGZ1bmN0aW9uIHRvIFdlYkNvcmU6OkVs
ZW1lbnQgYW5kIGF1dG9nZW5lcmF0ZT8KLSAgICBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRl
cmVyID0gY29yZShzZWxmKS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gY29yZShz
ZWxmKS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFn
ZSgpKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlKiBjYWNo
ZWRJbWFnZSA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OlJlbmRlckltYWdlKj4ocmVuZGVyZXIpLT5j
YWNoZWRJbWFnZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1Zh
bHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDYW52YXNWYWx1ZS5jcHAKaW5kZXggMWZl
MmEzNTBmMWQyZjkwOThkNTY5NDI1NWY0ZjAzMTQ3NDFiNWQ3Yi4uNDhmODMzMzVlYzQwNTY2Zjll
MjFmMGIxYjc3MzUyNWExMmU3M2YwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NhbnZhc1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ2FudmFzVmFsdWUu
Y3BwCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiQ1NTQ2FudmFzVmFsdWUuaCIKIAogI2lu
Y2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTAsMjUgKzUwLDIzIEBAIFN0cmluZyBDU1NDYW52
YXNWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiB2b2lkIENTU0NhbnZhc1ZhbHVlOjpjYW52
YXNDaGFuZ2VkKEhUTUxDYW52YXNFbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0JiBjaGFuZ2VkUmVj
dCkKIHsKICAgICBJbnRSZWN0IGltYWdlQ2hhbmdlUmVjdCA9IGVuY2xvc2luZ0ludFJlY3QoY2hh
bmdlZFJlY3QpOwotICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVy
YXRvciBlbmQgPSBjbGllbnRzKCkuZW5kKCk7Ci0gICAgZm9yIChIYXNoQ291bnRlZFNldDxSZW5k
ZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVudHMoKS5iZWdpbigpOyBjdXJy
ICE9IGVuZDsgKytjdXJyKQotICAgICAgICBjb25zdF9jYXN0PFJlbmRlck9iamVjdCo+KGN1cnIt
PmtleSktPmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpLCAm
aW1hZ2VDaGFuZ2VSZWN0KTsKKyAgICBmb3IgKGF1dG8gaXQgPSBjbGllbnRzKCkuYmVnaW4oKSwg
ZW5kID0gY2xpZW50cygpLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIGl0LT5rZXkt
PmltYWdlQ2hhbmdlZChzdGF0aWNfY2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpLCAmaW1hZ2VD
aGFuZ2VSZWN0KTsKIH0KIAogdm9pZCBDU1NDYW52YXNWYWx1ZTo6Y2FudmFzUmVzaXplZChIVE1M
Q2FudmFzRWxlbWVudCopCiB7Ci0gICAgSGFzaENvdW50ZWRTZXQ8UmVuZGVyT2JqZWN0Kj46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGNsaWVudHMoKS5lbmQoKTsKLSAgICBmb3IgKEhhc2hDb3VudGVk
U2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBjdXJyID0gY2xpZW50cygpLmJlZ2lu
KCk7IGN1cnIgIT0gZW5kOyArK2N1cnIpCi0gICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0
Kj4oY3Vyci0+a2V5KS0+aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4o
dGhpcykpOworICAgIGZvciAoYXV0byBpdCA9IGNsaWVudHMoKS5iZWdpbigpLCBlbmQgPSBjbGll
bnRzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPmtleS0+aW1hZ2VDaGFu
Z2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4odGhpcykpOwogfQogCiB2b2lkIENTU0Nh
bnZhc1ZhbHVlOjpjYW52YXNEZXN0cm95ZWQoSFRNTENhbnZhc0VsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChlbGVtZW50LCBlbGVtZW50ID09IG1fZWxlbWVudCk7Ci0gICAg
bV9lbGVtZW50ID0gMDsKKyAgICBtX2VsZW1lbnQgPSBudWxscHRyOwogfQogCi1JbnRTaXplIENT
U0NhbnZhc1ZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0lu
dFNpemUgQ1NTQ2FudmFzVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikKIHsKICAgICBpZiAoSFRNTENhbnZhc0VsZW1lbnQqIGVsdCA9IGVsZW1lbnQocmVuZGVy
ZXItPmRvY3VtZW50KCkpKQogICAgICAgICByZXR1cm4gSW50U2l6ZShlbHQtPndpZHRoKCksIGVs
dC0+aGVpZ2h0KCkpOwpAQCAtODYsMTMgKzg0LDEzIEBAIEhUTUxDYW52YXNFbGVtZW50KiBDU1ND
YW52YXNWYWx1ZTo6ZWxlbWVudChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgcmV0dXJuIG1fZWxl
bWVudDsKIH0KIAotUGFzc1JlZlB0cjxJbWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIC8qc2l6ZSovKQorUGFzc1JlZlB0cjxJ
bWFnZT4gQ1NTQ2FudmFzVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25z
dCBJbnRTaXplJiAvKnNpemUqLykKIHsKICAgICBBU1NFUlQoY2xpZW50cygpLmNvbnRhaW5zKHJl
bmRlcmVyKSk7Ci0gICAgSFRNTENhbnZhc0VsZW1lbnQqIGVsdCA9IGVsZW1lbnQocmVuZGVyZXIt
PmRvY3VtZW50KCkpOwotICAgIGlmICghZWx0IHx8ICFlbHQtPmJ1ZmZlcigpKQorICAgIEhUTUxD
YW52YXNFbGVtZW50KiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudChyZW5kZXJlci0+ZG9jdW1lbnQo
KSk7CisgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LT5idWZmZXIoKSkKICAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIGVsdC0+Y29waWVkSW1hZ2UoKTsKKyAgICByZXR1cm4gZWxlbWVu
dC0+Y29waWVkSW1hZ2UoKTsKIH0KIAogYm9vbCBDU1NDYW52YXNWYWx1ZTo6ZXF1YWxzKGNvbnN0
IENTU0NhbnZhc1ZhbHVlJiBvdGhlcikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDYW52YXNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVl
LmgKaW5kZXggMzMzYjMzMDQxYzNjOTlmZTM3MWNkN2MwODQ5NjMwM2U2NmVlYmIyOS4uNWY4ZWNh
ZGMyN2JkOWI3OWUyNzRiM2RkNjg0ZDJhN2M4YjQ4MmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NhbnZhc1ZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nh
bnZhc1ZhbHVlLmgKQEAgLTQwLDkgKzQwLDkgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3Rv
bUNTU1RleHQoKSBjb25zdDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9i
amVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5k
ZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2Jq
ZWN0Kik7CisgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCiAg
ICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZvaWQgbG9h
ZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA0ZTZlZTFhZDZj
YmQ2MDY3NjhkY2JkNTZmNTFlMjNhOWU5MmI2NGNkLi41NzJhYTA0OWI1MGJhMTIxZTI3NWM1N2Zm
YWU2YTkzZjJiZjZmMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMTY5Niw3ICsxNjk2LDcgQEAgc3RhdGljIGlubGlu
ZSBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBjb21wdXRlUmVuZGVyU3R5bGVGb3JQcm9wZXJ0eShO
b2RlKiBzdHlsZWQKIAogICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNDb21wb3NpdGVk
KCkgJiYgQW5pbWF0aW9uQ29udHJvbGxlcjo6c3VwcG9ydHNBY2NlbGVyYXRlZEFuaW1hdGlvbk9m
UHJvcGVydHkocHJvcGVydHlJRCkpIHsKICAgICAgICAgQW5pbWF0aW9uVXBkYXRlQmxvY2sgYW5p
bWF0aW9uVXBkYXRlQmxvY2soJnJlbmRlcmVyLT5hbmltYXRpb24oKSk7Ci0gICAgICAgIFJlZlB0
cjxSZW5kZXJTdHlsZT4gc3R5bGUgPSByZW5kZXJlci0+YW5pbWF0aW9uKCkuZ2V0QW5pbWF0ZWRT
dHlsZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBz
dHlsZSA9IHJlbmRlcmVyLT5hbmltYXRpb24oKS5nZXRBbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIo
dG9SZW5kZXJFbGVtZW50KHJlbmRlcmVyKSk7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50U3Bl
Y2lmaWVyICYmICFzdHlsZWROb2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkgewogICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxsIG9ubHkgZXhpc3QgaWYgdGhl
IGFuaW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4KICAgICAgICAgICAgIHJldHVy
biBzdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvRWxlbWVudFNwZWNpZmllcik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRlVmFsdWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmNwcAppbmRleCAxYTMzMTZiMzI3ZjY5
MGJmYmM2MmFmMTMyN2NmNGYxN2Y4N2E1ZTE2Li5jOTQ0YjY3ODcwNDRjMDhhMDU5YmM5YzliOTRi
MmQ5YWNkOThiZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ3Jvc3NmYWRl
VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1ZS5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkNyb3NzZmFkZUdlbmVyYXRlZEltYWdlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlR2VuZXJhdGVk
SW1hZ2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC00NCw3ICs0
NCw3IEBAIHN0YXRpYyBpbmxpbmUgZG91YmxlIGJsZW5kRnVuYyhkb3VibGUgZnJvbSwgZG91Ymxl
IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiAgICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVz
cyk7CiB9CiAKLXN0YXRpYyBib29sIHN1YmltYWdlS25vd25Ub0JlT3BhcXVlKENTU1ZhbHVlKiB2
YWx1ZSwgY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0YXRpYyBib29sIHN1YmltYWdl
S25vd25Ub0JlT3BhcXVlKENTU1ZhbHVlKiB2YWx1ZSwgY29uc3QgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIpCiB7CiAgICAgaWYgKHZhbHVlLT5pc0ltYWdlVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
IHRvQ1NTSW1hZ2VWYWx1ZSh2YWx1ZSktPmtub3duVG9CZU9wYXF1ZShyZW5kZXJlcik7CkBAIC03
OCw3ICs3OCw3IEBAIFN0cmluZyBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3VzdG9tQ1NTVGV4dCgpIGNv
bnN0CiAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOwogfQogCi1JbnRTaXplIENTU0Nyb3Nz
ZmFkZVZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK0ludFNp
emUgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikKIHsKICAgICBmbG9hdCBwZXJjZW50YWdlID0gbV9wZXJjZW50YWdlVmFsdWUtPmdldEZs
b2F0VmFsdWUoKTsKICAgICBmbG9hdCBpbnZlcnNlUGVyY2VudGFnZSA9IDEgLSBwZXJjZW50YWdl
OwpAQCAtMTA4LDcgKzEwOCw3IEBAIGJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6OmlzUGVuZGluZygp
IGNvbnN0CiAgICAgICAgIHx8IENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnN1YmltYWdlSXNQZW5k
aW5nKG1fdG9WYWx1ZS5nZXQoKSk7CiB9CiAKLWJvb2wgQ1NTQ3Jvc3NmYWRlVmFsdWU6Omtub3du
VG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBDU1ND
cm9zc2ZhZGVWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKSBjb25zdAogewogICAgIHJldHVybiBzdWJpbWFnZUtub3duVG9CZU9wYXF1ZShtX2Zyb21W
YWx1ZS5nZXQoKSwgcmVuZGVyZXIpICYmIHN1YmltYWdlS25vd25Ub0JlT3BhcXVlKG1fdG9WYWx1
ZS5nZXQoKSwgcmVuZGVyZXIpOwogfQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgQ1NTQ3Jvc3Nm
YWRlVmFsdWU6OmxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291
cmNlTG9hZGVyCiAgICAgbV9jcm9zc2ZhZGVTdWJpbWFnZU9ic2VydmVyLnNldFJlYWR5KHRydWUp
OwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVWYWx1ZTo6aW1hZ2UoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKK1Bhc3NSZWZQdHI8SW1hZ2U+
IENTU0Nyb3NzZmFkZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwpAQCAtMTYzLDExICsxNjMsOCBAQCBQYXNzUmVmUHRyPEltYWdlPiBDU1NDcm9zc2ZhZGVW
YWx1ZTo6aW1hZ2UoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZQogCiB2b2lk
IENTU0Nyb3NzZmFkZVZhbHVlOjpjcm9zc2ZhZGVDaGFuZ2VkKGNvbnN0IEludFJlY3QmKQogewot
ICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlck9iamVjdCo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBj
bGllbnRzKCkuZW5kKCk7Ci0gICAgZm9yIChIYXNoQ291bnRlZFNldDxSZW5kZXJPYmplY3QqPjo6
Y29uc3RfaXRlcmF0b3IgY3VyciA9IGNsaWVudHMoKS5iZWdpbigpOyBjdXJyICE9IGVuZDsgKytj
dXJyKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50ID0gY29uc3RfY2FzdDxSZW5kZXJP
YmplY3QqPihjdXJyLT5rZXkpOwotICAgICAgICBjbGllbnQtPmltYWdlQ2hhbmdlZChzdGF0aWNf
Y2FzdDxXcmFwcGVkSW1hZ2VQdHI+KHRoaXMpKTsKLSAgICB9CisgICAgZm9yIChhdXRvIGl0ID0g
Y2xpZW50cygpLmJlZ2luKCksIGVuZCA9IGNsaWVudHMoKS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KQorICAgICAgICBpdC0+a2V5LT5pbWFnZUNoYW5nZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdl
UHRyPih0aGlzKSk7CiB9CiAKIHZvaWQgQ1NTQ3Jvc3NmYWRlVmFsdWU6OkNyb3NzZmFkZVN1Ymlt
YWdlT2JzZXJ2ZXJQcm94eTo6aW1hZ2VDaGFuZ2VkKENhY2hlZEltYWdlKiwgY29uc3QgSW50UmVj
dCogcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDcm9zc2ZhZGVWYWx1
ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVlLmgKaW5kZXggZjlkYmJh
YzE5ZDM4YTJlYWFjYTMzMDZlYjkyMmUxMTdlODg2MDZhZS4uOTY0YjExNmU5MmI0NTk4MmExNTEx
ODhjZWQ4ZGE1NmQ3NzhhNjNmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Ny
b3NzZmFkZVZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nyb3NzZmFkZVZhbHVl
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRJ
bWFnZTsKIGNsYXNzIENyb3NzZmFkZVN1YmltYWdlT2JzZXJ2ZXJQcm94eTsKLWNsYXNzIFJlbmRl
ck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBEb2N1bWVudDsKIAogY2xhc3Mg
Q1NTQ3Jvc3NmYWRlVmFsdWUgOiBwdWJsaWMgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSB7CkBAIC01
MiwxMiArNTIsMTIgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQoKSBjb25z
dDsKIAotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IElu
dFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29u
c3QgSW50U2l6ZSYpOwogICAgIGJvb2wgaXNGaXhlZFNpemUoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0Kik7CisgICAgSW50
U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCopOwogCiAgICAgYm9vbCBpc1BlbmRp
bmcoKSBjb25zdDsKLSAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
KSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50Kikg
Y29uc3Q7CiAKICAgICB2b2lkIGxvYWRTdWJpbWFnZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IDU3ZDJl
YmZmMzkzNzQzZGRlZjZmZmExZWNjZWU3MDI1Y2Y0OTZjYWMuLmY3NDk1ZDk3MzM5MWFjOWY1ZGVl
NjVkZTYzNzJiMDgzYTQ5NTNlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJDcm9zc2ZhZGVHZW5lcmF0
ZWRJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlckVmZmVjdFJlbmRlcmVyLmgiCiAjaW5jbHVkZSAi
SW1hZ2VCdWZmZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5k
ZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0
eWxlR2VuZXJhdGVkSW1hZ2UuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCkBAIC01OSw3
ICs1OSw3IEBAIFN0cmluZyBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CiB9CiAKLUludFNpemUgQ1NTRmlsdGVy
SW1hZ2VWYWx1ZTo6Zml4ZWRTaXplKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitJbnRT
aXplIENTU0ZpbHRlckltYWdlVmFsdWU6OmZpeGVkU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlcikKIHsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpOwogICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGNhY2hlZEltYWdlRm9yQ1NTVmFsdWUobV9pbWFnZVZh
bHVlLmdldCgpLCBjYWNoZWRSZXNvdXJjZUxvYWRlcik7CkBAIC03NSw3ICs3NSw3IEBAIGJvb2wg
Q1NTRmlsdGVySW1hZ2VWYWx1ZTo6aXNQZW5kaW5nKCkgY29uc3QKICAgICByZXR1cm4gQ1NTSW1h
Z2VHZW5lcmF0b3JWYWx1ZTo6c3ViaW1hZ2VJc1BlbmRpbmcobV9pbWFnZVZhbHVlLmdldCgpKTsK
IH0KIAotYm9vbCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUoY29uc3QgUmVu
ZGVyT2JqZWN0KikgY29uc3QKK2Jvb2wgQ1NTRmlsdGVySW1hZ2VWYWx1ZTo6a25vd25Ub0JlT3Bh
cXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKIH0K
QEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBDU1NGaWx0ZXJJbWFnZVZhbHVlOjpsb2FkU3ViaW1hZ2Vz
KENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWQKICAgICBtX2ZpbHRlclN1
YmltYWdlT2JzZXJ2ZXIuc2V0UmVhZHkodHJ1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IENT
U0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IElu
dFNpemUmIHNpemUpCitQYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFn
ZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKICAgICBp
ZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTMzLDExICsxMzMsOCBA
QCBQYXNzUmVmUHRyPEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaQogCiB2b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6OmZp
bHRlckltYWdlQ2hhbmdlZChjb25zdCBJbnRSZWN0JikKIHsKLSAgICBIYXNoQ291bnRlZFNldDxS
ZW5kZXJPYmplY3QqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY2xpZW50cygpLmVuZCgpOwotICAg
IGZvciAoSGFzaENvdW50ZWRTZXQ8UmVuZGVyT2JqZWN0Kj46OmNvbnN0X2l0ZXJhdG9yIGN1cnIg
PSBjbGllbnRzKCkuYmVnaW4oKTsgY3VyciAhPSBlbmQ7ICsrY3VycikgewotICAgICAgICBSZW5k
ZXJPYmplY3QqIGNsaWVudCA9IGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4oY3Vyci0+a2V5KTsK
LSAgICAgICAgY2xpZW50LT5pbWFnZUNoYW5nZWQoc3RhdGljX2Nhc3Q8V3JhcHBlZEltYWdlUHRy
Pih0aGlzKSk7Ci0gICAgfQorICAgIGZvciAoYXV0byBpdCA9IGNsaWVudHMoKS5iZWdpbigpLCBl
bmQgPSBjbGllbnRzKCkuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPmtleS0+
aW1hZ2VDaGFuZ2VkKHN0YXRpY19jYXN0PFdyYXBwZWRJbWFnZVB0cj4odGhpcykpOwogfQogCiB2
b2lkIENTU0ZpbHRlckltYWdlVmFsdWU6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoU3R5bGVSZXNv
bHZlciogcmVzb2x2ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVy
SW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuaApp
bmRleCA5YTViZjBlZDYzODMyMzljY2ViODE2YWIxNWU5YTU2YWViNDRiZTkzLi4xYzJjYjVmMTI2
ZmFiMmE4NDdmMmFlYzI3N2U2ZTljMGE0YjhkNTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBDYWNoZWRJbWFnZTsKIGNsYXNzIEZpbHRlclN1YmltYWdlT2JzZXJ2ZXJQcm94eTsK
LWNsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBEb2N1bWVu
dDsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CiAKQEAgLTU3LDEyICs1NywxMiBAQCBwdWJsaWM6CiAK
ICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxJbWFn
ZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBhc3NSZWZQdHI8
SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJik7CiAgICAgYm9vbCBp
c0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBJbnRTaXplIGZpeGVkU2l6
ZShjb25zdCBSZW5kZXJPYmplY3QqKTsKKyAgICBJbnRTaXplIGZpeGVkU2l6ZShjb25zdCBSZW5k
ZXJFbGVtZW50Kik7CiAKICAgICBib29sIGlzUGVuZGluZygpIGNvbnN0OwotICAgIGJvb2wga25v
d25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZvaWQgbG9hZFN1
YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxvYWRlciopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCmluZGV4IDgyY2M1MDcxMWM3YTgwYTNjZTQzNDA4OWJmM2UxNjEwYTZjMDdm
MDAuLjEyZmY1OGU0MTgyYjM0NzI1ZDgxNDVkODI3ZGY5YmU5N2RjZjRiYTQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAi
Rm9udENhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5o
IgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU2ltcGxlRm9udERhdGEuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2V0LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggMDNhYzE5YjQ5ODcwYmM3
N2NiY2RjYmUzZGZmMDRhOTg4OWI0YTFkZS4uMmYxMzUxMDc1MjNlNGUxMmFiMTQwYWEwMjI3ODU5
YmFhYjBjMGViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAt
NDMsNyArNDMsNyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IENTU0dyYWRpZW50VmFsdWU6OmltYWdlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCitQYXNzUmVmUHRyPEltYWdlPiBDU1NH
cmFkaWVudFZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6
ZSYgc2l6ZSkKIHsKICAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwpA
QCAtMTMyLDcgKzEzMiw3IEBAIFBhc3NSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gQ1NTR3JhZGll
bnRWYWx1ZTo6Z3JhZGllbnRXaXRoU3R5bGVzUmVzb2x2ZWQoU3R5bGVSCiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3Jh
ZGllbnQqIGdyYWRpZW50LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kZXJTdHlsZSogcm9v
dFN0eWxlLCBmbG9hdCBtYXhMZW5ndGhGb3JSZXBlYXQpCit2b2lkIENTU0dyYWRpZW50VmFsdWU6
OmFkZFN0b3BzKEdyYWRpZW50KiBncmFkaWVudCwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGZsb2F0IG1heExlbmd0aEZvclJlcGVhdCkKIHsKICAgICBS
ZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKIApAQCAtNDU5LDcgKzQ1OSw3
IEBAIGJvb2wgQ1NTR3JhZGllbnRWYWx1ZTo6aXNDYWNoZWFibGUoKSBjb25zdAogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIENTU0dyYWRpZW50VmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25z
dCBSZW5kZXJPYmplY3QqKSBjb25zdAorYm9vbCBDU1NHcmFkaWVudFZhbHVlOjprbm93blRvQmVP
cGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0CiB7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX3N0b3BzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlmIChtX3N0b3BzW2ldLm1f
cmVzb2x2ZWRDb2xvci5oYXNBbHBoYSgpKQpAQCAtNjQzLDcgKzY0Myw3IEBAIHN0YXRpYyB2b2lk
IGVuZFBvaW50c0Zyb21BbmdsZShmbG9hdCBhbmdsZURlZywgY29uc3QgSW50U2l6ZSYgc2l6ZSwg
RmxvYXRQb2ludCYKICAgICBmaXJzdFBvaW50LnNldChoYWxmV2lkdGggLSBlbmRYLCBoYWxmSGVp
Z2h0ICsgZW5kWSk7CiB9CiAKLVBhc3NSZWZQdHI8R3JhZGllbnQ+IENTU0xpbmVhckdyYWRpZW50
VmFsdWU6OmNyZWF0ZUdyYWRpZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNp
emUmIHNpemUpCitQYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NMaW5lYXJHcmFkaWVudFZhbHVlOjpj
cmVhdGVHcmFkaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgc2l6
ZSkKIHsKICAgICBBU1NFUlQoIXNpemUuaXNFbXB0eSgpKTsKIApAQCAtOTgzLDcgKzk4Myw3IEBA
IHN0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVsbGlwc2VSYWRpdXMoY29uc3QgRmxvYXRT
aXplJiBwLCBmbG9hdCBhc3BlY3RSYXRpCiB9CiAKIC8vIEZJWE1FOiBzaGFyZSBjb2RlIHdpdGgg
dGhlIGxpbmVhciB2ZXJzaW9uCi1QYXNzUmVmUHRyPEdyYWRpZW50PiBDU1NSYWRpYWxHcmFkaWVu
dFZhbHVlOjpjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRT
aXplJiBzaXplKQorUGFzc1JlZlB0cjxHcmFkaWVudD4gQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6
Y3JlYXRlR3JhZGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNp
emUpCiB7CiAgICAgQVNTRVJUKCFzaXplLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
R3JhZGllbnRWYWx1ZS5oCmluZGV4IDNmMWVjMDQ4MGQ3NmQ3MTNhZGViMGE4YzgyZmQ1MmIzOTc3
ZWM5ZDguLjk2MmQ4ZGQzZjZlODU1YjQ5OTk1ODE3OTVkODljMjIyYzVjNDNhNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuaApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ1NT
R3JhZGllbnRDb2xvclN0b3AgewogCiBjbGFzcyBDU1NHcmFkaWVudFZhbHVlIDogcHVibGljIENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUgewogcHVibGljOgotICAgIFBhc3NSZWZQdHI8SW1hZ2U+IGlt
YWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmKTsKKyAgICBQYXNzUmVmUHRyPEltYWdl
PiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpOwogCiAgICAgdm9pZCBzZXRG
aXJzdFgoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsKSB7IG1fZmlyc3RYID0gdmFs
OyB9CiAgICAgdm9pZCBzZXRGaXJzdFkoUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
KSB7IG1fZmlyc3RZID0gdmFsOyB9CkBAIC04MiwxMCArODIsMTAgQEAgcHVibGljOgogICAgIENT
U0dyYWRpZW50VHlwZSBncmFkaWVudFR5cGUoKSBjb25zdCB7IHJldHVybiBtX2dyYWRpZW50VHlw
ZTsgfQogCiAgICAgYm9vbCBpc0ZpeGVkU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0g
ICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgeyByZXR1cm4g
SW50U2l6ZSgpOyB9CisgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCop
IGNvbnN0IHsgcmV0dXJuIEludFNpemUoKTsgfQogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVs
ZW1lbnQqKSBjb25zdDsKIAogICAgIHZvaWQgbG9hZFN1YmltYWdlcyhDYWNoZWRSZXNvdXJjZUxv
YWRlciopIHsgfQogICAgIFBhc3NSZWZQdHI8Q1NTR3JhZGllbnRWYWx1ZT4gZ3JhZGllbnRXaXRo
U3R5bGVzUmVzb2x2ZWQoU3R5bGVSZXNvbHZlciopOwpAQCAtMTEyLDcgKzExMiw3IEBAIHByb3Rl
Y3RlZDoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBhZGRTdG9wcyhHcmFkaWVudCosIFJlbmRl
ck9iamVjdCosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGZsb2F0IG1heExlbmd0aEZvclJlcGVh
dCA9IDApOworICAgIHZvaWQgYWRkU3RvcHMoR3JhZGllbnQqLCBSZW5kZXJFbGVtZW50KiwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgZmxvYXQgbWF4TGVuZ3RoRm9yUmVwZWF0ID0gMCk7CiAKICAg
ICAvLyBSZXNvbHZlIHBvaW50cy9yYWRpaSB0byBmcm9udCBlbmQgdmFsdWVzLgogICAgIEZsb2F0
UG9pbnQgY29tcHV0ZUVuZFBvaW50KENTU1ByaW1pdGl2ZVZhbHVlKiwgQ1NTUHJpbWl0aXZlVmFs
dWUqLCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGNvbnN0IEludFNpemUm
KTsKQEAgLTE0Nyw3ICsxNDcsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGN1c3RvbUNTU1RleHQo
KSBjb25zdDsKIAogICAgIC8vIENyZWF0ZSB0aGUgZ3JhZGllbnQgZm9yIGEgZ2l2ZW4gc2l6ZS4K
LSAgICBQYXNzUmVmUHRyPEdyYWRpZW50PiBjcmVhdGVHcmFkaWVudChSZW5kZXJPYmplY3QqLCBj
b25zdCBJbnRTaXplJik7CisgICAgUGFzc1JlZlB0cjxHcmFkaWVudD4gY3JlYXRlR3JhZGllbnQo
UmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmKTsKIAogICAgIFBhc3NSZWZQdHI8Q1NTTGlu
ZWFyR3JhZGllbnRWYWx1ZT4gY2xvbmUoKSBjb25zdAogICAgIHsKQEAgLTE5NSw3ICsxOTUsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmRWZXJ0aWNhbFNpemUoUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gdmFsKSB7IG1fZW5kVmVydGljYWxTaXplID0gdmFsOyB9CiAKICAgICAvLyBD
cmVhdGUgdGhlIGdyYWRpZW50IGZvciBhIGdpdmVuIHNpemUuCi0gICAgUGFzc1JlZlB0cjxHcmFk
aWVudD4gY3JlYXRlR3JhZGllbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpOworICAg
IFBhc3NSZWZQdHI8R3JhZGllbnQ+IGNyZWF0ZUdyYWRpZW50KFJlbmRlckVsZW1lbnQqLCBjb25z
dCBJbnRTaXplJik7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NSYWRpYWxHcmFkaWVudFZh
bHVlJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdl
bmVyYXRvclZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVyYXRvclZh
bHVlLmNwcAppbmRleCBhOTA1ZjIzNWZjYmNiMzJhOTQ2ZDIyODhlYmE4NjVkODQ2ZTgwNjZmLi4x
MDE1NzVkYTBkOWY1ZTFjYzM1NjI1NWQ2YWY0NGViM2QyZGEwN2M5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAj
aW5jbHVkZSAiQ1NTR3JhZGllbnRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIK
ICNpbmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUg
IlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUwLDE0ICs1MCwxNCBAQCBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjp+Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZSgpCiB7CiB9CiAKLXZvaWQgQ1NT
SW1hZ2VHZW5lcmF0b3JWYWx1ZTo6YWRkQ2xpZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2
b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmFkZENsaWVudChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlcikKIHsKICAgICBBU1NFUlQocmVuZGVyZXIpOwogICAgIHJlZigpOwogICAgIG1fY2xpZW50
cy5hZGQocmVuZGVyZXIpOwogfQogCi12b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OnJlbW92
ZUNsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBDU1NJbWFnZUdlbmVyYXRvclZh
bHVlOjpyZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgQVNTRVJU
KHJlbmRlcmVyKTsKICAgICBtX2NsaWVudHMucmVtb3ZlKHJlbmRlcmVyKTsKQEAgLTEwNCw3ICsx
MDQsNyBAQCB2b2lkIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OkNhY2hlZEdlbmVyYXRlZEltYWdl
OjpldmljdGlvblRpbWVyRmlyZWQoRGVmZXJyYWJsZQogICAgIG1fb3duZXIuZXZpY3RDYWNoZWRH
ZW5lcmF0ZWRJbWFnZShtX3NpemUpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXpl
JiBzaXplKQorUGFzc1JlZlB0cjxJbWFnZT4gQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6aW1hZ2Uo
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpCiB7CiAgICAgc3dp
dGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQ2FudmFzQ2xhc3M6CkBAIC0xNDYsNyArMTQ2
LDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppc0ZpeGVkU2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1JbnRTaXplIENTU0ltYWdlR2VuZXJhdG9yVmFsdWU6OmZp
eGVkU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorSW50U2l6ZSBDU1NJbWFnZUdl
bmVyYXRvclZhbHVlOjpmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7
CiAgICAgc3dpdGNoIChjbGFzc1R5cGUoKSkgewogICAgIGNhc2UgQ2FudmFzQ2xhc3M6CkBAIC0x
ODgsNyArMTg4LDcgQEAgYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVlOjppc1BlbmRpbmcoKSBj
b25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDU1NJbWFnZUdlbmVyYXRvclZhbHVl
Ojprbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jv
b2wgQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIHN3aXRjaCAoY2xhc3NUeXBlKCkpIHsKICAg
ICBjYXNlIENyb3NzZmFkZUNsYXNzOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0ltYWdlR2VuZXJhdG9yVmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmgKaW5kZXggNjhlOGE4MjdkYWUwYjllNDdmZTAwYTJjMTg4NWYxNGUzZmZkODc3
Zi4uMjE0MTlmYWMyZTcxZDRhZDAxYjRhZDNjMDUwZTFlZjRiYWNjMjM4YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlR2VuZXJhdG9yVmFsdWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oCkBAIC0zOCwyMyArMzgsMjMgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNz
IEdlbmVyYXRlZEltYWdlOwotY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVu
dDsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7CiAKIGNsYXNzIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgogICAgIH5DU1NJbWFnZUdlbmVyYXRvclZhbHVl
KCk7CiAKLSAgICB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKTsKLSAgICB2b2lkIHJlbW92
ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50
Kik7CisgICAgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopOwogCi0gICAgUGFzc1Jl
ZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYpOworICAgIFBh
c3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJik7CiAK
ICAgICBib29sIGlzRml4ZWRTaXplKCkgY29uc3Q7Ci0gICAgSW50U2l6ZSBmaXhlZFNpemUoY29u
c3QgUmVuZGVyT2JqZWN0Kik7CisgICAgSW50U2l6ZSBmaXhlZFNpemUoY29uc3QgUmVuZGVyRWxl
bWVudCopOwogCiAgICAgYm9vbCBpc1BlbmRpbmcoKSBjb25zdDsKLSAgICBib29sIGtub3duVG9C
ZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBib29sIGtub3duVG9CZU9w
YXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KikgY29uc3Q7CiAKICAgICB2b2lkIGxvYWRTdWJpbWFn
ZXMoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqKTsKIApAQCAtNjMsNyArNjMsNyBAQCBwcm90ZWN0ZWQ6
CiAKICAgICBHZW5lcmF0ZWRJbWFnZSogY2FjaGVkSW1hZ2VGb3JTaXplKEludFNpemUpOwogICAg
IHZvaWQgc2F2ZUNhY2hlZEltYWdlRm9yU2l6ZShJbnRTaXplLCBQYXNzUmVmUHRyPEdlbmVyYXRl
ZEltYWdlPik7Ci0gICAgY29uc3QgSGFzaENvdW50ZWRTZXQ8UmVuZGVyT2JqZWN0Kj4mIGNsaWVu
dHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHM7IH0KKyAgICBjb25zdCBIYXNoQ291bnRlZFNl
dDxSZW5kZXJFbGVtZW50Kj4mIGNsaWVudHMoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudHM7IH0K
IAogICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIENyb3NzZmFkZSBhbmQgRmlsdGVyLgogICAg
IHN0YXRpYyBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2VGb3JDU1NWYWx1ZShDU1NWYWx1ZSosIENh
Y2hlZFJlc291cmNlTG9hZGVyKik7CkBAIC04OCw3ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZEdlbmVyYXRlZEltYWdlOwogICAgIHZvaWQgZXZpY3RDYWNoZWRHZW5l
cmF0ZWRJbWFnZShJbnRTaXplKTsKIAotICAgIEhhc2hDb3VudGVkU2V0PFJlbmRlck9iamVjdCo+
IG1fY2xpZW50czsKKyAgICBIYXNoQ291bnRlZFNldDxSZW5kZXJFbGVtZW50Kj4gbV9jbGllbnRz
OwogICAgIEhhc2hNYXA8SW50U2l6ZSwgT3duUHRyPENhY2hlZEdlbmVyYXRlZEltYWdlPiA+IG1f
aW1hZ2VzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ltYWdlVmFsdWUuY3BwCmluZGV4IGZjMjM2
OGRiYTBkMTQwZTNlMzA4ZmFhZGRiNGVhYzY2MmNmN2I4ZWMuLmI5ZGViNmMxYmEwYWUwYjdkNzg3
Yjk1N2Q5NGEwM2VmYTBiZjlmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NJbWFnZVZhbHVlOjpj
bG9uZUZvckNTU09NKCkgY29uc3QKICAgICByZXR1cm4gdXJpVmFsdWUucmVsZWFzZSgpOwogfQog
Ci1ib29sIENTU0ltYWdlVmFsdWU6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKSBjb25zdAorYm9vbCBDU1NJbWFnZVZhbHVlOjprbm93blRvQmVPcGFxdWUoY29u
c3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2Ug
PyBtX2ltYWdlLT5rbm93blRvQmVPcGFxdWUocmVuZGVyZXIpIDogZmFsc2U7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0ltYWdlVmFsdWUuaAppbmRleCA5OWIwYzZjYzNlNzA4NTYzNDg1MGRhOWYzN2EyMmQz
Mjk3MGJhOTA5Li41ZGIyMDQzMDFlNmFmYWMyY2E5YjI4YzVjZGYwYTliMzU3NzdiNGU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTSW1hZ2VWYWx1ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NJbWFnZVZhbHVlLmgKQEAgLTMwLDcgKzMwLDcgQEAgY2xhc3MgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgU3R5bGVDYWNoZWRJbWFnZTsK
IGNsYXNzIFN0eWxlSW1hZ2U7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVt
ZW50Owogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9uczsKIAogY2xhc3MgQ1NTSW1hZ2VWYWx1
ZSA6IHB1YmxpYyBDU1NWYWx1ZSB7CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgZXF1YWxzKGNvbnN0IENTU0ltYWdlVmFsdWUmKSBjb25zdDsKIAotICAgIGJvb2wga25vd25U
b0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wga25vd25Ub0Jl
T3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdDsKIAogICAgIHZvaWQgc2V0SW5pdGlh
dG9yKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgeyBtX2luaXRpYXRvck5hbWUgPSBuYW1lOyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAppbmRl
eCBiMmEwZmE3NDY3OWRjYWQ4YjUwYjI1MzA1MmE1ZjNjNjdiODQwMDdiLi41Yzg4N2Y3OWZlZWMx
MjgyY2ViYjQwYmUwOThiZGM3ZTc0NzA3ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Rl
cHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVjdC5oIgotI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
aAppbmRleCA0MWZmOGY4M2YwNjYxZTdmMmUzMjIzOWUxNGI0NjI5ZGMzODcxNjIxLi4zOGU3Yjk0
ZDk0NjYwYzA5OTk1NTdlMDU5OTc2MzI5MGRjOTc2MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
RmxvYXRQb2ludDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIHR5cGVkZWYgdm9pZCAoKk5vZGVD
YWxsYmFjaykoTm9kZSosIHVuc2lnbmVkKTsKIApAQCAtMTI2LDYgKzEyNyw4IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBOb2RlOjpzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyOwogICAgIHZvaWQgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1
ZSk7CiAKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlcigpIGNvbnN0OworCiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgQ29udGFpbmVyTm9kZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUg
PSBDcmVhdGVDb250YWluZXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1h
cmtlckNvbnRyb2xsZXIuY3BwCmluZGV4IDFmMDczYjU3NWMyYmUxZWI2MzIzNWRlZDcxNDViOGIw
OTkwNTAxMzcuLjVmOThhY2VkYTQwNjJmYThhYmVmZDZhZjdiMmY3NmYwYzYzMDBjMzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwCkBAIC00
NTQsNyArNDU0LDcgQEAgdm9pZCBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXI6OnJlbW92ZU1hcmtl
cnNGcm9tTGlzdChNYXJrZXJNYXA6Oml0ZXJhdG9yIGl0ZXJhdG8KICAgICB9CiAKICAgICBpZiAo
bmVlZHNSZXBhaW50aW5nKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0g
aXRlcmF0b3ItPmtleS0+cmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBp
dGVyYXRvci0+a2V5LT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPnJlcGFpbnQo
KTsKICAgICB9CiAKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIERvY3VtZW50TWFya2VyQ29udHJv
bGxlcjo6cmVwYWludE1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGVzIG1hcmtlcgog
ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gY2F1c2UgdGhlIG5vZGUgdG8gYmUg
cmVkcmF3bgotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRl
cmVyKCkpCisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCmluZGV4IDNiZGZiM2NkNDNmNzE2ZjMwNWNiMzM1MDVjMTI5MzUyOWYwMzllMzEuLjViMzk2
NDc4OWU4ZmJiZTZjNjBkNTVlNDAxMTNhNTFlMjFiNWRlODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKQEAgLTYwMywxNyArNjAzLDE3IEBAIHZvaWQgRWxlbWVudDo6c2Nyb2xsQnlQYWdlcyhpbnQg
cGFnZXMpCiAgICAgc2Nyb2xsQnlVbml0cyhwYWdlcywgU2Nyb2xsQnlQYWdlKTsKIH0KIAotc3Rh
dGljIGZsb2F0IGxvY2FsWm9vbUZvclJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitz
dGF0aWMgZmxvYXQgbG9jYWxab29tRm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIp
CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyB0aGUgd3JvbmcgdGhpbmcgaWYgdHdvIG9wcG9z
aW5nIHpvb21zIGFyZSBpbiBlZmZlY3QgYW5kIGNhbmNlbGVkIGVhY2gKICAgICAvLyBvdGhlciBv
dXQsIGJ1dCB0aGUgYWx0ZXJuYXRpdmUgaXMgdGhhdCB3ZSdkIGhhdmUgdG8gY3Jhd2wgdXAgdGhl
IHdob2xlIHJlbmRlciB0cmVlIGV2ZXJ5CiAgICAgLy8gdGltZSAob3Igc3RvcmUgYW4gYWRkaXRp
b25hbCBiaXQgaW4gdGhlIFJlbmRlclN0eWxlIHRvIGluZGljYXRlIHRoYXQgYSB6b29tIHdhcyBz
cGVjaWZpZWQpLgogICAgIGZsb2F0IHpvb21GYWN0b3IgPSAxOwogICAgIGlmIChyZW5kZXJlci0+
c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpICE9IDEpIHsKLSAgICAgICAgLy8gTmVlZCB0byBmaW5k
IHRoZSBuZWFyZXN0IGVuY2xvc2luZyBSZW5kZXJPYmplY3QgdGhhdCBzZXQgdXAKKyAgICAgICAg
Ly8gTmVlZCB0byBmaW5kIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBSZW5kZXJFbGVtZW50IHRoYXQg
c2V0IHVwCiAgICAgICAgIC8vIGEgZGlmZmVyaW5nIHpvb20sIGFuZCB0aGVuIHdlIGRpdmlkZSBv
dXIgcmVzdWx0IGJ5IGl0IHRvIGVsaW1pbmF0ZSB0aGUgem9vbS4KLSAgICAgICAgUmVuZGVyT2Jq
ZWN0KiBwcmV2ID0gcmVuZGVyZXI7Ci0gICAgICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjdXJyID0g
cHJldi0+cGFyZW50KCk7IGN1cnI7IGN1cnIgPSBjdXJyLT5wYXJlbnQoKSkgeworICAgICAgICBS
ZW5kZXJFbGVtZW50KiBwcmV2ID0gcmVuZGVyZXI7CisgICAgICAgIGZvciAoUmVuZGVyRWxlbWVu
dCogY3VyciA9IHByZXYtPnBhcmVudCgpOyBjdXJyOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsK
ICAgICAgICAgICAgIGlmIChjdXJyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkgIT0gcHJldi0+
c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSB7CiAgICAgICAgICAgICAgICAgem9vbUZhY3RvciA9
IHByZXYtPnN0eWxlKCktPnpvb20oKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTYyNiw3
ICs2MjYsNyBAQCBzdGF0aWMgZmxvYXQgbG9jYWxab29tRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0
KiByZW5kZXJlcikKICAgICByZXR1cm4gem9vbUZhY3RvcjsKIH0KIAotc3RhdGljIGludCBhZGp1
c3RGb3JMb2NhbFpvb20oTGF5b3V0VW5pdCB2YWx1ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikK
K3N0YXRpYyBpbnQgYWRqdXN0Rm9yTG9jYWxab29tKExheW91dFVuaXQgdmFsdWUsIFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyKQogewogICAgIGZsb2F0IHpvb21GYWN0b3IgPSBsb2NhbFpvb21Gb3JS
ZW5kZXJlcihyZW5kZXJlcik7CiAgICAgaWYgKHpvb21GYWN0b3IgPT0gMSkKQEAgLTY5MiwxMSAr
NjkyLDEzIEBAIEVsZW1lbnQqIEVsZW1lbnQ6OmJpbmRpbmdzT2Zmc2V0UGFyZW50KCkKIEVsZW1l
bnQqIEVsZW1lbnQ6Om9mZnNldFBhcmVudCgpCiB7CiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2Zm
c2V0UGFyZW50ID0gcmVuZGVyZXItPm9mZnNldFBhcmVudCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRvRWxlbWVudChvZmZzZXRQYXJlbnQtPm5vZGUoKSk7Ci0gICAgfQotICAgIHJldHVybiAwOwor
ICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gb2Zmc2V0UGFyZW50ID0gcmVuZGVy
ZXItPm9mZnNldFBhcmVudCgpOworICAgIGlmICghb2Zmc2V0UGFyZW50KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gb2Zmc2V0UGFyZW50LT5lbGVtZW50KCk7CiB9CiAKIGlu
dCBFbGVtZW50OjpjbGllbnRMZWZ0KCkKQEAgLTIzNTAsNyArMjM1Miw3IEBAIGJvb2wgRWxlbWVu
dDo6dXBkYXRlRXhpc3RpbmdQc2V1ZG9FbGVtZW50KFBzZXVkb0VsZW1lbnQqIGV4aXN0aW5nUHNl
dWRvRWxlbWVudCwKICAgICAvLyBGSVhNRTogVGhpcyBpcyBzaWxseS4KICAgICAvLyBXYWl0IHVu
dGlsIG91ciBwYXJlbnQgaXMgbm90IGRpc3BsYXllZCBvciBwc2V1ZG9FbGVtZW50UmVuZGVyZXJJ
c05lZWRlZAogICAgIC8vIGlzIGZhbHNlLCBvdGhlcndpc2Ugd2UgY291bGQgY29udGlub3VzbHkg
Y3JlYXRlIGFuZCBkZXN0cm95IFBzZXVkb0VsZW1lbnRzCi0gICAgLy8gd2hlbiBSZW5kZXJPYmpl
Y3Q6OmlzQ2hpbGRBbGxvd2VkIG9uIG91ciBwYXJlbnQgcmV0dXJucyBmYWxzZSBmb3IgdGhlCisg
ICAgLy8gd2hlbiBSZW5kZXJFbGVtZW50Ojppc0NoaWxkQWxsb3dlZCBvbiBvdXIgcGFyZW50IHJl
dHVybnMgZmFsc2UgZm9yIHRoZQogICAgIC8vIFBzZXVkb0VsZW1lbnQncyByZW5kZXJlciBmb3Ig
ZWFjaCBzdHlsZSByZWNhbGMuCiAgICAgcmV0dXJuIHJlbmRlcmVyKCkgJiYgcHNldWRvRWxlbWVu
dFJlbmRlcmVySXNOZWVkZWQoZXhpc3RpbmdQc2V1ZG9FbGVtZW50LT5yZW5kZXJTdHlsZSgpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCmluZGV4IDM0MjZhZDk1NmQ1OGI4NDM3NWNhNjM2NzJkMTM4MmQ4
NGFiYzc4MjUuLmM5MWIzNWMxOGY4MDJjNTYyMTU4NTdhMWMyMTk1MTQ1M2IyMWYyMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuaApAQCAtNDUsNyArNDUsNiBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgTG9j
YWxlOwogY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogY2xhc3MgUHNldWRvRWxlbWVudDsKLWNs
YXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJSZWdpb247CiBjbGFzcyBTaGFkb3dSb290
OwogCkBAIC0xMjksOCArMTI4LDYgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmVycm9yKTsKICNlbmRpZgogCi0gICAgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIoKSBjb25zdDsKLQogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgdm9pZCBzZXRBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IGI1NTY4NjdhMjJjMDIzZGM0MTA4MDk1NjMz
NWE4ZjA4MjEyN2EzZDYuLmZlMmE4MjVjMzNkZGUxNTlkNmE5OWVjMDc4ZTc1NWI1Y2NiYmU0N2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp
bmNsdWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNpbmNs
dWRlICJQc2V1ZG9FbGVtZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1
ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CkBAIC0zNSw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgRWxlbWVudFJhcmVEYXRhIDogcHVibGljIE5vZGVSYXJlRGF0YSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8RWxlbWVudFJhcmVEYXRhPiBjcmVhdGUoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEVsZW1lbnRSYXJlRGF0YShyZW5k
ZXJlcikpOyB9CisgICAgc3RhdGljIFBhc3NPd25QdHI8RWxlbWVudFJhcmVEYXRhPiBjcmVhdGUo
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBFbGVtZW50UmFy
ZURhdGEocmVuZGVyZXIpKTsgfQogCiAgICAgfkVsZW1lbnRSYXJlRGF0YSgpOwogCkBAIC0xNjYs
NyArMTY3LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQ
c2V1ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxl
bWVudDsKIAotICAgIGV4cGxpY2l0IEVsZW1lbnRSYXJlRGF0YShSZW5kZXJPYmplY3QqKTsKKyAg
ICBleHBsaWNpdCBFbGVtZW50UmFyZURhdGEoUmVuZGVyRWxlbWVudCopOwogICAgIHZvaWQgcmVs
ZWFzZVBzZXVkb0VsZW1lbnQoUHNldWRvRWxlbWVudCopOwogfTsKIApAQCAtMTc1LDcgKzE3Niw3
IEBAIGlubGluZSBJbnRTaXplIGRlZmF1bHRNaW5pbXVtU2l6ZUZvclJlc2l6aW5nKCkKICAgICBy
ZXR1cm4gSW50U2l6ZShMYXlvdXRVbml0OjptYXgoKSwgTGF5b3V0VW5pdDo6bWF4KCkpOwogfQog
Ci1pbmxpbmUgRWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKK2lubGluZSBFbGVtZW50UmFyZURhdGE6OkVsZW1lbnRSYXJlRGF0YShSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKICAgICA6IE5vZGVSYXJlRGF0YShyZW5kZXJlcikKICAgICAsIG1f
dGFiSW5kZXgoMCkKICAgICAsIG1fY2hpbGRJbmRleCgwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGFh
MjE5NmU1NDM2YmU3Mzc4YThlZmQwZjFhMzVmZmU5N2JlYzE3MDAuLjYxNmM1N2MyNGZkZDNkM2Ux
NmQ1MWQ1MzExZTg5MmNkNDMxNDM0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTM4Niw3ICszODYs
NyBAQCBOb2RlUmFyZURhdGEmIE5vZGU6OmVuc3VyZVJhcmVEYXRhKCkKIAogICAgIE5vZGVSYXJl
RGF0YSogZGF0YTsKICAgICBpZiAoaXNFbGVtZW50Tm9kZSgpKQotICAgICAgICBkYXRhID0gRWxl
bWVudFJhcmVEYXRhOjpjcmVhdGUobV9kYXRhLm1fcmVuZGVyZXIpLmxlYWtQdHIoKTsKKyAgICAg
ICAgZGF0YSA9IEVsZW1lbnRSYXJlRGF0YTo6Y3JlYXRlKHRvUmVuZGVyRWxlbWVudChtX2RhdGEu
bV9yZW5kZXJlcikpLmxlYWtQdHIoKTsKICAgICBlbHNlCiAgICAgICAgIGRhdGEgPSBOb2RlUmFy
ZURhdGE6OmNyZWF0ZShtX2RhdGEubV9yZW5kZXJlcikubGVha1B0cigpOwogICAgIEFTU0VSVChk
YXRhKTsKQEAgLTIxOTIsNyArMjE5Miw3IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAKICAgICAgICAgICAgIGlmIChyZW5kZXJlcikgewogICAgICAgICAg
ICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zdGFydFBhblNjcm9sbGluZyhyZW5kZXJl
cik7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5zdGFydFBhblNj
cm9sbGluZyh0b1JlbmRlckJveChyZW5kZXJlcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIuY3BwCmluZGV4IDk0NjEwYTJjMmI5OGJmNjkxYzZkOTg0OTY5MDZlMTQ5YTg2Nzc4M2Mu
LjYwZGM5ZDdlNjEyNGViN2FkZDBlN2UxYjFlMzZiZjYxYjRlYjE4ZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMTAyLDI0
ICsxMDIsMjQgQEAgc3RhdGljIGJvb2wgaXNEZWxldGFibGVFbGVtZW50KGNvbnN0IE5vZGUqIG5v
ZGUpCiAgICAgaWYgKChib3JkZXJCb3VuZGluZ0JveC53aWR0aCgpICogYm9yZGVyQm91bmRpbmdC
b3guaGVpZ2h0KCkpIDwgbWluaW11bUFyZWEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGlmIChyZW5kZXJlci0+aXNUYWJsZSgpKQorICAgIGlmIChib3gtPmlzVGFibGUoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh1bFRhZykgfHwgbm9k
ZS0+aGFzVGFnTmFtZShvbFRhZykgfHwgbm9kZS0+aGFzVGFnTmFtZShpZnJhbWVUYWcpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChyZW5kZXJlci0+aXNPdXRPZkZsb3dQb3NpdGlv
bmVkKCkpCisgICAgaWYgKGJveC0+aXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgJiYgIXJlbmRl
cmVyLT5pc1RhYmxlQ2VsbCgpKSB7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IHJlbmRl
cmVyLT5zdHlsZSgpOworICAgIGlmIChib3gtPmlzUmVuZGVyQmxvY2soKSAmJiAhYm94LT5pc1Rh
YmxlQ2VsbCgpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9IGJveC0+c3R5bGUoKTsK
ICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAg
ICAvLyBBbGxvdyBibG9ja3MgdGhhdCBoYXZlIGJhY2tncm91bmQgaW1hZ2VzCiAgICAgICAgIGlm
IChzdHlsZS0+aGFzQmFja2dyb3VuZEltYWdlKCkpIHsKICAgICAgICAgICAgIGZvciAoY29uc3Qg
RmlsbExheWVyKiBiYWNrZ3JvdW5kID0gc3R5bGUtPmJhY2tncm91bmRMYXllcnMoKTsgYmFja2dy
b3VuZDsgYmFja2dyb3VuZCA9IGJhY2tncm91bmQtPm5leHQoKSkgewotICAgICAgICAgICAgICAg
IGlmIChiYWNrZ3JvdW5kLT5pbWFnZSgpICYmIGJhY2tncm91bmQtPmltYWdlKCktPmNhblJlbmRl
cihyZW5kZXJlciwgMSkpCisgICAgICAgICAgICAgICAgaWYgKGJhY2tncm91bmQtPmltYWdlKCkg
JiYgYmFja2dyb3VuZC0+aW1hZ2UoKS0+Y2FuUmVuZGVyKGJveCwgMSkpCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDIsNyAr
MTQyLDcgQEAgc3RhdGljIGJvb2wgaXNEZWxldGFibGVFbGVtZW50KGNvbnN0IE5vZGUqIG5vZGUp
CiAgICAgICAgIGlmICghcGFyZW50U3R5bGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAgICAgaWYgKHJlbmRlcmVyLT5oYXNCYWNrZ3JvdW5kKCkgJiYgKCFwYXJlbnRSZW5kZXJl
ci0+aGFzQmFja2dyb3VuZCgpIHx8IHN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJv
cGVydHlCYWNrZ3JvdW5kQ29sb3IpICE9IHBhcmVudFN0eWxlLT52aXNpdGVkRGVwZW5kZW50Q29s
b3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSkKKyAgICAgICAgaWYgKGJveC0+aGFzQmFj
a2dyb3VuZCgpICYmICghcGFyZW50UmVuZGVyZXItPmhhc0JhY2tncm91bmQoKSB8fCBzdHlsZS0+
dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSAhPSBwYXJl
bnRTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAppbmRleCAzNWIzMDFmZTU5NzhjZGM0ZjNmMWY5MzdhYTZiNzA3NDgyZDZiODgzLi4x
OTdhMWU2OTljOTdkODBkNDYxZmUwZDZhZjVjNjQzYTNhODBjZTAxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCkBAIC01ODAsNyArNTgwLDcgQEAgYm9vbCBFZGl0b3I6Omhhc0JpZGlTZWxl
Y3Rpb24oKSBjb25zdAogICAgIH0gZWxzZQogICAgICAgICBzdGFydE5vZGUgPSBtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLnZpc2libGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCkuZGVw
cmVjYXRlZE5vZGUoKTsKIAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydE5vZGUt
PnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKTsK
ICAgICB3aGlsZSAocmVuZGVyZXIgJiYgIXJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkpCiAgICAg
ICAgIHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpOwogCkBAIC0xNDM4LDcgKzE0MzgsNyBA
QCBXcml0aW5nRGlyZWN0aW9uIEVkaXRvcjo6YmFzZVdyaXRpbmdEaXJlY3Rpb25Gb3JTZWxlY3Rp
b25TdGFydCgpIGNvbnN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgYXV0
byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5j
cHAKaW5kZXggODBlNDJhMzZkZDRkZmNiYmQ5NzQyN2E0ZDVlNGI5MDM0NGQwNjIyNy4uNmMwNzY5
OTk5ZjVhNmY3MmNkZTUwM2I1NTBlZjY0MGM4NjU2YTZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0yNTMsNyArMjUzLDcgQEAgc3RhdGljIHVuc2lnbmVk
IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoRnJhbWUmIGZyYW1lKQogICAgIEVsZW1lbnQqIGZvY3Vz
ZWRFbGVtZW50ID0gZnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKTsKICAgICBpZiAo
IWZvY3VzZWRFbGVtZW50KQogICAgICAgICByZXR1cm4gMDsKLSAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gZm9jdXNlZEVsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9
IGZvY3VzZWRFbGVtZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRl
cmVyLT5pc0JveCgpKQogICAgICAgICByZXR1cm4gMDsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUg
PSByZW5kZXJlci0+c3R5bGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
aHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
aW5kZXggODc0M2IyNDEwZDc1NjA5MGQyOWU4ZWY5MmNmNWNjZWNlMzhlYTJlOC4uYjkwMTA1MGE5
YjVmYTI1MjBkMDdiMTljOWMwYThlMmVkOThkYTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAKQEAgLTMyNiwxMSArMzI2LDEzIEBAIEVsZW1lbnQqIGVuY2xvc2luZ0Js
b2NrKE5vZGUqIG5vZGUsIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKQogCiBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbk9mRW5jbG9zaW5nQmxvY2soY29uc3QgUG9zaXRpb24mIHBvc2l0
aW9uKQogewotICAgIE5vZGUqIGVuY2xvc2luZ0Jsb2NrTm9kZSA9IGVuY2xvc2luZ0Jsb2NrKHBv
c2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7Ci0gICAgaWYgKCFlbmNsb3NpbmdCbG9ja05vZGUpCisg
ICAgYXV0byBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSk7
CisgICAgaWYgKCFibG9jaykKICAgICAgICAgcmV0dXJuIExUUjsKLSAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gZW5jbG9zaW5nQmxvY2tOb2RlLT5yZW5kZXJlcigpOwotICAgIHJldHVybiBy
ZW5kZXJlciA/IHJlbmRlcmVyLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA6IExUUjsKKyAgICBhdXRv
IHJlbmRlcmVyID0gYmxvY2stPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuIExUUjsKKyAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCktPmRpcmVjdGlvbigp
OwogfQogCiAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNyZWF0ZSBwb3NpdGlvbnMgaW4gdGhl
IERPTS4gSXQgcmV0dXJucyB0aGUgbWF4aW11bSB2YWxpZCBvZmZzZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCBlMDk0ZjBmNDEzMmQ4YjA3MGI1ZjU5OGQzOWIx
MGM4MWYzYzY1YjdjLi5iOTVlMGRiYTQ1OTQ3MWRhMGI0YjA4NzQzYWZiZDBiMGFiOWEwMWYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0yNDQsNyArMjQ0LDcg
QEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbihib29sJiBo
YXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAgICAgICAvLyBJbiB0aGUgbG9vcCBiZWxvdywgbiBz
aG91bGQgZXZlbnR1YWxseSBtYXRjaCBwYXN0RW5kIGFuZCBub3QgYmVjb21lIG5pbCwgYnV0IHdl
J3ZlIHNlZW4gYXQgbGVhc3Qgb25lCiAgICAgICAgIC8vIHVucmVwcm9kdWNpYmxlIGNhc2Ugd2hl
cmUgdGhpcyBkaWRuJ3QgaGFwcGVuLCBzbyBjaGVjayBmb3IgbnVsbCBhbHNvLgogICAgICAgICBm
b3IgKE5vZGUqIG5vZGUgPSBzdGFydE5vZGU7IG5vZGUgJiYgbm9kZSAhPSBwYXN0RW5kOyBub2Rl
ID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKSkgewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBhdXRvIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAvLyBGSVhNRTogQXJlIHRoZXJlIGFueSBu
b2RlIHR5cGVzIHRoYXQgaGF2ZSByZW5kZXJlcnMsIGJ1dCB0aGF0IHdlIHNob3VsZCBiZSBza2lw
cGluZz8KQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIEVkaXRvcjo6d3JpdGVTZWxlY3Rpb25Ub1Bh
c3RlYm9hcmQoUGFzdGVib2FyZCYgcGFzdGVib2FyZCkKIAogc3RhdGljIHZvaWQgZ2V0SW1hZ2Uo
RWxlbWVudCYgaW1hZ2VFbGVtZW50LCBSZWZQdHI8SW1hZ2U+JiBpbWFnZSwgQ2FjaGVkSW1hZ2Uq
JiBjYWNoZWRJbWFnZSkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaW1hZ2VFbGVt
ZW50LnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IGltYWdlRWxlbWVudC5yZW5kZXJl
cigpOwogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAgICAgICAg
IHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9y
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGRk
NDQzNjM3YzlkNjY4ZDJjZjY4MTAwZjgzNTBjZDBlMGQyYjI4YzkuLjcxYjE4NGNjYjRjYzk5MjYz
OTA4ODMxMmJkYjg0MTFhNTY4ZDRjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0
b3JNYWMubW0KQEAgLTE1OSw3ICsxNTksNyBAQCBjb25zdCBTaW1wbGVGb250RGF0YSogRWRpdG9y
Ojpmb250Rm9yU2VsZWN0aW9uKGJvb2wmIGhhc011bHRpcGxlRm9udHMpIGNvbnN0CiAgICAgICAg
IC8vIEluIHRoZSBsb29wIGJlbG93LCBuIHNob3VsZCBldmVudHVhbGx5IG1hdGNoIHBhc3RFbmQg
YW5kIG5vdCBiZWNvbWUgbmlsLCBidXQgd2UndmUgc2VlbiBhdCBsZWFzdCBvbmUKICAgICAgICAg
Ly8gdW5yZXByb2R1Y2libGUgY2FzZSB3aGVyZSB0aGlzIGRpZG4ndCBoYXBwZW4sIHNvIGNoZWNr
IGZvciBudWxsIGFsc28uCiAgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHN0YXJ0Tm9kZTsgbm9k
ZSAmJiBub2RlICE9IHBhc3RFbmQ7IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpKSB7
Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsK
KyAgICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgICAgICAg
ICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
IC8vIEZJWE1FOiBBcmUgdGhlcmUgYW55IG5vZGUgdHlwZXMgdGhhdCBoYXZlIHJlbmRlcmVycywg
YnV0IHRoYXQgd2Ugc2hvdWxkIGJlIHNraXBwaW5nPwpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQg
RWRpdG9yOjp3cml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZChQYXN0ZWJvYXJkJiBwYXN0ZWJvYXJk
KQogCiBzdGF0aWMgdm9pZCBnZXRJbWFnZShFbGVtZW50JiBpbWFnZUVsZW1lbnQsIFJlZlB0cjxJ
bWFnZT4mIGltYWdlLCBDYWNoZWRJbWFnZSomIGNhY2hlZEltYWdlKQogewotICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBpbWFnZUVsZW1lbnQucmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRl
cmVyID0gaW1hZ2VFbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVu
ZGVyZXItPmlzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggNTFlZjNmMmVjOWVlZDIwYmY3ODAzODMxNmNjNDIxYjI2ZjE2NDY1Ny4uYTc0
M2JiNjQ2NjE1MDlmNzg5NTNiNWIwOTg4ODVmY2UzZGM1OWNiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtNTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIk1hcmt1cEFjY3VtdWxhdG9y
LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgotI2luY2x1
ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIKICNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKaW5kZXggNTIwN2YwZWZhN2JlZjNlMTI0
MmJjMTk0YTNmYjRmYWFiNGQ3OWZjMy4uZGI0MWM1YjM5OGRmOGI5ODg0NWJjY2E1OTc3OGNkZTA4
ZmQ0MmExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJlYUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtOTQs
NyArOTQsNyBAQCBib29sIEhUTUxBcmVhRWxlbWVudDo6bWFwTW91c2VFdmVudChMYXlvdXRQb2lu
dCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1QYXRoIEhUTUxBcmVhRWxlbWVudDo6Y29tcHV0ZVBhdGgoUmVuZGVyT2JqZWN0KiBvYmopIGNv
bnN0CitQYXRoIEhUTUxBcmVhRWxlbWVudDo6Y29tcHV0ZVBhdGgoUmVuZGVyRWxlbWVudCogb2Jq
KSBjb25zdAogewogICAgIGlmICghb2JqKQogICAgICAgICByZXR1cm4gUGF0aCgpOwpAQCAtMTE5
LDcgKzExOSw3IEBAIFBhdGggSFRNTEFyZWFFbGVtZW50Ojpjb21wdXRlUGF0aChSZW5kZXJPYmpl
Y3QqIG9iaikgY29uc3QKICAgICByZXR1cm4gcDsKIH0KICAgICAKLUxheW91dFJlY3QgSFRNTEFy
ZWFFbGVtZW50Ojpjb21wdXRlUmVjdChSZW5kZXJPYmplY3QqIG9iaikgY29uc3QKK0xheW91dFJl
Y3QgSFRNTEFyZWFFbGVtZW50Ojpjb21wdXRlUmVjdChSZW5kZXJFbGVtZW50KiBvYmopIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoY29tcHV0ZVBhdGgob2JqKS5mYXN0
Qm91bmRpbmdSZWN0KCkpOwogfQpAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgSFRNTEFyZWFFbGVt
ZW50OjpzZXRGb2N1cyhib29sIHNob3VsZEJlRm9jdXNlZCkKICAgICBpZiAoIWltYWdlRWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGltYWdl
RWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gaW1hZ2VFbGVtZW50LT5y
ZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXJl
YUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEFyZWFFbGVtZW50LmgKaW5kZXgg
OWNkYmY2NjYxM2I2MjlkZmYzNmM3MzA1MzgyMzUzNzg0ZjU2MTVjMC4uMTgwZjYxMzA2NGI4NDI4
ODE0MmE3ZTkyYTI2ZWU0ODE0ODcxODVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQXJlYUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxl
bWVudC5oCkBAIC00MSw4ICs0MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWFwTW91c2VFdmVu
dChMYXlvdXRQb2ludCBsb2NhdGlvbiwgY29uc3QgTGF5b3V0U2l6ZSYsIEhpdFRlc3RSZXN1bHQm
KTsKIAotICAgIExheW91dFJlY3QgY29tcHV0ZVJlY3QoUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0g
ICAgUGF0aCBjb21wdXRlUGF0aChSZW5kZXJPYmplY3QqKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0
IGNvbXB1dGVSZWN0KFJlbmRlckVsZW1lbnQqKSBjb25zdDsKKyAgICBQYXRoIGNvbXB1dGVQYXRo
KFJlbmRlckVsZW1lbnQqKSBjb25zdDsKIAogICAgIC8vIFRoZSBwYXJlbnQgbWFwJ3MgaW1hZ2Uu
CiAgICAgSFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50KCkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCmluZGV4IGNjYTRmODYwNTA2ZDgyNmE4Y2Zh
YzRlZTk3MzNlNzVkNWM1Nzc1YTkuLmFhZDgzYWQ1MzkxZjkyOThjZjAyYjkwZTcyZTczNDk0MTMx
NWVlYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwCkBAIC0z
NDAsNyArMzQwLDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cmVzZXQoKQogICAgICAgICBz
dGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihtX2NvbnRleHQuZ2V0KCkpLT5yZXNo
YXBlKHdpZHRoKCksIGhlaWdodCgpKTsKICNlbmRpZgogCi0gICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKSB7CiAgICAgICAgIGlmIChtX3JlbmRlcmVySXNDYW52YXMpIHsKICAg
ICAgICAgICAgIGlmIChvbGRTaXplICE9IHNpemUoKSkgewogICAgICAgICAgICAgICAgIHRvUmVu
ZGVySFRNTENhbnZhcyhyZW5kZXJlciktPmNhbnZhc1NpemVDaGFuZ2VkKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGM0ZWY4NWJkMGQ2MGU5NzFjOGE5OTBiY2EwNjNkZGRj
YzhiZGUyODIuLjIwODYxNGNlYjhjYTJhY2E1OWY2NTZjYWJlZTNmODJiYzM3NTk3YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBIVE1M
RWxlbWVudDo6c2V0SW5uZXJUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gYmUgYWJsZSB0byBkZXRlY3QgcHJlc2Vy
dmVOZXdsaW5lIHN0eWxlIGV2ZW4gd2hlbiB0aGVyZSdzIG5vIHJlbmRlcmVyPwogICAgIC8vIEZJ
WE1FOiBDYW4gdGhlIHJlbmRlcmVyIGJlIG91dCBvZiBkYXRlIGhlcmU/IERvIHdlIG5lZWQgdG8g
Y2FsbCB1cGRhdGVTdHlsZUlmTmVlZGVkPwogICAgIC8vIEZvciBleGFtcGxlLCBmb3IgdGhlIGNv
bnRlbnRzIG9mIHRleHRhcmVhIGVsZW1lbnRzIHRoYXQgYXJlIGRpc3BsYXk6bm9uZT8KLSAgICBS
ZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOworICAgIGF1dG8gciA9IHJlbmRlcmVyKCk7CiAg
ICAgaWYgKHIgJiYgci0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpIHsKICAgICAgICAgaWYg
KCF0ZXh0LmNvbnRhaW5zKCdccicpKSB7CiAgICAgICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRo
VGV4dCgqdGhpcywgdGV4dCwgZWMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAKaW5kZXggODc3ZmUyNmE2NzFiYzAyNGUzOWJhMDY1MDVlYjk2ZDkz
MzRmNzM2Ni4uZmJiZTUxZGU1ZWI4NzQyMzA3ODgwYzI2ZWNkODY1YjJlZDAxOWNkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC0yODks
OSArMjg5LDcgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29u
c3QKIAogc3RhdGljIHZvaWQgdXBkYXRlRnJvbUVsZW1lbnRDYWxsYmFjayhOb2RlKiBub2RlLCB1
bnNpZ25lZCkKIHsKLSAgICBBU1NFUlRfQVJHKG5vZGUsIG5vZGUtPmlzRWxlbWVudE5vZGUoKSk7
Ci0gICAgQVNTRVJUX0FSRyhub2RlLCB0b0VsZW1lbnQobm9kZSktPmlzRm9ybUNvbnRyb2xFbGVt
ZW50KCkpOwotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIo
KSkKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IHRvSFRNTEZvcm1Db250cm9sRWxlbWVudChub2Rl
KS0+cmVuZGVyZXIoKSkKICAgICAgICAgcmVuZGVyZXItPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcAppbmRleCA3ZDdkNjJkNDY3
YTI1YmU4ZjdmZDkyM2VkOTY2YTFjMmY5MTZlMzFhLi43ZGQzM2NjNjBiOWJjMTUxODhhOGFlYjcw
ODE0MDBiNzkxNmI4N2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
CkBAIC05OSwxOCArOTksMTggQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OnJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIGlmICghbV93YXNEZW1vdGVkKQogICAg
ICAgICByZXR1cm4gSFRNTEVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogCi0gICAg
Q29udGFpbmVyTm9kZSogbm9kZSA9IHBhcmVudE5vZGUoKTsKLSAgICBSZW5kZXJPYmplY3QqIHBh
cmVudFJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHBhcmVudCA9IHBhcmVu
dE5vZGUoKTsKKyAgICBhdXRvIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwog
CiAgICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
Ly8gRklYTUU6IFNob3VsZG4ndCB3ZSBhbHNvIGNoZWNrIGZvciB0YWJsZSBjYXB0aW9uIChzZWUg
fGZvcm1Jc1RhYmxlUGFydHwgYmVsb3cpLgotICAgIGJvb2wgcGFyZW50SXNUYWJsZUVsZW1lbnRQ
YXJ0ID0gKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlKCkgJiYgaXNIVE1MVGFibGVFbGVtZW50KG5v
ZGUpKQotICAgICAgICB8fCAocGFyZW50UmVuZGVyZXItPmlzVGFibGVSb3coKSAmJiBub2RlLT5o
YXNUYWdOYW1lKHRyVGFnKSkKLSAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlU2Vj
dGlvbigpICYmIG5vZGUtPmhhc1RhZ05hbWUodGJvZHlUYWcpKQotICAgICAgICB8fCAocGFyZW50
UmVuZGVyZXItPmlzUmVuZGVyVGFibGVDb2woKSAmJiBub2RlLT5oYXNUYWdOYW1lKGNvbFRhZykp
Ci0gICAgICAgIHx8IChwYXJlbnRSZW5kZXJlci0+aXNUYWJsZUNlbGwoKSAmJiBub2RlLT5oYXNU
YWdOYW1lKHRyVGFnKSk7CisgICAgYm9vbCBwYXJlbnRJc1RhYmxlRWxlbWVudFBhcnQgPSAocGFy
ZW50UmVuZGVyZXItPmlzVGFibGUoKSAmJiBpc0hUTUxUYWJsZUVsZW1lbnQocGFyZW50KSkKKyAg
ICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlUm93KCkgJiYgcGFyZW50LT5oYXNUYWdO
YW1lKHRyVGFnKSkKKyAgICAgICAgfHwgKHBhcmVudFJlbmRlcmVyLT5pc1RhYmxlU2VjdGlvbigp
ICYmIHBhcmVudC0+aGFzVGFnTmFtZSh0Ym9keVRhZykpCisgICAgICAgIHx8IChwYXJlbnRSZW5k
ZXJlci0+aXNSZW5kZXJUYWJsZUNvbCgpICYmIHBhcmVudC0+aGFzVGFnTmFtZShjb2xUYWcpKQor
ICAgICAgICB8fCAocGFyZW50UmVuZGVyZXItPmlzVGFibGVDZWxsKCkgJiYgcGFyZW50LT5oYXNU
YWdOYW1lKHRyVGFnKSk7CiAKICAgICBpZiAoIXBhcmVudElzVGFibGVFbGVtZW50UGFydCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxG
cmFtZU93bmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVs
ZW1lbnQuaAppbmRleCBjYWUyMjUwMDBlZjM3NWM5Nzc0YWI2NzUzY2VhZTdlMjMxMzU3MWY1Li45
NTA1OTRjZWNlZjdkOTAxNTA2OTliYmQ4OGUzNTAzMGEwMTQwYWI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGlj
OgogCiAgICAgLy8gTW9zdCBzdWJjbGFzc2VzIHVzZSBSZW5kZXJXaWRnZXQgKGVpdGhlciBSZW5k
ZXJFbWJlZGRlZE9iamVjdCBvciBSZW5kZXJJRnJhbWUpCiAgICAgLy8gZXhjZXB0IGZvciBIVE1M
T2JqZWN0RWxlbWVudCBhbmQgSFRNTEVtYmVkRWxlbWVudCB3aGljaCBtYXkgcmV0dXJuIGFueQot
ICAgIC8vIFJlbmRlck9iamVjdCB3aGVuIHVzaW5nIGZhbGxiYWNrIGNvbnRlbnQuCisgICAgLy8g
UmVuZGVyRWxlbWVudCB3aGVuIHVzaW5nIGZhbGxiYWNrIGNvbnRlbnQuCiAgICAgUmVuZGVyV2lk
Z2V0KiByZW5kZXJXaWRnZXQoKSBjb25zdDsKIAogI2lmIEVOQUJMRShTVkcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAppbmRleCAyNWY1MTY2ZjZmMzAwMTZlNzJlODY5
ZTYwYzkxN2U0Nzc5NTMwN2U5Li4zZTk2MjY4MjIzODY1NjFmOTI3N2ZmN2IyOGVhNmZjMDAzNDU4
NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKQEAgLTMyNiwy
NCArMzI2LDIyIEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6c2V0V2lkdGgoaW50IHZhbHVlKQog
CiBpbnQgSFRNTEltYWdlRWxlbWVudDo6eCgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBy
ID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoIXIpCisgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAv
LyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jtcy4KLSAg
ICBGbG9hdFBvaW50IGFic1BvcyA9IHItPmxvY2FsVG9BYnNvbHV0ZSgpOwotICAgIHJldHVybiBh
YnNQb3MueCgpOworICAgIHJldHVybiByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkueCgpOwog
fQogCiBpbnQgSFRNTEltYWdlRWxlbWVudDo6eSgpIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0
KiByID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoIXIpCisgICAgYXV0byByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jtcy4K
LSAgICBGbG9hdFBvaW50IGFic1BvcyA9IHItPmxvY2FsVG9BYnNvbHV0ZSgpOwotICAgIHJldHVy
biBhYnNQb3MueSgpOworICAgIHJldHVybiByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCkueSgp
OwogfQogCiBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmNvbXBsZXRlKCkgY29uc3QKQEAgLTM4NCw3
ICszODIsNyBAQCBib29sIEhUTUxJbWFnZUVsZW1lbnQ6OmlzU2VydmVyTWFwKCkgY29uc3QKIC8v
IEZJWE1FOiBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzc3MjUxNTg+
LiBXZSBzaG91bGQgZmluZCBhIGJldHRlciBwbGFjZSBmb3IgdGhlIHRvdWNoQ2FsbG91dEVuYWJs
ZWQoKSBsb2dpYy4KIGJvb2wgSFRNTEltYWdlRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xp
Y2tFdmVudHMoKQogewotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpOworICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIFJlbmRlclN0
eWxlKiBzdHlsZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiBudWxscHRyOwogICAg
IGlmICghc3R5bGUgfHwgc3R5bGUtPnRvdWNoQ2FsbG91dEVuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IGVmNDcz
ODg4MWI1NmU2OGUyODg0MWIwMTYwZjAyMjE0OTFkYjVkZjYuLmY4MjViYjE1ZDY1MTM4YWYxOWIx
ZDg3NTBjM2Y1NmFkOTVhYjNhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQu
Y3BwCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKaW5kZXggNGQ2NDI1N2YwZmJmM2MxMjUwYWI5NGU3ODI0YTkzNGQy
OWYwNjI5Zi4uZmE1NTRlZmY5ZmM5NzdkMjU5NzE0NDkwNWQ0ODQ4MzMwZGYxMzRiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC00MjY0LDEyICs0MjY0LDEx
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFWb2x1bWVEaWRDaGFuZ2UoKQogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICNp
ZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKLSAgICBSZW5kZXJPYmplY3QqIHIgPSBy
ZW5kZXJlcigpOwotICAgIGlmICghciB8fCAhci0+aXNXaWRnZXQoKSkKKyAgICBhdXRvIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+
aXNXaWRnZXQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2lkZ2V0KiB3aWRnZXQgPSB0b1Jl
bmRlcldpZGdldChyKS0+d2lkZ2V0KCk7Ci0gICAgaWYgKHdpZGdldCkKKyAgICBpZiAoV2lkZ2V0
KiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldChyZW5kZXJlciktPndpZGdldCgpKQogICAgICAgICB3
aWRnZXQtPmhhbmRsZUV2ZW50KGV2ZW50KTsKICNlbHNlCiAgICAgSFRNTEVsZW1lbnQ6OmRlZmF1
bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWV0ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxlbWVu
dC5jcHAKaW5kZXggYjM1ZTg4NDA1NjFmZTMyM2RhZWJiOWI0YWM3ZmExYzFjMzYwOTRmZC4uMGU4
YWIyNzRlMDM5OTUwNGY1OTY3YTA3ODMwNzM4MjU0ZDhhZjI1NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZXRlckVsZW1lbnQuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiSFRN
TE1ldGVyRWxlbWVudC5oIgogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiRWxl
bWVudFRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFMaXN0LmgiCkBAIC0yMjAsMTEgKzIyMSw4
IEBAIHZvaWQgSFRNTE1ldGVyRWxlbWVudDo6ZGlkRWxlbWVudFN0YXRlQ2hhbmdlKCkKIFJlbmRl
ck1ldGVyKiBIVE1MTWV0ZXJFbGVtZW50OjpyZW5kZXJNZXRlcigpIGNvbnN0CiB7CiAgICAgaWYg
KHJlbmRlcmVyKCkgJiYgcmVuZGVyZXIoKS0+aXNNZXRlcigpKQotICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8UmVuZGVyTWV0ZXIqPihyZW5kZXJlcigpKTsKLQotICAgIFJlbmRlck9iamVjdCog
cmVuZGVyT2JqZWN0ID0gdXNlckFnZW50U2hhZG93Um9vdCgpLT5maXJzdENoaWxkKCktPnJlbmRl
cmVyKCk7Ci0gICAgQVNTRVJUKCFyZW5kZXJPYmplY3QgfHwgcmVuZGVyT2JqZWN0LT5pc01ldGVy
KCkpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJNZXRlcio+KHJlbmRlck9iamVjdCk7
CisgICAgICAgIHJldHVybiB0b1JlbmRlck1ldGVyKHJlbmRlcmVyKCkpOworICAgIHJldHVybiB0
b1JlbmRlck1ldGVyKEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0V2l0aGluKHVzZXJBZ2VudFNoYWRv
d1Jvb3QoKSktPnJlbmRlcmVyKCkpOwogfQogCiB2b2lkIEhUTUxNZXRlckVsZW1lbnQ6OmRpZEFk
ZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCogcm9vdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMzg0ZDg2NjkyNTM1NjRhZGJjZjRjZGM4NDU3
OWNiNTg2YjZmNWQ3YS4uNDg2MDM1NTY4NDk4NzFiYTZkNzM0MWQ5MjQ1ODRiN2Y2MzIwYmRhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTMyNCw4ICsz
MjQsOCBAQCB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpkaWRSZWNhbGNTdHlsZShTdHlsZTo6Q2hh
bmdlKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5hc3R5LCB3ZSBhc2sgb3VyIG93bmVyIHNl
bGVjdCB0byByZXBhaW50IGV2ZW4gaWYgdGhlIG5ldwogICAgIC8vIHN0eWxlIGlzIGV4YWN0bHkg
dGhlIHNhbWUuCi0gICAgaWYgKEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSBvd25lclNlbGVj
dEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVj
dC0+cmVuZGVyZXIoKSkKKyAgICBpZiAoYXV0byBzZWxlY3QgPSBvd25lclNlbGVjdEVsZW1lbnQo
KSkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHNlbGVjdC0+cmVuZGVyZXIoKSkKICAg
ICAgICAgICAgIHJlbmRlcmVyLT5yZXBhaW50KCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAppbmRleCA4MWZjYjI2MGEyNGI3Mjg1NmMxMmFkZjBh
NTI5ZGRlZDJhNzZhMWE3Li4zNmQ4MzIxNzc5NWU1MzQxZmJmYjE1YmM2ZDdlOWZkNTk5OGRlYTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcApAQCAtODYsMTIg
Kzg2LDggQEAgYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tF
dmVudHMoKQogewogICAgIGlmIChpc0Rpc2FibGVkRm9ybUNvbnRyb2woKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFy
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFyLT5pc0VtYmVkZGVkT2JqZWN0KCkg
JiYgIXItPmlzV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1
ZTsKKyAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICByZXR1cm4gcmVu
ZGVyZXIgJiYgcmVuZGVyZXItPmlzV2lkZ2V0KCk7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkVsZW1l
bnQ6OndpbGxEZXRhY2hSZW5kZXJlcnMoKQpAQCAtMTk3LDE1ICsxOTMsMTggQEAgdm9pZCBIVE1M
UGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAKICAgICAv
LyBGSVhNRTogTW91c2UgZG93biBhbmQgc2Nyb2xsIGV2ZW50cyBhcmUgcGFzc2VkIGRvd24gdG8g
cGx1Zy1pbiB2aWEgY3VzdG9tIGNvZGUgaW4gRXZlbnRIYW5kbGVyOyB0aGVzZSBjb2RlIHBhdGhz
IHNob3VsZCBiZSB1bml0ZWQuCiAKLSAgICBSZW5kZXJPYmplY3QqIHIgPSByZW5kZXJlcigpOwot
ICAgIGlmIChyICYmIHItPmlzRW1iZWRkZWRPYmplY3QoKSkgewotICAgICAgICBpZiAodG9SZW5k
ZXJFbWJlZGRlZE9iamVjdChyKS0+aXNQbHVnaW5VbmF2YWlsYWJsZSgpKSB7Ci0gICAgICAgICAg
ICB0b1JlbmRlckVtYmVkZGVkT2JqZWN0KHIpLT5oYW5kbGVVbmF2YWlsYWJsZVBsdWdpbkluZGlj
YXRvckV2ZW50KGV2ZW50KTsKKyAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNXaWRnZXQoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKHJlbmRlcmVyLT5pc0VtYmVkZGVkT2JqZWN0KCkpIHsKKyAgICAgICAg
aWYgKHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocmVuZGVyZXIpLT5pc1BsdWdpblVuYXZhaWxhYmxl
KCkpIHsKKyAgICAgICAgICAgIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocmVuZGVyZXIpLT5oYW5k
bGVVbmF2YWlsYWJsZVBsdWdpbkluZGljYXRvckV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChyLT5pc1NuYXBzaG90dGVkUGx1Z0luKCkg
JiYgZGlzcGxheVN0YXRlKCkgPCBSZXN0YXJ0aW5nKSB7Ci0gICAgICAgICAgICB0b1JlbmRlclNu
YXBzaG90dGVkUGx1Z0luKHIpLT5oYW5kbGVFdmVudChldmVudCk7CisgICAgICAgIGlmICh0b1Jl
bmRlckVtYmVkZGVkT2JqZWN0KHJlbmRlcmVyKS0+aXNTbmFwc2hvdHRlZFBsdWdJbigpICYmIGRp
c3BsYXlTdGF0ZSgpIDwgUmVzdGFydGluZykgeworICAgICAgICAgICAgdG9SZW5kZXJTbmFwc2hv
dHRlZFBsdWdJbihyZW5kZXJlciktPmhhbmRsZUV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgIEhU
TUxGcmFtZU93bmVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNCw5ICsyMTMsNyBAQCB2b2lkIEhUTUxQbHVn
SW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXIgfHwgIXItPmlzV2lkZ2V0KCkpCi0gICAgICAg
IHJldHVybjsKLSAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQgPSB0b1JlbmRlcldpZGdldChyKS0+
d2lkZ2V0KCk7CisgICAgUmVmUHRyPFdpZGdldD4gd2lkZ2V0ID0gdG9SZW5kZXJXaWRnZXQocmVu
ZGVyZXIpLT53aWRnZXQoKTsKICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgcmV0dXJuOwogICAg
IHdpZGdldC0+aGFuZGxlRXZlbnQoZXZlbnQpOwpAQCAtMjI1LDE3ICsyMjIsMTcgQEAgdm9pZCBI
VE1MUGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiAgICAg
SFRNTEZyYW1lT3duZXJFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKIH0KIAot
Ym9vbCBIVE1MUGx1Z0luRWxlbWVudDo6aXNLZXlib2FyZEZvY3VzYWJsZShLZXlib2FyZEV2ZW50
KiBldmVudCkgY29uc3QKK2Jvb2wgSFRNTFBsdWdJbkVsZW1lbnQ6OmlzS2V5Ym9hcmRGb2N1c2Fi
bGUoS2V5Ym9hcmRFdmVudCopIGNvbnN0CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKKyAg
ICAvLyBGSVhNRTogV2h5IGlzIHRoaXMgY2hlY2sgbmVlZGVkPwogICAgIGlmICghZG9jdW1lbnQo
KS5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFBsdWdpblZpZXdC
YXNlKiBwbHVnaW4gPSBwbHVnaW5XaWRnZXQoKSAmJiBwbHVnaW5XaWRnZXQoKS0+aXNQbHVnaW5W
aWV3QmFzZSgpID8gc3RhdGljX2Nhc3Q8Y29uc3QgUGx1Z2luVmlld0Jhc2UqPihwbHVnaW5XaWRn
ZXQoKSkgOiAwOwotICAgIGlmIChwbHVnaW4pCi0gICAgICAgIHJldHVybiBwbHVnaW4tPnN1cHBv
cnRzS2V5Ym9hcmRGb2N1cygpOworICAgIFdpZGdldCogd2lkZ2V0ID0gcGx1Z2luV2lkZ2V0KCk7
CisgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNQbHVnaW5WaWV3QmFzZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRvUGx1Z2lu
Vmlld0Jhc2Uod2lkZ2V0KS0+c3VwcG9ydHNLZXlib2FyZEZvY3VzKCk7CiB9CiAKIGJvb2wgSFRN
TFBsdWdJbkVsZW1lbnQ6OmlzUGx1Z2luRWxlbWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAppbmRleCBjNjM2Y2Q0MTFjNDljYWE5
MTM1NGMwMGRiNmRlMGZkM2YwOThlZTNiLi45YzI4MTNiYTAwNTAzZjY2OTI2ZWJkZjAzOTQyMDY5
ZmIzOGNiOGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnN1YmZyYW1lTG9hZGVyRGlkQ3JlYXRlUGx1Z0luKGNvbnN0IFdpZGdldCogd2lkZ2V0KQogCiB2
b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2
ZW50KQogewotICAgIFJlbmRlck9iamVjdCogciA9IHJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxl
bWVudCogciA9IHJlbmRlcmVyKCk7CiAgICAgaWYgKHIgJiYgci0+aXNFbWJlZGRlZE9iamVjdCgp
KSB7CiAgICAgICAgIGlmIChpc1BsdWdJbkltYWdlRWxlbWVudCgpICYmIGRpc3BsYXlTdGF0ZSgp
ID09IFdhaXRpbmdGb3JTbmFwc2hvdCAmJiBldmVudC0+aXNNb3VzZUV2ZW50KCkgJiYgZXZlbnQt
PnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewogICAgICAgICAgICAgTW91c2VF
dmVudCogbW91c2VFdmVudCA9IHRvTW91c2VFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmNwcAppbmRleCA2MWRkOTQ0NjUyMDNkMGZjNjM1OGU2
ZWJkM2I0OGU4MGI1MjY4MmI4Li5hNjE3MWYxYTM2NzJlMzg5NTAzMDZhYTM5YjA2ZDY1MDE4YzE0
YzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5jcHAKQEAg
LTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJIVE1MUHJvZ3Jlc3NFbGVtZW50LmgiCiAKICNpbmNs
dWRlICJBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJFbGVtZW50VHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJI
VE1MRGl2RWxlbWVudC5oIgpAQCAtNzQsMTEgKzc1LDggQEAgYm9vbCBIVE1MUHJvZ3Jlc3NFbGVt
ZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUqIGNoaWxkKSBjb25zdAog
UmVuZGVyUHJvZ3Jlc3MqIEhUTUxQcm9ncmVzc0VsZW1lbnQ6OnJlbmRlclByb2dyZXNzKCkgY29u
c3QKIHsKICAgICBpZiAocmVuZGVyZXIoKSAmJiByZW5kZXJlcigpLT5pc1Byb2dyZXNzKCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZW5kZXJQcm9ncmVzcyo+KHJlbmRlcmVyKCkpOwot
Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCkt
PmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTighcmVuZGVyT2JqZWN0IHx8IHJlbmRlck9iamVjdC0+aXNQcm9ncmVzcygpKTsKLSAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8UmVuZGVyUHJvZ3Jlc3MqPihyZW5kZXJPYmplY3QpOworICAg
ICAgICByZXR1cm4gdG9SZW5kZXJQcm9ncmVzcyhyZW5kZXJlcigpKTsKKyAgICByZXR1cm4gdG9S
ZW5kZXJQcm9ncmVzcyhFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbih1c2VyQWdlbnRTaGFk
b3dSb290KCkpLT5yZW5kZXJlcigpKTsKIH0KIAogdm9pZCBIVE1MUHJvZ3Jlc3NFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJp
bmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAppbmRl
eCBiZWU3M2ZkMmMyNjE2MWEzNWFkYjYwZTU4N2Y4NThlZGE3NmU5YzA1Li4wMTljNGI5MmY0MzMz
ZTllZDNjNDFhNjU2NDMxNDNjNDc2YjUwZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcApAQCAtNjc5LDEzICs2NzksMTMgQEAgdm9pZCBIVE1MU2VsZWN0RWxl
bWVudDo6c2Nyb2xsVG9TZWxlY3Rpb24oKQogICAgIGlmICh1c2VzTWVudUxpc3QoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpKQorICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAg
ICAgdG9SZW5kZXJMaXN0Qm94KHJlbmRlcmVyKS0+c2VsZWN0aW9uQ2hhbmdlZCgpOwogfQogCiB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZXRPcHRpb25zQ2hhbmdlZE9uUmVuZGVyZXIoKQogewot
ICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAg
IGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICBpZiAodXNl
c01lbnVMaXN0KCkpCiAgICAgICAgICAgICB0b1JlbmRlck1lbnVMaXN0KHJlbmRlcmVyKS0+c2V0
T3B0aW9uc0NoYW5nZWQodHJ1ZSk7CiAgICAgICAgIGVsc2UKQEAgLTg1MSw3ICs4NTEsNyBAQCB2
b2lkIEhUTUxTZWxlY3RFbGVtZW50OjpzZWxlY3RPcHRpb24oaW50IG9wdGlvbkluZGV4LCBTZWxl
Y3RPcHRpb25GbGFncyBmbGFncykKICAgICAgICAgZGVzZWxlY3RJdGVtc1dpdGhvdXRWYWxpZGF0
aW9uKGVsZW1lbnQpOwogCiAgICAgLy8gRm9yIHRoZSBtZW51IGxpc3QgY2FzZSwgdGhpcyBpcyB3
aGF0IG1ha2VzIHRoZSBzZWxlY3RlZCBlbGVtZW50IGFwcGVhci4KLSAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICByZW5kZXJlci0+dXBkYXRlRnJvbUVsZW1lbnQo
KTsKIAogICAgIHNjcm9sbFRvU2VsZWN0aW9uKCk7CkBAIC04NjAsNyArODYwLDcgQEAgdm9pZCBI
VE1MU2VsZWN0RWxlbWVudDo6c2VsZWN0T3B0aW9uKGludCBvcHRpb25JbmRleCwgU2VsZWN0T3B0
aW9uRmxhZ3MgZmxhZ3MpCiAgICAgICAgIG1faXNQcm9jZXNzaW5nVXNlckRyaXZlbkNoYW5nZSA9
IGZsYWdzICYgVXNlckRyaXZlbjsKICAgICAgICAgaWYgKGZsYWdzICYgRGlzcGF0Y2hDaGFuZ2VF
dmVudCkKICAgICAgICAgICAgIGRpc3BhdGNoQ2hhbmdlRXZlbnRGb3JNZW51TGlzdCgpOwotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAg
ICBpZiAodXNlc01lbnVMaXN0KCkpCiAgICAgICAgICAgICAgICAgdG9SZW5kZXJNZW51TGlzdChy
ZW5kZXJlciktPmRpZFNldFNlbGVjdGVkSW5kZXgobGlzdEluZGV4KTsKICAgICAgICAgICAgIGVs
c2UgaWYgKHJlbmRlcmVyLT5pc0xpc3RCb3goKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ2VsbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVDZWxsRWxlbWVudC5jcHAKaW5kZXggZjM1NzI2MDYwODE4ZDVmMzNlMjliMWU1OThkZDcz
YTkzMTU4MjRjZi4uZGQwMjI0OWM5MTNhMzQwZTlhMzk0M2M2NzUyNjNkMjcwOTc5MDcxNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDZWxsRWxlbWVudC5jcHAKQEAgLTE2OCwx
OCArMTY4LDE2IEBAIHZvaWQgSFRNTFRhYmxlQ2VsbEVsZW1lbnQ6OmFkZFN1YnJlc291cmNlQXR0
cmlidXRlVVJMcyhMaXN0SGFzaFNldDxVUkw+JiB1cmxzKSBjCiAKIEhUTUxUYWJsZUNlbGxFbGVt
ZW50KiBIVE1MVGFibGVDZWxsRWxlbWVudDo6Y2VsbEFib3ZlKCkgY29uc3QKIHsKLSAgICBSZW5k
ZXJPYmplY3QqIGNlbGxSZW5kZXJlciA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFjZWxsUmVuZGVy
ZXIpCi0gICAgICAgIHJldHVybiAwOwotICAgIGlmICghY2VsbFJlbmRlcmVyLT5pc1RhYmxlQ2Vs
bCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlbmRlclRhYmxlQ2VsbCogdGFibGVDZWxs
UmVuZGVyZXIgPSB0b1JlbmRlclRhYmxlQ2VsbChjZWxsUmVuZGVyZXIpOwotICAgIFJlbmRlclRh
YmxlQ2VsbCogY2VsbEFib3ZlUmVuZGVyZXIgPSB0YWJsZUNlbGxSZW5kZXJlci0+dGFibGUoKS0+
Y2VsbEFib3ZlKHRhYmxlQ2VsbFJlbmRlcmVyKTsKKyAgICBhdXRvIGNlbGxSZW5kZXJlciA9IHJl
bmRlcmVyKCk7CisgICAgaWYgKCFjZWxsUmVuZGVyZXIgfHwgIWNlbGxSZW5kZXJlci0+aXNUYWJs
ZUNlbGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHRhYmxlQ2VsbFJl
bmRlcmVyID0gdG9SZW5kZXJUYWJsZUNlbGwoY2VsbFJlbmRlcmVyKTsKKyAgICBhdXRvIGNlbGxB
Ym92ZVJlbmRlcmVyID0gdGFibGVDZWxsUmVuZGVyZXItPnRhYmxlKCktPmNlbGxBYm92ZSh0YWJs
ZUNlbGxSZW5kZXJlcik7CiAgICAgaWYgKCFjZWxsQWJvdmVSZW5kZXJlcikKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxUYWJsZUNlbGxFbGVtZW50Kj4oY2VsbEFib3ZlUmVuZGVyZXItPmVsZW1lbnQoKSk7Cisg
ICAgcmV0dXJuIHRvSFRNTFRhYmxlQ2VsbEVsZW1lbnQoY2VsbEFib3ZlUmVuZGVyZXItPmVsZW1l
bnQoKSk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDExMzAwM2JiMGU0OTJlOGZhMzIy
M2EwMmU4M2E0Y2IxY2ZmNjM2MjguLjk5MTg0ZmU5ZmQzMjczODg3OWQ4YzRiMjMzMDQwODE4NTMy
MWQzMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCkBAIC0yMDMsMTAgKzIwMyw5IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OmRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpCiAgICAgc2V0Q2hhbmdl
ZFNpbmNlTGFzdEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoZmFsc2UpOwogfQogCi1zdGF0aWMgaW5s
aW5lIGJvb2wgaGFzVmlzaWJsZVRleHRBcmVhKFJlbmRlck9iamVjdCogdGV4dENvbnRyb2wsIEhU
TUxFbGVtZW50KiBpbm5lclRleHQpCitzdGF0aWMgaW5saW5lIGJvb2wgaGFzVmlzaWJsZVRleHRB
cmVhKFJlbmRlckVsZW1lbnQmIHRleHRDb250cm9sLCBIVE1MRWxlbWVudCogaW5uZXJUZXh0KQog
ewotICAgIEFTU0VSVCh0ZXh0Q29udHJvbCk7Ci0gICAgcmV0dXJuIHRleHRDb250cm9sLT5zdHls
ZSgpLT52aXNpYmlsaXR5KCkgIT0gSElEREVOICYmIGlubmVyVGV4dCAmJiBpbm5lclRleHQtPnJl
bmRlcmVyKCkgJiYgaW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+aGVpZ2h0KCk7CisgICAgcmV0dXJu
IHRleHRDb250cm9sLnN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBISURERU4gJiYgaW5uZXJUZXh0
ICYmIGlubmVyVGV4dC0+cmVuZGVyZXIoKSAmJiBpbm5lclRleHQtPnJlbmRlckJveCgpLT5oZWln
aHQoKTsKIH0KIAogdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0UmFuZ2VUZXh0
KGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMjg5LDcg
KzI4OCw3IEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFNlbGVjdGlvblJh
bmdlKGludCBzdGFydCwgaW50IGVuZCwgVGV4dEZpZWxkCiAgICAgZW5kID0gbWF4KGVuZCwgMCk7
CiAgICAgc3RhcnQgPSBtaW4obWF4KHN0YXJ0LCAwKSwgZW5kKTsKIAotICAgIGlmICghaGFzVmlz
aWJsZVRleHRBcmVhKHJlbmRlcmVyKCksIGlubmVyVGV4dEVsZW1lbnQoKSkpIHsKKyAgICBpZiAo
IWhhc1Zpc2libGVUZXh0QXJlYSgqcmVuZGVyZXIoKSwgaW5uZXJUZXh0RWxlbWVudCgpKSkgewog
ICAgICAgICBjYWNoZVNlbGVjdGlvbihzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUu
aCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSW5wdXRUeXBlLmgKaW5kZXggMzdlNmRhMmZjMWNkZmNm
NDVmNzg5YmNlZDEyZmU5ZDEyZGQ0YzBhMC4uMmIyNDYyYWFhY2MxN2UxZDBhNGRlOTY1MWM2Y2Vj
MDE4ZTI5YzBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9JbnB1dFR5cGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0lucHV0VHlwZS5oCkBAIC01OSw3ICs1OSw2IEBAIGNs
YXNzIEtleWJvYXJkRXZlbnQ7CiBjbGFzcyBNb3VzZUV2ZW50OwogY2xhc3MgTm9kZTsKIGNsYXNz
IFJlbmRlckFyZW5hOwotY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xhc3MgUmVuZGVyU3R5bGU7CiBj
bGFzcyBUb3VjaEV2ZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcAppbmRleCBiMTAwOTk3OGE2MWFlMjNhYjYwMTAwYWNi
ZjZiNGE1YTEyODk0ZDZkLi5iZjQzNDZhNGE0M2U5MzQzYjA1OWFhYWNlMWRjZGMxZjAwYTYzOGZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVs
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVBy
ZWxvYWRlci5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgog
I2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBl
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlw
ZXMuY3BwCmluZGV4IDgxNmFlMzAyMjU2YmMyN2IwMDNlYTI4ODc5OGM5OWRjMDE2NmI5MTQuLjY2
OTM4ZjljYzA4MzY2ODQ5N2RkZTI0MjIwYzA4YTlmZGRmOTE3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcApA
QCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6c2V0RGlzcGxheVR5
cGUoTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fZGlzcGxheVR5cGUgPSBkaXNwbGF5VHlwZTsKLSAgICBpZiAoUmVuZGVyT2JqZWN0
KiBvYmplY3QgPSBtX2VsZW1lbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKGF1dG8gb2JqZWN0ID0g
bV9lbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICBvYmplY3QtPnJlcGFpbnQoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMu
Y3BwCmluZGV4IDhlZjZhODU2OWVhZGZlNGFlZTg1OGVkODMxOGY4ODk5YTU0NGM0N2UuLjk0MTYx
NDE5NjU5OTcwNTJiYWY5NTc4NDkxNjcwOGNlYTQ2ODc5NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTEwMCw3ICsx
MDAsNyBAQCB2b2lkIE1lZGlhQ29udHJvbFBhbmVsRWxlbWVudDo6c3RhcnREcmFnKGNvbnN0IExh
eW91dFBvaW50JiBldmVudExvY2F0aW9uKQogICAgIGlmIChtX2lzQmVpbmdEcmFnZ2VkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJl
bmRlcmVyIHx8ICFyZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzk2
LDIwICsxMzk2LDIwIEBAIHZvaWQgTWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVu
dDo6dXBkYXRlU2l6ZXMoYm9vbCBmb3JjZVVwZGF0ZSkKIFBhc3NSZWZQdHI8SW1hZ2U+IE1lZGlh
Q29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OmNyZWF0ZVRleHRUcmFja1JlcHJlc2Vu
dGF0aW9uSW1hZ2UoKQogewogICAgIGlmICghaGFzQ2hpbGROb2RlcygpKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1
bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKIAot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghcmVuZGVyZXIt
Pmhhc0xheWVyKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChyZW5k
ZXJlciktPmxheWVyKCk7CiAKQEAgLTE0MTgsOSArMTQxOCwxMCBAQCBQYXNzUmVmUHRyPEltYWdl
PiBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50OjpjcmVhdGVUZXh0VHJhY2tS
ZXByZXNlbgogICAgICAgICBkZXZpY2VTY2FsZUZhY3RvciA9IHBhZ2UtPmRldmljZVNjYWxlRmFj
dG9yKCk7CiAKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwg
bGF5ZXItPnNpemUoKSk7CisKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlcihJbWFnZUJ1
ZmZlcjo6Y3JlYXRlKHBhaW50aW5nUmVjdC5zaXplKCksIGRldmljZVNjYWxlRmFjdG9yLCBDb2xv
clNwYWNlRGV2aWNlUkdCKSk7CiAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGxheWVyLT5wYWludChidWZmZXItPmNvbnRl
eHQoKSwgcGFpbnRpbmdSZWN0LCBQYWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
LCAwLCAwLCBSZW5kZXJMYXllcjo6UGFpbnRMYXllclBhaW50aW5nQ29tcG9zaXRpbmdBbGxQaGFz
ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRv
d0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWV0ZXJTaGFkb3dFbGVt
ZW50LmNwcAppbmRleCBlMDQyYzZlZmE1NzExYzkyZTFlYmE0Y2I4YzU3MGEzMGU3YmFhODg5Li42
M2UzN2ZhODI2M2IzMDkxYTYyZWVjMGQzZDU3MjUwZTczNWJlNzgzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZXRlclNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01ldGVyU2hhZG93RWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgSFRNTE1ldGVyRWxlbWVudCogTWV0ZXJTaGFkb3dFbGVtZW50OjptZXRlckVsZW1lbnQo
KSBjb25zdAogCiBib29sIE1ldGVyU2hhZG93RWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXIgPSBtZXRl
ckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlciA9IG1ldGVyRWxlbWVudCgp
LT5yZW5kZXJlcigpOwogICAgIHJldHVybiByZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS0+c3Vw
cG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCktPmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1l
bnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogfQogCkBAIC03Miw3ICs3Miw3IEBAIGJvb2wg
TWV0ZXJJbm5lckVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQogICAgIGlmIChtZXRlckVsZW1lbnQoKS0+aGFzQXV0aG9yU2hhZG93Um9vdCgpKQogICAg
ICAgICByZXR1cm4gSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUpOwogCi0g
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXIgPSBtZXRlckVsZW1lbnQoKS0+cmVuZGVyZXIoKTsKKyAg
ICBhdXRvIHJlbmRlciA9IG1ldGVyRWxlbWVudCgpLT5yZW5kZXJlcigpOwogICAgIHJldHVybiBy
ZW5kZXIgJiYgIXJlbmRlci0+dGhlbWUoKS0+c3VwcG9ydHNNZXRlcihyZW5kZXItPnN0eWxlKCkt
PmFwcGVhcmFuY2UoKSkgJiYgSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoc3R5bGUp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5
ZXJUcmVlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVy
VHJlZUFnZW50LmNwcAppbmRleCBiMDA0MWVlNDUwZmQ4ZDUwYzViMDhmOWM5MTMxYTU2YTFkZWNm
MzY5Li5lNjYwY2MzMWE5OWE0NjY2MmJlM2IwYzFmNjk1OTY5MjcwMmZjNzc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAK
QEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZWFzb25z
Rm9yQ29tcG9zaXRpbmdMYXllcihFcnJvclN0cmluZyogZXJyb3JTdHJpbgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgQ29tcG9zaXRpbmdSZWFzb25zIHJlYXNvbnNCaXRtYXNrID0gcmVu
ZGVyTGF5ZXItPmNvbXBvc2l0b3IoKS5yZWFzb25zRm9yQ29tcG9zaXRpbmcocmVuZGVyTGF5ZXIp
OworICAgIENvbXBvc2l0aW5nUmVhc29ucyByZWFzb25zQml0bWFzayA9IHJlbmRlckxheWVyLT5j
b21wb3NpdG9yKCkucmVhc29uc0ZvckNvbXBvc2l0aW5nKCpyZW5kZXJMYXllcik7CiAgICAgY29t
cG9zaXRpbmdSZWFzb25zID0gVHlwZUJ1aWxkZXI6OkxheWVyVHJlZTo6Q29tcG9zaXRpbmdSZWFz
b25zOjpjcmVhdGUoKTsKIAogICAgIGlmIChyZWFzb25zQml0bWFzayAmIENvbXBvc2l0aW5nUmVh
c29uM0RUcmFuc2Zvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zl
cmxheS5jcHAKaW5kZXggN2E5ZWNhY2U1MDI0Yzk1NGQ2ODkwYzg2YzIxOTE1MDkxYjUxZDdmYS4u
OTc1ZDVhNjc1NTM4YWU4YTc2ZTdjNDJmNDgwMDI5OThmZTY2Njc5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtNDQsMTAgKzQ0LDEwIEBA
CiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJC
b3hNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJS
ZW5kZXJGbG93VGhyZWFkLmgiCiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAi
UmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNjcmlwdENvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA3YWZhZmMwOTQ0MmZiMmQwZDBmMmQ2ZDU0
NGQwN2YyY2IwYzQ2MDVkLi4wYWFkNjM5NzhlNzA0ZGQ1OGE0MjVkYzljODgzNTNjMDk5YzliOGM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yU3RhdGUuaCIK
ICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgot
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggNDU5MmNiMTY3NTgxOGRiNDFhY2Y2M2Zh
MmJlNzBkNDBiNDFjZGJhOC4uOGYzZjNjMmFlNTZmNWQwZjY5YzUzMDJlMzU4MDlkM2Q4YzZhNzZi
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVB
Z2VudC5oCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgeworCiBjbGFzcyBFdmVudDsKIGNsYXNzIEZsb2F0UXVhZDsKIGNsYXNz
IEZyYW1lOwpAQCAtMjU5LDcgKzI2MCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbm5lckFkZFJl
Y29yZFRvVGltZWxpbmUoUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+LCBUaW1lbGluZVJlY29y
ZFR5cGUpOwogICAgIHZvaWQgY2xlYXJSZWNvcmRTdGFjaygpOwogCi0gICAgdm9pZCBsb2NhbFRv
UGFnZVF1YWQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYs
IEZsb2F0UXVhZCopOworICAgIHZvaWQgbG9jYWxUb1BhZ2VRdWFkKGNvbnN0IFJlbmRlck9iamVj
dCYsIGNvbnN0IExheW91dFJlY3QmLCBGbG9hdFF1YWQqKTsKICAgICBjb25zdCBUaW1lbGluZVRp
bWVDb252ZXJ0ZXImIHRpbWVDb252ZXJ0ZXIoKSBjb25zdCB7IHJldHVybiBtX3RpbWVDb252ZXJ0
ZXI7IH0KICAgICBkb3VibGUgdGltZXN0YW1wKCk7CiAgICAgUGFnZSogcGFnZSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKaW5kZXggMTFlYzk4OWFiZDc4ODNjZmM3MmU5M2Ey
ZjgyMjlkODkzYWMwMGY0NS4uYzU0Y2EyNWFmMzJkOWMzMmMyOWU5NjQxODhiMWI3Zjc3YTA5MzQ5
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCkBAIC0zMTgsMTQgKzMxOCwx
MyBAQCB2b2lkIEltYWdlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiAKIFJlbmRlckltYWdlUmVzb3VyY2UqIEltYWdlTG9hZGVyOjpyZW5kZXJJbWFnZVJl
c291cmNlKCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbV9lbGVtZW50LT5yZW5k
ZXJlcigpOwotCisgICAgYXV0byByZW5kZXJlciA9IG1fZWxlbWVudC0+cmVuZGVyZXIoKTsKICAg
ICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBXZSBkb24ndCByZXR1cm4gc3R5bGUgZ2VuZXJhdGVkIGltYWdlIGJlY2F1
c2UgaXQgZG9lc24ndCBiZWxvbmcgdG8gdGhlIEltYWdlTG9hZGVyLgogICAgIC8vIFNlZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyODQwPgotICAgIGlmIChyZW5k
ZXJlci0+aXNJbWFnZSgpICYmICFzdGF0aWNfY2FzdDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKS0+
aXNHZW5lcmF0ZWRDb250ZW50KCkpCisgICAgaWYgKHJlbmRlcmVyLT5pc0ltYWdlKCkgJiYgIXRv
UmVuZGVySW1hZ2UoKnJlbmRlcmVyKS5pc0dlbmVyYXRlZENvbnRlbnQoKSkKICAgICAgICAgcmV0
dXJuIHRvUmVuZGVySW1hZ2UoKnJlbmRlcmVyKS5pbWFnZVJlc291cmNlKCk7CiAKICNpZiBFTkFC
TEUoU1ZHKQpAQCAtMzM4LDcgKzMzNyw3IEBAIFJlbmRlckltYWdlUmVzb3VyY2UqIEltYWdlTG9h
ZGVyOjpyZW5kZXJJbWFnZVJlc291cmNlKCkKICAgICAgICAgcmV0dXJuIHRvUmVuZGVyVmlkZW8o
KnJlbmRlcmVyKS5pbWFnZVJlc291cmNlKCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEltYWdlTG9hZGVyOjp1cGRhdGVSZW5kZXJlcigp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAyOWIz
MTFkZmJmMzk3M2ViMjYxOWRiYjY2YjIxZDA3NmYzYmExNzY1Li5lZWY1YWRkZGYxNzIyOWRmYzVm
NGMxMjM0MDcwY2U4MTZkYzJkNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
ICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VCdWZmZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1YnJlc291
cmNlTG9hZGVyLmgiCkBAIC01MjQsNyArNTI0LDcgQEAgdm9pZCBDYWNoZWRJbWFnZTo6cmVzdW1l
QW5pbWF0aW5nSW1hZ2VzRm9yTG9hZGVyKENhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXIpCiAg
ICAgfQogfQogCi1ib29sIENhY2hlZEltYWdlOjpjdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUo
Y29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK2Jvb2wgQ2FjaGVkSW1hZ2U6OmN1cnJlbnRG
cmFtZUtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAg
ICBJbWFnZSogaW1hZ2UgPSBpbWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICBpZiAoaW1h
Z2UtPmlzQml0bWFwSW1hZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZElt
YWdlLmgKaW5kZXggNDMxYjc0MDYyNmE4NmRiNzk5ZWRjOWE2NzIzMzc3ZDczNzg5MjgzZi4uNmJl
MTIzZDM1MmU5NDM4YzYyNzA0Y2QyMDI0MDI0MDdiMTEyNjk5ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKQEAgLTM4LDcgKzM4LDkgQEAgY2xhc3MgQ2FjaGVk
SW1hZ2VDbGllbnQ7CiBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsKIGNsYXNzIEZsb2F0U2l6
ZTsKIGNsYXNzIE1lbW9yeUNhY2hlOworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRl
ck9iamVjdDsKKwogc3RydWN0IExlbmd0aDsKIAogY2xhc3MgQ2FjaGVkSW1hZ2UgRklOQUwgOiBw
dWJsaWMgQ2FjaGVkUmVzb3VyY2UsIHB1YmxpYyBJbWFnZU9ic2VydmVyIHsKQEAgLTUyLDcgKzU0
LDcgQEAgcHVibGljOgogICAgIEltYWdlKiBpbWFnZSgpOyAvLyBSZXR1cm5zIHRoZSBudWxsSW1h
Z2UoKSBpZiB0aGUgaW1hZ2UgaXMgbm90IGF2YWlsYWJsZSB5ZXQuCiAgICAgSW1hZ2UqIGltYWdl
Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kik7IC8vIFJldHVybnMgdGhlIG51bGxJbWFn
ZSgpIGlmIHRoZSBpbWFnZSBpcyBub3QgYXZhaWxhYmxlIHlldC4KICAgICBib29sIGhhc0ltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZS5nZXQoKTsgfQotICAgIGJvb2wgY3VycmVudEZyYW1l
S25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlck9iamVjdCopOyAvLyBTaWRlIGVmZmVjdDogZW5z
dXJlcyBkZWNvZGVkIGltYWdlIGlzIGluIGNhY2hlLCB0aGVyZWZvcmUgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIHdoZW4gYWJvdXQgdG8gZHJhdyB0aGUgaW1hZ2UuCisgICAgYm9vbCBjdXJyZW50RnJh
bWVLbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCopOyAvLyBTaWRlIGVmZmVjdDog
ZW5zdXJlcyBkZWNvZGVkIGltYWdlIGlzIGluIGNhY2hlLCB0aGVyZWZvcmUgc2hvdWxkIG9ubHkg
YmUgY2FsbGVkIHdoZW4gYWJvdXQgdG8gZHJhdyB0aGUgaW1hZ2UuCiAKICAgICBzdGQ6OnBhaXI8
SW1hZ2UqLCBmbG9hdD4gYnJva2VuSW1hZ2UoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0
OyAvLyBSZXR1cm5zIGFuIGltYWdlIGFuZCB0aGUgaW1hZ2UncyByZXNvbHV0aW9uIHNjYWxlIGZh
Y3Rvci4KICAgICBib29sIHdpbGxQYWludEJyb2tlbkltYWdlKCkgY29uc3Q7IApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuY3BwCmluZGV4IDU1YjQ3NmI3ZGY4YWMxYWJlYTQ0YWM3
YmQ2MDQxNmI1MTFhNDhmNGMuLjA2ZWVhNDhlNGJmN2NlZDRlMzc1OWJmM2Q1NzhlNzM1ZmNhMTA0
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKQEAgLTMyLDcgKzMy
LDYgQEAKICNpbmNsdWRlICJNYXRoTUxFbGVtZW50LmgiCiAKICNpbmNsdWRlICJNYXRoTUxOYW1l
cy5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2Vs
bC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRl
eHRNZW51Q29udHJvbGxlci5jcHAKaW5kZXggYTYzYzA3MzM4MWJlZmFlM2U2MTE2YmVlNmJhYTk1
Nzk5MDkzYmQxZi4uMTcxY2JkOTEyZDEyMDI0OTgzNjU1YWRlYWRkY2Q3YTJlZjVmMTYxOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtNjAs
NyArNjAsNiBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1FdmVudC5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKaW5kZXggNzk0MjI3YTdiNjExZDMyZGZiY2JjZjBmYzFlZWRlNmExY2Y1YTA1NC4uY2Y0MTc4
NGQ2MjFiN2E3MGIzMjU0OWIzNzY1NDMwZjBkMjhkNzQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKQEAgLTYzMiwzNiArNjMyLDMwIEBAIEVsZW1lbnQqIERyYWdDb250
cm9sbGVyOjpkcmFnZ2FibGVFbGVtZW50KGNvbnN0IEZyYW1lKiBzb3VyY2VGcmFtZSwgRWxlbWVu
dCogc3RhCiAgICAgaWYgKCFzdGFydEVsZW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
Zm9yIChjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhcnRFbGVtZW50LT5yZW5kZXJl
cigpOyByZW5kZXJlcjsgcmVuZGVyZXIgPSByZW5kZXJlci0+cGFyZW50KCkpIHsKLSAgICAgICAg
Tm9kZSogbm9kZSA9IHJlbmRlcmVyLT5ub25Qc2V1ZG9Ob2RlKCk7Ci0gICAgICAgIGlmICghbm9k
ZSkKLSAgICAgICAgICAgIC8vIEFub255bW91cyByZW5kZXIgYmxvY2tzIGRvbid0IGNvcnJlc3Bv
bmQgdG8gYWN0dWFsIERPTSBub2Rlcywgc28gd2Ugc2tpcCBvdmVyIHRoZW0KLSAgICAgICAgICAg
IC8vIGZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyBhIGRyYWdnYWJsZSBub2RlLgorICAgIGZv
ciAoYXV0byByZW5kZXJlciA9IHN0YXJ0RWxlbWVudC0+cmVuZGVyZXIoKTsgcmVuZGVyZXI7IHJl
bmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CisgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSByZW5kZXJlci0+bm9uUHNldWRvRWxlbWVudCgpOworICAgICAgICBpZiAoIWVsZW1lbnQpIHsK
KyAgICAgICAgICAgIC8vIEFub255bW91cyByZW5kZXIgYmxvY2tzIGRvbid0IGNvcnJlc3BvbmQg
dG8gYWN0dWFsIERPTSBlbGVtZW50cywgc28gd2Ugc2tpcCBvdmVyIHRoZW0KKyAgICAgICAgICAg
IC8vIGZvciB0aGUgcHVycG9zZXMgb2YgZmluZGluZyBhIGRyYWdnYWJsZSBlbGVtZW50LgogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmICghKHN0YXRlLnR5cGUgJiBEcmFnU291cmNl
QWN0aW9uU2VsZWN0aW9uKSAmJiBub2RlLT5pc1RleHROb2RlKCkgJiYgbm9kZS0+Y2FuU3RhcnRT
ZWxlY3Rpb24oKSkKLSAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBoYXZlIGEgY2xpY2sg
aW4gdGhlIHVuc2VsZWN0ZWQgcG9ydGlvbiBvZiB0ZXh0LiBJZiB0aGlzIHRleHQgaXMKLSAgICAg
ICAgICAgIC8vIHNlbGVjdGFibGUsIHdlIHdhbnQgdG8gc3RhcnQgdGhlIHNlbGVjdGlvbiBwcm9j
ZXNzIGluc3RlYWQgb2YgbG9va2luZyBmb3IgYSBwYXJlbnQKLSAgICAgICAgICAgIC8vIHRvIHRy
eSB0byBkcmFnLgotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChub2RlLT5pc0Vs
ZW1lbnROb2RlKCkpIHsKLSAgICAgICAgICAgIEVVc2VyRHJhZyBkcmFnTW9kZSA9IHJlbmRlcmVy
LT5zdHlsZSgpLT51c2VyRHJhZygpOwotICAgICAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rp
b24gJiBEcmFnU291cmNlQWN0aW9uREhUTUwpICYmIGRyYWdNb2RlID09IERSQUdfRUxFTUVOVCkg
ewotICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0
aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkRIVE1MKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOworICAgICAgICB9CisgICAgICAgIEVVc2VyRHJhZyBk
cmFnTW9kZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT51c2VyRHJhZygpOworICAgICAgICBpZiAoKG1f
ZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25ESFRNTCkgJiYgZHJhZ01vZGUgPT0g
RFJBR19FTEVNRU5UKSB7CisgICAgICAgICAgICBzdGF0ZS50eXBlID0gc3RhdGljX2Nhc3Q8RHJh
Z1NvdXJjZUFjdGlvbj4oc3RhdGUudHlwZSB8IERyYWdTb3VyY2VBY3Rpb25ESFRNTCk7CisgICAg
ICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZHJhZ01vZGUg
PT0gRFJBR19BVVRPKSB7CisgICAgICAgICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERy
YWdTb3VyY2VBY3Rpb25JbWFnZSkKKyAgICAgICAgICAgICAgICAmJiBpc0hUTUxJbWFnZUVsZW1l
bnQoZWxlbWVudCkKKyAgICAgICAgICAgICAgICAmJiBzb3VyY2VGcmFtZS0+c2V0dGluZ3MoKS5s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSkgeworICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUg
PSBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFj
dGlvbkltYWdlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGlmIChkcmFnTW9kZSA9PSBEUkFHX0FVVE8pIHsKLSAgICAgICAgICAg
ICAgICBpZiAoKG1fZHJhZ1NvdXJjZUFjdGlvbiAmIERyYWdTb3VyY2VBY3Rpb25JbWFnZSkKLSAg
ICAgICAgICAgICAgICAgICAgJiYgaXNIVE1MSW1hZ2VFbGVtZW50KG5vZGUpCi0gICAgICAgICAg
ICAgICAgICAgICYmIHNvdXJjZUZyYW1lLT5zZXR0aW5ncygpLmxvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRlLnR5cGUgPSBzdGF0aWNfY2FzdDxE
cmFnU291cmNlQWN0aW9uPihzdGF0ZS50eXBlIHwgRHJhZ1NvdXJjZUFjdGlvbkltYWdlKTsKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNl
QWN0aW9uTGluaykKLSAgICAgICAgICAgICAgICAgICAgJiYgaXNIVE1MQW5jaG9yRWxlbWVudChu
b2RlKQotICAgICAgICAgICAgICAgICAgICAmJiB0b0hUTUxBbmNob3JFbGVtZW50KG5vZGUpLT5p
c0xpdmVMaW5rKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19j
YXN0PERyYWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uTGluayk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7Ci0gICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKChtX2RyYWdTb3VyY2VBY3Rpb24gJiBEcmFnU291cmNl
QWN0aW9uTGluaykKKyAgICAgICAgICAgICAgICAmJiBpc0hUTUxBbmNob3JFbGVtZW50KGVsZW1l
bnQpCisgICAgICAgICAgICAgICAgJiYgdG9IVE1MQW5jaG9yRWxlbWVudChlbGVtZW50KS0+aXNM
aXZlTGluaygpKSB7CisgICAgICAgICAgICAgICAgc3RhdGUudHlwZSA9IHN0YXRpY19jYXN0PERy
YWdTb3VyY2VBY3Rpb24+KHN0YXRlLnR5cGUgfCBEcmFnU291cmNlQWN0aW9uTGluayk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggYTVmOGVjMzJhYTQ5MzIz
OTlmN2RkNTllMzM1NmRhZWZmYTlmYWRiOS4uNWZkZTJjNDY3YWFhZmJkYWRhY2UxZjY5MzdkYzFl
MDdjZGNiOWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMzQ0LDcg
KzM0NCw3IEBAIEV2ZW50SGFuZGxlcjo6RXZlbnRIYW5kbGVyKEZyYW1lJiBmcmFtZSkKICAgICAs
IG1fdG91Y2hQcmVzc2VkKGZhbHNlKQogI2VuZGlmCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQotICAgICwgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlKDApCisgICAgLCBtX3Njcm9sbEdl
c3R1cmVIYW5kbGluZ05vZGUobnVsbHB0cikKICAgICAsIG1fbGFzdEhpdFRlc3RSZXN1bHRPdmVy
V2lkZ2V0KGZhbHNlKQogI2VuZGlmCiAgICAgLCBtX21heE1vdXNlTW92ZWREdXJhdGlvbigwKQpA
QCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjbGVhcigpCiAgICAgbV9vcmln
aW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkgPSAwOwogI2VuZGlmCiAjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQotICAgIG1fc2Nyb2xsR2VzdHVyZUhhbmRsaW5nTm9kZSA9IDA7CisgICAgbV9z
Y3JvbGxHZXN0dXJlSGFuZGxpbmdOb2RlID0gbnVsbHB0cjsKICAgICBtX2xhc3RIaXRUZXN0UmVz
dWx0T3ZlcldpZGdldCA9IGZhbHNlOwogICAgIG1fcHJldmlvdXNHZXN0dXJlU2Nyb2xsZWRFbGVt
ZW50ID0gbnVsbHB0cjsKICAgICBtX3Njcm9sbGJhckhhbmRsaW5nU2Nyb2xsR2VzdHVyZSA9IDA7
CkBAIC05ODAsNyArOTgwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRpZFBhblNjcm9sbFN0b3Ao
KQogICAgIG1fYXV0b3Njcm9sbENvbnRyb2xsZXItPmRpZFBhblNjcm9sbFN0b3AoKTsKIH0KIAot
dm9pZCBFdmVudEhhbmRsZXI6OnN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCit2b2lkIEV2ZW50SGFuZGxlcjo6c3RhcnRQYW5TY3JvbGxpbmcoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIpCiB7CiAgICAgaWYgKCFyZW5kZXJlci0+aXNCb3goKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtOTkwLDcgKzk5MCw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpzdGFydFBhblNjcm9sbGlu
ZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiAjZW5kaWYgLy8gRU5BQkxFKFBBTl9TQ1JPTExJ
TkcpCiAKLVJlbmRlck9iamVjdCogRXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIoKSBj
b25zdAorUmVuZGVyRWxlbWVudCogRXZlbnRIYW5kbGVyOjphdXRvc2Nyb2xsUmVuZGVyZXIoKSBj
b25zdAogewogICAgIHJldHVybiBtX2F1dG9zY3JvbGxDb250cm9sbGVyLT5hdXRvc2Nyb2xsUmVu
ZGVyZXIoKTsKIH0KQEAgLTEwODIsNyArMTA4Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzY3Jv
bGxPdmVyZmxvdyhTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBn
CiAgICAgICAgIG5vZGUgPSBtX21vdXNlUHJlc3NOb2RlLmdldCgpOwogICAgIAogICAgIGlmIChu
b2RlKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAg
ICAgIGF1dG8gciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChyICYmICFyLT5pc0xp
c3RCb3goKSAmJiByLT5lbmNsb3NpbmdCb3goKS0+c2Nyb2xsKGRpcmVjdGlvbiwgZ3JhbnVsYXJp
dHkpKSB7CiAgICAgICAgICAgICBzZXRGcmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTExMDMsNyArMTEwMyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
Ojpsb2dpY2FsU2Nyb2xsT3ZlcmZsb3coU2Nyb2xsTG9naWNhbERpcmVjdGlvbiBkaXJlY3Rpb24s
IFNjcm9sCiAgICAgICAgIG5vZGUgPSBtX21vdXNlUHJlc3NOb2RlLmdldCgpOwogICAgIAogICAg
IGlmIChub2RlKSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogciA9IG5vZGUtPnJlbmRlcmVyKCk7
CisgICAgICAgIGF1dG8gciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgICAgIGlmIChyICYmICFy
LT5pc0xpc3RCb3goKSAmJiByLT5lbmNsb3NpbmdCb3goKS0+bG9naWNhbFNjcm9sbChkaXJlY3Rp
b24sIGdyYW51bGFyaXR5KSkgewogICAgICAgICAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNl
cigpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMTc2LDcgKzExNzYsNyBAQCBGcmFt
ZSogRXZlbnRIYW5kbGVyOjpzdWJmcmFtZUZvclRhcmdldE5vZGUoTm9kZSogbm9kZSkKICAgICBp
ZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVy
KCk7CiAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCiAgICAgICAg
IHJldHVybiAwOwogCkBAIC0xMjkwLDcgKzEyOTAsNyBAQCBPcHRpb25hbEN1cnNvciBFdmVudEhh
bmRsZXI6OnNlbGVjdEN1cnNvcihjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIGJvb2wgc2hp
ZgogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIE5vQ3Vyc29yQ2hhbmdlOwogCi0gICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5k
ZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVy
ZXIgPyByZW5kZXJlci0+c3R5bGUoKSA6IDA7CiAgICAgYm9vbCBob3Jpem9udGFsVGV4dCA9ICFz
dHlsZSB8fCBzdHlsZS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsKICAgICBjb25zdCBDdXJz
b3ImIGlCZWFtID0gaG9yaXpvbnRhbFRleHQgPyBpQmVhbUN1cnNvcigpIDogdmVydGljYWxUZXh0
Q3Vyc29yKCk7CkBAIC0xNjcyLDcgKzE2NzIsNyBAQCBzdGF0aWMgUmVuZGVyTGF5ZXIqIGxheWVy
Rm9yTm9kZShOb2RlKiBub2RlKQogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBhdXRv
IHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm4gMDsKIApAQCAtMjQ1NCwxMCArMjQ1NCw5IEBAIEV2ZW50SGFuZGxlcjo6RG9taW5h
bnRTY3JvbGxHZXN0dXJlRGlyZWN0aW9uIEV2ZW50SGFuZGxlcjo6ZG9taW5hbnRTY3JvbGxHZXN0
dXJlCiAKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYgZSkKIHsKLSAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS5kb2N1bWVudCgp
OworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKIAotICAgIFJl
bmRlck9iamVjdCogZG9jUmVuZGVyZXIgPSBkb2MtPnJlbmRlclZpZXcoKTsKLSAgICBpZiAoIWRv
Y1JlbmRlcmVyKQorICAgIGlmICghZG9jdW1lbnQtPnJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RvcihtX2ZyYW1l
LnZpZXcoKSk7CkBAIC0yNDcyLDcgKzI0NzEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxl
V2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAKICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpE
aXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZQb2ludCk7
Ci0gICAgZG9jLT5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0KTsKKyAgICBk
b2N1bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAKICAgICBi
b29sIHVzZUxhdGNoZWRXaGVlbEV2ZW50RWxlbWVudCA9IGUudXNlTGF0Y2hlZEV2ZW50RWxlbWVu
dCgpOwogCkBAIC0yODg3LDcgKzI4ODYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6c2VuZFNjcm9s
bEV2ZW50VG9WaWV3KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbgogCiB2
b2lkIEV2ZW50SGFuZGxlcjo6Y2xlYXJHZXN0dXJlU2Nyb2xsTm9kZXMoKQogewotICAgIG1fc2Ny
b2xsR2VzdHVyZUhhbmRsaW5nTm9kZSA9IDA7CisgICAgbV9zY3JvbGxHZXN0dXJlSGFuZGxpbmdO
b2RlID0gbnVsbHB0cjsKICAgICBtX3ByZXZpb3VzR2VzdHVyZVNjcm9sbGVkRWxlbWVudCA9IG51
bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCmluZGV4IGQ1ODA2NTZjZmE4
Yjg3NTgwNDg1NjU0MzYxYWJhYTJkNjNlZDcyZDIuLjZlOTgwNTBlZDc1MzkyN2EwMTAxYjA1NzQy
MjEyZDZiZDc0NDliNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtNzEsNiAr
NzEsNyBAQCBjbGFzcyBPcHRpb25hbEN1cnNvcjsKIGNsYXNzIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDsKIGNsYXNzIFBsYXRmb3JtVG91Y2hFdmVudDsKIGNsYXNzIFBsYXRmb3JtV2hlZWxFdmVudDsK
K2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFJlbmRlck9i
amVjdDsKIGNsYXNzIFJlbmRlcldpZGdldDsKQEAgLTExNywxMSArMTE4LDExIEBAIHB1YmxpYzoK
ICNpZiBFTkFCTEUoUEFOX1NDUk9MTElORykKICAgICB2b2lkIGRpZFBhblNjcm9sbFN0YXJ0KCk7
CiAgICAgdm9pZCBkaWRQYW5TY3JvbGxTdG9wKCk7Ci0gICAgdm9pZCBzdGFydFBhblNjcm9sbGlu
ZyhSZW5kZXJPYmplY3QqKTsKKyAgICB2b2lkIHN0YXJ0UGFuU2Nyb2xsaW5nKFJlbmRlckVsZW1l
bnQqKTsKICNlbmRpZgogCiAgICAgdm9pZCBzdG9wQXV0b3Njcm9sbFRpbWVyKGJvb2wgcmVuZGVy
ZXJJc0JlaW5nRGVzdHJveWVkID0gZmFsc2UpOwotICAgIFJlbmRlck9iamVjdCogYXV0b3Njcm9s
bFJlbmRlcmVyKCkgY29uc3Q7CisgICAgUmVuZGVyRWxlbWVudCogYXV0b3Njcm9sbFJlbmRlcmVy
KCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVBdXRvc2Nyb2xsUmVuZGVyZXIoKTsKICAgICBib29s
IGF1dG9zY3JvbGxJblByb2dyZXNzKCkgY29uc3Q7CiAgICAgYm9vbCBtb3VzZURvd25XYXNJblN1
YmZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb3VzZURvd25XYXNJblN1YmZyYW1lOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNzEzNmE2NWFkNDBhMmE3ODc0
ZmViMmU0M2NiNmFiYzY0ZmI1YzVmOC4uMDEyM2Y3NWJhNmQ5OTNiOGY1Zjg4Yjk3NzE5MWRiMWI2
ODg0Y2Q0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtNTIs
NyArNTIsNiBAQAogI2luY2x1ZGUgIk5vZGVSZW5kZXJpbmdUcmF2ZXJzYWwuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKLSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJXaWRnZXQuaCIKICNpbmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGY0YWI2MGM5NGYz
ODBmNTk4YzYyNmM3YzNmMGNhNDM3NzVmN2ZlMDQuLjIxMDExYmFlY2FlNjllYjU1Nzc1ZjUxYTgx
ZGQzMjMyNTk0NTE0NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC01NzEsNyArNTcxLDcgQEAg
UmVuZGVyV2lkZ2V0KiBGcmFtZTo6b3duZXJSZW5kZXJlcigpIGNvbnN0CiAgICAgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX293bmVyRWxlbWVudDsKICAgICBpZiAoIW93
bmVyRWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmplY3Qg
PSBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCk7CisgICAgYXV0byBvYmplY3QgPSBvd25lckVsZW1l
bnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiAwOwogICAg
IC8vIEZJWE1FOiBJZiA8b2JqZWN0PiBpcyBldmVyIGZpeGVkIHRvIGRpc2Fzc29jaWF0ZSBpdHNl
bGYgZnJvbSBmcmFtZXMKQEAgLTY2NCw3ICs2NjQsNyBAQCBWaXNpYmxlUG9zaXRpb24gRnJhbWU6
OnZpc2libGVQb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50JiBmcmFtZVBvaW50KQogICAg
IE5vZGUqIG5vZGUgPSByZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCk7CiAgICAgaWYgKCFub2Rl
KQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3Np
dGlvbigpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zID0gcmVuZGVyZXItPnBvc2l0
aW9uRm9yUG9pbnQocmVzdWx0LmxvY2FsUG9pbnQoKSk7CkBAIC0xMDAxLDcgKzEwMDEsNyBAQCBz
dHJ1Y3QgU2NvcGVkRnJhbWVQYWludGluZ1N0YXRlIHsKIERyYWdJbWFnZVJlZiBGcmFtZTo6bm9k
ZUltYWdlKE5vZGUqIG5vZGUpCiB7CiAgICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCBTY29wZWRG
cmFtZVBhaW50aW5nU3RhdGUgc3RhdGUodGhpcywgbm9kZSk7CiAKQEAgLTEwMTIsMTAgKzEwMTIs
MTAgQEAgRHJhZ0ltYWdlUmVmIEZyYW1lOjpub2RlSW1hZ2UoTm9kZSogbm9kZSkKICAgICBtX2Rv
Yy0+dXBkYXRlTGF5b3V0KCk7CiAgICAgbV92aWV3LT5zZXROb2RlVG9EcmF3KG5vZGUpOyAvLyBF
bmFibGUgc3BlY2lhbCBzdWItdHJlZSBkcmF3aW5nIG1vZGUuCiAKLSAgICAvLyBEb2N1bWVudDo6
dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFsIFJlbmRlck9iamVj
dC4KLSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICAv
LyBEb2N1bWVudDo6dXBkYXRlTGF5b3V0IG1heSBoYXZlIGJsb3duIGF3YXkgdGhlIG9yaWdpbmFs
IHJlbmRlcmVyLgorICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogICAgIGlm
ICghcmVuZGVyZXIpCi0gICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBMYXlvdXRSZWN0IHRvcExldmVsUmVjdDsKICAgICBJbnRSZWN0IHBhaW50aW5nUmVjdCA9
IHBpeGVsU25hcHBlZEludFJlY3QocmVuZGVyZXItPnBhaW50aW5nUm9vdFJlY3QodG9wTGV2ZWxS
ZWN0KSk7CkBAIC0xMDI4LDcgKzEwMjgsNyBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6Om5vZGVJbWFn
ZShOb2RlKiBub2RlKQogCiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIoSW1hZ2VCdWZm
ZXI6OmNyZWF0ZShwYWludGluZ1JlY3Quc2l6ZSgpLCBkZXZpY2VTY2FsZUZhY3RvciwgQ29sb3JT
cGFjZURldmljZVJHQikpOwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgYnVmZmVyLT5jb250ZXh0KCktPnRyYW5zbGF0ZSgt
cGFpbnRpbmdSZWN0LngoKSwgLXBhaW50aW5nUmVjdC55KCkpOwogICAgIGJ1ZmZlci0+Y29udGV4
dCgpLT5jbGlwKEZsb2F0UmVjdCgwLCAwLCBwYWludGluZ1JlY3QubWF4WCgpLCBwYWludGluZ1Jl
Y3QubWF4WSgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjNzQ3YjBlM2Vk
MWQwNzgyZGUyYWEwY2RmMWQwNmIzNDlhOWE1MjIyLi43ZDYwZDAzY2I5YzdlM2FiZDZlODYwMWRk
MTcwMjRkMzFiOTc2N2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC01OTgsNyAr
NTk4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkanVzdFZpZXdTaXplKCkKICAgICBzZXRDb250ZW50
c1NpemUoc2l6ZSk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9y
dChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3JvbGxiYXJNb2RlJiB2
TW9kZSkKK3ZvaWQgRnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJFbGVt
ZW50KiBvLCBTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpCiB7CiAg
ICAgLy8gSGFuZGxlIHRoZSBvdmVyZmxvdzpoaWRkZW4vc2Nyb2xsIGNhc2UgZm9yIHRoZSBib2R5
L2h0bWwgZWxlbWVudHMuICBXaW5JRSB0cmVhdHMKICAgICAvLyBvdmVyZmxvdzpoaWRkZW4gYW5k
IG92ZXJmbG93OnNjcm9sbCBvbiA8Ym9keT4gYXMgYXBwbHlpbmcgdG8gdGhlIGRvY3VtZW50J3MK
QEAgLTY2NiwxMCArNjY2LDEwIEBAIHZvaWQgRnJhbWVWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3
cG9ydChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTCiB2b2lkIEZyYW1l
Vmlldzo6YXBwbHlQYWdpbmF0aW9uVG9WaWV3cG9ydCgpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwotICAgIE5vZGUqIGRvY3VtZW50RWxlbWVudCA9IGRv
Y3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICBSZW5kZXJPYmplY3QqIGRvY3VtZW50UmVu
ZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlcmVyKCkgOiAw
OwotICAgIFJlbmRlck9iamVjdCogZG9jdW1lbnRPckJvZHlSZW5kZXJlciA9IGRvY3VtZW50UmVu
ZGVyZXI7Ci0gICAgTm9kZSogYm9keSA9IGRvY3VtZW50LT5ib2R5KCk7CisgICAgYXV0byBkb2N1
bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgUmVuZGVyRWxl
bWVudCogZG9jdW1lbnRSZW5kZXJlciA9IGRvY3VtZW50RWxlbWVudCA/IGRvY3VtZW50RWxlbWVu
dC0+cmVuZGVyZXIoKSA6IG51bGxwdHI7CisgICAgUmVuZGVyRWxlbWVudCogZG9jdW1lbnRPckJv
ZHlSZW5kZXJlciA9IGRvY3VtZW50UmVuZGVyZXI7CisgICAgYXV0byBib2R5ID0gZG9jdW1lbnQt
PmJvZHkoKTsKICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIGlm
IChib2R5LT5oYXNUYWdOYW1lKGJvZHlUYWcpKQogICAgICAgICAgICAgZG9jdW1lbnRPckJvZHlS
ZW5kZXJlciA9IGRvY3VtZW50UmVuZGVyZXItPnN0eWxlKCktPm92ZXJmbG93WCgpID09IE9WSVNJ
QkxFICYmIGRvY3VtZW50RWxlbWVudC0+aGFzVGFnTmFtZShodG1sVGFnKSA/IGJvZHktPnJlbmRl
cmVyKCkgOiBkb2N1bWVudFJlbmRlcmVyOwpAQCAtNzE2LDkgKzcxNiw5IEBAIHZvaWQgRnJhbWVW
aWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBoTW9k
ZSwgU2Nyb2xsYmFyCiAgICAgCiAgICAgaWYgKCFtX2xheW91dFJvb3QpIHsKICAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwotICAgICAgICBOb2RlKiBkb2N1
bWVudEVsZW1lbnQgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgICAgIFJlbmRl
ck9iamVjdCogcm9vdFJlbmRlcmVyID0gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50
LT5yZW5kZXJlcigpIDogMDsKLSAgICAgICAgTm9kZSogYm9keSA9IGRvY3VtZW50LT5ib2R5KCk7
CisgICAgICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOworICAgICAgICBSZW5kZXJFbGVtZW50KiByb290UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1l
bnQgPyBkb2N1bWVudEVsZW1lbnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOworICAgICAgICBhdXRv
IGJvZHkgPSBkb2N1bWVudC0+Ym9keSgpOwogICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5k
ZXJlcigpKSB7CiAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykg
JiYgIWZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgewogICAgICAgICAgICAgICAgIHZNb2RlID0g
U2Nyb2xsYmFyQWx3YXlzT2ZmOwpAQCAtNzI2LDcgKzcyNiw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpj
YWxjdWxhdGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Ny
b2xsYmFyCiAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykp
IHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBjaGVjayB0aGUg
WCBvdmVyZmxvdywKICAgICAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGlsbGVnYWwgdG8gaGF2
ZSB2aXNpYmxlIGluIG9ubHkgb25lIGRpcmVjdGlvbi4KLSAgICAgICAgICAgICAgICBSZW5kZXJP
YmplY3QqIG8gPSByb290UmVuZGVyZXItPnN0eWxlKCktPm92ZXJmbG93WCgpID09IE9WSVNJQkxF
ICYmIGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShodG1sVGFnKSA/IGJv
ZHktPnJlbmRlcmVyKCkgOiByb290UmVuZGVyZXI7CisgICAgICAgICAgICAgICAgUmVuZGVyRWxl
bWVudCogbyA9IHJvb3RSZW5kZXJlci0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT1ZJU0lCTEUg
JiYgZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLT5oYXNUYWdOYW1lKGh0bWxUYWcpID8gYm9k
eS0+cmVuZGVyZXIoKSA6IHJvb3RSZW5kZXJlcjsKICAgICAgICAgICAgICAgICBhcHBseU92ZXJm
bG93VG9WaWV3cG9ydChvLCBoTW9kZSwgdk1vZGUpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKHJvb3RSZW5kZXJlcikKQEAgLTk4Niw3ICs5ODYsNyBAQCB2b2lkIEZyYW1lVmll
dzo6ZW50ZXJDb21wb3NpdGluZ01vZGUoKQogYm9vbCBGcmFtZVZpZXc6OmlzRW5jbG9zZWRJbkNv
bXBvc2l0aW5nTGF5ZXIoKSBjb25zdAogewogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKLSAgICBSZW5kZXJPYmplY3QqIGZyYW1lT3duZXJSZW5kZXJlciA9IGZyYW1lKCkub3duZXJS
ZW5kZXJlcigpOworICAgIGF1dG8gZnJhbWVPd25lclJlbmRlcmVyID0gZnJhbWUoKS5vd25lclJl
bmRlcmVyKCk7CiAgICAgaWYgKGZyYW1lT3duZXJSZW5kZXJlciAmJiBmcmFtZU93bmVyUmVuZGVy
ZXItPmNvbnRhaW5lckZvclJlcGFpbnQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTk5
NSw3ICs5OTUsNyBAQCBib29sIEZyYW1lVmlldzo6aXNFbmNsb3NlZEluQ29tcG9zaXRpbmdMYXll
cigpIGNvbnN0CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9Ci0gICAgCisKIGJvb2wgRnJh
bWVWaWV3OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKQogewogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKQEAgLTEzNzEsMTggKzEzNzEsMTggQEAgUmVu
ZGVyQm94KiBGcmFtZVZpZXc6OmVtYmVkZGVkQ29udGVudEJveCgpIGNvbnN0CiAjaWYgRU5BQkxF
KFNWRykKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwog
ICAgIGlmICghcmVuZGVyVmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkID0gcmVuZGVyVmlldy0+Zmly
c3RDaGlsZCgpOwogICAgIGlmICghZmlyc3RDaGlsZCB8fCAhZmlyc3RDaGlsZC0+aXNCb3goKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gQ3Vy
ZW50bHkgb25seSBlbWJlZGRlZCBTVkcgZG9jdW1lbnRzIHBhcnRpY2lwYXRlIGluIHRoZSBzaXpl
LW5lZ290aWF0aW9uIGxvZ2ljLgotICAgIGlmIChmaXJzdENoaWxkLT5pc1NWR1Jvb3QoKSkKKyAg
ICBpZiAodG9SZW5kZXJCb3goZmlyc3RDaGlsZCktPmlzU1ZHUm9vdCgpKQogICAgICAgICByZXR1
cm4gdG9SZW5kZXJCb3goZmlyc3RDaGlsZCk7CiAjZW5kaWYKIAotICAgIHJldHVybiAwOworICAg
IHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIEZyYW1lVmlldzo6YWRkRW1iZWRkZWRPYmplY3RU
b1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCYgZW1iZWRkZWRPYmplY3QpCkBAIC0xNDkxLDEy
ICsxNDkxLDEyIEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRDYW5ub3RCbGl0VG9XaW5kb3coKQogICAg
IHVwZGF0ZUNhbkJsaXRPblNjcm9sbFJlY3Vyc2l2ZWx5KCk7CiB9CiAKLXZvaWQgRnJhbWVWaWV3
OjphZGRTbG93UmVwYWludE9iamVjdChSZW5kZXJPYmplY3QqIG8pCit2b2lkIEZyYW1lVmlldzo6
YWRkU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCogbykKIHsKICAgICBib29sIGhhZFNs
b3dSZXBhaW50T2JqZWN0cyA9IGhhc1Nsb3dSZXBhaW50T2JqZWN0cygpOwogCiAgICAgaWYgKCFt
X3Nsb3dSZXBhaW50T2JqZWN0cykKLSAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMgPSBhZG9w
dFB0cihuZXcgUmVuZGVyT2JqZWN0U2V0KTsKKyAgICAgICAgbV9zbG93UmVwYWludE9iamVjdHMg
PSBhZG9wdFB0cihuZXcgSGFzaFNldDxSZW5kZXJFbGVtZW50Kj4pOwogCiAgICAgbV9zbG93UmVw
YWludE9iamVjdHMtPmFkZChvKTsKIApAQCAtMTUxMCw3ICsxNTEwLDcgQEAgdm9pZCBGcmFtZVZp
ZXc6OmFkZFNsb3dSZXBhaW50T2JqZWN0KFJlbmRlck9iamVjdCogbykKICAgICB9CiB9CiAKLXZv
aWQgRnJhbWVWaWV3OjpyZW1vdmVTbG93UmVwYWludE9iamVjdChSZW5kZXJPYmplY3QqIG8pCit2
b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3QoUmVuZGVyRWxlbWVudCogbykK
IHsKICAgICBpZiAoIW1fc2xvd1JlcGFpbnRPYmplY3RzKQogICAgICAgICByZXR1cm47CkBAIC0x
NTI3LDcgKzE1MjcsNyBAQCB2b2lkIEZyYW1lVmlldzo6cmVtb3ZlU2xvd1JlcGFpbnRPYmplY3Qo
UmVuZGVyT2JqZWN0KiBvKQogICAgIH0KIH0KIAotdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCit2b2lkIEZyYW1lVmlldzo6
YWRkVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJFbGVtZW50KiBvYmplY3QpCiB7CiAg
ICAgaWYgKCFtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKQogICAgICAgICBtX3ZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzID0gYWRvcHRQdHIobmV3IFZpZXdwb3J0Q29uc3RyYWluZWRPYmpl
Y3RTZXQpOwpAQCAtMTU0NCw3ICsxNTQ0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3QoUmVuZGVyT2JqZWN0KiBvYmplY3QpCiAgICAgfQogfQogCi12b2lk
IEZyYW1lVmlldzo6cmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdChSZW5kZXJPYmplY3Qq
IG9iamVjdCkKK3ZvaWQgRnJhbWVWaWV3OjpyZW1vdmVWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0
KFJlbmRlckVsZW1lbnQqIG9iamVjdCkKIHsKICAgICBpZiAobV92aWV3cG9ydENvbnN0cmFpbmVk
T2JqZWN0cyAmJiBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5yZW1vdmUob2JqZWN0KSkg
ewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpKSB7CkBAIC0xNjQxLDE2
ICsxNjQxLDE1IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxDb250ZW50c0Zhc3RQYXRoKGNvbnN0
IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0CiAKICAgICAvLyBHZXQgdGhlIHJl
Y3RzIG9mIHRoZSBmaXhlZCBvYmplY3RzIHZpc2libGUgaW4gdGhlIHJlY3RUb1Njcm9sbAogICAg
IFJlZ2lvbiByZWdpb25Ub1VwZGF0ZTsKLSAgICBWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0U2V0
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzLT5lbmQo
KTsKLSAgICBmb3IgKFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAqaXQ7CisgICAgZm9yIChh
dXRvIGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YmVnaW4oKSwgZW5kID0gbV92
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9ICppdDsKICAgICAgICAgaWYgKCFyZW5kZXJl
ci0+c3R5bGUoKS0+aGFzVmlld3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uKCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgICAgIGlm
IChyZW5kZXJlci0+aXNDb21wb3NpdGVkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICNlbmRp
ZgotICAgIAorCiAgICAgICAgIC8vIEZpeGVkIGl0ZW1zIHNob3VsZCBhbHdheXMgaGF2ZSBsYXll
cnMuCiAgICAgICAgIEFTU0VSVChyZW5kZXJlci0+aGFzTGF5ZXIoKSk7CiAgICAgICAgIFJlbmRl
ckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigp
OwpAQCAtMTc0MiwxMSArMTc0MSw4IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXBhaW50U2xvd1JlcGFp
bnRPYmplY3RzKCkKIAogICAgIC8vIFJlbmRlcmVycyB3aXRoIGZpeGVkIGJhY2tncm91bmRzIG1h
eSBiZSBpbiBjb21wb3NpdGluZyBsYXllcnMsIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseQogICAg
IC8vIHJlcGFpbnQgdGhlbSBhZnRlciBzY3JvbGxpbmcuCi0gICAgUmVuZGVyT2JqZWN0U2V0Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+ZW5kKCk7Ci0gICAgZm9y
IChSZW5kZXJPYmplY3RTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zbG93UmVwYWludE9iamVj
dHMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gKml0OwotICAgICAgICByZW5kZXJlci0+cmVwYWludCgpOwotICAgIH0KKyAgICBm
b3IgKGF1dG8gaXQgPSBtX3Nsb3dSZXBhaW50T2JqZWN0cy0+YmVnaW4oKSwgZW5kID0gbV9zbG93
UmVwYWludE9iamVjdHMtPmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgICgqaXQpLT5y
ZXBhaW50KCk7CiB9CiAKIC8vIE5vdGUgdGhhdCB0aGlzIGdldHMgY2FsbGVkIGF0IHBhaW50aW5n
IHRpbWUuCkBAIC0xOTQ1LDExICsxOTQxLDggQEAgdm9pZCBGcmFtZVZpZXc6OnNldFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RzTmVlZExheW91dCgpCiAgICAgaWYgKCFoYXNWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBWaWV3cG9ydENvbnN0cmFp
bmVkT2JqZWN0U2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3ZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzLT5lbmQoKTsKLSAgICBmb3IgKFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAqaXQ7
Ci0gICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCh0cnVlKTsKLSAgICB9CisgICAgZm9y
IChhdXRvIGl0ID0gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+YmVnaW4oKSwgZW5kID0g
bV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy0+ZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAg
ICAgICAgKCppdCktPnNldE5lZWRzTGF5b3V0KHRydWUpOwogfQogCiB2b2lkIEZyYW1lVmlldzo6
c2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhUGxhdGZvcm1XaWRnZXQoKQpAQCAtMjk3Nyw4ICsyOTcw
LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZU92ZXJmbG93U3RhdHVzKGJvb2wgaG9yaXpvbnRh
bE92ZXJmbG93LCBib29sIHZlcnRpY2FsT3ZlcmYKICAgICAgICAgbV92ZXJ0aWNhbE92ZXJmbG93
ID0gdmVydGljYWxPdmVyZmxvdzsKICAgICAgICAgCiAgICAgICAgIHNjaGVkdWxlRXZlbnQoT3Zl
cmZsb3dFdmVudDo6Y3JlYXRlKGhvcml6b250YWxPdmVyZmxvd0NoYW5nZWQsIGhvcml6b250YWxP
dmVyZmxvdywKLSAgICAgICAgICAgIHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkLCB2ZXJ0aWNhbE92
ZXJmbG93KSwKLSAgICAgICAgICAgIG1fdmlld3BvcnRSZW5kZXJlci0+bm9kZSgpKTsKKyAgICAg
ICAgICAgIHZlcnRpY2FsT3ZlcmZsb3dDaGFuZ2VkLCB2ZXJ0aWNhbE92ZXJmbG93KSwgbV92aWV3
cG9ydFJlbmRlcmVyLT5lbGVtZW50KCkpOwogICAgIH0KICAgICAKIH0KQEAgLTMyMTMsNyArMzIw
NSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVBbm5vdGF0ZWRSZWdpb25zKCkKIAogdm9pZCBG
cmFtZVZpZXc6OnVwZGF0ZVNjcm9sbENvcm5lcigpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IDA7CisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSAwOwogICAgIFJlZlB0cjxS
ZW5kZXJTdHlsZT4gY29ybmVyU3R5bGU7CiAgICAgSW50UmVjdCBjb3JuZXJSZWN0ID0gc2Nyb2xs
Q29ybmVyUmVjdCgpOwogICAgIApAQCAtMzUxOCw3ICszNTEwLDcgQEAgdm9pZCBGcmFtZVZpZXc6
OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBwLCBjb25zdCBJbnRSZWN0JiByZWN0KQog
ICAgIFJlbmRlckxheWVyKiByb290TGF5ZXIgPSByZW5kZXJWaWV3LT5sYXllcigpOwogCiAjaWZu
ZGVmIE5ERUJVRwotICAgIFJlbmRlck9iamVjdDo6U2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2Nv
cGUgZm9yYmlkU2V0TmVlZHNMYXlvdXQoJnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CisgICAgUmVu
ZGVyRWxlbWVudDo6U2V0TGF5b3V0TmVlZGVkRm9yYmlkZGVuU2NvcGUgZm9yYmlkU2V0TmVlZHNM
YXlvdXQoJnJvb3RMYXllci0+cmVuZGVyZXIoKSk7CiAjZW5kaWYKIAogICAgIHJvb3RMYXllci0+
cGFpbnQocCwgcmVjdCwgbV9wYWludEJlaGF2aW9yLCBlbHRSZW5kZXJlcik7CkBAIC0zODAxLDcg
KzM3OTMsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0UGFnZUhlaWdodERlcHJlY2F0ZWQoZmxv
YXQgKm5ld0JvdHRvbSwgZmxvYXQgb2xkVG9wLCBmbG9hdAogICAgIHJlbmRlclZpZXctPnNldFBy
aW50UmVjdChJbnRSZWN0KCkpOwogfQogCi1JbnRSZWN0IEZyYW1lVmlldzo6Y29udmVydEZyb21S
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRSZWN0JiByZW5k
ZXJlclJlY3QpIGNvbnN0CitJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVydEZyb21SZW5kZXJlcihj
b25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgSW50UmVjdCYgcmVuZGVyZXJSZWN0
KSBjb25zdAogewogICAgIEludFJlY3QgcmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QoZW5jbG9z
aW5nTGF5b3V0UmVjdChyZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QocmVu
ZGVyZXJSZWN0KSkuYm91bmRpbmdCb3goKSkpOwogCkBAIC0zODEyLDcgKzM4MDQsNyBAQCBJbnRS
ZWN0IEZyYW1lVmlldzo6Y29udmVydEZyb21SZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyLCBjb25zdCBJbnRSZQogICAgIHJldHVybiByZWN0OwogfQogCi1JbnRSZWN0IEZyYW1l
Vmlldzo6Y29udmVydFRvUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29u
c3QgSW50UmVjdCYgdmlld1JlY3QpIGNvbnN0CitJbnRSZWN0IEZyYW1lVmlldzo6Y29udmVydFRv
UmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFJlY3QmIHZp
ZXdSZWN0KSBjb25zdAogewogICAgIEludFJlY3QgcmVjdCA9IHZpZXdSZWN0OwogICAgIApAQCAt
MzgyNiw3ICszODE4LDcgQEAgSW50UmVjdCBGcmFtZVZpZXc6OmNvbnZlcnRUb1JlbmRlcmVyKGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFJlY3QKICAgICByZXR1cm4gcmVj
dDsKIH0KIAotSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFBvaW50JiByZW5kZXJlclBvaW50KSBjb25z
dAorSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRQb2ludCYgcmVuZGVyZXJQb2ludCkgY29uc3QKIHsK
ICAgICBJbnRQb2ludCBwb2ludCA9IHJvdW5kZWRJbnRQb2ludChyZW5kZXJlci0+bG9jYWxUb0Fi
c29sdXRlKHJlbmRlcmVyUG9pbnQsIFVzZVRyYW5zZm9ybXMpKTsKIApAQCAtMzgzNiw3ICszODI4
LDcgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFAKICAgICByZXR1cm4gcG9pbnQ7CiB9CiAKLUlu
dFBvaW50IEZyYW1lVmlldzo6Y29udmVydFRvUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlciwgY29uc3QgSW50UG9pbnQmIHZpZXdQb2ludCkgY29uc3QKK0ludFBvaW50IEZyYW1l
Vmlldzo6Y29udmVydFRvUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNv
bnN0IEludFBvaW50JiB2aWV3UG9pbnQpIGNvbnN0CiB7CiAgICAgSW50UG9pbnQgcG9pbnQgPSB2
aWV3UG9pbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDg2YzU4Y2RmOTdmMjM1MzUz
MDkyNzAzODhhYjJiMDdkOWRhNjFmNTAuLjdjMzE4MjRlMGQ5ODM0N2JmYTNiNDQyOWFlZGVjYWY4
M2E2MWM3YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNDksNiArNDksNyBAQCBjbGFz
cyBVUkw7CiBjbGFzcyBOb2RlOwogY2xhc3MgUGFnZTsKIGNsYXNzIFJlbmRlckJveDsKK2NsYXNz
IFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJFbWJlZGRlZE9iamVjdDsKIGNsYXNzIFJlbmRl
ckxheWVyOwogY2xhc3MgUmVuZGVyT2JqZWN0OwpAQCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzSW5MYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2luTGF5b3V0OyB9CiAKICAg
ICBSZW5kZXJPYmplY3QqIGxheW91dFJvb3QoYm9vbCBvbmx5RHVyaW5nTGF5b3V0ID0gZmFsc2Up
IGNvbnN0OwotICAgIHZvaWQgY2xlYXJMYXlvdXRSb290KCkgeyBtX2xheW91dFJvb3QgPSAwOyB9
CisgICAgdm9pZCBjbGVhckxheW91dFJvb3QoKSB7IG1fbGF5b3V0Um9vdCA9IG51bGxwdHI7IH0K
ICAgICBpbnQgbGF5b3V0Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2xheW91dENvdW50OyB9CiAK
ICAgICBib29sIG5lZWRzTGF5b3V0KCkgY29uc3Q7CkBAIC0yMTcsMTUgKzIxOCwxNSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc092ZXJsYXBwZWRJbmNsdWRpbmdBbmNlc3RvcnMoKSBjb25zdDsKICAg
ICB2b2lkIHNldENvbnRlbnRJc09wYXF1ZShib29sKTsKIAotICAgIHZvaWQgYWRkU2xvd1JlcGFp
bnRPYmplY3QoUmVuZGVyT2JqZWN0Kik7Ci0gICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9iamVj
dChSZW5kZXJPYmplY3QqKTsKLSAgICBib29sIGhhc1Nsb3dSZXBhaW50T2JqZWN0KFJlbmRlck9i
amVjdCogbykgY29uc3QgeyByZXR1cm4gbV9zbG93UmVwYWludE9iamVjdHMgJiYgbV9zbG93UmVw
YWludE9iamVjdHMtPmNvbnRhaW5zKG8pOyB9CisgICAgdm9pZCBhZGRTbG93UmVwYWludE9iamVj
dChSZW5kZXJFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVTbG93UmVwYWludE9iamVjdChSZW5k
ZXJFbGVtZW50Kik7CisgICAgYm9vbCBoYXNTbG93UmVwYWludE9iamVjdChSZW5kZXJFbGVtZW50
KiBvKSBjb25zdCB7IHJldHVybiBtX3Nsb3dSZXBhaW50T2JqZWN0cyAmJiBtX3Nsb3dSZXBhaW50
T2JqZWN0cy0+Y29udGFpbnMobyk7IH0KICAgICBib29sIGhhc1Nsb3dSZXBhaW50T2JqZWN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fc2xvd1JlcGFpbnRPYmplY3RzICYmIG1fc2xvd1JlcGFpbnRPYmpl
Y3RzLT5zaXplKCk7IH0KIAogICAgIC8vIEluY2x1ZGVzIGZpeGVkLSBhbmQgc3RpY2t5LXBvc2l0
aW9uIG9iamVjdHMuCi0gICAgdHlwZWRlZiBIYXNoU2V0PFJlbmRlck9iamVjdCo+IFZpZXdwb3J0
Q29uc3RyYWluZWRPYmplY3RTZXQ7Ci0gICAgdm9pZCBhZGRWaWV3cG9ydENvbnN0cmFpbmVkT2Jq
ZWN0KFJlbmRlck9iamVjdCopOwotICAgIHZvaWQgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZE9i
amVjdChSZW5kZXJPYmplY3QqKTsKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVuZGVyRWxlbWVudCo+
IFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RTZXQ7CisgICAgdm9pZCBhZGRWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0KFJlbmRlckVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZVZpZXdwb3J0Q29u
c3RyYWluZWRPYmplY3QoUmVuZGVyRWxlbWVudCopOwogICAgIGNvbnN0IFZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RTZXQqIHZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKCkgY29uc3QgeyByZXR1
cm4gbV92aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cy5nZXQoKTsgfQogICAgIGJvb2wgaGFzVmll
d3BvcnRDb25zdHJhaW5lZE9iamVjdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0Q29uc3Ry
YWluZWRPYmplY3RzICYmIG1fdmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHMtPnNpemUoKSA+IDA7
IH0KIApAQCAtMzMxLDEwICszMzIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2Nyb2xsRWxlbWVu
dFRvUmVjdChFbGVtZW50KiwgY29uc3QgSW50UmVjdCYpOwogCiAgICAgLy8gTWV0aG9kcyB0byBj
b252ZXJ0IHBvaW50cyBhbmQgcmVjdHMgYmV0d2VlbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiB0
aGUgcmVuZGVyZXIsIGFuZCB0aGlzIHZpZXcuCi0gICAgSW50UmVjdCBjb252ZXJ0RnJvbVJlbmRl
cmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IEludFJlY3QmKSBjb25zdDsKLSAgICBJbnRS
ZWN0IGNvbnZlcnRUb1JlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IEludFJlY3Qm
KSBjb25zdDsKLSAgICBJbnRQb2ludCBjb252ZXJ0RnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCosIGNvbnN0IEludFBvaW50JikgY29uc3Q7Ci0gICAgSW50UG9pbnQgY29udmVydFRvUmVu
ZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKKyAgICBJ
bnRSZWN0IGNvbnZlcnRGcm9tUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNvbnN0IElu
dFJlY3QmKSBjb25zdDsKKyAgICBJbnRSZWN0IGNvbnZlcnRUb1JlbmRlcmVyKGNvbnN0IFJlbmRl
ckVsZW1lbnQqLCBjb25zdCBJbnRSZWN0JikgY29uc3Q7CisgICAgSW50UG9pbnQgY29udmVydEZy
b21SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsK
KyAgICBJbnRQb2ludCBjb252ZXJ0VG9SZW5kZXJlcihjb25zdCBSZW5kZXJFbGVtZW50KiwgY29u
c3QgSW50UG9pbnQmKSBjb25zdDsKIAogICAgIGJvb2wgaXNGcmFtZVZpZXdTY3JvbGxDb3JuZXIo
UmVuZGVyU2Nyb2xsYmFyUGFydCogc2Nyb2xsQ29ybmVyKSBjb25zdCB7IHJldHVybiBtX3Njcm9s
bENvcm5lciA9PSBzY3JvbGxDb3JuZXI7IH0KIApAQCAtNDU5LDcgKzQ2MCw3IEBAIHByaXZhdGU6
CiAKICAgICBib29sIHNob3VsZFVwZGF0ZUZpeGVkRWxlbWVudHNBZnRlclNjcm9sbGluZygpOwog
Ci0gICAgdm9pZCBhcHBseU92ZXJmbG93VG9WaWV3cG9ydChSZW5kZXJPYmplY3QqLCBTY3JvbGxi
YXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyTW9kZSYgdk1vZGUpOworICAgIHZvaWQgYXBwbHlPdmVy
Zmxvd1RvVmlld3BvcnQoUmVuZGVyRWxlbWVudCosIFNjcm9sbGJhck1vZGUmIGhNb2RlLCBTY3Jv
bGxiYXJNb2RlJiB2TW9kZSk7CiAgICAgdm9pZCBhcHBseVBhZ2luYXRpb25Ub1ZpZXdwb3J0KCk7
CiAKICAgICB2b2lkIHVwZGF0ZU92ZXJmbG93U3RhdHVzKGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93
LCBib29sIHZlcnRpY2FsT3ZlcmZsb3cpOwpAQCAtNTUxLDggKzU1Miw3IEBAIHByaXZhdGU6CiAg
ICAgT3duUHRyPExpc3RIYXNoU2V0PFJlbmRlckVtYmVkZGVkT2JqZWN0Kj4+IG1fZW1iZWRkZWRP
YmplY3RzVG9VcGRhdGU7CiAgICAgY29uc3QgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwogCi0gICAg
dHlwZWRlZiBIYXNoU2V0PFJlbmRlck9iamVjdCo+IFJlbmRlck9iamVjdFNldDsKLSAgICBPd25Q
dHI8UmVuZGVyT2JqZWN0U2V0PiBtX3Nsb3dSZXBhaW50T2JqZWN0czsKKyAgICBPd25QdHI8SGFz
aFNldDxSZW5kZXJFbGVtZW50Kj4+IG1fc2xvd1JlcGFpbnRPYmplY3RzOwogCiAgICAgYm9vbCBt
X25lZWRzRnVsbFJlcGFpbnQ7CiAgICAgCkBAIC01ODksNyArNTg5LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fb3ZlcmZsb3dTdGF0dXNEaXJ0eTsKICAgICBib29sIG1faG9yaXpvbnRhbE92ZXJm
bG93OwogICAgIGJvb2wgbV92ZXJ0aWNhbE92ZXJmbG93OyAgICAKLSAgICBSZW5kZXJPYmplY3Qq
IG1fdmlld3BvcnRSZW5kZXJlcjsKKyAgICBSZW5kZXJFbGVtZW50KiBtX3ZpZXdwb3J0UmVuZGVy
ZXI7CiAKICAgICBQYWdpbmF0aW9uIG1fcGFnaW5hdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2VTZXJpYWxpemVyLmNwcAppbmRleCA5YTQ4Zjg1OGJlZmMxMmVkNjRlZTkwMzY4M2FkOWVhYThk
M2MyNWM5Li42YjFkOWNiNmM1ZjQ1MmFjYzAzZjg2YjNmNWJhNWM3YWUxZWQzZjE0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQg
UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCogc3R5
bGVTaGVldCwgY29uc3QgVVJMCiAgICAgfQogfQogCi12b2lkIFBhZ2VTZXJpYWxpemVyOjphZGRJ
bWFnZVRvUmVzb3VyY2VzKENhY2hlZEltYWdlKiBpbWFnZSwgUmVuZGVyT2JqZWN0KiBpbWFnZVJl
bmRlcmVyLCBjb25zdCBVUkwmIHVybCkKK3ZvaWQgUGFnZVNlcmlhbGl6ZXI6OmFkZEltYWdlVG9S
ZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqIGltYWdlLCBSZW5kZXJFbGVtZW50KiBpbWFnZVJlbmRlcmVy
LCBjb25zdCBVUkwmIHVybCkKIHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgbV9yZXNvdXJj
ZVVSTHMuY29udGFpbnModXJsKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
U2VyaWFsaXplci5oCmluZGV4IDE3MzFkMzllMGIwMDczNWY4MGMyNGI2NDI5ZjE0MWY0YWI5ZmY2
NjUuLjI3ODk4ZWE2ZWFlYTQyZjFjZDNjZTQ4NjU0OWJmMjNkN2Y1ZWJlYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgQ1NTU3R5bGVT
aGVldDsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwotY2xhc3Mg
UmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFN0eWxlUHJvcGVydHlT
ZXQ7CiBjbGFzcyBTdHlsZVJ1bGU7CiAKQEAgLTc3LDcgKzc3LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBJdCBhbHNvIGFkZHMgYW55IHJlc291cmNlcyBpbmNsdWRlZCBpbiB0aGF0IHN0eWxlc2hlZXQg
KGluY2x1ZGluZyBhbnkgaW1wb3J0ZWQgc3R5bGVzaGVldHMgYW5kIHRoZWlyIG93biByZXNvdXJj
ZXMpLgogICAgIHZvaWQgc2VyaWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiwgY29u
c3QgVVJMJik7CiAKLSAgICB2b2lkIGFkZEltYWdlVG9SZXNvdXJjZXMoQ2FjaGVkSW1hZ2UqLCBS
ZW5kZXJPYmplY3QqLCBjb25zdCBVUkwmKTsKKyAgICB2b2lkIGFkZEltYWdlVG9SZXNvdXJjZXMo
Q2FjaGVkSW1hZ2UqLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgVVJMJik7CiAgICAgdm9pZCByZXRy
aWV2ZVJlc291cmNlc0ZvclByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCosIERvY3Vt
ZW50Kik7CiAgICAgdm9pZCByZXRyaWV2ZVJlc291cmNlc0ZvclJ1bGUoU3R5bGVSdWxlKiwgRG9j
dW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcAppbmRleCBiYTcwYjZiNWE0OGViY2UyNDQwNjU0NDUyN2UyMDJiNDA3ZWFjZTZjLi4z
N2NjYWY1ODA5OGYyNjBhMjliOGIwMTRiZjEzNmI0MTMzNTU0MjQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtNzAsNyArNzAsNyBA
QCBzdGF0aWMgaW5saW5lIGRvdWJsZSBzb2x2ZVN0ZXBzRnVuY3Rpb24oaW50IG51bVN0ZXBzLCBi
b29sIHN0ZXBBdFN0YXJ0LCBkb3VibGUgdAogICAgIHJldHVybiBmbG9vcihudW1TdGVwcyAqIHQp
IC8gbnVtU3RlcHM7CiB9CiAKLUFuaW1hdGlvbkJhc2U6OkFuaW1hdGlvbkJhc2UoY29uc3QgQW5p
bWF0aW9uJiB0cmFuc2l0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBDb21wb3NpdGVBbmlt
YXRpb24qIGNvbXBBbmltKQorQW5pbWF0aW9uQmFzZTo6QW5pbWF0aW9uQmFzZShjb25zdCBBbmlt
YXRpb24mIHRyYW5zaXRpb24sIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBDb21wb3NpdGVBbmlt
YXRpb24qIGNvbXBBbmltKQogICAgIDogbV9hbmltU3RhdGUoQW5pbWF0aW9uU3RhdGVOZXcpCiAg
ICAgLCBtX2lzQWNjZWxlcmF0ZWQoZmFsc2UpCiAgICAgLCBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlz
dFZhbGlkKGZhbHNlKQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBk
YXRlU3RhdGVNYWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAKICAg
ICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGEgcmVuZGVyIHNvIHdlIGNhbiBzdGFydCB0aGUgYW5p
bWF0aW9uCiAgICAgICAgICAgICAgICAgaWYgKG1fb2JqZWN0KQotICAgICAgICAgICAgICAgICAg
ICBtX2NvbXBBbmltLT5hbmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3Bh
dGNoKG1fb2JqZWN0LT5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICBtX2NvbXBBbmltLT5h
bmltYXRpb25Db250cm9sbGVyKCktPmFkZE5vZGVDaGFuZ2VUb0Rpc3BhdGNoKG1fb2JqZWN0LT5l
bGVtZW50KCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBU1NFUlQo
IXBhdXNlZCgpKTsKICAgICAgICAgICAgICAgICAvLyBXZSdyZSB3YWl0aW5nIGZvciB0aGUgc3Rh
cnQgdGltZXIgdG8gZmlyZSBhbmQgd2UgZ290IGEgcGF1c2UuIENhbmNlbCB0aGUgdGltZXIsIHBh
dXNlIGFuZCB3YWl0CkBAIC0yODgsNyArMjg4LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjp1cGRh
dGVTdGF0ZU1hY2hpbmUoQW5pbVN0YXRlSW5wdXQgaW5wdXQsIGRvdWJsZSBwYXJhbSkKIAogICAg
ICAgICAgICAgICAgIC8vIERpc3BhdGNoIHVwZGF0ZVN0eWxlSWZOZWVkZWQgc28gd2UgY2FuIHN0
YXJ0IHRoZSBhbmltYXRpb24KICAgICAgICAgICAgICAgICBpZiAobV9vYmplY3QpCi0gICAgICAg
ICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNo
YW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1f
Y29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2go
bV9vYmplY3QtPmVsZW1lbnQoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIC8vIFdlIGFyZSBwYXVzaW5nIHdoaWxlIHdhaXRpbmcgZm9yIGEgc3RhcnQgcmVzcG9uc2Uu
IENhbmNlbCB0aGUgYW5pbWF0aW9uIGFuZCB3YWl0LiBXaGVuIAogICAgICAgICAgICAgICAgIC8v
IHdlIHVucGF1c2UsIHdlIHdpbGwgYWN0IGFzIHRob3VnaCB0aGUgc3RhcnQgdGltZXIganVzdCBm
aXJlZApAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6dXBkYXRlU3RhdGVN
YWNoaW5lKEFuaW1TdGF0ZUlucHV0IGlucHV0LCBkb3VibGUgcGFyYW0pCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXN1bWVPdmVycmlkZGVuQW5pbWF0aW9ucygpOwogCiAgICAgICAgICAgICAg
ICAgICAgIC8vIEZpcmUgb2ZmIGFub3RoZXIgc3R5bGUgY2hhbmdlIHNvIHdlIGNhbiBzZXQgdGhl
IGZpbmFsIHZhbHVlCi0gICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNv
bnRyb2xsZXIoKS0+YWRkTm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPm5vZGUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fY29tcEFuaW0tPmFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRk
Tm9kZUNoYW5nZVRvRGlzcGF0Y2gobV9vYmplY3QtPmVsZW1lbnQoKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgcGF1
c2luZyB3aGlsZSBydW5uaW5nLiBDYW5jZWwgdGhlIGFuaW1hdGlvbiBhbmQgd2FpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oCmluZGV4IDI2ZDczMmE3
N2FkMGI3ZDk4ZGViYTU3YzBhNzBjN2UyOTYzMTA3Y2UuLjJiYTJkMDRkNDc1NjkyMjkyYjk5Yjhi
MzBlM2QwMGQ4OWE3NDNjYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgQW5pbWF0aW9uQ29udHJvbGxl
cjsKIGNsYXNzIENvbXBvc2l0ZUFuaW1hdGlvbjsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBOb2Rl
OwotY2xhc3MgUmVuZGVyT2JqZWN0OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgVGltaW5nRnVuY3Rpb247CiAKQEAgLTUzLDEwICs1MywxMCBAQCBjbGFz
cyBBbmltYXRpb25CYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uQmFzZT4gewogICAg
IGZyaWVuZCBjbGFzcyBDU1NQcm9wZXJ0eUFuaW1hdGlvbjsKIAogcHVibGljOgotICAgIEFuaW1h
dGlvbkJhc2UoY29uc3QgQW5pbWF0aW9uJiB0cmFuc2l0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBBbmltKTsKKyAgICBBbmltYXRpb25CYXNlKGNv
bnN0IEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgUmVuZGVyRWxlbWVudCosIENvbXBvc2l0ZUFuaW1h
dGlvbiopOwogICAgIHZpcnR1YWwgfkFuaW1hdGlvbkJhc2UoKSB7IH0KIAotICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX29iamVjdDsgfQorICAgIFJlbmRlckVs
ZW1lbnQqIHJlbmRlcmVyKCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3Q7IH0KICAgICB2b2lkIGNs
ZWFyKCkKICAgICB7CiAgICAgICBlbmRBbmltYXRpb24oKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBw
dWJsaWM6CiAKICAgICBkb3VibGUgcHJvZ3Jlc3MoZG91YmxlIHNjYWxlLCBkb3VibGUgb2Zmc2V0
LCBjb25zdCBUaW1pbmdGdW5jdGlvbiopIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1h
dGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyU3R5bGUq
IC8qY3VycmVudFN0eWxlKi8sIFJlbmRlclN0eWxlKiAvKnRhcmdldFN0eWxlKi8sIFJlZlB0cjxS
ZW5kZXJTdHlsZT4mIC8qYW5pbWF0ZWRTdHlsZSovKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFu
aW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyRWxlbWVudCosIGNvbnN0IFJlbmRlclN0
eWxlKiAvKmN1cnJlbnRTdHlsZSovLCBSZW5kZXJTdHlsZSogLyp0YXJnZXRTdHlsZSovLCBSZWZQ
dHI8UmVuZGVyU3R5bGU+JiAvKmFuaW1hdGVkU3R5bGUqLykgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBnZXRBbmltYXRlZFN0eWxlKFJlZlB0cjxSZW5kZXJTdHlsZT4mIC8qYW5pbWF0ZWRTdHlsZSov
KSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRmlyZUV2ZW50cygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CkBAIC0yMzQsNyArMjM0LDcgQEAgcHJvdGVjdGVkOgogICAgIGRvdWJsZSBt
X3RvdGFsRHVyYXRpb247CiAgICAgZG91YmxlIG1fbmV4dEl0ZXJhdGlvbkR1cmF0aW9uOwogCi0g
ICAgUmVuZGVyT2JqZWN0KiBtX29iamVjdDsKKyAgICBSZW5kZXJFbGVtZW50KiBtX29iamVjdDsK
IAogICAgIFJlZlB0cjxBbmltYXRpb24+IG1fYW5pbWF0aW9uOwogICAgIENvbXBvc2l0ZUFuaW1h
dGlvbiogbV9jb21wQW5pbTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNjJlYWJjNzI5NGIzYzQ0ODNiZmMxNTg0
MDA0YTkyZjUzMTA5NjA0Zi4uZWNiMzU1ZjI0Mzg3MDkzZDYxNzE3Y2VkYmE0OTU0MTU5YTMxZDc3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
Q29udHJvbGxlci5jcHAKQEAgLTY3LDE1ICs2NywxNSBAQCBBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6fkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlKCkKIHsKIH0KIAotQ29tcG9zaXRlQW5p
bWF0aW9uJiBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6ZW5zdXJlQ29tcG9zaXRlQW5pbWF0
aW9uKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitDb21wb3NpdGVBbmltYXRpb24mIEFuaW1hdGlv
bkNvbnRyb2xsZXJQcml2YXRlOjplbnN1cmVDb21wb3NpdGVBbmltYXRpb24oUmVuZGVyRWxlbWVu
dCogcmVuZGVyZXIpCiB7Ci0gICAgUmVuZGVyT2JqZWN0QW5pbWF0aW9uTWFwOjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmFkZChyZW5kZXJlciwgbnVsbHB0cik7Cisg
ICAgYXV0byByZXN1bHQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYWRkKHJlbmRlcmVyLCBudWxs
cHRyKTsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgIHJlc3VsdC5pdGVyYXRv
ci0+dmFsdWUgPSBDb21wb3NpdGVBbmltYXRpb246OmNyZWF0ZSh0aGlzKTsKICAgICByZXR1cm4g
KnJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGU6OmNsZWFyKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCitib29sIEFuaW1hdGlvbkNvbnRy
b2xsZXJQcml2YXRlOjpjbGVhcihSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICAvLyBS
ZXR1cm4gZmFsc2UgaWYgd2UgZGlkbid0IGRvIGFueXRoaW5nIE9SIHdlIGFyZSBzdXNwZW5kZWQg
KHNvIHdlIGRvbid0IHRyeSB0bwogICAgIC8vIGRvIGEgc2V0TmVlZHNTdHlsZVJlY2FsYygpIHdo
ZW4gc3VzcGVuZGVkKS4KQEAgLTkxLDIyICs5MSwyMSBAQCBkb3VibGUgQW5pbWF0aW9uQ29udHJv
bGxlclByaXZhdGU6OnVwZGF0ZUFuaW1hdGlvbnMoU2V0Q2hhbmdlZCBjYWxsU2V0Q2hhbmdlZC8q
CiAgICAgZG91YmxlIHRpbWVUb05leHRTZXJ2aWNlID0gLTE7CiAgICAgYm9vbCBjYWxsZWRTZXRD
aGFuZ2VkID0gZmFsc2U7CiAKLSAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0
ZXJhdG9yIGFuaW1hdGlvbnNFbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7Ci0gICAg
Zm9yIChSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21w
b3NpdGVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAg
ICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAg
ICAgICAgaWYgKCFjb21wQW5pbS0+aXNTdXNwZW5kZWQoKSAmJiBjb21wQW5pbS0+aGFzQW5pbWF0
aW9ucygpKSB7Ci0gICAgICAgICAgICBkb3VibGUgdCA9IGNvbXBBbmltLT50aW1lVG9OZXh0U2Vy
dmljZSgpOworICAgIGF1dG8gZW5kID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmVuZCgpOworICAg
IGZvciAoYXV0byBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgQ29tcG9zaXRlQW5pbWF0aW9uJiBhbmltYXRpb24gPSAqaXQtPnZh
bHVlOworICAgICAgICBpZiAoIWFuaW1hdGlvbi5pc1N1c3BlbmRlZCgpICYmIGFuaW1hdGlvbi5o
YXNBbmltYXRpb25zKCkpIHsKKyAgICAgICAgICAgIGRvdWJsZSB0ID0gYW5pbWF0aW9uLnRpbWVU
b05leHRTZXJ2aWNlKCk7CiAgICAgICAgICAgICBpZiAodCAhPSAtMSAmJiAodCA8IHRpbWVUb05l
eHRTZXJ2aWNlIHx8IHRpbWVUb05leHRTZXJ2aWNlID09IC0xKSkKICAgICAgICAgICAgICAgICB0
aW1lVG9OZXh0U2VydmljZSA9IHQ7CiAgICAgICAgICAgICBpZiAoIXRpbWVUb05leHRTZXJ2aWNl
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxTZXRDaGFuZ2VkID09IENhbGxTZXRDaGFuZ2Vk
KSB7Ci0gICAgICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBpdC0+a2V5LT5ub2RlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghbm9kZSB8fCAhbm9kZS0+ZG9jdW1lbnQoKS5pblBh
Z2VDYWNoZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0TmVlZHNTdHlsZVJlY2Fs
YyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxlZFNldENo
YW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgaWYgKGNhbGxTZXRDaGFuZ2VkICE9IENhbGxTZXRDaGFuZ2VkKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50
ID0gaXQtPmtleS0+ZWxlbWVudCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50KTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQtPmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUo
KSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0
aWNTdHlsZUNoYW5nZSk7CisgICAgICAgICAgICAgICAgY2FsbGVkU2V0Q2hhbmdlZCA9IHRydWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTcsNyArMTE2LDcgQEAgZG91
YmxlIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjp1cGRhdGVBbmltYXRpb25zKFNldENoYW5n
ZWQgY2FsbFNldENoYW5nZWQvKgogICAgIHJldHVybiB0aW1lVG9OZXh0U2VydmljZTsKIH0KIAot
dm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9uVGltZXJGb3JS
ZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBBbmltYXRpb25Db250cm9sbGVy
UHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9uVGltZXJGb3JSZW5kZXJlcihSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlcikKIHsKICAgICBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UgPSAwOwogCkBAIC0yNDMs
MjIgKzI0MiwxNiBAQCB2b2lkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmltYXRpb25U
aW1lckZpcmVkKFRpbWVyPEFuaW1hdGlvbkNvbnRyb2xsZXJQcgogICAgIGZpcmVFdmVudHNBbmRV
cGRhdGVTdHlsZSgpOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjppc1J1
bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHksIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdAorYm9vbCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cp
IGNvbnN0CiB7CiAgICAgY29uc3QgQ29tcG9zaXRlQW5pbWF0aW9uKiBhbmltYXRpb24gPSBtX2Nv
bXBvc2l0ZUFuaW1hdGlvbnMuZ2V0KHJlbmRlcmVyKTsKLSAgICBpZiAoIWFuaW1hdGlvbikKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGFuaW1hdGlvbi0+aXNBbmltYXRpbmdQ
cm9wZXJ0eShwcm9wZXJ0eSwgZmFsc2UsIGlzUnVubmluZ05vdyk7CisgICAgcmV0dXJuIGFuaW1h
dGlvbiAmJiBhbmltYXRpb24tPmlzQW5pbWF0aW5nUHJvcGVydHkocHJvcGVydHksIGZhbHNlLCBp
c1J1bm5pbmdOb3cpOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjppc1J1
bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0Citib29s
IEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlv
bk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHksIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdAogewogICAgIGNvbnN0IENvbXBvc2l0ZUFuaW1h
dGlvbiogYW5pbWF0aW9uID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmdldChyZW5kZXJlcik7Ci0g
ICAgaWYgKCFhbmltYXRpb24pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBh
bmltYXRpb24tPmlzQW5pbWF0aW5nUHJvcGVydHkocHJvcGVydHksIHRydWUsIGlzUnVubmluZ05v
dyk7CisgICAgcmV0dXJuIGFuaW1hdGlvbiAmJiBhbmltYXRpb24tPmlzQW5pbWF0aW5nUHJvcGVy
dHkocHJvcGVydHksIHRydWUsIGlzUnVubmluZ05vdyk7CiB9CiAKIHZvaWQgQW5pbWF0aW9uQ29u
dHJvbGxlclByaXZhdGU6OnN1c3BlbmRBbmltYXRpb25zKCkKQEAgLTI5MywxMyArMjg2LDkgQEAg
dm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6c3VzcGVuZEFuaW1hdGlvbnNGb3JEb2N1
bWVudChEb2N1bWVudCogZG9jdW1lbnQKIHsKICAgICBzZXRCZWdpbkFuaW1hdGlvblVwZGF0ZVRp
bWUoY0JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZU5vdFNldCk7CiAKLSAgICBSZW5kZXJPYmplY3RB
bmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGFuaW1hdGlvbnNFbmQgPSBtX2NvbXBvc2l0ZUFu
aW1hdGlvbnMuZW5kKCk7Ci0gICAgZm9yIChSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVBbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1h
dGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5r
ZXk7Ci0gICAgICAgIGlmICgmcmVuZGVyZXItPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpIHsKLSAg
ICAgICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcEFuaW0gPSBpdC0+dmFsdWUuZ2V0KCk7
Ci0gICAgICAgICAgICBjb21wQW5pbS0+c3VzcGVuZEFuaW1hdGlvbnMoKTsKLSAgICAgICAgfQor
ICAgIGZvciAoYXV0byBpdCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5iZWdpbigpLCBlbmQgPSBt
X2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBp
ZiAoJml0LT5rZXktPmRvY3VtZW50KCkgPT0gZG9jdW1lbnQpCisgICAgICAgICAgICBpdC0+dmFs
dWUtPnN1c3BlbmRBbmltYXRpb25zKCk7CiAgICAgfQogCiAgICAgdXBkYXRlQW5pbWF0aW9uVGlt
ZXIoKTsKQEAgLTMwOSwxMyArMjk4LDkgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZTo6cmVzdW1lQW5pbWF0aW9uc0ZvckRvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAg
ICBzZXRCZWdpbkFuaW1hdGlvblVwZGF0ZVRpbWUoY0JlZ2luQW5pbWF0aW9uVXBkYXRlVGltZU5v
dFNldCk7CiAKLSAgICBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGFu
aW1hdGlvbnNFbmQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuZW5kKCk7Ci0gICAgZm9yIChSZW5k
ZXJPYmplY3RBbmltYXRpb25NYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9jb21wb3NpdGVBbmlt
YXRpb25zLmJlZ2luKCk7IGl0ICE9IGFuaW1hdGlvbnNFbmQ7ICsraXQpIHsKLSAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGl0LT5rZXk7Ci0gICAgICAgIGlmICgmcmVuZGVyZXItPmRv
Y3VtZW50KCkgPT0gZG9jdW1lbnQpIHsKLSAgICAgICAgICAgIENvbXBvc2l0ZUFuaW1hdGlvbiog
Y29tcEFuaW0gPSBpdC0+dmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICBjb21wQW5pbS0+cmVzdW1l
QW5pbWF0aW9ucygpOwotICAgICAgICB9CisgICAgZm9yIChhdXRvIGl0ID0gbV9jb21wb3NpdGVB
bmltYXRpb25zLmJlZ2luKCksIGVuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgIGlmICgmaXQtPmtleS0+ZG9jdW1lbnQoKSA9PSBkb2N1
bWVudCkKKyAgICAgICAgICAgIGl0LT52YWx1ZS0+cmVzdW1lQW5pbWF0aW9ucygpOwogICAgIH0K
IAogICAgIHVwZGF0ZUFuaW1hdGlvblRpbWVyKCk7CkBAIC0zMzIsMTQgKzMxNywxNCBAQCB2b2lk
IEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpzZXRBbGxvd3NOZXdBbmltYXRpb25zV2hpbGVT
dXNwZW5kZWQoYm9vbCBhbGxvdwogICAgIG1fYWxsb3dzTmV3QW5pbWF0aW9uc1doaWxlU3VzcGVu
ZGVkID0gYWxsb3dlZDsKIH0KIAotYm9vbCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1
c2VBbmltYXRpb25BdFRpbWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBkb3VibGUgdCkKK2Jvb2wgQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OnBh
dXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGRvdWJsZSB0KQogewogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAogICAgIENvbXBvc2l0ZUFuaW1hdGlvbiYgY29tcG9zaXRlQW5pbWF0aW9u
ID0gZW5zdXJlQ29tcG9zaXRlQW5pbWF0aW9uKHJlbmRlcmVyKTsKICAgICBpZiAoY29tcG9zaXRl
QW5pbWF0aW9uLnBhdXNlQW5pbWF0aW9uQXRUaW1lKG5hbWUsIHQpKSB7Ci0gICAgICAgIHJlbmRl
cmVyLT5ub2RlKCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwor
ICAgICAgICByZW5kZXJlci0+ZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRp
Y1N0eWxlQ2hhbmdlKTsKICAgICAgICAgc3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hl
cigpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zNDcsMTQgKzMzMiwxNCBAQCBi
b29sIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjpwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyLCBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlck9iamVj
dCogcmVuZGVyZXIsIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0KQorYm9vbCBBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6cGF1c2VUcmFuc2l0aW9uQXRUaW1lKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUgdCkKIHsKICAgICBp
ZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBDb21wb3NpdGVBbmlt
YXRpb24mIGNvbXBvc2l0ZUFuaW1hdGlvbiA9IGVuc3VyZUNvbXBvc2l0ZUFuaW1hdGlvbihyZW5k
ZXJlcik7CiAgICAgaWYgKGNvbXBvc2l0ZUFuaW1hdGlvbi5wYXVzZVRyYW5zaXRpb25BdFRpbWUo
Y3NzUHJvcGVydHlJRChwcm9wZXJ0eSksIHQpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5ub2RlKCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOworICAgICAgICByZW5k
ZXJlci0+ZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdl
KTsKICAgICAgICAgc3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0zODIsNyArMzY3LDcgQEAgdm9pZCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6cmVjZWl2ZWRTdGFydFRpbWVSZXNwb25zZShkb3VibGUgdGltZSkK
ICAgICBzdGFydFRpbWVSZXNwb25zZSh0aW1lKTsKIH0KIAotUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU6OmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0
aW9uQ29udHJvbGxlclByaXZhdGU6OmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJF
bGVtZW50KiByZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4g
MDsKQEAgLTQwMiwxNCArMzg3LDExIEBAIHVuc2lnbmVkIEFuaW1hdGlvbkNvbnRyb2xsZXJQcml2
YXRlOjpudW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoRG9jdW1lbnQqIGRvY3VtZW50CiB7CiAgICAg
dW5zaWduZWQgY291bnQgPSAwOwogICAgIAotICAgIFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6
Y29uc3RfaXRlcmF0b3IgYW5pbWF0aW9uc0VuZCA9IG1fY29tcG9zaXRlQW5pbWF0aW9ucy5lbmQo
KTsKLSAgICBmb3IgKFJlbmRlck9iamVjdEFuaW1hdGlvbk1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gYW5pbWF0aW9uc0VuZDsgKytp
dCkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gaXQtPmtleTsKLSAgICAgICAg
Q29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSA9IGl0LT52YWx1ZS5nZXQoKTsKLSAgICAgICAg
aWYgKCZyZW5kZXJlci0+ZG9jdW1lbnQoKSA9PSBkb2N1bWVudCkKLSAgICAgICAgICAgIGNvdW50
ICs9IGNvbXBBbmltLT5udW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKKyAgICBmb3IgKGF1dG8g
aXQgPSBtX2NvbXBvc2l0ZUFuaW1hdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9jb21wb3NpdGVBbmlt
YXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgaWYgKCZpdC0+a2V5LT5k
b2N1bWVudCgpID09IGRvY3VtZW50KQorICAgICAgICAgICAgY291bnQgKz0gaXQtPnZhbHVlLT5u
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gY291
bnQ7CiB9CiAKQEAgLTUwMCwyMCArNDgyLDIwIEBAIEFuaW1hdGlvbkNvbnRyb2xsZXI6On5Bbmlt
YXRpb25Db250cm9sbGVyKCkKIHsKIH0KIAotdm9pZCBBbmltYXRpb25Db250cm9sbGVyOjpjYW5j
ZWxBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIEFuaW1hdGlvbkNvbnRy
b2xsZXI6OmNhbmNlbEFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAg
aWYgKCFtX2RhdGEtPmhhc0FuaW1hdGlvbnMoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KG1fZGF0YS0+Y2xlYXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIE5vZGUqIG5vZGUgPSByZW5kZXJl
ci0+bm9kZSgpOwotICAgICAgICBBU1NFUlQoIW5vZGUgfHwgIW5vZGUtPmRvY3VtZW50KCkuaW5Q
YWdlQ2FjaGUoKSk7Ci0gICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgbm9kZS0+c2V0TmVl
ZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CisgICAgICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSByZW5kZXJlci0+ZWxlbWVudCgpOworICAgICAgICBBU1NFUlQoIWVsZW1lbnQgfHwg
IWVsZW1lbnQtPmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CisgICAgICAgIGlmIChlbGVtZW50
KQorICAgICAgICAgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHls
ZUNoYW5nZSk7CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25D
b250cm9sbGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRl
clN0eWxlKiBuZXdTdHlsZSkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFuaW1hdGlvbkNvbnRy
b2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIFJlbmRlclN0
eWxlKiBuZXdTdHlsZSkKIHsKICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB3ZSdyZSBpbiB0
aGUgY2FjaGUKICAgICBpZiAocmVuZGVyZXItPmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkKQEAg
LTUzNCw3ICs1MTYsNyBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBBbmltYXRpb25Db250cm9s
bGVyOjp1cGRhdGVBbmltYXRpb25zKFJlbmRlck9iamVjdCogcmVuZAogICAgIC8vIGEgbmV3IHN0
eWxlLgogCiAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBhbm9ueW1vdXMgcHNldWRvIGVsZW1lbnRz
IGxpa2UgOmZpcnN0LWxpbmUgb3IgOmZpcnN0LWxldHRlci4KLSAgICBBU1NFUlQocmVuZGVyZXIt
Pm5vZGUoKSk7CisgICAgQVNTRVJUKHJlbmRlcmVyLT5lbGVtZW50KCkpOwogCiAgICAgQ29tcG9z
aXRlQW5pbWF0aW9uJiByZW5kZXJlckFuaW1hdGlvbnMgPSBtX2RhdGEtPmVuc3VyZUNvbXBvc2l0
ZUFuaW1hdGlvbihyZW5kZXJlcik7CiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBibGVuZGVkU3R5
bGUgPSByZW5kZXJlckFuaW1hdGlvbnMuYW5pbWF0ZShyZW5kZXJlciwgb2xkU3R5bGUsIG5ld1N0
eWxlKTsKQEAgLTU1NiwxNyArNTM4LDE3IEBAIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IEFuaW1h
dGlvbkNvbnRyb2xsZXI6OnVwZGF0ZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kCiAgICAg
cmV0dXJuIGJsZW5kZWRTdHlsZS5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IEFuaW1hdGlvbkNvbnRyb2xsZXI6OmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQorUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQW5pbWF0aW9uQ29u
dHJvbGxlcjo6Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyKQogewogICAgIHJldHVybiBtX2RhdGEtPmdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihy
ZW5kZXJlcik7CiB9CiAKLXZvaWQgQW5pbWF0aW9uQ29udHJvbGxlcjo6bm90aWZ5QW5pbWF0aW9u
U3RhcnRlZChSZW5kZXJPYmplY3QqLCBkb3VibGUgc3RhcnRUaW1lKQordm9pZCBBbmltYXRpb25D
b250cm9sbGVyOjpub3RpZnlBbmltYXRpb25TdGFydGVkKFJlbmRlckVsZW1lbnQqLCBkb3VibGUg
c3RhcnRUaW1lKQogewogICAgIG1fZGF0YS0+cmVjZWl2ZWRTdGFydFRpbWVSZXNwb25zZShzdGFy
dFRpbWUpOwogfQogCi1ib29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRU
aW1lKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgZG91
YmxlIHQpCitib29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlQW5pbWF0aW9uQXRUaW1lKFJl
bmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGRvdWJsZSB0
KQogewogICAgIHJldHVybiBtX2RhdGEtPnBhdXNlQW5pbWF0aW9uQXRUaW1lKHJlbmRlcmVyLCBu
YW1lLCB0KTsKIH0KQEAgLTU3NiwxNyArNTU4LDE3IEBAIHVuc2lnbmVkIEFuaW1hdGlvbkNvbnRy
b2xsZXI6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZGF0YS0+bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGRvY3VtZW50KTsK
IH0KIAotYm9vbCBBbmltYXRpb25Db250cm9sbGVyOjpwYXVzZVRyYW5zaXRpb25BdFRpbWUoUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQpCiti
b29sIEFuaW1hdGlvbkNvbnRyb2xsZXI6OnBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eSwgZG91YmxlIHQpCiB7CiAgICAg
cmV0dXJuIG1fZGF0YS0+cGF1c2VUcmFuc2l0aW9uQXRUaW1lKHJlbmRlcmVyLCBwcm9wZXJ0eSwg
dCk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNSdW5uaW5nQW5pbWF0aW9uT25S
ZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBi
b29sIGlzUnVubmluZ05vdykgY29uc3QKK2Jvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNSdW5u
aW5nQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZGF0YS0+aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihyZW5kZXJlciwgcHJvcGVydHksIGlz
UnVubmluZ05vdyk7CiB9CiAKLWJvb2wgQW5pbWF0aW9uQ29udHJvbGxlcjo6aXNSdW5uaW5nQWNj
ZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIENTU1By
b3BlcnR5SUQgcHJvcGVydHksIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdAorYm9vbCBBbmltYXRp
b25Db250cm9sbGVyOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVu
ZGVyRWxlbWVudCogcmVuZGVyZXIsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGJvb2wgaXNSdW5u
aW5nTm93KSBjb25zdAogewogICAgIHJldHVybiBtX2RhdGEtPmlzUnVubmluZ0FjY2VsZXJhdGVk
QW5pbWF0aW9uT25SZW5kZXJlcihyZW5kZXJlciwgcHJvcGVydHksIGlzUnVubmluZ05vdyk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmgKaW5kZXggY2M2MjkxZTNlNmExNmE1NGQzNDVmMzUyZjJiNDZjMTIyNjg2MzE3Zi4uNjBj
MjAzMmFmYWI1MTQyMDE5MDNjMjA5N2M4NGMwNDVkMGNhODY0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkNvbnRyb2xsZXIuaApAQCAtNDEsNyAr
NDEsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNs
YXNzIE5vZGU7Ci1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xh
c3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIEFuaW1hdGlvbkNvbnRyb2xsZXIgewpAQCAtNDksMTkg
KzQ5LDE5IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBBbmltYXRpb25Db250cm9sbGVyKEZyYW1l
Jik7CiAgICAgfkFuaW1hdGlvbkNvbnRyb2xsZXIoKTsKIAotICAgIHZvaWQgY2FuY2VsQW5pbWF0
aW9ucyhSZW5kZXJPYmplY3QqKTsKLSAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiB1cGRhdGVB
bmltYXRpb25zKFJlbmRlck9iamVjdCosIFJlbmRlclN0eWxlKiBuZXdTdHlsZSk7Ci0gICAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gZ2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlck9i
amVjdCopOworICAgIHZvaWQgY2FuY2VsQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50Kik7CisgICAg
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gdXBkYXRlQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50Kiwg
UmVuZGVyU3R5bGUqIG5ld1N0eWxlKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBnZXRB
bmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCopOwogCiAgICAgLy8gVGhpcyBp
cyBjYWxsZWQgd2hlbiBhbiBhY2NlbGVyYXRlZCBhbmltYXRpb24gb3IgdHJhbnNpdGlvbiBoYXMg
YWN0dWFsbHkgc3RhcnRlZCB0byBhbmltYXRlLgotICAgIHZvaWQgbm90aWZ5QW5pbWF0aW9uU3Rh
cnRlZChSZW5kZXJPYmplY3QqLCBkb3VibGUgc3RhcnRUaW1lKTsKKyAgICB2b2lkIG5vdGlmeUFu
aW1hdGlvblN0YXJ0ZWQoUmVuZGVyRWxlbWVudCosIGRvdWJsZSBzdGFydFRpbWUpOwogCi0gICAg
Ym9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCi0gICAg
Ym9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoUmVuZGVyT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBw
cm9wZXJ0eSwgZG91YmxlIHQpOyAvLyBUbyBiZSB1c2VkIG9ubHkgZm9yIHRlc3RpbmcKKyAgICBi
b29sIHBhdXNlQW5pbWF0aW9uQXRUaW1lKFJlbmRlckVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCisgICAg
Ym9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoUmVuZGVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
cHJvcGVydHksIGRvdWJsZSB0KTsgLy8gVG8gYmUgdXNlZCBvbmx5IGZvciB0ZXN0aW5nCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKERvY3VtZW50KikgY29uc3Q7IC8vIFRv
IGJlIHVzZWQgb25seSBmb3IgdGVzdGluZwogICAgIAotICAgIGJvb2wgaXNSdW5uaW5nQW5pbWF0
aW9uT25SZW5kZXJlcihSZW5kZXJPYmplY3QqLCBDU1NQcm9wZXJ0eUlELCBib29sIGlzUnVubmlu
Z05vdyA9IHRydWUpIGNvbnN0OwotICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRp
b25PblJlbmRlcmVyKFJlbmRlck9iamVjdCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5n
Tm93ID0gdHJ1ZSkgY29uc3Q7CisgICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQqLCBDU1NQcm9wZXJ0eUlELCBib29sIGlzUnVubmluZ05vdyA9IHRydWUp
IGNvbnN0OworICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQqLCBDU1NQcm9wZXJ0eUlELCBib29sIGlzUnVubmluZ05vdyA9IHRydWUp
IGNvbnN0OwogCiAgICAgYm9vbCBpc1N1c3BlbmRlZCgpIGNvbnN0OwogICAgIHZvaWQgc3VzcGVu
ZEFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9u
L0FuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IDI2OWJmZGQwZjU2MDQzMDNj
OTdkNWMzNzdmNTRhODBmOTJjYTE5MTguLjk1ZjE2NDJjM2M3YmI2YmMxZWJiNzA4ODEzMDI3MjFh
NmJhMjBjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRp
b24vQW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGUuaApAQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBE
b2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIE5vZGU7Ci1jbGFz
cyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7
CiAKIGVudW0gU2V0Q2hhbmdlZCB7CkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICBkb3Vi
bGUgdXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxTZXRDaGFuZ2VkID0gRG9Ob3RDYWxs
U2V0Q2hhbmdlZCk7CiAgICAgdm9pZCB1cGRhdGVBbmltYXRpb25UaW1lcihTZXRDaGFuZ2VkIGNh
bGxTZXRDaGFuZ2VkID0gRG9Ob3RDYWxsU2V0Q2hhbmdlZCk7CiAKLSAgICBDb21wb3NpdGVBbmlt
YXRpb24mIGVuc3VyZUNvbXBvc2l0ZUFuaW1hdGlvbihSZW5kZXJPYmplY3QqKTsKLSAgICBib29s
IGNsZWFyKFJlbmRlck9iamVjdCopOworICAgIENvbXBvc2l0ZUFuaW1hdGlvbiYgZW5zdXJlQ29t
cG9zaXRlQW5pbWF0aW9uKFJlbmRlckVsZW1lbnQqKTsKKyAgICBib29sIGNsZWFyKFJlbmRlckVs
ZW1lbnQqKTsKIAogICAgIHZvaWQgdXBkYXRlU3R5bGVJZk5lZWRlZERpc3BhdGNoZXJGaXJlZChU
aW1lcjxBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZT4qKTsKICAgICB2b2lkIHN0YXJ0VXBkYXRl
U3R5bGVJZk5lZWRlZERpc3BhdGNoZXIoKTsKQEAgLTg2LDE0ICs4NiwxNCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoRG9jdW1lbnQqKTsKICAgICB2b2lk
IHN0YXJ0QW5pbWF0aW9uc0lmTm90U3VzcGVuZGVkKERvY3VtZW50Kik7CiAKLSAgICBib29sIGlz
UnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyT2JqZWN0KiwgQ1NTUHJvcGVydHlJRCwg
Ym9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0OwotICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRB
bmltYXRpb25PblJlbmRlcmVyKFJlbmRlck9iamVjdCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNS
dW5uaW5nTm93KSBjb25zdDsKKyAgICBib29sIGlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIo
UmVuZGVyRWxlbWVudCosIENTU1Byb3BlcnR5SUQsIGJvb2wgaXNSdW5uaW5nTm93KSBjb25zdDsK
KyAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJF
bGVtZW50KiwgQ1NTUHJvcGVydHlJRCwgYm9vbCBpc1J1bm5pbmdOb3cpIGNvbnN0OwogCi0gICAg
Ym9vbCBwYXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJPYmplY3QqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGRvdWJsZSB0KTsKLSAgICBib29sIHBhdXNlVHJhbnNpdGlvbkF0VGltZShSZW5k
ZXJPYmplY3QqLCBjb25zdCBTdHJpbmcmIHByb3BlcnR5LCBkb3VibGUgdCk7CisgICAgYm9vbCBw
YXVzZUFuaW1hdGlvbkF0VGltZShSZW5kZXJFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBkb3VibGUgdCk7CisgICAgYm9vbCBwYXVzZVRyYW5zaXRpb25BdFRpbWUoUmVuZGVyRWxl
bWVudCosIGNvbnN0IFN0cmluZyYgcHJvcGVydHksIGRvdWJsZSB0KTsKICAgICB1bnNpZ25lZCBu
dW1iZXJPZkFjdGl2ZUFuaW1hdGlvbnMoRG9jdW1lbnQqKSBjb25zdDsKIAotICAgIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IGdldEFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBnZXRBbmltYXRlZFN0eWxl
Rm9yUmVuZGVyZXIoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpOwogCiAgICAgZG91YmxlIGJlZ2lu
QW5pbWF0aW9uVXBkYXRlVGltZSgpOwogICAgIHZvaWQgc2V0QmVnaW5BbmltYXRpb25VcGRhdGVU
aW1lKGRvdWJsZSB0KSB7IG1fYmVnaW5BbmltYXRpb25VcGRhdGVUaW1lID0gdDsgfQpAQCAtMTA4
LDcgKzEwOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYW5pbWF0aW9uV2lsbEJlUmVtb3ZlZChB
bmltYXRpb25CYXNlKik7CiAKLSAgICB2b2lkIHVwZGF0ZUFuaW1hdGlvblRpbWVyRm9yUmVuZGVy
ZXIoUmVuZGVyT2JqZWN0Kik7CisgICAgdm9pZCB1cGRhdGVBbmltYXRpb25UaW1lckZvclJlbmRl
cmVyKFJlbmRlckVsZW1lbnQqKTsKIAogICAgIGJvb2wgYWxsb3dzTmV3QW5pbWF0aW9uc1doaWxl
U3VzcGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NOZXdBbmltYXRpb25zV2hpbGVTdXNw
ZW5kZWQ7IH0KICAgICB2b2lkIHNldEFsbG93c05ld0FuaW1hdGlvbnNXaGlsZVN1c3BlbmRlZChi
b29sKTsKQEAgLTEyMCw5ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmlyZUV2ZW50c0Fu
ZFVwZGF0ZVN0eWxlKCk7CiAgICAgdm9pZCBzdGFydFRpbWVSZXNwb25zZShkb3VibGUgdCk7CiAK
LSAgICB0eXBlZGVmIEhhc2hNYXA8UmVuZGVyT2JqZWN0KiwgUmVmUHRyPENvbXBvc2l0ZUFuaW1h
dGlvbj4gPiBSZW5kZXJPYmplY3RBbmltYXRpb25NYXA7Ci0KLSAgICBSZW5kZXJPYmplY3RBbmlt
YXRpb25NYXAgbV9jb21wb3NpdGVBbmltYXRpb25zOworICAgIEhhc2hNYXA8UmVuZGVyRWxlbWVu
dCosIFJlZlB0cjxDb21wb3NpdGVBbmltYXRpb24+PiBtX2NvbXBvc2l0ZUFuaW1hdGlvbnM7CiAg
ICAgVGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+IG1fYW5pbWF0aW9uVGltZXI7CiAg
ICAgVGltZXI8QW5pbWF0aW9uQ29udHJvbGxlclByaXZhdGU+IG1fdXBkYXRlU3R5bGVJZk5lZWRl
ZERpc3BhdGNoZXI7CiAgICAgRnJhbWUmIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggNTc1MDRl
NjVkNjI0YzhlMzAyMDdlM2M5NjU1MDJlODQyZjFiNzFlMi4uMjdiNjQ4MzcwYmFmNDRlOTA3MWI1
ZWUxNjA4MGE0N2NmMDU2MjY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMjgyLDExICsyODIsOCBAQCBz
dGF0aWMgaW5saW5lIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gY3Jvc3NmYWRlQmxlbmQoY29uc3Qg
QW5pbWF0aW9uQmFzZSosIFN0eWxlQwogICAgIGlmIChwcm9ncmVzcyA9PSAxKQogICAgICAgICBy
ZXR1cm4gdG9TdHlsZUltYWdlOwogCi0gICAgQ2FjaGVkSW1hZ2UqIGZyb21DYWNoZWRJbWFnZSA9
IHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4oZnJvbVN0eWxlSW1hZ2UtPmRhdGEoKSk7Ci0gICAg
Q2FjaGVkSW1hZ2UqIHRvQ2FjaGVkSW1hZ2UgPSBzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHRv
U3R5bGVJbWFnZS0+ZGF0YSgpKTsKLQotICAgIFJlZlB0cjxDU1NJbWFnZVZhbHVlPiBmcm9tSW1h
Z2VWYWx1ZSA9IENTU0ltYWdlVmFsdWU6OmNyZWF0ZShmcm9tQ2FjaGVkSW1hZ2UtPnVybCgpLCBm
cm9tU3R5bGVJbWFnZSk7Ci0gICAgUmVmUHRyPENTU0ltYWdlVmFsdWU+IHRvSW1hZ2VWYWx1ZSA9
IENTU0ltYWdlVmFsdWU6OmNyZWF0ZSh0b0NhY2hlZEltYWdlLT51cmwoKSwgdG9TdHlsZUltYWdl
KTsKKyAgICBSZWZQdHI8Q1NTSW1hZ2VWYWx1ZT4gZnJvbUltYWdlVmFsdWUgPSBDU1NJbWFnZVZh
bHVlOjpjcmVhdGUoZnJvbVN0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPnVybCgpLCBmcm9tU3R5
bGVJbWFnZSk7CisgICAgUmVmUHRyPENTU0ltYWdlVmFsdWU+IHRvSW1hZ2VWYWx1ZSA9IENTU0lt
YWdlVmFsdWU6OmNyZWF0ZSh0b1N0eWxlSW1hZ2UtPmNhY2hlZEltYWdlKCktPnVybCgpLCB0b1N0
eWxlSW1hZ2UpOwogICAgIFJlZlB0cjxDU1NDcm9zc2ZhZGVWYWx1ZT4gY3Jvc3NmYWRlVmFsdWUg
PSBDU1NDcm9zc2ZhZGVWYWx1ZTo6Y3JlYXRlKGZyb21JbWFnZVZhbHVlLCB0b0ltYWdlVmFsdWUp
OwogCiAgICAgY3Jvc3NmYWRlVmFsdWUtPnNldFBlcmNlbnRhZ2UoQ1NTUHJpbWl0aXZlVmFsdWU6
OmNyZWF0ZShwcm9ncmVzcywgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9Db21wb3NpdGVBbmltYXRpb24uY3Bw
CmluZGV4IDljYmQxYzUzNzBjYTIzNjE2YjEwYjJiOTMzN2UxOWVhZWM1ZWNmNDEuLjU4ZDI3MTlk
YzZmZDNjZmQ2ZWU1ZTRiYjgzMjkzMzM1ZGEyZDk4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9uLmNwcApAQCAtMzUsNyArMzUs
NyBAQAogI2luY2x1ZGUgIkltcGxpY2l0QW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVB
bmltYXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0
LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQg
Q29tcG9zaXRlQW5pbWF0aW9uOjpjbGVhclJlbmRlcmVyKCkKICAgICB9CiB9CiAKLXZvaWQgQ29t
cG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUpCit2
b2lkIENvbXBvc2l0ZUFuaW1hdGlvbjo6dXBkYXRlVHJhbnNpdGlvbnMoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRT
dHlsZSkKIHsKICAgICAvLyBJZiBjdXJyZW50U3R5bGUgaXMgbnVsbCBvciB0aGVyZSBhcmUgbm8g
b2xkIG9yIG5ldyB0cmFuc2l0aW9ucywganVzdCBza2lwIGl0CiAgICAgaWYgKCFjdXJyZW50U3R5
bGUgfHwgKCF0YXJnZXRTdHlsZS0+dHJhbnNpdGlvbnMoKSAmJiBtX3RyYW5zaXRpb25zLmlzRW1w
dHkoKSkpCkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0
ZVRyYW5zaXRpb25zKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKgogICAgICAg
ICBtX3RyYW5zaXRpb25zLnJlbW92ZSh0b0JlUmVtb3ZlZFtqXSk7CiB9CiAKLXZvaWQgQ29tcG9z
aXRlQW5pbWF0aW9uOjp1cGRhdGVLZXlmcmFtZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxl
KQordm9pZCBDb21wb3NpdGVBbmltYXRpb246OnVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5
bGUqIHRhcmdldFN0eWxlKQogewogICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgd2UgZG9uJ3QgaGF2
ZSBhbnkgYW5pbWF0aW9ucywgYW5kIGRpZG4ndCBoYXZlIGFueSBiZWZvcmUKICAgICBpZiAobV9r
ZXlmcmFtZUFuaW1hdGlvbnMuaXNFbXB0eSgpICYmICF0YXJnZXRTdHlsZS0+aGFzQW5pbWF0aW9u
cygpKQpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgQ29tcG9zaXRlQW5pbWF0aW9uOjp1cGRhdGVL
ZXlmcmFtZUFuaW1hdGlvbnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZGVyCiAgICAgICAg
IG1fa2V5ZnJhbWVBbmltYXRpb25zLnJlbW92ZShhbmltc1RvQmVSZW1vdmVkW2pdKTsKIH0KIAot
UGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ29tcG9zaXRlQW5pbWF0aW9uOjphbmltYXRlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIsIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxl
KiB0YXJnZXRTdHlsZSkKK1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENvbXBvc2l0ZUFuaW1hdGlv
bjo6YW5pbWF0ZShSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgUmVuZGVyU3R5bGUqIGN1cnJlbnRT
dHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKQogewogICAgIFJlZlB0cjxSZW5kZXJTdHls
ZT4gcmVzdWx0U3R5bGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NvbXBvc2l0ZUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
Q29tcG9zaXRlQW5pbWF0aW9uLmgKaW5kZXggNGY0OTE5MDcwYzMyNDdiYjM4NzBkN2NmZjlhMjVi
MWNiOWQ2ZDdmOS4uMTVlOTA1MzU1YjU4ZWVmZGRjZTVkMjI1M2ZlZTE1OTU1NTdhYjdlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9u
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ29tcG9zaXRlQW5pbWF0aW9u
LmgKQEAgLTM5LDExICszOSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1h
dGlvbkNvbnRyb2xsZXJQcml2YXRlOwogY2xhc3MgQW5pbWF0aW9uQ29udHJvbGxlcjsKLWNsYXNz
IFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
IAogLy8gQSBDb21wb3NpdGVBbmltYXRpb24gcmVwcmVzZW50cyBhIGNvbGxlY3Rpb24gb2YgYW5p
bWF0aW9ucyB0aGF0IGFyZSBydW5uaW5nCi0vLyBvbiBhIHNpbmdsZSBSZW5kZXJPYmplY3QsIHN1
Y2ggYXMgYSBudW1iZXIgb2YgcHJvcGVydGllcyB0cmFuc2l0aW9uaW5nIGF0IG9uY2UuCisvLyBv
biBhIHNpbmdsZSBSZW5kZXJFbGVtZW50LCBzdWNoIGFzIGEgbnVtYmVyIG9mIHByb3BlcnRpZXMg
dHJhbnNpdGlvbmluZyBhdCBvbmNlLgogY2xhc3MgQ29tcG9zaXRlQW5pbWF0aW9uIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q29tcG9zaXRlQW5pbWF0aW9uPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Q29tcG9zaXRlQW5pbWF0aW9uPiBjcmVhdGUoQW5pbWF0aW9uQ29udHJvbGxlclBy
aXZhdGUqIGFuaW1hdGlvbkNvbnRyb2xsZXIpCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGNsZWFyUmVuZGVyZXIoKTsKIAotICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5
bGU+IGFuaW1hdGUoUmVuZGVyT2JqZWN0KiwgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVu
ZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKKyAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBhbmlt
YXRlKFJlbmRlckVsZW1lbnQqLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHls
ZSogdGFyZ2V0U3R5bGUpOwogICAgIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IGdldEFuaW1hdGVk
U3R5bGUoKSBjb25zdDsKIAogICAgIGRvdWJsZSB0aW1lVG9OZXh0U2VydmljZSgpIGNvbnN0OwpA
QCAtODIsOCArODIsOCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIENvbXBvc2l0ZUFuaW1hdGlv
bihBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZSopOwogCi0gICAgdm9pZCB1cGRhdGVUcmFuc2l0
aW9ucyhSZW5kZXJPYmplY3QqLCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHls
ZSogdGFyZ2V0U3R5bGUpOwotICAgIHZvaWQgdXBkYXRlS2V5ZnJhbWVBbmltYXRpb25zKFJlbmRl
ck9iamVjdCosIFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiB0YXJnZXRT
dHlsZSk7CisgICAgdm9pZCB1cGRhdGVUcmFuc2l0aW9ucyhSZW5kZXJFbGVtZW50KiwgUmVuZGVy
U3R5bGUqIGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKKyAgICB2b2lk
IHVwZGF0ZUtleWZyYW1lQW5pbWF0aW9ucyhSZW5kZXJFbGVtZW50KiwgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlKTsKICAgICAKICAgICB0eXBlZGVm
IEhhc2hNYXA8aW50LCBSZWZQdHI8SW1wbGljaXRBbmltYXRpb24+ID4gQ1NTUHJvcGVydHlUcmFu
c2l0aW9uc01hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIFJlZlB0
cjxLZXlmcmFtZUFuaW1hdGlvbj4gPiAgQW5pbWF0aW9uTmFtZU1hcDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmNwcAppbmRleCAzNjhi
YzU4N2NjYzNhMzU5ZjI0ZjQxNWU5YWE2MGZiYWRjMzMyMTM1Li5mMzQ0Njg4NDY3MmY4NTgzNjM1
MTU2ZGJjMTY5MzQ2NWU5NzZlOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9JbXBsaWNpdEFuaW1hdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9h
bmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotSW1wbGljaXRBbmltYXRpb246OkltcGxpY2l0QW5pbWF0aW9uKGNv
bnN0IEFuaW1hdGlvbiYgdHJhbnNpdGlvbiwgQ1NTUHJvcGVydHlJRCBhbmltYXRpbmdQcm9wZXJ0
eSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wQW5pbSwg
UmVuZGVyU3R5bGUqIGZyb21TdHlsZSkKK0ltcGxpY2l0QW5pbWF0aW9uOjpJbXBsaWNpdEFuaW1h
dGlvbihjb25zdCBBbmltYXRpb24mIHRyYW5zaXRpb24sIENTU1Byb3BlcnR5SUQgYW5pbWF0aW5n
UHJvcGVydHksIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBDb21wb3NpdGVBbmltYXRpb24qIGNv
bXBBbmltLCBSZW5kZXJTdHlsZSogZnJvbVN0eWxlKQogICAgIDogQW5pbWF0aW9uQmFzZSh0cmFu
c2l0aW9uLCByZW5kZXJlciwgY29tcEFuaW0pCiAgICAgLCBtX3RyYW5zaXRpb25Qcm9wZXJ0eSh0
cmFuc2l0aW9uLnByb3BlcnR5KCkpCiAgICAgLCBtX2FuaW1hdGluZ1Byb3BlcnR5KGFuaW1hdGlu
Z1Byb3BlcnR5KQpAQCAtNjEsNyArNjEsNyBAQCBib29sIEltcGxpY2l0QW5pbWF0aW9uOjpzaG91
bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihEb2N1bWVudDo6TGlzdGVuZXJUeXBlIGluTGlzdAogICAg
IHJldHVybiBtX29iamVjdC0+ZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5cGUoaW5MaXN0ZW5lclR5
cGUpOwogfQogCi12b2lkIEltcGxpY2l0QW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0ZUFuaW1h
dGlvbiosIFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIHRh
cmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWxlKQordm9pZCBJbXBs
aWNpdEFuaW1hdGlvbjo6YW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJFbGVtZW50
KiwgY29uc3QgUmVuZGVyU3R5bGUqLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJlZlB0cjxS
ZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpCiB7CiAgICAgLy8gSWYgd2UgZ2V0IHRoaXMgZmFy
IGFuZCB0aGUgYW5pbWF0aW9uIGlzIGRvbmUsIGl0IG1lYW5zIHdlIGFyZSBjbGVhbmluZyB1cCBh
IGp1c3QgZmluaXNoZWQgYW5pbWF0aW9uLgogICAgIC8vIFNvIGp1c3QgcmV0dXJuLiBFdmVyeXRo
aW5nIGlzIGFscmVhZHkgYWxsIGNsZWFuZWQgdXAuCkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJ
bXBsaWNpdEFuaW1hdGlvbjo6cGF1c2VBbmltYXRpb24oZG91YmxlIHRpbWVPZmZzZXQpCiAjZW5k
aWYKICAgICAvLyBSZXN0b3JlIHRoZSBvcmlnaW5hbCAodW5hbmltYXRlZCkgc3R5bGUKICAgICBp
ZiAoIXBhdXNlZCgpKQotICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5ub2Rl
KCkpOworICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKG1fb2JqZWN0LT5lbGVtZW50KCkpOwog
fQogCiB2b2lkIEltcGxpY2l0QW5pbWF0aW9uOjplbmRBbmltYXRpb24oKQpAQCAtMTYwLDkgKzE2
MCw3IEBAIGJvb2wgSW1wbGljaXRBbmltYXRpb246OnNlbmRUcmFuc2l0aW9uRXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsCiAgICAgICAgICAgICBTdHJpbmcgcHJvcGVy
dHlOYW1lID0gZ2V0UHJvcGVydHlOYW1lU3RyaW5nKG1fYW5pbWF0aW5nUHJvcGVydHkpOwogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV2ZW50Ci0gICAgICAg
ICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IDA7Ci0gICAgICAgICAgICBpZiAobV9vYmpl
Y3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0gICAgICAg
ICAgICAgICAgZWxlbWVudCA9IHRvRWxlbWVudChtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gbV9vYmplY3QtPmVsZW1lbnQoKTsKIAogICAg
ICAgICAgICAgQVNTRVJUKCFlbGVtZW50IHx8ICFlbGVtZW50LT5kb2N1bWVudCgpLmluUGFnZUNh
Y2hlKCkpOwogICAgICAgICAgICAgaWYgKCFlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9hbmltYXRpb24vSW1wbGljaXRBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0aW9uLmgKaW5kZXggZWRmOGE4MTViNDA2MTM1
MDBkNzkzZDQ5MGZlNjkyNzUyODU4M2JlYS4uYmY0NzFjZTcwNjQwMjBhOGU4YzYwNWFiYTY4OWYz
NDBmMzUxMWZiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vSW1w
bGljaXRBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9JbXBs
aWNpdEFuaW1hdGlvbi5oCkBAIC0zNSwxMSArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBSZW5kZXJFbGVtZW50OworCiAvLyBBbiBJbXBsaWNpdEFuaW1hdGlvbiB0cmFj
a3MgdGhlIHN0YXRlIG9mIGEgdHJhbnNpdGlvbiBvZiBhIHNwZWNpZmljIENTUyBwcm9wZXJ0eQot
Ly8gZm9yIGEgc2luZ2xlIFJlbmRlck9iamVjdC4KKy8vIGZvciBhIHNpbmdsZSBSZW5kZXJFbGVt
ZW50LgogY2xhc3MgSW1wbGljaXRBbmltYXRpb24gOiBwdWJsaWMgQW5pbWF0aW9uQmFzZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SW1wbGljaXRBbmltYXRpb24+IGNyZWF0ZShj
b25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwgQ1NTUHJvcGVydHlJRCBhbmltYXRpbmdQcm9wZXJ0
eSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVB
bmltYXRpb24sIFJlbmRlclN0eWxlKiBmcm9tU3R5bGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8
SW1wbGljaXRBbmltYXRpb24+IGNyZWF0ZShjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwgQ1NT
UHJvcGVydHlJRCBhbmltYXRpbmdQcm9wZXJ0eSwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIENv
bXBvc2l0ZUFuaW1hdGlvbiogY29tcG9zaXRlQW5pbWF0aW9uLCBSZW5kZXJTdHlsZSogZnJvbVN0
eWxlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbXBsaWNpdEFuaW1hdGlv
bihhbmltYXRpb24sIGFuaW1hdGluZ1Byb3BlcnR5LCByZW5kZXJlciwgY29tcG9zaXRlQW5pbWF0
aW9uLCBmcm9tU3R5bGUpKTsKICAgICB9OwpAQCAtNTIsNyArNTQsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0aW9uKGRvdWJsZSAvKnRpbWVPZmZzZXQqLyk7CiAgICAg
dmlydHVhbCB2b2lkIGVuZEFuaW1hdGlvbigpOwogCi0gICAgdmlydHVhbCB2b2lkIGFuaW1hdGUo
Q29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyT2JqZWN0KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1
cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+
JiBhbmltYXRlZFN0eWxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmlt
YXRpb24qLCBSZW5kZXJFbGVtZW50KiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwg
UmVuZGVyU3R5bGUqIHRhcmdldFN0eWxlLCBSZWZQdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0
eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QW5pbWF0ZWRTdHlsZShSZWZQdHI8UmVuZGVyU3R5
bGU+JiBhbmltYXRlZFN0eWxlKTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoUmVuZGVyU3R5bGUq
IHRvKTsKIApAQCAtODIsNyArODQsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogcHJpdmF0ZToK
LSAgICBJbXBsaWNpdEFuaW1hdGlvbihjb25zdCBBbmltYXRpb24mLCBDU1NQcm9wZXJ0eUlELCBS
ZW5kZXJPYmplY3QqLCBDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJTdHlsZSopOworICAgIElt
cGxpY2l0QW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYsIENTU1Byb3BlcnR5SUQsIFJlbmRlckVs
ZW1lbnQqLCBDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJTdHlsZSopOwogICAgIHZpcnR1YWwg
fkltcGxpY2l0QW5pbWF0aW9uKCk7CiAKICAgICBDU1NQcm9wZXJ0eUlEIG1fdHJhbnNpdGlvblBy
b3BlcnR5OyAvLyBUcmFuc2l0aW9uIHByb3BlcnR5IGFzIHNwZWNpZmllZCBpbiB0aGUgUmVuZGVy
U3R5bGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFt
ZUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFu
aW1hdGlvbi5jcHAKaW5kZXggYmFmMmZlNDdmODE3MzY4ZjY1NzI4YTc5ZjA1ZWMwMDUwNzk0Yjlh
Mi4uMjdjNTE0M2I1YzM4OGE5MzYwY2QyNjg3NjQ5ZTExODVmMjUzN2IwYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcApAQCAt
NDIsMTYgKzQyLDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotS2V5ZnJhbWVBbmltYXRpb246OktleWZyYW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlv
biYgYW5pbWF0aW9uLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBpbnQgaW5kZXgsIENvbXBvc2l0
ZUFuaW1hdGlvbiogY29tcEFuaW0sIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVkU3R5bGUpCitLZXlm
cmFtZUFuaW1hdGlvbjo6S2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRp
b24sIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBpbnQgaW5kZXgsIENvbXBvc2l0ZUFuaW1hdGlv
biogY29tcEFuaW0sIFJlbmRlclN0eWxlKiB1bmFuaW1hdGVkU3R5bGUpCiAgICAgOiBBbmltYXRp
b25CYXNlKGFuaW1hdGlvbiwgcmVuZGVyZXIsIGNvbXBBbmltKQotICAgICwgbV9rZXlmcmFtZXMo
cmVuZGVyZXIsIGFuaW1hdGlvbi5uYW1lKCkpCisgICAgLCBtX2tleWZyYW1lcyhhbmltYXRpb24u
bmFtZSgpKQogICAgICwgbV9pbmRleChpbmRleCkKICAgICAsIG1fc3RhcnRFdmVudERpc3BhdGNo
ZWQoZmFsc2UpCiAgICAgLCBtX3VuYW5pbWF0ZWRTdHlsZSh1bmFuaW1hdGVkU3R5bGUpCiB7CiAg
ICAgLy8gR2V0IHRoZSBrZXlmcmFtZSBSZW5kZXJTdHlsZXMKLSAgICBpZiAobV9vYmplY3QgJiYg
bV9vYmplY3QtPm5vZGUoKSAmJiBtX29iamVjdC0+bm9kZSgpLT5pc0VsZW1lbnROb2RlKCkpCi0g
ICAgICAgIG1fb2JqZWN0LT5kb2N1bWVudCgpLmVuc3VyZVN0eWxlUmVzb2x2ZXIoKS5rZXlmcmFt
ZVN0eWxlc0ZvckFuaW1hdGlvbih0b0VsZW1lbnQobV9vYmplY3QtPm5vZGUoKSksIHVuYW5pbWF0
ZWRTdHlsZSwgbV9rZXlmcmFtZXMpOworICAgIGlmIChtX29iamVjdCAmJiBtX29iamVjdC0+ZWxl
bWVudCgpKQorICAgICAgICBtX29iamVjdC0+ZG9jdW1lbnQoKS5lbnN1cmVTdHlsZVJlc29sdmVy
KCkua2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24obV9vYmplY3QtPmVsZW1lbnQoKSwgdW5hbmlt
YXRlZFN0eWxlLCBtX2tleWZyYW1lcyk7CiAKICAgICAvLyBVcGRhdGUgdGhlIG1fdHJhbnNmb3Jt
RnVuY3Rpb25MaXN0VmFsaWQgZmxhZyBiYXNlZCBvbiB3aGV0aGVyIHRoZSBmdW5jdGlvbiBsaXN0
cyBpbiB0aGUga2V5ZnJhbWVzIG1hdGNoLgogICAgIHZhbGlkYXRlVHJhbnNmb3JtRnVuY3Rpb25M
aXN0KCk7CkBAIC0xMzksNyArMTM5LDcgQEAgdm9pZCBLZXlmcmFtZUFuaW1hdGlvbjo6ZmV0Y2hJ
bnRlcnZhbEVuZHBvaW50c0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkKICAgICBw
cm9nID0gcHJvZ3Jlc3Moc2NhbGUsIG9mZnNldCwgdGltaW5nRnVuY3Rpb24pOwogfQogCi12b2lk
IEtleWZyYW1lQW5pbWF0aW9uOjphbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiogY29tcG9zaXRl
QW5pbWF0aW9uLCBSZW5kZXJPYmplY3QqLCBjb25zdCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxl
KiB0YXJnZXRTdHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkKK3ZvaWQg
S2V5ZnJhbWVBbmltYXRpb246OmFuaW1hdGUoQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVB
bmltYXRpb24sIFJlbmRlckVsZW1lbnQqLCBjb25zdCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxl
KiB0YXJnZXRTdHlsZSwgUmVmUHRyPFJlbmRlclN0eWxlPiYgYW5pbWF0ZWRTdHlsZSkKIHsKICAg
ICAvLyBGaXJlIHRoZSBzdGFydCB0aW1lb3V0IGlmIG5lZWRlZAogICAgIGZpcmVBbmltYXRpb25F
dmVudHNJZk5lZWRlZCgpOwpAQCAtMjUxLDcgKzI1MSw3IEBAIHZvaWQgS2V5ZnJhbWVBbmltYXRp
b246OnBhdXNlQW5pbWF0aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KQogI2VuZGlmCiAgICAgLy8gUmVz
dG9yZSB0aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkK
LSAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAg
c2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+ZWxlbWVudCgpKTsKIH0KIAogdm9pZCBLZXlm
cmFtZUFuaW1hdGlvbjo6ZW5kQW5pbWF0aW9uKCkKQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIEtl
eWZyYW1lQW5pbWF0aW9uOjplbmRBbmltYXRpb24oKQogI2VuZGlmCiAgICAgLy8gUmVzdG9yZSB0
aGUgb3JpZ2luYWwgKHVuYW5pbWF0ZWQpIHN0eWxlCiAgICAgaWYgKCFwYXVzZWQoKSkKLSAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgc2V0TmVl
ZHNTdHlsZVJlY2FsYyhtX29iamVjdC0+ZWxlbWVudCgpKTsKIH0KIAogYm9vbCBLZXlmcmFtZUFu
aW1hdGlvbjo6c2hvdWxkU2VuZEV2ZW50Rm9yTGlzdGVuZXIoRG9jdW1lbnQ6Okxpc3RlbmVyVHlw
ZSBsaXN0ZW5lclR5cGUpIGNvbnN0CkBAIC0zMDksOSArMzA5LDcgQEAgYm9vbCBLZXlmcmFtZUFu
aW1hdGlvbjo6c2VuZEFuaW1hdGlvbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBkb3VibGUKIAogICAgIGlmIChzaG91bGRTZW5kRXZlbnRGb3JMaXN0ZW5lcihsaXN0ZW5lclR5
cGUpKSB7CiAgICAgICAgIC8vIERpc3BhdGNoIHRoZSBldmVudAotICAgICAgICBSZWZQdHI8RWxl
bWVudD4gZWxlbWVudDsKLSAgICAgICAgaWYgKG1fb2JqZWN0LT5ub2RlKCkgJiYgbV9vYmplY3Qt
Pm5vZGUoKS0+aXNFbGVtZW50Tm9kZSgpKQotICAgICAgICAgICAgZWxlbWVudCA9IHRvRWxlbWVu
dChtX29iamVjdC0+bm9kZSgpKTsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBt
X29iamVjdC0+ZWxlbWVudCgpOwogCiAgICAgICAgIEFTU0VSVCghZWxlbWVudCB8fCAhZWxlbWVu
dC0+ZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKTsKICAgICAgICAgaWYgKCFlbGVtZW50KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmgKaW5k
ZXggYjIxNWQ5MmNiNjQxMjc2YTMyZjgwN2RmM2U2ZDlkNTk1YTk1MGY0MC4uNDcwYjE5MDliN2M5
NzIyMjBhMmY5ODRmZGU1ZjUyNjQyZTBhMzE0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9hbmltYXRpb24vS2V5ZnJhbWVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9LZXlmcmFtZUFuaW1hdGlvbi5oCkBAIC0zNywxNyArMzcsMTYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotLy8gQSBLZXlmcmFtZUFu
aW1hdGlvbiB0cmFja3MgdGhlIHN0YXRlIG9mIGFuIGV4cGxpY2l0IGFuaW1hdGlvbgotLy8gZm9y
IGEgc2luZ2xlIFJlbmRlck9iamVjdC4KLWNsYXNzIEtleWZyYW1lQW5pbWF0aW9uIDogcHVibGlj
IEFuaW1hdGlvbkJhc2UgeworLy8gQSBLZXlmcmFtZUFuaW1hdGlvbiB0cmFja3MgdGhlIHN0YXRl
IG9mIGFuIGV4cGxpY2l0IGFuaW1hdGlvbiBmb3IgYSBzaW5nbGUgUmVuZGVyRWxlbWVudC4KK2Ns
YXNzIEtleWZyYW1lQW5pbWF0aW9uIEZJTkFMIDogcHVibGljIEFuaW1hdGlvbkJhc2UgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEtleWZyYW1lQW5pbWF0aW9uPiBjcmVhdGUoY29u
c3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGludCBpbmRl
eCwgQ29tcG9zaXRlQW5pbWF0aW9uKiBjb21wb3NpdGVBbmltYXRpb24sIFJlbmRlclN0eWxlKiB1
bmFuaW1hdGVkU3R5bGUpCisgICAgc3RhdGljIFJlZlB0cjxLZXlmcmFtZUFuaW1hdGlvbj4gY3Jl
YXRlKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwg
aW50IGluZGV4LCBDb21wb3NpdGVBbmltYXRpb24qIGNvbXBvc2l0ZUFuaW1hdGlvbiwgUmVuZGVy
U3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgS2V5ZnJhbWVBbmltYXRpb24oYW5pbWF0aW9uLCByZW5kZXJlciwgaW5kZXgsIGNvbXBvc2l0
ZUFuaW1hdGlvbiwgdW5hbmltYXRlZFN0eWxlKSk7Ci0gICAgfTsKKyAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgYW5pbWF0ZShDb21wb3NpdGVBbmltYXRpb24qLCBSZW5kZXJPYmplY3QqLCBjb25z
dCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUsIFJl
ZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRB
bmltYXRlZFN0eWxlKFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpOworICAgIHZp
cnR1YWwgdm9pZCBhbmltYXRlKENvbXBvc2l0ZUFuaW1hdGlvbiosIFJlbmRlckVsZW1lbnQqLCBj
b25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBSZW5kZXJTdHlsZSogdGFyZ2V0U3R5bGUs
IFJlZlB0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bGUpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBnZXRBbmltYXRlZFN0eWxlKFJlZlB0cjxSZW5kZXJTdHlsZT4mKSBPVkVSUklERTsK
IAogICAgIGNvbnN0IEtleWZyYW1lTGlzdCYga2V5ZnJhbWVzKCkgY29uc3QgeyByZXR1cm4gbV9r
ZXlmcmFtZXM7IH0KIApAQCAtNjAsMjMgKzU5LDIzIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVu
YW5pbWF0ZWRTdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZSkgeyBtX3VuYW5pbWF0
ZWRTdHlsZSA9IHN0eWxlOyB9CiAgICAgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdW5hbmltYXRlZFN0eWxlLmdldCgpOyB9CiAKLSAgICB2aXJ0dWFsIGRv
dWJsZSB0aW1lVG9OZXh0U2VydmljZSgpOworICAgIHZpcnR1YWwgZG91YmxlIHRpbWVUb05leHRT
ZXJ2aWNlKCkgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgb25Bbmlt
YXRpb25TdGFydChkb3VibGUgZWxhcHNlZFRpbWUpOwotICAgIHZpcnR1YWwgdm9pZCBvbkFuaW1h
dGlvbkl0ZXJhdGlvbihkb3VibGUgZWxhcHNlZFRpbWUpOwotICAgIHZpcnR1YWwgdm9pZCBvbkFu
aW1hdGlvbkVuZChkb3VibGUgZWxhcHNlZFRpbWUpOwotICAgIHZpcnR1YWwgYm9vbCBzdGFydEFu
aW1hdGlvbihkb3VibGUgdGltZU9mZnNldCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhdXNlQW5pbWF0
aW9uKGRvdWJsZSB0aW1lT2Zmc2V0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZW5kQW5pbWF0aW9uKCk7
CisgICAgdmlydHVhbCB2b2lkIG9uQW5pbWF0aW9uU3RhcnQoZG91YmxlIGVsYXBzZWRUaW1lKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25BbmltYXRpb25JdGVyYXRpb24oZG91YmxlIGVs
YXBzZWRUaW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25BbmltYXRpb25FbmQoZG91
YmxlIGVsYXBzZWRUaW1lKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRBbmltYXRp
b24oZG91YmxlIHRpbWVPZmZzZXQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFu
aW1hdGlvbihkb3VibGUgdGltZU9mZnNldCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGVu
ZEFuaW1hdGlvbigpIE9WRVJSSURFOwogCi0gICAgdmlydHVhbCB2b2lkIG92ZXJyaWRlQW5pbWF0
aW9ucygpOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWVPdmVycmlkZGVuQW5pbWF0aW9ucygpOwor
ICAgIHZpcnR1YWwgdm9pZCBvdmVycmlkZUFuaW1hdGlvbnMoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVzdW1lT3ZlcnJpZGRlbkFuaW1hdGlvbnMoKSBPVkVSUklERTsKIAogICAgIGJv
b2wgc2hvdWxkU2VuZEV2ZW50Rm9yTGlzdGVuZXIoRG9jdW1lbnQ6Okxpc3RlbmVyVHlwZSBpbkxp
c3RlbmVyVHlwZSkgY29uc3Q7CiAgICAgYm9vbCBzZW5kQW5pbWF0aW9uRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiwgZG91YmxlIGVsYXBzZWRUaW1lKTsKIAotICAgIHZpcnR1YWwgYm9vbCBhZmZl
Y3RzUHJvcGVydHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFmZmVj
dHNQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdCBPVkVSUklERTsKIAogICAgIHZvaWQgdmFs
aWRhdGVUcmFuc2Zvcm1GdW5jdGlvbkxpc3QoKTsKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBA
IC04NCw3ICs4Myw3IEBAIHByb3RlY3RlZDoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIEtleWZy
YW1lQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYsIFJlbmRlck9iamVjdCosIGludCBpbmRleCwg
Q29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSk7CisgICAg
S2V5ZnJhbWVBbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiwgUmVuZGVyRWxlbWVudCosIGludCBp
bmRleCwgQ29tcG9zaXRlQW5pbWF0aW9uKiwgUmVuZGVyU3R5bGUqIHVuYW5pbWF0ZWRTdHlsZSk7
CiAgICAgdmlydHVhbCB+S2V5ZnJhbWVBbmltYXRpb24oKTsKICAgICAKICAgICAvLyBHZXQgdGhl
IHN0eWxlcyBmb3IgdGhlIGdpdmVuIHByb3BlcnR5IHN1cnJvdW5kaW5nIHRoZSBjdXJyZW50IGFu
aW1hdGlvbiB0aW1lIGFuZCB0aGUgcHJvZ3Jlc3MgYmV0d2VlbiB0aGVtLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCmluZGV4IDkwNjJjYjFjNzE1MmU0NjlhNDBk
NTQxMjQyMzcyODBjMmI4ZjUzMjUuLjhlYzk1NjBjZDc0ZTE0MzBlOTRjZGRhMDQ0Nzc3YTI5MjAw
ZTViOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KQEAg
LTEzOCw3ICsxMzgsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6Zm9jdXNEb2N1bWVudFZpZXcoKQog
Ym9vbCBFdmVudEhhbmRsZXI6OnBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50KQogewogICAgIC8vIEZpZ3VyZSBv
dXQgd2hpY2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KLSAgICBSZW5kZXJPYmplY3QqIHRh
cmdldCA9IGV2ZW50LnRhcmdldE5vZGUoKSA/IGV2ZW50LnRhcmdldE5vZGUoKS0+cmVuZGVyZXIo
KSA6IDA7CisgICAgYXV0byB0YXJnZXQgPSBldmVudC50YXJnZXROb2RlKCkgPyBldmVudC50YXJn
ZXROb2RlKCktPnJlbmRlcmVyKCkgOiAwOwogICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmlz
V2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKQEAgLTM1Niw3ICszNTYsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKE1vdXNlRXZl
bnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgICAgICAgICAgTm9kZSogbm9kZSA9IGV2ZW50
LnRhcmdldE5vZGUoKTsKICAgICAgICAgICAgIGlmICghbm9kZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OwogICAgICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzV2lkZ2V0KCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgV2lkZ2V0KiB3aWRnZXQg
PSB0b1JlbmRlcldpZGdldChyZW5kZXJlciktPndpZGdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9tYWMvRnJhbWVTbmFwc2hvdHRpbmdNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90dGluZ01hYy5tbQppbmRleCA0Yzg4NmViZDQ2NDNkYmU1
MzQxNjdkMDZkOTMxZWNjMTViMDJmOWFhLi4yOWVjNzdlMTRmZTQ4MTJlY2Y3Y2FiZjNkMWY5NzUy
OWZhZWZhYWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBz
aG90dGluZ01hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9GcmFtZVNuYXBzaG90
dGluZ01hYy5tbQpAQCAtMTM1LDcgKzEzNSw3IEBAIE5TSW1hZ2UqIHNuYXBzaG90RHJhZ0ltYWdl
KEZyYW1lKiBmcmFtZSwgTm9kZSogbm9kZSwgTlNSZWN0KiBpbWFnZVJlY3QsIE5TUmVjdCoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbXBseSBuZXcgc3R5bGVz
LCBwbHVzIEpTIGNvdWxkIGhhdmUgY2hhbmdlZCBvdGhlciB0aGluZ3MKIAogCi0gICAgLy8gRG9j
dW1lbnQ6OnVwZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBhd2F5IHRoZSBvcmlnaW5hbCBSZW5k
ZXJPYmplY3QuCisgICAgLy8gRG9jdW1lbnQ6OnVwZGF0ZUxheW91dCBtYXkgaGF2ZSBibG93biBh
d2F5IHRoZSBvcmlnaW5hbCBSZW5kZXJFbGVtZW50LgogICAgIHJlbmRlcmVyID0gbm9kZS0+cmVu
ZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbmlsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlhUGxheWVyUHJp
dmF0ZVFUS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL01lZGlh
UGxheWVyUHJpdmF0ZVFUS2l0Lm1tCmluZGV4IDBjODRmOGE5ODI1OTFiNzM0OGU5ZjIwYTQ2NjM1
MjFkNTBkYjdiOWUuLmY5MzUxYTcwYWNmZWUxYTRmYTM5MTAyMTkyMWUyZDcwNjU4YjM2ZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXll
clByaXZhdGVRVEtpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9t
YWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQubW0KQEAgLTUyLDggKzUyLDggQEAKICNpZiBEUkFX
X0ZSQU1FX1JBVEUKICNpbXBvcnQgIkZvbnQuaCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCi0jaW1w
b3J0ICJSZW5kZXJPYmplY3QuaCIKICNpbXBvcnQgIlJlbmRlclN0eWxlLmgiCisjaW1wb3J0ICJS
ZW5kZXJWaWV3LmgiCiAjZW5kaWYKIAogU09GVF9MSU5LX0ZSQU1FV09SSyhRVEtpdCkKQEAgLTEz
NTIsMTAgKzEzNTIsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVRVEtpdDo6cGFpbnQoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByKQogI2lmIERSQVdfRlJBTUVf
UkFURQogICAgIC8vIERyYXcgdGhlIGZyYW1lIHJhdGUgb25seSBhZnRlciBoYXZpbmcgcGxheWVk
IG1vcmUgdGhhbiAxMCBmcmFtZXMuCiAgICAgaWYgKG1fZnJhbWVDb3VudFdoaWxlUGxheWluZyA+
IDEwKSB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fcGxheWVyLT5mcmFtZVZpZXcoKSA/ICZt
X3BsYXllci0+ZnJhbWVWaWV3KCktPmZyYW1lKCkgOiBOVUxMOwotICAgICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogTlVMTDsKLSAgICAgICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPnJlbmRlclZpZXcoKSA6
IE5VTEw7Ci0gICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0gcmVuZGVyZXIgPyByZW5k
ZXJlci0+c3R5bGUoKSA6IE5VTEw7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fcGxheWVyLT5m
cmFtZVZpZXcoKSA/ICZtX3BsYXllci0+ZnJhbWVWaWV3KCktPmZyYW1lKCkgOiBudWxscHRyOwor
ICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDog
bnVsbHB0cjsKKyAgICAgICAgYXV0byByZW5kZXJlciA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPnJl
bmRlclZpZXcoKSA6IG51bGxwdHI7CisgICAgICAgIFJlbmRlclN0eWxlKiBzdHlsZVRvVXNlID0g
cmVuZGVyZXIgPyByZW5kZXJlci0+c3R5bGUoKSA6IG51bGxwdHI7CiAgICAgICAgIGlmIChzdHls
ZVRvVXNlKSB7CiAgICAgICAgICAgICBkb3VibGUgZnJhbWVSYXRlID0gKG1fZnJhbWVDb3VudFdo
aWxlUGxheWluZyAtIDEpIC8gKCBtX3N0YXJ0ZWRQbGF5aW5nID8gKFtOU0RhdGUgdGltZUludGVy
dmFsU2luY2VSZWZlcmVuY2VEYXRlXSAtIG1fdGltZVN0YXJ0ZWRQbGF5aW5nKSA6CiAgICAgICAg
ICAgICAgICAgKG1fdGltZVN0b3BwZWRQbGF5aW5nIC0gbV90aW1lU3RhcnRlZFBsYXlpbmcpICk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291bnRlck5vZGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmNwcAppbmRleCAwOWYwMTc1ZTU4
M2ZjMmUwOTk5N2Q0OGEwMDhkZDA1NTc2NWY3OWQ5Li5iZjFhZDkxZWJmOGJlMmU2ODcwYWU1NDkx
NzdhZmQ5ZjZjYTdmNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ291
bnRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9kZS5j
cHAKQEAgLTIzLDEyICsyMywxMiBAQAogI2luY2x1ZGUgIkNvdW50ZXJOb2RlLmgiCiAKICNpbmNs
dWRlICJSZW5kZXJDb3VudGVyLmgiCi0jaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVk
ZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotQ291bnRlck5vZGU6OkNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCogbywgYm9vbCBo
YXNSZXNldFR5cGUsIGludCB2YWx1ZSkKK0NvdW50ZXJOb2RlOjpDb3VudGVyTm9kZShSZW5kZXJF
bGVtZW50KiBvLCBib29sIGhhc1Jlc2V0VHlwZSwgaW50IHZhbHVlKQogICAgIDogbV9oYXNSZXNl
dFR5cGUoaGFzUmVzZXRUeXBlKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAsIG1fY291bnRJ
blBhcmVudCgwKQpAQCAtOTAsNyArOTAsNyBAQCBDb3VudGVyTm9kZTo6fkNvdW50ZXJOb2RlKCkK
ICAgICByZXNldFJlbmRlcmVycygpOwogfQogCi1QYXNzUmVmUHRyPENvdW50ZXJOb2RlPiBDb3Vu
dGVyTm9kZTo6Y3JlYXRlKFJlbmRlck9iamVjdCogb3duZXIsIGJvb2wgaGFzUmVzZXRUeXBlLCBp
bnQgdmFsdWUpCitQYXNzUmVmUHRyPENvdW50ZXJOb2RlPiBDb3VudGVyTm9kZTo6Y3JlYXRlKFJl
bmRlckVsZW1lbnQqIG93bmVyLCBib29sIGhhc1Jlc2V0VHlwZSwgaW50IHZhbHVlKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ291bnRlck5vZGUob3duZXIsIGhhc1Jlc2V0VHlwZSwgdmFs
dWUpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Db3VudGVyTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2RlLmgKaW5kZXggN2Q2ZGVm
ODFiZGI3YjdhMzZhOTdjMGNiMGMzYmU5MWU1MTliMmRkOC4uYTUzOTdlY2MwMTg4M2JmYzVmMDMw
MDQxZWZjYTk0YTJkM2E3ZDk5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NvdW50ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NvdW50ZXJOb2Rl
LmgKQEAgLTM3LDE4ICszNywxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJl
bmRlck9iamVjdDsKIGNsYXNzIFJlbmRlckNvdW50ZXI7CitjbGFzcyBSZW5kZXJFbGVtZW50Owog
CiBjbGFzcyBDb3VudGVyTm9kZSA6IHB1YmxpYyBSZWZDb3VudGVkPENvdW50ZXJOb2RlPiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q291bnRlck5vZGU+IGNyZWF0ZShSZW5kZXJP
YmplY3QqLCBib29sIGlzUmVzZXQsIGludCB2YWx1ZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
Q291bnRlck5vZGU+IGNyZWF0ZShSZW5kZXJFbGVtZW50KiwgYm9vbCBpc1Jlc2V0LCBpbnQgdmFs
dWUpOwogICAgIH5Db3VudGVyTm9kZSgpOwogICAgIGJvb2wgYWN0c0FzUmVzZXQoKSBjb25zdCB7
IHJldHVybiBtX2hhc1Jlc2V0VHlwZSB8fCAhbV9wYXJlbnQ7IH0KICAgICBib29sIGhhc1Jlc2V0
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVzZXRUeXBlOyB9CiAgICAgaW50IHZhbHVlKCkg
Y29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgIGludCBjb3VudEluUGFyZW50KCkgY29uc3Qg
eyByZXR1cm4gbV9jb3VudEluUGFyZW50OyB9Ci0gICAgUmVuZGVyT2JqZWN0KiBvd25lcigpIGNv
bnN0IHsgcmV0dXJuIG1fb3duZXI7IH0KKyAgICBSZW5kZXJFbGVtZW50KiBvd25lcigpIGNvbnN0
IHsgcmV0dXJuIG1fb3duZXI7IH0KICAgICB2b2lkIGFkZFJlbmRlcmVyKFJlbmRlckNvdW50ZXIq
KTsKICAgICB2b2lkIHJlbW92ZVJlbmRlcmVyKFJlbmRlckNvdW50ZXIqKTsKIApAQCAtNzEsNyAr
NzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDaGlsZChDb3VudGVyTm9kZSopOwogCiBw
cml2YXRlOgotICAgIENvdW50ZXJOb2RlKFJlbmRlck9iamVjdCosIGJvb2wgaXNSZXNldCwgaW50
IHZhbHVlKTsKKyAgICBDb3VudGVyTm9kZShSZW5kZXJFbGVtZW50KiwgYm9vbCBpc1Jlc2V0LCBp
bnQgdmFsdWUpOwogICAgIGludCBjb21wdXRlQ291bnRJblBhcmVudCgpIGNvbnN0OwogICAgIC8v
IEludmFsaWRhdGVzIHRoZSB0ZXh0IGluIHRoZSByZW5kZXJlciBvZiB0aGlzIGNvdW50ZXIsIGlm
IGFueSwKICAgICAvLyBhbmQgaW4gdGhlIHJlbmRlcmVycyBvZiBhbGwgZGVzY2VuZGFudHMgb2Yg
dGhpcyBjb3VudGVyLCBpZiBhbnkuCkBAIC04MSw3ICs4MSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2hhc1Jlc2V0VHlwZTsKICAgICBpbnQgbV92YWx1ZTsKICAgICBpbnQgbV9jb3VudEluUGFy
ZW50OwotICAgIFJlbmRlck9iamVjdCogbV9vd25lcjsKKyAgICBSZW5kZXJFbGVtZW50KiBtX293
bmVyOwogICAgIFJlbmRlckNvdW50ZXIqIG1fcm9vdFJlbmRlcmVyOwogCiAgICAgQ291bnRlck5v
ZGUqIG1fcGFyZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRl
ckVmZmVjdFJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZl
Y3RSZW5kZXJlci5jcHAKaW5kZXggYjA2YmQ0ZTQ3ZjIxMmI0ZTMzM2ZjYjBlZTVhZmZlNDk3OTk2
OTY2Mi4uMWRhN2YwNGU2NDNjMmRmYzE0NTllMTdiYzc1OWUxZmNlNThjMmE2NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0x
MjMsNyArMTIzLDcgQEAgR3JhcGhpY3NDb250ZXh0KiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6aW5w
dXRDb250ZXh0KCkKICAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/IHNvdXJjZUltYWdlKCktPmNv
bnRleHQoKSA6IDA7CiB9CiAKLVBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0ZXJFZmZlY3RS
ZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUGFz
c1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVy
YXRpb24qIGZpbHRlck9wZXJhdGlvbikKK1Bhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBGaWx0ZXJF
ZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24pCiB7CiAjaWYgRU5BQkxFKFNWRykKICAgICBp
ZiAoIXJlbmRlcmVyKQpAQCAtMTQ2LDcgKzE0Niw3IEBAIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0
PiBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyT2JqZWN0
CiAgICAgaWYgKCFmaWx0ZXIpIHsKICAgICAgICAgLy8gQWx0aG91Z2ggd2UgZGlkIG5vdCBmaW5k
IHRoZSByZWZlcmVuY2VkIGZpbHRlciwgaXQgbWlnaHQgZXhpc3QgbGF0ZXIKICAgICAgICAgLy8g
aW4gdGhlIGRvY3VtZW50Ci0gICAgICAgIGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNpb25zKCkt
PmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJPcGVyYXRpb24tPmZyYWdtZW50KCksIHRvRWxlbWVu
dChyZW5kZXJlci0+bm9kZSgpKSk7CisgICAgICAgIGRvY3VtZW50LT5hY2Nlc3NTVkdFeHRlbnNp
b25zKCktPmFkZFBlbmRpbmdSZXNvdXJjZShmaWx0ZXJPcGVyYXRpb24tPmZyYWdtZW50KCksIHJl
bmRlcmVyLT5lbGVtZW50KCkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE3OSw3
ICsxNzksNyBAQCBQYXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gRmlsdGVyRWZmZWN0UmVuZGVyZXI6
OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlck9iamVjdAogI2VuZGlmCiB9CiAKLWJvb2wgRmls
dGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIEZpbHRlckNvbnN1bWVyIGNvbnN1bWVyKQorYm9v
bCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbnMsIEZpbHRlckNvbnN1bWVyIGNvbnN1bWVy
KQogewogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICBtX2hhc0N1c3RvbVNoYWRlckZpbHRl
ciA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVu
ZGVyZXIuaAppbmRleCBhMGY0N2MyN2M5Y2M2ZjBlNDZjNzc1ZmFiZDc1Mjc1MzE4ZjUyYWI3Li4z
NDIyZjMzZDYyYWIyNjg5ZjdmNzgxZDFmYzVhZDliNDkwYmViYTc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuaApAQCAtMzgsMjAgKzM4LDIw
IEBACiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1aWxkZXIu
aCIKICNpbmNsdWRlICJTb3VyY2VHcmFwaGljLmgiCi0KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxGaWx0ZXJF
ZmZlY3Q+ID4gRmlsdGVyRWZmZWN0TGlzdDsKIGNsYXNzIENhY2hlZFNoYWRlcjsKIGNsYXNzIEN1
c3RvbUZpbHRlclByb2dyYW07CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJMYXllcjsKLWNsYXNzIFJlbmRl
ck9iamVjdDsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEZpbHRlckVmZmVjdD4+IEZpbHRlckVm
ZmVjdExpc3Q7CiAKIGVudW0gRmlsdGVyQ29uc3VtZXIgewogICAgIEZpbHRlclByb3BlcnR5LApA
QCAtNzcsNiArNzcsNyBAQCBwdWJsaWM6CiAgICAgR3JhcGhpY3NDb250ZXh0KiBmaWx0ZXJDb250
ZXh0KCkgY29uc3Q7CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiByZXBhaW50UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwYWludFJlY3Q7IH0KKwogcHJpdmF0ZToKICAgICBSZW5kZXJMYXllciog
bV9yZW5kZXJMYXllcjsgLy8gRklYTUU6IHRoaXMgaXMgbWFpbmx5IHVzZWQgdG8gZ2V0IHRoZSBG
aWx0ZXJFZmZlY3RSZW5kZXJlci4gRmlsdGVyRWZmZWN0UmVuZGVyZXJIZWxwZXIgc2hvdWxkIGJl
IHdlYW5lZCBvZmYgaXQuCiAgICAgTGF5b3V0UG9pbnQgbV9wYWludE9mZnNldDsKQEAgLTg1LDMy
ICs4NiwzMSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zdGFydGVkRmlsdGVyRWZmZWN0OwogfTsK
IAotY2xhc3MgRmlsdGVyRWZmZWN0UmVuZGVyZXIgOiBwdWJsaWMgRmlsdGVyCi17CitjbGFzcyBG
aWx0ZXJFZmZlY3RSZW5kZXJlciBGSU5BTCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdFJlbmRlcmVyPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWZQdHI8RmlsdGVyRWZmZWN0UmVu
ZGVyZXI+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRl
ckVmZmVjdFJlbmRlcmVyKCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbHRlckVm
ZmVjdFJlbmRlcmVyKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0U291cmNlSW1hZ2VS
ZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQorICAgIHZvaWQgc2V0U291cmNl
SW1hZ2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0KQogICAgIHsgCiAgICAg
ICAgIG1fc291cmNlRHJhd2luZ1JlZ2lvbiA9IHNvdXJjZUltYWdlUmVjdDsKICAgICAgICAgc2V0
TWF4RWZmZWN0UmVjdHMoc291cmNlSW1hZ2VSZWN0KTsKICAgICAgICAgc2V0RmlsdGVyUmVnaW9u
KHNvdXJjZUltYWdlUmVjdCk7CiAgICAgICAgIG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCA9IGZh
bHNlOwogICAgIH0KLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25z
dCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KKyAgICB2aXJ0dWFsIEZsb2F0UmVj
dCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3NvdXJjZURyYXdp
bmdSZWdpb247IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0K
LSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCB7IHJldHVybiBtX2Zp
bHRlclJlZ2lvbjsgfQorICAgIHZvaWQgc2V0RmlsdGVyUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9uID0gZmlsdGVyUmVnaW9uOyB9CisgICAgdmly
dHVhbCBGbG9hdFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9m
aWx0ZXJSZWdpb247IH0KIAogICAgIEdyYXBoaWNzQ29udGV4dCogaW5wdXRDb250ZXh0KCk7CiAg
ICAgSW1hZ2VCdWZmZXIqIG91dHB1dCgpIGNvbnN0IHsgcmV0dXJuIGxhc3RFZmZlY3QoKS0+YXNJ
bWFnZUJ1ZmZlcigpOyB9CiAKLSAgICBib29sIGJ1aWxkKFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBGaWx0ZXJDb25zdW1lcik7Ci0gICAgUGFzc1JlZlB0
cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFBhc3NSZWZQdHI8RmlsdGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uKik7CisgICAgYm9vbCBidWlsZChSZW5kZXJFbGVtZW50KiwgY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYsIEZpbHRlckNvbnN1bWVyKTsKKyAgICBQYXNzUmVmUHRyPEZpbHRlckVm
ZmVjdD4gYnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCosIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBwcmV2aW91c0VmZmVjdCwgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKik7CiAg
ICAgYm9vbCB1cGRhdGVCYWNraW5nU3RvcmVSZWN0KGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVj
dCk7CiAgICAgdm9pZCBhbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCk7CiAgICAgdm9pZCBj
bGVhckludGVybWVkaWF0ZVJlc3VsdHMoKTsKQEAgLTEyNCw2ICsxMjQsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKENTU19TSEFERVJTKQogICAgIGJvb2wgaGFzQ3VzdG9tU2hhZGVyRmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNDdXN0b21TaGFkZXJGaWx0ZXI7IH0KICNlbmRpZgorCiBwcml2
YXRlOgogICAgIHZvaWQgc2V0TWF4RWZmZWN0UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBlZmZlY3RS
ZWN0KQogICAgIHsKQEAgLTEzMiwxMSArMTMzLDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBl
ZmZlY3QtPnNldE1heEVmZmVjdFJlY3QoZWZmZWN0UmVjdCk7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgUGFzc1JlZlB0cjxGaWx0ZXJFZmZlY3Q+IGxhc3RFZmZlY3QoKSBjb25zdAorCisgICAgRmls
dGVyRWZmZWN0KiBsYXN0RWZmZWN0KCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX2VmZmVj
dHMuc2l6ZSgpID4gMCkKLSAgICAgICAgICAgIHJldHVybiBtX2VmZmVjdHMubGFzdCgpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKCFtX2VmZmVjdHMuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIEZpbHRlckVmZmVjdFJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKaW5kZXggODY5MmM4ZWNmNTI3MTY5YjdhMTRm
OGU5YzlkMmI4MDM5OTkwNThiNC4uYjlhMjdjYjAzNWUyNGEyYmYzMDdmYTQwYTY1ZmQ3NTVmMTgz
ODZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcApAQCAt
MjAwLDcgKzIwMCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXAoVGV4
dERpcmVjdGlvbiYgZGlyKSBjb25zdAogICAgIGlmICghbWFya2VyKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG1faW5uZXJOb25T
aGFyZWROb2RlLT5yZW5kZXJlcigpKQorICAgIGlmIChhdXRvIHJlbmRlcmVyID0gbV9pbm5lck5v
blNoYXJlZE5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIGRpciA9IHJlbmRlcmVyLT5zdHlsZSgp
LT5kaXJlY3Rpb24oKTsKICAgICByZXR1cm4gbWFya2VyLT5kZXNjcmlwdGlvbigpOwogfQpAQCAt
MjI4LDcgKzIyOCw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojp0aXRsZShUZXh0RGlyZWN0aW9u
JiBkaXIpIGNvbnN0CiAgICAgICAgIGlmICh0aXRsZU5vZGUtPmlzRWxlbWVudE5vZGUoKSkgewog
ICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gdG9FbGVtZW50KHRpdGxlTm9kZSktPnRpdGxlKCk7
CiAgICAgICAgICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGl0bGVOb2RlLT5yZW5kZXJlcigpKQorICAgICAg
ICAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGl0bGVOb2RlLT5yZW5kZXJlcigpKQogICAg
ICAgICAgICAgICAgICAgICBkaXIgPSByZW5kZXJlci0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRpdGxlOwogICAgICAgICAgICAgfQpAQCAtMjQzLDcgKzI0
Myw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0Ojppbm5lclRleHRJZlRydW5jYXRlZChUZXh0RGly
ZWN0aW9uJiBkaXIpIGNvbnN0CiAgICAgICAgIGlmICghdHJ1bmNhdGVkTm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSB0cnVuY2F0ZWROb2RlLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChh
dXRvIHJlbmRlcmVyID0gdG9FbGVtZW50KHRydW5jYXRlZE5vZGUpLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICBpZiAocmVuZGVyZXItPmlzUmVuZGVyQmxvY2soKSkgewogICAgICAgICAgICAg
ICAgIFJlbmRlckJsb2NrKiBibG9jayA9IHRvUmVuZGVyQmxvY2socmVuZGVyZXIpOwogICAgICAg
ICAgICAgICAgIGlmIChibG9jay0+c3R5bGUoKS0+dGV4dE92ZXJmbG93KCkpIHsKQEAgLTI5Myw3
ICsyOTMsNyBAQCBJbWFnZSogSGl0VGVzdFJlc3VsdDo6aW1hZ2UoKSBjb25zdAogICAgIGlmICgh
bV9pbm5lck5vblNoYXJlZE5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+cmVuZGVyZXIoKTsKKyAg
ICBhdXRvIHJlbmRlcmVyID0gbV9pbm5lck5vblNoYXJlZE5vZGUtPnJlbmRlcmVyKCk7CiAgICAg
aWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc0ltYWdlKCkpIHsKICAgICAgICAgUmVuZGVySW1h
Z2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7
CiAgICAgICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdl
KCktPmVycm9yT2NjdXJyZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MYXlvdXRSZXBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJl
cGFpbnRlci5jcHAKaW5kZXggMjA1YWQ0YWI4ZDIwNjQxMGU4YjY1Y2Y0OTUzMDZhZWI3ZmFjYjJl
OC4uOGQ1ZWJkYjExZGNlMGIzOTU5NDFkMDg1NDY3NmZmMWQ2YmNjMTVlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5jcHAKQEAgLTI2LDExICsyNiwxMSBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkxheW91dFJlcGFpbnRlci5oIgogCi0j
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUxheW91dFJlcGFpbnRlcjo6TGF5b3V0UmVwYWludGVyKFJl
bmRlck9iamVjdCYgb2JqZWN0LCBib29sIGNoZWNrRm9yUmVwYWludCkKK0xheW91dFJlcGFpbnRl
cjo6TGF5b3V0UmVwYWludGVyKFJlbmRlckVsZW1lbnQmIG9iamVjdCwgYm9vbCBjaGVja0ZvclJl
cGFpbnQpCiAgICAgOiBtX29iamVjdChvYmplY3QpCiAgICAgLCBtX3JlcGFpbnRDb250YWluZXIo
MCkKICAgICAsIG1fY2hlY2tGb3JSZXBhaW50KGNoZWNrRm9yUmVwYWludCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9MYXlvdXRSZXBhaW50ZXIuaAppbmRleCAwNjU4ZWE4NTNjMjBlYTVjMzcx
ZGIxYzQzNWE3YzQ2YWRjODE1MjI2Li5jYWU4ZjEwMjAyMjIwNzc2ZmU2YTk0NWVlZGE5NTgxMDFm
YWFmMDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5b3V0UmVwYWlu
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xheW91dFJlcGFpbnRlci5oCkBA
IC0zMCwxMiArMzAsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJF
bGVtZW50OwogY2xhc3MgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDsKLWNsYXNzIFJlbmRlck9iamVj
dDsKIAogY2xhc3MgTGF5b3V0UmVwYWludGVyIHsKIHB1YmxpYzoKLSAgICBMYXlvdXRSZXBhaW50
ZXIoUmVuZGVyT2JqZWN0JiwgYm9vbCBjaGVja0ZvclJlcGFpbnQpOworICAgIExheW91dFJlcGFp
bnRlcihSZW5kZXJFbGVtZW50JiwgYm9vbCBjaGVja0ZvclJlcGFpbnQpOwogCiAgICAgYm9vbCBj
aGVja0ZvclJlcGFpbnQoKSBjb25zdCB7IHJldHVybiBtX2NoZWNrRm9yUmVwYWludDsgfQogCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBib29sIHJlcGFpbnRBZnRlckxheW91dCgpOwog
CiBwcml2YXRlOgotICAgIFJlbmRlck9iamVjdCYgbV9vYmplY3Q7CisgICAgUmVuZGVyRWxlbWVu
dCYgbV9vYmplY3Q7CiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogbV9yZXBhaW50Q29udGFp
bmVyOwogICAgIC8vIFdlIHN0b3JlIHRoZXNlIHZhbHVlcyBhcyBMYXlvdXRSZWN0cywgYnV0IHRo
ZSBmaW5hbCBpbnZhbGlkYXRpb25zIHdpbGwgYmUgcGl4ZWwgc25hcHBlZAogICAgIExheW91dFJl
Y3QgbV9vbGRCb3VuZHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGF5
b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlvdXRTdGF0ZS5oCmluZGV4
IDQ5MmE3NTM1ZGFiZTQxNTEwNWI1NTljNWMwMzMxNDNhM2FiZWQ2MDguLjBiYWViN2QxOTk2NWVl
N2IwNzliYmVmOWMwYTZjOWNlMmI4M2E1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9MYXlvdXRTdGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9MYXlv
dXRTdGF0ZS5oCkBAIC0zNywxMSArMzcsMTAgQEAgY2xhc3MgUmVuZGVyQXJlbmE7CiBjbGFzcyBS
ZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlckJsb2NrRmxvdzsKIGNsYXNzIFJlbmRlckJveDsKLWNs
YXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJGbG93
VGhyZWFkOwotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQorY2xhc3MgUmVuZGVyT2JqZWN0OwogY2xh
c3MgU2hhcGVJbnNpZGVJbmZvOwotI2VuZGlmCiAKIGNsYXNzIExheW91dFN0YXRlIHsKICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShMYXlvdXRTdGF0ZSk7CkBAIC01NCwxNSArNTMsMTUgQEAgcHVi
bGljOgogICAgICAgICAsIG1fbGF5b3V0RGVsdGFYU2F0dXJhdGVkKGZhbHNlKQogICAgICAgICAs
IG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkKGZhbHNlKQogI2VuZGlmCi0gICAgICAgICwgbV9jb2x1
bW5JbmZvKDApCi0gICAgICAgICwgbV9saW5lR3JpZCgwKQotICAgICAgICAsIG1fbmV4dCgwKQor
ICAgICAgICAsIG1fY29sdW1uSW5mbyhudWxscHRyKQorICAgICAgICAsIG1fbGluZUdyaWQobnVs
bHB0cikKKyAgICAgICAgLCBtX25leHQobnVsbHB0cikKICNpZiBFTkFCTEUoQ1NTX1NIQVBFUykK
LSAgICAgICAgLCBtX3NoYXBlSW5zaWRlSW5mbygwKQorICAgICAgICAsIG1fc2hhcGVJbnNpZGVJ
bmZvKG51bGxwdHIpCiAjZW5kaWYKICAgICAgICAgLCBtX3BhZ2VMb2dpY2FsSGVpZ2h0KDApCiAj
aWZuZGVmIE5ERUJVRwotICAgICAgICAsIG1fcmVuZGVyZXIoMCkKKyAgICAgICAgLCBtX3JlbmRl
cmVyKG51bGxwdHIpCiAjZW5kaWYKICAgICB7CiAgICAgfQpAQCAtMTEzLDE0ICsxMTIsMTUgQEAg
cHJpdmF0ZToKIAogcHVibGljOgogICAgIC8vIERvIG5vdCBhZGQgYW55dGhpbmcgYXBhcnQgZnJv
bSBiaXRmaWVsZHMgdW50aWwgYWZ0ZXIgbV9jb2x1bW5JbmZvLiBTZWUgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDE3MwotICAgIGJvb2wgbV9jbGlwcGVkOjE7Ci0g
ICAgYm9vbCBtX2lzUGFnaW5hdGVkOjE7CisgICAgYm9vbCBtX2NsaXBwZWQgOiAxOworICAgIGJv
b2wgbV9pc1BhZ2luYXRlZCA6IDE7CiAgICAgLy8gSWYgb3VyIHBhZ2UgaGVpZ2h0IGhhcyBjaGFu
Z2VkLCB0aGlzIHdpbGwgZm9yY2UgYWxsIGJsb2NrcyB0byByZWxheW91dC4KLSAgICBib29sIG1f
cGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkOjE7CisgICAgYm9vbCBtX3BhZ2VMb2dpY2FsSGVpZ2h0
Q2hhbmdlZCA6IDE7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRCAmJiBFTkFCTEUoU0FUVVJBVEVEX0xB
WU9VVF9BUklUSE1FVElDKQotICAgIGJvb2wgbV9sYXlvdXREZWx0YVhTYXR1cmF0ZWQ6MTsKLSAg
ICBib29sIG1fbGF5b3V0RGVsdGFZU2F0dXJhdGVkOjE7CisgICAgYm9vbCBtX2xheW91dERlbHRh
WFNhdHVyYXRlZCA6IDE7CisgICAgYm9vbCBtX2xheW91dERlbHRhWVNhdHVyYXRlZCA6IDE7CiAj
ZW5kaWYKKwogICAgIC8vIElmIHRoZSBlbmNsb3NpbmcgcGFnaW5hdGlvbiBtb2RlbCBpcyBhIGNv
bHVtbiBtb2RlbCwgdGhlbiB0aGlzIHdpbGwgc3RvcmUgY29sdW1uIGluZm9ybWF0aW9uIGZvciBl
YXN5IHJldHJpZXZhbC9tYW5pcHVsYXRpb24uCiAgICAgQ29sdW1uSW5mbyogbV9jb2x1bW5JbmZv
OwogICAgIC8vIFRoZSBjdXJyZW50IGxpbmUgZ3JpZCB0aGF0IHdlJ3JlIHNuYXBwaW5nIHRvIGFu
ZCB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgZ3JpZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9MaW5lV2lkdGguaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9MaW5lV2lkdGguaAppbmRleCBkMDBiMWNkMWU4YWMyMjlkMzY2MjI4MmQxNGVhODcyYTA4YWFj
ZmE1Li5iYTVhNmU5Zjk0MzJkMTc1ZjcyNThjMjM0YzdiOTIwOGJmZTNjY2MyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTGluZVdpZHRoLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0xpbmVXaWR0aC5oCkBAIC0zNiwxMSArMzYsMTIgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgRmxvYXRpbmdPYmplY3Q7Ci1zdHJ1Y3QgTGluZVNlZ21lbnQ7CiBj
bGFzcyBSZW5kZXJCbG9jazsKIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFJlbmRlclJ1YnlS
dW47CiAKK3N0cnVjdCBMaW5lU2VnbWVudDsKKwogZW51bSBJbmRlbnRUZXh0T3JOb3QgeyBEb05v
dEluZGVudFRleHQsIEluZGVudFRleHQgfTsKIAogY2xhc3MgTGluZVdpZHRoIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Mb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVz
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hl
cy5oCmluZGV4IDY1OGUwMjI4NWFiMmE2NDA1MzUxMmY2NTQ2ZTFhZjI3YmZhN2M1ZGUuLmI5YTI2
Y2M5ODFmYjUwNDhjZTM3NTk4N2Q5MTk0ZGJhOWFmYTZlOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9Mb2dpY2FsU2VsZWN0aW9uT2Zmc2V0Q2FjaGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0xvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNoZXMuaApAQCAt
MjUsNyArMjUsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBpbmxpbmUgYm9v
bCBpc0NvbnRhaW5pbmdCbG9ja0NhbmRpZGF0ZUZvckFic29sdXRlbHlQb3NpdGlvbmVkT2JqZWN0
KFJlbmRlck9iamVjdCogb2JqZWN0KQorc3RhdGljIGlubGluZSBib29sIGlzQ29udGFpbmluZ0Js
b2NrQ2FuZGlkYXRlRm9yQWJzb2x1dGVseVBvc2l0aW9uZWRPYmplY3QoUmVuZGVyRWxlbWVudCog
b2JqZWN0KQogewogICAgIHJldHVybiBvYmplY3QtPnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gU3Rh
dGljUG9zaXRpb24KICAgICAgICAgfHwgKG9iamVjdC0+aGFzVHJhbnNmb3JtKCkgJiYgb2JqZWN0
LT5pc1JlbmRlckJsb2NrKCkpCkBAIC0zNSwyOSArMzUsMjkgQEAgc3RhdGljIGlubGluZSBib29s
IGlzQ29udGFpbmluZ0Jsb2NrQ2FuZGlkYXRlRm9yQWJzb2x1dGVseVBvc2l0aW9uZWRPYmplY3Qo
UmVuZGUKICAgICAgICAgfHwgb2JqZWN0LT5pc1JlbmRlclZpZXcoKTsKIH0KIAotc3RhdGljIGlu
bGluZSBib29sIGlzTm9uUmVuZGVyQmxvY2tJbmxpbmUoUmVuZGVyT2JqZWN0KiBvYmplY3QpCitz
dGF0aWMgaW5saW5lIGJvb2wgaXNOb25SZW5kZXJCbG9ja0lubGluZShSZW5kZXJFbGVtZW50KiBv
YmplY3QpCiB7CiAgICAgcmV0dXJuIChvYmplY3QtPmlzSW5saW5lKCkgJiYgIW9iamVjdC0+aXNS
ZXBsYWNlZCgpKSB8fCAhb2JqZWN0LT5pc1JlbmRlckJsb2NrKCk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgUmVuZGVyT2JqZWN0KiBjb250YWluaW5nQmxvY2tGb3JGaXhlZFBvc2l0aW9uKFJlbmRlck9i
amVjdCogcGFyZW50KQorc3RhdGljIGlubGluZSBSZW5kZXJFbGVtZW50KiBjb250YWluaW5nQmxv
Y2tGb3JGaXhlZFBvc2l0aW9uKFJlbmRlckVsZW1lbnQqIHBhcmVudCkKIHsKLSAgICBSZW5kZXJP
YmplY3QqIG9iamVjdCA9IHBhcmVudDsKKyAgICBSZW5kZXJFbGVtZW50KiBvYmplY3QgPSBwYXJl
bnQ7CiAgICAgd2hpbGUgKG9iamVjdCAmJiAhb2JqZWN0LT5jYW5Db250YWluRml4ZWRQb3NpdGlv
bk9iamVjdHMoKSkKICAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5wYXJlbnQoKTsKICAgICBBU1NF
UlQoIW9iamVjdCB8fCAhb2JqZWN0LT5pc0Fub255bW91c0Jsb2NrKCkpOwogICAgIHJldHVybiBv
YmplY3Q7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVuZGVyT2JqZWN0KiBjb250YWluaW5nQmxvY2tG
b3JBYnNvbHV0ZVBvc2l0aW9uKFJlbmRlck9iamVjdCogcGFyZW50KQorc3RhdGljIGlubGluZSBS
ZW5kZXJFbGVtZW50KiBjb250YWluaW5nQmxvY2tGb3JBYnNvbHV0ZVBvc2l0aW9uKFJlbmRlckVs
ZW1lbnQqIHBhcmVudCkKIHsKLSAgICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IHBhcmVudDsKKyAg
ICBSZW5kZXJFbGVtZW50KiBvYmplY3QgPSBwYXJlbnQ7CiAgICAgd2hpbGUgKG9iamVjdCAmJiAh
aXNDb250YWluaW5nQmxvY2tDYW5kaWRhdGVGb3JBYnNvbHV0ZWx5UG9zaXRpb25lZE9iamVjdChv
YmplY3QpKQogICAgICAgICBvYmplY3QgPSBvYmplY3QtPnBhcmVudCgpOwogCiAgICAgLy8gRm9y
IGEgcmVsYXRpdmVseSBwb3NpdGlvbmVkIGlubGluZSwgcmV0dXJuIGl0cyBuZWFyZXN0IG5vbi1h
bm9ueW1vdXMgY29udGFpbmluZyBibG9jaywKICAgICAvLyBub3QgdGhlIGlubGluZSBpdHNlbGYs
IHRvIGF2b2lkIGhhdmluZyBhIHBvc2l0aW9uZWQgb2JqZWN0cyBsaXN0IGluIGFsbCBSZW5kZXJJ
bmxpbmVzCi0gICAgLy8gYW5kIHVzZSBSZW5kZXJCbG9jayogYXMgUmVuZGVyT2JqZWN0Ojpjb250
YWluaW5nQmxvY2sncyByZXR1cm4gdHlwZS4KKyAgICAvLyBhbmQgdXNlIFJlbmRlckJsb2NrKiBh
cyBSZW5kZXJFbGVtZW50Ojpjb250YWluaW5nQmxvY2sncyByZXR1cm4gdHlwZS4KICAgICAvLyBV
c2UgUmVuZGVyQmxvY2s6OmNvbnRhaW5lcigpIHRvIG9idGFpbiB0aGUgaW5saW5lLgogICAgIGlm
IChvYmplY3QgJiYgb2JqZWN0LT5pc1JlbmRlcklubGluZSgpKQogICAgICAgICBvYmplY3QgPSBv
YmplY3QtPmNvbnRhaW5pbmdCbG9jaygpOwpAQCAtNjgsOSArNjgsOSBAQCBzdGF0aWMgaW5saW5l
IFJlbmRlck9iamVjdCogY29udGFpbmluZ0Jsb2NrRm9yQWJzb2x1dGVQb3NpdGlvbihSZW5kZXJP
YmplY3QqIHBhcgogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUmVuZGVy
T2JqZWN0KiBjb250YWluaW5nQmxvY2tGb3JPYmplY3RJbkZsb3coUmVuZGVyT2JqZWN0KiBwYXJl
bnQpCitzdGF0aWMgaW5saW5lIFJlbmRlckVsZW1lbnQqIGNvbnRhaW5pbmdCbG9ja0Zvck9iamVj
dEluRmxvdyhSZW5kZXJFbGVtZW50KiBwYXJlbnQpCiB7Ci0gICAgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QgPSBwYXJlbnQ7CisgICAgUmVuZGVyRWxlbWVudCogb2JqZWN0ID0gcGFyZW50OwogICAgIHdo
aWxlIChvYmplY3QgJiYgaXNOb25SZW5kZXJCbG9ja0lubGluZShvYmplY3QpKQogICAgICAgICBv
YmplY3QgPSBvYmplY3QtPnBhcmVudCgpOwogICAgIHJldHVybiBvYmplY3Q7CkBAIC0xMzYsNyAr
MTM2LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IExvZ2ljYWxTZWxlY3Rpb25PZmZzZXRDYWNo
ZXMoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaykKICAgICB7CiAgICAgICAgIEFTU0VSVChyb290Qmxv
Y2stPmlzU2VsZWN0aW9uUm9vdCgpKTsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBwYXJlbnQgPSBy
b290QmxvY2stPnBhcmVudCgpOworICAgICAgICBhdXRvIHBhcmVudCA9IHJvb3RCbG9jay0+cGFy
ZW50KCk7CiAKICAgICAgICAgLy8gTG9naWNhbFNlbGVjdGlvbk9mZnNldENhY2hlcyBzaG91bGQg
bm90IGJlIHVzZWQgb24gYW4gb3JwaGFuZWQgdHJlZS4KICAgICAgICAgbV9jb250YWluaW5nQmxv
Y2tGb3JGaXhlZFBvc2l0aW9uLnNldEJsb2NrKHRvUmVuZGVyQmxvY2soY29udGFpbmluZ0Jsb2Nr
Rm9yRml4ZWRQb3NpdGlvbihwYXJlbnQpKSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUGFpbnRJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUGFpbnRJ
bmZvLmgKaW5kZXggZTY3MGE3NzZmNDRkNWFiZmFhZjY2YmZhZTgxYWQ0NjMzNzc0M2ZlZi4uODIy
NDc0OTAwODZiNDk1YWRhYzYzZmVmM2VkZjBkYWZjZTNjMzFhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1BhaW50SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9QYWludEluZm8uaApAQCAtNTQsOCArNTQsOCBAQCB0eXBlZGVmIEhhc2hNYXA8T3Zlcmxh
cFRlc3RSZXF1ZXN0Q2xpZW50KiwgSW50UmVjdD4gT3ZlcmxhcFRlc3RSZXF1ZXN0TWFwOwogICov
CiBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICBQYWludEluZm8oR3JhcGhpY3NDb250ZXh0KiBuZXdD
b250ZXh0LCBjb25zdCBJbnRSZWN0JiBuZXdSZWN0LCBQYWludFBoYXNlIG5ld1BoYXNlLCBQYWlu
dEJlaGF2aW9yIG5ld1BhaW50QmVoYXZpb3IsCi0gICAgICAgIFJlbmRlck9iamVjdCogbmV3U3Vi
dHJlZVBhaW50Um9vdCA9IDAsIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gMCwgTGlzdEhhc2hTZXQ8
UmVuZGVySW5saW5lKj4qIG5ld091dGxpbmVPYmplY3RzID0gMCwKLSAgICAgICAgT3ZlcmxhcFRl
c3RSZXF1ZXN0TWFwKiBvdmVybGFwVGVzdFJlcXVlc3RzID0gMCwgY29uc3QgUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCogbmV3UGFpbnRDb250YWluZXIgPSAwKQorICAgICAgICBSZW5kZXJPYmplY3Qq
IG5ld1N1YnRyZWVQYWludFJvb3QgPSBudWxscHRyLCBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IG51
bGxwdHIsIExpc3RIYXNoU2V0PFJlbmRlcklubGluZSo+KiBuZXdPdXRsaW5lT2JqZWN0cyA9IG51
bGxwdHIsCisgICAgICAgIE92ZXJsYXBUZXN0UmVxdWVzdE1hcCogb3ZlcmxhcFRlc3RSZXF1ZXN0
cyA9IG51bGxwdHIsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIG5ld1BhaW50Q29udGFp
bmVyID0gbnVsbHB0cikKICAgICAgICAgOiBjb250ZXh0KG5ld0NvbnRleHQpCiAgICAgICAgICwg
cmVjdChuZXdSZWN0KQogICAgICAgICAsIHBoYXNlKG5ld1BoYXNlKQpAQCAtNzMsOSArNzMsOSBA
QCBzdHJ1Y3QgUGFpbnRJbmZvIHsKICAgICAgICAgaWYgKCFzdWJ0cmVlUGFpbnRSb290KQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8vIElmIHdlJ3JlIHRoZSBwYWludGluZyByb290
LCBraWRzIGRyYXcgbm9ybWFsbHksIGFuZCBzZWUgcm9vdCBvZiAwLgorICAgICAgICAvLyBJZiB3
ZSdyZSB0aGUgcGFpbnRpbmcgcm9vdCwga2lkcyBkcmF3IG5vcm1hbGx5LCBhbmQgc2VlIHJvb3Qg
b2YgbnVsbHB0ci4KICAgICAgICAgaWYgKHN1YnRyZWVQYWludFJvb3QgPT0gcmVuZGVyZXIpIHsK
LSAgICAgICAgICAgIHN1YnRyZWVQYWludFJvb3QgPSAwOyAKKyAgICAgICAgICAgIHN1YnRyZWVQ
YWludFJvb3QgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCBjNjA5NzA4MTZhYTkx
OGU5MzA4MzE1YjRmZjEyZjBlZDU4ZmM0YmQ4Li40OGY1NTdmMzNjMDY5MDk3ZmQzZWZhOTA2NDk5
MWVmZmQwZDhlOTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAt
MTQ1Nyw3ICsxNDU3LDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJCb3g6Om1hc2tDbGlwUmVjdCgpCiB9
CiAKIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCwKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9p
ZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmpl
Y3QpCisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRhbmNlLCBDb21wb3Np
dGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCkKIHsKICAgICBW
ZWN0b3I8Y29uc3QgRmlsbExheWVyKiwgOD4gbGF5ZXJzOwogICAgIGNvbnN0IEZpbGxMYXllciog
Y3VyTGF5ZXIgPSBmaWxsTGF5ZXI7CkBAIC0xNDk2LDcgKzE0OTYsNyBAQCB2b2lkIFJlbmRlckJv
eDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xv
ciYgYywgY29ucwogfQogCiB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXIoY29uc3QgUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IENvbG9yJiBjLCBjb25zdCBGaWxsTGF5ZXIqIGZpbGxM
YXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKLSAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgYmxlZWRBdm9pZGFuY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBSZW5kZXJPYmplY3QqIGJh
Y2tncm91bmRPYmplY3QpCisgICAgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlIGJsZWVkQXZvaWRh
bmNlLCBDb21wb3NpdGVPcGVyYXRvciBvcCwgUmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVj
dCkKIHsKICAgICBwYWludEZpbGxMYXllckV4dGVuZGVkKHBhaW50SW5mbywgYywgZmlsbExheWVy
LCByZWN0LCBibGVlZEF2b2lkYW5jZSwgMCwgTGF5b3V0U2l6ZSgpLCBvcCwgYmFja2dyb3VuZE9i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggYTIwODk5MjMw
MzQ2MGNmMjFiZDdiYjQ2Y2NhZGUwNzU0Yjk1MWI1YS4uMjNjOGM2NDczZWQ1YWFkNDQ1ZTBhNjhl
OWEzYzIyNTAyMzZjNTk2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAt
NjExLDggKzYxMSw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kKGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IExheW91dFJlY3QmLCBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFu
Y2UgPSBCYWNrZ3JvdW5kQmxlZWROb25lKTsKICAgICAKLSAgICB2b2lkIHBhaW50RmlsbExheWVy
KGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3Qg
TGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3Is
IFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCk7Ci0gICAgdm9pZCBwYWludEZpbGxMYXll
cnMoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgQ29sb3ImLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25z
dCBMYXlvdXRSZWN0JiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dyb3VuZEJsZWVk
Tm9uZSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJPYmpl
Y3QqIGJhY2tncm91bmRPYmplY3QgPSAwKTsKKyAgICB2b2lkIHBhaW50RmlsbExheWVyKGNvbnN0
IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5b3V0
UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgQ29tcG9zaXRlT3BlcmF0b3IsIFJlbmRl
ckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QpOworICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJzKGNv
bnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3QgRmlsbExheWVyKiwgY29uc3QgTGF5
b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSA9IEJhY2tncm91bmRCbGVlZE5vbmUs
IENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgUmVuZGVyRWxlbWVudCog
YmFja2dyb3VuZE9iamVjdCA9IG51bGxwdHIpOwogCiAgICAgdm9pZCBwYWludE1hc2tJbWFnZXMo
Y29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVjdCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCA4YzA2NzgxZjdj
NDBmOWY4YTNmOTcwMTFhODA4ODkwYWNkNDgxZDNkLi5iMjUxMzI1MjZkNDBkZGEzNjRkODc4Y2Mw
ZmFhYzdkNzA4NTI3YzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTU2OSw3ICs1NjksNyBAQCBzdGF0aWMgdm9pZCBhcHBs
eUJveFNoYWRvd0ZvckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBSZW5kZXJT
dHlsZSogcwogfQogCiB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXllckV4
dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBDb2xvciYgY29sb3IsIGNv
bnN0IEZpbGxMYXllciogYmdMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwKLSAgICBCYWNr
Z3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqIGJveCwg
Y29uc3QgTGF5b3V0U2l6ZSYgYm94U2l6ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlck9i
amVjdCogYmFja2dyb3VuZE9iamVjdCkKKyAgICBCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UgYmxl
ZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqIGJveCwgY29uc3QgTGF5b3V0U2l6ZSYgYm94U2l6
ZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3Qp
CiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gcGFpbnRJbmZvLmNvbnRleHQ7CiAg
ICAgaWYgKGNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCByZWN0LmlzRW1wdHkoKSkKQEAg
LTc5NSw3ICs3OTUsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxMYXll
ckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogICAgICAgICBnZW9tZXRy
eS5jbGlwKHBhaW50SW5mby5yZWN0KTsKICAgICAgICAgaWYgKCFnZW9tZXRyeS5kZXN0UmVjdCgp
LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Ag
PSBvcCA9PSBDb21wb3NpdGVTb3VyY2VPdmVyID8gYmdMYXllci0+Y29tcG9zaXRlKCkgOiBvcDsK
LSAgICAgICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0gYmFj
a2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRPYmplY3QgOiB0aGlzOworICAgICAgICAgICAgYXV0
byBjbGllbnRGb3JCYWNrZ3JvdW5kSW1hZ2UgPSBiYWNrZ3JvdW5kT2JqZWN0ID8gYmFja2dyb3Vu
ZE9iamVjdCA6IHRoaXM7CiAgICAgICAgICAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0gYmdJbWFn
ZS0+aW1hZ2UoY2xpZW50Rm9yQmFja2dyb3VuZEltYWdlLCBnZW9tZXRyeS50aWxlU2l6ZSgpKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnNldERyYXdMdW1pbmFuY2VNYXNrKGJnTGF5ZXItPm1hc2tT
b3VyY2VUeXBlKCkgPT0gTWFza0x1bWluYW5jZSk7CiAgICAgICAgICAgICBib29sIHVzZUxvd1F1
YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0
KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkpOwpAQCAtMTA0Myw3ICsxMDQzLDcgQEAg
c3RhdGljIGlubGluZSBpbnQgZ2V0U3BhY2UoaW50IGFyZWFTaXplLCBpbnQgdGlsZVNpemUpCiB9
CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdl
b21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyLCBjb25z
dCBGaWxsTGF5ZXIqIGZpbGxMYXllciwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0LAotICAg
IEJhY2tncm91bmRJbWFnZUdlb21ldHJ5JiBnZW9tZXRyeSwgUmVuZGVyT2JqZWN0KiBiYWNrZ3Jv
dW5kT2JqZWN0KSBjb25zdAorICAgIEJhY2tncm91bmRJbWFnZUdlb21ldHJ5JiBnZW9tZXRyeSwg
UmVuZGVyRWxlbWVudCogYmFja2dyb3VuZE9iamVjdCkgY29uc3QKIHsKICAgICBMYXlvdXRVbml0
IGxlZnQgPSAwOwogICAgIExheW91dFVuaXQgdG9wID0gMDsKQEAgLTExMTEsNyArMTExMSw3IEBA
IHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21l
dHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kCiAgICAgICAgIHBvc2l0aW9uaW5nQXJlYVNpemUgPSBn
ZW9tZXRyeS5kZXN0UmVjdCgpLnNpemUoKTsKICAgICB9CiAKLSAgICBjb25zdCBSZW5kZXJPYmpl
Y3QqIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJhY2tncm91bmRPYmplY3QgPyBiYWNrZ3Jv
dW5kT2JqZWN0IDogdGhpczsKKyAgICBhdXRvIGNsaWVudEZvckJhY2tncm91bmRJbWFnZSA9IGJh
Y2tncm91bmRPYmplY3QgPyBiYWNrZ3JvdW5kT2JqZWN0IDogdGhpczsKICAgICBJbnRTaXplIGZp
bGxUaWxlU2l6ZSA9IGNhbGN1bGF0ZUZpbGxUaWxlU2l6ZShmaWxsTGF5ZXIsIHBvc2l0aW9uaW5n
QXJlYVNpemUpOwogICAgIGZpbGxMYXllci0+aW1hZ2UoKS0+c2V0Q29udGFpbmVyU2l6ZUZvclJl
bmRlcmVyKGNsaWVudEZvckJhY2tncm91bmRJbWFnZSwgZmlsbFRpbGVTaXplLCBzdHlsZSgpLT5l
ZmZlY3RpdmVab29tKCkpOwogICAgIGdlb21ldHJ5LnNldFRpbGVTaXplKGZpbGxUaWxlU2l6ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmlu
ZGV4IDc1N2EzN2ZlMmVkNjQxNGRjMjNmMzMwNmJlZTkzMjUyNDU4OTNkMGQuLjlkMDY2ZmFmNTU4
NmM2MTY4ZmQ4MGQwOGU1MDU5ZjJmYWJjZjFkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC0xNjEsNyArMTYxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGFpbnRCb3JkZXIoY29uc3QgUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UmVj
dCYsIGNvbnN0IFJlbmRlclN0eWxlKiwgQmFja2dyb3VuZEJsZWVkQXZvaWRhbmNlID0gQmFja2dy
b3VuZEJsZWVkTm9uZSwgYm9vbCBpbmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBp
bmNsdWRlTG9naWNhbFJpZ2h0RWRnZSA9IHRydWUpOwogICAgIGJvb2wgcGFpbnROaW5lUGllY2VJ
bWFnZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5
bGUqLCBjb25zdCBOaW5lUGllY2VJbWFnZSYsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRl
U291cmNlT3Zlcik7CiAgICAgdm9pZCBwYWludEJveFNoYWRvdyhjb25zdCBQYWludEluZm8mLCBj
b25zdCBMYXlvdXRSZWN0JiwgY29uc3QgUmVuZGVyU3R5bGUqLCBTaGFkb3dTdHlsZSwgYm9vbCBp
bmNsdWRlTG9naWNhbExlZnRFZGdlID0gdHJ1ZSwgYm9vbCBpbmNsdWRlTG9naWNhbFJpZ2h0RWRn
ZSA9IHRydWUpOwotICAgIHZvaWQgcGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChjb25zdCBQYWludElu
Zm8mLCBjb25zdCBDb2xvciYsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmLCBC
YWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UsIElubGluZUZsb3dCb3gqID0gMCwgY29uc3QgTGF5b3V0
U2l6ZSYgPSBMYXlvdXRTaXplKCksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3ZlciwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0ID0gMCk7CisgICAgdm9pZCBwYWlu
dEZpbGxMYXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYsIGNvbnN0IENvbG9yJiwgY29uc3Qg
RmlsbExheWVyKiwgY29uc3QgTGF5b3V0UmVjdCYsIEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwg
SW5saW5lRmxvd0JveCogPSAwLCBjb25zdCBMYXlvdXRTaXplJiA9IExheW91dFNpemUoKSwgQ29t
cG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBSZW5kZXJFbGVtZW50KiBiYWNr
Z3JvdW5kT2JqZWN0ID0gMCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgYm94U2hhZG93U2hvdWxkQmVB
cHBsaWVkVG9CYWNrZ3JvdW5kKEJhY2tncm91bmRCbGVlZEF2b2lkYW5jZSwgSW5saW5lRmxvd0Jv
eCogPSAwKSBjb25zdDsKIApAQCAtMjU4LDcgKzI1OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIExh
eW91dFBvaW50IGFkanVzdGVkUG9zaXRpb25SZWxhdGl2ZVRvT2Zmc2V0UGFyZW50KGNvbnN0IExh
eW91dFBvaW50JikgY29uc3Q7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdl
b21ldHJ5KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHBhaW50Q29udGFpbmVyLCBjb25z
dCBGaWxsTGF5ZXIqLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIEJhY2tncm91bmRJbWFn
ZUdlb21ldHJ5JiwgUmVuZGVyT2JqZWN0KiA9IDApIGNvbnN0OworICAgIHZvaWQgY2FsY3VsYXRl
QmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcGFp
bnRDb250YWluZXIsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVj
dCwgQmFja2dyb3VuZEltYWdlR2VvbWV0cnkmLCBSZW5kZXJFbGVtZW50KiA9IDApIGNvbnN0Owog
ICAgIHZvaWQgZ2V0Qm9yZGVyRWRnZUluZm8oY2xhc3MgQm9yZGVyRWRnZVtdLCBjb25zdCBSZW5k
ZXJTdHlsZSosIGJvb2wgaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSA9IHRydWUsIGJvb2wgaW5jbHVk
ZUxvZ2ljYWxSaWdodEVkZ2UgPSB0cnVlKSBjb25zdDsKICAgICBib29sIGJvcmRlck9ic2N1cmVz
QmFja2dyb3VuZEVkZ2UoY29uc3QgRmxvYXRTaXplJiBjb250ZXh0U2NhbGUpIGNvbnN0OwogICAg
IGJvb2wgYm9yZGVyT2JzY3VyZXNCYWNrZ3JvdW5kKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggMWY1MjI1M2I1ODlhZmMyYTZlNzVkZWE3
ZDlkYWUxZTMzYmZlYTE0OS4uZDAyZDM3ZTI3NmNmZjUxYjI5NjM0YTA5MTQyNTA4ZWIzODMyODhi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcApAQCAtOTMs
MzUgKzkzLDMyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhcmVSZW5kZXJlcnNFbGVtZW50c1NpYmxp
bmdzKFJlbmRlck9iamVjdCogZmlyc3QsIFJlbmRlck9iamVjCiAKIC8vIFRoaXMgZnVuY3Rpb24g
cHJvY2Vzc2VzIHRoZSByZW5kZXJlciB0cmVlIGluIHRoZSBvcmRlciBvZiB0aGUgRE9NIHRyZWUK
IC8vIGluY2x1ZGluZyBwc2V1ZG8gZWxlbWVudHMgYXMgZGVmaW5lZCBpbiBDU1MgMi4xLgotc3Rh
dGljIFJlbmRlck9iamVjdCogbmV4dEluUHJlT3JkZXIoY29uc3QgUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IEVsZW1lbnQqIHN0YXlXaXRoaW4sIGJvb2wgc2tpcERlc2NlbmRhbnRzID0gZmFs
c2UpCitzdGF0aWMgUmVuZGVyRWxlbWVudCogbmV4dEluUHJlT3JkZXIoY29uc3QgUmVuZGVyRWxl
bWVudCogZWxlbWVudCwgY29uc3QgRWxlbWVudCogc3RheVdpdGhpbiwgYm9vbCBza2lwRGVzY2Vu
ZGFudHMgPSBmYWxzZSkKIHsKLSAgICBFbGVtZW50KiBzZWxmID0gdG9FbGVtZW50KG9iamVjdC0+
bm9kZSgpKTsKKyAgICBFbGVtZW50KiBzZWxmID0gZWxlbWVudC0+ZWxlbWVudCgpOwogICAgIEVs
ZW1lbnQqIG5leHQgPSBza2lwRGVzY2VuZGFudHMgPyBFbGVtZW50VHJhdmVyc2FsOjpuZXh0SW5j
bHVkaW5nUHNldWRvU2tpcHBpbmdDaGlsZHJlbihzZWxmLCBzdGF5V2l0aGluKSA6IEVsZW1lbnRU
cmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQc2V1ZG8oc2VsZiwgc3RheVdpdGhpbik7CiAgICAgd2hp
bGUgKG5leHQgJiYgIW5leHQtPnJlbmRlcmVyKCkpCiAgICAgICAgIG5leHQgPSBza2lwRGVzY2Vu
ZGFudHMgPyBFbGVtZW50VHJhdmVyc2FsOjpuZXh0SW5jbHVkaW5nUHNldWRvU2tpcHBpbmdDaGls
ZHJlbihuZXh0LCBzdGF5V2l0aGluKSA6IEVsZW1lbnRUcmF2ZXJzYWw6Om5leHRJbmNsdWRpbmdQ
c2V1ZG8obmV4dCwgc3RheVdpdGhpbik7CiAgICAgcmV0dXJuIG5leHQgPyBuZXh0LT5yZW5kZXJl
cigpIDogMDsKIH0KIAotc3RhdGljIGJvb2wgcGxhbkNvdW50ZXIoUmVuZGVyT2JqZWN0KiBvYmpl
Y3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm9vbCYgaXNSZXNldCwgaW50JiB2
YWx1ZSkKK3N0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlckVsZW1lbnQqIG9iamVjdCwgY29u
c3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLCBib29sJiBpc1Jlc2V0LCBpbnQmIHZhbHVlKQog
ewogICAgIEFTU0VSVChvYmplY3QpOwogCi0gICAgLy8gUmVhbCB0ZXh0IG5vZGVzIGRvbid0IGhh
dmUgdGhlaXIgb3duIHN0eWxlIHNvIHRoZXkgY2FuJ3QgaGF2ZSBjb3VudGVycy4KLSAgICAvLyBX
ZSBjYW4ndCBldmVuIGxvb2sgYXQgdGhlaXIgc3R5bGVzIG9yIHdlJ2xsIHNlZSBleHRyYSByZXNl
dHMgYW5kIGluY3JlbWVudHMhCi0gICAgaWYgKG9iamVjdC0+aXNUZXh0KCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBOb2RlKiBnZW5lcmF0aW5nTm9kZSA9IG9iamVjdC0+Z2VuZXJhdGlu
Z05vZGUoKTsKICAgICAvLyBXZSBtdXN0IGhhdmUgYSBnZW5lcmF0aW5nIG5vZGUgb3IgZWxzZSB3
ZSBjYW5ub3QgaGF2ZSBhIGNvdW50ZXIuCi0gICAgaWYgKCFnZW5lcmF0aW5nTm9kZSkKKyAgICBF
bGVtZW50KiBnZW5lcmF0aW5nRWxlbWVudCA9IG9iamVjdC0+Z2VuZXJhdGluZ0VsZW1lbnQoKTsK
KyAgICBpZiAoIWdlbmVyYXRpbmdFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICBSZW5kZXJTdHlsZSogc3R5bGUgPSBvYmplY3QtPnN0eWxlKCk7CiAgICAgQVNTRVJUKHN0eWxl
KTsKIAogICAgIHN3aXRjaCAoc3R5bGUtPnN0eWxlVHlwZSgpKSB7CiAgICAgY2FzZSBOT1BTRVVE
TzoKLSAgICAgICAgLy8gU29tZXRpbWVzIG5vZGVzIGhhdmUgbW9yZSB0aGVuIG9uZSByZW5kZXJl
ci4gT25seSB0aGUgZmlyc3Qgb25lIGdldHMgdGhlIGNvdW50ZXIKKyAgICAgICAgLy8gU29tZXRp
bWVzIGVsZW1lbnRzIGhhdmUgbW9yZSB0aGVuIG9uZSByZW5kZXJlci4gT25seSB0aGUgZmlyc3Qg
b25lIGdldHMgdGhlIGNvdW50ZXIKICAgICAgICAgLy8gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9j
c3MvY291bnRlci1jcmFzaC5odG1sCi0gICAgICAgIGlmIChnZW5lcmF0aW5nTm9kZS0+cmVuZGVy
ZXIoKSAhPSBvYmplY3QpCisgICAgICAgIGlmIChnZW5lcmF0aW5nRWxlbWVudC0+cmVuZGVyZXIo
KSAhPSBvYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQkVGT1JFOgpAQCAtMTQ5LDcgKzE0Niw3IEBAIHN0YXRpYyBib29sIHBsYW5Db3Vu
dGVyKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIs
IGJvCiAgICAgICAgICAgICBpc1Jlc2V0ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoTm9kZSogZSA9IG9iamVjdC0+bm9kZSgpKSB7Cisg
ICAgICAgIGlmIChFbGVtZW50KiBlID0gb2JqZWN0LT5lbGVtZW50KCkpIHsKICAgICAgICAgICAg
IGlmIChlLT5oYXNUYWdOYW1lKG9sVGFnKSkgewogICAgICAgICAgICAgICAgIHZhbHVlID0gc3Rh
dGljX2Nhc3Q8SFRNTE9MaXN0RWxlbWVudCo+KGUpLT5zdGFydCgpOwogICAgICAgICAgICAgICAg
IGlzUmVzZXQgPSB0cnVlOwpAQCAtMjk5LDggKzI5NiwxNSBAQCBzdGF0aWMgQ291bnRlck5vZGUq
IG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5n
JiBpZAogewogICAgIEFTU0VSVChvYmplY3QpOwogCi0gICAgaWYgKG9iamVjdC0+aGFzQ291bnRl
ck5vZGVNYXAoKSkgewotICAgICAgICBpZiAoQ291bnRlck1hcCogbm9kZU1hcCA9IGNvdW50ZXJN
YXBzKCkuZ2V0KG9iamVjdCkpIHsKKyAgICAvLyBSZWFsIHRleHQgbm9kZXMgZG9uJ3QgaGF2ZSB0
aGVpciBvd24gc3R5bGUgc28gdGhleSBjYW4ndCBoYXZlIGNvdW50ZXJzLgorICAgIC8vIFdlIGNh
bid0IGV2ZW4gbG9vayBhdCB0aGVpciBzdHlsZXMgb3Igd2UnbGwgc2VlIGV4dHJhIHJlc2V0cyBh
bmQgaW5jcmVtZW50cyEKKyAgICBpZiAob2JqZWN0LT5pc1RleHQoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICBSZW5kZXJFbGVtZW50KiBlbGVtZW50ID0gdG9SZW5kZXJFbGVtZW50
KG9iamVjdCk7CisKKyAgICBpZiAoZWxlbWVudC0+aGFzQ291bnRlck5vZGVNYXAoKSkgeworICAg
ICAgICBpZiAoQ291bnRlck1hcCogbm9kZU1hcCA9IGNvdW50ZXJNYXBzKCkuZ2V0KGVsZW1lbnQp
KSB7CiAgICAgICAgICAgICBpZiAoQ291bnRlck5vZGUqIG5vZGUgPSBub2RlTWFwLT5nZXQoaWRl
bnRpZmllcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAgIH0KQEAgLTMw
OCwyMSArMzEyLDIxIEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAKICAgICBib29sIGlzUmVz
ZXQgPSBmYWxzZTsKICAgICBpbnQgdmFsdWUgPSAwOwotICAgIGlmICghcGxhbkNvdW50ZXIob2Jq
ZWN0LCBpZGVudGlmaWVyLCBpc1Jlc2V0LCB2YWx1ZSkgJiYgIWFsd2F5c0NyZWF0ZUNvdW50ZXIp
Ci0gICAgICAgIHJldHVybiAwOworICAgIGlmICghcGxhbkNvdW50ZXIoZWxlbWVudCwgaWRlbnRp
ZmllciwgaXNSZXNldCwgdmFsdWUpICYmICFhbHdheXNDcmVhdGVDb3VudGVyKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbmV3UGFyZW50ID0gMDsK
ICAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5ld1ByZXZpb3VzU2libGluZyA9IDA7Ci0gICAgUmVm
UHRyPENvdW50ZXJOb2RlPiBuZXdOb2RlID0gQ291bnRlck5vZGU6OmNyZWF0ZShvYmplY3QsIGlz
UmVzZXQsIHZhbHVlKTsKLSAgICBpZiAoZmluZFBsYWNlRm9yQ291bnRlcihvYmplY3QsIGlkZW50
aWZpZXIsIGlzUmVzZXQsIG5ld1BhcmVudCwgbmV3UHJldmlvdXNTaWJsaW5nKSkKKyAgICBSZWZQ
dHI8Q291bnRlck5vZGU+IG5ld05vZGUgPSBDb3VudGVyTm9kZTo6Y3JlYXRlKGVsZW1lbnQsIGlz
UmVzZXQsIHZhbHVlKTsKKyAgICBpZiAoZmluZFBsYWNlRm9yQ291bnRlcihlbGVtZW50LCBpZGVu
dGlmaWVyLCBpc1Jlc2V0LCBuZXdQYXJlbnQsIG5ld1ByZXZpb3VzU2libGluZykpCiAgICAgICAg
IG5ld1BhcmVudC0+aW5zZXJ0QWZ0ZXIobmV3Tm9kZS5nZXQoKSwgbmV3UHJldmlvdXNTaWJsaW5n
LmdldCgpLCBpZGVudGlmaWVyKTsKICAgICBDb3VudGVyTWFwKiBub2RlTWFwOwotICAgIGlmIChv
YmplY3QtPmhhc0NvdW50ZXJOb2RlTWFwKCkpCi0gICAgICAgIG5vZGVNYXAgPSBjb3VudGVyTWFw
cygpLmdldChvYmplY3QpOworICAgIGlmIChlbGVtZW50LT5oYXNDb3VudGVyTm9kZU1hcCgpKQor
ICAgICAgICBub2RlTWFwID0gY291bnRlck1hcHMoKS5nZXQoZWxlbWVudCk7CiAgICAgZWxzZSB7
CiAgICAgICAgIG5vZGVNYXAgPSBuZXcgQ291bnRlck1hcDsKLSAgICAgICAgY291bnRlck1hcHMo
KS5zZXQob2JqZWN0LCBhZG9wdFB0cihub2RlTWFwKSk7Ci0gICAgICAgIG9iamVjdC0+c2V0SGFz
Q291bnRlck5vZGVNYXAodHJ1ZSk7CisgICAgICAgIGNvdW50ZXJNYXBzKCkuc2V0KGVsZW1lbnQs
IGFkb3B0UHRyKG5vZGVNYXApKTsKKyAgICAgICAgZWxlbWVudC0+c2V0SGFzQ291bnRlck5vZGVN
YXAodHJ1ZSk7CiAgICAgfQogICAgIG5vZGVNYXAtPnNldChpZGVudGlmaWVyLCBuZXdOb2RlKTsK
ICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCkBAIC0zMzAsOSArMzM0LDkgQEAgc3RhdGljIENv
dW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0
b21pY1N0cmluZyYgaWQKICAgICAvLyBDaGVja2luZyBpZiBzb21lIG5vZGVzIHRoYXQgd2VyZSBw
cmV2aW91c2x5IGNvdW50ZXIgdHJlZSByb290IG5vZGVzCiAgICAgLy8gc2hvdWxkIGJlY29tZSBj
aGlsZHJlbiBvZiB0aGlzIG5vZGUgbm93LgogICAgIENvdW50ZXJNYXBzJiBtYXBzID0gY291bnRl
ck1hcHMoKTsKLSAgICBFbGVtZW50KiBzdGF5V2l0aGluID0gcGFyZW50T3JQc2V1ZG9Ib3N0RWxl
bWVudChvYmplY3QpOworICAgIEVsZW1lbnQqIHN0YXlXaXRoaW4gPSBwYXJlbnRPclBzZXVkb0hv
c3RFbGVtZW50KGVsZW1lbnQpOwogICAgIGJvb2wgc2tpcERlc2NlbmRhbnRzOwotICAgIGZvciAo
UmVuZGVyT2JqZWN0KiBjdXJyZW50UmVuZGVyZXIgPSBuZXh0SW5QcmVPcmRlcihvYmplY3QsIHN0
YXlXaXRoaW4pOyBjdXJyZW50UmVuZGVyZXI7IGN1cnJlbnRSZW5kZXJlciA9IG5leHRJblByZU9y
ZGVyKGN1cnJlbnRSZW5kZXJlciwgc3RheVdpdGhpbiwgc2tpcERlc2NlbmRhbnRzKSkgeworICAg
IGZvciAoUmVuZGVyRWxlbWVudCogY3VycmVudFJlbmRlcmVyID0gbmV4dEluUHJlT3JkZXIoZWxl
bWVudCwgc3RheVdpdGhpbik7IGN1cnJlbnRSZW5kZXJlcjsgY3VycmVudFJlbmRlcmVyID0gbmV4
dEluUHJlT3JkZXIoY3VycmVudFJlbmRlcmVyLCBzdGF5V2l0aGluLCBza2lwRGVzY2VuZGFudHMp
KSB7CiAgICAgICAgIHNraXBEZXNjZW5kYW50cyA9IGZhbHNlOwogICAgICAgICBpZiAoIWN1cnJl
bnRSZW5kZXJlci0+aGFzQ291bnRlck5vZGVNYXAoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpA
QCAtMzkzLDcgKzM5Nyw3IEBAIGJvb2wgUmVuZGVyQ291bnRlcjo6aXNDb3VudGVyKCkgY29uc3QK
IFN0cmluZyBSZW5kZXJDb3VudGVyOjpvcmlnaW5hbFRleHQoKSBjb25zdAogewogICAgIGlmICgh
bV9jb3VudGVyTm9kZSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIGJlZm9yZUFmdGVyQ29udGFp
bmVyID0gcGFyZW50KCk7CisgICAgICAgIFJlbmRlckVsZW1lbnQqIGJlZm9yZUFmdGVyQ29udGFp
bmVyID0gcGFyZW50KCk7CiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBpZiAo
IWJlZm9yZUFmdGVyQ29udGFpbmVyKQogICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcAppbmRleCAxYTg5ZjM0
N2NkNGJkMjRhOTk0YjAwODBiMjIzOTBlM2M5ZjkyYmYzLi5hODBlN2RiZjkxOTg3NDFmMDdkNmZk
YzdhMjAyN2UzNDNjNDIxNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwCkBAIC05Miw3ICs5MiwxMCBAQCBSZW5kZXJFbGVtZW50Ojp+UmVuZGVyRWxlbWVu
dCgpCiAgICAgICAgICAgICBtYXNrQm94SW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsKIAogI2lm
IEVOQUJMRShDU1NfU0hBUEVTKQotICAgICAgICByZW1vdmVTaGFwZUltYWdlQ2xpZW50KG1fc3R5
bGUtPnNoYXBlSW5zaWRlKCkpOworICAgICAgICBpZiAoYXV0byBzaGFwZVZhbHVlID0gbV9zdHls
ZS0+c2hhcGVJbnNpZGUoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gc2hhcGVJbWFnZSA9IHNo
YXBlVmFsdWUtPmltYWdlKCkpCisgICAgICAgICAgICAgICAgc2hhcGVJbWFnZS0+cmVtb3ZlQ2xp
ZW50KHRoaXMpOworICAgICAgICB9CiAjZW5kaWYKICAgICB9CiB9CkBAIC05OTIsNiArOTk1LDgg
QEAgdm9pZCBSZW5kZXJFbGVtZW50Ojp3aWxsQmVSZW1vdmVkRnJvbVRyZWUoKQogCiB2b2lkIFJl
bmRlckVsZW1lbnQ6OndpbGxCZURlc3Ryb3llZCgpCiB7CisgICAgYW5pbWF0aW9uKCkuY2FuY2Vs
QW5pbWF0aW9ucyh0aGlzKTsKKwogICAgIGRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCk7CiAKICAg
ICBSZW5kZXJPYmplY3Q6OndpbGxCZURlc3Ryb3llZCgpOwpAQCAtMTAwNSwxMiArMTAxMCwxMyBA
QCBSZW5kZXJFbGVtZW50KiBSZW5kZXJFbGVtZW50OjpyZW5kZXJlckZvclJvb3RCYWNrZ3JvdW5k
KCkKICAgICAgICAgLy8gdG8gY3Jhd2wgYXJvdW5kIGEgcmVuZGVyIHRyZWUgd2l0aCBwb3RlbnRp
YWwgOmJlZm9yZS86YWZ0ZXIgY29udGVudCBhbmQKICAgICAgICAgLy8gYW5vbnltb3VzIGJsb2Nr
cyBjcmVhdGVkIGJ5IGlubGluZSA8Ym9keT4gdGFncyBldGMuIFdlIGNhbiBsb2NhdGUgdGhlIDxi
b2R5PgogICAgICAgICAvLyByZW5kZXIgb2JqZWN0IHZlcnkgZWFzaWx5IHZpYSB0aGUgRE9NLgot
ICAgICAgICBIVE1MRWxlbWVudCogYm9keSA9IGRvY3VtZW50KCkuYm9keSgpOwotICAgICAgICBS
ZW5kZXJFbGVtZW50KiBib2R5T2JqZWN0ID0gKGJvZHkgJiYgYm9keS0+aGFzTG9jYWxOYW1lKEhU
TUxOYW1lczo6Ym9keVRhZykpID8gYm9keS0+cmVuZGVyZXIoKSA6IDA7Ci0gICAgICAgIGlmIChi
b2R5T2JqZWN0KQotICAgICAgICAgICAgcmV0dXJuIGJvZHlPYmplY3Q7CisgICAgICAgIGlmIChh
dXRvIGJvZHkgPSBkb2N1bWVudCgpLmJvZHkoKSkgeworICAgICAgICAgICAgaWYgKGJvZHktPmhh
c0xvY2FsTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8gcmVuZGVyZXIgPSBib2R5LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gcmVuZGVyZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9Ci0KICAgICByZXR1
cm4gdGhpczsKIH0KIApAQCAtMTAyOSwxMSArMTAzNSw5IEBAIFJlbmRlckVsZW1lbnQqIFJlbmRl
ckVsZW1lbnQ6OmhvdmVyQW5jZXN0b3IoKSBjb25zdAogCiAgICAgaWYgKGhvdmVyQW5jZXN0b3Ig
JiYgaG92ZXJBbmNlc3Rvci0+aXNSZW5kZXJOYW1lZEZsb3dUaHJlYWQoKSkgewogICAgICAgICBo
b3ZlckFuY2VzdG9yID0gbnVsbHB0cjsKLQogICAgICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9
IHRoaXMtPmVsZW1lbnQoKSkgewotICAgICAgICAgICAgQ29udGFpbmVyTm9kZSogZG9tQW5jZXN0
b3JOb2RlID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgaWYgKGRvbUFuY2Vz
dG9yTm9kZSkKLSAgICAgICAgICAgICAgICBob3ZlckFuY2VzdG9yID0gdG9SZW5kZXJFbGVtZW50
KGRvbUFuY2VzdG9yTm9kZS0+cmVuZGVyZXIoKSk7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJl
bnQgPSBlbGVtZW50LT5wYXJlbnROb2RlKCkpCisgICAgICAgICAgICAgICAgaG92ZXJBbmNlc3Rv
ciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKaW5kZXggNWZiZmNlNjkwYWRlNGFjZGRlZjdiNGVm
NGI4YzIyYmZlN2ZkY2Q5MS4uZTA4MjE5OTE4MGE1OWQ4YTcwMzJjZWUyNjU4Mjk1MWQwNDIyZDMw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCkBAIC0xOTIsNyAr
MTkyLDcgQEAgaW5saW5lIFJlbmRlclN0eWxlKiBSZW5kZXJPYmplY3Q6OmZpcnN0TGluZVN0eWxl
KCkgY29uc3QKICAgICByZXR1cm4gdG9SZW5kZXJFbGVtZW50KHRoaXMpLT5maXJzdExpbmVTdHls
ZSgpOwogfQogCi1pbmxpbmUgUmVuZGVyRWxlbWVudCogRWxlbWVudDo6cmVuZGVyZXIoKSBjb25z
dAoraW5saW5lIFJlbmRlckVsZW1lbnQqIENvbnRhaW5lck5vZGU6OnJlbmRlcmVyKCkgY29uc3QK
IHsKICAgICByZXR1cm4gdG9SZW5kZXJFbGVtZW50KE5vZGU6OnJlbmRlcmVyKCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuY3BwCmluZGV4
IDcwNzA5YzJjN2I0MzQwNDIwYWRlN2M2ZDIyOWFkMWUxNDUxOTQ4NzAuLmQxMWNiYzlkN2Y1NmRm
MDU2MjcwMTc4ZDAyNzA3ODRmNGUyM2Y2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgUmVuZGVySW1h
Z2VSZXNvdXJjZTo6flJlbmRlckltYWdlUmVzb3VyY2UoKQogewogfQogCi12b2lkIFJlbmRlcklt
YWdlUmVzb3VyY2U6OmluaXRpYWxpemUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgUmVu
ZGVySW1hZ2VSZXNvdXJjZTo6aW5pdGlhbGl6ZShSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsK
ICAgICBBU1NFUlQoIW1fcmVuZGVyZXIpOwogICAgIEFTU0VSVChyZW5kZXJlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2UuaAppbmRleCAyZjdmYjlh
ZDUxMjcyYWY3Y2UyZWQwMTdkZDY2ZTJlYzU5Y2NjZTA4Li41MzM5YjMyYjk5OTVhMjIzM2Y3M2Y1
MTM3MWRiMWM2ZjA3NDNmNWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2VSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJJbWFnZVJlc291cmNlLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1jbGFzcyBSZW5kZXJPYmplY3Q7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogCiBjbGFzcyBS
ZW5kZXJJbWFnZVJlc291cmNlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZW5kZXJJbWFn
ZVJlc291cmNlKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBSZW5kZXJJbWFnZVJlc291cmNlKTsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShSZW5kZXJPYmplY3QqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShSZW5kZXJFbGVtZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIHNodXRkb3duKCk7CiAKICAgICB2b2lkIHNldENhY2hlZEltYWdlKENhY2hlZEltYWdlKik7
CkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFJlbmRlckltYWdl
UmVzb3VyY2UoKTsKLSAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgUmVuZGVyRWxl
bWVudCogbV9yZW5kZXJlcjsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4g
bV9jYWNoZWRJbWFnZTsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuY3BwCmluZGV4IDQ0ZWZl
MmY5ODhhNzNlNWNhODJkMzdiNzAyYzg2NjI2ZGVlNDc1ZjAuLmU1MDUyZjE4ZjA4ODc5ZGVhYjJi
M2I2M2E3ZTI5MjU5MDE2OWViZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlLmNwcApAQCAtNDQsNyArNDQs
NyBAQCBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6flJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlKCkKIHsKIH0KIAotdm9pZCBSZW5kZXJJbWFnZVJlc291cmNlU3R5bGVJbWFnZTo6
aW5pdGlhbGl6ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBSZW5kZXJJbWFnZVJlc291
cmNlU3R5bGVJbWFnZTo6aW5pdGlhbGl6ZShSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAg
ICBSZW5kZXJJbWFnZVJlc291cmNlOjppbml0aWFsaXplKHJlbmRlcmVyKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1h
Z2UuaAppbmRleCBmNDNmZjcyMmM3YmIzZTEwOGU3NmZjNTEzODQ5YzkwZjJlM2IwZjJkLi5mMmU4
OGNjNTdlMjFlMDVhOTVhNjgxMDQ3MzE2Y2E4ZDQxMzA5YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UuaApA
QCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFJlbmRlck9i
amVjdDsKK2NsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIGNsYXNzIFJlbmRlckltYWdlUmVzb3VyY2VT
dHlsZUltYWdlIDogcHVibGljIFJlbmRlckltYWdlUmVzb3VyY2UgewogcHVibGljOgpAQCAtNDIs
MjQgKzQyLDI1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
UmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2Uoc3R5bGVJbWFnZSkpOwogICAgIH0KLSAgICB2
aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShSZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2h1dGRvd24oKTsKIAotICAgIHZpcnR1YWwgYm9vbCBoYXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKGludCB3aWR0aCA9
IDAsIGludCBoZWlnaHQgPSAwKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9Citwcml2
YXRlOgorICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFJlbmRlckVsZW1lbnQqKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2h1dGRvd24oKSBPVkVSUklERTsKKworICAgIHZpcnR1YWwg
Ym9vbCBoYXNJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKGludCB3aWR0aCA9IDAsIGludCBoZWlnaHQgPSAw
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+ZXJyb3JPY2N1cnJlZCgpOyB9CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IEludFNpemUm
KTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3R5bGVJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpOyB9Ci0gICAgdmlydHVh
bCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+aW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCk7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNS
ZWxhdGl2ZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFnZS0+aW1hZ2VIYXNSZWxh
dGl2ZUhlaWdodCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRhaW5lclNpemVGb3JSZW5k
ZXJlcihjb25zdCBJbnRTaXplJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFn
ZUNvbnRhaW5lclNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPnVz
ZXNJbWFnZUNvbnRhaW5lclNpemUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0
aXZlV2lkdGgoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFz
UmVsYXRpdmVXaWR0aCgpOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWln
aHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlSGFzUmVsYXRp
dmVIZWlnaHQoKTsgfQogCiAgICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShmbG9hdCBt
dWx0aXBsaWVyKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmltYWdlU2l6
ZShtX3JlbmRlcmVyLCBtdWx0aXBsaWVyKTsgfQogICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbnRy
aW5zaWNTaXplKGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc3R5
bGVJbWFnZS0+aW1hZ2VTaXplKG1fcmVuZGVyZXIsIG11bHRpcGxpZXIpOyB9CiAKLSAgICB2aXJ0
dWFsIFdyYXBwZWRJbWFnZVB0ciBpbWFnZVB0cigpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGVJbWFn
ZS0+ZGF0YSgpOyB9CisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgaW1hZ2VQdHIoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX3N0eWxlSW1hZ2UtPmRhdGEoKTsgfQogCi1wcml2YXRlOgog
ICAgIGV4cGxpY2l0IFJlbmRlckltYWdlUmVzb3VyY2VTdHlsZUltYWdlKFN0eWxlSW1hZ2UqKTsK
ICAgICBSZWZQdHI8U3R5bGVJbWFnZT4gbV9zdHlsZUltYWdlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGRkNGZjN2NmYWMxOTU2OTk3YTM1ZjZjYmEx
NjZiNGQzOGEzMGQ5MjcuLjE1MGY1MDU1ZjExMDE1NDIzOWJjM2JiNjE0N2IxZGI4ZTlmZDY3ZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMzA5LDcgKzMw
OSw3IEBAIFJlbmRlckxheWVyQ29tcG9zaXRvciYgUmVuZGVyTGF5ZXI6OmNvbXBvc2l0b3IoKSBj
b25zdAogdm9pZCBSZW5kZXJMYXllcjo6Y29udGVudENoYW5nZWQoQ29udGVudENoYW5nZVR5cGUg
Y2hhbmdlVHlwZSkKIHsKICAgICAvLyBUaGlzIGNhbiBnZXQgY2FsbGVkIHdoZW4gdmlkZW8gYmVj
b21lcyBhY2NlbGVyYXRlZCwgc28gdGhlIGxheWVycyBtYXkgY2hhbmdlLgotICAgIGlmICgoY2hh
bmdlVHlwZSA9PSBDYW52YXNDaGFuZ2VkIHx8IGNoYW5nZVR5cGUgPT0gVmlkZW9DaGFuZ2VkIHx8
IGNoYW5nZVR5cGUgPT0gRnVsbFNjcmVlbkNoYW5nZWQpICYmIGNvbXBvc2l0b3IoKS51cGRhdGVM
YXllckNvbXBvc2l0aW5nU3RhdGUodGhpcykpCisgICAgaWYgKChjaGFuZ2VUeXBlID09IENhbnZh
c0NoYW5nZWQgfHwgY2hhbmdlVHlwZSA9PSBWaWRlb0NoYW5nZWQgfHwgY2hhbmdlVHlwZSA9PSBG
dWxsU2NyZWVuQ2hhbmdlZCkgJiYgY29tcG9zaXRvcigpLnVwZGF0ZUxheWVyQ29tcG9zaXRpbmdT
dGF0ZSgqdGhpcykpCiAgICAgICAgIGNvbXBvc2l0b3IoKS5zZXRDb21wb3NpdGluZ0xheWVyc05l
ZWRSZWJ1aWxkKCk7CiAKICAgICBpZiAobV9iYWNraW5nKQpAQCAtMTE2NCw3ICsxMTY0LDcgQEAg
Ym9vbCBSZW5kZXJMYXllcjo6dXBkYXRlRGVzY2VuZGFudENsaXBwaW5nQ29udGV4dChib29sIGFk
ZENsaXBwaW5nKQogICAgICAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBjaGlsZC0+
YmFja2luZygpOwogICAgICAgICAvLyBVcGRhdGUgbGF5ZXIgY29udGV4dCB3aGVuIG5ldyBjbGlw
cGluZyBpcyBhZGRlZCBvciBleGlzdGluZyBjbGlwcGluZyBpcyByZW1vdmVkLgogICAgICAgICBp
ZiAoYmFja2luZyAmJiAoYWRkQ2xpcHBpbmcgfHwgYmFja2luZy0+aGFzQW5jZXN0b3JDbGlwcGlu
Z0xheWVyKCkpKSB7Ci0gICAgICAgICAgICBpZiAoYmFja2luZy0+dXBkYXRlQW5jZXN0b3JDbGlw
cGluZ0xheWVyKGNvbXBvc2l0b3IoKS5jbGlwcGVkQnlBbmNlc3RvcihjaGlsZCkpKQorICAgICAg
ICAgICAgaWYgKGJhY2tpbmctPnVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdMYXllcihjb21wb3NpdG9y
KCkuY2xpcHBlZEJ5QW5jZXN0b3IoKmNoaWxkKSkpCiAgICAgICAgICAgICAgICAgbGF5ZXJOZWVk
c1JlYnVpbGQgPSB0cnVlOwogICAgICAgICB9CiAKQEAgLTE3OTAsNyArMTc5MCw3IEBAIHZvaWQg
UmVuZGVyTGF5ZXI6OmFkZENoaWxkKFJlbmRlckxheWVyKiBjaGlsZCwgUmVuZGVyTGF5ZXIqIGJl
Zm9yZUNoaWxkKQogICAgICAgICBzZXRBbmNlc3RvckNoYWluSGFzT3V0T2ZGbG93UG9zaXRpb25l
ZERlc2NlbmRhbnQoY2hpbGQtPnJlbmRlcmVyKCkuY29udGFpbmluZ0Jsb2NrKCkpOwogCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGNvbXBvc2l0b3IoKS5sYXllcldhc0Fk
ZGVkKHRoaXMsIGNoaWxkKTsKKyAgICBjb21wb3NpdG9yKCkubGF5ZXJXYXNBZGRlZCgqdGhpcywg
KmNoaWxkKTsKICNlbmRpZgogfQogCkBAIC0xNzk4LDcgKzE3OTgsNyBAQCBSZW5kZXJMYXllciog
UmVuZGVyTGF5ZXI6OnJlbW92ZUNoaWxkKFJlbmRlckxheWVyKiBvbGRDaGlsZCkKIHsKICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKCFyZW5kZXJlcigpLmRvY3VtZW50
QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgY29tcG9zaXRvcigpLmxheWVyV2lsbEJlUmVtb3Zl
ZCh0aGlzLCBvbGRDaGlsZCk7CisgICAgICAgIGNvbXBvc2l0b3IoKS5sYXllcldpbGxCZVJlbW92
ZWQoKnRoaXMsICpvbGRDaGlsZCk7CiAjZW5kaWYKIAogICAgIC8vIHJlbW92ZSB0aGUgY2hpbGQK
QEAgLTE4NDgsNyArMTg0OCw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnJlbW92ZU9ubHlUaGlzTGF5
ZXIoKQogICAgIHJlbmRlcmVyKCkuc2V0SGFzTGF5ZXIoZmFsc2UpOwogCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGNvbXBvc2l0b3IoKS5sYXllcldpbGxCZVJlbW92ZWQo
bV9wYXJlbnQsIHRoaXMpOworICAgIGNvbXBvc2l0b3IoKS5sYXllcldpbGxCZVJlbW92ZWQoKm1f
cGFyZW50LCAqdGhpcyk7CiAjZW5kaWYKIAogICAgIC8vIERpcnR5IHRoZSBjbGlwIHJlY3RzLgpA
QCAtMzIxNCw3ICszMjE0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0KCkKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAvLyBD
b21wb3NpdGVkIHNjcm9sbGluZyBtYXkgbmVlZCB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGlm
IHRoZSBhbW91bnQgb2Ygb3ZlcmZsb3cgY2hhbmdlZC4KLSAgICBpZiAoY29tcG9zaXRvcigpLnVw
ZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZSh0aGlzKSkKKyAgICBpZiAoY29tcG9zaXRvcigpLnVw
ZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZSgqdGhpcykpCiAgICAgICAgIGNvbXBvc2l0b3IoKS5z
ZXRDb21wb3NpdGluZ0xheWVyc05lZWRSZWJ1aWxkKCk7CiAjZW5kaWYKIH0KQEAgLTU1OTcsNyAr
NTU5Nyw3IEBAIFJlbmRlckxheWVyQmFja2luZyogUmVuZGVyTGF5ZXI6OmVuc3VyZUJhY2tpbmco
KQogewogICAgIGlmICghbV9iYWNraW5nKSB7CiAgICAgICAgIG1fYmFja2luZyA9IGFkb3B0UHRy
KG5ldyBSZW5kZXJMYXllckJhY2tpbmcodGhpcykpOwotICAgICAgICBjb21wb3NpdG9yKCkubGF5
ZXJCZWNhbWVDb21wb3NpdGVkKHRoaXMpOworICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNh
bWVDb21wb3NpdGVkKCp0aGlzKTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICAgICAg
dXBkYXRlT3JSZW1vdmVGaWx0ZXJFZmZlY3RSZW5kZXJlcigpOwpAQCAtNTYxMiw3ICs1NjEyLDcg
QEAgUmVuZGVyTGF5ZXJCYWNraW5nKiBSZW5kZXJMYXllcjo6ZW5zdXJlQmFja2luZygpCiB2b2lk
IFJlbmRlckxheWVyOjpjbGVhckJhY2tpbmcoYm9vbCBsYXllckJlaW5nRGVzdHJveWVkKQogewog
ICAgIGlmIChtX2JhY2tpbmcgJiYgIXJlbmRlcmVyKCkuZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgp
KQotICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKHRoaXMpOwor
ICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJCZWNhbWVOb25Db21wb3NpdGVkKCp0aGlzKTsKICAg
ICBtX2JhY2tpbmcuY2xlYXIoKTsKIAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKQEAgLTU3MzQs
MTQgKzU3MzQsMTQgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0UGFyZW50KFJlbmRlckxheWVyKiBw
YXJlbnQpCiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKG1fcGFy
ZW50ICYmICFyZW5kZXJlcigpLmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgY29t
cG9zaXRvcigpLmxheWVyV2lsbEJlUmVtb3ZlZChtX3BhcmVudCwgdGhpcyk7CisgICAgICAgIGNv
bXBvc2l0b3IoKS5sYXllcldpbGxCZVJlbW92ZWQoKm1fcGFyZW50LCAqdGhpcyk7CiAjZW5kaWYK
ICAgICAKICAgICBtX3BhcmVudCA9IHBhcmVudDsKICAgICAKICNpZiBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCiAgICAgaWYgKG1fcGFyZW50ICYmICFyZW5kZXJlcigpLmRvY3VtZW50QmVp
bmdEZXN0cm95ZWQoKSkKLSAgICAgICAgY29tcG9zaXRvcigpLmxheWVyV2FzQWRkZWQobV9wYXJl
bnQsIHRoaXMpOworICAgICAgICBjb21wb3NpdG9yKCkubGF5ZXJXYXNBZGRlZCgqbV9wYXJlbnQs
ICp0aGlzKTsKICNlbmRpZgogfQogCkBAIC02MjQyLDcgKzYyNDIsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUpCiAgICAgdXBkYXRlTmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCk7CiAKICAgICBjb25z
dCBSZW5kZXJTdHlsZSogbmV3U3R5bGUgPSByZW5kZXJlcigpLnN0eWxlKCk7Ci0gICAgaWYgKGNv
bXBvc2l0b3IoKS51cGRhdGVMYXllckNvbXBvc2l0aW5nU3RhdGUodGhpcykKKyAgICBpZiAoY29t
cG9zaXRvcigpLnVwZGF0ZUxheWVyQ29tcG9zaXRpbmdTdGF0ZSgqdGhpcykKICAgICAgICAgfHwg
bmVlZHNDb21wb3NpdGluZ0xheWVyc1JlYnVpbHRGb3JDbGlwKG9sZFN0eWxlLCBuZXdTdHlsZSkK
ICAgICAgICAgfHwgbmVlZHNDb21wb3NpdGluZ0xheWVyc1JlYnVpbHRGb3JPdmVyZmxvdyhvbGRT
dHlsZSwgbmV3U3R5bGUpKQogICAgICAgICBjb21wb3NpdG9yKCkuc2V0Q29tcG9zaXRpbmdMYXll
cnNOZWVkUmVidWlsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXJCYWNraW5nLmNwcAppbmRleCA2MDYzYWY0ZTYyMWE2OWI2ZDc2NmZmODdhMzM5YmViZTRlZmU3
YmYzLi5jM2MxOWIzOWI4MjhiMTY5ZDVhNDQ4Y2EyOGFhNDFiOWE2MTJhZTEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNDEzLDcg
KzQxMyw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNraW5nOjpzaG91bGRDbGlwQ29tcG9zaXRlZEJv
dW5kcygpIGNvbnN0CiAKIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVDb21wb3NpdGVk
Qm91bmRzKCkKIHsKLSAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzID0gY29tcG9zaXRvcigpLmNh
bGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMobV9vd25pbmdMYXllciwgbV9vd25pbmdMYXllcik7Cisg
ICAgTGF5b3V0UmVjdCBsYXllckJvdW5kcyA9IGNvbXBvc2l0b3IoKS5jYWxjdWxhdGVDb21wb3Np
dGVkQm91bmRzKCptX293bmluZ0xheWVyLCAqbV9vd25pbmdMYXllcik7CiAKICAgICAvLyBDbGlw
IHRvIHRoZSBzaXplIG9mIHRoZSBkb2N1bWVudCBvciBlbmNsb3Npbmcgb3ZlcmZsb3ctc2Nyb2xs
IGxheWVyLgogICAgIC8vIElmIHRoaXMgb3IgYW4gYW5jZXN0b3IgaXMgdHJhbnNmb3JtZWQsIHdl
IGNhbid0IGN1cnJlbnRseSBjb21wdXRlIHRoZSBjb3JyZWN0IHJlY3QgdG8gaW50ZXJzZWN0IHdp
dGguCkBAIC00NzIsMTQgKzQ3MiwxNCBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRl
QWZ0ZXJMYXlvdXQoVXBkYXRlQWZ0ZXJMYXlvdXRGbGFncyBmbGFncykKICAgICAgICAgLy8gVGhl
IHNvbHV0aW9uIGlzIHRvIHVwZGF0ZSBjb21wb3NpdGluZyBjaGlsZHJlbiBvZiB0aGlzIGxheWVy
IGhlcmUsCiAgICAgICAgIC8vIHZpYSB1cGRhdGVDb21wb3NpdGluZ0NoaWxkcmVuR2VvbWV0cnko
KS4KICAgICAgICAgdXBkYXRlQ29tcG9zaXRlZEJvdW5kcygpOwotICAgICAgICBjb21wb3NpdG9y
KCkudXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkobV9vd25pbmdMYXllciwgbV9v
d25pbmdMYXllciwgZmxhZ3MgJiBDb21wb3NpdGluZ0NoaWxkcmVuT25seSk7CisgICAgICAgIGNv
bXBvc2l0b3IoKS51cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeSgqbV9vd25pbmdM
YXllciwgKm1fb3duaW5nTGF5ZXIsIGZsYWdzICYgQ29tcG9zaXRpbmdDaGlsZHJlbk9ubHkpOwog
ICAgICAgICAKICAgICAgICAgaWYgKGZsYWdzICYgSXNVcGRhdGVSb290KSB7CiAgICAgICAgICAg
ICB1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKTsKICAgICAgICAgICAgIGNvbXBvc2l0b3Io
KS51cGRhdGVSb290TGF5ZXJQb3NpdGlvbigpOwogICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIHN0
YWNraW5nQ29udGFpbmVyID0gbV9vd25pbmdMYXllci0+ZW5jbG9zaW5nU3RhY2tpbmdDb250YWlu
ZXIoKTsKICAgICAgICAgICAgIGlmICghY29tcG9zaXRvcigpLmNvbXBvc2l0aW5nTGF5ZXJzTmVl
ZFJlYnVpbGQoKSAmJiBzdGFja2luZ0NvbnRhaW5lciAmJiAoc3RhY2tpbmdDb250YWluZXIgIT0g
bV9vd25pbmdMYXllcikpCi0gICAgICAgICAgICAgICAgY29tcG9zaXRvcigpLnVwZGF0ZUNvbXBv
c2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KHN0YWNraW5nQ29udGFpbmVyLCBzdGFja2luZ0NvbnRh
aW5lciwgZmxhZ3MgJiBDb21wb3NpdGluZ0NoaWxkcmVuT25seSk7CisgICAgICAgICAgICAgICAg
Y29tcG9zaXRvcigpLnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KCpzdGFja2lu
Z0NvbnRhaW5lciwgKnN0YWNraW5nQ29udGFpbmVyLCBmbGFncyAmIENvbXBvc2l0aW5nQ2hpbGRy
ZW5Pbmx5KTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTQ5MywyMiArNDkzLDIyIEBAIGJv
b2wgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyQ29uZmlndXJhdGlvbigp
CiAgICAgbV9vd25pbmdMYXllci0+dXBkYXRlWk9yZGVyTGlzdHMoKTsKIAogICAgIGJvb2wgbGF5
ZXJDb25maWdDaGFuZ2VkID0gZmFsc2U7Ci0gICAgc2V0QmFja2dyb3VuZExheWVyUGFpbnRzRml4
ZWRSb290QmFja2dyb3VuZChjb21wb3NpdG9yKCkubmVlZHNGaXhlZFJvb3RCYWNrZ3JvdW5kTGF5
ZXIobV9vd25pbmdMYXllcikpOworICAgIHNldEJhY2tncm91bmRMYXllclBhaW50c0ZpeGVkUm9v
dEJhY2tncm91bmQoY29tcG9zaXRvcigpLm5lZWRzRml4ZWRSb290QmFja2dyb3VuZExheWVyKCpt
X293bmluZ0xheWVyKSk7CiAgICAgCiAgICAgLy8gVGhlIGJhY2tncm91bmQgbGF5ZXIgaXMgY3Vy
cmVudGx5IG9ubHkgdXNlZCBmb3IgZml4ZWQgcm9vdCBiYWNrZ3JvdW5kcy4KICAgICBpZiAodXBk
YXRlQmFja2dyb3VuZExheWVyKG1fYmFja2dyb3VuZExheWVyUGFpbnRzRml4ZWRSb290QmFja2dy
b3VuZCkpCiAgICAgICAgIGxheWVyQ29uZmlnQ2hhbmdlZCA9IHRydWU7CiAKLSAgICBpZiAodXBk
YXRlRm9yZWdyb3VuZExheWVyKGNvbXBvc2l0b3IoKS5uZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdM
YXllcihtX293bmluZ0xheWVyKSkpCisgICAgaWYgKHVwZGF0ZUZvcmVncm91bmRMYXllcihjb21w
b3NpdG9yKCkubmVlZHNDb250ZW50c0NvbXBvc2l0aW5nTGF5ZXIoKm1fb3duaW5nTGF5ZXIpKSkK
ICAgICAgICAgbGF5ZXJDb25maWdDaGFuZ2VkID0gdHJ1ZTsKICAgICAKLSAgICBib29sIG5lZWRz
RGVzY2VuZGVudHNDbGlwcGluZ0xheWVyID0gY29tcG9zaXRvcigpLmNsaXBzQ29tcG9zaXRpbmdE
ZXNjZW5kYW50cyhtX293bmluZ0xheWVyKTsKKyAgICBib29sIG5lZWRzRGVzY2VuZGVudHNDbGlw
cGluZ0xheWVyID0gY29tcG9zaXRvcigpLmNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cygqbV9v
d25pbmdMYXllcik7CiAKICAgICAvLyBPdXIgc2Nyb2xsaW5nIGxheWVyIHdpbGwgY2xpcC4KICAg
ICBpZiAobV9vd25pbmdMYXllci0+bmVlZHNDb21wb3NpdGVkU2Nyb2xsaW5nKCkpCiAgICAgICAg
IG5lZWRzRGVzY2VuZGVudHNDbGlwcGluZ0xheWVyID0gZmFsc2U7CiAKLSAgICBpZiAodXBkYXRl
QW5jZXN0b3JDbGlwcGluZ0xheWVyKGNvbXBvc2l0b3IoKS5jbGlwcGVkQnlBbmNlc3RvcihtX293
bmluZ0xheWVyKSkpCisgICAgaWYgKHVwZGF0ZUFuY2VzdG9yQ2xpcHBpbmdMYXllcihjb21wb3Np
dG9yKCkuY2xpcHBlZEJ5QW5jZXN0b3IoKm1fb3duaW5nTGF5ZXIpKSkKICAgICAgICAgbGF5ZXJD
b25maWdDaGFuZ2VkID0gdHJ1ZTsKIAogICAgIGlmICh1cGRhdGVEZXNjZW5kYW50Q2xpcHBpbmdM
YXllcihuZWVkc0Rlc2NlbmRlbnRzQ2xpcHBpbmdMYXllcikpCkBAIC04MTYsNyArODE2LDcgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAK
ICAgICAgICAgSW50U2l6ZSBzY3JvbGxpbmdDb250ZW50c09mZnNldCA9IHRvSW50U2l6ZShwYWRk
aW5nQm94LmxvY2F0aW9uKCkgLSBzY3JvbGxPZmZzZXQpOwogICAgICAgICBpZiAoc2Nyb2xsaW5n
Q29udGVudHNPZmZzZXQgIT0gbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5vZmZzZXRGcm9tUmVu
ZGVyZXIoKSB8fCBzY3JvbGxTaXplICE9IG1fc2Nyb2xsaW5nQ29udGVudHNMYXllci0+c2l6ZSgp
KQotICAgICAgICAgICAgY29tcG9zaXRvcigpLnNjcm9sbGluZ0xheWVyRGlkQ2hhbmdlKG1fb3du
aW5nTGF5ZXIpOworICAgICAgICAgICAgY29tcG9zaXRvcigpLnNjcm9sbGluZ0xheWVyRGlkQ2hh
bmdlKCptX293bmluZ0xheWVyKTsKIAogICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXIt
PnNldFNpemUoc2Nyb2xsU2l6ZSk7CiAgICAgICAgIC8vIEZJWE1FOiBUaGUgcGFpbnQgb2Zmc2V0
IGFuZCB0aGUgc2Nyb2xsIG9mZnNldCBzaG91bGQgcmVhbGx5IGJlIHNlcGFyYXRlIGNvbmNlcHRz
LgpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFw
aGljc0xheWVyR2VvbWV0cnkoKQogICAgIH0KIAogICAgIC8vIElmIHRoaXMgbGF5ZXIgd2FzIGNy
ZWF0ZWQganVzdCBmb3IgY2xpcHBpbmcgb3IgdG8gYXBwbHkgcGVyc3BlY3RpdmUsIGl0IGRvZXNu
J3QgbmVlZCBpdHMgb3duIGJhY2tpbmcgc3RvcmUuCi0gICAgc2V0UmVxdWlyZXNPd25CYWNraW5n
U3RvcmUoY29tcG9zaXRvcigpLnJlcXVpcmVzT3duQmFja2luZ1N0b3JlKG1fb3duaW5nTGF5ZXIs
IGNvbXBBbmNlc3RvciwgcmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcywgYW5jZXN0b3JDb21wb3Np
dGluZ0JvdW5kcykpOworICAgIHNldFJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGNvbXBvc2l0b3Io
KS5yZXF1aXJlc093bkJhY2tpbmdTdG9yZSgqbV9vd25pbmdMYXllciwgY29tcEFuY2VzdG9yLCBy
ZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLCBhbmNlc3RvckNvbXBvc2l0aW5nQm91bmRzKSk7CiAK
ICAgICBib29sIGRpZFVwZGF0ZUNvbnRlbnRzUmVjdCA9IGZhbHNlOwogICAgIHVwZGF0ZURpcmVj
dGx5Q29tcG9zaXRlZENvbnRlbnRzKGlzU2ltcGxlQ29udGFpbmVyLCBkaWRVcGRhdGVDb250ZW50
c1JlY3QpOwpAQCAtODU5LDcgKzg1OSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpyZWdp
c3RlclNjcm9sbGluZ0xheWVycygpCiAgICAgaWYgKCFzY3JvbGxpbmdDb29yZGluYXRvcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgY29tcG9zaXRvcigpLnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWlu
dFN0YXR1cyhtX293bmluZ0xheWVyKTsKKyAgICBjb21wb3NpdG9yKCkudXBkYXRlVmlld3BvcnRD
b25zdHJhaW50U3RhdHVzKCptX293bmluZ0xheWVyKTsKIAogICAgIGlmICghc2Nyb2xsaW5nQ29v
cmRpbmF0b3ItPnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpKQogICAgICAgICByZXR1cm47
CkBAIC0xMjgxLDcgKzEyODEsNyBAQCBib29sIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlU2Ny
b2xsaW5nTGF5ZXJzKGJvb2wgbmVlZHNTY3JvbGxpbmdMYXllcnMpCiAgICAgICAgIHVwZGF0ZUlu
dGVybmFsSGllcmFyY2h5KCk7CiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0UGFpbnRpbmdQ
aGFzZShwYWludGluZ1BoYXNlRm9yUHJpbWFyeUxheWVyKCkpOwogICAgICAgICBtX2dyYXBoaWNz
TGF5ZXItPnNldE5lZWRzRGlzcGxheSgpOwotICAgICAgICBjb21wb3NpdG9yKCkuc2Nyb2xsaW5n
TGF5ZXJEaWRDaGFuZ2UobV9vd25pbmdMYXllcik7CisgICAgICAgIGNvbXBvc2l0b3IoKS5zY3Jv
bGxpbmdMYXllckRpZENoYW5nZSgqbV9vd25pbmdMYXllcik7CiAgICAgfQogCiAgICAgcmV0dXJu
IGxheWVyQ2hhbmdlZDsKQEAgLTE4OTIsNyArMTg5Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpzZXRSZXF1aXJlc093bkJhY2tpbmdTdG9yZShib29sIHJlcXVpcmVzT3duQmFja2luZykK
ICAgICBtX293bmluZ0xheWVyLT5jbGVhckNsaXBSZWN0c0luY2x1ZGluZ0Rlc2NlbmRhbnRzKFBh
aW50aW5nQ2xpcFJlY3RzKTsKICAgICBtX293bmluZ0xheWVyLT5jb21wdXRlUmVwYWludFJlY3Rz
SW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKICAgICAKLSAgICBjb21wb3NpdG9yKCkucmVwYWludElu
Q29tcG9zaXRlZEFuY2VzdG9yKG1fb3duaW5nTGF5ZXIsIGNvbXBvc2l0ZWRCb3VuZHMoKSk7Cisg
ICAgY29tcG9zaXRvcigpLnJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3RvcigqbV9vd25pbmdMYXll
ciwgY29tcG9zaXRlZEJvdW5kcygpKTsKIH0KIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcp
CkBAIC0yMDY4LDcgKzIwNjgsNyBAQCBmbG9hdCBSZW5kZXJMYXllckJhY2tpbmc6OmRldmljZVNj
YWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OmRpZENvbW1pdENo
YW5nZXNGb3JMYXllcihjb25zdCBHcmFwaGljc0xheWVyKiBsYXllcikgY29uc3QKIHsKLSAgICBj
b21wb3NpdG9yKCkuZGlkRmx1c2hDaGFuZ2VzRm9yTGF5ZXIobV9vd25pbmdMYXllciwgbGF5ZXIp
OworICAgIGNvbXBvc2l0b3IoKS5kaWRGbHVzaENoYW5nZXNGb3JMYXllcigqbV9vd25pbmdMYXll
ciwgbGF5ZXIpOwogfQogCiBib29sIFJlbmRlckxheWVyQmFja2luZzo6Z2V0Q3VycmVudFRyYW5z
Zm9ybShjb25zdCBHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyLCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmMDhhNTRiOTRlMDFmZGU0MzU3MTQwMWRh
NjQxN2VlNmRmYjY3MjRjLi43MzlmMmExYTRjNzQ4OGM3NzA3ZTkwY2Y5M2Q2YmYyMjQxNDliMjhi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtMzkxLDIyICszOTEsMTkgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyhib29sIGlzRmx1c2hSb290KQogICAgIEFTU0VSVCht
X2ZsdXNoaW5nTGF5ZXJzKTsKICAgICBtX2ZsdXNoaW5nTGF5ZXJzID0gZmFsc2U7CiAKLSAgICBp
ZiAoIW1fdmlld3BvcnRDb25zdHJhaW5lZExheWVyc05lZWRpbmdVcGRhdGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV92
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5lbmQoKTsKLSAgICAgICAgZm9y
IChIYXNoU2V0PFJlbmRlckxheWVyKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV92aWV3cG9ydENv
bnN0cmFpbmVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0g
ICAgICAgICAgICByZWdpc3Rlck9yVXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKCppdCk7
Ci0gICAgICAgIAotICAgICAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnNOZWVkaW5nVXBk
YXRlLmNsZWFyKCk7Ci0gICAgfQorICAgIGZvciAoYXV0byBpdCA9IG1fdmlld3BvcnRDb25zdHJh
aW5lZExheWVyc05lZWRpbmdVcGRhdGUuYmVnaW4oKSwgZW5kID0gbV92aWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXJzTmVlZGluZ1VwZGF0ZS5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBy
ZWdpc3Rlck9yVXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKCoqaXQpOworICAgIG1fdmll
d3BvcnRDb25zdHJhaW5lZExheWVyc05lZWRpbmdVcGRhdGUuY2xlYXIoKTsKKwogICAgIHN0YXJ0
TGF5ZXJGbHVzaFRpbWVySWZOZWVkZWQoKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmRpZEZsdXNoQ2hhbmdlc0ZvckxheWVyKFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgR3Jh
cGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpk
aWRGbHVzaENoYW5nZXNGb3JMYXllcihSZW5kZXJMYXllciYgbGF5ZXIsIGNvbnN0IEdyYXBoaWNz
TGF5ZXIqIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgaWYgKG1fdmlld3BvcnRDb25zdHJhaW5lZExh
eWVycy5jb250YWlucyhsYXllcikpCi0gICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVy
c05lZWRpbmdVcGRhdGUuYWRkKGxheWVyKTsKKyAgICBpZiAobV92aWV3cG9ydENvbnN0cmFpbmVk
TGF5ZXJzLmNvbnRhaW5zKCZsYXllcikpCisgICAgICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZExh
eWVyc05lZWRpbmdVcGRhdGUuYWRkKCZsYXllcik7CiAKLSAgICBSZW5kZXJMYXllckJhY2tpbmcq
IGJhY2tpbmcgPSBsYXllci0+YmFja2luZygpOworICAgIFJlbmRlckxheWVyQmFja2luZyogYmFj
a2luZyA9IGxheWVyLmJhY2tpbmcoKTsKICAgICBpZiAoYmFja2luZy0+YmFja2dyb3VuZExheWVy
UGFpbnRzRml4ZWRSb290QmFja2dyb3VuZCgpICYmIGdyYXBoaWNzTGF5ZXIgPT0gYmFja2luZy0+
YmFja2dyb3VuZExheWVyKCkpCiAgICAgICAgIGZpeGVkUm9vdEJhY2tncm91bmRMYXllckNoYW5n
ZWQoKTsKIH0KQEAgLTQ4Miw5ICs0NzksOSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlQ29tcG9zaXRpbmdMYXllcnNUaW1lckZpcmVkKFRpbWVyPFJlbmRlckxheWVyQwogICAg
IHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzKENvbXBvc2l0aW5nVXBkYXRlQWZ0ZXJMYXlvdXQpOwog
fQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aGFzQW55QWRkaXRpb25hbENvbXBvc2l0
ZWRMYXllcnMoY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllcikgY29uc3QKK2Jvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpoYXNBbnlBZGRpdGlvbmFsQ29tcG9zaXRlZExheWVycyhjb25zdCBS
ZW5kZXJMYXllciYgcm9vdExheWVyKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbXBvc2l0ZWRM
YXllckNvdW50ID4gKHJvb3RMYXllci0+aXNDb21wb3NpdGVkKCkgPyAxIDogMCk7CisgICAgcmV0
dXJuIG1fY29tcG9zaXRlZExheWVyQ291bnQgPiAocm9vdExheWVyLmlzQ29tcG9zaXRlZCgpID8g
MSA6IDApOwogfQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRp
bmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZVR5cGUsIFJlbmRlckxheWVyKiB1
cGRhdGVSb290KQpAQCAtNTM2LDcgKzUzMyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1VwZGF0ZVR5cGUgdXBkYXRlCiAK
ICAgICAvLyBPbmx5IGNsZWFyIHRoZSBmbGFnIGlmIHdlJ3JlIHVwZGF0aW5nIHRoZSBlbnRpcmUg
aGllcmFyY2h5LgogICAgIG1fY29tcG9zaXRpbmdMYXllcnNOZWVkUmVidWlsZCA9IGZhbHNlOwot
ICAgIHVwZGF0ZVJvb3QgPSByb290UmVuZGVyTGF5ZXIoKTsKKyAgICB1cGRhdGVSb290ID0gJnJv
b3RSZW5kZXJMYXllcigpOwogCiAgICAgaWYgKGlzRnVsbFVwZGF0ZSAmJiB1cGRhdGVUeXBlID09
IENvbXBvc2l0aW5nVXBkYXRlQWZ0ZXJMYXlvdXQpCiAgICAgICAgIG1fcmVldmFsdWF0ZUNvbXBv
c2l0aW5nQWZ0ZXJMYXlvdXQgPSBmYWxzZTsKQEAgLTU1OCw3ICs1NTUsNyBAQCB2b2lkIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRh
dGVUeXBlIHVwZGF0ZQogICAgICAgICBib29sIGxheWVyc0NoYW5nZWQgPSBmYWxzZTsKICAgICAg
ICAgYm9vbCBzYXczRFRyYW5zZm9ybSA9IGZhbHNlOwogICAgICAgICBPdmVybGFwTWFwIG92ZXJs
YXBUZXN0UmVxdWVzdE1hcDsKLSAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRz
KDAsIHVwZGF0ZVJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RNYXAsIGNvbXBTdGF0ZSwgbGF5ZXJz
Q2hhbmdlZCwgc2F3M0RUcmFuc2Zvcm0pOworICAgICAgICBjb21wdXRlQ29tcG9zaXRpbmdSZXF1
aXJlbWVudHMobnVsbHB0ciwgKnVwZGF0ZVJvb3QsICZvdmVybGFwVGVzdFJlcXVlc3RNYXAsIGNv
bXBTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgc2F3M0RUcmFuc2Zvcm0pOwogICAgICAgICBuZWVkSGll
cmFyY2h5VXBkYXRlIHw9IGxheWVyc0NoYW5nZWQ7CiAgICAgfQogCkBAIC01NzgsMTMgKzU3NSwx
MyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdMYXllcnMo
Q29tcG9zaXRpbmdVcGRhdGVUeXBlIHVwZGF0ZQogICAgIGlmIChuZWVkSGllcmFyY2h5VXBkYXRl
KSB7CiAgICAgICAgIC8vIFVwZGF0ZSB0aGUgaGllcmFyY2h5IG9mIHRoZSBjb21wb3NpdGluZyBs
YXllcnMuCiAgICAgICAgIFZlY3RvcjxHcmFwaGljc0xheWVyKj4gY2hpbGRMaXN0OwotICAgICAg
ICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUodXBkYXRlUm9vdCwgY2hpbGRMaXN0LCAwKTsK
KyAgICAgICAgcmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKCp1cGRhdGVSb290LCBjaGlsZExp
c3QsIDApOwogCiAgICAgICAgIC8vIEhvc3QgdGhlIGRvY3VtZW50IGxheWVyIGluIHRoZSBSZW5k
ZXJWaWV3J3Mgcm9vdCBsYXllci4KICAgICAgICAgaWYgKGlzRnVsbFVwZGF0ZSkgewogICAgICAg
ICAgICAgLy8gRXZlbiB3aGVuIGNoaWxkTGlzdCBpcyBlbXB0eSwgZG9uJ3QgZHJvcCBvdXQgb2Yg
Y29tcG9zaXRpbmcgbW9kZSBpZiB0aGVyZSBhcmUKICAgICAgICAgICAgIC8vIGNvbXBvc2l0ZWQg
bGF5ZXJzIHRoYXQgd2UgZGlkbid0IGhpdCBpbiBvdXIgdHJhdmVyc2FsIChlLmcuIGJlY2F1c2Ug
b2YgdmlzaWJpbGl0eTpoaWRkZW4pLgotICAgICAgICAgICAgaWYgKGNoaWxkTGlzdC5pc0VtcHR5
KCkgJiYgIWhhc0FueUFkZGl0aW9uYWxDb21wb3NpdGVkTGF5ZXJzKHVwZGF0ZVJvb3QpKQorICAg
ICAgICAgICAgaWYgKGNoaWxkTGlzdC5pc0VtcHR5KCkgJiYgIWhhc0FueUFkZGl0aW9uYWxDb21w
b3NpdGVkTGF5ZXJzKCp1cGRhdGVSb290KSkKICAgICAgICAgICAgICAgICBkZXN0cm95Um9vdExh
eWVyKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbV9yb290Q29udGVudExh
eWVyLT5zZXRDaGlsZHJlbihjaGlsZExpc3QpOwpAQCAtNTkyLDcgKzU4OSw3IEBAIHZvaWQgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0xheWVycyhDb21wb3NpdGluZ1Vw
ZGF0ZVR5cGUgdXBkYXRlCiAgICAgfSBlbHNlIGlmIChuZWVkR2VvbWV0cnlVcGRhdGUpIHsKICAg
ICAgICAgLy8gV2UganVzdCBuZWVkIHRvIGRvIGEgZ2VvbWV0cnkgdXBkYXRlLiBUaGlzIGlzIG9u
bHkgdXNlZCBmb3IgcG9zaXRpb246Zml4ZWQgc2Nyb2xsaW5nOwogICAgICAgICAvLyBtb3N0IG9m
IHRoZSB0aW1lLCBnZW9tZXRyeSBpcyB1cGRhdGVkIHZpYSBSZW5kZXJMYXllcjo6c3R5bGVDaGFu
Z2VkKCkuCi0gICAgICAgIHVwZGF0ZUxheWVyVHJlZUdlb21ldHJ5KHVwZGF0ZVJvb3QsIDApOwor
ICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeSgqdXBkYXRlUm9vdCwgMCk7CiAgICAgfQog
ICAgIAogI2lmICFMT0dfRElTQUJMRUQKQEAgLTYyMCwyMyArNjE3LDIzIEBAIHZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVSZW5kZXJGbG93VGhyZWFkTGF5ZXJzSWZOZWVkZWQoKQog
ICAgICAgICBtX3JlbmRlclZpZXcuZmxvd1RocmVhZENvbnRyb2xsZXIoKS51cGRhdGVSZW5kZXJG
bG93VGhyZWFkTGF5ZXJzSWZOZWVkZWQoKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJCZWNhbWVOb25Db21wb3NpdGVk
KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICAvLyBJbmZvcm0gdGhlIGluc3BlY3Rv
ciB0aGF0IHRoZSBnaXZlbiBSZW5kZXJMYXllciB3YXMgZGVzdHJveWVkLgotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQocGFnZSgpLCByZW5kZXJMYXll
cik7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZChw
YWdlKCksICZsYXllcik7CiAKICAgICBBU1NFUlQobV9jb21wb3NpdGVkTGF5ZXJDb3VudCA+IDAp
OwogICAgIC0tbV9jb21wb3NpdGVkTGF5ZXJDb3VudDsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQK
LXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsb2dMYXllckluZm8oY29uc3QgUmVuZGVyTGF5
ZXIqIGxheWVyLCBpbnQgZGVwdGgpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5
ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgaW50IGRlcHRoKQogewogICAgIGlmICgh
Y29tcG9zaXRpbmdMb2dFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlckxh
eWVyQmFja2luZyogYmFja2luZyA9IGxheWVyLT5iYWNraW5nKCk7Ci0gICAgaWYgKHJlcXVpcmVz
Q29tcG9zaXRpbmdMYXllcihsYXllcikgfHwgbGF5ZXItPmlzUm9vdExheWVyKCkpIHsKKyAgICBS
ZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBsYXllci5iYWNraW5nKCk7CisgICAgaWYgKHJl
cXVpcmVzQ29tcG9zaXRpbmdMYXllcihsYXllcikgfHwgbGF5ZXIuaXNSb290TGF5ZXIoKSkgewog
ICAgICAgICArK21fb2JsaWdhdGVDb21wb3NpdGVkTGF5ZXJDb3VudDsKICAgICAgICAgbV9vYmxp
Z2F0b3J5QmFja2luZ1N0b3JlQnl0ZXMgKz0gYmFja2luZy0+YmFja2luZ1N0b3JlTWVtb3J5RXN0
aW1hdGUoKTsKICAgICB9IGVsc2UgewpAQCAtNjQ1LDcgKzY0Miw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpsb2dMYXllckluZm8oY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBpbnQg
ZGVwdGgpCiAgICAgfQogCiAgICAgU3RyaW5nQnVpbGRlciBsb2dTdHJpbmc7Ci0gICAgbG9nU3Ry
aW5nLmFwcGVuZChTdHJpbmc6OmZvcm1hdCgiJSpwICVkeCVkICUuMmZLQiIsIDEyICsgZGVwdGgg
KiAyLCBsYXllciwKKyAgICBsb2dTdHJpbmcuYXBwZW5kKFN0cmluZzo6Zm9ybWF0KCIlKnAgJWR4
JWQgJS4yZktCIiwgMTIgKyBkZXB0aCAqIDIsICZsYXllciwKICAgICAgICAgYmFja2luZy0+Y29t
cG9zaXRlZEJvdW5kcygpLndpZHRoKCkucm91bmQoKSwgYmFja2luZy0+Y29tcG9zaXRlZEJvdW5k
cygpLmhlaWdodCgpLnJvdW5kKCksCiAgICAgICAgIGJhY2tpbmctPmJhY2tpbmdTdG9yZU1lbW9y
eUVzdGltYXRlKCkgLyAxMDI0KSk7CiAgICAgCkBAIC02NjIsMTMgKzY1OSwxMyBAQCB2b2lkIFJl
bmRlckxheWVyQ29tcG9zaXRvcjo6bG9nTGF5ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyKiBsYXll
ciwgaW50IGRlcHRoKQogICAgICAgICBsb2dTdHJpbmcuYXBwZW5kKCJdICIpOwogICAgIH0KIAot
ICAgIGxvZ1N0cmluZy5hcHBlbmQobGF5ZXItPm5hbWUoKSk7CisgICAgbG9nU3RyaW5nLmFwcGVu
ZChsYXllci5uYW1lKCkpOwogCiAgICAgTE9HKENvbXBvc2l0aW5nLCAiJXMiLCBsb2dTdHJpbmcu
dG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIH0KICNlbmRpZgogCi1ib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5n
Q2hhbmdlUmVwYWludCBzaG91bGRSZXBhaW50KQorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXImIGxheWVyLCBDb21wb3NpdGluZ0NoYW5nZVJlcGFp
bnQgc2hvdWxkUmVwYWludCkKIHsKICAgICBib29sIGxheWVyQ2hhbmdlZCA9IGZhbHNlOwogICAg
IFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiB2aWV3
cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiA9IFJlbmRlckxheWVyOjpOb05vdENv
bXBvc2l0ZWRSZWFzb247CkBAIC02NzYsMTYgKzY3MywxNiBAQCBib29sIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hh
bmdlUgogICAgIGlmIChuZWVkc1RvQmVDb21wb3NpdGVkKGxheWVyLCAmdmlld3BvcnRDb25zdHJh
aW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pKSB7CiAgICAgICAgIGVuYWJsZUNvbXBvc2l0aW5nTW9k
ZSgpOwogICAgICAgICAKLSAgICAgICAgaWYgKCFsYXllci0+YmFja2luZygpKSB7CisgICAgICAg
IGlmICghbGF5ZXIuYmFja2luZygpKSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSBuZWVkIHRvIHJl
cGFpbnQsIGRvIHNvIGJlZm9yZSBtYWtpbmcgYmFja2luZwogICAgICAgICAgICAgaWYgKHNob3Vs
ZFJlcGFpbnQgPT0gQ29tcG9zaXRpbmdDaGFuZ2VSZXBhaW50Tm93KQogICAgICAgICAgICAgICAg
IHJlcGFpbnRPbkNvbXBvc2l0aW5nQ2hhbmdlKGxheWVyKTsKIAotICAgICAgICAgICAgbGF5ZXIt
PmVuc3VyZUJhY2tpbmcoKTsKKyAgICAgICAgICAgIGxheWVyLmVuc3VyZUJhY2tpbmcoKTsKIAog
ICAgICAgICAgICAgLy8gQXQgdGhpcyB0aW1lLCB0aGUgU2Nyb2xsaW5nQ29vcmlkbmF0b3Igb25s
eSBzdXBwb3J0cyB0aGUgdG9wLWxldmVsIGZyYW1lLgotICAgICAgICAgICAgaWYgKGxheWVyLT5p
c1Jvb3RMYXllcigpICYmICFtX3JlbmRlclZpZXcuZG9jdW1lbnQoKS5vd25lckVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgICAgIGxheWVyLT5iYWNraW5nKCktPmF0dGFjaFRvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JXaXRoUGFyZW50KDApOworICAgICAgICAgICAgaWYgKGxheWVyLmlzUm9vdExheWVy
KCkgJiYgIW1fcmVuZGVyVmlldy5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpKSB7CisgICAgICAg
ICAgICAgICAgbGF5ZXIuYmFja2luZygpLT5hdHRhY2hUb1Njcm9sbGluZ0Nvb3JkaW5hdG9yV2l0
aFBhcmVudCgwKTsKICAgICAgICAgICAgICAgICBpZiAoU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNj
cm9sbGluZ0Nvb3JkaW5hdG9yID0gdGhpcy0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSkKICAgICAg
ICAgICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld1Jvb3RMYXllckRp
ZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKICNpZiBFTkFCTEUoUlVCQkVSX0JB
TkRJTkcpCkBAIC02OTgsMzIgKzY5NSwzMiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
dXBkYXRlQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogCiAg
ICAgICAgICAgICAvLyBUaGlzIGxheWVyIGFuZCBhbGwgb2YgaXRzIGRlc2NlbmRhbnRzIGhhdmUg
Y2FjaGVkIHJlcGFpbnRzIHJlY3RzIHRoYXQgYXJlIHJlbGF0aXZlIHRvCiAgICAgICAgICAgICAv
LyB0aGUgcmVwYWludCBjb250YWluZXIsIHNvIGNoYW5nZSB3aGVuIGNvbXBvc2l0aW5nIGNoYW5n
ZXM7IHdlIG5lZWQgdG8gdXBkYXRlIHRoZW0gaGVyZS4KLSAgICAgICAgICAgIGlmIChsYXllci0+
cGFyZW50KCkpCi0gICAgICAgICAgICAgICAgbGF5ZXItPmNvbXB1dGVSZXBhaW50UmVjdHNJbmNs
dWRpbmdEZXNjZW5kYW50cygpOworICAgICAgICAgICAgaWYgKGxheWVyLnBhcmVudCgpKQorICAg
ICAgICAgICAgICAgIGxheWVyLmNvbXB1dGVSZXBhaW50UmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50
cygpOwogCiAgICAgICAgICAgICBsYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKGxheWVyLT5iYWNraW5nKCkpIHsKKyAgICAgICAgaWYgKGxh
eWVyLmJhY2tpbmcoKSkgewogICAgICAgICAgICAgLy8gSWYgd2UncmUgcmVtb3ZpbmcgYmFja2lu
ZyBvbiBhIHJlZmxlY3Rpb24sIGNsZWFyIHRoZSBzb3VyY2UgR3JhcGhpY3NMYXllcidzIHBvaW50
ZXIgdG8KICAgICAgICAgICAgIC8vIGl0cyByZXBsaWNhIEdyYXBoaWNzTGF5ZXIuIEluIHByYWN0
aWNlIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBiZWNhdXNlIHJlZmxlY3RlZSBhbmQgcmVmbGVj
dGlvbiAKICAgICAgICAgICAgIC8vIGFyZSBib3RoIGVpdGhlciBjb21wb3NpdGVkLCBvciBub3Qg
Y29tcG9zaXRlZC4KLSAgICAgICAgICAgIGlmIChsYXllci0+aXNSZWZsZWN0aW9uKCkpIHsKLSAg
ICAgICAgICAgICAgICBSZW5kZXJMYXllciogc291cmNlTGF5ZXIgPSB0b1JlbmRlckxheWVyTW9k
ZWxPYmplY3QobGF5ZXItPnJlbmRlcmVyKCkucGFyZW50KCkpLT5sYXllcigpOworICAgICAgICAg
ICAgaWYgKGxheWVyLmlzUmVmbGVjdGlvbigpKSB7CisgICAgICAgICAgICAgICAgUmVuZGVyTGF5
ZXIqIHNvdXJjZUxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KGxheWVyLnJlbmRlcmVy
KCkucGFyZW50KCkpLT5sYXllcigpOwogICAgICAgICAgICAgICAgIGlmIChSZW5kZXJMYXllckJh
Y2tpbmcqIGJhY2tpbmcgPSBzb3VyY2VMYXllci0+YmFja2luZygpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnJlcGxpY2FMYXllcigpID09
IGxheWVyLT5iYWNraW5nKCktPmdyYXBoaWNzTGF5ZXIoKSk7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChiYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnJlcGxpY2FMYXllcigpID09IGxheWVy
LmJhY2tpbmcoKS0+Z3JhcGhpY3NMYXllcigpKTsKICAgICAgICAgICAgICAgICAgICAgYmFja2lu
Zy0+Z3JhcGhpY3NMYXllcigpLT5zZXRSZXBsaWNhdGVkQnlMYXllcigwKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJlbW92ZVZpZXdwb3J0Q29uc3Ry
YWluZWRMYXllcihsYXllcik7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGxheWVyLT5jbGVh
ckJhY2tpbmcoKTsKKyAgICAgICAgICAgIGxheWVyLmNsZWFyQmFja2luZygpOwogICAgICAgICAg
ICAgbGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gVGhpcyBsYXllciBhbmQg
YWxsIG9mIGl0cyBkZXNjZW5kYW50cyBoYXZlIGNhY2hlZCByZXBhaW50cyByZWN0cyB0aGF0IGFy
ZSByZWxhdGl2ZSB0bwogICAgICAgICAgICAgLy8gdGhlIHJlcGFpbnQgY29udGFpbmVyLCBzbyBj
aGFuZ2Ugd2hlbiBjb21wb3NpdGluZyBjaGFuZ2VzOyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVtIGhl
cmUuCi0gICAgICAgICAgICBsYXllci0+Y29tcHV0ZVJlcGFpbnRSZWN0c0luY2x1ZGluZ0Rlc2Nl
bmRhbnRzKCk7CisgICAgICAgICAgICBsYXllci5jb21wdXRlUmVwYWludFJlY3RzSW5jbHVkaW5n
RGVzY2VuZGFudHMoKTsKIAogICAgICAgICAgICAgLy8gSWYgd2UgbmVlZCB0byByZXBhaW50LCBk
byBzbyBub3cgdGhhdCB3ZSd2ZSByZW1vdmVkIHRoZSBiYWNraW5nCiAgICAgICAgICAgICBpZiAo
c2hvdWxkUmVwYWludCA9PSBDb21wb3NpdGluZ0NoYW5nZVJlcGFpbnROb3cpCkBAIC03MzIsMjYg
KzcyOSwyNiBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQmFja2luZyhSZW5k
ZXJMYXllciogbGF5ZXIsIENvbXBvc2l0aW5nQ2hhbmdlUgogICAgIH0KICAgICAKICNpZiBFTkFC
TEUoVklERU8pCi0gICAgaWYgKGxheWVyQ2hhbmdlZCAmJiBsYXllci0+cmVuZGVyZXIoKS5pc1Zp
ZGVvKCkpIHsKKyAgICBpZiAobGF5ZXJDaGFuZ2VkICYmIGxheWVyLnJlbmRlcmVyKCkuaXNWaWRl
bygpKSB7CiAgICAgICAgIC8vIElmIGl0J3MgYSB2aWRlbywgZ2l2ZSB0aGUgbWVkaWEgcGxheWVy
IGEgY2hhbmNlIHRvIGhvb2sgdXAgdG8gdGhlIGxheWVyLgotICAgICAgICB0b1JlbmRlclZpZGVv
KGxheWVyLT5yZW5kZXJlcigpKS5hY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRlQ2hhbmdlZCgpOwor
ICAgICAgICB0b1JlbmRlclZpZGVvKGxheWVyLnJlbmRlcmVyKCkpLmFjY2VsZXJhdGVkUmVuZGVy
aW5nU3RhdGVDaGFuZ2VkKCk7CiAgICAgfQogI2VuZGlmCiAKLSAgICBpZiAobGF5ZXJDaGFuZ2Vk
ICYmIGxheWVyLT5yZW5kZXJlcigpLmlzV2lkZ2V0KCkpIHsKLSAgICAgICAgUmVuZGVyTGF5ZXJD
b21wb3NpdG9yKiBpbm5lckNvbXBvc2l0b3IgPSBmcmFtZUNvbnRlbnRzQ29tcG9zaXRvcih0b1Jl
bmRlcldpZGdldCgmbGF5ZXItPnJlbmRlcmVyKCkpKTsKKyAgICBpZiAobGF5ZXJDaGFuZ2VkICYm
IGxheWVyLnJlbmRlcmVyKCkuaXNXaWRnZXQoKSkgeworICAgICAgICBSZW5kZXJMYXllckNvbXBv
c2l0b3IqIGlubmVyQ29tcG9zaXRvciA9IGZyYW1lQ29udGVudHNDb21wb3NpdG9yKHRvUmVuZGVy
V2lkZ2V0KCZsYXllci5yZW5kZXJlcigpKSk7CiAgICAgICAgIGlmIChpbm5lckNvbXBvc2l0b3Ig
JiYgaW5uZXJDb21wb3NpdG9yLT5pbkNvbXBvc2l0aW5nTW9kZSgpKQogICAgICAgICAgICAgaW5u
ZXJDb21wb3NpdG9yLT51cGRhdGVSb290TGF5ZXJBdHRhY2htZW50KCk7CiAgICAgfQogICAgIAog
ICAgIGlmIChsYXllckNoYW5nZWQpCi0gICAgICAgIGxheWVyLT5jbGVhckNsaXBSZWN0c0luY2x1
ZGluZ0Rlc2NlbmRhbnRzKFBhaW50aW5nQ2xpcFJlY3RzKTsKKyAgICAgICAgbGF5ZXIuY2xlYXJD
bGlwUmVjdHNJbmNsdWRpbmdEZXNjZW5kYW50cyhQYWludGluZ0NsaXBSZWN0cyk7CiAKICAgICAv
LyBJZiBhIGZpeGVkIHBvc2l0aW9uIGxheWVyIGdhaW5lZC9sb3N0IGEgYmFja2luZyBvciB0aGUg
cmVhc29uIG5vdCBjb21wb3NpdGluZyBpdCBjaGFuZ2VkLAogICAgIC8vIHRoZSBzY3JvbGxpbmcg
Y29vcmRpbmF0b3IgbmVlZHMgdG8gcmVjYWxjdWxhdGUgd2hldGhlciBpdCBjYW4gZG8gZmFzdCBz
Y3JvbGxpbmcuCi0gICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCktPnBvc2l0aW9uKCkg
PT0gRml4ZWRQb3NpdGlvbikgewotICAgICAgICBpZiAobGF5ZXItPnZpZXdwb3J0Q29uc3RyYWlu
ZWROb3RDb21wb3NpdGVkUmVhc29uKCkgIT0gdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0
ZWRSZWFzb24pIHsKLSAgICAgICAgICAgIGxheWVyLT5zZXRWaWV3cG9ydENvbnN0cmFpbmVkTm90
Q29tcG9zaXRlZFJlYXNvbih2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbik7
CisgICAgaWYgKGxheWVyLnJlbmRlcmVyKCkuc3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBv
c2l0aW9uKSB7CisgICAgICAgIGlmIChsYXllci52aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9z
aXRlZFJlYXNvbigpICE9IHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKSB7
CisgICAgICAgICAgICBsYXllci5zZXRWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJl
YXNvbih2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbik7CiAgICAgICAgICAg
ICBsYXllckNoYW5nZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChsYXllckNoYW5n
ZWQpIHsKQEAgLTc1OSwzNyArNzU2LDM3IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1
cGRhdGVCYWNraW5nKFJlbmRlckxheWVyKiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSCiAgICAg
ICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPmZyYW1lVmlld0ZpeGVkT2JqZWN0c0Rp
ZENoYW5nZSgmbV9yZW5kZXJWaWV3LmZyYW1lVmlldygpKTsKICAgICAgICAgfQogICAgIH0gZWxz
ZQotICAgICAgICBsYXllci0+c2V0Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24oUmVuZGVyTGF5ZXI6Ok5vTm90Q29tcG9zaXRlZFJlYXNvbik7CisgICAgICAgIGxheWVyLnNl
dFZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKFJlbmRlckxheWVyOjpOb05v
dENvbXBvc2l0ZWRSZWFzb24pOwogICAgIAotICAgIGlmIChsYXllci0+YmFja2luZygpKQotICAg
ICAgICBsYXllci0+YmFja2luZygpLT51cGRhdGVEZWJ1Z0luZGljYXRvcnMobV9zaG93RGVidWdC
b3JkZXJzLCBtX3Nob3dSZXBhaW50Q291bnRlcik7CisgICAgaWYgKGxheWVyLmJhY2tpbmcoKSkK
KyAgICAgICAgbGF5ZXIuYmFja2luZygpLT51cGRhdGVEZWJ1Z0luZGljYXRvcnMobV9zaG93RGVi
dWdCb3JkZXJzLCBtX3Nob3dSZXBhaW50Q291bnRlcik7CiAKICAgICByZXR1cm4gbGF5ZXJDaGFu
Z2VkOwogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJDb21wb3Np
dGluZ1N0YXRlKFJlbmRlckxheWVyKiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSZXBhaW50IHNo
b3VsZFJlcGFpbnQpCitib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlTGF5ZXJDb21w
b3NpdGluZ1N0YXRlKFJlbmRlckxheWVyJiBsYXllciwgQ29tcG9zaXRpbmdDaGFuZ2VSZXBhaW50
IHNob3VsZFJlcGFpbnQpCiB7CiAgICAgYm9vbCBsYXllckNoYW5nZWQgPSB1cGRhdGVCYWNraW5n
KGxheWVyLCBzaG91bGRSZXBhaW50KTsKIAogICAgIC8vIFNlZSBpZiB3ZSBuZWVkIGNvbnRlbnQg
b3IgY2xpcHBpbmcgbGF5ZXJzLiBNZXRob2RzIGNhbGxlZCBoZXJlIHNob3VsZCBhc3N1bWUKICAg
ICAvLyB0aGF0IHRoZSBjb21wb3NpdGluZyBzdGF0ZSBvZiBkZXNjZW5kYW50IGxheWVycyBoYXMg
bm90IGJlZW4gdXBkYXRlZCB5ZXQuCi0gICAgaWYgKGxheWVyLT5iYWNraW5nKCkgJiYgbGF5ZXIt
PmJhY2tpbmcoKS0+dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKSkKKyAgICBpZiAo
bGF5ZXIuYmFja2luZygpICYmIGxheWVyLmJhY2tpbmcoKS0+dXBkYXRlR3JhcGhpY3NMYXllckNv
bmZpZ3VyYXRpb24oKSkKICAgICAgICAgbGF5ZXJDaGFuZ2VkID0gdHJ1ZTsKIAogICAgIHJldHVy
biBsYXllckNoYW5nZWQ7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50
T25Db21wb3NpdGluZ0NoYW5nZShSZW5kZXJMYXllciogbGF5ZXIpCit2b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVwYWludE9uQ29tcG9zaXRpbmdDaGFuZ2UoUmVuZGVyTGF5ZXImIGxheWVy
KQogewogICAgIC8vIElmIHRoZSByZW5kZXJlciBpcyBub3QgYXR0YWNoZWQgeWV0LCBubyBuZWVk
IHRvIHJlcGFpbnQuCi0gICAgaWYgKCZsYXllci0+cmVuZGVyZXIoKSAhPSAmbV9yZW5kZXJWaWV3
ICYmICFsYXllci0+cmVuZGVyZXIoKS5wYXJlbnQoKSkKKyAgICBpZiAoJmxheWVyLnJlbmRlcmVy
KCkgIT0gJm1fcmVuZGVyVmlldyAmJiAhbGF5ZXIucmVuZGVyZXIoKS5wYXJlbnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5l
ciA9IGxheWVyLT5yZW5kZXJlcigpLmNvbnRhaW5lckZvclJlcGFpbnQoKTsKKyAgICBSZW5kZXJM
YXllck1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyID0gbGF5ZXIucmVuZGVyZXIoKS5jb250
YWluZXJGb3JSZXBhaW50KCk7CiAgICAgaWYgKCFyZXBhaW50Q29udGFpbmVyKQogICAgICAgICBy
ZXBhaW50Q29udGFpbmVyID0gJm1fcmVuZGVyVmlldzsKIAotICAgIGxheWVyLT5yZXBhaW50SW5j
bHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhyZXBhaW50Q29udGFpbmVyKTsKKyAgICBs
YXllci5yZXBhaW50SW5jbHVkaW5nTm9uQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhyZXBhaW50Q29u
dGFpbmVyKTsKICAgICBpZiAocmVwYWludENvbnRhaW5lciA9PSAmbV9yZW5kZXJWaWV3KSB7CiAg
ICAgICAgIC8vIFRoZSBjb250ZW50cyBvZiB0aGlzIGxheWVyIG1heSBiZSBtb3ZpbmcgYmV0d2Vl
biB0aGUgd2luZG93CiAgICAgICAgIC8vIGFuZCBhIEdyYXBoaWNzTGF5ZXIsIHNvIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHRoZSB3aW5kb3cgc3lzdGVtCkBAIC03OTksMTQgKzc5NiwxNCBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVwYWludE9uQ29tcG9zaXRpbmdDaGFuZ2UoUmVuZGVy
TGF5ZXIqIGxheWVyKQogfQogCiAvLyBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgbGF5b3V0IGlz
IHVwLXRvLWRhdGUsIHVubGlrZSByZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZSgpLgotdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3RvcihSZW5kZXJM
YXllciogbGF5ZXIsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlckxheWVyQ29t
cG9zaXRvcjo6cmVwYWludEluQ29tcG9zaXRlZEFuY2VzdG9yKFJlbmRlckxheWVyJiBsYXllciwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBSZW5kZXJMYXllciogY29tcG9zaXRlZEFu
Y2VzdG9yID0gbGF5ZXItPmVuY2xvc2luZ0NvbXBvc2l0aW5nTGF5ZXJGb3JSZXBhaW50KEV4Y2x1
ZGVTZWxmKTsKKyAgICBSZW5kZXJMYXllciogY29tcG9zaXRlZEFuY2VzdG9yID0gbGF5ZXIuZW5j
bG9zaW5nQ29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQoRXhjbHVkZVNlbGYpOwogICAgIGlmIChj
b21wb3NpdGVkQW5jZXN0b3IpIHsKICAgICAgICAgQVNTRVJUKGNvbXBvc2l0ZWRBbmNlc3Rvci0+
YmFja2luZygpKTsKIAogICAgICAgICBMYXlvdXRQb2ludCBvZmZzZXQ7Ci0gICAgICAgIGxheWVy
LT5jb252ZXJ0VG9MYXllckNvb3Jkcyhjb21wb3NpdGVkQW5jZXN0b3IsIG9mZnNldCk7CisgICAg
ICAgIGxheWVyLmNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbXBvc2l0ZWRBbmNlc3Rvciwgb2Zmc2V0
KTsKIAogICAgICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0ID0gcmVjdDsKICAgICAgICAgcmVw
YWludFJlY3QubW92ZUJ5KG9mZnNldCk7CkBAIC04MjIsMTA3ICs4MTksOTcgQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3RvcihSZW5kZXJMYXll
ciogbGF5ZXIsIGNvbnMKIAogLy8gVGhlIGJvdW5kcyBvZiB0aGUgR3JhcGhpY3NMYXllciBjcmVh
dGVkIGZvciBhIGNvbXBvc2l0aW5nIGxheWVyIGlzIHRoZSB1bmlvbiBvZiB0aGUgYm91bmRzIG9m
IGFsbCB0aGUgZGVzY2VuZGFudAogLy8gUmVuZGVyTGF5ZXJzIHRoYXQgYXJlIHJlbmRlcmVkIGJ5
IHRoZSBjb21wb3NpdGVkIFJlbmRlckxheWVyLgotTGF5b3V0UmVjdCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmNhbGN1bGF0ZUNvbXBvc2l0ZWRCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVy
LCBjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcikgY29uc3QKK0xheW91dFJlY3QgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjYWxjdWxhdGVDb21wb3NpdGVkQm91bmRzKGNvbnN0IFJlbmRl
ckxheWVyJiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZXImIGFuY2VzdG9yTGF5ZXIpIGNvbnN0CiB7
CiAgICAgaWYgKCFjYW5CZUNvbXBvc2l0ZWQobGF5ZXIpKQogICAgICAgICByZXR1cm4gTGF5b3V0
UmVjdCgpOwotICAgIHJldHVybiBsYXllci0+Y2FsY3VsYXRlTGF5ZXJCb3VuZHMoYW5jZXN0b3JM
YXllciwgMCwgUmVuZGVyTGF5ZXI6OkRlZmF1bHRDYWxjdWxhdGVMYXllckJvdW5kc0ZsYWdzIHwg
UmVuZGVyTGF5ZXI6OkV4Y2x1ZGVIaWRkZW5EZXNjZW5kYW50cyB8IFJlbmRlckxheWVyOjpEb250
Q29uc3RyYWluRm9yTWFzayk7CisgICAgcmV0dXJuIGxheWVyLmNhbGN1bGF0ZUxheWVyQm91bmRz
KCZhbmNlc3RvckxheWVyLCBudWxscHRyLCBSZW5kZXJMYXllcjo6RGVmYXVsdENhbGN1bGF0ZUxh
eWVyQm91bmRzRmxhZ3MgfCBSZW5kZXJMYXllcjo6RXhjbHVkZUhpZGRlbkRlc2NlbmRhbnRzIHwg
UmVuZGVyTGF5ZXI6OkRvbnRDb25zdHJhaW5Gb3JNYXNrKTsKIH0KIAotdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OmxheWVyV2FzQWRkZWQoUmVuZGVyTGF5ZXIqIC8qcGFyZW50Ki8sIFJlbmRl
ckxheWVyKiAvKmNoaWxkKi8pCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJXYXNB
ZGRlZChSZW5kZXJMYXllciYsIFJlbmRlckxheWVyJikKIHsKICAgICBzZXRDb21wb3NpdGluZ0xh
eWVyc05lZWRSZWJ1aWxkKCk7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXll
cldpbGxCZVJlbW92ZWQoUmVuZGVyTGF5ZXIqIHBhcmVudCwgUmVuZGVyTGF5ZXIqIGNoaWxkKQor
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmxheWVyV2lsbEJlUmVtb3ZlZChSZW5kZXJMYXll
ciYgcGFyZW50LCBSZW5kZXJMYXllciYgY2hpbGQpCiB7Ci0gICAgaWYgKCFjaGlsZC0+aXNDb21w
b3NpdGVkKCkgfHwgcGFyZW50LT5yZW5kZXJlcigpLmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkK
KyAgICBpZiAoIWNoaWxkLmlzQ29tcG9zaXRlZCgpIHx8IHBhcmVudC5yZW5kZXJlcigpLmRvY3Vt
ZW50QmVpbmdEZXN0cm95ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgcmVtb3ZlVmlld3Bv
cnRDb25zdHJhaW5lZExheWVyKGNoaWxkKTsKLSAgICByZXBhaW50SW5Db21wb3NpdGVkQW5jZXN0
b3IoY2hpbGQsIGNoaWxkLT5iYWNraW5nKCktPmNvbXBvc2l0ZWRCb3VuZHMoKSk7CisgICAgcmVw
YWludEluQ29tcG9zaXRlZEFuY2VzdG9yKGNoaWxkLCBjaGlsZC5iYWNraW5nKCktPmNvbXBvc2l0
ZWRCb3VuZHMoKSk7CiAKLSAgICBzZXRDb21wb3NpdGluZ1BhcmVudChjaGlsZCwgMCk7CisgICAg
c2V0Q29tcG9zaXRpbmdQYXJlbnQoY2hpbGQsIG51bGxwdHIpOwogICAgIHNldENvbXBvc2l0aW5n
TGF5ZXJzTmVlZFJlYnVpbGQoKTsKIH0KIAotUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6ZW5jbG9zaW5nTm9uU3RhY2tpbmdDbGlwcGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVy
KiBsYXllcikgY29uc3QKK1JlbmRlckxheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmVuY2xv
c2luZ05vblN0YWNraW5nQ2xpcHBpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIGNv
bnN0CiB7Ci0gICAgZm9yIChSZW5kZXJMYXllciogY3VyciA9IGxheWVyLT5wYXJlbnQoKTsgY3Vy
ciAhPSAwOyBjdXJyID0gY3Vyci0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYgKGN1cnItPmlzU3Rh
Y2tpbmdDb250YWluZXIoKSkKLSAgICAgICAgICAgIHJldHVybiAwOwotCi0gICAgICAgIGlmIChj
dXJyLT5yZW5kZXJlcigpLmhhc0NsaXBPck92ZXJmbG93Q2xpcCgpKQotICAgICAgICAgICAgcmV0
dXJuIGN1cnI7CisgICAgZm9yIChSZW5kZXJMYXllciogcGFyZW50ID0gbGF5ZXIucGFyZW50KCk7
IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkgeworICAgICAgICBpZiAocGFyZW50
LT5pc1N0YWNraW5nQ29udGFpbmVyKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICAgICAgaWYgKHBhcmVudC0+cmVuZGVyZXIoKS5oYXNDbGlwT3JPdmVyZmxvd0NsaXAoKSkKKyAg
ICAgICAgICAgIHJldHVybiBwYXJlbnQ7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCi12b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6YWRkVG9PdmVybGFw
TWFwKE92ZXJsYXBNYXAmIG92ZXJsYXBNYXAsIFJlbmRlckxheWVyKiBsYXllciwgSW50UmVjdCYg
bGF5ZXJCb3VuZHMsIGJvb2wmIGJvdW5kc0NvbXB1dGVkKQordm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJMYXll
ciYgbGF5ZXIsIEludFJlY3QmIGxheWVyQm91bmRzLCBib29sJiBib3VuZHNDb21wdXRlZCkKIHsK
LSAgICBpZiAobGF5ZXItPmlzUm9vdExheWVyKCkpCisgICAgaWYgKGxheWVyLmlzUm9vdExheWVy
KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghYm91bmRzQ29tcHV0ZWQpIHsKICAgICAg
ICAgLy8gRklYTUU6IElmIHRoaXMgbGF5ZXIncyBvdmVybGFwIGJvdW5kcyBpbmNsdWRlIGl0cyBj
aGlsZHJlbiwgd2UgZG9uJ3QgbmVlZCB0byBhZGQgaXRzCiAgICAgICAgIC8vIGNoaWxkcmVuJ3Mg
Ym91bmRzIHRvIHRoZSBvdmVybGFwIG1hcC4KLSAgICAgICAgbGF5ZXJCb3VuZHMgPSBlbmNsb3Np
bmdJbnRSZWN0KG92ZXJsYXBNYXAuZ2VvbWV0cnlNYXAoKS5hYnNvbHV0ZVJlY3QobGF5ZXItPm92
ZXJsYXBCb3VuZHMoKSkpOworICAgICAgICBsYXllckJvdW5kcyA9IGVuY2xvc2luZ0ludFJlY3Qo
b3ZlcmxhcE1hcC5nZW9tZXRyeU1hcCgpLmFic29sdXRlUmVjdChsYXllci5vdmVybGFwQm91bmRz
KCkpKTsKICAgICAgICAgLy8gRW1wdHkgcmVjdHMgbmV2ZXIgaW50ZXJzZWN0LCBidXQgd2UgbmVl
ZCB0aGVtIHRvIGZvciB0aGUgcHVycG9zZXMgb2Ygb3ZlcmxhcCB0ZXN0aW5nLgogICAgICAgICBp
ZiAobGF5ZXJCb3VuZHMuaXNFbXB0eSgpKQogICAgICAgICAgICAgbGF5ZXJCb3VuZHMuc2V0U2l6
ZShJbnRTaXplKDEsIDEpKTsKICAgICAgICAgYm91bmRzQ29tcHV0ZWQgPSB0cnVlOwogICAgIH0K
IAotICAgIEludFJlY3QgY2xpcFJlY3QgPSBwaXhlbFNuYXBwZWRJbnRSZWN0KGxheWVyLT5iYWNr
Z3JvdW5kQ2xpcFJlY3QoUmVuZGVyTGF5ZXI6OkNsaXBSZWN0c0NvbnRleHQocm9vdFJlbmRlckxh
eWVyKCksIDAsIEFic29sdXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVj
dCBmb3IgQ1NTIHJlZ2lvbnMuCisgICAgSW50UmVjdCBjbGlwUmVjdCA9IHBpeGVsU25hcHBlZElu
dFJlY3QobGF5ZXIuYmFja2dyb3VuZENsaXBSZWN0KFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250
ZXh0KCZyb290UmVuZGVyTGF5ZXIoKSwgMCwgQWJzb2x1dGVDbGlwUmVjdHMpKS5yZWN0KCkpOyAv
LyBGSVhNRTogSW5jb3JyZWN0IGZvciBDU1MgcmVnaW9ucy4KICAgICBjb25zdCBTZXR0aW5ncyYg
c2V0dGluZ3MgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuZnJhbWUoKS5zZXR0aW5ncygpOwog
ICAgIGlmICghc2V0dGluZ3MuYXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IoKSkKICAg
ICAgICAgY2xpcFJlY3Quc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkpOwogICAgIGNsaXBSZWN0Lmlu
dGVyc2VjdChsYXllckJvdW5kcyk7Ci0gICAgb3ZlcmxhcE1hcC5hZGQobGF5ZXIsIGNsaXBSZWN0
KTsKKyAgICBvdmVybGFwTWFwLmFkZCgmbGF5ZXIsIGNsaXBSZWN0KTsKIH0KIAotdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShPdmVybGFwTWFwJiBv
dmVybGFwTWFwLCBSZW5kZXJMYXllciogbGF5ZXIsIFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVy
KQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShP
dmVybGFwTWFwJiBvdmVybGFwTWFwLCBSZW5kZXJMYXllciYgbGF5ZXIsIFJlbmRlckxheWVyKiBh
bmNlc3RvckxheWVyKQogewotICAgIGlmICghY2FuQmVDb21wb3NpdGVkKGxheWVyKSB8fCBvdmVy
bGFwTWFwLmNvbnRhaW5zKGxheWVyKSkKKyAgICBpZiAoIWNhbkJlQ29tcG9zaXRlZChsYXllcikg
fHwgb3ZlcmxhcE1hcC5jb250YWlucygmbGF5ZXIpKQogICAgICAgICByZXR1cm47CiAKICAgICAv
LyBBIG51bGwgYW5jZXN0b3JMYXllciBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgJ2xheWVyJyBoYXMg
YWxyZWFkeSBiZWVuIHB1c2hlZC4KICAgICBpZiAoYW5jZXN0b3JMYXllcikKLSAgICAgICAgb3Zl
cmxhcE1hcC5nZW9tZXRyeU1hcCgpLnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IobGF5ZXIsIGFuY2Vz
dG9yTGF5ZXIpOworICAgICAgICBvdmVybGFwTWFwLmdlb21ldHJ5TWFwKCkucHVzaE1hcHBpbmdz
VG9BbmNlc3RvcigmbGF5ZXIsIGFuY2VzdG9yTGF5ZXIpOwogICAgIAogICAgIEludFJlY3QgYm91
bmRzOwogICAgIGJvb2wgaGF2ZUNvbXB1dGVkQm91bmRzID0gZmFsc2U7CiAgICAgYWRkVG9PdmVy
bGFwTWFwKG92ZXJsYXBNYXAsIGxheWVyLCBib3VuZHMsIGhhdmVDb21wdXRlZEJvdW5kcyk7CiAK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIobGF5ZXIpOworICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0b3IgbXV0YXRp
b25DaGVja2VyKCZsYXllcik7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci0+aXNTdGFja2luZ0Nv
bnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVy
TGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBj
dXJMYXllciA9IG5lZ1pPcmRlckxpc3QtPmF0KGkpOwotICAgICAgICAgICAgICAgIGFkZFRvT3Zl
cmxhcE1hcFJlY3Vyc2l2ZShvdmVybGFwTWFwLCBjdXJMYXllciwgbGF5ZXIpOwotICAgICAgICAg
ICAgfQorICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKKyAgICAgICAgaWYg
KFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlz
dCgpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5lZ1pPcmRlckxp
c3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBhZGRUb092ZXJsYXBN
YXBSZWN1cnNpdmUob3ZlcmxhcE1hcCwgKm5lZ1pPcmRlckxpc3QtPmF0KGkpLCAmbGF5ZXIpOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxG
bG93TGlzdCA9IGxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVy
ID0gbm9ybWFsRmxvd0xpc3QtPmF0KGkpOwotICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVj
dXJzaXZlKG92ZXJsYXBNYXAsIGN1ckxheWVyLCBsYXllcik7Ci0gICAgICAgIH0KKyAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxvd0xp
c3QoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5vcm1hbEZsb3dMaXN0
LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1
cnNpdmUob3ZlcmxhcE1hcCwgKm5vcm1hbEZsb3dMaXN0LT5hdChpKSwgJmxheWVyKTsKICAgICB9
CiAKLSAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci0+cG9zWk9yZGVyTGlz
dCgpKSB7Ci0gICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXpl
KCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsK
LSAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBwb3NaT3JkZXJMaXN0LT5h
dChpKTsKLSAgICAgICAgICAgICAgICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUob3ZlcmxhcE1h
cCwgY3VyTGF5ZXIsIGxheWVyKTsKLSAgICAgICAgICAgIH0KKyAgICBpZiAobGF5ZXIuaXNTdGFj
a2luZ0NvbnRhaW5lcigpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9z
Wk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kp
CisgICAgICAgICAgICAgICAgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKG92ZXJsYXBNYXAsICpw
b3NaT3JkZXJMaXN0LT5hdChpKSwgJmxheWVyKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAg
LTkzOSwxOSArOTI2LDE5IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRUb092ZXJs
YXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYgb3ZlcmxhcE1hcCwgUmVuCiAvLyAgICAgIG11c3Qg
YmUgY29tcG9zaXRpbmcgc28gdGhhdCBpdHMgY29udGVudHMgcmVuZGVyIG92ZXIgdGhhdCBjaGls
ZC4KIC8vICAgICAgVGhpcyBpbXBsaWVzIHRoYXQgaXRzIHBvc2l0aXZlIHotaW5kZXggY2hpbGRy
ZW4gbXVzdCBhbHNvIGJlIGNvbXBvc2l0aW5nLgogLy8KLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9y
TGF5ZXIsIFJlbmRlckxheWVyKiBsYXllciwgT3ZlcmxhcE1hcCogb3ZlcmxhcE1hcCwgQ29tcG9z
aXRpbmdTdGF0ZSYgY29tcG9zaXRpbmdTdGF0ZSwgYm9vbCYgbGF5ZXJzQ2hhbmdlZCwgYm9vbCYg
ZGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNv
bXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwg
UmVuZGVyTGF5ZXImIGxheWVyLCBPdmVybGFwTWFwKiBvdmVybGFwTWFwLCBDb21wb3NpdGluZ1N0
YXRlJiBjb21wb3NpdGluZ1N0YXRlLCBib29sJiBsYXllcnNDaGFuZ2VkLCBib29sJiBkZXNjZW5k
YW50SGFzM0RUcmFuc2Zvcm0pCiB7Ci0gICAgbGF5ZXItPnVwZGF0ZURlc2NlbmRhbnREZXBlbmRl
bnRGbGFncygpOwotICAgIGxheWVyLT51cGRhdGVMYXllckxpc3RzSWZOZWVkZWQoKTsKKyAgICBs
YXllci51cGRhdGVEZXNjZW5kYW50RGVwZW5kZW50RmxhZ3MoKTsKKyAgICBsYXllci51cGRhdGVM
YXllckxpc3RzSWZOZWVkZWQoKTsKIAotICAgIGlmIChsYXllci0+aXNPdXRPZkZsb3dSZW5kZXJG
bG93VGhyZWFkKCkpCisgICAgaWYgKGxheWVyLmlzT3V0T2ZGbG93UmVuZGVyRmxvd1RocmVhZCgp
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAob3ZlcmxhcE1hcCkKLSAgICAgICAgb3Zlcmxh
cE1hcC0+Z2VvbWV0cnlNYXAoKS5wdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGxheWVyLCBhbmNlc3Rv
ckxheWVyKTsKKyAgICAgICAgb3ZlcmxhcE1hcC0+Z2VvbWV0cnlNYXAoKS5wdXNoTWFwcGluZ3NU
b0FuY2VzdG9yKCZsYXllciwgYW5jZXN0b3JMYXllcik7CiAgICAgCiAgICAgLy8gQ2xlYXIgdGhl
IGZsYWcKLSAgICBsYXllci0+c2V0SGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KGZhbHNlKTsKKyAg
ICBsYXllci5zZXRIYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQoZmFsc2UpOwogCiAgICAgUmVuZGVy
TGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24gY29tcG9zaXRpbmdSZWFzb24gPSBjb21w
b3NpdGluZ1N0YXRlLm1fc3VidHJlZUlzQ29tcG9zaXRpbmcgPyBSZW5kZXJMYXllcjo6SW5kaXJl
Y3RDb21wb3NpdGluZ0ZvclN0YWNraW5nIDogUmVuZGVyTGF5ZXI6Ok5vSW5kaXJlY3RDb21wb3Np
dGluZ1JlYXNvbjsKIApAQCAtOTU5LDcgKzk0Niw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9y
CiAgICAgSW50UmVjdCBhYnNCb3VuZHM7CiAgICAgaWYgKG92ZXJsYXBNYXAgJiYgIW92ZXJsYXBN
YXAtPmlzRW1wdHkoKSAmJiBjb21wb3NpdGluZ1N0YXRlLm1fdGVzdGluZ092ZXJsYXApIHsKICAg
ICAgICAgLy8gSWYgd2UncmUgdGVzdGluZyBmb3Igb3ZlcmxhcCwgd2Ugb25seSBuZWVkIHRvIGNv
bXBvc2l0ZSBpZiB3ZSBvdmVybGFwIHNvbWV0aGluZyB0aGF0IGlzIGFscmVhZHkgY29tcG9zaXRl
ZC4KLSAgICAgICAgYWJzQm91bmRzID0gZW5jbG9zaW5nSW50UmVjdChvdmVybGFwTWFwLT5nZW9t
ZXRyeU1hcCgpLmFic29sdXRlUmVjdChsYXllci0+b3ZlcmxhcEJvdW5kcygpKSk7CisgICAgICAg
IGFic0JvdW5kcyA9IGVuY2xvc2luZ0ludFJlY3Qob3ZlcmxhcE1hcC0+Z2VvbWV0cnlNYXAoKS5h
YnNvbHV0ZVJlY3QobGF5ZXIub3ZlcmxhcEJvdW5kcygpKSk7CiAKICAgICAgICAgLy8gRW1wdHkg
cmVjdHMgbmV2ZXIgaW50ZXJzZWN0LCBidXQgd2UgbmVlZCB0aGVtIHRvIGZvciB0aGUgcHVycG9z
ZXMgb2Ygb3ZlcmxhcCB0ZXN0aW5nLgogICAgICAgICBpZiAoYWJzQm91bmRzLmlzRW1wdHkoKSkK
QEAgLTk3Nyw3ICs5NjQsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNv
bXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3RvcgogICAgICAgICBjb21w
b3NpdGluZ1JlYXNvbiA9IFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yT3Zlcmxh
cDsKICNlbmRpZgogCi0gICAgbGF5ZXItPnNldEluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24oY29t
cG9zaXRpbmdSZWFzb24pOworICAgIGxheWVyLnNldEluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24o
Y29tcG9zaXRpbmdSZWFzb24pOwogCiAgICAgLy8gVGhlIGNoaWxkcmVuIG9mIHRoaXMgbGF5ZXIg
ZG9uJ3QgbmVlZCB0byBjb21wb3NpdGUsIHVubGVzcyB0aGVyZSBpcwogICAgIC8vIGEgY29tcG9z
aXRpbmcgbGF5ZXIgYW1vbmcgdGhlbSwgc28gc3RhcnQgYnkgaW5oZXJpdGluZyB0aGUgY29tcG9z
aXRpbmcKQEAgLTk5MCw3ICs5NzcsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29t
cHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3RvcgogICAgICAg
ICAvLyBUZWxsIHRoZSBwYXJlbnQgaXQgaGFzIGNvbXBvc2l0aW5nIGRlc2NlbmRhbnRzLgogICAg
ICAgICBjb21wb3NpdGluZ1N0YXRlLm1fc3VidHJlZUlzQ29tcG9zaXRpbmcgPSB0cnVlOwogICAg
ICAgICAvLyBUaGlzIGxheWVyIG5vdyBhY3RzIGFzIHRoZSBhbmNlc3RvciBmb3Iga2lkcy4KLSAg
ICAgICAgY2hpbGRTdGF0ZS5tX2NvbXBvc2l0aW5nQW5jZXN0b3IgPSBsYXllcjsKKyAgICAgICAg
Y2hpbGRTdGF0ZS5tX2NvbXBvc2l0aW5nQW5jZXN0b3IgPSAmbGF5ZXI7CiAKICAgICAgICAgaWYg
KG92ZXJsYXBNYXApCiAgICAgICAgICAgICBvdmVybGFwTWFwLT5wdXNoQ29tcG9zaXRpbmdDb250
YWluZXIoKTsKQEAgLTEwMDAsMjQgKzk4NywyMiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6Y29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3Rvcgog
ICAgIH0KIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBMYXllckxpc3RNdXRhdGlvbkRldGVj
dG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CisgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3Rv
ciBtdXRhdGlvbkNoZWNrZXIoJmxheWVyKTsKICNlbmRpZgogCiAgICAgYm9vbCBhbnlEZXNjZW5k
YW50SGFzM0RUcmFuc2Zvcm0gPSBmYWxzZTsKIAotICAgIGlmIChsYXllci0+aXNTdGFja2luZ0Nv
bnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVy
TGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBsaXN0
U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBj
dXJMYXllciA9IG5lZ1pPcmRlckxpc3QtPmF0KGkpOwotICAgICAgICAgICAgICAgIGNvbXB1dGVD
b21wb3NpdGluZ1JlcXVpcmVtZW50cyhsYXllciwgY3VyTGF5ZXIsIG92ZXJsYXBNYXAsIGNoaWxk
U3RhdGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7CisgICAg
aWYgKGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkgeworICAgICAgICBpZiAoVmVjdG9yPFJl
bmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXllci5uZWdaT3JkZXJMaXN0KCkpIHsKKyAg
ICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgp
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVx
dWlyZW1lbnRzKCZsYXllciwgKm5lZ1pPcmRlckxpc3QtPmF0KGkpLCBvdmVybGFwTWFwLCBjaGls
ZFN0YXRlLCBsYXllcnNDaGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwogCiAg
ICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSB0byBtYWtlIGEgbGF5ZXIgZm9yIHRoaXMgY2hp
bGQsIG1ha2Ugb25lIG5vdyBzbyB3ZSBjYW4gaGF2ZSBhIGNvbnRlbnRzIGxheWVyCiAgICAgICAg
ICAgICAgICAgLy8gKHNpbmNlIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIC12ZSB6LW9yZGVy
IGNoaWxkIHJlbmRlcnMgdW5kZXJuZWF0aCBvdXIgY29udGVudHMpLgogICAgICAgICAgICAgICAg
IGlmICghd2lsbEJlQ29tcG9zaXRlZCAmJiBjaGlsZFN0YXRlLm1fc3VidHJlZUlzQ29tcG9zaXRp
bmcpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBsYXllciBjb21wb3NpdGluZwotICAg
ICAgICAgICAgICAgICAgICBsYXllci0+c2V0SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbihSZW5k
ZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ0ZvckJhY2tncm91bmRMYXllcik7Ci0gICAgICAg
ICAgICAgICAgICAgIGNoaWxkU3RhdGUubV9jb21wb3NpdGluZ0FuY2VzdG9yID0gbGF5ZXI7Cisg
ICAgICAgICAgICAgICAgICAgIGxheWVyLnNldEluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24oUmVu
ZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdGb3JCYWNrZ3JvdW5kTGF5ZXIpOworICAgICAg
ICAgICAgICAgICAgICBjaGlsZFN0YXRlLm1fY29tcG9zaXRpbmdBbmNlc3RvciA9ICZsYXllcjsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKG92ZXJsYXBNYXApCiAgICAgICAgICAgICAgICAgICAg
ICAgICBvdmVybGFwTWFwLT5wdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKTsKICAgICAgICAgICAg
ICAgICAgICAgLy8gVGhpcyBsYXllciBpcyBnb2luZyB0byBiZSBjb21wb3NpdGVkLCBzbyBjaGls
ZHJlbiBjYW4gc2FmZWx5IGlnbm9yZSB0aGUgZmFjdCB0aGF0IHRoZXJlJ3MgYW4gCkBAIC0xMDI5
LDI2ICsxMDE0LDIwIEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9z
aXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgICAgIH0KICAgICB9
CiAgICAgCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxh
eWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5vcm1h
bEZsb3dMaXN0LT5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNp
emU7ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbm9ybWFsRmxv
d0xpc3QtPmF0KGkpOwotICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRz
KGxheWVyLCBjdXJMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwg
YW55RGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKLSAgICAgICAgfQorICAgIGlmIChWZWN0b3I8
UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5ub3JtYWxGbG93TGlzdCgpKSB7
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUo
KTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVt
ZW50cygmbGF5ZXIsICpub3JtYWxGbG93TGlzdC0+YXQoaSksIG92ZXJsYXBNYXAsIGNoaWxkU3Rh
dGUsIGxheWVyc0NoYW5nZWQsIGFueURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSk7CiAgICAgfQog
Ci0gICAgaWYgKGxheWVyLT5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZl
Y3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXItPnBvc1pPcmRlckxpc3Qo
KSkgewotICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9yZGVyTGlzdC0+c2l6ZSgp
OwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0g
ICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gcG9zWk9yZGVyTGlzdC0+YXQo
aSk7Ci0gICAgICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKGxheWVy
LCBjdXJMYXllciwgb3ZlcmxhcE1hcCwgY2hpbGRTdGF0ZSwgbGF5ZXJzQ2hhbmdlZCwgYW55RGVz
Y2VuZGFudEhhczNEVHJhbnNmb3JtKTsKLSAgICAgICAgICAgIH0KKyAgICBpZiAobGF5ZXIuaXNT
dGFja2luZ0NvbnRhaW5lcigpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiog
cG9zWk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDAsIHNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyAr
K2kpCisgICAgICAgICAgICAgICAgY29tcHV0ZUNvbXBvc2l0aW5nUmVxdWlyZW1lbnRzKCZsYXll
ciwgKnBvc1pPcmRlckxpc3QtPmF0KGkpLCBvdmVybGFwTWFwLCBjaGlsZFN0YXRlLCBsYXllcnND
aGFuZ2VkLCBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0pOwogICAgICAgICB9CiAgICAgfQog
ICAgIAogICAgIC8vIElmIHdlIGp1c3QgZW50ZXJlZCBjb21wb3NpdGluZyBtb2RlLCB0aGUgcm9v
dCB3aWxsIGhhdmUgYmVjb21lIGNvbXBvc2l0ZWQgKGFzIGxvbmcgYXMgYWNjZWxlcmF0ZWQgY29t
cG9zaXRpbmcgaXMgZW5hYmxlZCkuCi0gICAgaWYgKGxheWVyLT5pc1Jvb3RMYXllcigpKSB7Cisg
ICAgaWYgKGxheWVyLmlzUm9vdExheWVyKCkpIHsKICAgICAgICAgaWYgKGluQ29tcG9zaXRpbmdN
b2RlKCkgJiYgbV9oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKQogICAgICAgICAgICAgd2lsbEJl
Q29tcG9zaXRlZCA9IHRydWU7CiAgICAgfQpAQCAtMTA2NCw5ICsxMDQzLDkgQEAgdm9pZCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJM
YXllciogYW5jZXN0b3IKICAgICAvLyBOb3cgY2hlY2sgZm9yIHJlYXNvbnMgdG8gYmVjb21lIGNv
bXBvc2l0ZWQgdGhhdCBkZXBlbmQgb24gdGhlIHN0YXRlIG9mIGRlc2NlbmRhbnQgbGF5ZXJzLgog
ICAgIFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uIGluZGlyZWN0Q29tcG9z
aXRpbmdSZWFzb247CiAgICAgaWYgKCF3aWxsQmVDb21wb3NpdGVkICYmIGNhbkJlQ29tcG9zaXRl
ZChsYXllcikKLSAgICAgICAgJiYgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29u
KCZsYXllci0+cmVuZGVyZXIoKSwgY2hpbGRTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nLCBh
bnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0sIGluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24pKSB7
Ci0gICAgICAgIGxheWVyLT5zZXRJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uKGluZGlyZWN0Q29t
cG9zaXRpbmdSZWFzb24pOwotICAgICAgICBjaGlsZFN0YXRlLm1fY29tcG9zaXRpbmdBbmNlc3Rv
ciA9IGxheWVyOworICAgICAgICAmJiByZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFz
b24obGF5ZXIucmVuZGVyZXIoKSwgY2hpbGRTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nLCBh
bnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0sIGluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24pKSB7
CisgICAgICAgIGxheWVyLnNldEluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24oaW5kaXJlY3RDb21w
b3NpdGluZ1JlYXNvbik7CisgICAgICAgIGNoaWxkU3RhdGUubV9jb21wb3NpdGluZ0FuY2VzdG9y
ID0gJmxheWVyOwogICAgICAgICBpZiAob3ZlcmxhcE1hcCkgewogICAgICAgICAgICAgb3Zlcmxh
cE1hcC0+cHVzaENvbXBvc2l0aW5nQ29udGFpbmVyKCk7CiAgICAgICAgICAgICBhZGRUb092ZXJs
YXBNYXBSZWN1cnNpdmUoKm92ZXJsYXBNYXAsIGxheWVyKTsKQEAgLTEwNzUsOSArMTA1NCw5IEBA
IHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVu
dHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yCiAgICAgfQogICAgIAogICAgIEFTU0VSVCh3aWxsQmVD
b21wb3NpdGVkID09IG5lZWRzVG9CZUNvbXBvc2l0ZWQobGF5ZXIpKTsKLSAgICBpZiAobGF5ZXIt
PnJlZmxlY3Rpb25MYXllcigpKSB7CisgICAgaWYgKGxheWVyLnJlZmxlY3Rpb25MYXllcigpKSB7
CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3Qgd2UgY2FsbCBjb21wdXRlQ29tcG9zaXRpbmdS
ZXF1aXJlbWVudHMgdG8gaGFuZGxlIGEgcmVmbGVjdGlvbiBvdmVybGFwcGluZyB3aXRoIGFub3Ro
ZXIgcmVuZGVyZXI/Ci0gICAgICAgIGxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKS0+c2V0SW5kaXJl
Y3RDb21wb3NpdGluZ1JlYXNvbih3aWxsQmVDb21wb3NpdGVkID8gUmVuZGVyTGF5ZXI6OkluZGly
ZWN0Q29tcG9zaXRpbmdGb3JTdGFja2luZyA6IFJlbmRlckxheWVyOjpOb0luZGlyZWN0Q29tcG9z
aXRpbmdSZWFzb24pOworICAgICAgICBsYXllci5yZWZsZWN0aW9uTGF5ZXIoKS0+c2V0SW5kaXJl
Y3RDb21wb3NpdGluZ1JlYXNvbih3aWxsQmVDb21wb3NpdGVkID8gUmVuZGVyTGF5ZXI6OkluZGly
ZWN0Q29tcG9zaXRpbmdGb3JTdGFja2luZyA6IFJlbmRlckxheWVyOjpOb0luZGlyZWN0Q29tcG9z
aXRpbmdSZWFzb24pOwogICAgIH0KIAogICAgIC8vIFN1YnNlcXVlbnQgbGF5ZXJzIGluIHRoZSBw
YXJlbnQgc3RhY2tpbmcgY29udGV4dCBhbHNvIG5lZWQgdG8gY29tcG9zaXRlLgpAQCAtMTA4NSw3
ICsxMDY0LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3NpdGlu
Z1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICAgICAgICAgY29tcG9zaXRpbmdT
dGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nID0gdHJ1ZTsKIAogICAgIC8vIFNldCB0aGUgZmxh
ZyB0byBzYXkgdGhhdCB0aGlzIFNDIGhhcyBjb21wb3NpdGluZyBjaGlsZHJlbi4KLSAgICBsYXll
ci0+c2V0SGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KGNoaWxkU3RhdGUubV9zdWJ0cmVlSXNDb21w
b3NpdGluZyk7CisgICAgbGF5ZXIuc2V0SGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KGNoaWxkU3Rh
dGUubV9zdWJ0cmVlSXNDb21wb3NpdGluZyk7CiAKICAgICAvLyBzZXRIYXNDb21wb3NpdGluZ0Rl
c2NlbmRhbnQoKSBtYXkgaGF2ZSBjaGFuZ2VkIHRoZSBhbnN3ZXIgdG8gbmVlZHNUb0JlQ29tcG9z
aXRlZCgpIHdoZW4gY2xpcHBpbmcsCiAgICAgLy8gc28gdGVzdCB0aGF0IGFnYWluLgpAQCAtMTA5
NCwxMiArMTA3MywxMiBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUNvbXBv
c2l0aW5nUmVxdWlyZW1lbnRzKFJlbmRlckxheWVyKiBhbmNlc3RvcgogICAgIC8vIFR1cm4gb3Zl
cmxhcCB0ZXN0aW5nIG9mZiBmb3IgbGF0ZXIgbGF5ZXJzIGlmIGl0J3MgYWxyZWFkeSBvZmYsIG9y
IGlmIHdlIGhhdmUgYW4gYW5pbWF0aW5nIHRyYW5zZm9ybS4KICAgICAvLyBOb3RlIHRoYXQgaWYg
dGhlIGxheWVyIGNsaXBzIGl0cyBkZXNjZW5kYW50cywgdGhlcmUncyBubyByZWFzb24gdG8gcHJv
cGFnYXRlIHRoZSBjaGlsZCBhbmltYXRpb24gdG8gdGhlIHBhcmVudCBsYXllcnMuIFRoYXQncyBi
ZWNhdXNlCiAgICAgLy8gd2Uga25vdyBmb3Igc3VyZSB0aGUgYW5pbWF0aW9uIGlzIGNvbnRhaW5l
ZCBpbnNpZGUgdGhlIGNsaXBwaW5nIHJlY3RhbmdsZSwgd2hpY2ggaXMgYWxyZWFkeSBhZGRlZCB0
byB0aGUgb3ZlcmxhcCBtYXAuCi0gICAgaWYgKCghY2hpbGRTdGF0ZS5tX3Rlc3RpbmdPdmVybGFw
ICYmICFpc0NvbXBvc2l0ZWRDbGlwcGluZ0xheWVyKSB8fCBpc1J1bm5pbmdBY2NlbGVyYXRlZFRy
YW5zZm9ybUFuaW1hdGlvbigmbGF5ZXItPnJlbmRlcmVyKCkpKQorICAgIGlmICgoIWNoaWxkU3Rh
dGUubV90ZXN0aW5nT3ZlcmxhcCAmJiAhaXNDb21wb3NpdGVkQ2xpcHBpbmdMYXllcikgfHwgaXNS
dW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24obGF5ZXIucmVuZGVyZXIoKSkpCiAg
ICAgICAgIGNvbXBvc2l0aW5nU3RhdGUubV90ZXN0aW5nT3ZlcmxhcCA9IGZhbHNlOwogICAgIAog
ICAgIGlmIChpc0NvbXBvc2l0ZWRDbGlwcGluZ0xheWVyKSB7CiAgICAgICAgIGlmICghd2lsbEJl
Q29tcG9zaXRlZCkgewotICAgICAgICAgICAgY2hpbGRTdGF0ZS5tX2NvbXBvc2l0aW5nQW5jZXN0
b3IgPSBsYXllcjsKKyAgICAgICAgICAgIGNoaWxkU3RhdGUubV9jb21wb3NpdGluZ0FuY2VzdG9y
ID0gJmxheWVyOwogICAgICAgICAgICAgaWYgKG92ZXJsYXBNYXApIHsKICAgICAgICAgICAgICAg
ICBvdmVybGFwTWFwLT5wdXNoQ29tcG9zaXRpbmdDb250YWluZXIoKTsKICAgICAgICAgICAgICAg
ICBhZGRUb092ZXJsYXBNYXBSZWN1cnNpdmUoKm92ZXJsYXBNYXAsIGxheWVyKTsKQEAgLTExMDgs
MzkgKzEwODcsMzkgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVDb21wb3Np
dGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0b3IKICAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAob3ZlcmxhcE1hcCAmJiBjaGlsZFN0YXRlLm1fY29tcG9zaXRpbmdBbmNlc3Rv
ciA9PSBsYXllciAmJiAhbGF5ZXItPmlzUm9vdExheWVyKCkpCisgICAgaWYgKG92ZXJsYXBNYXAg
JiYgY2hpbGRTdGF0ZS5tX2NvbXBvc2l0aW5nQW5jZXN0b3IgPT0gJmxheWVyICYmICFsYXllci5p
c1Jvb3RMYXllcigpKQogICAgICAgICBvdmVybGFwTWFwLT5wb3BDb21wb3NpdGluZ0NvbnRhaW5l
cigpOwogCiAgICAgLy8gSWYgd2UncmUgYmFjayBhdCB0aGUgcm9vdCwgYW5kIG5vIG90aGVyIGxh
eWVycyBuZWVkIHRvIGJlIGNvbXBvc2l0ZWQsIGFuZCB0aGUgcm9vdCBsYXllciBpdHNlbGYgZG9l
c24ndCBuZWVkCiAgICAgLy8gdG8gYmUgY29tcG9zaXRlZCwgdGhlbiB3ZSBjYW4gZHJvcCBvdXQg
b2YgY29tcG9zaXRpbmcgbW9kZSBhbHRvZ2V0aGVyLiBIb3dldmVyLCBkb24ndCBkcm9wIG91dCBv
ZiBjb21wb3NpdGluZyBtb2RlCiAgICAgLy8gaWYgdGhlcmUgYXJlIGNvbXBvc2l0ZWQgbGF5ZXJz
IHRoYXQgd2UgZGlkbid0IGhpdCBpbiBvdXIgdHJhdmVyc2FsIChlLmcuIGJlY2F1c2Ugb2Ygdmlz
aWJpbGl0eTpoaWRkZW4pLgotICAgIGlmIChsYXllci0+aXNSb290TGF5ZXIoKSAmJiAhY2hpbGRT
dGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nICYmICFyZXF1aXJlc0NvbXBvc2l0aW5nTGF5ZXIo
bGF5ZXIpICYmICFtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlICYmICFoYXNBbnlBZGRpdGlvbmFsQ29t
cG9zaXRlZExheWVycyhsYXllcikpIHsKKyAgICBpZiAobGF5ZXIuaXNSb290TGF5ZXIoKSAmJiAh
Y2hpbGRTdGF0ZS5tX3N1YnRyZWVJc0NvbXBvc2l0aW5nICYmICFyZXF1aXJlc0NvbXBvc2l0aW5n
TGF5ZXIobGF5ZXIpICYmICFtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlICYmICFoYXNBbnlBZGRpdGlv
bmFsQ29tcG9zaXRlZExheWVycyhsYXllcikpIHsKICAgICAgICAgZW5hYmxlQ29tcG9zaXRpbmdN
b2RlKGZhbHNlKTsKICAgICAgICAgd2lsbEJlQ29tcG9zaXRlZCA9IGZhbHNlOwogICAgIH0KICAg
ICAKICAgICAvLyBJZiB0aGUgbGF5ZXIgaXMgZ29pbmcgaW50byBjb21wb3NpdGluZyBtb2RlLCBy
ZXBhaW50IGl0cyBvbGQgbG9jYXRpb24uCiAgICAgQVNTRVJUKHdpbGxCZUNvbXBvc2l0ZWQgPT0g
bmVlZHNUb0JlQ29tcG9zaXRlZChsYXllcikpOwotICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRl
ZCgpICYmIHdpbGxCZUNvbXBvc2l0ZWQpCisgICAgaWYgKCFsYXllci5pc0NvbXBvc2l0ZWQoKSAm
JiB3aWxsQmVDb21wb3NpdGVkKQogICAgICAgICByZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZShs
YXllcik7CiAKICAgICAvLyBVcGRhdGUgYmFja2luZyBub3csIHNvIHRoYXQgd2UgY2FuIHVzZSBp
c0NvbXBvc2l0ZWQoKSByZWxpYWJseSBkdXJpbmcgdHJlZSB0cmF2ZXJzYWwgaW4gcmVidWlsZENv
bXBvc2l0aW5nTGF5ZXJUcmVlKCkuCiAgICAgaWYgKHVwZGF0ZUJhY2tpbmcobGF5ZXIsIENvbXBv
c2l0aW5nQ2hhbmdlUmVwYWludE5vdykpCiAgICAgICAgIGxheWVyc0NoYW5nZWQgPSB0cnVlOwog
Ci0gICAgaWYgKGxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSAmJiB1cGRhdGVMYXllckNvbXBvc2l0
aW5nU3RhdGUobGF5ZXItPnJlZmxlY3Rpb25MYXllcigpLCBDb21wb3NpdGluZ0NoYW5nZVJlcGFp
bnROb3cpKQorICAgIGlmIChsYXllci5yZWZsZWN0aW9uTGF5ZXIoKSAmJiB1cGRhdGVMYXllckNv
bXBvc2l0aW5nU3RhdGUoKmxheWVyLnJlZmxlY3Rpb25MYXllcigpLCBDb21wb3NpdGluZ0NoYW5n
ZVJlcGFpbnROb3cpKQogICAgICAgICBsYXllcnNDaGFuZ2VkID0gdHJ1ZTsKIAotICAgIGRlc2Nl
bmRhbnRIYXMzRFRyYW5zZm9ybSB8PSBhbnlEZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0gfHwgbGF5
ZXItPmhhczNEVHJhbnNmb3JtKCk7CisgICAgZGVzY2VuZGFudEhhczNEVHJhbnNmb3JtIHw9IGFu
eURlc2NlbmRhbnRIYXMzRFRyYW5zZm9ybSB8fCBsYXllci5oYXMzRFRyYW5zZm9ybSgpOwogCiAg
ICAgaWYgKG92ZXJsYXBNYXApCiAgICAgICAgIG92ZXJsYXBNYXAtPmdlb21ldHJ5TWFwKCkucG9w
TWFwcGluZ3NUb0FuY2VzdG9yKGFuY2VzdG9yTGF5ZXIpOwogfQogCi12b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6c2V0Q29tcG9zaXRpbmdQYXJlbnQoUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIs
IFJlbmRlckxheWVyKiBwYXJlbnRMYXllcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpz
ZXRDb21wb3NpdGluZ1BhcmVudChSZW5kZXJMYXllciYgY2hpbGRMYXllciwgUmVuZGVyTGF5ZXIq
IHBhcmVudExheWVyKQogewotICAgIEFTU0VSVCghcGFyZW50TGF5ZXIgfHwgY2hpbGRMYXllci0+
YW5jZXN0b3JDb21wb3NpdGluZ0xheWVyKCkgPT0gcGFyZW50TGF5ZXIpOwotICAgIEFTU0VSVChj
aGlsZExheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CisgICAgQVNTRVJUKCFwYXJlbnRMYXllciB8fCBj
aGlsZExheWVyLmFuY2VzdG9yQ29tcG9zaXRpbmdMYXllcigpID09IHBhcmVudExheWVyKTsKKyAg
ICBBU1NFUlQoY2hpbGRMYXllci5pc0NvbXBvc2l0ZWQoKSk7CiAKICAgICAvLyBJdCdzIHBvc3Np
YmxlIHRvIGJlIGNhbGxlZCB3aXRoIGEgcGFyZW50IHRoYXQgaXNuJ3QgeWV0IGNvbXBvc2l0ZWQg
d2hlbiB3ZSdyZSBkb2luZwogICAgIC8vIHBhcnRpYWwgdXBkYXRlcyBhcyByZXF1aXJlZCBieSBw
YWludGluZyBvciBoaXQgdGVzdGluZy4gSnVzdCBiYWlsIGluIHRoYXQgY2FzZTsKQEAgLTExNTAs
MTkgKzExMjksMTggQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldENvbXBvc2l0aW5n
UGFyZW50KFJlbmRlckxheWVyKiBjaGlsZExheWVyLCBSZW5kZXIKIAogICAgIGlmIChwYXJlbnRM
YXllcikgewogICAgICAgICBHcmFwaGljc0xheWVyKiBob3N0aW5nTGF5ZXIgPSBwYXJlbnRMYXll
ci0+YmFja2luZygpLT5wYXJlbnRGb3JTdWJsYXllcnMoKTsKLSAgICAgICAgR3JhcGhpY3NMYXll
ciogaG9zdGVkTGF5ZXIgPSBjaGlsZExheWVyLT5iYWNraW5nKCktPmNoaWxkRm9yU3VwZXJsYXll
cnMoKTsKKyAgICAgICAgR3JhcGhpY3NMYXllciogaG9zdGVkTGF5ZXIgPSBjaGlsZExheWVyLmJh
Y2tpbmcoKS0+Y2hpbGRGb3JTdXBlcmxheWVycygpOwogICAgICAgICAKICAgICAgICAgaG9zdGlu
Z0xheWVyLT5hZGRDaGlsZChob3N0ZWRMYXllcik7CiAgICAgfSBlbHNlCi0gICAgICAgIGNoaWxk
TGF5ZXItPmJhY2tpbmcoKS0+Y2hpbGRGb3JTdXBlcmxheWVycygpLT5yZW1vdmVGcm9tUGFyZW50
KCk7CisgICAgICAgIGNoaWxkTGF5ZXIuYmFja2luZygpLT5jaGlsZEZvclN1cGVybGF5ZXJzKCkt
PnJlbW92ZUZyb21QYXJlbnQoKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
bW92ZUNvbXBvc2l0ZWRDaGlsZHJlbihSZW5kZXJMYXllciogbGF5ZXIpCit2b2lkIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVtb3ZlQ29tcG9zaXRlZENoaWxkcmVuKFJlbmRlckxheWVyJiBsYXll
cikKIHsKLSAgICBBU1NFUlQobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKyAgICBBU1NFUlQobGF5
ZXIuaXNDb21wb3NpdGVkKCkpOwogCi0gICAgR3JhcGhpY3NMYXllciogaG9zdGluZ0xheWVyID0g
bGF5ZXItPmJhY2tpbmcoKS0+cGFyZW50Rm9yU3VibGF5ZXJzKCk7Ci0gICAgaG9zdGluZ0xheWVy
LT5yZW1vdmVBbGxDaGlsZHJlbigpOworICAgIGxheWVyLmJhY2tpbmcoKS0+cGFyZW50Rm9yU3Vi
bGF5ZXJzKCktPnJlbW92ZUFsbENoaWxkcmVuKCk7CiB9CiAKICNpZiBFTkFCTEUoVklERU8pCkBA
IC0xMTc1LDIyICsxMTUzLDIyIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjYW5BY2Nl
bGVyYXRlVmlkZW9SZW5kZXJpbmcoUmVuZGVyVmlkZW8mIHZpZGVvKSBjb25zCiB9CiAjZW5kaWYK
IAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJl
ZShSZW5kZXJMYXllciogbGF5ZXIsIFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJz
T2ZFbmNsb3NpbmdMYXllciwgaW50IGRlcHRoKQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciYgbGF5ZXIsIFZlY3RvcjxH
cmFwaGljc0xheWVyKj4mIGNoaWxkTGF5ZXJzT2ZFbmNsb3NpbmdMYXllciwgaW50IGRlcHRoKQog
ewogICAgIC8vIE1ha2UgdGhlIGxheWVyIGNvbXBvc2l0aW5nIGlmIG5lY2Vzc2FyeSwgYW5kIHNl
dCB1cCBjbGlwcGluZyBhbmQgY29udGVudCBsYXllcnMuCiAgICAgLy8gTm90ZSB0aGF0IHdlIGNh
biBvbmx5IGRvIHdvcmsgaGVyZSB0aGF0IGlzIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgdGhlIGRl
c2NlbmRhbnQgbGF5ZXJzCiAgICAgLy8gaGF2ZSBiZWVuIHByb2Nlc3NlZC4gY29tcHV0ZUNvbXBv
c2l0aW5nUmVxdWlyZW1lbnRzKCkgd2lsbCBhbHJlYWR5IGhhdmUgZG9uZSB0aGUgcmVwYWludCBp
ZiBuZWNlc3NhcnkuCiAKLSAgICBpZiAobGF5ZXItPmlzT3V0T2ZGbG93UmVuZGVyRmxvd1RocmVh
ZCgpKQorICAgIGlmIChsYXllci5pc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIFJlbmRlckxheWVyQmFja2luZyogbGF5ZXJCYWNraW5nID0g
bGF5ZXItPmJhY2tpbmcoKTsKKyAgICBSZW5kZXJMYXllckJhY2tpbmcqIGxheWVyQmFja2luZyA9
IGxheWVyLmJhY2tpbmcoKTsKICAgICBpZiAobGF5ZXJCYWNraW5nKSB7CiAgICAgICAgIC8vIFRo
ZSBjb21wb3NpdGluZyBzdGF0ZSBvZiBhbGwgb3VyIGNoaWxkcmVuIGhhcyBiZWVuIHVwZGF0ZWQg
YWxyZWFkeSwgc28gbm93CiAgICAgICAgIC8vIHdlIGNhbiBjb21wdXRlIGFuZCBjYWNoZSB0aGUg
Y29tcG9zaXRlZCBib3VuZHMgZm9yIHRoaXMgbGF5ZXIuCiAgICAgICAgIGxheWVyQmFja2luZy0+
dXBkYXRlQ29tcG9zaXRlZEJvdW5kcygpOwogCi0gICAgICAgIGlmIChSZW5kZXJMYXllciogcmVm
bGVjdGlvbiA9IGxheWVyLT5yZWZsZWN0aW9uTGF5ZXIoKSkgeworICAgICAgICBpZiAoUmVuZGVy
TGF5ZXIqIHJlZmxlY3Rpb24gPSBsYXllci5yZWZsZWN0aW9uTGF5ZXIoKSkgewogICAgICAgICAg
ICAgaWYgKHJlZmxlY3Rpb24tPmJhY2tpbmcoKSkKICAgICAgICAgICAgICAgICByZWZsZWN0aW9u
LT5iYWNraW5nKCktPnVwZGF0ZUNvbXBvc2l0ZWRCb3VuZHMoKTsKICAgICAgICAgfQpAQCAtMTIw
MCw3ICsxMTc4LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRDb21wb3Np
dGluZ0xheWVyVHJlZShSZW5kZXJMYXllciogbGF5ZXIsIFZlY3QKICAgICAgICAgCiAgICAgICAg
IGxheWVyQmFja2luZy0+dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCk7CiAKLSAgICAgICAg
aWYgKCFsYXllci0+cGFyZW50KCkpCisgICAgICAgIGlmICghbGF5ZXIucGFyZW50KCkpCiAgICAg
ICAgICAgICB1cGRhdGVSb290TGF5ZXJQb3NpdGlvbigpOwogCiAjaWYgIUxPR19ESVNBQkxFRApA
QCAtMTIwOSw3ICsxMTg3LDcgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYnVpbGRD
b21wb3NpdGluZ0xheWVyVHJlZShSZW5kZXJMYXllciogbGF5ZXIsIFZlY3QKICAgICAgICAgVU5V
U0VEX1BBUkFNKGRlcHRoKTsKICNlbmRpZgogICAgICAgICBpZiAobGF5ZXJCYWNraW5nLT5oYXNV
bnBvc2l0aW9uZWRPdmVyZmxvd0NvbnRyb2xzTGF5ZXJzKCkpCi0gICAgICAgICAgICBsYXllci0+
cG9zaXRpb25OZXdseUNyZWF0ZWRPdmVyZmxvd0NvbnRyb2xzKCk7CisgICAgICAgICAgICBsYXll
ci5wb3NpdGlvbk5ld2x5Q3JlYXRlZE92ZXJmbG93Q29udHJvbHMoKTsKICAgICB9CiAKICAgICAv
LyBJZiB0aGlzIGxheWVyIGhhcyBiYWNraW5nLCB0aGVuIHdlIGFyZSBjb2xsZWN0aW5nIGl0cyBj
aGlsZHJlbiwgb3RoZXJ3aXNlIGFwcGVuZGluZwpAQCAtMTIxOCwxNiArMTE5NiwxMyBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRl
ckxheWVyKiBsYXllciwgVmVjdAogICAgIFZlY3RvcjxHcmFwaGljc0xheWVyKj4mIGNoaWxkTGlz
dCA9IGxheWVyQmFja2luZyA/IGxheWVyQ2hpbGRyZW4gOiBjaGlsZExheWVyc09mRW5jbG9zaW5n
TGF5ZXI7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRl
Y3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOworICAgIExheWVyTGlzdE11dGF0aW9uRGV0ZWN0
b3IgbXV0YXRpb25DaGVja2VyKCZsYXllcik7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci0+aXNT
dGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiog
bmVnWk9yZGVyTGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNp
emVfdCBsaXN0U2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsKLSAgICAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIFJlbmRl
ckxheWVyKiBjdXJMYXllciA9IG5lZ1pPcmRlckxpc3QtPmF0KGkpOwotICAgICAgICAgICAgICAg
IHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShjdXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCAr
IDEpOwotICAgICAgICAgICAgfQorICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkp
IHsKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5
ZXIubmVnWk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6
ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgICAg
ICByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKm5lZ1pPcmRlckxpc3QtPmF0KGkpLCBjaGls
ZExpc3QsIGRlcHRoICsgMSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJZiBhIG5lZ2F0aXZl
IHotb3JkZXIgY2hpbGQgaXMgY29tcG9zaXRpbmcsIHdlIGdldCBhIGZvcmVncm91bmQgbGF5ZXIg
d2hpY2ggbmVlZHMgdG8gZ2V0IHBhcmVudGVkLgpAQCAtMTIzNSwyOCArMTIxMCwyMiBAQCB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVidWlsZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRl
ckxheWVyKiBsYXllciwgVmVjdAogICAgICAgICAgICAgY2hpbGRMaXN0LmFwcGVuZChsYXllckJh
Y2tpbmctPmZvcmVncm91bmRMYXllcigpKTsKICAgICB9CiAKLSAgICBpZiAoVmVjdG9yPFJlbmRl
ckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAg
ICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKLSAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZW5k
ZXJMYXllciogY3VyTGF5ZXIgPSBub3JtYWxGbG93TGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICBy
ZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoY3VyTGF5ZXIsIGNoaWxkTGlzdCwgZGVwdGggKyAx
KTsKLSAgICAgICAgfQorICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xp
c3QgPSBsYXllci5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
LCBzaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIHJlYnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZSgqbm9ybWFsRmxvd0xpc3QtPmF0KGkpLCBj
aGlsZExpc3QsIGRlcHRoICsgMSk7CiAgICAgfQogICAgIAotICAgIGlmIChsYXllci0+aXNTdGFj
a2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9z
Wk9yZGVyTGlzdCA9IGxheWVyLT5wb3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNpemVf
dCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIFJlbmRlckxh
eWVyKiBjdXJMYXllciA9IHBvc1pPcmRlckxpc3QtPmF0KGkpOwotICAgICAgICAgICAgICAgIHJl
YnVpbGRDb21wb3NpdGluZ0xheWVyVHJlZShjdXJMYXllciwgY2hpbGRMaXN0LCBkZXB0aCArIDEp
OwotICAgICAgICAgICAgfQorICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsK
KyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIu
cG9zWk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9
IHBvc1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgICAgICBy
ZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoKnBvc1pPcmRlckxpc3QtPmF0KGkpLCBjaGlsZExp
c3QsIGRlcHRoICsgMSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgaWYgKGxheWVyQmFj
a2luZykgewogICAgICAgICBib29sIHBhcmVudGVkID0gZmFsc2U7Ci0gICAgICAgIGlmIChsYXll
ci0+cmVuZGVyZXIoKS5pc1dpZGdldCgpKQotICAgICAgICAgICAgcGFyZW50ZWQgPSBwYXJlbnRG
cmFtZUNvbnRlbnRMYXllcnModG9SZW5kZXJXaWRnZXQoJmxheWVyLT5yZW5kZXJlcigpKSk7Cisg
ICAgICAgIGlmIChsYXllci5yZW5kZXJlcigpLmlzV2lkZ2V0KCkpCisgICAgICAgICAgICBwYXJl
bnRlZCA9IHBhcmVudEZyYW1lQ29udGVudExheWVycyh0b1JlbmRlcldpZGdldCgmbGF5ZXIucmVu
ZGVyZXIoKSkpOwogCiAgICAgICAgIGlmICghcGFyZW50ZWQpCiAgICAgICAgICAgICBsYXllckJh
Y2tpbmctPnBhcmVudEZvclN1YmxheWVycygpLT5zZXRDaGlsZHJlbihsYXllckNoaWxkcmVuKTsK
QEAgLTEzNTksMTAgKzEzMjgsMTAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RG
aXhlZEJhY2tncm91bmRzQ2hhbmdlZCgpCiAgICAgICAgIHNldENvbXBvc2l0aW5nTGF5ZXJzTmVl
ZFJlYnVpbGQoKTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNjcm9sbGluZ0xh
eWVyRGlkQ2hhbmdlKFJlbmRlckxheWVyKiBsYXllcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpzY3JvbGxpbmdMYXllckRpZENoYW5nZShSZW5kZXJMYXllciYgbGF5ZXIpCiB7CiAgICAg
aWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBzY3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCkpCi0gICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY3Jv
bGxhYmxlQXJlYVNjcm9sbExheWVyRGlkQ2hhbmdlKGxheWVyKTsKKyAgICAgICAgc2Nyb2xsaW5n
Q29vcmRpbmF0b3ItPnNjcm9sbGFibGVBcmVhU2Nyb2xsTGF5ZXJEaWRDaGFuZ2UoJmxheWVyKTsK
IH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmZpeGVkUm9vdEJhY2tncm91bmRMYXll
ckNoYW5nZWQoKQpAQCAtMTQ0NCwxOCArMTQxMywxOCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cGFyZW50RnJhbWVDb250ZW50TGF5ZXJzKFJlbmRlcldpZGdldCogcmVuZGVyZXIpCiB9
CiAKIC8vIFRoaXMganVzdCB1cGRhdGVzIGxheWVyIGdlb21ldHJ5IHdpdGhvdXQgY2hhbmdpbmcg
dGhlIGhpZXJhcmNoeS4KLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllclRy
ZWVHZW9tZXRyeShSZW5kZXJMYXllciogbGF5ZXIsIGludCBkZXB0aCkKK3ZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjp1cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5kZXJMYXllciYgbGF5ZXIs
IGludCBkZXB0aCkKIHsKICAgICAvLyBGSVhNRTogZml4ZWQgcG9zaXRpb25lZCBlbGVtZW50cyBp
bnNpZGUgYSBuYW1lZCBmbG93IGFyZSBub3QgY29tcG9zaXRlZCB5ZXQuCi0gICAgaWYgKGxheWVy
LT5pc091dE9mRmxvd1JlbmRlckZsb3dUaHJlYWQoKSkKKyAgICBpZiAobGF5ZXIuaXNPdXRPZkZs
b3dSZW5kZXJGbG93VGhyZWFkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJM
YXllckJhY2tpbmcqIGxheWVyQmFja2luZyA9IGxheWVyLT5iYWNraW5nKCkpIHsKKyAgICBpZiAo
UmVuZGVyTGF5ZXJCYWNraW5nKiBsYXllckJhY2tpbmcgPSBsYXllci5iYWNraW5nKCkpIHsKICAg
ICAgICAgLy8gVGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIGFsbCBvdXIgY2hpbGRyZW4gaGFzIGJl
ZW4gdXBkYXRlZCBhbHJlYWR5LCBzbyBub3cKICAgICAgICAgLy8gd2UgY2FuIGNvbXB1dGUgYW5k
IGNhY2hlIHRoZSBjb21wb3NpdGVkIGJvdW5kcyBmb3IgdGhpcyBsYXllci4KICAgICAgICAgbGF5
ZXJCYWNraW5nLT51cGRhdGVDb21wb3NpdGVkQm91bmRzKCk7CiAKLSAgICAgICAgaWYgKFJlbmRl
ckxheWVyKiByZWZsZWN0aW9uID0gbGF5ZXItPnJlZmxlY3Rpb25MYXllcigpKSB7CisgICAgICAg
IGlmIChSZW5kZXJMYXllciogcmVmbGVjdGlvbiA9IGxheWVyLnJlZmxlY3Rpb25MYXllcigpKSB7
CiAgICAgICAgICAgICBpZiAocmVmbGVjdGlvbi0+YmFja2luZygpKQogICAgICAgICAgICAgICAg
IHJlZmxlY3Rpb24tPmJhY2tpbmcoKS0+dXBkYXRlQ29tcG9zaXRlZEJvdW5kcygpOwogICAgICAg
ICB9CkBAIC0xNDYzLDcgKzE0MzIsNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlTGF5ZXJUcmVlR2VvbWV0cnkoUmVuZGVyTGF5ZXIqIGxheWVyLCBpbnQgZGVwdAogICAgICAg
ICBsYXllckJhY2tpbmctPnVwZGF0ZUdyYXBoaWNzTGF5ZXJDb25maWd1cmF0aW9uKCk7CiAgICAg
ICAgIGxheWVyQmFja2luZy0+dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCk7CiAKLSAgICAg
ICAgaWYgKCFsYXllci0+cGFyZW50KCkpCisgICAgICAgIGlmICghbGF5ZXIucGFyZW50KCkpCiAg
ICAgICAgICAgICB1cGRhdGVSb290TGF5ZXJQb3NpdGlvbigpOwogCiAjaWYgIUxPR19ESVNBQkxF
RApAQCAtMTQ3NCw0MCArMTQ0MywzNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBk
YXRlTGF5ZXJUcmVlR2VvbWV0cnkoUmVuZGVyTGF5ZXIqIGxheWVyLCBpbnQgZGVwdAogICAgIH0K
IAogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11
dGF0aW9uQ2hlY2tlcihsYXllcik7CisgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRh
dGlvbkNoZWNrZXIoJmxheWVyKTsKICNlbmRpZgogCi0gICAgaWYgKGxheWVyLT5pc1N0YWNraW5n
Q29udGFpbmVyKCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3Jk
ZXJMaXN0ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgc2l6ZV90IGxp
c3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVHJl
ZUdlb21ldHJ5KG5lZ1pPcmRlckxpc3QtPmF0KGkpLCBkZXB0aCArIDEpOworICAgIGlmIChsYXll
ci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKKyAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXll
cio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVnWk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5lZ1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeSgqbmVnWk9y
ZGVyTGlzdC0+YXQoaSksIGRlcHRoICsgMSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXItPm5vcm1hbEZsb3dM
aXN0KCkpIHsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUo
KTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQotICAgICAg
ICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkobm9ybWFsRmxvd0xpc3QtPmF0KGkpLCBkZXB0
aCArIDEpOworICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBs
YXllci5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXpl
ID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHVw
ZGF0ZUxheWVyVHJlZUdlb21ldHJ5KCpub3JtYWxGbG93TGlzdC0+YXQoaSksIGRlcHRoICsgMSk7
CiAgICAgfQogICAgIAotICAgIGlmIChsYXllci0+aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7Ci0g
ICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLT5w
b3NaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRl
ckxpc3QtPnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNp
emU7ICsraSkKLSAgICAgICAgICAgICAgICB1cGRhdGVMYXllclRyZWVHZW9tZXRyeShwb3NaT3Jk
ZXJMaXN0LT5hdChpKSwgZGVwdGggKyAxKTsKKyAgICBpZiAobGF5ZXIuaXNTdGFja2luZ0NvbnRh
aW5lcigpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlz
dCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDAsIHNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpCisgICAgICAg
ICAgICAgICAgdXBkYXRlTGF5ZXJUcmVlR2VvbWV0cnkoKnBvc1pPcmRlckxpc3QtPmF0KGkpLCBk
ZXB0aCArIDEpOwogICAgICAgICB9CiAgICAgfQogfQogCiAvLyBSZWN1cnMgZG93biB0aGUgUmVu
ZGVyTGF5ZXIgdHJlZSB1bnRpbCBpdHMgZmluZHMgdGhlIGNvbXBvc2l0aW5nIGRlc2NlbmRhbnRz
IG9mIGNvbXBvc2l0aW5nQW5jZXN0b3IgYW5kIHVwZGF0ZXMgdGhlaXIgZ2VvbWV0cnkuCi12b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0
cnkoUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXN0b3IsIFJlbmRlckxheWVyKiBsYXllciwg
Ym9vbCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KFJlbmRlckxheWVyJiBjb21wb3Np
dGluZ0FuY2VzdG9yLCBSZW5kZXJMYXllciYgbGF5ZXIsIGJvb2wgY29tcG9zaXRlZENoaWxkcmVu
T25seSkKIHsKLSAgICBpZiAobGF5ZXIgIT0gY29tcG9zaXRpbmdBbmNlc3RvcikgewotICAgICAg
ICBpZiAoUmVuZGVyTGF5ZXJCYWNraW5nKiBsYXllckJhY2tpbmcgPSBsYXllci0+YmFja2luZygp
KSB7CisgICAgaWYgKCZsYXllciAhPSAmY29tcG9zaXRpbmdBbmNlc3RvcikgeworICAgICAgICBp
ZiAoUmVuZGVyTGF5ZXJCYWNraW5nKiBsYXllckJhY2tpbmcgPSBsYXllci5iYWNraW5nKCkpIHsK
ICAgICAgICAgICAgIGxheWVyQmFja2luZy0+dXBkYXRlQ29tcG9zaXRlZEJvdW5kcygpOwogCi0g
ICAgICAgICAgICBpZiAoUmVuZGVyTGF5ZXIqIHJlZmxlY3Rpb24gPSBsYXllci0+cmVmbGVjdGlv
bkxheWVyKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJMYXllciogcmVmbGVjdGlvbiA9IGxh
eWVyLnJlZmxlY3Rpb25MYXllcigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHJlZmxlY3Rpb24t
PmJhY2tpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgcmVmbGVjdGlvbi0+YmFja2luZygpLT51
cGRhdGVDb21wb3NpdGVkQm91bmRzKCk7CiAgICAgICAgICAgICB9CkBAIC0xNTE4LDM1ICsxNDg0
LDM1IEBAIHZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjp1cGRhdGVDb21wb3NpdGluZ0Rlc2Nl
bmRhbnRHZW9tZXRyeShSZW5kZXJMYXllciogY29tCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAobGF5ZXItPnJlZmxlY3Rpb25MYXllcigpKQotICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rl
c2NlbmRhbnRHZW9tZXRyeShjb21wb3NpdGluZ0FuY2VzdG9yLCBsYXllci0+cmVmbGVjdGlvbkxh
eWVyKCksIGNvbXBvc2l0ZWRDaGlsZHJlbk9ubHkpOworICAgIGlmIChsYXllci5yZWZsZWN0aW9u
TGF5ZXIoKSkKKyAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29t
cG9zaXRpbmdBbmNlc3RvciwgKmxheWVyLnJlZmxlY3Rpb25MYXllcigpLCBjb21wb3NpdGVkQ2hp
bGRyZW5Pbmx5KTsKIAotICAgIGlmICghbGF5ZXItPmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgp
KQorICAgIGlmICghbGF5ZXIuaGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpCiAgICAgICAgIHJl
dHVybjsKIAogI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBMYXllckxpc3RNdXRhdGlvbkRldGVj
dG9yIG11dGF0aW9uQ2hlY2tlcihsYXllcik7CisgICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3Rv
ciBtdXRhdGlvbkNoZWNrZXIoJmxheWVyKTsKICNlbmRpZgogICAgIAotICAgIGlmIChsYXllci0+
aXNTdGFja2luZ0NvbnRhaW5lcigpKSB7Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLT5uZWdaT3JkZXJMaXN0KCkpIHsKKyAgICBpZiAobGF5
ZXIuaXNTdGFja2luZ0NvbnRhaW5lcigpKSB7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5
ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgewogICAgICAgICAg
ICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwogICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQotICAgICAgICAgICAgICAgIHVw
ZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsIG5l
Z1pPcmRlckxpc3QtPmF0KGkpLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsKKyAgICAgICAgICAg
ICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShjb21wb3NpdGluZ0FuY2Vz
dG9yLCAqbmVnWk9yZGVyTGlzdC0+YXQoaSksIGNvbXBvc2l0ZWRDaGlsZHJlbk9ubHkpOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93
TGlzdCA9IGxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7CisgICAgaWYgKFZlY3RvcjxSZW5kZXJM
YXllcio+KiBub3JtYWxGbG93TGlzdCA9IGxheWVyLm5vcm1hbEZsb3dMaXN0KCkpIHsKICAgICAg
ICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKQotICAgICAgICAgICAgdXBkYXRlQ29t
cG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoY29tcG9zaXRpbmdBbmNlc3Rvciwgbm9ybWFsRmxv
d0xpc3QtPmF0KGkpLCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5KTsKKyAgICAgICAgICAgIHVwZGF0
ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5KGNvbXBvc2l0aW5nQW5jZXN0b3IsICpub3Jt
YWxGbG93TGlzdC0+YXQoaSksIGNvbXBvc2l0ZWRDaGlsZHJlbk9ubHkpOwogICAgIH0KICAgICAK
LSAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250YWluZXIoKSkgewotICAgICAgICBpZiAoVmVj
dG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci0+cG9zWk9yZGVyTGlzdCgp
KSB7CisgICAgaWYgKGxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkgeworICAgICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXllci5wb3NaT3JkZXJMaXN0
KCkpIHsKICAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3QtPnNpemUo
KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkKLSAg
ICAgICAgICAgICAgICB1cGRhdGVDb21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShjb21wb3Np
dGluZ0FuY2VzdG9yLCBwb3NaT3JkZXJMaXN0LT5hdChpKSwgY29tcG9zaXRlZENoaWxkcmVuT25s
eSk7CisgICAgICAgICAgICAgICAgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnko
Y29tcG9zaXRpbmdBbmNlc3RvciwgKnBvc1pPcmRlckxpc3QtPmF0KGkpLCBjb21wb3NpdGVkQ2hp
bGRyZW5Pbmx5KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE1NTcsNjQgKzE1MjMsNjEgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcGFpbnRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0
IEludFJlY3QqIGFic1JlY3QpCiAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKHJvb3RSZW5kZXJM
YXllcigpLCBhYnNSZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlY3Vy
c2l2ZVJlcGFpbnRMYXllcihSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IEludFJlY3QqIHJlY3Qp
Cit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVjdXJzaXZlUmVwYWludExheWVyKFJlbmRl
ckxheWVyJiBsYXllciwgY29uc3QgSW50UmVjdCogcmVjdCkKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBtZXRob2QgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgotICAgIGlm
IChsYXllci0+aXNDb21wb3NpdGVkKCkgJiYgIWxheWVyLT5iYWNraW5nKCktPnBhaW50c0ludG9D
b21wb3NpdGVkQW5jZXN0b3IoKSkgeworICAgIGlmIChsYXllci5pc0NvbXBvc2l0ZWQoKSAmJiAh
bGF5ZXIuYmFja2luZygpLT5wYWludHNJbnRvQ29tcG9zaXRlZEFuY2VzdG9yKCkpIHsKICAgICAg
ICAgaWYgKHJlY3QpCi0gICAgICAgICAgICBsYXllci0+c2V0QmFja2luZ05lZWRzUmVwYWludElu
UmVjdCgqcmVjdCk7CisgICAgICAgICAgICBsYXllci5zZXRCYWNraW5nTmVlZHNSZXBhaW50SW5S
ZWN0KCpyZWN0KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tpbmdO
ZWVkc1JlcGFpbnQoKTsKKyAgICAgICAgICAgIGxheWVyLnNldEJhY2tpbmdOZWVkc1JlcGFpbnQo
KTsKICAgICB9CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgTGF5ZXJMaXN0TXV0YXRpb25E
ZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIpOworICAgIExheWVyTGlzdE11dGF0aW9uRGV0
ZWN0b3IgbXV0YXRpb25DaGVja2VyKCZsYXllcik7CiAjZW5kaWYKIAotICAgIGlmIChsYXllci0+
aGFzQ29tcG9zaXRpbmdEZXNjZW5kYW50KCkpIHsKLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJM
YXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXItPm5lZ1pPcmRlckxpc3QoKSkgewotICAgICAg
ICAgICAgc2l6ZV90IGxpc3RTaXplID0gbmVnWk9yZGVyTGlzdC0+c2l6ZSgpOwotICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gbmVnWk9yZGVyTGlzdC0+YXQoaSk7CisgICAgaWYg
KGxheWVyLmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgpKSB7CisgICAgICAgIGlmIChWZWN0b3I8
UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVyLm5lZ1pPcmRlckxpc3QoKSkgewor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXpl
KCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciYgY2hpbGRM
YXllciA9ICpuZWdaT3JkZXJMaXN0LT5hdChpKTsKICAgICAgICAgICAgICAgICBpZiAocmVjdCkg
ewogICAgICAgICAgICAgICAgICAgICBJbnRSZWN0IGNoaWxkUmVjdCgqcmVjdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGN1ckxheWVyLT5jb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3Jkcyhs
YXllciwgY2hpbGRSZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExh
eWVyKGN1ckxheWVyLCAmY2hpbGRSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXll
ci5jb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3JkcygmbGF5ZXIsIGNoaWxkUmVjdCk7Cisg
ICAgICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcihjaGlsZExheWVyLCAmY2hp
bGRSZWN0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVj
dXJzaXZlUmVwYWludExheWVyKGN1ckxheWVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjdXJz
aXZlUmVwYWludExheWVyKGNoaWxkTGF5ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0gbGF5ZXIt
PnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gcG9zWk9y
ZGVyTGlzdC0+c2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0
U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0gcG9z
Wk9yZGVyTGlzdC0+YXQoaSk7CisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9z
Wk9yZGVyTGlzdCA9IGxheWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDAsIHNpemUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgICAgICAgICBSZW5kZXJMYXllciYgY2hpbGRMYXllciA9ICpwb3NaT3JkZXJM
aXN0LT5hdChpKTsKICAgICAgICAgICAgICAgICBpZiAocmVjdCkgewogICAgICAgICAgICAgICAg
ICAgICBJbnRSZWN0IGNoaWxkUmVjdCgqcmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1ckxh
eWVyLT5jb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3JkcyhsYXllciwgY2hpbGRSZWN0KTsK
LSAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKGN1ckxheWVyLCAmY2hp
bGRSZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRMYXllci5jb252ZXJ0VG9QaXhlbFNu
YXBwZWRMYXllckNvb3JkcygmbGF5ZXIsIGNoaWxkUmVjdCk7CisgICAgICAgICAgICAgICAgICAg
IHJlY3Vyc2l2ZVJlcGFpbnRMYXllcihjaGlsZExheWVyLCAmY2hpbGRSZWN0KTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVy
KGN1ckxheWVyKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKGNo
aWxkTGF5ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIGlmIChWZWN0
b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci0+bm9ybWFsRmxvd0xpc3Qo
KSkgewotICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBub3JtYWxGbG93TGlzdC0+c2l6ZSgpOwot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKLSAgICAgICAg
ICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IG5vcm1hbEZsb3dMaXN0LT5hdChpKTsKKyAgICBp
ZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5ZXIubm9ybWFsRmxv
d0xpc3QoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5vcm1hbEZsb3dM
aXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIFJlbmRlckxheWVyJiBj
aGlsZExheWVyID0gKm5vcm1hbEZsb3dMaXN0LT5hdChpKTsKICAgICAgICAgICAgIGlmIChyZWN0
KSB7CiAgICAgICAgICAgICAgICAgSW50UmVjdCBjaGlsZFJlY3QoKnJlY3QpOwotICAgICAgICAg
ICAgICAgIGN1ckxheWVyLT5jb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3JkcyhsYXllciwg
Y2hpbGRSZWN0KTsKLSAgICAgICAgICAgICAgICByZWN1cnNpdmVSZXBhaW50TGF5ZXIoY3VyTGF5
ZXIsICZjaGlsZFJlY3QpOworICAgICAgICAgICAgICAgIGNoaWxkTGF5ZXIuY29udmVydFRvUGl4
ZWxTbmFwcGVkTGF5ZXJDb29yZHMoJmxheWVyLCBjaGlsZFJlY3QpOworICAgICAgICAgICAgICAg
IHJlY3Vyc2l2ZVJlcGFpbnRMYXllcihjaGlsZExheWVyLCAmY2hpbGRSZWN0KTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcihjdXJMYXll
cik7CisgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKGNoaWxkTGF5ZXIpOwog
ICAgICAgICB9CiAgICAgfQogfQogCi1SZW5kZXJMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9y
Ojpyb290UmVuZGVyTGF5ZXIoKSBjb25zdAorUmVuZGVyTGF5ZXImIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cm9vdFJlbmRlckxheWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9yZW5kZXJWaWV3
LmxheWVyKCk7CisgICAgcmV0dXJuICptX3JlbmRlclZpZXcubGF5ZXIoKTsKIH0KIAogR3JhcGhp
Y3NMYXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290R3JhcGhpY3NMYXllcigpIGNvbnN0
CkBAIC0xNjQ0LDcgKzE2MDcsNyBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OmZvb3RlckxheWVyKCkgY29uc3QKIFRpbGVkQmFja2luZyogUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpwYWdlVGlsZWRCYWNraW5nKCkgY29uc3QKIHsKICAgICBSZW5kZXJMYXllckJhY2tpbmcq
IHJlbmRlclZpZXdCYWNraW5nID0gbV9yZW5kZXJWaWV3LmxheWVyKCktPmJhY2tpbmcoKTsKLSAg
ICByZXR1cm4gcmVuZGVyVmlld0JhY2tpbmcgPyByZW5kZXJWaWV3QmFja2luZy0+dGlsZWRCYWNr
aW5nKCkgOiAwOworICAgIHJldHVybiByZW5kZXJWaWV3QmFja2luZyA/IHJlbmRlclZpZXdCYWNr
aW5nLT50aWxlZEJhY2tpbmcoKSA6IG51bGxwdHI7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpzZXRJc0luV2luZG93KGJvb2wgaXNJbldpbmRvdykKQEAgLTE2NjksMjMgKzE2MzIs
MjAgQEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldElzSW5XaW5kb3coYm9vbCBpc0lu
V2luZG93KQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNsZWFyQmFj
a2luZ0ZvckxheWVySW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyTGF5ZXIqIGxheWVyKQordm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNsZWFyQmFja2luZ0ZvckxheWVySW5jbHVkaW5nRGVz
Y2VuZGFudHMoUmVuZGVyTGF5ZXImIGxheWVyKQogewotICAgIGlmICghbGF5ZXIpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmIChsYXllci0+aXNDb21wb3NpdGVkKCkpIHsKKyAgICBpZiAobGF5
ZXIuaXNDb21wb3NpdGVkKCkpIHsKICAgICAgICAgcmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExh
eWVyKGxheWVyKTsKLSAgICAgICAgbGF5ZXItPmNsZWFyQmFja2luZygpOworICAgICAgICBsYXll
ci5jbGVhckJhY2tpbmcoKTsKICAgICB9Ci0gICAgCi0gICAgZm9yIChSZW5kZXJMYXllciogY3Vy
ckxheWVyID0gbGF5ZXItPmZpcnN0Q2hpbGQoKTsgY3VyckxheWVyOyBjdXJyTGF5ZXIgPSBjdXJy
TGF5ZXItPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNsZWFyQmFja2luZ0ZvckxheWVySW5jbHVk
aW5nRGVzY2VuZGFudHMoY3VyckxheWVyKTsKKworICAgIGZvciAoUmVuZGVyTGF5ZXIqIGNoaWxk
TGF5ZXIgPSBsYXllci5maXJzdENoaWxkKCk7IGNoaWxkTGF5ZXI7IGNoaWxkTGF5ZXIgPSBjaGls
ZExheWVyLT5uZXh0U2libGluZygpKQorICAgICAgICBjbGVhckJhY2tpbmdGb3JMYXllckluY2x1
ZGluZ0Rlc2NlbmRhbnRzKCpjaGlsZExheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmNsZWFyQmFja2luZ0ZvckFsbExheWVycygpCiB7Ci0gICAgY2xlYXJCYWNraW5nRm9y
TGF5ZXJJbmNsdWRpbmdEZXNjZW5kYW50cyhtX3JlbmRlclZpZXcubGF5ZXIoKSk7CisgICAgY2xl
YXJCYWNraW5nRm9yTGF5ZXJJbmNsdWRpbmdEZXNjZW5kYW50cygqbV9yZW5kZXJWaWV3LmxheWVy
KCkpOwogfQogCiB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlUm9vdExheWVyUG9z
aXRpb24oKQpAQCAtMTczOCw3ICsxNjk4LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnNob3VsZFByb3BhZ2F0ZUNvbXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSgpIGNvbnN0CiAgICAg
Ly8gaXMgdG8gaGF2ZSB0aGUgcGFyZW50IGRvY3VtZW50IGJlY29tZSBjb21wb3NpdGVkIHRvby4g
SG93ZXZlciwgdGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgb24gcGxhdGZvcm1zIHRoYXQKICAgICAv
LyB1c2UgbmF0aXZlIHZpZXdzIGZvciBmcmFtZXMgKGxpa2UgTWFjKSwgc28gZGlzYWJsZSB0aGF0
IGJlaGF2aW9yIG9uIHRob3NlIHBsYXRmb3JtcyBmb3Igbm93LgogICAgIEhUTUxGcmFtZU93bmVy
RWxlbWVudCogb3duZXJFbGVtZW50ID0gbV9yZW5kZXJWaWV3LmRvY3VtZW50KCkub3duZXJFbGVt
ZW50KCk7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG93bmVyRWxlbWVudCA/IG93bmVy
RWxlbWVudC0+cmVuZGVyZXIoKSA6IDA7CisgICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBv
d25lckVsZW1lbnQgPyBvd25lckVsZW1lbnQtPnJlbmRlcmVyKCkgOiAwOwogCiAgICAgLy8gSWYg
d2UgYXJlIHRoZSB0b3AtbGV2ZWwgZnJhbWUsIGRvbid0IHByb3BhZ2F0ZS4KICAgICBpZiAoIW93
bmVyRWxlbWVudCkKQEAgLTE3NjcsNzcgKzE3MjcsNzggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnNob3VsZFByb3BhZ2F0ZUNvbXBvc2l0aW5nVG9FbmNsb3NpbmdGcmFtZSgpIGNvbnN0
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVl
ZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIFJlbmRlckxheWVyOjpW
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJhaW5l
ZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
bmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIFJlbmRlckxheWVy
OjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJh
aW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5CZUNvbXBvc2l0
ZWQobGF5ZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gcmVxdWlyZXND
b21wb3NpdGluZ0xheWVyKGxheWVyLCB2aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJl
YXNvbikgfHwgbGF5ZXItPm11c3RDb21wb3NpdGVGb3JJbmRpcmVjdFJlYXNvbnMoKSB8fCAoaW5D
b21wb3NpdGluZ01vZGUoKSAmJiBsYXllci0+aXNSb290TGF5ZXIoKSk7CisgICAgcmV0dXJuIHJl
cXVpcmVzQ29tcG9zaXRpbmdMYXllcihsYXllciwgdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBv
c2l0ZWRSZWFzb24pIHx8IGxheWVyLm11c3RDb21wb3NpdGVGb3JJbmRpcmVjdFJlYXNvbnMoKSB8
fCAoaW5Db21wb3NpdGluZ01vZGUoKSAmJiBsYXllci5pc1Jvb3RMYXllcigpKTsKIH0KIAogLy8g
Tm90ZTogdGhpcyBzcGVjaWZpZXMgd2hldGhlciB0aGUgUkwgbmVlZHMgYSBjb21wb3NpdGluZyBs
YXllciBmb3IgaW50cmluc2ljIHJlYXNvbnMuCiAvLyBVc2UgbmVlZHNUb0JlQ29tcG9zaXRlZCgp
IHRvIGRldGVybWluZSBpZiBhIFJMIGFjdHVhbGx5IG5lZWRzIGEgY29tcG9zaXRpbmcgbGF5ZXIu
CiAvLyBzdGF0aWMKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0
aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRD
b25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24qIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21w
b3NpdGVkUmVhc29uKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIsIFJlbmRlckxheWVyOjpW
aWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJhaW5l
ZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0CiB7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9ICZsYXllci0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJlbmRlcmVyID0gJmxheWVyLnJlbmRl
cmVyKCk7CisKICAgICAvLyBUaGUgY29tcG9zaXRpbmcgc3RhdGUgb2YgYSByZWZsZWN0aW9uIHNo
b3VsZCBtYXRjaCB0aGF0IG9mIGl0cyByZWZsZWN0ZWQgbGF5ZXIuCi0gICAgaWYgKGxheWVyLT5p
c1JlZmxlY3Rpb24oKSkgewotICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKTsg
Ly8gVGhlIFJlbmRlclJlcGxpY2EncyBwYXJlbnQgaXMgdGhlIG9iamVjdCBiZWluZyByZWZsZWN0
ZWQuCi0gICAgICAgIGxheWVyID0gdG9SZW5kZXJMYXllck1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+
bGF5ZXIoKTsKLSAgICB9CisgICAgaWYgKGxheWVyLmlzUmVmbGVjdGlvbigpKQorICAgICAgICBy
ZW5kZXJlciA9IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChyZW5kZXJlci0+cGFyZW50KCkpOyAv
LyBUaGUgUmVuZGVyUmVwbGljYSdzIHBhcmVudCBpcyB0aGUgb2JqZWN0IGJlaW5nIHJlZmxlY3Rl
ZC4KKwogICAgIC8vIFRoZSByb290IGxheWVyIGFsd2F5cyBoYXMgYSBjb21wb3NpdGluZyBsYXll
ciwgYnV0IGl0IG1heSBub3QgaGF2ZSBiYWNraW5nLgotICAgIHJldHVybiByZXF1aXJlc0NvbXBv
c2l0aW5nRm9yVHJhbnNmb3JtKHJlbmRlcmVyKQotICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0
aW5nRm9yVmlkZW8ocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JD
YW52YXMocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4o
cmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGcmFtZShyZW5kZXJl
cikKKyAgICByZXR1cm4gcmVxdWlyZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybSgqcmVuZGVyZXIp
CisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JWaWRlbygqcmVuZGVyZXIpCisgICAg
ICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52YXMoKnJlbmRlcmVyKQorICAgICAgICB8
fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKCpyZW5kZXJlcikKKyAgICAgICAgfHwgcmVx
dWlyZXNDb21wb3NpdGluZ0ZvckZyYW1lKCpyZW5kZXJlcikKICAgICAgICAgfHwgKGNhblJlbmRl
cjNEVHJhbnNmb3JtcygpICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5iYWNrZmFjZVZpc2liaWxpdHko
KSA9PSBCYWNrZmFjZVZpc2liaWxpdHlIaWRkZW4pCi0gICAgICAgIHx8IGNsaXBzQ29tcG9zaXRp
bmdEZXNjZW5kYW50cyhsYXllcikKLSAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckFu
aW1hdGlvbihyZW5kZXJlcikKLSAgICAgICAgfHwgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRl
cnMocmVuZGVyZXIpCi0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihy
ZW5kZXJlciwgbGF5ZXIsIHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKQot
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dTY3JvbGxpbmcobGF5ZXIp
Ci0gICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhyZW5kZXJlcik7Cisg
ICAgICAgIHx8IGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cygqcmVuZGVyZXItPmxheWVyKCkp
CisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oKnJlbmRlcmVyKQor
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycygqcmVuZGVyZXIpCisgICAg
ICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbigqcmVuZGVyZXIsICpyZW5kZXJl
ci0+bGF5ZXIoKSwgdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pCisgICAg
ICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZygqcmVuZGVyZXIt
PmxheWVyKCkpCisgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZygqcmVu
ZGVyZXIpOwogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2FuQmVDb21wb3NpdGVk
KGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3Np
dG9yOjpjYW5CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBXZSBkaXNhYmxlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGZvciBlbGVt
ZW50cyBpbiBhIFJlbmRlckZsb3dUaHJlYWQgYXMgaXQgZG9lc24ndCB3b3JrIHByb3Blcmx5Lgog
ICAgIC8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzg0OTAwIHRvIHJlLWVuYWJsZSBpdC4KLSAg
ICByZXR1cm4gbV9oYXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nICYmIGxheWVyLT5pc1NlbGZQYWlu
dGluZ0xheWVyKCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkuZmxvd1RocmVhZFN0YXRlKCkgPT0gUmVu
ZGVyT2JqZWN0OjpOb3RJbnNpZGVGbG93VGhyZWFkOworICAgIHJldHVybiBtX2hhc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmcgJiYgbGF5ZXIuaXNTZWxmUGFpbnRpbmdMYXllcigpICYmIGxheWVyLnJl
bmRlcmVyKCkuZmxvd1RocmVhZFN0YXRlKCkgPT0gUmVuZGVyRWxlbWVudDo6Tm90SW5zaWRlRmxv
d1RocmVhZDsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3duQmFj
a2luZ1N0b3JlKGNvbnN0IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZXIqIGNv
bXBvc2l0aW5nQW5jZXN0b3JMYXllciwgY29uc3QgSW50UmVjdCYgbGF5ZXJDb21wb3NpdGVkQm91
bmRzSW5BbmNlc3RvciwgY29uc3QgSW50UmVjdCYgYW5jZXN0b3JDb21wb3NpdGVkQm91bmRzKSBj
b25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzT3duQmFja2luZ1N0b3Jl
KGNvbnN0IFJlbmRlckxheWVyJiBsYXllciwgY29uc3QgUmVuZGVyTGF5ZXIqIGNvbXBvc2l0aW5n
QW5jZXN0b3JMYXllciwgY29uc3QgSW50UmVjdCYgbGF5ZXJDb21wb3NpdGVkQm91bmRzSW5BbmNl
c3RvciwgY29uc3QgSW50UmVjdCYgYW5jZXN0b3JDb21wb3NpdGVkQm91bmRzKSBjb25zdAogewot
ICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmbGF5ZXItPnJlbmRlcmVyKCk7CisgICAgYXV0
byYgcmVuZGVyZXIgPSBsYXllci5yZW5kZXJlcigpOworCiAgICAgaWYgKGNvbXBvc2l0aW5nQW5j
ZXN0b3JMYXllcgogICAgICAgICAmJiAhKGNvbXBvc2l0aW5nQW5jZXN0b3JMYXllci0+YmFja2lu
ZygpLT5ncmFwaGljc0xheWVyKCktPmRyYXdzQ29udGVudCgpCiAgICAgICAgICAgICB8fCBjb21w
b3NpdGluZ0FuY2VzdG9yTGF5ZXItPmJhY2tpbmcoKS0+cGFpbnRzSW50b1dpbmRvdygpCiAgICAg
ICAgICAgICB8fCBjb21wb3NpdGluZ0FuY2VzdG9yTGF5ZXItPmJhY2tpbmcoKS0+cGFpbnRzSW50
b0NvbXBvc2l0ZWRBbmNlc3RvcigpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAo
bGF5ZXItPmlzUm9vdExheWVyKCkKLSAgICAgICAgfHwgbGF5ZXItPnRyYW5zZm9ybSgpIC8vIG5v
dGU6IGV4Y2x1ZGVzIHBlcnNwZWN0aXZlIGFuZCB0cmFuc2Zvcm1TdHlsZTNELgorICAgIGlmIChs
YXllci5pc1Jvb3RMYXllcigpCisgICAgICAgIHx8IGxheWVyLnRyYW5zZm9ybSgpIC8vIG5vdGU6
IGV4Y2x1ZGVzIHBlcnNwZWN0aXZlIGFuZCB0cmFuc2Zvcm1TdHlsZTNELgogICAgICAgICB8fCBy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIpCiAgICAgICAgIHx8IHJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JDYW52YXMocmVuZGVyZXIpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQbHVnaW4ocmVuZGVyZXIpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdG
b3JGcmFtZShyZW5kZXJlcikKLSAgICAgICAgfHwgKGNhblJlbmRlcjNEVHJhbnNmb3JtcygpICYm
IHJlbmRlcmVyLT5zdHlsZSgpLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2li
aWxpdHlIaWRkZW4pCisgICAgICAgIHx8IChjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSAmJiByZW5k
ZXJlci5zdHlsZSgpLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2liaWxpdHlI
aWRkZW4pCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24ocmVuZGVy
ZXIpCiAgICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JGaWx0ZXJzKHJlbmRlcmVyKQog
ICAgICAgICB8fCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcocmVuZGVyZXIpCiAgICAg
ICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihyZW5kZXJlciwgbGF5ZXIpCiAg
ICAgICAgIHx8IHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhsYXllcikK
LSAgICAgICAgfHwgcmVuZGVyZXItPmlzVHJhbnNwYXJlbnQoKQotICAgICAgICB8fCByZW5kZXJl
ci0+aGFzTWFzaygpCi0gICAgICAgIHx8IHJlbmRlcmVyLT5oYXNSZWZsZWN0aW9uKCkKLSAgICAg
ICAgfHwgcmVuZGVyZXItPmhhc0ZpbHRlcigpKQorICAgICAgICB8fCByZW5kZXJlci5pc1RyYW5z
cGFyZW50KCkKKyAgICAgICAgfHwgcmVuZGVyZXIuaGFzTWFzaygpCisgICAgICAgIHx8IHJlbmRl
cmVyLmhhc1JlZmxlY3Rpb24oKQorICAgICAgICB8fCByZW5kZXJlci5oYXNGaWx0ZXIoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAogICAgIAotICAgIGlmIChsYXllci0+bXVzdENv
bXBvc2l0ZUZvckluZGlyZWN0UmVhc29ucygpKSB7Ci0gICAgICAgIFJlbmRlckxheWVyOjpJbmRp
cmVjdENvbXBvc2l0aW5nUmVhc29uIHJlYXNvbiA9IGxheWVyLT5pbmRpcmVjdENvbXBvc2l0aW5n
UmVhc29uKCk7CisgICAgaWYgKGxheWVyLm11c3RDb21wb3NpdGVGb3JJbmRpcmVjdFJlYXNvbnMo
KSkgeworICAgICAgICBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbiByZWFz
b24gPSBsYXllci5pbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uKCk7CiAgICAgICAgIHJldHVybiBy
ZWFzb24gPT0gUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdGb3JPdmVybGFwCiAgICAg
ICAgICAgICB8fCByZWFzb24gPT0gUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdGb3JT
dGFja2luZwogICAgICAgICAgICAgfHwgcmVhc29uID09IFJlbmRlckxheWVyOjpJbmRpcmVjdENv
bXBvc2l0aW5nRm9yQmFja2dyb3VuZExheWVyCkBAIC0xODUxLDU3ICsxODEyLDU1IEBAIGJvb2wg
UmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc093bkJhY2tpbmdTdG9yZShjb25zdCBSZW5k
ZXJMYXllciogbGF5ZXIsIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Db21wb3NpdGluZ1Jl
YXNvbnMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWFzb25zRm9yQ29tcG9zaXRpbmcoY29uc3Qg
UmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorQ29tcG9zaXRpbmdSZWFzb25zIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyJiBsYXll
cikgY29uc3QKIHsKICAgICBDb21wb3NpdGluZ1JlYXNvbnMgcmVhc29ucyA9IENvbXBvc2l0aW5n
UmVhc29uTm9uZTsKIAotICAgIGlmICghbGF5ZXIgfHwgIWxheWVyLT5pc0NvbXBvc2l0ZWQoKSkK
KyAgICBpZiAoIWxheWVyLmlzQ29tcG9zaXRlZCgpKQogICAgICAgICByZXR1cm4gcmVhc29uczsK
IAotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSAmbGF5ZXItPnJlbmRlcmVyKCk7Ci0gICAg
aWYgKGxheWVyLT5pc1JlZmxlY3Rpb24oKSkgewotICAgICAgICByZW5kZXJlciA9IHJlbmRlcmVy
LT5wYXJlbnQoKTsKLSAgICAgICAgbGF5ZXIgPSB0b1JlbmRlckxheWVyTW9kZWxPYmplY3QocmVu
ZGVyZXIpLT5sYXllcigpOwotICAgIH0KKyAgICBhdXRvIHJlbmRlcmVyID0gJmxheWVyLnJlbmRl
cmVyKCk7CisgICAgaWYgKGxheWVyLmlzUmVmbGVjdGlvbigpKQorICAgICAgICByZW5kZXJlciA9
IHRvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdChyZW5kZXJlci0+cGFyZW50KCkpOwogCi0gICAgaWYg
KHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JUcmFuc2Zvcm0ocmVuZGVyZXIpKQorICAgIGlmIChyZXF1
aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKCpyZW5kZXJlcikpCiAgICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb24zRFRyYW5zZm9ybTsKIAotICAgIGlmIChyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yVmlkZW8ocmVuZGVyZXIpKQorICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
VmlkZW8oKnJlbmRlcmVyKSkKICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvblZp
ZGVvOwotICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52YXMocmVuZGVyZXIp
KQorICAgIGVsc2UgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52YXMoKnJlbmRlcmVyKSkK
ICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvbkNhbnZhczsKLSAgICBlbHNlIGlm
IChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKHJlbmRlcmVyKSkKKyAgICBlbHNlIGlmIChy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9yUGx1Z2luKCpyZW5kZXJlcikpCiAgICAgICAgIHJlYXNvbnMg
fD0gQ29tcG9zaXRpbmdSZWFzb25QbHVnaW47Ci0gICAgZWxzZSBpZiAocmVxdWlyZXNDb21wb3Np
dGluZ0ZvckZyYW1lKHJlbmRlcmVyKSkKKyAgICBlbHNlIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yRnJhbWUoKnJlbmRlcmVyKSkKICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNv
bklGcmFtZTsKICAgICAKICAgICBpZiAoKGNhblJlbmRlcjNEVHJhbnNmb3JtcygpICYmIHJlbmRl
cmVyLT5zdHlsZSgpLT5iYWNrZmFjZVZpc2liaWxpdHkoKSA9PSBCYWNrZmFjZVZpc2liaWxpdHlI
aWRkZW4pKQogICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uQmFja2ZhY2VWaXNp
YmlsaXR5SGlkZGVuOwogCi0gICAgaWYgKGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhsYXll
cikpCisgICAgaWYgKGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cygqcmVuZGVyZXItPmxheWVy
KCkpKQogICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uQ2xpcHNDb21wb3NpdGlu
Z0Rlc2NlbmRhbnRzOwogCi0gICAgaWYgKHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24o
cmVuZGVyZXIpKQorICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uKCpyZW5k
ZXJlcikpCiAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb25BbmltYXRpb247CiAK
LSAgICBpZiAocmVxdWlyZXNDb21wb3NpdGluZ0ZvckZpbHRlcnMocmVuZGVyZXIpKQorICAgIGlm
IChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycygqcmVuZGVyZXIpKQogICAgICAgICByZWFz
b25zIHw9IENvbXBvc2l0aW5nUmVhc29uRmlsdGVyczsKIAotICAgIGlmIChyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yUG9zaXRpb24ocmVuZGVyZXIsIGxheWVyKSkKKyAgICBpZiAocmVxdWlyZXNDb21w
b3NpdGluZ0ZvclBvc2l0aW9uKCpyZW5kZXJlciwgKnJlbmRlcmVyLT5sYXllcigpKSkKICAgICAg
ICAgcmVhc29ucyB8PSByZW5kZXJlci0+c3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0
aW9uID8gQ29tcG9zaXRpbmdSZWFzb25Qb3NpdGlvbkZpeGVkIDogQ29tcG9zaXRpbmdSZWFzb25Q
b3NpdGlvblN0aWNreTsKIAotICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dT
Y3JvbGxpbmcobGF5ZXIpKQorICAgIGlmIChyZXF1aXJlc0NvbXBvc2l0aW5nRm9yT3ZlcmZsb3dT
Y3JvbGxpbmcoKnJlbmRlcmVyLT5sYXllcigpKSkKICAgICAgICAgcmVhc29ucyB8PSBDb21wb3Np
dGluZ1JlYXNvbk92ZXJmbG93U2Nyb2xsaW5nVG91Y2g7CiAKLSAgICBpZiAobGF5ZXItPmluZGly
ZWN0Q29tcG9zaXRpbmdSZWFzb24oKSA9PSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGlu
Z0ZvclN0YWNraW5nKQorICAgIGlmIChyZW5kZXJlci0+bGF5ZXIoKS0+aW5kaXJlY3RDb21wb3Np
dGluZ1JlYXNvbigpID09IFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yU3RhY2tp
bmcpCiAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdSZWFzb25TdGFja2luZzsKLSAgICBl
bHNlIGlmIChsYXllci0+aW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbigpID09IFJlbmRlckxheWVy
OjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yT3ZlcmxhcCkKKyAgICBlbHNlIGlmIChyZW5kZXJlci0+
bGF5ZXIoKS0+aW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbigpID09IFJlbmRlckxheWVyOjpJbmRp
cmVjdENvbXBvc2l0aW5nRm9yT3ZlcmxhcCkKICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGlu
Z1JlYXNvbk92ZXJsYXA7Ci0gICAgZWxzZSBpZiAobGF5ZXItPmluZGlyZWN0Q29tcG9zaXRpbmdS
ZWFzb24oKSA9PSBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ0ZvckJhY2tncm91bmRM
YXllcikKKyAgICBlbHNlIGlmIChyZW5kZXJlci0+bGF5ZXIoKS0+aW5kaXJlY3RDb21wb3NpdGlu
Z1JlYXNvbigpID09IFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yQmFja2dyb3Vu
ZExheWVyKQogICAgICAgICByZWFzb25zIHw9IENvbXBvc2l0aW5nUmVhc29uTmVnYXRpdmVaSW5k
ZXhDaGlsZHJlbjsKLSAgICBlbHNlIGlmIChsYXllci0+aW5kaXJlY3RDb21wb3NpdGluZ1JlYXNv
bigpID09IFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yR3JhcGhpY2FsRWZmZWN0
KSB7Ci0gICAgICAgIGlmIChsYXllci0+dHJhbnNmb3JtKCkpCisgICAgZWxzZSBpZiAocmVuZGVy
ZXItPmxheWVyKCktPmluZGlyZWN0Q29tcG9zaXRpbmdSZWFzb24oKSA9PSBSZW5kZXJMYXllcjo6
SW5kaXJlY3RDb21wb3NpdGluZ0ZvckdyYXBoaWNhbEVmZmVjdCkgeworICAgICAgICBpZiAocmVu
ZGVyZXItPmxheWVyKCktPnRyYW5zZm9ybSgpKQogICAgICAgICAgICAgcmVhc29ucyB8PSBDb21w
b3NpdGluZ1JlYXNvblRyYW5zZm9ybVdpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7CiAKICAgICAg
ICAgaWYgKHJlbmRlcmVyLT5pc1RyYW5zcGFyZW50KCkpCkBAIC0xOTE4LDE5ICsxODc3LDE5IEBA
IENvbXBvc2l0aW5nUmVhc29ucyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlYXNvbnNGb3JDb21w
b3NpdGluZyhjb25zdCBSZW5kZXJMYXllCiAgICAgICAgICAgICAKICAgICAgICAgaWYgKHJlbmRl
cmVyLT5oYXNCbGVuZE1vZGUoKSkKICAgICAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRpbmdS
ZWFzb25CbGVuZGluZ1dpdGhDb21wb3NpdGVkRGVzY2VuZGFudHM7Ci0gICAgfSBlbHNlIGlmIChs
YXllci0+aW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbigpID09IFJlbmRlckxheWVyOjpJbmRpcmVj
dENvbXBvc2l0aW5nRm9yUGVyc3BlY3RpdmUpCisgICAgfSBlbHNlIGlmIChyZW5kZXJlci0+bGF5
ZXIoKS0+aW5kaXJlY3RDb21wb3NpdGluZ1JlYXNvbigpID09IFJlbmRlckxheWVyOjpJbmRpcmVj
dENvbXBvc2l0aW5nRm9yUGVyc3BlY3RpdmUpCiAgICAgICAgIHJlYXNvbnMgfD0gQ29tcG9zaXRp
bmdSZWFzb25QZXJzcGVjdGl2ZTsKLSAgICBlbHNlIGlmIChsYXllci0+aW5kaXJlY3RDb21wb3Np
dGluZ1JlYXNvbigpID09IFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yUHJlc2Vy
dmUzRCkKKyAgICBlbHNlIGlmIChyZW5kZXJlci0+bGF5ZXIoKS0+aW5kaXJlY3RDb21wb3NpdGlu
Z1JlYXNvbigpID09IFJlbmRlckxheWVyOjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yUHJlc2VydmUz
RCkKICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvblByZXNlcnZlM0Q7CiAKLSAg
ICBpZiAoaW5Db21wb3NpdGluZ01vZGUoKSAmJiBsYXllci0+aXNSb290TGF5ZXIoKSkKKyAgICBp
ZiAoaW5Db21wb3NpdGluZ01vZGUoKSAmJiByZW5kZXJlci0+bGF5ZXIoKS0+aXNSb290TGF5ZXIo
KSkKICAgICAgICAgcmVhc29ucyB8PSBDb21wb3NpdGluZ1JlYXNvblJvb3Q7CiAKICAgICByZXR1
cm4gcmVhc29uczsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKLWNvbnN0IGNoYXIqIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6bG9nUmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVy
KiBsYXllcikKK2NvbnN0IGNoYXIqIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bG9nUmVhc29uc0Zv
ckNvbXBvc2l0aW5nKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICBDb21wb3NpdGlu
Z1JlYXNvbnMgcmVhc29ucyA9IHJlYXNvbnNGb3JDb21wb3NpdGluZyhsYXllcik7CiAKQEAgLTIw
MTIsNDEgKzE5NzEsNDEgQEAgY29uc3QgY2hhciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsb2dS
ZWFzb25zRm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXIqIGwKIC8vIGFjY29yZGluZyB0
byB0aGUgei1vcmRlciBoaWVyYXJjaHksIHlldCBjbGlwcGluZyBnb2VzIGRvd24gdGhlIHJlbmRl
cmVyIGhpZXJhcmNoeS4KIC8vIFRodXMsIGEgUmVuZGVyTGF5ZXIgY2FuIGJlIGNsaXBwZWQgYnkg
YSBSZW5kZXJMYXllciB0aGF0IGlzIGFuIGFuY2VzdG9yIGluIHRoZSByZW5kZXJlciBoaWVyYXJj
aHksCiAvLyBidXQgYSBzaWJsaW5nIGluIHRoZSB6LW9yZGVyIGhpZXJhcmNoeS4KLWJvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlwcGVkQnlBbmNlc3RvcihSZW5kZXJMYXllciogbGF5ZXIp
IGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xpcHBlZEJ5QW5jZXN0b3IoUmVu
ZGVyTGF5ZXImIGxheWVyKSBjb25zdAogewotICAgIGlmICghbGF5ZXItPmlzQ29tcG9zaXRlZCgp
IHx8ICFsYXllci0+cGFyZW50KCkpCisgICAgaWYgKCFsYXllci5pc0NvbXBvc2l0ZWQoKSB8fCAh
bGF5ZXIucGFyZW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFJlbmRlckxheWVy
KiBjb21wb3NpdGluZ0FuY2VzdG9yID0gbGF5ZXItPmFuY2VzdG9yQ29tcG9zaXRpbmdMYXllcigp
OworICAgIFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2VzdG9yID0gbGF5ZXIuYW5jZXN0b3JD
b21wb3NpdGluZ0xheWVyKCk7CiAgICAgaWYgKCFjb21wb3NpdGluZ0FuY2VzdG9yKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBJZiB0aGUgY29tcG9zaXRpbmdBbmNlc3RvciBjbGlw
cywgdGhhdCB3aWxsIGJlIHRha2VuIGNhcmUgb2YgYnkgY2xpcHNDb21wb3NpdGluZ0Rlc2NlbmRh
bnRzKCksCiAgICAgLy8gc28gd2Ugb25seSBjYXJlIGFib3V0IGNsaXBwaW5nIGJldHdlZW4gaXRz
IGZpcnN0IGNoaWxkIHRoYXQgaXMgb3VyIGFuY2VzdG9yICh0aGUgY29tcHV0ZUNsaXBSb290KSwK
ICAgICAvLyBhbmQgbGF5ZXIuCi0gICAgUmVuZGVyTGF5ZXIqIGNvbXB1dGVDbGlwUm9vdCA9IDA7
Ci0gICAgUmVuZGVyTGF5ZXIqIGN1cnIgPSBsYXllcjsKLSAgICB3aGlsZSAoY3VycikgewotICAg
ICAgICBSZW5kZXJMYXllciogbmV4dCA9IGN1cnItPnBhcmVudCgpOworICAgIFJlbmRlckxheWVy
KiBjb21wdXRlQ2xpcFJvb3QgPSBudWxscHRyOworICAgIFJlbmRlckxheWVyKiBwYXJlbnQgPSAm
bGF5ZXI7CisgICAgd2hpbGUgKHBhcmVudCkgeworICAgICAgICBSZW5kZXJMYXllciogbmV4dCA9
IHBhcmVudC0+cGFyZW50KCk7CiAgICAgICAgIGlmIChuZXh0ID09IGNvbXBvc2l0aW5nQW5jZXN0
b3IpIHsKLSAgICAgICAgICAgIGNvbXB1dGVDbGlwUm9vdCA9IGN1cnI7CisgICAgICAgICAgICBj
b21wdXRlQ2xpcFJvb3QgPSBwYXJlbnQ7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBjdXJyID0gbmV4dDsKKyAgICAgICAgcGFyZW50ID0gbmV4dDsKICAgICB9CiAgICAg
Ci0gICAgaWYgKCFjb21wdXRlQ2xpcFJvb3QgfHwgY29tcHV0ZUNsaXBSb290ID09IGxheWVyKQor
ICAgIGlmICghY29tcHV0ZUNsaXBSb290IHx8IGNvbXB1dGVDbGlwUm9vdCA9PSAmbGF5ZXIpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBsYXllci0+YmFja2dyb3VuZENsaXBS
ZWN0KFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250ZXh0KGNvbXB1dGVDbGlwUm9vdCwgMCwgVGVt
cG9yYXJ5Q2xpcFJlY3RzKSkucmVjdCgpICE9IFBhaW50SW5mbzo6aW5maW5pdGVSZWN0KCk7IC8v
IEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgorICAgIHJldHVybiBsYXllci5iYWNr
Z3JvdW5kQ2xpcFJlY3QoUmVuZGVyTGF5ZXI6OkNsaXBSZWN0c0NvbnRleHQoY29tcHV0ZUNsaXBS
b290LCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMpKS5yZWN0KCkgIT0gUGFpbnRJbmZvOjppbmZpbml0
ZVJlY3QoKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiB9CiAKIC8vIFJl
dHVybiB0cnVlIGlmIHRoZSBnaXZlbiBsYXllciBpcyBhIHN0YWNraW5nIGNvbnRleHQgYW5kIGhh
cyBjb21wb3NpdGluZyBjaGlsZAogLy8gbGF5ZXJzIHRoYXQgaXQgbmVlZHMgdG8gY2xpcC4gSW4g
dGhpcyBjYXNlIHdlIGluc2VydCBhIGNsaXBwaW5nIEdyYXBoaWNzTGF5ZXIKIC8vIGludG8gdGhl
IGhpZXJhcmNoeSBiZXR3ZWVuIHRoaXMgbGF5ZXIgYW5kIGl0cyBjaGlsZHJlbiBpbiB0aGUgei1v
cmRlciBoaWVyYXJjaHkuCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y2xpcHNDb21wb3Np
dGluZ0Rlc2NlbmRhbnRzKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QKK2Jvb2wgUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yOjpjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMoY29uc3QgUmVu
ZGVyTGF5ZXImIGxheWVyKSBjb25zdAogewotICAgIHJldHVybiBsYXllci0+aGFzQ29tcG9zaXRp
bmdEZXNjZW5kYW50KCkgJiYgbGF5ZXItPnJlbmRlcmVyKCkuaGFzQ2xpcE9yT3ZlcmZsb3dDbGlw
KCk7CisgICAgcmV0dXJuIGxheWVyLmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgpICYmIGxheWVy
LnJlbmRlcmVyKCkuaGFzQ2xpcE9yT3ZlcmZsb3dDbGlwKCk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lKCkgY29u
c3QKQEAgLTIwNjMsMzYgKzIwMjIsMzYgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJl
cXVpcmVzQ29tcG9zaXRpbmdGb3JTY3JvbGxhYmxlRnJhbWUoKSBjb25zdAogICAgIHJldHVybiBt
X3JlbmRlclZpZXcuZnJhbWVWaWV3KCkuaXNTY3JvbGxhYmxlKCk7CiB9CiAKLWJvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWly
ZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJl
cikgY29uc3QKIHsKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGll
bnQ6OlRocmVlRFRyYW5zZm9ybVRyaWdnZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKKyAgICBSZW5kZXJTdHls
ZSogc3R5bGUgPSByZW5kZXJlci5zdHlsZSgpOwogICAgIC8vIE5vdGUgdGhhdCB3ZSBhc2sgdGhl
IHJlbmRlcmVyIGlmIGl0IGhhcyBhIHRyYW5zZm9ybSwgYmVjYXVzZSB0aGUgc3R5bGUgbWF5IGhh
dmUgdHJhbnNmb3JtcywKICAgICAvLyBidXQgdGhlIHJlbmRlcmVyIG1heSBiZSBhbiBpbmxpbmUg
dGhhdCBkb2Vzbid0IHN1cHBwb3J0IHRoZW0uCi0gICAgcmV0dXJuIHJlbmRlcmVyLT5oYXNUcmFu
c2Zvcm0oKSAmJiBzdHlsZS0+dHJhbnNmb3JtKCkuaGFzM0RPcGVyYXRpb24oKTsKKyAgICByZXR1
cm4gcmVuZGVyZXIuaGFzVHJhbnNmb3JtKCkgJiYgc3R5bGUtPnRyYW5zZm9ybSgpLmhhczNET3Bl
cmF0aW9uKCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yVmlkZW8oUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8oUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgaWYgKCEobV9jb21wb3NpdGluZ1Ry
aWdnZXJzICYgQ2hyb21lQ2xpZW50OjpWaWRlb1RyaWdnZXIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIGlmIChyZW5kZXJlci0+aXNWaWRlbygpKSB7Ci0g
ICAgICAgIFJlbmRlclZpZGVvJiB2aWRlbyA9IHRvUmVuZGVyVmlkZW8oKnJlbmRlcmVyKTsKKyAg
ICBpZiAocmVuZGVyZXIuaXNWaWRlbygpKSB7CisgICAgICAgIFJlbmRlclZpZGVvJiB2aWRlbyA9
IHRvUmVuZGVyVmlkZW8ocmVuZGVyZXIpOwogICAgICAgICByZXR1cm4gKHZpZGVvLnJlcXVpcmVz
SW1tZWRpYXRlQ29tcG9zaXRpbmcoKSB8fCB2aWRlby5zaG91bGREaXNwbGF5VmlkZW8oKSkgJiYg
Y2FuQWNjZWxlcmF0ZVZpZGVvUmVuZGVyaW5nKHZpZGVvKTsKICAgICB9CiAjaWYgRU5BQkxFKFBM
VUdJTl9QUk9YWV9GT1JfVklERU8pCi0gICAgZWxzZSBpZiAocmVuZGVyZXItPmlzV2lkZ2V0KCkp
IHsKKyAgICBpZiAocmVuZGVyZXIuaXNXaWRnZXQoKSkgewogICAgICAgICBpZiAoIW1faGFzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICBOb2RlKiBub2RlID0gcmVuZGVyZXItPm5vZGUoKTsKLSAgICAgICAgaWYgKCFub2RlIHx8ICgh
aXNIVE1MVmlkZW9FbGVtZW50KG5vZGUpICYmICFpc0hUTUxBdWRpb0VsZW1lbnQobm9kZSkpKQor
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpOworICAgICAgICBp
ZiAoIWVsZW1lbnQgfHwgKCFpc0hUTUxWaWRlb0VsZW1lbnQoZWxlbWVudCkgJiYgIWlzSFRNTEF1
ZGlvRWxlbWVudChlbGVtZW50KSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9IVE1MTWVkaWFFbGVtZW50KG5v
ZGUpOworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0b0hUTUxNZWRp
YUVsZW1lbnQoZWxlbWVudCk7CiAgICAgICAgIHJldHVybiBtZWRpYUVsZW1lbnQtPnBsYXllcigp
ID8gbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygp
IDogZmFsc2U7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVP
KQpAQCAtMjEwMiwxMyArMjA2MSwxMyBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVx
dWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21w
b3NpdGluZ0ZvckNhbnZhcyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBSZW5k
ZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JDYW52YXMoUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgaWYgKCEobV9jb21wb3NpdGlu
Z1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpDYW52YXNUcmlnZ2VyKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKHJlbmRlcmVyLT5pc0NhbnZhcygpKSB7Ci0gICAgICAgIEhUTUxD
YW52YXNFbGVtZW50KiBjYW52YXMgPSBzdGF0aWNfY2FzdDxIVE1MQ2FudmFzRWxlbWVudCo+KHJl
bmRlcmVyLT5ub2RlKCkpOworICAgIGlmIChyZW5kZXJlci5pc0NhbnZhcygpKSB7CisgICAgICAg
IEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSB0b0hUTUxDYW52YXNFbGVtZW50KHJlbmRlcmVy
LmVsZW1lbnQoKSk7CiAjaWYgVVNFKENPTVBPU0lUSU5HX0ZPUl9TTUFMTF9DQU5WQVNFUykKICAg
ICAgICAgYm9vbCBpc0NhbnZhc0xhcmdlRW5vdWdoVG9Gb3JjZUNvbXBvc2l0aW5nID0gdHJ1ZTsK
ICNlbHNlCkBAIC0yMTE2LDc5ICsyMDc1LDc5IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9y
OjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQ2FudmFzKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAj
ZW5kaWYKICAgICAgICAgcmV0dXJuIGNhbnZhcy0+cmVuZGVyaW5nQ29udGV4dCgpICYmIGNhbnZh
cy0+cmVuZGVyaW5nQ29udGV4dCgpLT5pc0FjY2VsZXJhdGVkKCkgJiYgKGNhbnZhcy0+cmVuZGVy
aW5nQ29udGV4dCgpLT5pczNkKCkgfHwgaXNDYW52YXNMYXJnZUVub3VnaFRvRm9yY2VDb21wb3Np
dGluZyk7CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvclBsdWdpbihSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JQbHVnaW4oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7
CiAgICAgaWYgKCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpQbHVnaW5U
cmlnZ2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYm9vbCBjb21wb3NpdGUgPSBy
ZW5kZXJlci0+aXNFbWJlZGRlZE9iamVjdCgpICYmIHRvUmVuZGVyRW1iZWRkZWRPYmplY3QocmVu
ZGVyZXIpLT5hbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CisgICAgYm9vbCBjb21wb3Np
dGUgPSByZW5kZXJlci5pc0VtYmVkZGVkT2JqZWN0KCkgJiYgdG9SZW5kZXJFbWJlZGRlZE9iamVj
dCgmcmVuZGVyZXIpLT5hbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCk7CiAgICAgaWYgKCFj
b21wb3NpdGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fcmVldmFsdWF0ZUNvbXBv
c2l0aW5nQWZ0ZXJMYXlvdXQgPSB0cnVlOwogICAgIAotICAgIFJlbmRlcldpZGdldCogcGx1Z2lu
UmVuZGVyZXIgPSB0b1JlbmRlcldpZGdldChyZW5kZXJlcik7CisgICAgUmVuZGVyV2lkZ2V0JiBw
bHVnaW5SZW5kZXJlciA9ICp0b1JlbmRlcldpZGdldCgmcmVuZGVyZXIpOwogICAgIC8vIElmIHdl
IGNhbid0IHJlbGlhYmx5IGtub3cgdGhlIHNpemUgb2YgdGhlIHBsdWdpbiB5ZXQsIGRvbid0IGNo
YW5nZSBjb21wb3NpdGluZyBzdGF0ZS4KLSAgICBpZiAocGx1Z2luUmVuZGVyZXItPm5lZWRzTGF5
b3V0KCkpCi0gICAgICAgIHJldHVybiBwbHVnaW5SZW5kZXJlci0+aGFzTGF5ZXIoKSAmJiBwbHVn
aW5SZW5kZXJlci0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7CisgICAgaWYgKHBsdWdpblJlbmRl
cmVyLm5lZWRzTGF5b3V0KCkpCisgICAgICAgIHJldHVybiBwbHVnaW5SZW5kZXJlci5oYXNMYXll
cigpICYmIHBsdWdpblJlbmRlcmVyLmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogCiAgICAgLy8g
RG9uJ3QgZ28gaW50byBjb21wb3NpdGluZyBtb2RlIGlmIGhlaWdodCBvciB3aWR0aCBhcmUgemVy
bywgb3Igc2l6ZSBpcyAxeDEuCi0gICAgSW50UmVjdCBjb250ZW50Qm94ID0gcGl4ZWxTbmFwcGVk
SW50UmVjdChwbHVnaW5SZW5kZXJlci0+Y29udGVudEJveFJlY3QoKSk7CisgICAgSW50UmVjdCBj
b250ZW50Qm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChwbHVnaW5SZW5kZXJlci5jb250ZW50Qm94
UmVjdCgpKTsKICAgICByZXR1cm4gY29udGVudEJveC5oZWlnaHQoKSAqIGNvbnRlbnRCb3gud2lk
dGgoKSA+IDE7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yRnJhbWUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgaWYgKCFyZW5kZXJlci0+aXNXaWRn
ZXQoKSkKKyAgICBpZiAoIXJlbmRlcmVyLmlzV2lkZ2V0KCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICBSZW5kZXJXaWRnZXQqIGZyYW1lUmVuZGVyZXIgPSB0b1JlbmRlcldpZGdl
dChyZW5kZXJlcik7CiAKLSAgICBpZiAoIWZyYW1lUmVuZGVyZXItPnJlcXVpcmVzQWNjZWxlcmF0
ZWRDb21wb3NpdGluZygpKQorICAgIFJlbmRlcldpZGdldCYgZnJhbWVSZW5kZXJlciA9ICp0b1Jl
bmRlcldpZGdldCgmcmVuZGVyZXIpOworCisgICAgaWYgKCFmcmFtZVJlbmRlcmVyLnJlcXVpcmVz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBt
X3JlZXZhbHVhdGVDb21wb3NpdGluZ0FmdGVyTGF5b3V0ID0gdHJ1ZTsKIAotICAgIFJlbmRlckxh
eWVyQ29tcG9zaXRvciogaW5uZXJDb21wb3NpdG9yID0gZnJhbWVDb250ZW50c0NvbXBvc2l0b3Io
ZnJhbWVSZW5kZXJlcik7CisgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBpbm5lckNvbXBvc2l0
b3IgPSBmcmFtZUNvbnRlbnRzQ29tcG9zaXRvcigmZnJhbWVSZW5kZXJlcik7CiAgICAgaWYgKCFp
bm5lckNvbXBvc2l0b3IgfHwgIWlubmVyQ29tcG9zaXRvci0+c2hvdWxkUHJvcGFnYXRlQ29tcG9z
aXRpbmdUb0VuY2xvc2luZ0ZyYW1lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IElmIHdlIGNhbid0IHJlbGlhYmx5IGtub3cgdGhlIHNpemUgb2YgdGhlIGlmcmFtZSB5ZXQsIGRv
bid0IGNoYW5nZSBjb21wb3NpdGluZyBzdGF0ZS4KLSAgICBpZiAoIXJlbmRlcmVyLT5wYXJlbnQo
KSB8fCByZW5kZXJlci0+bmVlZHNMYXlvdXQoKSkKLSAgICAgICAgcmV0dXJuIGZyYW1lUmVuZGVy
ZXItPmhhc0xheWVyKCkgJiYgZnJhbWVSZW5kZXJlci0+bGF5ZXIoKS0+aXNDb21wb3NpdGVkKCk7
CisgICAgaWYgKCFmcmFtZVJlbmRlcmVyLnBhcmVudCgpIHx8IGZyYW1lUmVuZGVyZXIubmVlZHNM
YXlvdXQoKSkKKyAgICAgICAgcmV0dXJuIGZyYW1lUmVuZGVyZXIuaGFzTGF5ZXIoKSAmJiBmcmFt
ZVJlbmRlcmVyLmxheWVyKCktPmlzQ29tcG9zaXRlZCgpOwogICAgIAogICAgIC8vIERvbid0IGdv
IGludG8gY29tcG9zaXRpbmcgbW9kZSBpZiBoZWlnaHQgb3Igd2lkdGggYXJlIHplcm8uCi0gICAg
SW50UmVjdCBjb250ZW50Qm94ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChmcmFtZVJlbmRlcmVyLT5j
b250ZW50Qm94UmVjdCgpKTsKLSAgICByZXR1cm4gY29udGVudEJveC5oZWlnaHQoKSAqIGNvbnRl
bnRCb3gud2lkdGgoKSA+IDA7CisgICAgcmV0dXJuICFwaXhlbFNuYXBwZWRJbnRSZWN0KGZyYW1l
UmVuZGVyZXIuY29udGVudEJveFJlY3QoKSkuaXNFbXB0eSgpOwogfQogCi1ib29sIFJlbmRlckxh
eWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckFuaW1hdGlvbihSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVz
Q29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIp
IGNvbnN0CiB7CiAgICAgaWYgKCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50
OjpBbmltYXRpb25UcmlnZ2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgQW5pbWF0
aW9uQ29udHJvbGxlciYgYW5pbUNvbnRyb2xsZXIgPSByZW5kZXJlci0+YW5pbWF0aW9uKCk7Ci0g
ICAgcmV0dXJuIChhbmltQ29udHJvbGxlci5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKHJl
bmRlcmVyLCBDU1NQcm9wZXJ0eU9wYWNpdHkpCisgICAgQW5pbWF0aW9uQ29udHJvbGxlciYgYW5p
bUNvbnRyb2xsZXIgPSByZW5kZXJlci5hbmltYXRpb24oKTsKKyAgICByZXR1cm4gKGFuaW1Db250
cm9sbGVyLmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIoJnJlbmRlcmVyLCBDU1NQcm9wZXJ0
eU9wYWNpdHkpCiAgICAgICAgICAgICAmJiAoaW5Db21wb3NpdGluZ01vZGUoKSB8fCAobV9jb21w
b3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpBbmltYXRlZE9wYWNpdHlUcmlnZ2VyKSkp
CiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogI2lmICFQTEFURk9STShNQUMpIHx8ICghUExBVEZP
Uk0oSU9TKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwODApCiAgICAg
ICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMTA5MDcyNTE+IC0gV2ViS2l0MiBkb2Vzbid0IHN1
cHBvcnQgQ0EgYW5pbWF0aW9ucyBvZiBDSSBmaWx0ZXJzIG9uIExpb24gYW5kIGJlbG93Ci0gICAg
ICAgICAgICB8fCBhbmltQ29udHJvbGxlci5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKHJl
bmRlcmVyLCBDU1NQcm9wZXJ0eVdlYmtpdEZpbHRlcikKKyAgICAgICAgICAgIHx8IGFuaW1Db250
cm9sbGVyLmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVyZXIoJnJlbmRlcmVyLCBDU1NQcm9wZXJ0
eVdlYmtpdEZpbHRlcikKICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDKSB8fCAoIVBMQVRGT1JNKElP
UykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDgwKQogI2VuZGlmIC8v
IENTU19GSUxURVJTCi0gICAgICAgICAgICB8fCBhbmltQ29udHJvbGxlci5pc1J1bm5pbmdBbmlt
YXRpb25PblJlbmRlcmVyKHJlbmRlcmVyLCBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Cisg
ICAgICAgICAgICB8fCBhbmltQ29udHJvbGxlci5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVy
KCZyZW5kZXJlciwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogfQogCi1ib29sIFJlbmRl
ckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckluZGlyZWN0UmVhc29uKFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIGJvb2wgaGFzQ29tcG9zaXRlZERlc2NlbmRhbnRzLCBib29s
IGhhczNEVHJhbnNmb3JtZWREZXNjZW5kYW50cywgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9z
aXRpbmdSZWFzb24mIHJlYXNvbikgY29uc3QKK2Jvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpy
ZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCYgcmVuZGVyZXIsIGJvb2wgaGFzQ29tcG9zaXRlZERlc2NlbmRhbnRzLCBib29sIGhhczNEVHJh
bnNmb3JtZWREZXNjZW5kYW50cywgUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdSZWFz
b24mIHJlYXNvbikgY29uc3QKIHsKLSAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJv
eE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5ZXIoKTsKKyAgICBSZW5kZXJMYXllciYgbGF5ZXIg
PSAqdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlcikubGF5ZXIoKTsKIAogICAgIC8vIFdo
ZW4gYSBsYXllciBoYXMgY29tcG9zaXRlZCBkZXNjZW5kYW50cywgc29tZSBlZmZlY3RzLCBsaWtl
IDJkIHRyYW5zZm9ybXMsIGZpbHRlcnMsIG1hc2tzIGV0YyBtdXN0IGJlIGltcGxlbWVudGVkCiAg
ICAgLy8gdmlhIGNvbXBvc2l0aW5nIHNvIHRoYXQgdGhleSBhbHNvIGFwcGx5IHRvIHRob3NlIGNv
bXBvc2l0ZWQgZGVzY2RlbmRhbnRzLgotICAgIGlmIChoYXNDb21wb3NpdGVkRGVzY2VuZGFudHMg
JiYgKGxheWVyLT50cmFuc2Zvcm0oKSB8fCByZW5kZXJlci0+Y3JlYXRlc0dyb3VwKCkgfHwgcmVu
ZGVyZXItPmhhc1JlZmxlY3Rpb24oKSkpIHsKKyAgICBpZiAoaGFzQ29tcG9zaXRlZERlc2NlbmRh
bnRzICYmIChsYXllci50cmFuc2Zvcm0oKSB8fCByZW5kZXJlci5jcmVhdGVzR3JvdXAoKSB8fCBy
ZW5kZXJlci5oYXNSZWZsZWN0aW9uKCkpKSB7CiAgICAgICAgIHJlYXNvbiA9IFJlbmRlckxheWVy
OjpJbmRpcmVjdENvbXBvc2l0aW5nRm9yR3JhcGhpY2FsRWZmZWN0OwogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICB9CkBAIC0yMTk2LDEyICsyMTU1LDEyIEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJlY3RSZWFzb24oUmVuZGVyT2JqZWN0
KiByCiAgICAgLy8gQSBsYXllciB3aXRoIHByZXNlcnZlLTNkIG9yIHBlcnNwZWN0aXZlIG9ubHkg
bmVlZHMgdG8gYmUgY29tcG9zaXRlZCBpZiB0aGVyZSBhcmUgZGVzY2VuZGFudCBsYXllcnMgdGhh
dAogICAgIC8vIHdpbGwgYmUgYWZmZWN0ZWQgYnkgdGhlIHByZXNlcnZlLTNkIG9yIHBlcnNwZWN0
aXZlLgogICAgIGlmIChoYXMzRFRyYW5zZm9ybWVkRGVzY2VuZGFudHMpIHsKLSAgICAgICAgaWYg
KHJlbmRlcmVyLT5zdHlsZSgpLT50cmFuc2Zvcm1TdHlsZTNEKCkgPT0gVHJhbnNmb3JtU3R5bGUz
RFByZXNlcnZlM0QpIHsKKyAgICAgICAgaWYgKHJlbmRlcmVyLnN0eWxlKCktPnRyYW5zZm9ybVN0
eWxlM0QoKSA9PSBUcmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRCkgewogICAgICAgICAgICAgcmVh
c29uID0gUmVuZGVyTGF5ZXI6OkluZGlyZWN0Q29tcG9zaXRpbmdGb3JQcmVzZXJ2ZTNEOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAKLSAgICAgICAgaWYgKHJlbmRl
cmVyLT5zdHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKSB7CisgICAgICAgIGlmIChyZW5kZXJlci5z
dHlsZSgpLT5oYXNQZXJzcGVjdGl2ZSgpKSB7CiAgICAgICAgICAgICByZWFzb24gPSBSZW5kZXJM
YXllcjo6SW5kaXJlY3RDb21wb3NpdGluZ0ZvclBlcnNwZWN0aXZlOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTIyMTEsMzggKzIxNzAsMzggQEAgYm9vbCBSZW5kZXJM
YXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JJbmRpcmVjdFJlYXNvbihSZW5k
ZXJPYmplY3QqIHIKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhSZW5kZXJPYmplY3QqIHJlbmRl
cmVyKSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JGaWx0ZXJzKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyKSBjb25zdAogewog
I2lmIEVOQUJMRShDU1NfRklMVEVSUykKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMg
JiBDaHJvbWVDbGllbnQ6OkZpbHRlclRyaWdnZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXR1cm4gcmVuZGVyZXItPmhhc0ZpbHRlcigpOworICAgIHJldHVybiByZW5kZXJlci5o
YXNGaWx0ZXIoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlbmRlcmVyKTsKICAgICByZXR1
cm4gZmFsc2U7CiAjZW5kaWYKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAor
Ym9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGlu
ZyhSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikgY29uc3QKIHsKICNpZiBFTkFCTEUo
Q1NTX0NPTVBPU0lUSU5HKQotICAgIHJldHVybiByZW5kZXJlci0+aGFzQmxlbmRNb2RlKCk7Cisg
ICAgcmV0dXJuIHJlbmRlcmVyLmhhc0JsZW5kTW9kZSgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0ocmVuZGVyZXIpOwogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogCi1zdGF0aWMgYm9v
bCBpc1ZpZXdwb3J0Q29uc3RyYWluZWRGaXhlZE9yU3RpY2t5TGF5ZXIoY29uc3QgUmVuZGVyTGF5
ZXIqIGxheWVyKQorc3RhdGljIGJvb2wgaXNWaWV3cG9ydENvbnN0cmFpbmVkRml4ZWRPclN0aWNr
eUxheWVyKGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKIHsKLSAgICBpZiAobGF5ZXItPnJlbmRl
cmVyKCkuaXNTdGlja3lQb3NpdGlvbmVkKCkpCi0gICAgICAgIHJldHVybiAhbGF5ZXItPmVuY2xv
c2luZ092ZXJmbG93Q2xpcExheWVyKEV4Y2x1ZGVTZWxmKTsKKyAgICBpZiAobGF5ZXIucmVuZGVy
ZXIoKS5pc1N0aWNreVBvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuICFsYXllci5lbmNsb3Np
bmdPdmVyZmxvd0NsaXBMYXllcihFeGNsdWRlU2VsZik7CiAKLSAgICBpZiAobGF5ZXItPnJlbmRl
cmVyKCkuc3R5bGUoKS0+cG9zaXRpb24oKSAhPSBGaXhlZFBvc2l0aW9uKQorICAgIGlmIChsYXll
ci5yZW5kZXJlcigpLnN0eWxlKCktPnBvc2l0aW9uKCkgIT0gRml4ZWRQb3NpdGlvbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZm9yIChSZW5kZXJMYXllciogc3RhY2tpbmdDb250YWlu
ZXIgPSBsYXllci0+c3RhY2tpbmdDb250YWluZXIoKTsgc3RhY2tpbmdDb250YWluZXI7IHN0YWNr
aW5nQ29udGFpbmVyID0gc3RhY2tpbmdDb250YWluZXItPnN0YWNraW5nQ29udGFpbmVyKCkpIHsK
KyAgICBmb3IgKFJlbmRlckxheWVyKiBzdGFja2luZ0NvbnRhaW5lciA9IGxheWVyLnN0YWNraW5n
Q29udGFpbmVyKCk7IHN0YWNraW5nQ29udGFpbmVyOyBzdGFja2luZ0NvbnRhaW5lciA9IHN0YWNr
aW5nQ29udGFpbmVyLT5zdGFja2luZ0NvbnRhaW5lcigpKSB7CiAgICAgICAgIGlmIChzdGFja2lu
Z0NvbnRhaW5lci0+aXNDb21wb3NpdGVkKCkgJiYgc3RhY2tpbmdDb250YWluZXItPnJlbmRlcmVy
KCkuc3R5bGUoKS0+cG9zaXRpb24oKSA9PSBGaXhlZFBvc2l0aW9uKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KQEAgLTIyNTAsMjAgKzIyMDksMjAgQEAgc3RhdGljIGJvb2wgaXNW
aWV3cG9ydENvbnN0cmFpbmVkRml4ZWRPclN0aWNreUxheWVyKGNvbnN0IFJlbmRlckxheWVyKiBs
YXllcikKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBSZW5kZXJMYXllciogbGF5ZXIsIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVk
Tm90Q29tcG9zaXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFz
b24pIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclBvc2l0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBSZW5k
ZXJMYXllciYgbGF5ZXIsIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9z
aXRlZFJlYXNvbiogdmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pIGNvbnN0
CiB7CiAgICAgLy8gcG9zaXRpb246Zml4ZWQgZWxlbWVudHMgdGhhdCBjcmVhdGUgdGhlaXIgb3du
IHN0YWNraW5nIGNvbnRleHQgKGUuZy4gaGF2ZSBhbiBleHBsaWNpdCB6LWluZGV4LAogICAgIC8v
IG9wYWNpdHksIHRyYW5zZm9ybSkgY2FuIGdldCB0aGVpciBvd24gY29tcG9zaXRlZCBsYXllci4g
QSBzdGFja2luZyBjb250ZXh0IGlzIHJlcXVpcmVkIG90aGVyd2lzZQogICAgIC8vIHotaW5kZXgg
YW5kIGNsaXBwaW5nIHdpbGwgYmUgYnJva2VuLgotICAgIGlmICghcmVuZGVyZXItPmlzUG9zaXRp
b25lZCgpKQorICAgIGlmICghcmVuZGVyZXIuaXNQb3NpdGlvbmVkKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAKLSAgICBFUG9zaXRpb24gcG9zaXRpb24gPSByZW5kZXJlci0+c3R5bGUo
KS0+cG9zaXRpb24oKTsKLSAgICBib29sIGlzRml4ZWQgPSByZW5kZXJlci0+aXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgJiYgcG9zaXRpb24gPT0gRml4ZWRQb3NpdGlvbjsKLSAgICBpZiAoaXNGaXhl
ZCAmJiAhbGF5ZXItPmlzU3RhY2tpbmdDb250YWluZXIoKSkKKyAgICBFUG9zaXRpb24gcG9zaXRp
b24gPSByZW5kZXJlci5zdHlsZSgpLT5wb3NpdGlvbigpOworICAgIGJvb2wgaXNGaXhlZCA9IHJl
bmRlcmVyLmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIHBvc2l0aW9uID09IEZpeGVkUG9zaXRp
b247CisgICAgaWYgKGlzRml4ZWQgJiYgIWxheWVyLmlzU3RhY2tpbmdDb250YWluZXIoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIGJvb2wgaXNTdGlja3kgPSByZW5kZXJlci0+
aXNJbkZsb3dQb3NpdGlvbmVkKCkgJiYgcG9zaXRpb24gPT0gU3RpY2t5UG9zaXRpb247CisgICAg
Ym9vbCBpc1N0aWNreSA9IHJlbmRlcmVyLmlzSW5GbG93UG9zaXRpb25lZCgpICYmIHBvc2l0aW9u
ID09IFN0aWNreVBvc2l0aW9uOwogICAgIGlmICghaXNGaXhlZCAmJiAhaXNTdGlja3kpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjI3NSw3ICsyMjM0LDcgQEAgYm9vbCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3Qq
IHJlbmRlcmUKICAgICBpZiAoaXNTdGlja3kpCiAgICAgICAgIHJldHVybiBoYXNDb29yZGluYXRl
ZFNjcm9sbGluZygpICYmIGlzVmlld3BvcnRDb25zdHJhaW5lZEZpeGVkT3JTdGlja3lMYXllcihs
YXllcik7CiAKLSAgICBSZW5kZXJFbGVtZW50KiBjb250YWluZXIgPSByZW5kZXJlci0+Y29udGFp
bmVyKCk7CisgICAgYXV0byBjb250YWluZXIgPSByZW5kZXJlci5jb250YWluZXIoKTsKICAgICAv
LyBJZiB0aGUgcmVuZGVyZXIgaXMgbm90IGhvb2tlZCB1cCB5ZXQgdGhlbiB3ZSBoYXZlIHRvIHdh
aXQgdW50aWwgaXQgaXMuCiAgICAgaWYgKCFjb250YWluZXIpIHsKICAgICAgICAgbV9yZWV2YWx1
YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCA9IHRydWU7CkBAIC0yMjkzLDEwICsyMjUyLDEwIEBA
IGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yUG9zaXRp
b24oUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgLy8gU3Vic2VxdWVudCB0ZXN0cyBkZXBlbmQg
b24gbGF5b3V0LiBJZiB3ZSBjYW4ndCB0ZWxsIG5vdywganVzdCBrZWVwIHRoaW5ncyB0aGUgd2F5
IHRoZXkgYXJlIHVudGlsIGxheW91dCBpcyBkb25lLgogICAgIGlmICghbV9pblBvc3RMYXlvdXRV
cGRhdGUpIHsKICAgICAgICAgbV9yZWV2YWx1YXRlQ29tcG9zaXRpbmdBZnRlckxheW91dCA9IHRy
dWU7Ci0gICAgICAgIHJldHVybiBsYXllci0+aXNDb21wb3NpdGVkKCk7CisgICAgICAgIHJldHVy
biBsYXllci5pc0NvbXBvc2l0ZWQoKTsKICAgICB9CiAKLSAgICBib29sIHBhaW50c0NvbnRlbnQg
PSBsYXllci0+aXNWaXN1YWxseU5vbkVtcHR5KCkgfHwgbGF5ZXItPmhhc1Zpc2libGVEZXNjZW5k
YW50KCk7CisgICAgYm9vbCBwYWludHNDb250ZW50ID0gbGF5ZXIuaXNWaXN1YWxseU5vbkVtcHR5
KCkgfHwgbGF5ZXIuaGFzVmlzaWJsZURlc2NlbmRhbnQoKTsKICAgICBpZiAoIXBhaW50c0NvbnRl
bnQpIHsKICAgICAgICAgaWYgKHZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29u
KQogICAgICAgICAgICAgKnZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uID0g
UmVuZGVyTGF5ZXI6Ok5vdENvbXBvc2l0ZWRGb3JOb1Zpc2libGVDb250ZW50OwpAQCAtMjMwNSw3
ICsyMjY0LDcgQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRp
bmdGb3JQb3NpdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmUKIAogICAgIC8vIEZpeGVkIHBvc2l0
aW9uIGVsZW1lbnRzIHRoYXQgYXJlIGludmlzaWJsZSBpbiB0aGUgY3VycmVudCB2aWV3IGRvbid0
IGdldCB0aGVpciBvd24gbGF5ZXIuCiAgICAgTGF5b3V0UmVjdCB2aWV3Qm91bmRzID0gbV9yZW5k
ZXJWaWV3LmZyYW1lVmlldygpLnZpZXdwb3J0Q29uc3RyYWluZWRWaXNpYmxlQ29udGVudFJlY3Qo
KTsKLSAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzID0gbGF5ZXItPmNhbGN1bGF0ZUxheWVyQm91
bmRzKHJvb3RSZW5kZXJMYXllcigpLCAwLCBSZW5kZXJMYXllcjo6RGVmYXVsdENhbGN1bGF0ZUxh
eWVyQm91bmRzRmxhZ3MKKyAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzID0gbGF5ZXIuY2FsY3Vs
YXRlTGF5ZXJCb3VuZHMoJnJvb3RSZW5kZXJMYXllcigpLCAwLCBSZW5kZXJMYXllcjo6RGVmYXVs
dENhbGN1bGF0ZUxheWVyQm91bmRzRmxhZ3MKICAgICAgICAgfCBSZW5kZXJMYXllcjo6RXhjbHVk
ZUhpZGRlbkRlc2NlbmRhbnRzIHwgUmVuZGVyTGF5ZXI6OkRvbnRDb25zdHJhaW5Gb3JNYXNrIHwg
UmVuZGVyTGF5ZXI6OkluY2x1ZGVDb21wb3NpdGVkRGVzY2VuZGFudHMpOwogICAgIGlmICghdmll
d0JvdW5kcy5pbnRlcnNlY3RzKGVuY2xvc2luZ0ludFJlY3QobGF5ZXJCb3VuZHMpKSkgewogICAg
ICAgICBpZiAodmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24pCkBAIC0yMzE2
LDI1ICsyMjc1LDI1IEBAIGJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBv
c2l0aW5nRm9yUG9zaXRpb24oUmVuZGVyT2JqZWN0KiByZW5kZXJlCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9y
T3ZlcmZsb3dTY3JvbGxpbmcoY29uc3QgUmVuZGVyTGF5ZXIqIGxheWVyKSBjb25zdAorYm9vbCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9s
bGluZyhjb25zdCBSZW5kZXJMYXllciYgbGF5ZXIpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGxheWVy
LT5uZWVkc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKTsKKyAgICByZXR1cm4gbGF5ZXIubmVlZHNDb21w
b3NpdGVkU2Nyb2xsaW5nKCk7CiB9CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjppc1J1
bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdAorYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmlzUnVubmluZ0FjY2VsZXJhdGVk
VHJhbnNmb3JtQW5pbWF0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyKSBjb25z
dAogewogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNsaWVudDo6QW5p
bWF0aW9uVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiByZW5k
ZXJlci0+YW5pbWF0aW9uKCkuaXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihyZW5kZXJlciwg
Q1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworICAgIHJldHVybiByZW5kZXJlci5hbmltYXRp
b24oKS5pc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKCZyZW5kZXJlciwgQ1NTUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm0pOwogfQogCiAvLyBJZiBhbiBlbGVtZW50IGhhcyBuZWdhdGl2ZSB6LWlu
ZGV4IGNoaWxkcmVuLCB0aG9zZSBjaGlsZHJlbiByZW5kZXIgaW4gZnJvbnQgb2YgdGhlIAogLy8g
bGF5ZXIgYmFja2dyb3VuZCwgc28gd2UgbmVlZCBhbiBleHRyYSAnY29udGVudHMnIGxheWVyIGZv
ciB0aGUgZm9yZWdyb3VuZCBvZiB0aGUgbGF5ZXIKIC8vIG9iamVjdC4KLWJvb2wgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpuZWVkc0NvbnRlbnRzQ29tcG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJM
YXllciogbGF5ZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bmVlZHNDb250
ZW50c0NvbXBvc2l0aW5nTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKSBjb25zdAogewot
ICAgIHJldHVybiBsYXllci0+aGFzTmVnYXRpdmVaT3JkZXJMaXN0KCk7CisgICAgcmV0dXJuIGxh
eWVyLmhhc05lZ2F0aXZlWk9yZGVyTGlzdCgpOwogfQogCiBib29sIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVxdWlyZXNTY3JvbGxMYXllcihSb290TGF5ZXJBdHRhY2htZW50IGF0dGFjaG1lbnQp
IGNvbnN0CkBAIC0yMzg1LDkgKzIzNDQsOSBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6
c3VwcG9ydHNGaXhlZFJvb3RCYWNrZ3JvdW5kQ29tcG9zaXRpbmcoKSBjb25zdAogICAgIHJldHVy
biByZW5kZXJWaWV3QmFja2luZyAmJiByZW5kZXJWaWV3QmFja2luZy0+dXNpbmdUaWxlZEJhY2tp
bmcoKTsKIH0KIAotYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6Om5lZWRzRml4ZWRSb290QmFj
a2dyb3VuZExheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3QKK2Jvb2wgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpuZWVkc0ZpeGVkUm9vdEJhY2tncm91bmRMYXllcihjb25zdCBSZW5k
ZXJMYXllciYgbGF5ZXIpIGNvbnN0CiB7Ci0gICAgaWYgKGxheWVyICE9IG1fcmVuZGVyVmlldy5s
YXllcigpKQorICAgIGlmICgmbGF5ZXIgIT0gbV9yZW5kZXJWaWV3LmxheWVyKCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiBzdXBwb3J0c0ZpeGVkUm9vdEJhY2tncm91bmRD
b21wb3NpdGluZygpICYmIG1fcmVuZGVyVmlldy5yb290QmFja2dyb3VuZElzRW50aXJlbHlGaXhl
ZCgpOwpAQCAtMjM5OCwzNSArMjM1NywzMiBAQCBHcmFwaGljc0xheWVyKiBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmZpeGVkUm9vdEJhY2tncm91bmRMYXllcigpIGNvbnN0CiAgICAgLy8gR2V0IHRo
ZSBmaXhlZCByb290IGJhY2tncm91bmQgZnJvbSB0aGUgUmVuZGVyVmlldyBsYXllcidzIGJhY2tp
bmcuCiAgICAgUmVuZGVyTGF5ZXIqIHZpZXdMYXllciA9IG1fcmVuZGVyVmlldy5sYXllcigpOwog
ICAgIGlmICghdmlld0xheWVyKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKICAgICBpZiAodmlld0xheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiB2aWV3
TGF5ZXItPmJhY2tpbmcoKS0+YmFja2dyb3VuZExheWVyUGFpbnRzRml4ZWRSb290QmFja2dyb3Vu
ZCgpKQogICAgICAgICByZXR1cm4gdmlld0xheWVyLT5iYWNraW5nKCktPmJhY2tncm91bmRMYXll
cigpOwogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2
b2lkIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZShHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyKQorc3RhdGljIHZvaWQgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZl
KEdyYXBoaWNzTGF5ZXImIGdyYXBoaWNzTGF5ZXIpCiB7Ci0gICAgaWYgKCFncmFwaGljc0xheWVy
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBncmFwaGljc0xheWVyLT5yZXNldFRyYWNrZWRSZXBh
aW50cygpOworICAgIGdyYXBoaWNzTGF5ZXIucmVzZXRUcmFja2VkUmVwYWludHMoKTsKIAotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JhcGhpY3NMYXllci0+Y2hpbGRyZW4oKS5zaXplKCk7
ICsraSkKLSAgICAgICAgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKGdyYXBoaWNz
TGF5ZXItPmNoaWxkcmVuKClbaV0pOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZ3Jh
cGhpY3NMYXllci5jaGlsZHJlbigpLnNpemUoKTsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgcmVz
ZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKCpncmFwaGljc0xheWVyLmNoaWxkcmVuKClb
aV0pOwogCi0gICAgaWYgKEdyYXBoaWNzTGF5ZXIqIHJlcGxpY2FMYXllciA9IGdyYXBoaWNzTGF5
ZXItPnJlcGxpY2FMYXllcigpKQotICAgICAgICByZXNldFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1
cnNpdmUocmVwbGljYUxheWVyKTsKKyAgICBpZiAoR3JhcGhpY3NMYXllciogcmVwbGljYUxheWVy
ID0gZ3JhcGhpY3NMYXllci5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgcmVzZXRUcmFja2VkUmVw
YWludFJlY3RzUmVjdXJzaXZlKCpyZXBsaWNhTGF5ZXIpOwogCi0gICAgaWYgKEdyYXBoaWNzTGF5
ZXIqIG1hc2tMYXllciA9IGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKQotICAgICAgICByZXNl
dFRyYWNrZWRSZXBhaW50UmVjdHNSZWN1cnNpdmUobWFza0xheWVyKTsKKyAgICBpZiAoR3JhcGhp
Y3NMYXllciogbWFza0xheWVyID0gZ3JhcGhpY3NMYXllci5tYXNrTGF5ZXIoKSkKKyAgICAgICAg
cmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKCptYXNrTGF5ZXIpOwogfQogCiB2b2lk
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVzZXRUcmFja2VkUmVwYWludFJlY3RzKCkKIHsKICAg
ICBpZiAoR3JhcGhpY3NMYXllciogcm9vdExheWVyID0gcm9vdEdyYXBoaWNzTGF5ZXIoKSkKLSAg
ICAgICAgcmVzZXRUcmFja2VkUmVwYWludFJlY3RzUmVjdXJzaXZlKHJvb3RMYXllcik7CisgICAg
ICAgIHJlc2V0VHJhY2tlZFJlcGFpbnRSZWN0c1JlY3Vyc2l2ZSgqcm9vdExheWVyKTsKIH0KIAog
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnNldFRyYWNrc1JlcGFpbnRzKGJvb2wgdHJhY2tz
UmVwYWludHMpCkBAIC0zMDEwLDkgKzI5NjYsOSBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRv
cjo6bm90aWZ5SUZyYW1lc09mQ29tcG9zaXRpbmdDaGFuZ2UoKQogICAgICAgICBvd25lckVsZW1l
bnQtPnNjaGVkdWxlU2V0TmVlZHNTdHlsZVJlY2FsYyhTeW50aGV0aWNTdHlsZUNoYW5nZSk7CiB9
CiAKLWJvb2wgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpsYXllckhhczNEQ29udGVudChjb25zdCBS
ZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0Citib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5
ZXJIYXMzRENvbnRlbnQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKSBjb25zdAogewotICAgIGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZSA9IGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAg
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gbGF5ZXIucmVuZGVyZXIoKS5zdHlsZSgpOwogCiAg
ICAgaWYgKHN0eWxlICYmIAogICAgICAgICAoc3R5bGUtPnRyYW5zZm9ybVN0eWxlM0QoKSA9PSBU
cmFuc2Zvcm1TdHlsZTNEUHJlc2VydmUzRCB8fApAQCAtMzAyMCw0MCArMjk3NiwzNSBAQCBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6bGF5ZXJIYXMzRENvbnRlbnQoY29uc3QgUmVuZGVyTGF5
ZXIqIGxheWVyKSBjb25zdAogICAgICAgICAgc3R5bGUtPnRyYW5zZm9ybSgpLmhhczNET3BlcmF0
aW9uKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGNvbnN0X2Nhc3Q8UmVuZGVyTGF5
ZXIqPihsYXllciktPnVwZGF0ZUxheWVyTGlzdHNJZk5lZWRlZCgpOworICAgIGNvbnN0X2Nhc3Q8
UmVuZGVyTGF5ZXImPihsYXllcikudXBkYXRlTGF5ZXJMaXN0c0lmTmVlZGVkKCk7CiAKICNpZiAh
QVNTRVJUX0RJU0FCTEVECi0gICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNo
ZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KGxheWVyKSk7CisgICAgTGF5ZXJMaXN0TXV0
YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIoY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KCZs
YXllcikpOwogI2VuZGlmCiAKLSAgICBpZiAobGF5ZXItPmlzU3RhY2tpbmdDb250YWluZXIoKSkg
ewotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXll
ci0+bmVnWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWda
T3JkZXJMaXN0LT5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBu
ZWdaT3JkZXJMaXN0LT5hdChpKTsKLSAgICAgICAgICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRl
bnQoY3VyTGF5ZXIpKQorICAgIGlmIChsYXllci5pc1N0YWNraW5nQ29udGFpbmVyKCkpIHsKKyAg
ICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBuZWdaT3JkZXJMaXN0ID0gbGF5ZXIubmVn
Wk9yZGVyTGlzdCgpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMCwgc2l6ZSA9IG5l
Z1pPcmRlckxpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgICAgIGlm
IChsYXllckhhczNEQ29udGVudCgqbmVnWk9yZGVyTGlzdC0+YXQoaSkpKQogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxheWVyLT5wb3NaT3Jk
ZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IHBvc1pPcmRlckxpc3Qt
PnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsr
aSkgewotICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IHBvc1pPcmRlckxp
c3QtPmF0KGkpOwotICAgICAgICAgICAgICAgIGlmIChsYXllckhhczNEQ29udGVudChjdXJMYXll
cikpCisgICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogcG9zWk9yZGVyTGlzdCA9IGxh
eWVyLnBvc1pPcmRlckxpc3QoKSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDAsIHNp
emUgPSBwb3NaT3JkZXJMaXN0LT5zaXplKCk7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAg
ICAgICBpZiAobGF5ZXJIYXMzRENvbnRlbnQoKnBvc1pPcmRlckxpc3QtPmF0KGkpKSkKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dMaXN0ID0gbGF5
ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXplID0gbm9ybWFs
Rmxvd0xpc3QtPnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsaXN0U2l6
ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBub3JtYWxGbG93
TGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAobGF5ZXJIYXMzRENvbnRlbnQoY3VyTGF5ZXIp
KQorICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbm9ybWFsRmxvd0xpc3QgPSBsYXllci5u
b3JtYWxGbG93TGlzdCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gbm9y
bWFsRmxvd0xpc3QtPnNpemUoKTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgaWYgKGxh
eWVySGFzM0RDb250ZW50KCpub3JtYWxGbG93TGlzdC0+YXQoaSkpKQogICAgICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQorCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
CkBAIC0zMDY4LDcgKzMwMTksNyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6ZGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKICAgICAgICAgcm9vdExheWVyLT5ub3RlRGV2aWNl
T3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkSW5jbHVkaW5nRGVzY2VuZGFudHMoKTsKIH0KIAotdm9p
ZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludFN0YXR1cyhS
ZW5kZXJMYXllciogbGF5ZXIpCit2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6dXBkYXRlVmll
d3BvcnRDb25zdHJhaW50U3RhdHVzKFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICBpZiAoaXNW
aWV3cG9ydENvbnN0cmFpbmVkRml4ZWRPclN0aWNreUxheWVyKGxheWVyKSkKICAgICAgICAgYWRk
Vmlld3BvcnRDb25zdHJhaW5lZExheWVyKGxheWVyKTsKQEAgLTMwNzYsMzYgKzMwMjcsMzYgQEAg
dm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZVZpZXdwb3J0Q29uc3RyYWludFN0YXR1
cyhSZW5kZXJMYXllciogbGF5ZXIpCiAgICAgICAgIHJlbW92ZVZpZXdwb3J0Q29uc3RyYWluZWRM
YXllcihsYXllcik7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjphZGRWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQordm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmFkZFZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXllciYgbGF5ZXIp
CiB7Ci0gICAgbV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmFkZChsYXllcik7CisgICAgbV92
aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmFkZCgmbGF5ZXIpOwogICAgIHJlZ2lzdGVyT3JVcGRh
dGVWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIobGF5ZXIpOwogfQogCi12b2lkIFJlbmRlckxheWVy
Q29tcG9zaXRvcjo6cmVtb3ZlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyKiBs
YXllcikKK3ZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZW1vdmVWaWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVyKQogewotICAgIGlmICghbV92aWV3cG9ydENvbnN0
cmFpbmVkTGF5ZXJzLmNvbnRhaW5zKGxheWVyKSkKKyAgICBpZiAoIW1fdmlld3BvcnRDb25zdHJh
aW5lZExheWVycy5jb250YWlucygmbGF5ZXIpKQogICAgICAgICByZXR1cm47CiAKICAgICB1bnJl
Z2lzdGVyVmlld3BvcnRDb25zdHJhaW5lZExheWVyKGxheWVyKTsKLSAgICBtX3ZpZXdwb3J0Q29u
c3RyYWluZWRMYXllcnMucmVtb3ZlKGxheWVyKTsKLSAgICBtX3ZpZXdwb3J0Q29uc3RyYWluZWRM
YXllcnNOZWVkaW5nVXBkYXRlLnJlbW92ZShsYXllcik7CisgICAgbV92aWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXJzLnJlbW92ZSgmbGF5ZXIpOworICAgIG1fdmlld3BvcnRDb25zdHJhaW5lZExheWVy
c05lZWRpbmdVcGRhdGUucmVtb3ZlKCZsYXllcik7CiB9CiAKLUZpeGVkUG9zaXRpb25WaWV3cG9y
dENvbnN0cmFpbnRzIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6Y29tcHV0ZUZpeGVkVmlld3BvcnRD
b25zdHJhaW50cyhSZW5kZXJMYXllciogbGF5ZXIpIGNvbnN0CitGaXhlZFBvc2l0aW9uVmlld3Bv
cnRDb25zdHJhaW50cyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVGaXhlZFZpZXdwb3J0
Q29uc3RyYWludHMoUmVuZGVyTGF5ZXImIGxheWVyKSBjb25zdAogewotICAgIEFTU0VSVChsYXll
ci0+aXNDb21wb3NpdGVkKCkpOworICAgIEFTU0VSVChsYXllci5pc0NvbXBvc2l0ZWQoKSk7CiAK
ICAgICBMYXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IG1fcmVuZGVyVmlldy5mcmFtZVZpZXcoKS52
aWV3cG9ydENvbnN0cmFpbmVkVmlzaWJsZUNvbnRlbnRSZWN0KCk7CiAKICAgICBGaXhlZFBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cyBjb25zdHJhaW50czsKIAotICAgIEdyYXBoaWNzTGF5ZXIq
IGdyYXBoaWNzTGF5ZXIgPSBsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCk7CisgICAg
R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciA9IGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhpY3NM
YXllcigpOwogCiAgICAgY29uc3RyYWludHMuc2V0TGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dChn
cmFwaGljc0xheWVyLT5wb3NpdGlvbigpKTsKICAgICBjb25zdHJhaW50cy5zZXRWaWV3cG9ydFJl
Y3RBdExhc3RMYXlvdXQodmlld3BvcnRSZWN0KTsKIAotICAgIFJlbmRlclN0eWxlKiBzdHlsZSA9
IGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCk7CisgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gbGF5
ZXIucmVuZGVyZXIoKS5zdHlsZSgpOwogICAgIGlmICghc3R5bGUtPmxlZnQoKS5pc0F1dG8oKSkK
ICAgICAgICAgY29uc3RyYWludHMuYWRkQW5jaG9yRWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpB
bmNob3JFZGdlTGVmdCk7CiAKQEAgLTMxMjksMjAgKzMwODAsMjAgQEAgRml4ZWRQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlRml4ZWRWaWV3
cG9ydENvbnMKICAgICByZXR1cm4gY29uc3RyYWludHM7CiB9CiAKLVN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50cyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVTdGlja3lWaWV3
cG9ydENvbnN0cmFpbnRzKFJlbmRlckxheWVyKiBsYXllcikgY29uc3QKK1N0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50cyBSZW5kZXJMYXllckNvbXBvc2l0b3I6OmNvbXB1dGVTdGlja3lW
aWV3cG9ydENvbnN0cmFpbnRzKFJlbmRlckxheWVyJiBsYXllcikgY29uc3QKIHsKLSAgICBBU1NF
UlQobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKyAgICBBU1NFUlQobGF5ZXIuaXNDb21wb3NpdGVk
KCkpOwogICAgIC8vIFdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSBmb3Igc3RpY2tpZXMgY29uc3Ry
YWluZWQgYnkgYW4gZW5jbG9zaW5nIGNsaXBwaW5nIGxheWVyLgotICAgIEFTU0VSVCghbGF5ZXIt
PmVuY2xvc2luZ092ZXJmbG93Q2xpcExheWVyKEV4Y2x1ZGVTZWxmKSk7CisgICAgQVNTRVJUKCFs
YXllci5lbmNsb3NpbmdPdmVyZmxvd0NsaXBMYXllcihFeGNsdWRlU2VsZikpOwogCiAgICAgTGF5
b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSBtX3JlbmRlclZpZXcuZnJhbWVWaWV3KCkudmlld3BvcnRD
b25zdHJhaW5lZFZpc2libGVDb250ZW50UmVjdCgpOwogCi0gICAgUmVuZGVyQm94TW9kZWxPYmpl
Y3QmIHJlbmRlcmVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChsYXllci0+cmVuZGVyZXIoKSk7
CisgICAgUmVuZGVyQm94TW9kZWxPYmplY3QmIHJlbmRlcmVyID0gdG9SZW5kZXJCb3hNb2RlbE9i
amVjdChsYXllci5yZW5kZXJlcigpKTsKIAogICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50cyBjb25zdHJhaW50czsKICAgICByZW5kZXJlci5jb21wdXRlU3RpY2t5UG9zaXRpb25D
b25zdHJhaW50cyhjb25zdHJhaW50cywgdmlld3BvcnRSZWN0KTsKIAotICAgIEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTGF5ZXIgPSBsYXllci0+YmFja2luZygpLT5ncmFwaGljc0xheWVyKCk7Cisg
ICAgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciA9IGxheWVyLmJhY2tpbmcoKS0+Z3JhcGhp
Y3NMYXllcigpOwogCiAgICAgY29uc3RyYWludHMuc2V0TGF5ZXJQb3NpdGlvbkF0TGFzdExheW91
dChncmFwaGljc0xheWVyLT5wb3NpdGlvbigpKTsKICAgICBjb25zdHJhaW50cy5zZXRTdGlja3lP
ZmZzZXRBdExhc3RMYXlvdXQocmVuZGVyZXIuc3RpY2t5UG9zaXRpb25PZmZzZXQoKSk7CkBAIC0z
MTUwLDkgKzMxMDEsOSBAQCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpjb21wdXRlU3RpY2t5Vmlld3BvcnRDbwogICAgIHJldHVybiBjb25z
dHJhaW50czsKIH0KIAotc3RhdGljIFJlbmRlckxheWVyQmFja2luZyogbmVhcmVzdFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQW5jZXN0b3IoUmVuZGVyTGF5ZXIqIGxheWVyKQorc3RhdGljIFJlbmRlckxh
eWVyQmFja2luZyogbmVhcmVzdFNjcm9sbGluZ0Nvb3JkaW5hdG9yQW5jZXN0b3IoUmVuZGVyTGF5
ZXImIGxheWVyKQogewotICAgIFJlbmRlckxheWVyKiBhbmNlc3RvciA9IGxheWVyLT5wYXJlbnQo
KTsKKyAgICBSZW5kZXJMYXllciogYW5jZXN0b3IgPSBsYXllci5wYXJlbnQoKTsKICAgICB3aGls
ZSAoYW5jZXN0b3IpIHsKICAgICAgICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9
IGFuY2VzdG9yLT5iYWNraW5nKCkpIHsKICAgICAgICAgICAgIGlmIChiYWNraW5nLT5zY3JvbGxM
YXllcklEKCkgJiYgIWFuY2VzdG9yLT5zY3JvbGxzT3ZlcmZsb3coKSkKQEAgLTMxNjEsMTAgKzMx
MTIsMTAgQEAgc3RhdGljIFJlbmRlckxheWVyQmFja2luZyogbmVhcmVzdFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQW5jZXN0b3IoUmVuZGVyTGF5ZXIqIGxheWUKICAgICAgICAgYW5jZXN0b3IgPSBhbmNl
c3Rvci0+cGFyZW50KCk7CiAgICAgfQogCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWdpc3Rlck9yVXBkYXRlVmll
d3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyKiBsYXllcikKK3ZvaWQgUmVuZGVyTGF5
ZXJDb21wb3NpdG9yOjpyZWdpc3Rlck9yVXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJl
bmRlckxheWVyJiBsYXllcikKIHsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHN1cHBvcnQgc3Rp
Y2t5IHBvc2l0aW9uIGhlcmUhIEFuZCB3ZSBzaG91bGQgZXZlbnR1YWxsIHN1cHBvcnQgZml4ZWQv
c3RpY2t5IGVsZW1lbnRzCiAgICAgLy8gdGhhdCBhcmUgaW5zaWRlIG5vbi1tYWluIGZyYW1lcyBv
bmNlIHdlIGdldCBub24tbWFpbiBmcmFtZXMgc2Nyb2xsaW5nIHdpdGggdGhlIFNjcm9sbGluZ0Nv
b3JkaW5hdG9yLgpAQCAtMzE3NiwxMyArMzEyNywxMyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9z
aXRvcjo6cmVnaXN0ZXJPclVwZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXll
cgogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogcmVuYW1lIHRvIHN1cHBvcnRzVmll
d3BvcnRDb25zdHJhaW5lZFBvc2l0aW9uTGF5ZXJzKCk/Ci0gICAgaWYgKCFzY3JvbGxpbmdDb29y
ZGluYXRvci0+c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgfHwgIWxheWVyLT5wYXJlbnQo
KSkKKyAgICBpZiAoIXNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zdXBwb3J0c0ZpeGVkUG9zaXRpb25M
YXllcnMoKSB8fCAhbGF5ZXIucGFyZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuY29udGFpbnMobGF5ZXIpKTsKLSAgICBBU1NF
UlQobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKyAgICBBU1NFUlQobV92aWV3cG9ydENvbnN0cmFp
bmVkTGF5ZXJzLmNvbnRhaW5zKCZsYXllcikpOworICAgIEFTU0VSVChsYXllci5pc0NvbXBvc2l0
ZWQoKSk7CiAKLSAgICBSZW5kZXJMYXllckJhY2tpbmcqIGJhY2tpbmcgPSBsYXllci0+YmFja2lu
ZygpOworICAgIFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IGxheWVyLmJhY2tpbmcoKTsK
ICAgICBpZiAoIWJhY2tpbmcpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzE5NSwxNyArMzE0Niwx
NyBAQCB2b2lkIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVnaXN0ZXJPclVwZGF0ZVZpZXdwb3J0
Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXllcgogICAgIGJhY2tpbmctPmF0dGFjaFRvU2Nyb2xs
aW5nQ29vcmRpbmF0b3JXaXRoUGFyZW50KHBhcmVudCk7CiAgICAgbm9kZUlEID0gYmFja2luZy0+
c2Nyb2xsTGF5ZXJJRCgpOwogCi0gICAgaWYgKGxheWVyLT5yZW5kZXJlcigpLmlzU3RpY2t5UG9z
aXRpb25lZCgpKQorICAgIGlmIChsYXllci5yZW5kZXJlcigpLmlzU3RpY2t5UG9zaXRpb25lZCgp
KQogICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW5l
ZE5vZGUobm9kZUlELCBjb21wdXRlU3RpY2t5Vmlld3BvcnRDb25zdHJhaW50cyhsYXllciksIGJh
Y2tpbmctPmdyYXBoaWNzTGF5ZXIoKSk7CiAgICAgZWxzZQogICAgICAgICBzY3JvbGxpbmdDb29y
ZGluYXRvci0+dXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZE5vZGUobm9kZUlELCBjb21wdXRlRml4
ZWRWaWV3cG9ydENvbnN0cmFpbnRzKGxheWVyKSwgYmFja2luZy0+Z3JhcGhpY3NMYXllcigpKTsK
IH0KIAotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVucmVnaXN0ZXJWaWV3cG9ydENvbnN0
cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyKQordm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnVucmVnaXN0ZXJWaWV3cG9ydENvbnN0cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXImIGxheWVy
KQogewotICAgIEFTU0VSVChtX3ZpZXdwb3J0Q29uc3RyYWluZWRMYXllcnMuY29udGFpbnMobGF5
ZXIpKTsKKyAgICBBU1NFUlQobV92aWV3cG9ydENvbnN0cmFpbmVkTGF5ZXJzLmNvbnRhaW5zKCZs
YXllcikpOwogCi0gICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IGxheWVyLT5i
YWNraW5nKCkpCisgICAgaWYgKFJlbmRlckxheWVyQmFja2luZyogYmFja2luZyA9IGxheWVyLmJh
Y2tpbmcoKSkKICAgICAgICAgYmFja2luZy0+ZGV0YWNoRnJvbVNjcm9sbGluZ0Nvb3JkaW5hdG9y
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckNvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBv
c2l0b3IuaAppbmRleCAwMGI2OWY2NDkzOGY5MTgwZTQwZDhmMTZmY2VkZmRkNGRhNTcyNTMzLi40
Nzc2MmFiODFmMGI4Mzg4NzdjZWRkZmZiMzU2ZmQ5MDM2ODEyYjExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCkBAIC00MCwxMiArNDAs
MTAgQEAgY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBHcmFw
aGljc0xheWVyOwogY2xhc3MgR3JhcGhpY3NMYXllclVwZGF0ZXI7CiBjbGFzcyBSZW5kZXJFbWJl
ZGRlZE9iamVjdDsKK2NsYXNzIFJlbmRlclZpZGVvOwogY2xhc3MgUmVuZGVyV2lkZ2V0OwogY2xh
c3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3I7CiBjbGFzcyBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM7Ci0jaWYgRU5BQkxFKFZJREVPKQotY2xhc3MgUmVuZGVyVmlkZW87Ci0jZW5kaWYK
IGNsYXNzIFRpbGVkQmFja2luZzsKIAogdHlwZWRlZiB1bnNpZ25lZCBMYXllclRyZWVGbGFnczsK
QEAgLTEzMiwxMyArMTMwLDEzIEBAIHB1YmxpYzoKICAgICBSZW5kZXJMYXllckNvbXBvc2l0b3Iq
IGVuY2xvc2luZ0NvbXBvc2l0b3JGbHVzaGluZ0xheWVycygpIGNvbnN0OwogCiAgICAgLy8gQ2Fs
bGVkIHdoZW4gdGhlIEdyYXBoaWNzTGF5ZXIgZm9yIHRoZSBnaXZlbiBSZW5kZXJMYXllciBoYXMg
Zmx1c2hlZCBjaGFuZ2VzIGluc2lkZSBvZiBmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKS4KLSAg
ICB2b2lkIGRpZEZsdXNoQ2hhbmdlc0ZvckxheWVyKFJlbmRlckxheWVyKiwgY29uc3QgR3JhcGhp
Y3NMYXllciopOworICAgIHZvaWQgZGlkRmx1c2hDaGFuZ2VzRm9yTGF5ZXIoUmVuZGVyTGF5ZXIm
LCBjb25zdCBHcmFwaGljc0xheWVyKik7CiAKICAgICAvLyBDYWxsZWQgd2hlbiBzb21ldGhpbmcg
b3V0c2lkZSBXZWJLaXQgYWZmZWN0cyB0aGUgdmlzaWJsZSByZWN0IChlLmcuIGRlbGVnYXRlZCBz
Y3JvbGxpbmcpLiBNaWdodCBzY2hlZHVsZSBhIGxheWVyIGZsdXNoLgogICAgIHZvaWQgZGlkQ2hh
bmdlVmlzaWJsZVJlY3QoKTsKICAgICAKICAgICAvLyBSZWJ1aWxkIHRoZSB0cmVlIG9mIGNvbXBv
c2l0aW5nIGxheWVycwotICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRp
bmdVcGRhdGVUeXBlLCBSZW5kZXJMYXllciogdXBkYXRlUm9vdCA9IDApOworICAgIHZvaWQgdXBk
YXRlQ29tcG9zaXRpbmdMYXllcnMoQ29tcG9zaXRpbmdVcGRhdGVUeXBlLCBSZW5kZXJMYXllciog
dXBkYXRlUm9vdCA9IG51bGxwdHIpOwogICAgIC8vIFRoaXMgaXMgb25seSB1c2VkIHdoZW4gc3Rh
dGUgY2hhbmdlcyBhbmQgd2UgZG8gbm90IGV4ZXBlY3QgYSBzdHlsZSB1cGRhdGUgb3IgbGF5b3V0
IHRvIGhhcHBlbiBzb29uIChlLmcuIHdoZW4KICAgICAvLyB3ZSBkaXNjb3ZlciB0aGF0IGFuIGlm
cmFtZSBpcyBvdmVybGFwcGVkIGR1cmluZyBwYWludGluZykuCiAgICAgdm9pZCBzY2hlZHVsZUNv
bXBvc2l0aW5nTGF5ZXJVcGRhdGUoKTsKQEAgLTE0OCw0NiArMTQ2LDQ2IEBAIHB1YmxpYzoKICAg
ICAKICAgICAvLyBVcGRhdGUgdGhlIGNvbXBvc2l0aW5nIHN0YXRlIG9mIHRoZSBnaXZlbiBsYXll
ci4gUmV0dXJucyB0cnVlIGlmIHRoYXQgc3RhdGUgY2hhbmdlZC4KICAgICBlbnVtIENvbXBvc2l0
aW5nQ2hhbmdlUmVwYWludCB7IENvbXBvc2l0aW5nQ2hhbmdlUmVwYWludE5vdywgQ29tcG9zaXRp
bmdDaGFuZ2VXaWxsUmVwYWludExhdGVyIH07Ci0gICAgYm9vbCB1cGRhdGVMYXllckNvbXBvc2l0
aW5nU3RhdGUoUmVuZGVyTGF5ZXIqLCBDb21wb3NpdGluZ0NoYW5nZVJlcGFpbnQgPSBDb21wb3Np
dGluZ0NoYW5nZVJlcGFpbnROb3cpOworICAgIGJvb2wgdXBkYXRlTGF5ZXJDb21wb3NpdGluZ1N0
YXRlKFJlbmRlckxheWVyJiwgQ29tcG9zaXRpbmdDaGFuZ2VSZXBhaW50ID0gQ29tcG9zaXRpbmdD
aGFuZ2VSZXBhaW50Tm93KTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgZ2VvbWV0cnkgZm9yIGNvbXBv
c2l0aW5nIGNoaWxkcmVuIG9mIGNvbXBvc2l0aW5nQW5jZXN0b3IuCi0gICAgdm9pZCB1cGRhdGVD
b21wb3NpdGluZ0Rlc2NlbmRhbnRHZW9tZXRyeShSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNl
c3RvciwgUmVuZGVyTGF5ZXIqLCBib29sIGNvbXBvc2l0ZWRDaGlsZHJlbk9ubHkpOworICAgIHZv
aWQgdXBkYXRlQ29tcG9zaXRpbmdEZXNjZW5kYW50R2VvbWV0cnkoUmVuZGVyTGF5ZXImIGNvbXBv
c2l0aW5nQW5jZXN0b3IsIFJlbmRlckxheWVyJiwgYm9vbCBjb21wb3NpdGVkQ2hpbGRyZW5Pbmx5
KTsKICAgICAKICAgICAvLyBXaGV0aGVyIGxheWVyJ3MgYmFja2luZyBuZWVkcyBhIGdyYXBoaWNz
IGxheWVyIHRvIGRvIGNsaXBwaW5nIGJ5IGFuIGFuY2VzdG9yIChub24tc3RhY2tpbmctY29udGV4
dCBwYXJlbnQgd2l0aCBvdmVyZmxvdykuCi0gICAgYm9vbCBjbGlwcGVkQnlBbmNlc3RvcihSZW5k
ZXJMYXllciopIGNvbnN0OworICAgIGJvb2wgY2xpcHBlZEJ5QW5jZXN0b3IoUmVuZGVyTGF5ZXIm
KSBjb25zdDsKICAgICAvLyBXaGV0aGVyIGxheWVyJ3MgYmFja2luZyBuZWVkcyBhIGdyYXBoaWNz
IGxheWVyIHRvIGNsaXAgei1vcmRlciBjaGlsZHJlbiBvZiB0aGUgZ2l2ZW4gbGF5ZXIuCi0gICAg
Ym9vbCBjbGlwc0NvbXBvc2l0aW5nRGVzY2VuZGFudHMoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25z
dDsKKyAgICBib29sIGNsaXBzQ29tcG9zaXRpbmdEZXNjZW5kYW50cyhjb25zdCBSZW5kZXJMYXll
ciYpIGNvbnN0OwogCiAgICAgLy8gV2hldGhlciB0aGUgZ2l2ZW4gbGF5ZXIgbmVlZHMgYW4gZXh0
cmEgJ2NvbnRlbnRzJyBsYXllci4KLSAgICBib29sIG5lZWRzQ29udGVudHNDb21wb3NpdGluZ0xh
eWVyKGNvbnN0IFJlbmRlckxheWVyKikgY29uc3Q7CisgICAgYm9vbCBuZWVkc0NvbnRlbnRzQ29t
cG9zaXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYpIGNvbnN0OwogCiAgICAgYm9vbCBzdXBw
b3J0c0ZpeGVkUm9vdEJhY2tncm91bmRDb21wb3NpdGluZygpIGNvbnN0OwotICAgIGJvb2wgbmVl
ZHNGaXhlZFJvb3RCYWNrZ3JvdW5kTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKKyAg
ICBib29sIG5lZWRzRml4ZWRSb290QmFja2dyb3VuZExheWVyKGNvbnN0IFJlbmRlckxheWVyJikg
Y29uc3Q7CiAgICAgR3JhcGhpY3NMYXllciogZml4ZWRSb290QmFja2dyb3VuZExheWVyKCkgY29u
c3Q7CiAgICAgCiAgICAgLy8gUmV0dXJuIHRoZSBib3VuZGluZyBib3ggcmVxdWlyZWQgZm9yIGNv
bXBvc2l0aW5nIGxheWVyIGFuZCBpdHMgY2hpbGRlcm4sIHJlbGF0aXZlIHRvIGFuY2VzdG9yTGF5
ZXIuCiAgICAgLy8gSWYgbGF5ZXJCb3VuZGluZ0JveCBpcyBub3QgMCwgb24gcmV0dXJuIGl0IGNv
bnRhaW5zIHRoZSBib3VuZGluZyBib3ggb2YgdGhpcyBsYXllciBvbmx5LgotICAgIExheW91dFJl
Y3QgY2FsY3VsYXRlQ29tcG9zaXRlZEJvdW5kcyhjb25zdCBSZW5kZXJMYXllciosIGNvbnN0IFJl
bmRlckxheWVyKiBhbmNlc3RvckxheWVyKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IGNhbGN1bGF0
ZUNvbXBvc2l0ZWRCb3VuZHMoY29uc3QgUmVuZGVyTGF5ZXImLCBjb25zdCBSZW5kZXJMYXllciYg
YW5jZXN0b3JMYXllcikgY29uc3Q7CiAKICAgICAvLyBSZXBhaW50IHRoZSBhcHByb3ByaWF0ZSBs
YXllcnMgd2hlbiB0aGUgZ2l2ZW4gUmVuZGVyTGF5ZXIgc3RhcnRzIG9yIHN0b3BzIGJlaW5nIGNv
bXBvc2l0ZWQuCi0gICAgdm9pZCByZXBhaW50T25Db21wb3NpdGluZ0NoYW5nZShSZW5kZXJMYXll
ciopOworICAgIHZvaWQgcmVwYWludE9uQ29tcG9zaXRpbmdDaGFuZ2UoUmVuZGVyTGF5ZXImKTsK
ICAgICAKLSAgICB2b2lkIHJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3RvcihSZW5kZXJMYXllcios
IGNvbnN0IExheW91dFJlY3QmKTsKKyAgICB2b2lkIHJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3Rv
cihSZW5kZXJMYXllciYsIGNvbnN0IExheW91dFJlY3QmKTsKICAgICAKICAgICAvLyBOb3RpZnkg
dXMgdGhhdCBhIGxheWVyIGhhcyBiZWVuIGFkZGVkIG9yIHJlbW92ZWQKLSAgICB2b2lkIGxheWVy
V2FzQWRkZWQoUmVuZGVyTGF5ZXIqIHBhcmVudCwgUmVuZGVyTGF5ZXIqIGNoaWxkKTsKLSAgICB2
b2lkIGxheWVyV2lsbEJlUmVtb3ZlZChSZW5kZXJMYXllciogcGFyZW50LCBSZW5kZXJMYXllciog
Y2hpbGQpOworICAgIHZvaWQgbGF5ZXJXYXNBZGRlZChSZW5kZXJMYXllciYgcGFyZW50LCBSZW5k
ZXJMYXllciYgY2hpbGQpOworICAgIHZvaWQgbGF5ZXJXaWxsQmVSZW1vdmVkKFJlbmRlckxheWVy
JiBwYXJlbnQsIFJlbmRlckxheWVyJiBjaGlsZCk7CiAKICAgICAvLyBHZXQgdGhlIG5lYXJlc3Qg
YW5jZXN0b3IgbGF5ZXIgdGhhdCBoYXMgb3ZlcmZsb3cgb3IgY2xpcCwgYnV0IGlzIG5vdCBhIHN0
YWNraW5nIGNvbnRleHQKLSAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nTm9uU3RhY2tpbmdDbGlw
cGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3Q7CisgICAgUmVuZGVyTGF5
ZXIqIGVuY2xvc2luZ05vblN0YWNraW5nQ2xpcHBpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYp
IGNvbnN0OwogCiAgICAgLy8gUmVwYWludCBwYXJ0cyBvZiBhbGwgY29tcG9zaXRlZCBsYXllcnMg
dGhhdCBpbnRlcnNlY3QgdGhlIGdpdmVuIGFic29sdXRlIHJlY3RhbmdsZSAob3IgdGhlIGVudGly
ZSBsYXllciBpZiB0aGUgcG9pbnRlciBpcyBudWxsKS4KICAgICB2b2lkIHJlcGFpbnRDb21wb3Np
dGVkTGF5ZXJzKGNvbnN0IEludFJlY3QqID0gMCk7CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIGdpdmVuIGxheWVyIG5lZWRzIGl0IG93biBiYWNraW5nIHN0b3JlLgotICAgIGJvb2wgcmVx
dWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVuZGVyTGF5ZXIqLCBjb25zdCBSZW5kZXJMYXll
ciogY29tcG9zaXRpbmdBbmNlc3RvckxheWVyLCBjb25zdCBJbnRSZWN0JiBsYXllckNvbXBvc2l0
ZWRCb3VuZHNJbkFuY2VzdG9yLCBjb25zdCBJbnRSZWN0JiBhbmNlc3RvckNvbXBvc2l0ZWRCb3Vu
ZHMpIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNPd25CYWNraW5nU3RvcmUoY29uc3QgUmVuZGVy
TGF5ZXImLCBjb25zdCBSZW5kZXJMYXllciogY29tcG9zaXRpbmdBbmNlc3RvckxheWVyLCBjb25z
dCBJbnRSZWN0JiBsYXllckNvbXBvc2l0ZWRCb3VuZHNJbkFuY2VzdG9yLCBjb25zdCBJbnRSZWN0
JiBhbmNlc3RvckNvbXBvc2l0ZWRCb3VuZHMpIGNvbnN0OwogCi0gICAgUmVuZGVyTGF5ZXIqIHJv
b3RSZW5kZXJMYXllcigpIGNvbnN0OworICAgIFJlbmRlckxheWVyJiByb290UmVuZGVyTGF5ZXIo
KSBjb25zdDsKICAgICBHcmFwaGljc0xheWVyKiByb290R3JhcGhpY3NMYXllcigpIGNvbnN0Owog
ICAgIEdyYXBoaWNzTGF5ZXIqIHNjcm9sbExheWVyKCkgY29uc3Q7CiAKQEAgLTIxMCw4ICsyMDgs
OCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyQmFja2luZ0ZvckFsbExheWVycygpOwogICAg
IAotICAgIHZvaWQgbGF5ZXJCZWNhbWVDb21wb3NpdGVkKGNvbnN0IFJlbmRlckxheWVyKikgeyAr
K21fY29tcG9zaXRlZExheWVyQ291bnQ7IH0KLSAgICB2b2lkIGxheWVyQmVjYW1lTm9uQ29tcG9z
aXRlZChjb25zdCBSZW5kZXJMYXllciopOworICAgIHZvaWQgbGF5ZXJCZWNhbWVDb21wb3NpdGVk
KGNvbnN0IFJlbmRlckxheWVyJikgeyArK21fY29tcG9zaXRlZExheWVyQ291bnQ7IH0KKyAgICB2
b2lkIGxheWVyQmVjYW1lTm9uQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXllciYpOwogICAgIAog
I2lmIEVOQUJMRShWSURFTykKICAgICAvLyBVc2UgYnkgUmVuZGVyVmlkZW8gdG8gYXNrIGlmIGl0
IHNob3VsZCB0cnkgdG8gdXNlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgpAQCAtMjM5LDcgKzIz
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyYW1lVmlld0RpZExheW91dCgpOwogICAgIHZvaWQg
cm9vdEZpeGVkQmFja2dyb3VuZHNDaGFuZ2VkKCk7CiAKLSAgICB2b2lkIHNjcm9sbGluZ0xheWVy
RGlkQ2hhbmdlKFJlbmRlckxheWVyKik7CisgICAgdm9pZCBzY3JvbGxpbmdMYXllckRpZENoYW5n
ZShSZW5kZXJMYXllciYpOwogICAgIHZvaWQgZml4ZWRSb290QmFja2dyb3VuZExheWVyQ2hhbmdl
ZCgpOwogCiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyk7CkBAIC0y
NzAsOCArMjY4LDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzTGF5ZXIqIHVwZGF0ZUxheWVyRm9y
Rm9vdGVyKGJvb2wgd2FudHNMYXllcik7CiAjZW5kaWYKIAotICAgIHZvaWQgdXBkYXRlVmlld3Bv
cnRDb25zdHJhaW50U3RhdHVzKFJlbmRlckxheWVyKik7Ci0gICAgdm9pZCByZW1vdmVWaWV3cG9y
dENvbnN0cmFpbmVkTGF5ZXIoUmVuZGVyTGF5ZXIqKTsKKyAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0
Q29uc3RyYWludFN0YXR1cyhSZW5kZXJMYXllciYpOworICAgIHZvaWQgcmVtb3ZlVmlld3BvcnRD
b25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyJik7CiAKICAgICB2b2lkIHJlc2V0VHJhY2tlZFJl
cGFpbnRSZWN0cygpOwogICAgIHZvaWQgc2V0VHJhY2tzUmVwYWludHMoYm9vbCk7CkBAIC0yODIs
NyArMjgwLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNOb25NYWluTGF5ZXJzV2l0aFRpbGVk
QmFja2luZygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJzV2l0aFRpbGVkQmFja2luZ0NvdW50OyB9
CiAKLSAgICBDb21wb3NpdGluZ1JlYXNvbnMgcmVhc29uc0ZvckNvbXBvc2l0aW5nKGNvbnN0IFJl
bmRlckxheWVyKikgY29uc3Q7CisgICAgQ29tcG9zaXRpbmdSZWFzb25zIHJlYXNvbnNGb3JDb21w
b3NpdGluZyhjb25zdCBSZW5kZXJMYXllciYpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRMYXllckZs
dXNoVGhyb3R0bGluZ0VuYWJsZWQoYm9vbCk7CiAgICAgdm9pZCBkaXNhYmxlTGF5ZXJGbHVzaFRo
cm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CkBAIC0zMDQsNDIgKzMwMiw0MiBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjdXN0b21Qb3NpdGlvbkZvclZpc2libGVSZWN0
Q29tcHV0YXRpb24oY29uc3QgR3JhcGhpY3NMYXllciosIEZsb2F0UG9pbnQmKSBjb25zdCBPVkVS
UklERTsKICAgICAKICAgICAvLyBXaGV0aGVyIHRoZSBnaXZlbiBSTCBuZWVkcyBhIGNvbXBvc2l0
aW5nIGxheWVyLgotICAgIGJvb2wgbmVlZHNUb0JlQ29tcG9zaXRlZChjb25zdCBSZW5kZXJMYXll
ciosIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiog
PSAwKSBjb25zdDsKKyAgICBib29sIG5lZWRzVG9CZUNvbXBvc2l0ZWQoY29uc3QgUmVuZGVyTGF5
ZXImLCBSZW5kZXJMYXllcjo6Vmlld3BvcnRDb25zdHJhaW5lZE5vdENvbXBvc2l0ZWRSZWFzb24q
ID0gMCkgY29uc3Q7CiAgICAgLy8gV2hldGhlciB0aGUgbGF5ZXIgaGFzIGFuIGludHJpbnNpYyBu
ZWVkIGZvciBjb21wb3NpdGluZyBsYXllci4KLSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdM
YXllcihjb25zdCBSZW5kZXJMYXllciosIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVk
Tm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9z
aXRpbmdMYXllcihjb25zdCBSZW5kZXJMYXllciYsIFJlbmRlckxheWVyOjpWaWV3cG9ydENvbnN0
cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25zdDsKICAgICAvLyBXaGV0aGVyIHRo
ZSBsYXllciBjb3VsZCBldmVyIGJlIGNvbXBvc2l0ZWQuCi0gICAgYm9vbCBjYW5CZUNvbXBvc2l0
ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKKyAgICBib29sIGNhbkJlQ29tcG9zaXRlZChj
b25zdCBSZW5kZXJMYXllciYpIGNvbnN0OwogCiAgICAgLy8gTWFrZSBvciBkZXN0cm95IHRoZSBi
YWNraW5nIGZvciB0aGlzIGxheWVyOyByZXR1cm5zIHRydWUgaWYgYmFja2luZyBjaGFuZ2VkLgot
ICAgIGJvb2wgdXBkYXRlQmFja2luZyhSZW5kZXJMYXllciosIENvbXBvc2l0aW5nQ2hhbmdlUmVw
YWludCBzaG91bGRSZXBhaW50KTsKKyAgICBib29sIHVwZGF0ZUJhY2tpbmcoUmVuZGVyTGF5ZXIm
LCBDb21wb3NpdGluZ0NoYW5nZVJlcGFpbnQgc2hvdWxkUmVwYWludCk7CiAKLSAgICB2b2lkIGNs
ZWFyQmFja2luZ0ZvckxheWVySW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyTGF5ZXIqKTsKKyAg
ICB2b2lkIGNsZWFyQmFja2luZ0ZvckxheWVySW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyTGF5
ZXImKTsKIAogICAgIC8vIFJlcGFpbnQgdGhlIGdpdmVuIHJlY3QgKHdoaWNoIGlzIGxheWVyJ3Mg
Y29vcmRzKSwgYW5kIHJlZ2lvbnMgb2YgY2hpbGQgbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoYXQg
cmVjdC4KLSAgICB2b2lkIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcihSZW5kZXJMYXllciosIGNvbnN0
IEludFJlY3QqID0gMCk7CisgICAgdm9pZCByZWN1cnNpdmVSZXBhaW50TGF5ZXIoUmVuZGVyTGF5
ZXImLCBjb25zdCBJbnRSZWN0KiA9IG51bGxwdHIpOwogCi0gICAgdm9pZCBhZGRUb092ZXJsYXBN
YXAoT3ZlcmxhcE1hcCYsIFJlbmRlckxheWVyKiwgSW50UmVjdCYgbGF5ZXJCb3VuZHMsIGJvb2wm
IGJvdW5kc0NvbXB1dGVkKTsKLSAgICB2b2lkIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShPdmVy
bGFwTWFwJiwgUmVuZGVyTGF5ZXIqLCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciA9IDApOwor
ICAgIHZvaWQgYWRkVG9PdmVybGFwTWFwKE92ZXJsYXBNYXAmLCBSZW5kZXJMYXllciYsIEludFJl
Y3QmIGxheWVyQm91bmRzLCBib29sJiBib3VuZHNDb21wdXRlZCk7CisgICAgdm9pZCBhZGRUb092
ZXJsYXBNYXBSZWN1cnNpdmUoT3ZlcmxhcE1hcCYsIFJlbmRlckxheWVyJiwgUmVuZGVyTGF5ZXIq
IGFuY2VzdG9yTGF5ZXIgPSBudWxscHRyKTsKIAogICAgIHZvaWQgdXBkYXRlQ29tcG9zaXRpbmdM
YXllcnNUaW1lckZpcmVkKFRpbWVyPFJlbmRlckxheWVyQ29tcG9zaXRvcj4qKTsKIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiBhbnkgbGF5ZXIncyBjb21wb3NpdGluZyBjaGFuZ2VkCi0gICAgdm9p
ZCBjb21wdXRlQ29tcG9zaXRpbmdSZXF1aXJlbWVudHMoUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5
ZXIsIFJlbmRlckxheWVyKiwgT3ZlcmxhcE1hcCosIHN0cnVjdCBDb21wb3NpdGluZ1N0YXRlJiwg
Ym9vbCYgbGF5ZXJzQ2hhbmdlZCwgYm9vbCYgZGVzY2VuZGFudEhhczNEVHJhbnNmb3JtKTsKKyAg
ICB2b2lkIGNvbXB1dGVDb21wb3NpdGluZ1JlcXVpcmVtZW50cyhSZW5kZXJMYXllciogYW5jZXN0
b3JMYXllciwgUmVuZGVyTGF5ZXImLCBPdmVybGFwTWFwKiwgc3RydWN0IENvbXBvc2l0aW5nU3Rh
dGUmLCBib29sJiBsYXllcnNDaGFuZ2VkLCBib29sJiBkZXNjZW5kYW50SGFzM0RUcmFuc2Zvcm0p
OwogICAgIAogICAgIC8vIFJlY3Vyc2VzIGRvd24gdGhlIHRyZWUsIHBhcmVudGluZyBkZXNjZW5k
YW50IGNvbXBvc2l0aW5nIGxheWVycyBhbmQgY29sbGVjdGluZyBhbiBhcnJheSBvZiBjaGlsZCBs
YXllcnMgZm9yIHRoZSBjdXJyZW50IGNvbXBvc2l0aW5nIGxheWVyLgotICAgIHZvaWQgcmVidWls
ZENvbXBvc2l0aW5nTGF5ZXJUcmVlKFJlbmRlckxheWVyKiwgVmVjdG9yPEdyYXBoaWNzTGF5ZXIq
PiYgY2hpbGRHcmFwaGljc0xheWVyc09mRW5jbG9zaW5nTGF5ZXIsIGludCBkZXB0aCk7CisgICAg
dm9pZCByZWJ1aWxkQ29tcG9zaXRpbmdMYXllclRyZWUoUmVuZGVyTGF5ZXImLCBWZWN0b3I8R3Jh
cGhpY3NMYXllcio+JiBjaGlsZEdyYXBoaWNzTGF5ZXJzT2ZFbmNsb3NpbmdMYXllciwgaW50IGRl
cHRoKTsKIAogICAgIC8vIFJlY3Vyc2VzIGRvd24gdGhlIHRyZWUsIHVwZGF0aW5nIGxheWVyIGdl
b21ldHJ5IG9ubHkuCi0gICAgdm9pZCB1cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5kZXJMYXll
ciosIGludCBkZXB0aCk7CisgICAgdm9pZCB1cGRhdGVMYXllclRyZWVHZW9tZXRyeShSZW5kZXJM
YXllciYsIGludCBkZXB0aCk7CiAgICAgCiAgICAgLy8gSG9vayBjb21wb3NpdGluZyBsYXllcnMg
dG9nZXRoZXIKLSAgICB2b2lkIHNldENvbXBvc2l0aW5nUGFyZW50KFJlbmRlckxheWVyKiBjaGls
ZExheWVyLCBSZW5kZXJMYXllciogcGFyZW50TGF5ZXIpOwotICAgIHZvaWQgcmVtb3ZlQ29tcG9z
aXRlZENoaWxkcmVuKFJlbmRlckxheWVyKik7CisgICAgdm9pZCBzZXRDb21wb3NpdGluZ1BhcmVu
dChSZW5kZXJMYXllciYgY2hpbGRMYXllciwgUmVuZGVyTGF5ZXIqIHBhcmVudExheWVyKTsKKyAg
ICB2b2lkIHJlbW92ZUNvbXBvc2l0ZWRDaGlsZHJlbihSZW5kZXJMYXllciYpOwogCi0gICAgYm9v
bCBsYXllckhhczNEQ29udGVudChjb25zdCBSZW5kZXJMYXllciopIGNvbnN0OwotICAgIGJvb2wg
aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oUmVuZGVyT2JqZWN0KikgY29u
c3Q7CisgICAgYm9vbCBsYXllckhhczNEQ29udGVudChjb25zdCBSZW5kZXJMYXllciYpIGNvbnN0
OworICAgIGJvb2wgaXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCYpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNBbnlBZGRpdGlvbmFsQ29t
cG9zaXRlZExheWVycyhjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyKSBjb25zdDsKKyAgICBi
b29sIGhhc0FueUFkZGl0aW9uYWxDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IFJlbmRlckxheWVyJiBy
b290TGF5ZXIpIGNvbnN0OwogCiAgICAgdm9pZCBlbnN1cmVSb290TGF5ZXIoKTsKICAgICB2b2lk
IGRlc3Ryb3lSb290TGF5ZXIoKTsKQEAgLTM2MiwyNSArMzYwLDI1IEBAIHByaXZhdGU6CiAgICAg
U2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkgY29uc3Q7CiAKICAg
ICAvLyBXaGV0aGVyIGEgcnVubmluZyB0cmFuc2l0aW9uIG9yIGFuaW1hdGlvbiBlbmZvcmNlcyB0
aGUgbmVlZCBmb3IgYSBjb21wb3NpdGluZyBsYXllci4KLSAgICBib29sIHJlcXVpcmVzQ29tcG9z
aXRpbmdGb3JBbmltYXRpb24oUmVuZGVyT2JqZWN0KikgY29uc3Q7Ci0gICAgYm9vbCByZXF1aXJl
c0NvbXBvc2l0aW5nRm9yVHJhbnNmb3JtKFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIGJvb2wg
cmVxdWlyZXNDb21wb3NpdGluZ0ZvclZpZGVvKFJlbmRlck9iamVjdCopIGNvbnN0OwotICAgIGJv
b2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckNhbnZhcyhSZW5kZXJPYmplY3QqKSBjb25zdDsKLSAg
ICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JQbHVnaW4oUmVuZGVyT2JqZWN0KikgY29uc3Q7
Ci0gICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRnJhbWUoUmVuZGVyT2JqZWN0KikgY29u
c3Q7Ci0gICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhSZW5kZXJPYmplY3Qq
KSBjb25zdDsKLSAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JCbGVuZGluZyhSZW5kZXJP
YmplY3QqIHJlbmRlcmVyKSBjb25zdDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JB
bmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYpIGNvbnN0OworICAgIGJvb2wgcmVxdWly
ZXNDb21wb3NpdGluZ0ZvclRyYW5zZm9ybShSZW5kZXJMYXllck1vZGVsT2JqZWN0JikgY29uc3Q7
CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yVmlkZW8oUmVuZGVyTGF5ZXJNb2RlbE9i
amVjdCYpIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvckNhbnZhcyhSZW5k
ZXJMYXllck1vZGVsT2JqZWN0JikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5n
Rm9yUGx1Z2luKFJlbmRlckxheWVyTW9kZWxPYmplY3QmKSBjb25zdDsKKyAgICBib29sIHJlcXVp
cmVzQ29tcG9zaXRpbmdGb3JGcmFtZShSZW5kZXJMYXllck1vZGVsT2JqZWN0JikgY29uc3Q7Cisg
ICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yRmlsdGVycyhSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0JikgY29uc3Q7CisgICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9yQmxlbmRpbmcoUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCYpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclNjcm9sbGFibGVGcmFtZSgpIGNvbnN0OwotICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGlu
Z0ZvclBvc2l0aW9uKFJlbmRlck9iamVjdCosIGNvbnN0IFJlbmRlckxheWVyKiwgUmVuZGVyTGF5
ZXI6OlZpZXdwb3J0Q29uc3RyYWluZWROb3RDb21wb3NpdGVkUmVhc29uKiA9IDApIGNvbnN0Owot
ICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvck92ZXJmbG93U2Nyb2xsaW5nKGNvbnN0IFJl
bmRlckxheWVyKikgY29uc3Q7Ci0gICAgYm9vbCByZXF1aXJlc0NvbXBvc2l0aW5nRm9ySW5kaXJl
Y3RSZWFzb24oUmVuZGVyT2JqZWN0KiwgYm9vbCBoYXNDb21wb3NpdGVkRGVzY2VuZGFudHMsIGJv
b2wgaGFzM0RUcmFuc2Zvcm1lZERlc2NlbmRhbnRzLCBSZW5kZXJMYXllcjo6SW5kaXJlY3RDb21w
b3NpdGluZ1JlYXNvbiYpIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0ZvclBv
c2l0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplY3QmLCBjb25zdCBSZW5kZXJMYXllciYsIFJlbmRl
ckxheWVyOjpWaWV3cG9ydENvbnN0cmFpbmVkTm90Q29tcG9zaXRlZFJlYXNvbiogPSAwKSBjb25z
dDsKKyAgICBib29sIHJlcXVpcmVzQ29tcG9zaXRpbmdGb3JPdmVyZmxvd1Njcm9sbGluZyhjb25z
dCBSZW5kZXJMYXllciYpIGNvbnN0OworICAgIGJvb2wgcmVxdWlyZXNDb21wb3NpdGluZ0Zvcklu
ZGlyZWN0UmVhc29uKFJlbmRlckxheWVyTW9kZWxPYmplY3QmLCBib29sIGhhc0NvbXBvc2l0ZWRE
ZXNjZW5kYW50cywgYm9vbCBoYXMzRFRyYW5zZm9ybWVkRGVzY2VuZGFudHMsIFJlbmRlckxheWVy
OjpJbmRpcmVjdENvbXBvc2l0aW5nUmVhc29uJikgY29uc3Q7CiAKLSAgICB2b2lkIGFkZFZpZXdw
b3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXllciopOwotICAgIHZvaWQgcmVnaXN0ZXJPclVw
ZGF0ZVZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXllciopOwotICAgIHZvaWQgdW5y
ZWdpc3RlclZpZXdwb3J0Q29uc3RyYWluZWRMYXllcihSZW5kZXJMYXllciopOworICAgIHZvaWQg
YWRkVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyJik7CisgICAgdm9pZCByZWdp
c3Rlck9yVXBkYXRlVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyJik7CisgICAg
dm9pZCB1bnJlZ2lzdGVyVmlld3BvcnRDb25zdHJhaW5lZExheWVyKFJlbmRlckxheWVyJik7CiAK
LSAgICBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBjb21wdXRlRml4ZWRWaWV3cG9y
dENvbnN0cmFpbnRzKFJlbmRlckxheWVyKikgY29uc3Q7Ci0gICAgU3RpY2t5UG9zaXRpb25WaWV3
cG9ydENvbnN0cmFpbnRzIGNvbXB1dGVTdGlja3lWaWV3cG9ydENvbnN0cmFpbnRzKFJlbmRlckxh
eWVyKikgY29uc3Q7CisgICAgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgY29tcHV0
ZUZpeGVkVmlld3BvcnRDb25zdHJhaW50cyhSZW5kZXJMYXllciYpIGNvbnN0OworICAgIFN0aWNr
eVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBjb21wdXRlU3RpY2t5Vmlld3BvcnRDb25zdHJh
aW50cyhSZW5kZXJMYXllciYpIGNvbnN0OwogCiAgICAgYm9vbCByZXF1aXJlc1Njcm9sbExheWVy
KFJvb3RMYXllckF0dGFjaG1lbnQpIGNvbnN0OwogICAgIGJvb2wgcmVxdWlyZXNIb3Jpem9udGFs
U2Nyb2xsYmFyTGF5ZXIoKSBjb25zdDsKQEAgLTQwMiw4ICs0MDAsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGFpbnRSZWxhdGVkTWlsZXN0b25lc1RpbWVyRmlyZWQoVGltZXI8UmVuZGVyTGF5ZXJD
b21wb3NpdG9yPiopOwogCiAjaWYgIUxPR19ESVNBQkxFRAotICAgIGNvbnN0IGNoYXIqIGxvZ1Jl
YXNvbnNGb3JDb21wb3NpdGluZyhjb25zdCBSZW5kZXJMYXllciopOwotICAgIHZvaWQgbG9nTGF5
ZXJJbmZvKGNvbnN0IFJlbmRlckxheWVyKiwgaW50IGRlcHRoKTsKKyAgICBjb25zdCBjaGFyKiBs
b2dSZWFzb25zRm9yQ29tcG9zaXRpbmcoY29uc3QgUmVuZGVyTGF5ZXImKTsKKyAgICB2b2lkIGxv
Z0xheWVySW5mbyhjb25zdCBSZW5kZXJMYXllciYsIGludCBkZXB0aCk7CiAjZW5kaWYKIAogICAg
IGJvb2wgbWFpbkZyYW1lQmFja2luZ0lzVGlsZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZWVlZmM2MmU3MDliZmJlZjMyZTg0ODM2ODI2
NjhhNzQ0ODAzMzkyZC4uYTBiMjJkZDA2MGEzM2RiOTQ1ZDFlZWJjZDU2NTE1ZjNjNzNkMTgwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTczMiw3ICs3
MzIsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50Rm9yUG9z
aXRpb25lZE1vdmVtZW50TGF5b3V0KCkKIAogUmVuZGVyQmxvY2sqIFJlbmRlck9iamVjdDo6Y29u
dGFpbmluZ0Jsb2NrKCkgY29uc3QKIHsKLSAgICBSZW5kZXJPYmplY3QqIG8gPSBwYXJlbnQoKTsK
KyAgICBSZW5kZXJFbGVtZW50KiBvID0gcGFyZW50KCk7CiAgICAgaWYgKCFvICYmIGlzUmVuZGVy
U2Nyb2xsYmFyUGFydCgpKQogICAgICAgICBvID0gdG9SZW5kZXJTY3JvbGxiYXJQYXJ0KHRoaXMp
LT5yZW5kZXJlck93bmluZ1Njcm9sbGJhcigpOwogCkBAIC03NTcsOCArNzU3LDggQEAgc3RhdGlj
IGJvb2wgbXVzdFJlcGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGNvbnN0IEZpbGxMYXllcioKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBNYWtlIHN1
cmUgd2UgaGF2ZSBhIHZhbGlkIGltYWdlLgotICAgIFN0eWxlSW1hZ2UqIGltZyA9IGxheWVyLT5p
bWFnZSgpOwotICAgIGlmICghaW1nIHx8ICFpbWctPmNhblJlbmRlcihyZW5kZXJlciwgcmVuZGVy
ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpCisgICAgU3R5bGVJbWFnZSogaW1hZ2UgPSBs
YXllci0+aW1hZ2UoKTsKKyAgICBpZiAoIWltYWdlIHx8ICFpbWFnZS0+Y2FuUmVuZGVyKHJlbmRl
cmVyLCByZW5kZXJlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgaWYgKCFsYXllci0+eFBvc2l0aW9uKCkuaXNaZXJvKCkgfHwgIWxheWVy
LT55UG9zaXRpb24oKS5pc1plcm8oKSkKQEAgLTc3NCw5ICs3NzQsOSBAQCBzdGF0aWMgYm9vbCBt
dXN0UmVwYWludEZpbGxMYXllcnMoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
RmlsbExheWVyKgogICAgICAgICBpZiAoc2l6ZS53aWR0aCgpLmlzUGVyY2VudCgpIHx8IHNpemUu
aGVpZ2h0KCkuaXNQZXJjZW50KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
Ly8gSWYgdGhlIGltYWdlIGhhcyBuZWl0aGVyIGFuIGludHJpbnNpYyB3aWR0aCBub3IgYW4gaW50
cmluc2ljIGhlaWdodCwgaXRzIHNpemUgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgJ2NvbnRhaW4nLgot
ICAgICAgICBpZiAoKHNpemUud2lkdGgoKS5pc0F1dG8oKSB8fCBzaXplLmhlaWdodCgpLmlzQXV0
bygpKSAmJiBpbWctPmlzR2VuZXJhdGVkSW1hZ2UoKSkKKyAgICAgICAgaWYgKChzaXplLndpZHRo
KCkuaXNBdXRvKCkgfHwgc2l6ZS5oZWlnaHQoKS5pc0F1dG8oKSkgJiYgaW1hZ2UtPmlzR2VuZXJh
dGVkSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0gZWxzZSBpZiAoaW1n
LT51c2VzSW1hZ2VDb250YWluZXJTaXplKCkpCisgICAgfSBlbHNlIGlmIChpbWFnZS0+dXNlc0lt
YWdlQ29udGFpbmVyU2l6ZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBm
YWxzZTsKQEAgLTc4Nyw3ICs3ODcsNyBAQCBib29sIFJlbmRlck9iamVjdDo6Ym9yZGVySW1hZ2VJ
c0xvYWRlZEFuZENhbkJlUmVuZGVyZWQoKSBjb25zdAogICAgIEFTU0VSVChzdHlsZSgpLT5oYXNC
b3JkZXIoKSk7CiAKICAgICBTdHlsZUltYWdlKiBib3JkZXJJbWFnZSA9IHN0eWxlKCktPmJvcmRl
ckltYWdlKCkuaW1hZ2UoKTsKLSAgICByZXR1cm4gYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2Ut
PmNhblJlbmRlcih0aGlzLCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICYmIGJvcmRlckltYWdl
LT5pc0xvYWRlZCgpOworICAgIHJldHVybiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS0+Y2Fu
UmVuZGVyKHRvUmVuZGVyRWxlbWVudCh0aGlzKSwgc3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKSAm
JiBib3JkZXJJbWFnZS0+aXNMb2FkZWQoKTsKIH0KIAogYm9vbCBSZW5kZXJPYmplY3Q6Om11c3RS
ZXBhaW50QmFja2dyb3VuZE9yQm9yZGVyKCkgY29uc3QKQEAgLTE5ODUsOCArMTk4NSw2IEBAIHZv
aWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogICAgIGlmIChmcmFtZSgpLmV2ZW50
SGFuZGxlcigpLmF1dG9zY3JvbGxSZW5kZXJlcigpID09IHRoaXMpCiAgICAgICAgIGZyYW1lKCku
ZXZlbnRIYW5kbGVyKCkuc3RvcEF1dG9zY3JvbGxUaW1lcih0cnVlKTsKIAotICAgIGFuaW1hdGlv
bigpLmNhbmNlbEFuaW1hdGlvbnModGhpcyk7Ci0KICAgICAvLyBGb3IgYWNjZXNzaWJpbGl0eSBt
YW5hZ2VtZW50LCBub3RpZnkgdGhlIHBhcmVudCBvZiB0aGUgaW1taW5lbnQgY2hhbmdlIHRvIGl0
cyBjaGlsZCBzZXQuCiAgICAgLy8gV2UgZG8gaXQgbm93LCBiZWZvcmUgcmVtb3ZlKCksIHdoaWxl
IHRoZSBwYXJlbnQgcG9pbnRlciBpcyBzdGlsbCBhdmFpbGFibGUuCiAgICAgaWYgKEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKQEAgLTE5
OTQsNyArMTk5Miw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogCiAg
ICAgcmVtb3ZlRnJvbVBhcmVudCgpOwogCi0gICAgQVNTRVJUKGRvY3VtZW50QmVpbmdEZXN0cm95
ZWQoKSB8fCAhdmlldygpLmZyYW1lVmlldygpLmhhc1Nsb3dSZXBhaW50T2JqZWN0KHRoaXMpKTsK
KyAgICBBU1NFUlQoZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpIHx8ICFpc1JlbmRlckVsZW1lbnQo
KSB8fCAhdmlldygpLmZyYW1lVmlldygpLmhhc1Nsb3dSZXBhaW50T2JqZWN0KHRvUmVuZGVyRWxl
bWVudCh0aGlzKSkpOwogCiAgICAgLy8gVGhlIHJlbW92ZSgpIGNhbGwgYWJvdmUgbWF5IGludm9r
ZSBheE9iamVjdENhY2hlKCktPmNoaWxkcmVuQ2hhbmdlZCgpIG9uIHRoZSBwYXJlbnQsIHdoaWNo
IG1heSByZXF1aXJlIHRoZSBBWCByZW5kZXIKICAgICAvLyBvYmplY3QgZm9yIHRoaXMgcmVuZGVy
ZXIuIFNvIHdlIHJlbW92ZSB0aGUgQVggcmVuZGVyIG9iamVjdCBub3csIGFmdGVyIHRoZSByZW5k
ZXJlciBpcyByZW1vdmVkLgpAQCAtMjExNCwxNiArMjExMiw2IEBAIHZvaWQgUmVuZGVyT2JqZWN0
OjpkZXN0cm95KCkKICAgICBhcmVuYURlbGV0ZShyZW5kZXJBcmVuYSgpLCB0aGlzKTsKIH0KIAot
I2lmIEVOQUJMRShDU1NfU0hBUEVTKQotdm9pZCBSZW5kZXJPYmplY3Q6OnJlbW92ZVNoYXBlSW1h
Z2VDbGllbnQoU2hhcGVWYWx1ZSogc2hhcGVWYWx1ZSkKLXsKLSAgICBpZiAoIXNoYXBlVmFsdWUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBpZiAoU3R5bGVJbWFnZSogc2hhcGVJbWFnZSA9IHNoYXBl
VmFsdWUtPmltYWdlKCkpCi0gICAgICAgIHNoYXBlSW1hZ2UtPnJlbW92ZUNsaWVudCh0aGlzKTsK
LX0KLSNlbmRpZgotCiB2b2lkIFJlbmRlck9iamVjdDo6YXJlbmFEZWxldGUoUmVuZGVyQXJlbmEm
IGFyZW5hLCB2b2lkKiBiYXNlKQogewogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA2YWUwZTFjYzMwYWY1ZDE2YzViY2QxZjA0OWUyMTRi
M2Q5ZGU2ZmRjLi42YjI4Y2RkOWUwZjk1ZWQ5ZWVkMWUwMzc2N2QxMjZmMDc2NjI2MmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC05NzIsMTAgKzk3Miw2IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNXQlIoKSBjb25zdCB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyByZXR1cm4gZmFsc2U7IH0KIAotI2lmIEVOQUJMRShDU1NfU0hBUEVTKQotICAg
IHZvaWQgcmVtb3ZlU2hhcGVJbWFnZUNsaWVudChTaGFwZVZhbHVlKik7Ci0jZW5kaWYKLQogI2lm
bmRlZiBOREVCVUcKICAgICB2b2lkIGNoZWNrQmxvY2tQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlv
dXQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclBhcnQuY3BwCmluZGV4IDdmZjVlZGI0MmUzNDRlZjk4ZGVkYjMxMmY4NWNhMDdjN2U3Mzk1
NWYuLmYwYjk2NmI3NjAyNTcxMzdjZGMxMmYzNDNhNDA2MmQ4NmNlNTQ1M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5jcHAKQEAgLTIwOSwx
MCArMjA5LDEwIEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyUGFydDo6cGFpbnRJbnRvUmVjdChHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QKICAgICB9CiB9CiAKLVJlbmRlck9i
amVjdCogUmVuZGVyU2Nyb2xsYmFyUGFydDo6cmVuZGVyZXJPd25pbmdTY3JvbGxiYXIoKSBjb25z
dAorUmVuZGVyQm94KiBSZW5kZXJTY3JvbGxiYXJQYXJ0OjpyZW5kZXJlck93bmluZ1Njcm9sbGJh
cigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3Njcm9sbGJhcikKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBtX3Njcm9sbGJhci0+b3duaW5nUmVu
ZGVyZXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNjcm9sbGJhclBhcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJQYXJ0LmgKaW5kZXggMDFmNmY0N2M2OTRiMTNmMzUyZTVjNGRmN2IxNTIxNGM5MjFiOWE5MS4u
NjJjYWMzZTRkYmE1MzExYzliMjA1ZjAwMDNmNjc0YzcwZDBmNzM2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclBhcnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyUGFydC5oCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFVuaXQgbWFyZ2luUmlnaHQoKSBjb25zdCBPVkVS
UklERSB7IEFTU0VSVChpc0ludGVnZXJWYWx1ZShtX21hcmdpbkJveC5yaWdodCgpKSk7IHJldHVy
biBtX21hcmdpbkJveC5yaWdodCgpOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW5kZXJTY3Jv
bGxiYXJQYXJ0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXJPd25pbmdTY3JvbGxiYXIoKSBjb25zdDsKKyAgICBSZW5kZXJCb3gqIHJlbmRlcmVyT3du
aW5nU2Nyb2xsYmFyKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5
bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogbmV3
U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApp
bmRleCBlMGZkZTU4ZTViNDJkMTA2YzliNzY1YWMxYTRlNTRiZWE1NjcxNzZkLi4yMDljYzEwYWY0
MGQ5YTdmZTcwMTJjZGY4OGZlNWIwNjc2MjQ4ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTI2NCw3ICsxMjY0LDcgQEAgdm9pZCBSZW5k
ZXJUYWJsZUNlbGw6OnBhaW50Q29sbGFwc2VkQm9yZGVycyhQYWludEluZm8mIHBhaW50SW5mbywg
Y29uc3QgTGF5b3V0UG8KICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWludEJh
Y2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9p
bnQmIHBhaW50T2Zmc2V0LCBSZW5kZXJPYmplY3QqIGJhY2tncm91bmRPYmplY3QpCit2b2lkIFJl
bmRlclRhYmxlQ2VsbDo6cGFpbnRCYWNrZ3JvdW5kc0JlaGluZENlbGwoUGFpbnRJbmZvJiBwYWlu
dEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCwgUmVuZGVyRWxlbWVudCogYmFj
a2dyb3VuZE9iamVjdCkKIHsKICAgICBpZiAoIXBhaW50SW5mby5zaG91bGRQYWludFdpdGhpblJv
b3QodGhpcykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuaAppbmRleCBmZjNiMzdiZWVhNzM2ZTJkMzFkOGFjZjUzOTY5Y2YxZWY3Mzcz
MGJiLi5jYzIzYTg0MmE3YzA3MDc1NjYwNGQ5YjIyM2U3YTRiMDQ2MjE5MWYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0xMjgsNyArMTI4LDcgQEAg
cHVibGljOgogICAgIGJvb2wgYWxpZ25MZWZ0UmlnaHRCb3JkZXJQYWludFJlY3QoaW50JiBsZWZ0
WE9mZnNldCwgaW50JiByaWdodFhPZmZzZXQpOwogICAgIGJvb2wgYWxpZ25Ub3BCb3R0b21Cb3Jk
ZXJQYWludFJlY3QoaW50JiB0b3BZT2Zmc2V0LCBpbnQmIGJvdHRvbVlPZmZzZXQpOwogICAgIHZv
aWQgcGFpbnRDb2xsYXBzZWRCb3JkZXJzKFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7
Ci0gICAgdm9pZCBwYWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mLCBjb25zdCBM
YXlvdXRQb2ludCYsIFJlbmRlck9iamVjdCogYmFja2dyb3VuZE9iamVjdCk7CisgICAgdm9pZCBw
YWludEJhY2tncm91bmRzQmVoaW5kQ2VsbChQYWludEluZm8mLCBjb25zdCBMYXlvdXRQb2ludCYs
IFJlbmRlckVsZW1lbnQqIGJhY2tncm91bmRPYmplY3QpOwogCiAgICAgTGF5b3V0VW5pdCBjZWxs
QmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0OwogICAgIGJvb2wgaXNCYXNlbGluZUFsaWduZWQoKSBj
b25zdCAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA2MWI2YTBl
YjBjMDBlOTc1MjNiZGRkOGVkMTEwZWU5ZDc2MDZiZTgyLi40NDQwYThjNzA5ODM4NDg0ZmE0ZTYx
YzMxMTI0NDZjZGU4ZDk5MzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
Y3BwCkBAIC02Niw3ICs2Niw3IEBAIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRv
Y3VtZW50KQogICAgICwgbV9tYXhpbWFsT3V0bGluZVNpemUoMCkKICAgICAsIG1fcGFnZUxvZ2lj
YWxIZWlnaHQoMCkKICAgICAsIG1fcGFnZUxvZ2ljYWxIZWlnaHRDaGFuZ2VkKGZhbHNlKQotICAg
ICwgbV9sYXlvdXRTdGF0ZSgwKQorICAgICwgbV9sYXlvdXRTdGF0ZShudWxscHRyKQogICAgICwg
bV9sYXlvdXRTdGF0ZURpc2FibGVDb3VudCgwKQogICAgICwgbV9yZW5kZXJRdW90ZUhlYWQoMCkK
ICAgICAsIG1fcmVuZGVyQ291bnRlckNvdW50KDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuY3BwCmluZGV4IDUzMDc0NzE2N2JmNDdiOTFkOTZiYTdhNzYyYzg5
YzE0Y2RlZGFjMDcuLjNjNTYzYjI3OGRmZDQ2ZDZkMDA5NzQ0ZGM3YTg2MGVkMmQ5MzMyYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCkBAIC0zNTAs
NyArMzUwLDcgQEAgYm9vbCBGaWxsTGF5ZXI6OmltYWdlc0FyZUxvYWRlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBGaWxsTGF5ZXI6Omhhc09wYXF1ZUlt
YWdlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKSBjb25zdAogewogICAgIGlmICghbV9p
bWFnZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL0ZpbGxMYXllci5oCmluZGV4IGU5ODA3MzRkYWE0NGZjMDY1OTBiZjRmZTUwNDFiMWUzZWYy
NWIxNjEuLmJlNDgxOGZmZmQ1ZjI2NDFhZTVmZjQ1MTlkMTU3OWEyYWFmMjFhMTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM0LDYgKzM0LDggQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJFbGVtZW50OworCiBzdHJ1Y3Qg
RmlsbFNpemUgewogICAgIEZpbGxTaXplKCkKICAgICAgICAgOiB0eXBlKFNpemVMZW5ndGgpCkBA
IC0xNjYsNyArMTY4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9uZXh0ID8gbV9uZXh0
LT5oYXNGaXhlZEltYWdlKCkgOiBmYWxzZTsKICAgICB9CiAKLSAgICBib29sIGhhc09wYXF1ZUlt
YWdlKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworICAgIGJvb2wgaGFzT3BhcXVlSW1hZ2Uo
Y29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0OwogICAgIGJvb2wgaGFzUmVwZWF0WFkoKSBjb25z
dDsKICAgICBib29sIGNsaXBPY2NsdWRlc05leHRMYXllcnMoYm9vbCBmaXJzdExheWVyKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1l
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0tleWZyYW1lTGlzdC5oCmlu
ZGV4IDBhYTRkNmZiZTRmNTExM2RiM2ZiZTI3ZTZlOTBiOGJlNGJmMjMyMDIuLjZiOGM3ZjMyM2Qw
ZjU1ZDAyNmYwNDVkM2Y3NTBkYjE3ZWY3MmQ5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9LZXlmcmFtZUxpc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvS2V5ZnJhbWVMaXN0LmgKQEAgLTM0LDcgKzM0LDYgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBSZW5kZXJPYmplY3Q7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAog
Y2xhc3MgS2V5ZnJhbWVWYWx1ZSB7CkBAIC02Myw3ICs2Miw3IEBAIHByaXZhdGU6CiAKIGNsYXNz
IEtleWZyYW1lTGlzdCB7CiBwdWJsaWM6Ci0gICAgS2V5ZnJhbWVMaXN0KFJlbmRlck9iamVjdCos
IGNvbnN0IEF0b21pY1N0cmluZyYgYW5pbWF0aW9uTmFtZSkKKyAgICBleHBsaWNpdCBLZXlmcmFt
ZUxpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBhbmltYXRpb25OYW1lKQogICAgICAgICA6IG1fYW5p
bWF0aW9uTmFtZShhbmltYXRpb25OYW1lKQogICAgIHsKICAgICAgICAgaW5zZXJ0KEtleWZyYW1l
VmFsdWUoMCwgMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDZhNzEyODZlMGExZDc3ZjJjMzZmODZlZDk3MTg0Yzdh
MDIxNGI3NGIuLjA0ZDU1ZTk0MjIxNjVmMDllYzc5MDFmMDJiYTYyNGE2ODlmYjQwNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUNhY2hlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZS5j
cHAKQEAgLTI1LDcgKzI1LDcgQEAKICNpbmNsdWRlICJTdHlsZUNhY2hlZEltYWdlLmgiCiAKICNp
bmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1
ZGUgIlJlbmRlckVsZW1lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02MSw3ICs2
MSw3IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZTo6ZXJyb3JPY2N1cnJlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1faW1hZ2UtPmVycm9yT2NjdXJyZWQoKTsKIH0KIAotTGF5b3V0U2l6ZSBTdHlsZUNh
Y2hlZEltYWdlOjppbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgZmxvYXQg
bXVsdGlwbGllcikgY29uc3QKK0xheW91dFNpemUgU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2VTaXpl
KGNvbnN0IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdAog
ewogICAgIHJldHVybiBtX2ltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgbXVs
dGlwbGllcik7CiB9CkBAIC03Niw3ICs3Niw3IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZTo6aW1h
Z2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1hZ2UtPmltYWdlSGFz
UmVsYXRpdmVIZWlnaHQoKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlOjpjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dp
ZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykK
K3ZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3Qg
UmVuZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2lj
SGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewogICAgIG1faW1hZ2UtPmNvbXB1
dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNpY1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGlu
dHJpbnNpY1JhdGlvKTsKIH0KQEAgLTg2LDI3ICs4NiwyNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1h
Z2U6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdAogICAgIHJldHVybiBtX2ltYWdlLT51
c2VzSW1hZ2VDb250YWluZXJTaXplKCk7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6c2V0
Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNv
bnN0IEludFNpemUmIGltYWdlQ29udGFpbmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJab29t
RmFjdG9yKQordm9pZCBTdHlsZUNhY2hlZEltYWdlOjpzZXRDb250YWluZXJTaXplRm9yUmVuZGVy
ZXIoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmIGltYWdlQ29u
dGFpbmVyU2l6ZSwgZmxvYXQgaW1hZ2VDb250YWluZXJab29tRmFjdG9yKQogewogICAgIG1faW1h
Z2UtPnNldENvbnRhaW5lclNpemVGb3JSZW5kZXJlcihyZW5kZXJlciwgaW1hZ2VDb250YWluZXJT
aXplLCBpbWFnZUNvbnRhaW5lclpvb21GYWN0b3IpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1h
Z2U6OmFkZENsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBTdHlsZUNhY2hlZElt
YWdlOjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAgbV9pbWFnZS0+
YWRkQ2xpZW50KHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlOjpyZW1vdmVD
bGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVDYWNoZWRJbWFnZTo6cmVt
b3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIG1faW1hZ2UtPnJlbW92
ZUNsaWVudChyZW5kZXJlcik7CiB9CiAKLVBhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1h
Z2U6OmltYWdlKFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IEludFNpemUmKSBjb25zdAor
UGFzc1JlZlB0cjxJbWFnZT4gU3R5bGVDYWNoZWRJbWFnZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIsIGNvbnN0IEludFNpemUmKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlLT5p
bWFnZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKIH0KIAotYm9vbCBTdHlsZUNhY2hlZEltYWdlOjpr
bm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikgY29uc3QKK2Jvb2wg
U3R5bGVDYWNoZWRJbWFnZTo6a25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyKSBjb25zdAogewogICAgIHJldHVybiBtX2ltYWdlLT5jdXJyZW50RnJhbWVLbm93blRv
QmVPcGFxdWUocmVuZGVyZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZUNhY2hlZEltYWdlLmgKaW5kZXggYjgxYjQzYTUyNDkyYTBmNTNlZTRiNzlhYTJk
ZWEyODk4YzJlODJhYS4uYzU5ZDQ2MDI5ZmY0OWYxZGFhN2JhOGM0M2Q0MzJjMjg0ZDRhZmU5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1h
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFn
ZS5oCkBAIC0zMiwzNCArMzIsMzUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNo
ZWRJbWFnZTsKIAotY2xhc3MgU3R5bGVDYWNoZWRJbWFnZSA6IHB1YmxpYyBTdHlsZUltYWdlLCBw
cml2YXRlIENhY2hlZEltYWdlQ2xpZW50IHsKK2NsYXNzIFN0eWxlQ2FjaGVkSW1hZ2UgRklOQUwg
OiBwdWJsaWMgU3R5bGVJbWFnZSwgcHJpdmF0ZSBDYWNoZWRJbWFnZUNsaWVudCB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5
bGVDYWNoZWRJbWFnZT4gY3JlYXRlKENhY2hlZEltYWdlKiBpbWFnZSkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFN0eWxlQ2FjaGVkSW1hZ2UoaW1hZ2UpKTsgfQogICAgIHZpcnR1YWwgflN0eWxlQ2Fj
aGVkSW1hZ2UoKTsKIAotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2ltYWdlLmdldCgpOyB9Ci0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IGNzc1ZhbHVlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGNhblJlbmRlcihj
b25zdCBSZW5kZXJPYmplY3QqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZXJyb3JPY2N1cnJlZCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyT2Jq
ZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhh
c1JlbGF0aXZlSGVpZ2h0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlck9iamVjdCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgs
IExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0OwotICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgSW50U2l6ZSYsIGZsb2F0KTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRl
ck9iamVjdCopOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0Kik7
Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdlPiBpbWFnZShSZW5kZXJPYmplY3QqLCBjb25z
dCBJbnRTaXplJikgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25z
dCBSZW5kZXJPYmplY3QqKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIENhY2hlZEltYWdl
KiBjYWNoZWRJbWFnZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0K
LSAgICAKKwogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBTdHlsZUNhY2hlZEltYWdlKENhY2hlZElt
YWdlKik7CisgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1faW1hZ2UuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gY3NzVmFsdWUoKSBjb25zdCBPVkVSUklERTsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
Y2FuUmVuZGVyKGNvbnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0IE9W
RVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBlcnJvck9jY3VycmVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiwgZmxvYXQgbXVsdGlw
bGllcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVX
aWR0aCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZl
SGVpZ2h0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5z
aWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRo
LCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNv
bnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxvYXQpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyRWxlbWVudCopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNp
emUmKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNv
bnN0IFJlbmRlckVsZW1lbnQqKSBjb25zdCBPVkVSUklERTsKKworICAgIGV4cGxpY2l0IFN0eWxl
Q2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKTsKKwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEltYWdlPiBtX2ltYWdlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQuY3BwCmluZGV4IGY0ZjJmOGIzMDA1YjAz
ZjAzMThjY2JjOTQyNDRhNTQxOTMyNzFiZjMuLmY5NWIyYzk0MGQwYTA4MTM1NzdlM2Q2MjczOWUx
Nzg0OTE0NTdhYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUNhY2hlZEltYWdlU2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvU3R5bGVDYWNoZWRJbWFnZVNldC5jcHAKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUg
IkNTU0ltYWdlU2V0VmFsdWUuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC02OSw3ICs2OSw3IEBAIGJvb2wgU3R5bGVDYWNoZWRJbWFnZVNldDo6
ZXJyb3JPY2N1cnJlZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5lcnJvck9j
Y3VycmVkKCk7CiB9CiAKLUxheW91dFNpemUgU3R5bGVDYWNoZWRJbWFnZVNldDo6aW1hZ2VTaXpl
KGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CitM
YXlvdXRTaXplIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QKIHsKICAgICBMYXlvdXRTaXpl
IHNjYWxlZEltYWdlU2l6ZSA9IG1fYmVzdEZpdEltYWdlLT5pbWFnZVNpemVGb3JSZW5kZXJlcihy
ZW5kZXJlciwgbXVsdGlwbGllcik7CiAgICAgc2NhbGVkSW1hZ2VTaXplLnNjYWxlKDEgLyBtX2lt
YWdlU2NhbGVGYWN0b3IpOwpAQCAtODYsNyArODYsNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2VT
ZXQ6OmltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdAogICAgIHJldHVybiBtX2Jlc3RGaXRJ
bWFnZS0+aW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1h
Z2VTZXQ6OmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRlck9iamVjdCosIExl
bmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUm
IGludHJpbnNpY1JhdGlvKQordm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0Ojpjb21wdXRlSW50cmlu
c2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJFbGVtZW50KiwgTGVuZ3RoJiBpbnRyaW5zaWNXaWR0
aCwgTGVuZ3RoJiBpbnRyaW5zaWNIZWlnaHQsIEZsb2F0U2l6ZSYgaW50cmluc2ljUmF0aW8pCiB7
CiAgICAgbV9iZXN0Rml0SW1hZ2UtPmNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGludHJpbnNp
Y1dpZHRoLCBpbnRyaW5zaWNIZWlnaHQsIGludHJpbnNpY1JhdGlvKTsKIH0KQEAgLTk2LDI3ICs5
NiwyNyBAQCBib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnVzZXNJbWFnZUNvbnRhaW5lclNpemUo
KSBjb25zdAogICAgIHJldHVybiBtX2Jlc3RGaXRJbWFnZS0+dXNlc0ltYWdlQ29udGFpbmVyU2l6
ZSgpOwogfQogCi12b2lkIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6OnNldENvbnRhaW5lclNpemVGb3JS
ZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBpbWFn
ZUNvbnRhaW5lclNpemUsIGZsb2F0IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKK3ZvaWQgU3R5
bGVDYWNoZWRJbWFnZVNldDo6c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBpbWFnZUNvbnRhaW5lclNpemUsIGZs
b2F0IGltYWdlQ29udGFpbmVyWm9vbUZhY3RvcikKIHsKICAgICBtX2Jlc3RGaXRJbWFnZS0+c2V0
Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKHJlbmRlcmVyLCBpbWFnZUNvbnRhaW5lclNpemUsIGlt
YWdlQ29udGFpbmVyWm9vbUZhY3Rvcik7CiB9CiAKLXZvaWQgU3R5bGVDYWNoZWRJbWFnZVNldDo6
YWRkQ2xpZW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit2b2lkIFN0eWxlQ2FjaGVkSW1hZ2VT
ZXQ6OmFkZENsaWVudChSZW5kZXJFbGVtZW50KiByZW5kZXJlcikKIHsKICAgICBtX2Jlc3RGaXRJ
bWFnZS0+YWRkQ2xpZW50KHJlbmRlcmVyKTsKIH0KIAotdm9pZCBTdHlsZUNhY2hlZEltYWdlU2V0
OjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3ZvaWQgU3R5bGVDYWNoZWRJ
bWFnZVNldDo6cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKQogewogICAgIG1f
YmVzdEZpdEltYWdlLT5yZW1vdmVDbGllbnQocmVuZGVyZXIpOwogfQogCi1QYXNzUmVmUHRyPElt
YWdlPiBTdHlsZUNhY2hlZEltYWdlU2V0OjppbWFnZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBj
b25zdCBJbnRTaXplJikgY29uc3QKK1Bhc3NSZWZQdHI8SW1hZ2U+IFN0eWxlQ2FjaGVkSW1hZ2VT
ZXQ6OmltYWdlKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJikgY29uc3QK
IHsKICAgICByZXR1cm4gbV9iZXN0Rml0SW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIocmVuZGVyZXIp
OwogfQogCi1ib29sIFN0eWxlQ2FjaGVkSW1hZ2VTZXQ6Omtub3duVG9CZU9wYXF1ZShjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKSBjb25zdAorYm9vbCBTdHlsZUNhY2hlZEltYWdlU2V0Ojpr
bm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fYmVzdEZpdEltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUocmVu
ZGVyZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlQ2FjaGVkSW1hZ2VTZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUNhY2hlZEltYWdlU2V0LmgKaW5kZXggMjFiMGUwY2FiMDZhODU1MmI0OWVmNDMxZThkYzVmZGE5
Y2I2NmU5NC4uNTY2NjUwNzI3NmUxOTJmM2NiYTI1YzE2NjI2MTZlZDY0YTQ1N2U4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ2FjaGVkSW1hZ2VTZXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDYWNoZWRJbWFnZVNl
dC5oCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIENTU0ltYWdlU2V0VmFsdWU7CiAKIC8vIFRoaXMg
Y2xhc3Mga2VlcHMgb25lIGNhY2hlZCBpbWFnZSBhbmQgaGFzIGFjY2VzcyB0byBhIHNldCBvZiBh
bHRlcm5hdGl2ZXMuCiAKLWNsYXNzIFN0eWxlQ2FjaGVkSW1hZ2VTZXQgOiBwdWJsaWMgU3R5bGVJ
bWFnZSwgcHJpdmF0ZSBDYWNoZWRJbWFnZUNsaWVudCB7CitjbGFzcyBTdHlsZUNhY2hlZEltYWdl
U2V0IEZJTkFMIDogcHVibGljIFN0eWxlSW1hZ2UsIHByaXZhdGUgQ2FjaGVkSW1hZ2VDbGllbnQg
ewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFN0eWxlQ2FjaGVkSW1hZ2VTZXQ+IGNyZWF0ZShDYWNoZWRJbWFnZSogaW1hZ2UsIGZs
b2F0IGltYWdlU2NhbGVGYWN0b3IsIENTU0ltYWdlU2V0VmFsdWUqIHZhbHVlKQpAQCAtNDksMzIg
KzQ5LDMzIEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+U3R5bGVDYWNoZWRJbWFnZVNl
dCgpOwogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0
OworICAgIHZpcnR1YWwgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9iZXN0Rml0SW1hZ2UuZ2V0KCk7IH0KKworICAgIHZvaWQgY2xlYXJJbWFnZVNl
dFZhbHVlKCkgeyBtX2ltYWdlU2V0VmFsdWUgPSBudWxscHRyOyB9CisKK3ByaXZhdGU6CisgICAg
dmlydHVhbCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBjc3NWYWx1ZSgpIGNvbnN0IE9WRVJSSURFOwog
Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgdXNlZCBieSBTdHlsZUltYWdlIGZvciBlcXVhbHMgY29t
cGFyaXNvbiwgYnV0IHRoaXMgaW1wbGVtZW50YXRpb24KKyAgICAvLyBGSVhNRTogVGhpcyBpcyB1
c2VkIGJ5IFN0eWxlSW1hZ2UgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb24sIGJ1dCB0aGlzIGltcGxl
bWVudGF0aW9uCiAgICAgLy8gb25seSBsb29rcyBhdCB0aGUgaW1hZ2UgZnJvbSB0aGUgc2V0IHRo
YXQgd2UgaGF2ZSBsb2FkZWQuIEknbSBub3Qgc3VyZSBpZiB0aGF0IGlzCiAgICAgLy8gbWVhbmlu
Z2Z1bCBlbm91Z2ggb3Igbm90LgotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBj
b25zdCB7IHJldHVybiBtX2Jlc3RGaXRJbWFnZS5nZXQoKTsgfQotCi0gICAgdm9pZCBjbGVhcklt
YWdlU2V0VmFsdWUoKSB7IG1faW1hZ2VTZXRWYWx1ZSA9IDA7IH0KLQotICAgIHZpcnR1YWwgYm9v
bCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3Q7
Ci0gICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGVy
cm9yT2NjdXJyZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXplKGNv
bnN0IFJlbmRlck9iamVjdCosIGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgaW1h
Z2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50
cmluc2ljRGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dp
ZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbyk7
Ci0gICAgdmlydHVhbCBib29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVj
dCosIGNvbnN0IEludFNpemUmLCBmbG9hdCk7Ci0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChS
ZW5kZXJPYmplY3QqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVj
dCopOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgSW50U2l6ZSYpIGNvbnN0OwotICAgIHZpcnR1YWwgZmxvYXQgaW1hZ2VTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VTY2FsZUZhY3RvcjsgfQotICAgIHZpcnR1YWwgYm9v
bCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3QgT1ZFUlJJREU7Ci0g
ICAgdmlydHVhbCBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX2Jlc3RGaXRJbWFnZS5nZXQoKTsgfQotICAgIAotcHJpdmF0ZToKKyAgICB2aXJ0dWFs
IFdyYXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9iZXN0Rml0
SW1hZ2UuZ2V0KCk7IH0KKworICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVy
T2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIGlzTG9hZGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGVycm9yT2Nj
dXJyZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VTaXpl
KGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVu
ZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVp
Z2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyRWxlbWVudCosIGNv
bnN0IEludFNpemUmLCBmbG9hdCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGFkZENsaWVu
dChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVu
dChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEltYWdl
PiBpbWFnZShSZW5kZXJFbGVtZW50KiwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgZmxvYXQgaW1hZ2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1faW1hZ2VTY2FsZUZhY3RvcjsgfQorICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFx
dWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IE9WRVJSSURFOworCiAgICAgU3R5bGVDYWNo
ZWRJbWFnZVNldChDYWNoZWRJbWFnZSosIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IsIENTU0ltYWdl
U2V0VmFsdWUqKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBtX2Jl
c3RGaXRJbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUdlbmVyYXRlZEltYWdlLmNwcAppbmRleCBiODE2MWZlZmQzZTgyYzQxOWQ1MTVkZWZlMjli
ZjQ2MWQ3NGQyNWZjLi4yNzhhODU3NzAyMWExYjIxMTg0NTAwMTRlNjNhOTlhMDJhZDYzMTUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJh
dGVkSW1hZ2UuY3BwCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5jbHVkZSAiU3R5bGVHZW5lcmF0ZWRJ
bWFnZS5oIgogCiAjaW5jbHVkZSAiQ1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZS5oIgotI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJT
dHlsZVJlc29sdmVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQyLDcgKzQyLDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3NzVmFsdWUoKSBjb25z
dAogICAgIHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWU7CiB9CiAKLUxheW91dFNpemUgU3R5
bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNvbnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIs
IGZsb2F0IG11bHRpcGxpZXIpIGNvbnN0CitMYXlvdXRTaXplIFN0eWxlR2VuZXJhdGVkSW1hZ2U6
OmltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgZmxvYXQgbXVsdGlwbGll
cikgY29uc3QKIHsKICAgICBpZiAobV9maXhlZFNpemUpIHsKICAgICAgICAgSW50U2l6ZSBmaXhl
ZFNpemUgPSBtX2ltYWdlR2VuZXJhdG9yVmFsdWUtPmZpeGVkU2l6ZShyZW5kZXJlcik7CkBAIC02
NSw3ICs2NSw3IEBAIExheW91dFNpemUgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2VTaXplKGNv
bnN0IFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGZsb2F0IG11CiAgICAgcmV0dXJuIG1fY29udGFp
bmVyU2l6ZTsKIH0KIAotdm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpjb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBMZW5ndGgmIGludHJpbnNp
Y1dpZHRoLCBMZW5ndGgmIGludHJpbnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRp
bykKK3ZvaWQgU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMo
Y29uc3QgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIsIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExl
bmd0aCYgaW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKQogewogICAg
IC8vIEF0IGEgem9vbSBsZXZlbCBvZiAxIHRoZSBpbWFnZSBpcyBndWFyYW50ZWVkIHRvIGhhdmUg
YW4gaW50ZWdlciBzaXplLgogICAgIEludFNpemUgc2l6ZSA9IGZsb29yZWRJbnRTaXplKGltYWdl
U2l6ZShyZW5kZXJlciwgMSkpOwpAQCAtNzQsMjIgKzc0LDIyIEBAIHZvaWQgU3R5bGVHZW5lcmF0
ZWRJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlCiAgICAgaW50cmluc2ljUmF0aW8gPSBzaXplOwogfQogCi12b2lkIFN0eWxlR2VuZXJh
dGVkSW1hZ2U6OmFkZENsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQordm9pZCBTdHlsZUdl
bmVyYXRlZEltYWdlOjphZGRDbGllbnQoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIpCiB7CiAgICAg
bV9pbWFnZUdlbmVyYXRvclZhbHVlLT5hZGRDbGllbnQocmVuZGVyZXIpOwogfQogCi12b2lkIFN0
eWxlR2VuZXJhdGVkSW1hZ2U6OnJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQor
dm9pZCBTdHlsZUdlbmVyYXRlZEltYWdlOjpyZW1vdmVDbGllbnQoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIpCiB7CiAgICAgbV9pbWFnZUdlbmVyYXRvclZhbHVlLT5yZW1vdmVDbGllbnQocmVuZGVy
ZXIpOwogfQogCi1QYXNzUmVmUHRyPEltYWdlPiBTdHlsZUdlbmVyYXRlZEltYWdlOjppbWFnZShS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBzaXplKSBjb25zdAorUGFzc1Jl
ZlB0cjxJbWFnZT4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6aW1hZ2UoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIsIGNvbnN0IEludFNpemUmIHNpemUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2VH
ZW5lcmF0b3JWYWx1ZS0+aW1hZ2UocmVuZGVyZXIsIHNpemUpOwogfQogCi1ib29sIFN0eWxlR2Vu
ZXJhdGVkSW1hZ2U6Omtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
KSBjb25zdAorYm9vbCBTdHlsZUdlbmVyYXRlZEltYWdlOjprbm93blRvQmVPcGFxdWUoY29uc3Qg
UmVuZGVyRWxlbWVudCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW1hZ2VHZW5l
cmF0b3JWYWx1ZS0+a25vd25Ub0JlT3BhcXVlKHJlbmRlcmVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVHZW5lcmF0ZWRJbWFnZS5oCmluZGV4IDBl
YTRmZmI1OGZiZjMxOTEwMzg0ODY3OTcwNjg5OTU5MDc2ZjZmNmEuLjA0MzEwMGMyYjg5MjJjMGIz
M2M1MTgzYmRlYTY2OGMzMWFmY2U5MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZUdlbmVyYXRlZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlR2VuZXJhdGVkSW1hZ2UuaApAQCAtMzEsMzAgKzMxLDMxIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgQ1NTSW1hZ2VHZW5lcmF0
b3JWYWx1ZTsKIAotY2xhc3MgU3R5bGVHZW5lcmF0ZWRJbWFnZSA6IHB1YmxpYyBTdHlsZUltYWdl
IHsKK2NsYXNzIFN0eWxlR2VuZXJhdGVkSW1hZ2UgRklOQUwgOiBwdWJsaWMgU3R5bGVJbWFnZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVHZW5lcmF0ZWRJbWFnZT4gY3Jl
YXRlKENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTdHlsZUdlbmVyYXRlZEltYWdlKHZhbHVlKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VHZW5l
cmF0b3JWYWx1ZS5nZXQoKTsgfQogICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIGltYWdlVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2ltYWdlR2VuZXJhdG9yVmFsdWUuZ2V0KCk7IH0KIAotICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdDsKLQotICAgIHZp
cnR1YWwgTGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVs
dGlwbGllcikgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRp
dmVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQotICAgIHZpcnR1YWwgYm9v
bCBpbWFnZUhhc1JlbGF0aXZlSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gIW1fZml4ZWRTaXplOyB9
Ci0gICAgdmlydHVhbCB2b2lkIGNvbXB1dGVJbnRyaW5zaWNEaW1lbnNpb25zKGNvbnN0IFJlbmRl
ck9iamVjdCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0
LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKTsKLSAgICB2aXJ0dWFsIGJvb2wgdXNlc0ltYWdl
Q29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuICFtX2ZpeGVkU2l6ZTsgfQotICAgIHZpcnR1
YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSwgZmxvYXQpIHsgbV9jb250YWluZXJTaXplID0g
Y29udGFpbmVyU2l6ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2JqZWN0
Kik7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqKTsKLSAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlck9iamVjdCosIGNvbnN0IEludFNp
emUmKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wga25vd25Ub0JlT3BhcXVlKGNvbnN0IFJlbmRl
ck9iamVjdCopIGNvbnN0IE9WRVJSSURFOwotICAgIAogcHJpdmF0ZToKKyAgICB2aXJ0dWFsIFdy
YXBwZWRJbWFnZVB0ciBkYXRhKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9pbWFnZUdlbmVy
YXRvclZhbHVlLmdldCgpOyB9CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNz
c1ZhbHVlKCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICB2aXJ0dWFsIExheW91dFNpemUgaW1hZ2VT
aXplKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBmbG9hdCBtdWx0aXBsaWVyKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZVdpZHRoKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gIW1fZml4ZWRTaXplOyB9CisgICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVs
YXRpdmVIZWlnaHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAhbV9maXhlZFNpemU7IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxl
bWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYgaW50cmluc2ljSGVpZ2h0LCBG
bG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgdXNl
c0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICFtX2ZpeGVkU2l6
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmIGNvbnRhaW5lclNpemUsIGZsb2F0KSBPVkVS
UklERSB7IG1fY29udGFpbmVyU2l6ZSA9IGNvbnRhaW5lclNpemU7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ2xpZW50KFJlbmRlckVsZW1lbnQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJikgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJF
bGVtZW50KikgY29uc3QgT1ZFUlJJREU7CisKICAgICBTdHlsZUdlbmVyYXRlZEltYWdlKFBhc3NS
ZWZQdHI8Q1NTSW1hZ2VHZW5lcmF0b3JWYWx1ZT4pOwogICAgIAogICAgIFJlZlB0cjxDU1NJbWFn
ZUdlbmVyYXRvclZhbHVlPiBtX2ltYWdlR2VuZXJhdG9yVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFnZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1N0eWxlSW1hZ2UuaAppbmRleCA3MGYzMzYwODgzOGQ2YzQxZTcxMjAy
MDY3YzRmNzhlMThiZjIxNzFmLi5jM2NkMTNhZTBiODdlYWMzN2I2NDNiZjI1ZTMwN2QyYTNjNmQx
YzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVJbWFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUltYWdlLmgKQEAg
LTM2LDYgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDYWNoZWRJbWFnZTsK
IGNsYXNzIENTU1ZhbHVlOworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlck9iamVj
dDsKIAogdHlwZWRlZiB2b2lkKiBXcmFwcGVkSW1hZ2VQdHI7CkBAIC01NCwxOCArNTUsMTggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5SZW5kZXIoY29uc3QgUmVuZGVyT2JqZWN0Kiwg
ZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgaXNMb2FkZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29s
IGVycm9yT2NjdXJyZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgTGF5
b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyT2JqZWN0KiwgZmxvYXQgbXVsdGlwbGllcikg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2ljRGltZW5zaW9ucyhj
b25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIGludHJpbnNpY1dpZHRoLCBMZW5ndGgmIGludHJp
bnNpY0hlaWdodCwgRmxvYXRTaXplJiBpbnRyaW5zaWNSYXRpbykgPSAwOworICAgIHZpcnR1YWwg
TGF5b3V0U2l6ZSBpbWFnZVNpemUoY29uc3QgUmVuZGVyRWxlbWVudCosIGZsb2F0IG11bHRpcGxp
ZXIpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lv
bnMoY29uc3QgUmVuZGVyRWxlbWVudCosIExlbmd0aCYgaW50cmluc2ljV2lkdGgsIExlbmd0aCYg
aW50cmluc2ljSGVpZ2h0LCBGbG9hdFNpemUmIGludHJpbnNpY1JhdGlvKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgaW1hZ2VIYXNSZWxhdGl2ZUhlaWdodCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJv
b2wgdXNlc0ltYWdlQ29udGFpbmVyU2l6ZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29udGFpbmVyU2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IElu
dFNpemUmLCBmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRDbGllbnQoUmVuZGVyT2Jq
ZWN0KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0Kikg
PSAwOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0Kiwg
Y29uc3QgSW50U2l6ZSYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVy
U2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQqLCBjb25zdCBJbnRTaXplJiwgZmxv
YXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFJlbmRlckVsZW1lbnQqKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KikgPSAwOworICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyRWxlbWVudCosIGNvbnN0IElu
dFNpemUmKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBXcmFwcGVkSW1hZ2VQdHIgZGF0YSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIGZsb2F0IGltYWdlU2NhbGVGYWN0b3IoKSBjb25zdCB7IHJl
dHVybiAxOyB9Ci0gICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25zdCBSZW5kZXJP
YmplY3QqKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGtub3duVG9CZU9wYXF1ZShjb25z
dCBSZW5kZXJFbGVtZW50KikgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgQ2FjaGVkSW1hZ2UqIGNh
Y2hlZEltYWdlKCkgY29uc3QgeyByZXR1cm4gMDsgfQogCiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzQ2FjaGVkSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX2lzQ2FjaGVkSW1hZ2U7IH0KQEAgLTcz
LDE0ICs3NCw5IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZW5lcmF0ZWRJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNHZW5lcmF0ZWRJbWFnZTsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc0NhY2hlZEltYWdlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9pc0NhY2hlZElt
YWdlU2V0OyB9CiAgICAgCi0gICAgc3RhdGljICBib29sIGltYWdlc0VxdWl2YWxlbnQoU3R5bGVJ
bWFnZSogaW1hZ2UxLCBTdHlsZUltYWdlKiBpbWFnZTIpCisgICAgc3RhdGljIGJvb2wgaW1hZ2Vz
RXF1aXZhbGVudChTdHlsZUltYWdlKiBpbWFnZTEsIFN0eWxlSW1hZ2UqIGltYWdlMikKICAgICB7
Ci0gICAgICAgIGlmIChpbWFnZTEgIT0gaW1hZ2UyKSB7Ci0gICAgICAgICAgICBpZiAoIWltYWdl
MSB8fCAhaW1hZ2UyKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IHJldHVybiAqaW1hZ2UxID09ICppbWFnZTI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBpbWFnZTEgPT0gaW1hZ2UyIHx8IChpbWFnZTEgJiYgaW1hZ2Uy
ICYmICppbWFnZTEgPT0gKmltYWdlMik7CiAgICAgfQogCiBwcm90ZWN0ZWQ6CkBAIC05MSwxMCAr
ODcsMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICAsIG1faXNDYWNoZWRJbWFnZVNldChmYWxzZSkK
ICAgICB7CiAgICAgfQotICAgIGJvb2wgbV9pc0NhY2hlZEltYWdlOjE7Ci0gICAgYm9vbCBtX2lz
UGVuZGluZ0ltYWdlOjE7Ci0gICAgYm9vbCBtX2lzR2VuZXJhdGVkSW1hZ2U6MTsKLSAgICBib29s
IG1faXNDYWNoZWRJbWFnZVNldDoxOworICAgIGJvb2wgbV9pc0NhY2hlZEltYWdlIDogMTsKKyAg
ICBib29sIG1faXNQZW5kaW5nSW1hZ2UgOiAxOworICAgIGJvb2wgbV9pc0dlbmVyYXRlZEltYWdl
IDogMTsKKyAgICBib29sIG1faXNDYWNoZWRJbWFnZVNldCA6IDE7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVQZW5kaW5nSW1hZ2UuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCmluZGV4
IDEyODI3YzZhMTUyZWM4NjQ1MGE5OTk3ZjU4NjYzYjk0YzNlMWE4MTAuLjQzNmFiY2Y1MDI1YWE1
NTRhNzY5NGYzNzk0N2VhZGE5ZDQ1ZDY4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVBlbmRpbmdJbWFnZS5oCkBAIC0yOCwxMyArMjgsMTQgQEAKIAog
I2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVy
YXRvclZhbHVlLmgiCi0jaWYgRU5BQkxFKENTU19JTUFHRV9TRVQpCi0jaW5jbHVkZSAiQ1NTSW1h
Z2VTZXRWYWx1ZS5oIgotI2VuZGlmCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVJbWFnZS5oIgogCisjaWYgRU5BQkxFKENTU19J
TUFHRV9TRVQpCisjaW5jbHVkZSAiQ1NTSW1hZ2VTZXRWYWx1ZS5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gU3R5bGVQZW5kaW5nSW1hZ2UgaXMgYSBwbGFjZWhvbGRlciBT
dHlsZUltYWdlIHRoYXQgaXMgZW50ZXJlZCBpbnRvIHRoZSBSZW5kZXJTdHlsZSBkdXJpbmcKQEAg
LTQ1LDMyICs0NiwzNSBAQCBjbGFzcyBTdHlsZVBlbmRpbmdJbWFnZSA6IHB1YmxpYyBTdHlsZUlt
YWdlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVBlbmRpbmdJbWFnZT4g
Y3JlYXRlKENTU1ZhbHVlKiB2YWx1ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlUGVuZGlu
Z0ltYWdlKHZhbHVlKSk7IH0KIAotICAgIHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBj
b25zdCB7IHJldHVybiB0b0NTU0ltYWdlVmFsdWUobV92YWx1ZSk7IH0KLQotICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gY3NzVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9
Ci0gICAgQ1NTSW1hZ2VWYWx1ZSogY3NzSW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFs
dWUtPmlzSW1hZ2VWYWx1ZSgpID8gdG9DU1NJbWFnZVZhbHVlKG1fdmFsdWUpIDogMDsgfQotICAg
IENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIGNzc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX3ZhbHVlLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUoKSA/IHN0YXRpY19jYXN0PENT
U0ltYWdlR2VuZXJhdG9yVmFsdWUqPihtX3ZhbHVlKSA6IDA7IH0KLSAgICBDU1NDdXJzb3JJbWFn
ZVZhbHVlKiBjc3NDdXJzb3JJbWFnZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZS0+aXND
dXJzb3JJbWFnZVZhbHVlKCkgPyBzdGF0aWNfY2FzdDxDU1NDdXJzb3JJbWFnZVZhbHVlKj4obV92
YWx1ZSkgOiAwOyB9CisgICAgQ1NTSW1hZ2VWYWx1ZSogY3NzSW1hZ2VWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUtPmlzSW1hZ2VWYWx1ZSgpID8gdG9DU1NJbWFnZVZhbHVlKG1fdmFsdWUp
IDogbnVsbHB0cjsgfQorICAgIENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqIGNzc0ltYWdlR2VuZXJh
dG9yVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLT5pc0ltYWdlR2VuZXJhdG9yVmFsdWUo
KSA/IHN0YXRpY19jYXN0PENTU0ltYWdlR2VuZXJhdG9yVmFsdWUqPihtX3ZhbHVlKSA6IG51bGxw
dHI7IH0KKyAgICBDU1NDdXJzb3JJbWFnZVZhbHVlKiBjc3NDdXJzb3JJbWFnZVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZS0+aXNDdXJzb3JJbWFnZVZhbHVlKCkgPyBzdGF0aWNfY2FzdDxD
U1NDdXJzb3JJbWFnZVZhbHVlKj4obV92YWx1ZSkgOiBudWxscHRyOyB9CiAjaWYgRU5BQkxFKENT
U19JTUFHRV9TRVQpCi0gICAgQ1NTSW1hZ2VTZXRWYWx1ZSogY3NzSW1hZ2VTZXRWYWx1ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdmFsdWUtPmlzSW1hZ2VTZXRWYWx1ZSgpID8gdG9DU1NJbWFnZVNldFZh
bHVlKG1fdmFsdWUpIDogMDsgfQorICAgIENTU0ltYWdlU2V0VmFsdWUqIGNzc0ltYWdlU2V0VmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlLT5pc0ltYWdlU2V0VmFsdWUoKSA/IHRvQ1NTSW1h
Z2VTZXRWYWx1ZShtX3ZhbHVlKSA6IG51bGxwdHI7IH0KICNlbmRpZgorCitwcml2YXRlOgorICAg
IHZpcnR1YWwgV3JhcHBlZEltYWdlUHRyIGRhdGEoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
b0NTU0ltYWdlVmFsdWUobV92YWx1ZSk7IH0KKworICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gY3NzVmFsdWUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3ZhbHVlOyB9CiAgICAg
Ci0gICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJPYmplY3QqLCBm
bG9hdCAvKm11bHRpcGxpZXIqLykgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gTGF5b3V0U2l6ZSgp
OyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIGltYWdlSGFzUmVsYXRpdmVIZWlnaHQoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlSW50cmluc2lj
RGltZW5zaW9ucyhjb25zdCBSZW5kZXJPYmplY3QqLCBMZW5ndGgmIC8qIGludHJpbnNpY1dpZHRo
ICovICwgTGVuZ3RoJiAvKiBpbnRyaW5zaWNIZWlnaHQgKi8sIEZsb2F0U2l6ZSYgLyogaW50cmlu
c2ljUmF0aW8gKi8pIHsgfQotICAgIHZpcnR1YWwgYm9vbCB1c2VzSW1hZ2VDb250YWluZXJTaXpl
KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGFpbmVy
U2l6ZUZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCosIGNvbnN0IEludFNpemUmLCBmbG9h
dCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJPYmplY3QqKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50KFJlbmRlck9iamVjdCopIHsgfQotICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxJbWFnZT4gaW1hZ2UoUmVuZGVyT2JqZWN0KiwgY29uc3QgSW50U2l6ZSYp
IGNvbnN0CisgICAgdmlydHVhbCBMYXlvdXRTaXplIGltYWdlU2l6ZShjb25zdCBSZW5kZXJFbGVt
ZW50KiwgZmxvYXQgLyptdWx0aXBsaWVyKi8pIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIExheW91
dFNpemUoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1JlbGF0aXZlV2lkdGgoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpbWFnZUhhc1Jl
bGF0aXZlSGVpZ2h0KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgY29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbnMoY29uc3QgUmVuZGVyRWxlbWVudCos
IExlbmd0aCYgLyogaW50cmluc2ljV2lkdGggKi8gLCBMZW5ndGgmIC8qIGludHJpbnNpY0hlaWdo
dCAqLywgRmxvYXRTaXplJiAvKiBpbnRyaW5zaWNSYXRpbyAqLykgeyB9CisgICAgdmlydHVhbCBi
b29sIHVzZXNJbWFnZUNvbnRhaW5lclNpemUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRDb250YWluZXJTaXplRm9yUmVuZGVyZXIoY29uc3Qg
UmVuZGVyRWxlbWVudCosIGNvbnN0IEludFNpemUmLCBmbG9hdCkgT1ZFUlJJREUgeyB9CisgICAg
dmlydHVhbCB2b2lkIGFkZENsaWVudChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREUgeyB9CisgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudChSZW5kZXJFbGVtZW50KikgT1ZFUlJJREUgeyB9CisK
KyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SW1hZ2U+IGltYWdlKFJlbmRlckVsZW1lbnQqLCBjb25z
dCBJbnRTaXplJikgY29uc3QgT1ZFUlJJREUKICAgICB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQotICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFxdWUoY29uc3QgUmVuZGVyT2JqZWN0Kikg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgYm9vbCBrbm93blRvQmVPcGFx
dWUoY29uc3QgUmVuZGVyRWxlbWVudCopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9
CiAgICAgCi1wcml2YXRlOgogICAgIFN0eWxlUGVuZGluZ0ltYWdlKENTU1ZhbHVlKiB2YWx1ZSkK
ICAgICAgICAgOiBtX3ZhbHVlKHZhbHVlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlUmVzb2x2ZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVSZXNvbHZlVHJlZS5jcHAKaW5kZXggNWMzNzAxMTQxN2Q2YTAyNjIyZDM5M2YyYzYzZjkxYTIy
MjFlZDU5NS4uYmJiODhjMmNiMTJkMjI1NjIwOWE2YjM0ZDAzNWY4ODk2OWNiNjdlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVSZXNvbHZlVHJlZS5jcHAKQEAgLTIyNyw3ICsyMjcsNyBA
QCBzdGF0aWMgdm9pZCBjcmVhdGVSZW5kZXJlcklmTmVlZGVkKEVsZW1lbnQmIGVsZW1lbnQsIFJl
bmRlclN0eWxlKiByZXNvbHZlZFN0eWxlKQogICAgICAgICBuZXh0UmVuZGVyZXIgPSBwYXJlbnRG
bG93UmVuZGVyZXItPm5leHRSZW5kZXJlckZvck5vZGUoJmVsZW1lbnQpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoaXMgcGF0aCBFbGVtZW50IG9ubHksIGhhbmRsZSB0
aGUgcm9vdCBzcGVjaWFsIGNhc2Ugc2VwYXJhdGVseS4KLSAgICAgICAgcGFyZW50UmVuZGVyZXIg
PSB0b1JlbmRlckVsZW1lbnQocmVuZGVyaW5nUGFyZW50Tm9kZS0+cmVuZGVyZXIoKSk7CisgICAg
ICAgIHBhcmVudFJlbmRlcmVyID0gcmVuZGVyaW5nUGFyZW50Tm9kZS0+cmVuZGVyZXIoKTsKICAg
ICAgICAgbmV4dFJlbmRlcmVyID0gbmV4dFNpYmxpbmdSZW5kZXJlcihlbGVtZW50LCByZW5kZXJp
bmdQYXJlbnROb2RlKTsKICAgICB9CiAKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVUZXh0UmVuZGVyZXJJZk5lZWRlZChUZXh0JiB0ZXh0Tm9kZSkKICAgICBDb250YWluZXJO
b2RlKiByZW5kZXJpbmdQYXJlbnROb2RlID0gTm9kZVJlbmRlcmluZ1RyYXZlcnNhbDo6cGFyZW50
KCZ0ZXh0Tm9kZSk7CiAgICAgaWYgKCFyZW5kZXJpbmdQYXJlbnROb2RlKQogICAgICAgICByZXR1
cm47Ci0gICAgUmVuZGVyRWxlbWVudCogcGFyZW50UmVuZGVyZXIgPSB0b1JlbmRlckVsZW1lbnQo
cmVuZGVyaW5nUGFyZW50Tm9kZS0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyRWxlbWVudCogcGFy
ZW50UmVuZGVyZXIgPSByZW5kZXJpbmdQYXJlbnROb2RlLT5yZW5kZXJlcigpOwogICAgIGlmICgh
cGFyZW50UmVuZGVyZXIgfHwgIXBhcmVudFJlbmRlcmVyLT5jYW5IYXZlQ2hpbGRyZW4oKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghcmVuZGVyaW5nUGFyZW50Tm9kZS0+Y2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcigmdGV4dE5vZGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CmluZGV4IDRlOTA2MjM0ZTZmMzlmYmVjNDY2NjVjNmQ4ZGFmNTA2MjBiNDcwMWUuLjg5NWEyNjMw
NzBhZWE1MGMyMzYzNzQ5ZTU2YjEwN2MwMTkxNTI3ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAKQEAgLTc3LDcgKzc3LDYgQEAKICNpbmNsdWRlICJSYW5nZS5oIgogI2luY2x1
ZGUgIlJlbmRlckVtYmVkZGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyTWVudUxpc3QuaCIK
LSNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXMuaCIKQEAgLTY5MCw3ICs2ODksNyBAQCBQYXNzUmVmUHRyPENsaWVudFJlY3Q+IEludGVybmFs
czo6Ym91bmRpbmdCb3goRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZQogICAgIH0K
IAogICAgIGVsZW1lbnQtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVy
KCk7CisgICAgYXV0byByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFy
ZW5kZXJlcikKICAgICAgICAgcmV0dXJuIENsaWVudFJlY3Q6OmNyZWF0ZSgpOwogICAgIHJldHVy
biBDbGllbnRSZWN0OjpjcmVhdGUocmVuZGVyZXItPmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdu
b3JpbmdUcmFuc2Zvcm1zKCkpOwpAQCAtMjAwMiw3ICsyMDAxLDcgQEAgYm9vbCBJbnRlcm5hbHM6
OmlzU2VsZWN0UG9wdXBWaXNpYmxlKE5vZGUqIG5vZGUpCiAKICAgICBIVE1MU2VsZWN0RWxlbWVu
dCogc2VsZWN0ID0gdG9IVE1MU2VsZWN0RWxlbWVudChub2RlKTsKIAotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzZWxlY3QtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IHNl
bGVjdC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyLT5pc01lbnVMaXN0KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjEyNCw3ICsyMTIzLDcgQEAgYm9vbCBJbnRlcm5hbHM6
OmlzUGx1Z2luVW5hdmFpbGFiaWxpdHlJbmRpY2F0b3JPYnNjdXJlZChFbGVtZW50KiBlbGVtZW50
LCBFeGNlcHQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgIGF1dG8gcmVuZGVyZXIgPSBl
bGVtZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0Vt
YmVkZGVkT2JqZWN0KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsK
</data>
<flag name="review"
          id="235216"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>