<?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>208698</bug_id>
          
          <creation_ts>2020-03-05 22:35:41 -0800</creation_ts>
          <short_desc>Some PDFPlugin cleanup in prep for incremental loading</short_desc>
          <delta_ts>2020-03-06 17:46:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1626524</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-05 22:35:41 -0800</bug_when>
    <thetext>Some PDFPlugin cleanup in prep for incremental loading

The frame is never cleared, so make it a reference.
Use a new &quot;number of streamed bytes&quot; variable instead of grabbing m_data&apos;s length, as m_data will soon become a &quot;sparse&quot; data buffer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626526</commentid>
    <comment_count>1</comment_count>
      <attachid>392681</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-05 22:38:47 -0800</bug_when>
    <thetext>Created attachment 392681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626651</commentid>
    <comment_count>2</comment_count>
      <attachid>392719</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-06 07:36:49 -0800</bug_when>
    <thetext>Created attachment 392719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626880</commentid>
    <comment_count>3</comment_count>
      <attachid>392719</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-06 14:45:11 -0800</bug_when>
    <thetext>Comment on attachment 392719
Patch

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

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h:275
&gt; +    WebFrame&amp; m_frame;

Should we use a WeakPtr instead?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1347
&gt; +    if (FrameView* frameView = m_frame.coreFrame()-&gt;view())

auto?

&gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1854
&gt; +    Frame* frame = m_frame.coreFrame();

auto?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626902</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-06 15:17:33 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 392719 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392719&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.h:275
&gt; &gt; +    WebFrame&amp; m_frame;
&gt; 
&gt; Should we use a WeakPtr instead?

As this is no behavior change and we have no reason to believe it&apos;s currently a problem, not right now.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1347
&gt; &gt; +    if (FrameView* frameView = m_frame.coreFrame()-&gt;view())
&gt; 
&gt; auto?
&gt; 
&gt; &gt; Source/WebKit/WebProcess/Plugins/PDF/PDFPlugin.mm:1854
&gt; &gt; +    Frame* frame = m_frame.coreFrame();
&gt; 
&gt; auto?

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1626906</commentid>
    <comment_count>5</comment_count>
      <attachid>392786</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-03-06 15:21:50 -0800</bug_when>
    <thetext>Created attachment 392786
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627034</commentid>
    <comment_count>6</comment_count>
      <attachid>392786</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-06 17:45:01 -0800</bug_when>
    <thetext>Comment on attachment 392786
PFL

Clearing flags on attachment: 392786

Committed r258043: &lt;https://trac.webkit.org/changeset/258043&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627035</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-06 17:45:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1627036</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-06 17:46:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/60178033&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392681</attachid>
            <date>2020-03-05 22:38:47 -0800</date>
            <delta_ts>2020-03-06 07:36:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>18207</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMTQzZWI5NzQ3NzAuLmY4YzcxYTQ5ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDIwLTAzLTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTb21lIFBERlBsdWdpbiBjbGVhbnVwIGluIHByZXAgZm9yIGluY3JlbWVudGFsIGxv
YWRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IFRoZSBmcmFtZSBpcyBuZXZlciBjbGVhcmVkLCBzbyBtYWtlIGl0IGEgcmVmZXJlbmNlLgorICAg
ICAgICAtIFVzZSBhIG5ldyAibnVtYmVyIG9mIHN0cmVhbWVkIGJ5dGVzIiB2YXJpYWJsZSBpbnN0
ZWFkIG9mIGdyYWJiaW5nIG1fZGF0YSdzIGxlbmd0aCwgCisgICAgICAgICAgYXMgbV9kYXRhIHdp
bGwgc29vbiBiZWNvbWUgYSAic3BhcnNlIiBkYXRhIGJ1ZmZlcgorCisgICAgICAgIFJlZmFjdG9y
IG9ubHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OnVuY29uZGl0aW9uYWxDb21wbGV0ZVJhbmdlUmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6Z2V0UmVzb3VyY2VCeXRlc0F0UG9zaXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQREZQbHVnaW46OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6aXNBY3RpdmUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmZvcmNlVXBk
YXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZyBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6anNQREZEb2NQcmludCk6CisgICAgICAgIChXZWJL
aXQ6OlBERlBsdWdpbjo6aW5zdGFsbFBERkRvY3VtZW50KToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6bWFudWFsU3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OnVwZGF0ZVBhZ2VBbmREZXZpY2VTY2FsZUZhY3RvcnMpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46OndpbGxEZXRhY2hSZW5kZXJlcik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6ZGVzdHJveSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cGFpbnRDb250cm9sRm9y
TGF5ZXJJbkNvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNvbnZlcnRGcm9t
UERGVmlld1RvU2NyZWVuIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpib3Vu
ZHNPblNjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6c2hvd0NvbnRl
eHRNZW51QXRQb2ludCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aGFuZGxlQ29udGV4
dE1lbnVFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVn
aW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmhhbmRsZXNQYWdlU2NhbGVG
YWN0b3IgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToK
KyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzYXZlVG9QREYpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZyk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBERlBsdWdpbjo6bm90aWZ5Q3Vyc29yQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6YXhPYmplY3RDYWNoZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBs
dWdpbjo6cGVyZm9ybVdlYlNlYXJjaCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6cGVy
Zm9ybVNwb3RsaWdodFNlYXJjaCk6CisKIDIwMjAtMDMtMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRz
b25AYXBwbGUuY29tPgogCiAgICAgICAgIFByZS1mZXRjaCBmaXJzdCBwYWdlIGluIG5ldyBQREYg
bG9hZGluZyBtb2RlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvUERGUGx1Z2luLm1tCmluZGV4IDE4NGYyZTZlODRiLi5kMTM0NDY2NWFiZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC01
NzksNyArNTc5LDcgQEAgUmVmPFBERlBsdWdpbj4gUERGUGx1Z2luOjpjcmVhdGUoV2ViRnJhbWUm
IGZyYW1lKQogCiBpbmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyYW1lKQog
ICAgIDogUGx1Z2luKFBERlBsdWdpblR5cGUpCi0gICAgLCBtX2ZyYW1lKCZmcmFtZSkKKyAgICAs
IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2NvbnRhaW5lckxheWVyKGFkb3B0TlMoW1tDQUxheWVy
IGFsbG9jXSBpbml0XSkpCiAgICAgLCBtX2NvbnRlbnRMYXllcihhZG9wdE5TKFtbQ0FMYXllciBh
bGxvY10gaW5pdF0pKQogICAgICwgbV9zY3JvbGxDb3JuZXJMYXllcihhZG9wdE5TKFtbV0tQREZQ
bHVnaW5TY3JvbGxiYXJMYXllciBhbGxvY10gaW5pdFdpdGhQREZQbHVnaW46dGhpc10pKQpAQCAt
NTkzLDcgKzU5Myw3IEBAIGlubGluZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJh
bWUpCiAgICAgbV9wZGZMYXllckNvbnRyb2xsZXIuZ2V0KCkucGFyZW50TGF5ZXIgPSBtX2NvbnRl
bnRMYXllci5nZXQoKTsKIAogICAgIGlmIChzdXBwb3J0c0Zvcm1zKCkpIHsKLSAgICAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7Cisg
ICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50
KCk7CiAgICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LT5jcmVhdGVFbGVt
ZW50KGRpdlRhZywgZmFsc2UpOwogICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXItPnNldEF0
dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oaWRBdHRyLCBBdG9tU3RyaW5nKCJhbm5vdGF0
aW9uQ29udGFpbmVyIiwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAt
NjA2LDEzICs2MDYsMTMgQEAgaW5saW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBm
cmFtZSkKIAogICAgIG1fYWNjZXNzaWJpbGl0eU9iamVjdCA9IGFkb3B0TlMoW1tXS1BERlBsdWdp
bkFjY2Vzc2liaWxpdHlPYmplY3QgYWxsb2NdIGluaXRXaXRoUERGUGx1Z2luOnRoaXNdKTsKICAg
ICBbbV9hY2Nlc3NpYmlsaXR5T2JqZWN0IHNldFBkZkxheWVyQ29udHJvbGxlcjptX3BkZkxheWVy
Q29udHJvbGxlci5nZXQoKV07Ci0gICAgW21fYWNjZXNzaWJpbGl0eU9iamVjdCBzZXRQYXJlbnQ6
d2ViRnJhbWUoKS0+cGFnZSgpLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCldOworICAgIFtt
X2FjY2Vzc2liaWxpdHlPYmplY3Qgc2V0UGFyZW50Om1fZnJhbWUucGFnZSgpLT5hY2Nlc3NpYmls
aXR5UmVtb3RlT2JqZWN0KCldOwogCiAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6
bV9jb250ZW50TGF5ZXIuZ2V0KCldOwogICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVy
Om1fc2Nyb2xsQ29ybmVyTGF5ZXIuZ2V0KCldOwogI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykKICAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0RGV2aWNlQ29sb3JTcGFjZTopXSkgewotICAgICAgICBh
dXRvIHZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgICAgICBhdXRv
IHZpZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7CiAgICAgICAgIFttX3BkZkxheWVy
Q29udHJvbGxlciBzZXREZXZpY2VDb2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldyldOwog
ICAgIH0KICNlbmRpZgpAQCAtNzMzLDIyICs3MzMsMjMgQEAgdm9pZCBQREZQbHVnaW46OnVuY29u
ZGl0aW9uYWxDb21wbGV0ZU91dHN0YW5kaW5nUmFuZ2VSZXF1ZXN0cygpCiAKIHZvaWQgUERGUGx1
Z2luOjp1bmNvbmRpdGlvbmFsQ29tcGxldGVSYW5nZVJlcXVlc3QoQnl0ZVJhbmdlUmVxdWVzdCYg
cmVxdWVzdCkKIHsKLSAgICB1aW50NjRfdCBmdWxsU2l6ZSA9IG1fZGF0YSA/IHN0YXRpY19jYXN0
PHVpbnQ2NF90PihDRkRhdGFHZXRMZW5ndGgobV9kYXRhLmdldCgpKSkgOiAwOwotICAgIGlmIChz
dGF0aWNfY2FzdDx1aW50NjRfdD4ocmVxdWVzdC5wb3NpdGlvbikgPj0gZnVsbFNpemUpIHsKKyAg
ICBpZiAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHJlcXVlc3QucG9zaXRpb24pID49IG1fc3RyZWFt
ZWRCeXRlcykgewogICAgICAgICByZXF1ZXN0LmNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDAp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjb3VudCA9IHJlcXVlc3QucG9z
aXRpb24gKyByZXF1ZXN0LmNvdW50ID4gZnVsbFNpemUgPyBmdWxsU2l6ZSAtIHJlcXVlc3QucG9z
aXRpb24gOiByZXF1ZXN0LmNvdW50OworICAgIEFTU0VSVChtX2RhdGEpOworCisgICAgYXV0byBj
b3VudCA9IHJlcXVlc3QucG9zaXRpb24gKyByZXF1ZXN0LmNvdW50ID4gbV9zdHJlYW1lZEJ5dGVz
ID8gbV9zdHJlYW1lZEJ5dGVzIC0gcmVxdWVzdC5wb3NpdGlvbiA6IHJlcXVlc3QuY291bnQ7CiAg
ICAgcmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcihDRkRhdGFHZXRCeXRlUHRyKG1fZGF0YS5nZXQo
KSkgKyByZXF1ZXN0LnBvc2l0aW9uLCBjb3VudCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpnZXRS
ZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbihzaXplX3QgY291bnQsIG9mZl90IHBvc2l0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsgCiAKLSAgICB1aW50NjRfdCBkYXRhTGVuZ3RoID0gbV9kYXRhID8gc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KENGRGF0YUdldExlbmd0aChtX2RhdGEuZ2V0KCkpKSA6IDA7Ci0gICAg
aWYgKG1fZGF0YSAmJiBkYXRhTGVuZ3RoID49IHBvc2l0aW9uICsgY291bnQpIHsKKyAgICBpZiAo
bV9zdHJlYW1lZEJ5dGVzID49IHBvc2l0aW9uICsgY291bnQpIHsKKyAgICAgICAgQVNTRVJUKG1f
ZGF0YSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKENGRGF0YUdldEJ5dGVQdHIobV9kYXRh
LmdldCgpKSArIHBvc2l0aW9uLCBjb3VudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04
NDksNyArODUwLDcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZVNjcm9sbGJhcnMoKQogICAgICAg
ICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3Qoc2Nyb2xsYmFyUmVjdCk7CiAgICAg
fQogCi0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmll
dygpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmll
dygpOwogICAgIGlmICghZnJhbWVWaWV3KQogICAgICAgICByZXR1cm47CiAKQEAgLTkwMCw3ICs5
MDEsNyBAQCBSZWY8U2Nyb2xsYmFyPiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxi
YXJPcmllbnRhdGlvbiBvcmllbnRhdGlvbikKICAgICAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRk
U3VibGF5ZXI6bV92ZXJ0aWNhbFNjcm9sbGJhckxheWVyLmdldCgpXTsKICAgICB9CiAgICAgZGlk
QWRkU2Nyb2xsYmFyKHdpZGdldC5wdHIoKSwgb3JpZW50YXRpb24pOwotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKSkgeworICAgIGlmIChGcmFtZSogZnJhbWUg
PSBtX2ZyYW1lLmNvcmVGcmFtZSgpKSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkgewogICAgICAgICAgICAgaWYgKHBhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRz
KCkpCiAgICAgICAgICAgICAgICAgc2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1v
bml0b3IocGFnZS0+d2hlZWxFdmVudFRlc3RNb25pdG9yKCkpOwpAQCAtOTkwLDcgKzk5MSw3IEBA
IEludFJlY3QgUERGUGx1Z2luOjpzY3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqKSBjb25z
dAogCiBib29sIFBERlBsdWdpbjo6aXNBY3RpdmUoKSBjb25zdAogewotICAgIGlmIChGcmFtZSog
Y29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkpIHsKKyAgICBpZiAoRnJhbWUqIGNvcmVG
cmFtZSA9IG1fZnJhbWUuY29yZUZyYW1lKCkpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBj
b3JlRnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5pc0FjdGl2ZSgpOwogICAgIH0KQEAgLTEwMDAsNyArMTAwMSw3IEBAIGJvb2wgUERGUGx1
Z2luOjppc0FjdGl2ZSgpIGNvbnN0CiAKIGJvb2wgUERGUGx1Z2luOjpmb3JjZVVwZGF0ZVNjcm9s
bGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKSBjb25zdAogewotICAgIGlm
IChGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS0+Y29yZUZyYW1lKCkpIHsKKyAgICBpZiAoRnJh
bWUqIGNvcmVGcmFtZSA9IG1fZnJhbWUuY29yZUZyYW1lKCkpIHsKICAgICAgICAgaWYgKFBhZ2Uq
IHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBwYWdlLT5zZXR0
aW5ncygpLmZvcmNlVXBkYXRlU2Nyb2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVz
dGluZygpOwogICAgIH0KQEAgLTEwNjgsMTMgKzEwNjksOSBAQCBzdGF0aWMgdm9pZCBqc1BERkRv
Y0ZpbmFsaXplKEpTT2JqZWN0UmVmIG9iamVjdCkKIAogSlNWYWx1ZVJlZiBQREZQbHVnaW46Ompz
UERGRG9jUHJpbnQoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAgUERGUGx1Z2luKiBw
ZGZWaWV3ID0gc3RhdGljX2Nhc3Q8UERGUGx1Z2luKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKLQotICAgIFdlYkZyYW1lKiBmcmFtZSA9IHBkZlZpZXctPm1fZnJhbWU7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7Cisg
ICAgUERGUGx1Z2luKiBwZGZQbHVnaW4gPSBzdGF0aWNfY2FzdDxQREZQbHVnaW4qPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwogCi0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1l
LT5jb3JlRnJhbWUoKTsKKyAgICBGcmFtZSogY29yZUZyYW1lID0gcGRmUGx1Z2luLT5tX2ZyYW1l
LmNvcmVGcmFtZSgpOwogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY3R4KTsKIApAQCAtMTE1Niw3ICsxMTUzLDcgQEAgdm9pZCBQREZQbHVn
aW46Omluc3RhbGxQREZEb2N1bWVudCgpCiAgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3Jt
KCk7CiAKICAgICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3Ioc2V0VVJMRnJhZ21lbnQ6KV0pIHsKLSAgICAgICAgU3RyaW5nIHBkZlVSTEZyYWdt
ZW50ID0gd2ViRnJhbWUoKS0+dXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgIFN0
cmluZyBwZGZVUkxGcmFnbWVudCA9IG1fZnJhbWUudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXRVUkxGcmFnbWVudDpwZGZVUkxGcmFn
bWVudF07CiAgICAgfQogfQpAQCAtMTE5MCw2ICsxMTg3LDcgQEAgdm9pZCBQREZQbHVnaW46OnN0
cmVhbURpZFJlY2VpdmVEYXRhKHVpbnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywg
aW50IGwKICAgICAgICAgbV9kYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDAp
KTsKIAogICAgIENGRGF0YUFwcGVuZEJ5dGVzKG1fZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVuZ3RoKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0g
bGVuZ3RoOwogfQogCiB2b2lkIFBERlBsdWdpbjo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50
NjRfdCBzdHJlYW1JRCkKQEAgLTEyMjEsMTIgKzEyMTksMTMgQEAgdm9pZCBQREZQbHVnaW46Om1h
bnVhbFN0cmVhbURpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQog
ICAgICAgICBtX2RhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCiAg
ICAgQ0ZEYXRhQXBwZW5kQnl0ZXMobV9kYXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0
IFVJbnQ4Kj4oYnl0ZXMpLCBsZW5ndGgpOworICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7
CiAKICNpZiBIQVZFKElOQ1JFTUVOVEFMX1BERl9BUElTKQogICAgIHNpemVfdCBpbmRleCA9IDA7
CiAgICAgd2hpbGUgKGluZGV4IDwgbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnNpemUo
KSkgewogICAgICAgICBhdXRvJiByZXF1ZXN0ID0gbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVl
c3RzW2luZGV4XTsKLSAgICAgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihDRkRhdGFHZXRM
ZW5ndGgobV9kYXRhLmdldCgpKSkgPj0gcmVxdWVzdC5wb3NpdGlvbiArIHJlcXVlc3QuY291bnQp
IHsKKyAgICAgICAgaWYgKG1fc3RyZWFtZWRCeXRlcyA+PSByZXF1ZXN0LnBvc2l0aW9uICsgcmVx
dWVzdC5jb3VudCkgewogICAgICAgICAgICAgcmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcihDRkRh
dGFHZXRCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyByZXF1ZXN0LnBvc2l0aW9uLCByZXF1ZXN0LmNv
dW50KTsKICAgICAgICAgICAgIG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5yZW1vdmUo
aW5kZXgpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0xMjkwLDcgKzEyODksNyBAQCB2b2lk
IFBERlBsdWdpbjo6dXBkYXRlUGFnZUFuZERldmljZVNjYWxlRmFjdG9ycygpCiB7CiAgICAgZG91
YmxlIG5ld1NjYWxlRmFjdG9yID0gY29udHJvbGxlcigpLT5jb250ZW50c1NjYWxlRmFjdG9yKCk7
CiAgICAgaWYgKCFoYW5kbGVzUGFnZVNjYWxlRmFjdG9yKCkpCi0gICAgICAgIG5ld1NjYWxlRmFj
dG9yICo9IHdlYkZyYW1lKCktPnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIG5l
d1NjYWxlRmFjdG9yICo9IG1fZnJhbWUucGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKIAogICAg
IGlmIChuZXdTY2FsZUZhY3RvciAhPSBbbV9wZGZMYXllckNvbnRyb2xsZXIgZGV2aWNlU2NhbGVG
YWN0b3JdKQogICAgICAgICBbbV9wZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlU2NhbGVGYWN0
b3I6bmV3U2NhbGVGYWN0b3JdOwpAQCAtMTMyNSwxMCArMTMyNCw4IEBAIGJvb2wgUERGUGx1Z2lu
Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAKIHZvaWQgUERGUGx1
Z2luOjp3aWxsRGV0YWNoUmVuZGVyZXIoKQogewotICAgIGlmICh3ZWJGcmFtZSgpKSB7Ci0gICAg
ICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52
aWV3KCkpCi0gICAgICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMp
OwotICAgIH0KKyAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLmNvcmVGcmFt
ZSgpLT52aWV3KCkpCisgICAgICAgIGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhp
cyk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpkZXN0cm95KCkKQEAgLTEzNDcsMTAgKzEzNDQsOCBA
QCB2b2lkIFBERlBsdWdpbjo6ZGVzdHJveSgpCiAKICAgICBtX3BkZkxheWVyQ29udHJvbGxlci5n
ZXQoKS5kZWxlZ2F0ZSA9IDA7CiAKLSAgICBpZiAod2ViRnJhbWUoKSkgewotICAgICAgICBpZiAo
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpKQot
ICAgICAgICAgICAgZnJhbWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKLSAgICB9
CisgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmll
dygpKQorICAgICAgICBmcmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogCiAg
ICAgbV9hY3RpdmVBbm5vdGF0aW9uID0gbnVsbHB0cjsKICAgICBtX2Fubm90YXRpb25Db250YWlu
ZXIgPSBudWxscHRyOwpAQCAtMTM3Niw3ICsxMzcxLDcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0
ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHZvaWQgUERG
UGx1Z2luOjpwYWludENvbnRyb2xGb3JMYXllckluQ29udGV4dChDQUxheWVyICpsYXllciwgQ0dD
b250ZXh0UmVmIGNvbnRleHQpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8qIHBhZ2Ug
PSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+cGFnZSgpOworICAgIGF1dG8qIHBhZ2UgPSBtX2Zy
YW1lLmNvcmVGcmFtZSgpLT5wYWdlKCk7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5j
ZSBsb2NhbEFwcGVhcmFuY2UocGFnZS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIApA
QCAtMTQ1NywxOSArMTQ1MiwxOSBAQCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9v
dFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogCiBGbG9hdFJlY3Qg
UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJl
Y3QpIGNvbnN0CiB7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3Jl
RnJhbWUoKS0+dmlldygpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3Jl
RnJhbWUoKS0+dmlldygpOwogCiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBG
bG9hdFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCB1cGRhdGVkUmVjdCA9IHJlY3Q7CiAgICAgdXBk
YXRlZFJlY3Quc2V0TG9jYXRpb24oY29udmVydEZyb21QREZWaWV3VG9Sb290VmlldyhJbnRQb2lu
dCh1cGRhdGVkUmVjdC5sb2NhdGlvbigpKSkpOwotICAgIHJldHVybiB3ZWJGcmFtZSgpLT5jb3Jl
RnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5yb290Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJl
Y3QodXBkYXRlZFJlY3QpKTsKKyAgICByZXR1cm4gbV9mcmFtZS5jb3JlRnJhbWUoKS0+cGFnZSgp
LT5jaHJvbWUoKS5yb290Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QodXBkYXRlZFJlY3Qp
KTsKIH0KIAogSW50UmVjdCBQREZQbHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHsKLSAg
ICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7
CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7
CiAKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKQEAgLTE3
MjEsNyArMTcxNiw3IEBAIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29u
c3QgV2ViTW91c2VFdmVudCYpCiAgICAgCiBib29sIFBERlBsdWdpbjo6c2hvd0NvbnRleHRNZW51
QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiB7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwogICAgIEludFBvaW50IGNvbnRl
bnRzUG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRzVG9Sb290Vmlldyhwb2ludCk7CiAgICAgV2Vi
TW91c2VFdmVudCBldmVudChXZWJFdmVudDo6TW91c2VEb3duLCBXZWJNb3VzZUV2ZW50OjpSaWdo
dEJ1dHRvbiwgMCwgY29udGVudHNQb2ludCwgY29udGVudHNQb2ludCwgMCwgMCwgMCwgMSwgT3B0
aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4geyB9LCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6
OkZvcmNlQXRDbGljayk7CiAgICAgcmV0dXJuIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQp
OwpAQCAtMTcyOSwxMSArMTcyNCwxMSBAQCBib29sIFBERlBsdWdpbjo6c2hvd0NvbnRleHRNZW51
QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQpCiAKIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVD
b250ZXh0TWVudUV2ZW50KGNvbnN0IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmICgh
d2ViRnJhbWUoKS0+cGFnZSgpKQorICAgIGlmICghbV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSgpLT5wYWdlKCk7
Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmll
dygpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKKyAgICBGcmFtZVZp
ZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKTsKICAgICBJbnRQb2lu
dCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KGZyYW1lVmlldy0+
d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlvbigpKSwgSW50U2l6ZSgpKSkubG9jYXRpb24o
KTsKIAogICAgIE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1aUxheW91dERpcmVjdGlv
biA9IHdlYlBhZ2UtPnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9PSBVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25M
ZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OwpA
QCAtMTg0MSwxMyArMTgzNiwxMyBAQCBib29sIFBERlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVnaW4o
KSBjb25zdAogewogICAgIC8vIDxvYmplY3Q+IG9yIDxlbWJlZD4gcGx1Z2lucyB3aWxsIGFwcGVh
ciB0byBiZSBpbiB0aGVpciBwYXJlbnQgZnJhbWUsIHNvIHdlIGhhdmUgdG8KICAgICAvLyBjaGVj
ayB3aGV0aGVyIG91ciBmcmFtZSdzIHdpZGdldCBpcyBleGFjdGx5IG91ciBQbHVnaW5WaWV3Lgot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3Vt
ZW50KCk7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgc3RhdGlj
X2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2N1bWVudCktPnBsdWdpbldpZGdldCgpID09IHBsdWdp
blZpZXcoKTsKIH0KIAogYm9vbCBQREZQbHVnaW46OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSBj
b25zdAogewotICAgIHJldHVybiB3ZWJGcmFtZSgpLT5pc01haW5GcmFtZSgpICYmIGlzRnVsbEZy
YW1lUGx1Z2luKCk7CisgICAgcmV0dXJuIG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBpc0Z1bGxG
cmFtZVBsdWdpbigpOwogfQogCiB2b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNVUkwgKnVy
bCkKQEAgLTE4NTYsNyArMTg1MSw3IEBAIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGluayhOU1VS
TCAqdXJsKQogICAgIGlmIChXVEY6OnByb3RvY29sSXNKYXZhU2NyaXB0KGNvcmVVUkwpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGcmFtZSogZnJhbWUgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUo
KTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpOwogCiAgICAgUmVmUHRy
PEV2ZW50PiBjb3JlRXZlbnQ7CiAgICAgaWYgKG1fbGFzdE1vdXNlRXZlbnQudHlwZSgpICE9IFdl
YkV2ZW50OjpOb1R5cGUpCkBAIC0xOTMzLDcgKzE5MjgsNyBAQCB2b2lkIFBERlBsdWdpbjo6c2F2
ZVRvUERGKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTlNEYXRhICpkYXRhID0gbGl2ZURhdGEo
KTsKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cihtX3N1Z2dlc3RlZEZpbGVuYW1lLCB3ZWJGcmFtZSgpLT51cmwoKSwgc3RhdGljX2Nhc3Q8Y29u
c3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBt
X2ZyYW1lLnBhZ2UoKS0+c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKG1fc3VnZ2VzdGVk
RmlsZW5hbWUsIG1fZnJhbWUudXJsKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIg
Kj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpv
cGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKCkKQEAgLTE5NDksMTEgKzE5NDQsMTEgQEAgdm9pZCBQ
REZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oKQogICAgICAgICBtX3RlbXBvcmFy
eVBERlVVSUQgPSBjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCk7CiAgICAgICAgIEFTU0VSVCht
X3RlbXBvcmFyeVBERlVVSUQpOwogCi0gICAgICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2F2ZVBE
RlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dlc3Rl
ZEZpbGVuYW1lLCB3ZWJGcmFtZSgpLT51cmwoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQg
Y2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdLCBtX3RlbXBvcmFyeVBERlVVSUQp
OworICAgICAgICBtX2ZyYW1lLnBhZ2UoKS0+c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3Bl
bldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2ZyYW1lLnVybCgp
LCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRh
IGxlbmd0aF0sIG1fdGVtcG9yYXJ5UERGVVVJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6T3Bl
blBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24obV90ZW1wb3JhcnlQ
REZVVUlEKSk7CisgICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6T3BlblBERkZyb21UZW1wb3JhcnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24obV90ZW1w
b3JhcnlQREZVVUlEKSk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJv
YXJkKE5TU3RyaW5nICpwYXN0ZWJvYXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5
cGVzKQpAQCAtMjAxNSw3ICsyMDEwLDcgQEAgdm9pZCBQREZQbHVnaW46OnNob3dEZWZpbml0aW9u
Rm9yQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgQ0cKICAgICBk
YXRhRm9yU2VsZWN0aW9uLnByZXNlbnRhdGlvblRyYW5zaXRpb24gPSBUZXh0SW5kaWNhdG9yUHJl
c2VudGF0aW9uVHJhbnNpdGlvbjo6RmFkZUluOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4
dEluZGljYXRvciA9IGRhdGFGb3JTZWxlY3Rpb247CiAgICAgCi0gICAgd2ViRnJhbWUoKS0+cGFn
ZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwKGRpY3Rpb25hcnlQb3B1cEluZm8pKTsKKyAgICBtX2ZyYW1lLnBhZ2UoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChkaWN0aW9uYXJ5
UG9wdXBJbmZvKSk7CiB9CiAKIHVuc2lnbmVkIFBERlBsdWdpbjo6Y291bnRGaW5kTWF0Y2hlcyhj
b25zdCBTdHJpbmcmIHRhcmdldCwgV2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWdu
ZWQgLyptYXhNYXRjaENvdW50Ki8pCkBAIC0yMTIzLDcgKzIxMTgsNyBAQCB2b2lkIFBERlBsdWdp
bjo6Zm9jdXNQcmV2aW91c0Fubm90YXRpb24oKQogCiB2b2lkIFBERlBsdWdpbjo6bm90aWZ5U2Vs
ZWN0aW9uQ2hhbmdlZChQREZTZWxlY3Rpb24gKikKIHsKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCkt
PmRpZENoYW5nZVNlbGVjdGlvbigpOworICAgIG1fZnJhbWUucGFnZSgpLT5kaWRDaGFuZ2VTZWxl
Y3Rpb24oKTsKIH0KIAogc3RhdGljIGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY29yZUN1cnNvcihQ
REZMYXllckNvbnRyb2xsZXJDdXJzb3JUeXBlIHR5cGUpCkBAIC0yMTQxLDcgKzIxMzYsNyBAQCBz
dGF0aWMgY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjb3JlQ3Vyc29yKFBERkxheWVyQ29udHJvbGxl
ckN1cnNvclR5cGUgdHlwZSkKIAogdm9pZCBQREZQbHVnaW46Om5vdGlmeUN1cnNvckNoYW5nZWQo
dWludDY0X3QgdHlwZSkKIHsKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2V0Q3Vyc29yKGNvcmVDdXJzb3Ioc3RhdGljX2Nhc3Q8UERGTGF5ZXJD
b250cm9sbGVyQ3Vyc29yVHlwZT4odHlwZSkpKSk7CisgICAgbV9mcmFtZS5wYWdlKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0Q3Vyc29yKGNvcmVDdXJzb3Ioc3RhdGljX2Nhc3Q8
UERGTGF5ZXJDb250cm9sbGVyQ3Vyc29yVHlwZT4odHlwZSkpKSk7CiB9CiAKIFN0cmluZyBQREZQ
bHVnaW46OmdldFNlbGVjdGlvblN0cmluZygpIGNvbnN0CkBAIC0yMjY1LDcgKzIyNjAsNyBAQCBz
dGF0aWMgTlNSZWN0IHJlY3RJblZpZXdTcGFjZUZvclJlY3RJbkxheW91dFNwYWNlKFBERkxheWVy
Q29udHJvbGxlciogcGRmTGF5ZXJDbwogICAgIAogV2ViQ29yZTo6QVhPYmplY3RDYWNoZSogUERG
UGx1Z2luOjpheE9iamVjdENhY2hlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2ViRnJhbWUoKS0+
Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gbV9m
cmFtZS5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOwogfQogCiBXZWJD
b3JlOjpGbG9hdFJlY3QgUERGUGx1Z2luOjpyZWN0Rm9yU2VsZWN0aW9uSW5Sb290VmlldyhQREZT
ZWxlY3Rpb24gKnNlbGVjdGlvbikgY29uc3QKQEAgLTIyOTQsMTIgKzIyODksMTIgQEAgQ0dGbG9h
dCBQREZQbHVnaW46OnNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBQREZQbHVnaW46OnBlcmZv
cm1XZWJTZWFyY2goTlNTdHJpbmcgKnN0cmluZykKIHsKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2VhcmNoVGhlV2ViKHN0cmluZykpOworICAg
IG1fZnJhbWUucGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlYXJjaFRoZVdl
YihzdHJpbmcpKTsKIH0KIAogdm9pZCBQREZQbHVnaW46OnBlcmZvcm1TcG90bGlnaHRTZWFyY2go
TlNTdHJpbmcgKnN0cmluZykKIHsKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2VhcmNoV2l0aFNwb3RsaWdodChzdHJpbmcpKTsKKyAgICBtX2Zy
YW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3BvdGxp
Z2h0KHN0cmluZykpOwogfQogCiBib29sIFBERlBsdWdpbjo6aGFuZGxlV2hlZWxFdmVudChjb25z
dCBXZWJXaGVlbEV2ZW50JiBldmVudCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392719</attachid>
            <date>2020-03-06 07:36:49 -0800</date>
            <delta_ts>2020-03-06 15:21:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19326</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMTQzZWI5NzQ3NzAuLmVlZGVlMjFkZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDIwLTAzLTA2ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTb21lIFBERlBsdWdpbiBjbGVhbnVwIGluIHByZXAgZm9yIGluY3JlbWVudGFsIGxv
YWRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IFRoZSBmcmFtZSBpcyBuZXZlciBjbGVhcmVkLCBzbyBtYWtlIGl0IGEgcmVmZXJlbmNlLgorICAg
ICAgICAtIFVzZSBhIG5ldyAibnVtYmVyIG9mIHN0cmVhbWVkIGJ5dGVzIiB2YXJpYWJsZSBpbnN0
ZWFkIG9mIGdyYWJiaW5nIG1fZGF0YSdzIGxlbmd0aCwgCisgICAgICAgICAgYXMgbV9kYXRhIHdp
bGwgc29vbiBiZWNvbWUgYSAic3BhcnNlIiBkYXRhIGJ1ZmZlcgorCisgICAgICAgIFJlZmFjdG9y
IG9ubHkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6dW5jb25kaXRpb25hbENvbXBsZXRlUmFuZ2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6Y3JlYXRlU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppc0FjdGl2
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Zm9yY2VVcGRhdGVTY3JvbGxi
YXJzT25NYWluVGhyZWFkRm9yUGVyZm9ybWFuY2VUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UERGUGx1Z2luOjpqc1BERkRvY1ByaW50KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjppbnN0YWxsUERGRG9jdW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnN0
cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjptYW51YWxT
dHJlYW1EaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6dXBkYXRl
UGFnZUFuZERldmljZVNjYWxlRmFjdG9ycyk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
d2lsbERldGFjaFJlbmRlcmVyKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpkZXN0cm95
KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwYWludENvbnRyb2xGb3JMYXllckluQ29u
dGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y29udmVydEZyb21QREZWaWV3VG9T
Y3JlZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmJvdW5kc09uU2NyZWVu
IGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpzaG93Q29udGV4dE1lbnVBdFBv
aW50KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjppc0Z1bGxGcmFtZVBsdWdpbiBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6aGFuZGxlc1BhZ2VTY2FsZUZhY3RvciBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y2xpY2tlZExpbmspOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OnNhdmVUb1BERik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6b3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdp
bjo6c2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6
UERGUGx1Z2luOjpub3RpZnlTZWxlY3Rpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UERG
UGx1Z2luOjpub3RpZnlDdXJzb3JDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
OjpheE9iamVjdENhY2hlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwZXJm
b3JtV2ViU2VhcmNoKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpwZXJmb3JtU3BvdGxp
Z2h0U2VhcmNoKToKKwogMjAyMC0wMy0wNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUHJlLWZldGNoIGZpcnN0IHBhZ2UgaW4gbmV3IFBERiBsb2FkaW5nIG1v
ZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BE
RlBsdWdpbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdp
bi5oCmluZGV4IDkxNWVlOGJlNjg3Li5lYmFkMzQ4M2VkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4uaApAQCAtMjYxLDggKzI2MSw2IEBA
IHByaXZhdGU6CiAgICAgTlNEYXRhICpyYXdEYXRhKCkgY29uc3QgeyByZXR1cm4gKF9fYnJpZGdl
IE5TRGF0YSAqKW1fZGF0YS5nZXQoKTsgfQogI2VuZGlmCiAKLSAgICBXZWJGcmFtZSogd2ViRnJh
bWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0KICAgICBKU09iamVjdFJlZiBtYWtlSlNQ
REZEb2MoSlNDb250ZXh0UmVmKTsKICAgICBzdGF0aWMgSlNWYWx1ZVJlZiBqc1BERkRvY1ByaW50
KEpTQ29udGV4dFJlZiwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pOwogCkBAIC0yNzQsNyArMjcyLDcgQEAgcHJpdmF0ZToKICAg
ICBQbHVnaW5WaWV3KiBwbHVnaW5WaWV3KCk7CiAgICAgY29uc3QgUGx1Z2luVmlldyogcGx1Z2lu
VmlldygpIGNvbnN0OwogCi0gICAgV2ViRnJhbWUqIG1fZnJhbWU7CisgICAgV2ViRnJhbWUmIG1f
ZnJhbWU7CiAKICAgICBib29sIG1faXNQb3N0U2NyaXB0IHsgZmFsc2UgfTsKICAgICBib29sIG1f
cGRmRG9jdW1lbnRXYXNNdXRhdGVkIHsgZmFsc2UgfTsKQEAgLTMwOSw2ICszMDcsNyBAQCBwcml2
YXRlOgogCiAgICAgU3RyaW5nIG1fc3VnZ2VzdGVkRmlsZW5hbWU7CiAgICAgUmV0YWluUHRyPENG
TXV0YWJsZURhdGFSZWY+IG1fZGF0YTsKKyAgICB1aW50NjRfdCBtX3N0cmVhbWVkQnl0ZXMgeyAw
IH07CiAKICAgICBSZXRhaW5QdHI8UERGRG9jdW1lbnQ+IG1fcGRmRG9jdW1lbnQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCmluZGV4
IDE4NGYyZTZlODRiLi5kMTM0NDY2NWFiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCkBAIC01NzksNyArNTc5LDcgQEAgUmVmPFBE
RlBsdWdpbj4gUERGUGx1Z2luOjpjcmVhdGUoV2ViRnJhbWUmIGZyYW1lKQogCiBpbmxpbmUgUERG
UGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyYW1lKQogICAgIDogUGx1Z2luKFBERlBsdWdp
blR5cGUpCi0gICAgLCBtX2ZyYW1lKCZmcmFtZSkKKyAgICAsIG1fZnJhbWUoZnJhbWUpCiAgICAg
LCBtX2NvbnRhaW5lckxheWVyKGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSkpCiAgICAg
LCBtX2NvbnRlbnRMYXllcihhZG9wdE5TKFtbQ0FMYXllciBhbGxvY10gaW5pdF0pKQogICAgICwg
bV9zY3JvbGxDb3JuZXJMYXllcihhZG9wdE5TKFtbV0tQREZQbHVnaW5TY3JvbGxiYXJMYXllciBh
bGxvY10gaW5pdFdpdGhQREZQbHVnaW46dGhpc10pKQpAQCAtNTkzLDcgKzU5Myw3IEBAIGlubGlu
ZSBQREZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUpCiAgICAgbV9wZGZMYXllckNv
bnRyb2xsZXIuZ2V0KCkucGFyZW50TGF5ZXIgPSBtX2NvbnRlbnRMYXllci5nZXQoKTsKIAogICAg
IGlmIChzdXBwb3J0c0Zvcm1zKCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Vi
RnJhbWUoKS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgICAgIG1fYW5ub3Rh
dGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LT5jcmVhdGVFbGVtZW50KGRpdlRhZywgZmFsc2UpOwog
ICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXItPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJv
bml6YXRpb24oaWRBdHRyLCBBdG9tU3RyaW5nKCJhbm5vdGF0aW9uQ29udGFpbmVyIiwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKIApAQCAtNjA2LDEzICs2MDYsMTMgQEAgaW5s
aW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcmFtZSkKIAogICAgIG1fYWNjZXNz
aWJpbGl0eU9iamVjdCA9IGFkb3B0TlMoW1tXS1BERlBsdWdpbkFjY2Vzc2liaWxpdHlPYmplY3Qg
YWxsb2NdIGluaXRXaXRoUERGUGx1Z2luOnRoaXNdKTsKICAgICBbbV9hY2Nlc3NpYmlsaXR5T2Jq
ZWN0IHNldFBkZkxheWVyQ29udHJvbGxlcjptX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKV07Ci0g
ICAgW21fYWNjZXNzaWJpbGl0eU9iamVjdCBzZXRQYXJlbnQ6d2ViRnJhbWUoKS0+cGFnZSgpLT5h
Y2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCldOworICAgIFttX2FjY2Vzc2liaWxpdHlPYmplY3Qg
c2V0UGFyZW50Om1fZnJhbWUucGFnZSgpLT5hY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCldOwog
CiAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9jb250ZW50TGF5ZXIuZ2V0KCld
OwogICAgIFttX2NvbnRhaW5lckxheWVyIGFkZFN1YmxheWVyOm1fc2Nyb2xsQ29ybmVyTGF5ZXIu
Z2V0KCldOwogI2lmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykKICAg
ICBpZiAoW21fcGRmTGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
c2V0RGV2aWNlQ29sb3JTcGFjZTopXSkgewotICAgICAgICBhdXRvIHZpZXcgPSB3ZWJGcmFtZSgp
LT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgICAgICBhdXRvIHZpZXcgPSBtX2ZyYW1lLmNvcmVG
cmFtZSgpLT52aWV3KCk7CiAgICAgICAgIFttX3BkZkxheWVyQ29udHJvbGxlciBzZXREZXZpY2VD
b2xvclNwYWNlOnNjcmVlbkNvbG9yU3BhY2UodmlldyldOwogICAgIH0KICNlbmRpZgpAQCAtNzMz
LDIyICs3MzMsMjMgQEAgdm9pZCBQREZQbHVnaW46OnVuY29uZGl0aW9uYWxDb21wbGV0ZU91dHN0
YW5kaW5nUmFuZ2VSZXF1ZXN0cygpCiAKIHZvaWQgUERGUGx1Z2luOjp1bmNvbmRpdGlvbmFsQ29t
cGxldGVSYW5nZVJlcXVlc3QoQnl0ZVJhbmdlUmVxdWVzdCYgcmVxdWVzdCkKIHsKLSAgICB1aW50
NjRfdCBmdWxsU2l6ZSA9IG1fZGF0YSA/IHN0YXRpY19jYXN0PHVpbnQ2NF90PihDRkRhdGFHZXRM
ZW5ndGgobV9kYXRhLmdldCgpKSkgOiAwOwotICAgIGlmIChzdGF0aWNfY2FzdDx1aW50NjRfdD4o
cmVxdWVzdC5wb3NpdGlvbikgPj0gZnVsbFNpemUpIHsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KHJlcXVlc3QucG9zaXRpb24pID49IG1fc3RyZWFtZWRCeXRlcykgewogICAgICAgICBy
ZXF1ZXN0LmNvbXBsZXRpb25IYW5kbGVyKG51bGxwdHIsIDApOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgYXV0byBjb3VudCA9IHJlcXVlc3QucG9zaXRpb24gKyByZXF1ZXN0LmNvdW50
ID4gZnVsbFNpemUgPyBmdWxsU2l6ZSAtIHJlcXVlc3QucG9zaXRpb24gOiByZXF1ZXN0LmNvdW50
OworICAgIEFTU0VSVChtX2RhdGEpOworCisgICAgYXV0byBjb3VudCA9IHJlcXVlc3QucG9zaXRp
b24gKyByZXF1ZXN0LmNvdW50ID4gbV9zdHJlYW1lZEJ5dGVzID8gbV9zdHJlYW1lZEJ5dGVzIC0g
cmVxdWVzdC5wb3NpdGlvbiA6IHJlcXVlc3QuY291bnQ7CiAgICAgcmVxdWVzdC5jb21wbGV0aW9u
SGFuZGxlcihDRkRhdGFHZXRCeXRlUHRyKG1fZGF0YS5nZXQoKSkgKyByZXF1ZXN0LnBvc2l0aW9u
LCBjb3VudCk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpnZXRSZXNvdXJjZUJ5dGVzQXRQb3NpdGlv
bihzaXplX3QgY291bnQsIG9mZl90IHBvc2l0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IHVpbnQ4X3QqLCBzaXplX3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsgCiAKLSAgICB1
aW50NjRfdCBkYXRhTGVuZ3RoID0gbV9kYXRhID8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KENGRGF0
YUdldExlbmd0aChtX2RhdGEuZ2V0KCkpKSA6IDA7Ci0gICAgaWYgKG1fZGF0YSAmJiBkYXRhTGVu
Z3RoID49IHBvc2l0aW9uICsgY291bnQpIHsKKyAgICBpZiAobV9zdHJlYW1lZEJ5dGVzID49IHBv
c2l0aW9uICsgY291bnQpIHsKKyAgICAgICAgQVNTRVJUKG1fZGF0YSk7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKENGRGF0YUdldEJ5dGVQdHIobV9kYXRhLmdldCgpKSArIHBvc2l0aW9uLCBj
b3VudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04NDksNyArODUwLDcgQEAgdm9pZCBQ
REZQbHVnaW46OnVwZGF0ZVNjcm9sbGJhcnMoKQogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT5zZXRGcmFtZVJlY3Qoc2Nyb2xsYmFyUmVjdCk7CiAgICAgfQogCi0gICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgIEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwogICAgIGlmICghZnJhbWVW
aWV3KQogICAgICAgICByZXR1cm47CiAKQEAgLTkwMCw3ICs5MDEsNyBAQCBSZWY8U2Nyb2xsYmFy
PiBQREZQbHVnaW46OmNyZWF0ZVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRh
dGlvbikKICAgICAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV92ZXJ0aWNhbFNj
cm9sbGJhckxheWVyLmdldCgpXTsKICAgICB9CiAgICAgZGlkQWRkU2Nyb2xsYmFyKHdpZGdldC5w
dHIoKSwgb3JpZW50YXRpb24pOwotICAgIGlmIChGcmFtZSogZnJhbWUgPSB3ZWJGcmFtZSgpLT5j
b3JlRnJhbWUoKSkgeworICAgIGlmIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLmNvcmVGcmFtZSgp
KSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkgewogICAgICAgICAg
ICAgaWYgKHBhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZlbnRzKCkpCiAgICAgICAgICAgICAgICAg
c2Nyb2xsQW5pbWF0b3IoKS5zZXRXaGVlbEV2ZW50VGVzdE1vbml0b3IocGFnZS0+d2hlZWxFdmVu
dFRlc3RNb25pdG9yKCkpOwpAQCAtOTkwLDcgKzk5MSw3IEBAIEludFJlY3QgUERGUGx1Z2luOjpz
Y3JvbGxhYmxlQXJlYUJvdW5kaW5nQm94KGJvb2wqKSBjb25zdAogCiBib29sIFBERlBsdWdpbjo6
aXNBY3RpdmUoKSBjb25zdAogewotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gbV9mcmFtZS0+
Y29yZUZyYW1lKCkpIHsKKyAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJhbWUuY29yZUZy
YW1lKCkpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBhZ2UoKSkKICAg
ICAgICAgICAgIHJldHVybiBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5pc0FjdGl2ZSgpOwogICAg
IH0KQEAgLTEwMDAsNyArMTAwMSw3IEBAIGJvb2wgUERGUGx1Z2luOjppc0FjdGl2ZSgpIGNvbnN0
CiAKIGJvb2wgUERGUGx1Z2luOjpmb3JjZVVwZGF0ZVNjcm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQ
ZXJmb3JtYW5jZVRlc3RpbmcoKSBjb25zdAogewotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0g
bV9mcmFtZS0+Y29yZUZyYW1lKCkpIHsKKyAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJh
bWUuY29yZUZyYW1lKCkpIHsKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBjb3JlRnJhbWUtPnBh
Z2UoKSkKICAgICAgICAgICAgIHJldHVybiBwYWdlLT5zZXR0aW5ncygpLmZvcmNlVXBkYXRlU2Ny
b2xsYmFyc09uTWFpblRocmVhZEZvclBlcmZvcm1hbmNlVGVzdGluZygpOwogICAgIH0KQEAgLTEw
NjgsMTMgKzEwNjksOSBAQCBzdGF0aWMgdm9pZCBqc1BERkRvY0ZpbmFsaXplKEpTT2JqZWN0UmVm
IG9iamVjdCkKIAogSlNWYWx1ZVJlZiBQREZQbHVnaW46OmpzUERGRG9jUHJpbnQoSlNDb250ZXh0
UmVmIGN0eCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKiBleGNlcHRpb24pCiB7Ci0gICAgUERGUGx1Z2luKiBwZGZWaWV3ID0gc3RhdGljX2Nhc3Q8
UERGUGx1Z2luKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKLQotICAgIFdlYkZy
YW1lKiBmcmFtZSA9IHBkZlZpZXctPm1fZnJhbWU7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7CisgICAgUERGUGx1Z2luKiBwZGZQbHVn
aW4gPSBzdGF0aWNfY2FzdDxQREZQbHVnaW4qPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOwogCi0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lLT5jb3JlRnJhbWUoKTsKKyAgICBG
cmFtZSogY29yZUZyYW1lID0gcGRmUGx1Z2luLT5tX2ZyYW1lLmNvcmVGcmFtZSgpOwogICAgIGlm
ICghY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY3R4KTsK
IApAQCAtMTE1Niw3ICsxMTUzLDcgQEAgdm9pZCBQREZQbHVnaW46Omluc3RhbGxQREZEb2N1bWVu
dCgpCiAgICAgICAgIGNyZWF0ZVBhc3N3b3JkRW50cnlGb3JtKCk7CiAKICAgICBpZiAoW21fcGRm
TGF5ZXJDb250cm9sbGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Ioc2V0VVJMRnJhZ21l
bnQ6KV0pIHsKLSAgICAgICAgU3RyaW5nIHBkZlVSTEZyYWdtZW50ID0gd2ViRnJhbWUoKS0+dXJs
KCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CisgICAgICAgIFN0cmluZyBwZGZVUkxGcmFnbWVudCA9
IG1fZnJhbWUudXJsKCkuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgICAgIFttX3BkZkxheWVy
Q29udHJvbGxlciBzZXRVUkxGcmFnbWVudDpwZGZVUkxGcmFnbWVudF07CiAgICAgfQogfQpAQCAt
MTE5MCw2ICsxMTg3LDcgQEAgdm9pZCBQREZQbHVnaW46OnN0cmVhbURpZFJlY2VpdmVEYXRhKHVp
bnQ2NF90IHN0cmVhbUlELCBjb25zdCBjaGFyKiBieXRlcywgaW50IGwKICAgICAgICAgbV9kYXRh
ID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAogICAgIENGRGF0YUFwcGVu
ZEJ5dGVzKG1fZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVz
KSwgbGVuZ3RoKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwogfQogCiB2b2lkIFBE
RlBsdWdpbjo6c3RyZWFtRGlkRmluaXNoTG9hZGluZyh1aW50NjRfdCBzdHJlYW1JRCkKQEAgLTEy
MjEsMTIgKzEyMTksMTMgQEAgdm9pZCBQREZQbHVnaW46Om1hbnVhbFN0cmVhbURpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVuZ3RoKQogICAgICAgICBtX2RhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCiAgICAgQ0ZEYXRhQXBwZW5kQnl0ZXMo
bV9kYXRhLmdldCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJbnQ4Kj4oYnl0ZXMpLCBsZW5n
dGgpOworICAgIG1fc3RyZWFtZWRCeXRlcyArPSBsZW5ndGg7CiAKICNpZiBIQVZFKElOQ1JFTUVO
VEFMX1BERl9BUElTKQogICAgIHNpemVfdCBpbmRleCA9IDA7CiAgICAgd2hpbGUgKGluZGV4IDwg
bV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzLnNpemUoKSkgewogICAgICAgICBhdXRvJiBy
ZXF1ZXN0ID0gbV9vdXRzdGFuZGluZ0J5dGVSYW5nZVJlcXVlc3RzW2luZGV4XTsKLSAgICAgICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihDRkRhdGFHZXRMZW5ndGgobV9kYXRhLmdldCgpKSkg
Pj0gcmVxdWVzdC5wb3NpdGlvbiArIHJlcXVlc3QuY291bnQpIHsKKyAgICAgICAgaWYgKG1fc3Ry
ZWFtZWRCeXRlcyA+PSByZXF1ZXN0LnBvc2l0aW9uICsgcmVxdWVzdC5jb3VudCkgewogICAgICAg
ICAgICAgcmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcihDRkRhdGFHZXRCeXRlUHRyKG1fZGF0YS5n
ZXQoKSkgKyByZXF1ZXN0LnBvc2l0aW9uLCByZXF1ZXN0LmNvdW50KTsKICAgICAgICAgICAgIG1f
b3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5yZW1vdmUoaW5kZXgpOwogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xMjkwLDcgKzEyODksNyBAQCB2b2lkIFBERlBsdWdpbjo6dXBkYXRlUGFn
ZUFuZERldmljZVNjYWxlRmFjdG9ycygpCiB7CiAgICAgZG91YmxlIG5ld1NjYWxlRmFjdG9yID0g
Y29udHJvbGxlcigpLT5jb250ZW50c1NjYWxlRmFjdG9yKCk7CiAgICAgaWYgKCFoYW5kbGVzUGFn
ZVNjYWxlRmFjdG9yKCkpCi0gICAgICAgIG5ld1NjYWxlRmFjdG9yICo9IHdlYkZyYW1lKCktPnBh
Z2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgIG5ld1NjYWxlRmFjdG9yICo9IG1fZnJh
bWUucGFnZSgpLT5wYWdlU2NhbGVGYWN0b3IoKTsKIAogICAgIGlmIChuZXdTY2FsZUZhY3RvciAh
PSBbbV9wZGZMYXllckNvbnRyb2xsZXIgZGV2aWNlU2NhbGVGYWN0b3JdKQogICAgICAgICBbbV9w
ZGZMYXllckNvbnRyb2xsZXIgc2V0RGV2aWNlU2NhbGVGYWN0b3I6bmV3U2NhbGVGYWN0b3JdOwpA
QCAtMTMyNSwxMCArMTMyNCw4IEBAIGJvb2wgUERGUGx1Z2luOjppbml0aWFsaXplKGNvbnN0IFBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAKIHZvaWQgUERGUGx1Z2luOjp3aWxsRGV0YWNoUmVuZGVy
ZXIoKQogewotICAgIGlmICh3ZWJGcmFtZSgpKSB7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCkpCi0gICAgICAgICAgICBm
cmFtZVZpZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwotICAgIH0KKyAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCkpCisgICAgICAg
IGZyYW1lVmlldy0+cmVtb3ZlU2Nyb2xsYWJsZUFyZWEodGhpcyk7CiB9CiAKIHZvaWQgUERGUGx1
Z2luOjpkZXN0cm95KCkKQEAgLTEzNDcsMTAgKzEzNDQsOCBAQCB2b2lkIFBERlBsdWdpbjo6ZGVz
dHJveSgpCiAKICAgICBtX3BkZkxheWVyQ29udHJvbGxlci5nZXQoKS5kZWxlZ2F0ZSA9IDA7CiAK
LSAgICBpZiAod2ViRnJhbWUoKSkgewotICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpKQotICAgICAgICAgICAgZnJhbWVWaWV3
LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKLSAgICB9CisgICAgaWYgKEZyYW1lVmlldyog
ZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpKQorICAgICAgICBmcmFtZVZp
ZXctPnJlbW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogCiAgICAgbV9hY3RpdmVBbm5vdGF0aW9u
ID0gbnVsbHB0cjsKICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBudWxscHRyOwpAQCAtMTM3
Niw3ICsxMzcxLDcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGlj
c0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCkKIHZvaWQgUERGUGx1Z2luOjpwYWludENvbnRyb2xG
b3JMYXllckluQ29udGV4dChDQUxheWVyICpsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiB7
CiAjaWYgUExBVEZPUk0oTUFDKQotICAgIGF1dG8qIHBhZ2UgPSB3ZWJGcmFtZSgpLT5jb3JlRnJh
bWUoKS0+cGFnZSgpOworICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT5wYWdl
KCk7CiAgICAgTG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocGFn
ZS0+dXNlRGFya0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIApAQCAtMTQ1NywxOSArMTQ1MiwxOSBA
QCBJbnRQb2ludCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3Qg
SW50UG9pbnQmIHBvaW50KSBjb25zdAogCiBGbG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJv
bVBERlZpZXdUb1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwogCiAg
ICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIEZs
b2F0UmVjdCB1cGRhdGVkUmVjdCA9IHJlY3Q7CiAgICAgdXBkYXRlZFJlY3Quc2V0TG9jYXRpb24o
Y29udmVydEZyb21QREZWaWV3VG9Sb290VmlldyhJbnRQb2ludCh1cGRhdGVkUmVjdC5sb2NhdGlv
bigpKSkpOwotICAgIHJldHVybiB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+cGFnZSgpLT5jaHJv
bWUoKS5yb290Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QodXBkYXRlZFJlY3QpKTsKKyAg
ICByZXR1cm4gbV9mcmFtZS5jb3JlRnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5yb290Vmlld1Rv
U2NyZWVuKGVuY2xvc2luZ0ludFJlY3QodXBkYXRlZFJlY3QpKTsKIH0KIAogSW50UmVjdCBQREZQ
bHVnaW46OmJvdW5kc09uU2NyZWVuKCkgY29uc3QKIHsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmll
dyA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7CiAKICAgICBpZiAoIWZyYW1lVmll
dykKICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKQEAgLTE3MjEsNyArMTcxNiw3IEBAIGJvb2wg
UERGUGx1Z2luOjpoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpCiAg
ICAgCiBib29sIFBERlBsdWdpbjo6c2hvd0NvbnRleHRNZW51QXRQb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpCiB7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3Jl
RnJhbWUoKS0+dmlldygpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3Jl
RnJhbWUoKS0+dmlldygpOwogICAgIEludFBvaW50IGNvbnRlbnRzUG9pbnQgPSBmcmFtZVZpZXct
PmNvbnRlbnRzVG9Sb290Vmlldyhwb2ludCk7CiAgICAgV2ViTW91c2VFdmVudCBldmVudChXZWJF
dmVudDo6TW91c2VEb3duLCBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbiwgMCwgY29udGVudHNQ
b2ludCwgY29udGVudHNQb2ludCwgMCwgMCwgMCwgMSwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2Rp
Zmllcj4geyB9LCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGljayk7CiAgICAg
cmV0dXJuIGhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOwpAQCAtMTcyOSwxMSArMTcyNCwx
MSBAQCBib29sIFBERlBsdWdpbjo6c2hvd0NvbnRleHRNZW51QXRQb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpCiAKIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0
IFdlYk1vdXNlRXZlbnQmIGV2ZW50KQogewotICAgIGlmICghd2ViRnJhbWUoKS0+cGFnZSgpKQor
ICAgIGlmICghbV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSgpLT5wYWdlKCk7Ci0gICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJh
bWUuY29yZUZyYW1lKCktPnZpZXcoKTsKICAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+
Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVu
dC5wb3NpdGlvbigpKSwgSW50U2l6ZSgpKSkubG9jYXRpb24oKTsKIAogICAgIE5TVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbiB1aUxheW91dERpcmVjdGlvbiA9IHdlYlBhZ2UtPnVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24oKSA9PSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpM
VFIgPyBOU1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlcklu
dGVyZmFjZUxheW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OwpAQCAtMTg0MSwxMyArMTgzNiwxMyBA
QCBib29sIFBERlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVnaW4oKSBjb25zdAogewogICAgIC8vIDxv
YmplY3Q+IG9yIDxlbWJlZD4gcGx1Z2lucyB3aWxsIGFwcGVhciB0byBiZSBpbiB0aGVpciBwYXJl
bnQgZnJhbWUsIHNvIHdlIGhhdmUgdG8KICAgICAvLyBjaGVjayB3aGV0aGVyIG91ciBmcmFtZSdz
IHdpZGdldCBpcyBleGFjdGx5IG91ciBQbHVnaW5WaWV3LgotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgcmV0dXJuIGRv
Y3VtZW50LT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQq
Pihkb2N1bWVudCktPnBsdWdpbldpZGdldCgpID09IHBsdWdpblZpZXcoKTsKIH0KIAogYm9vbCBQ
REZQbHVnaW46OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSBjb25zdAogewotICAgIHJldHVybiB3
ZWJGcmFtZSgpLT5pc01haW5GcmFtZSgpICYmIGlzRnVsbEZyYW1lUGx1Z2luKCk7CisgICAgcmV0
dXJuIG1fZnJhbWUuaXNNYWluRnJhbWUoKSAmJiBpc0Z1bGxGcmFtZVBsdWdpbigpOwogfQogCiB2
b2lkIFBERlBsdWdpbjo6Y2xpY2tlZExpbmsoTlNVUkwgKnVybCkKQEAgLTE4NTYsNyArMTg1MSw3
IEBAIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGluayhOU1VSTCAqdXJsKQogICAgIGlmIChXVEY6
OnByb3RvY29sSXNKYXZhU2NyaXB0KGNvcmVVUkwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBG
cmFtZSogZnJhbWUgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUg
PSBtX2ZyYW1lLmNvcmVGcmFtZSgpOwogCiAgICAgUmVmUHRyPEV2ZW50PiBjb3JlRXZlbnQ7CiAg
ICAgaWYgKG1fbGFzdE1vdXNlRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCkBAIC0x
OTMzLDcgKzE5MjgsNyBAQCB2b2lkIFBERlBsdWdpbjo6c2F2ZVRvUERGKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgTlNEYXRhICpkYXRhID0gbGl2ZURhdGEoKTsKLSAgICB3ZWJGcmFtZSgpLT5w
YWdlKCktPnNhdmVQREZUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihtX3N1Z2dlc3RlZEZpbGVuYW1l
LCB3ZWJGcmFtZSgpLT51cmwoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihb
ZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhdKTsKKyAgICBtX2ZyYW1lLnBhZ2UoKS0+c2F2ZVBE
RlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIG1fZnJhbWUudXJs
KCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2Rh
dGEgbGVuZ3RoXSk7CiB9CiAKIHZvaWQgUERGUGx1Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0
aW9uKCkKQEAgLTE5NDksMTEgKzE5NDQsMTEgQEAgdm9pZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0
aXZlQXBwbGljYXRpb24oKQogICAgICAgICBtX3RlbXBvcmFyeVBERlVVSUQgPSBjcmVhdGVDYW5v
bmljYWxVVUlEU3RyaW5nKCk7CiAgICAgICAgIEFTU0VSVChtX3RlbXBvcmFyeVBERlVVSUQpOwog
Ci0gICAgICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5k
T3BlbldpdGhOYXRpdmVBcHBsaWNhdGlvbihtX3N1Z2dlc3RlZEZpbGVuYW1lLCB3ZWJGcmFtZSgp
LT51cmwoKSwgc3RhdGljX2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10p
LCBbZGF0YSBsZW5ndGhdLCBtX3RlbXBvcmFyeVBERlVVSUQpOworICAgICAgICBtX2ZyYW1lLnBh
Z2UoKS0+c2F2ZVBERlRvVGVtcG9yYXJ5Rm9sZGVyQW5kT3BlbldpdGhOYXRpdmVBcHBsaWNhdGlv
bihtX3N1Z2dlc3RlZEZpbGVuYW1lLCBtX2ZyYW1lLnVybCgpLCBzdGF0aWNfY2FzdDxjb25zdCB1
bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxlbmd0aF0sIG1fdGVtcG9yYXJ5
UERGVVVJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB3ZWJGcmFtZSgpLT5wYWdl
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6T3BlblBERkZyb21UZW1wb3JhcnlGb2xk
ZXJXaXRoTmF0aXZlQXBwbGljYXRpb24obV90ZW1wb3JhcnlQREZVVUlEKSk7CisgICAgbV9mcmFt
ZS5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6T3BlblBERkZyb21UZW1wb3Jh
cnlGb2xkZXJXaXRoTmF0aXZlQXBwbGljYXRpb24obV90ZW1wb3JhcnlQREZVVUlEKSk7CiB9CiAK
IHZvaWQgUERGUGx1Z2luOjp3cml0ZUl0ZW1zVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpwYXN0ZWJv
YXJkTmFtZSwgTlNBcnJheSAqaXRlbXMsIE5TQXJyYXkgKnR5cGVzKQpAQCAtMjAxNSw3ICsyMDEw
LDcgQEAgdm9pZCBQREZQbHVnaW46OnNob3dEZWZpbml0aW9uRm9yQXR0cmlidXRlZFN0cmluZyhO
U0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZywgQ0cKICAgICBkYXRhRm9yU2VsZWN0aW9uLnByZXNl
bnRhdGlvblRyYW5zaXRpb24gPSBUZXh0SW5kaWNhdG9yUHJlc2VudGF0aW9uVHJhbnNpdGlvbjo6
RmFkZUluOwogICAgIGRpY3Rpb25hcnlQb3B1cEluZm8udGV4dEluZGljYXRvciA9IGRhdGFGb3JT
ZWxlY3Rpb247CiAgICAgCi0gICAgd2ViRnJhbWUoKS0+cGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGRpY3Rpb25hcnlQb3B1cElu
Zm8pKTsKKyAgICBtX2ZyYW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChkaWN0aW9uYXJ5UG9wdXBJbmZvKSk7CiB9CiAKIHVu
c2lnbmVkIFBERlBsdWdpbjo6Y291bnRGaW5kTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHRhcmdldCwg
V2ViQ29yZTo6RmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgLyptYXhNYXRjaENvdW50Ki8p
CkBAIC0yMTIzLDcgKzIxMTgsNyBAQCB2b2lkIFBERlBsdWdpbjo6Zm9jdXNQcmV2aW91c0Fubm90
YXRpb24oKQogCiB2b2lkIFBERlBsdWdpbjo6bm90aWZ5U2VsZWN0aW9uQ2hhbmdlZChQREZTZWxl
Y3Rpb24gKikKIHsKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPmRpZENoYW5nZVNlbGVjdGlvbigp
OworICAgIG1fZnJhbWUucGFnZSgpLT5kaWRDaGFuZ2VTZWxlY3Rpb24oKTsKIH0KIAogc3RhdGlj
IGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY29yZUN1cnNvcihQREZMYXllckNvbnRyb2xsZXJDdXJz
b3JUeXBlIHR5cGUpCkBAIC0yMTQxLDcgKzIxMzYsNyBAQCBzdGF0aWMgY29uc3QgV2ViQ29yZTo6
Q3Vyc29yJiBjb3JlQ3Vyc29yKFBERkxheWVyQ29udHJvbGxlckN1cnNvclR5cGUgdHlwZSkKIAog
dm9pZCBQREZQbHVnaW46Om5vdGlmeUN1cnNvckNoYW5nZWQodWludDY0X3QgdHlwZSkKIHsKLSAg
ICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0Q3Vy
c29yKGNvcmVDdXJzb3Ioc3RhdGljX2Nhc3Q8UERGTGF5ZXJDb250cm9sbGVyQ3Vyc29yVHlwZT4o
dHlwZSkpKSk7CisgICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2V0Q3Vyc29yKGNvcmVDdXJzb3Ioc3RhdGljX2Nhc3Q8UERGTGF5ZXJDb250cm9sbGVyQ3Vy
c29yVHlwZT4odHlwZSkpKSk7CiB9CiAKIFN0cmluZyBQREZQbHVnaW46OmdldFNlbGVjdGlvblN0
cmluZygpIGNvbnN0CkBAIC0yMjY1LDcgKzIyNjAsNyBAQCBzdGF0aWMgTlNSZWN0IHJlY3RJblZp
ZXdTcGFjZUZvclJlY3RJbkxheW91dFNwYWNlKFBERkxheWVyQ29udHJvbGxlciogcGRmTGF5ZXJD
bwogICAgIAogV2ViQ29yZTo6QVhPYmplY3RDYWNoZSogUERGUGx1Z2luOjpheE9iamVjdENhY2hl
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPmRvY3VtZW50
KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICByZXR1cm4gbV9mcmFtZS5jb3JlRnJhbWUoKS0+ZG9j
dW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpOwogfQogCiBXZWJDb3JlOjpGbG9hdFJlY3QgUERGUGx1
Z2luOjpyZWN0Rm9yU2VsZWN0aW9uSW5Sb290VmlldyhQREZTZWxlY3Rpb24gKnNlbGVjdGlvbikg
Y29uc3QKQEAgLTIyOTQsMTIgKzIyODksMTIgQEAgQ0dGbG9hdCBQREZQbHVnaW46OnNjYWxlRmFj
dG9yKCkgY29uc3QKIAogdm9pZCBQREZQbHVnaW46OnBlcmZvcm1XZWJTZWFyY2goTlNTdHJpbmcg
KnN0cmluZykKIHsKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2VhcmNoVGhlV2ViKHN0cmluZykpOworICAgIG1fZnJhbWUucGFnZSgpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNlYXJjaFRoZVdlYihzdHJpbmcpKTsKIH0KIAogdm9p
ZCBQREZQbHVnaW46OnBlcmZvcm1TcG90bGlnaHRTZWFyY2goTlNTdHJpbmcgKnN0cmluZykKIHsK
LSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2Vh
cmNoV2l0aFNwb3RsaWdodChzdHJpbmcpKTsKKyAgICBtX2ZyYW1lLnBhZ2UoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3BvdGxpZ2h0KHN0cmluZykpOwogfQogCiBi
b29sIFBERlBsdWdpbjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJXaGVlbEV2ZW50JiBldmVu
dCkK
</data>
<flag name="review"
          id="408107"
          type_id="1"
          status="+"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392786</attachid>
            <date>2020-03-06 15:21:50 -0800</date>
            <delta_ts>2020-03-06 17:45:01 -0800</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>19316</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMTQzZWI5NzQ3NzAuLmFiMDcwNTZiMmU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDIwLTAzLTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBTb21lIFBERlBsdWdpbiBjbGVhbnVwIGluIHByZXAgZm9yIGluY3JlbWVudGFsIGxv
YWRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDg2OTgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAg
IC0gVGhlIGZyYW1lIGlzIG5ldmVyIGNsZWFyZWQsIHNvIG1ha2UgaXQgYSByZWZlcmVuY2UuCisg
ICAgICAgIC0gVXNlIGEgbmV3ICJudW1iZXIgb2Ygc3RyZWFtZWQgYnl0ZXMiIHZhcmlhYmxlIGlu
c3RlYWQgb2YgZ3JhYmJpbmcgbV9kYXRhJ3MgbGVuZ3RoLCAKKyAgICAgICAgICBhcyBtX2RhdGEg
d2lsbCBzb29uIGJlY29tZSBhICJzcGFyc2UiIGRhdGEgYnVmZmVyCisKKyAgICAgICAgUmVmYWN0
b3Igb25seS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW06CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6UERGUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjp1bmNvbmRpdGlvbmFsQ29tcGxldGVSYW5nZVJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmdldFJlc291cmNlQnl0ZXNBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6UERGUGx1Z2luOjp1cGRhdGVTY3JvbGxiYXJzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpjcmVhdGVTY3JvbGxiYXIpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmlzQWN0
aXZlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpmb3JjZVVwZGF0ZVNjcm9s
bGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpQREZQbHVnaW46OmpzUERGRG9jUHJpbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQ
bHVnaW46Omluc3RhbGxQREZEb2N1bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6
c3RyZWFtRGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46Om1hbnVh
bFN0cmVhbURpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjp1cGRh
dGVQYWdlQW5kRGV2aWNlU2NhbGVGYWN0b3JzKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2lu
Ojp3aWxsRGV0YWNoUmVuZGVyZXIpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmRlc3Ry
b3kpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBhaW50Q29udHJvbEZvckxheWVySW5D
b250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdU
b1NjcmVlbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Ym91bmRzT25TY3Jl
ZW4gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnNob3dDb250ZXh0TWVudUF0
UG9pbnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmhhbmRsZUNvbnRleHRNZW51RXZl
bnQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmlzRnVsbEZyYW1lUGx1Z2luIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpoYW5kbGVzUGFnZVNjYWxlRmFjdG9yIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpjbGlja2VkTGluayk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6c2F2ZVRvUERGKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpvcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjpzaG93RGVmaW5pdGlvbkZvckF0dHJpYnV0ZWRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46Om5vdGlmeVNlbGVjdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQ
REZQbHVnaW46Om5vdGlmeUN1cnNvckNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVn
aW46OmF4T2JqZWN0Q2FjaGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBl
cmZvcm1XZWJTZWFyY2gpOgorICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OnBlcmZvcm1TcG90
bGlnaHRTZWFyY2gpOgorCiAyMDIwLTAzLTA1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxl
LmNvbT4KIAogICAgICAgICBQcmUtZmV0Y2ggZmlyc3QgcGFnZSBpbiBuZXcgUERGIGxvYWRpbmcg
bW9kZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYv
UERGUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1
Z2luLmgKaW5kZXggOTE1ZWU4YmU2ODcuLmViYWQzNDgzZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5oCkBAIC0yNjEsOCArMjYxLDYg
QEAgcHJpdmF0ZToKICAgICBOU0RhdGEgKnJhd0RhdGEoKSBjb25zdCB7IHJldHVybiAoX19icmlk
Z2UgTlNEYXRhICopbV9kYXRhLmdldCgpOyB9CiAjZW5kaWYKIAotICAgIFdlYkZyYW1lKiB3ZWJG
cmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KLQogICAgIEpTT2JqZWN0UmVmIG1ha2VK
U1BERkRvYyhKU0NvbnRleHRSZWYpOwogICAgIHN0YXRpYyBKU1ZhbHVlUmVmIGpzUERGRG9jUHJp
bnQoSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09i
amVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10s
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbik7CiAKQEAgLTI3NCw3ICsyNzIsNyBAQCBwcml2YXRlOgog
ICAgIFBsdWdpblZpZXcqIHBsdWdpblZpZXcoKTsKICAgICBjb25zdCBQbHVnaW5WaWV3KiBwbHVn
aW5WaWV3KCkgY29uc3Q7CiAKLSAgICBXZWJGcmFtZSogbV9mcmFtZTsKKyAgICBXZWJGcmFtZSYg
bV9mcmFtZTsKIAogICAgIGJvb2wgbV9pc1Bvc3RTY3JpcHQgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9wZGZEb2N1bWVudFdhc011dGF0ZWQgeyBmYWxzZSB9OwpAQCAtMzA5LDYgKzMwNyw3IEBAIHBy
aXZhdGU6CiAKICAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKICAgICBSZXRhaW5QdHI8
Q0ZNdXRhYmxlRGF0YVJlZj4gbV9kYXRhOworICAgIHVpbnQ2NF90IG1fc3RyZWFtZWRCeXRlcyB7
IDAgfTsKIAogICAgIFJldGFpblB0cjxQREZEb2N1bWVudD4gbV9wZGZEb2N1bWVudDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5k
ZXggMTg0ZjJlNmU4NGIuLjM3YmExNzQxNjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTU3OSw3ICs1NzksNyBAQCBSZWY8
UERGUGx1Z2luPiBQREZQbHVnaW46OmNyZWF0ZShXZWJGcmFtZSYgZnJhbWUpCiAKIGlubGluZSBQ
REZQbHVnaW46OlBERlBsdWdpbihXZWJGcmFtZSYgZnJhbWUpCiAgICAgOiBQbHVnaW4oUERGUGx1
Z2luVHlwZSkKLSAgICAsIG1fZnJhbWUoJmZyYW1lKQorICAgICwgbV9mcmFtZShmcmFtZSkKICAg
ICAsIG1fY29udGFpbmVyTGF5ZXIoYWRvcHROUyhbW0NBTGF5ZXIgYWxsb2NdIGluaXRdKSkKICAg
ICAsIG1fY29udGVudExheWVyKGFkb3B0TlMoW1tDQUxheWVyIGFsbG9jXSBpbml0XSkpCiAgICAg
LCBtX3Njcm9sbENvcm5lckxheWVyKGFkb3B0TlMoW1tXS1BERlBsdWdpblNjcm9sbGJhckxheWVy
IGFsbG9jXSBpbml0V2l0aFBERlBsdWdpbjp0aGlzXSkpCkBAIC01OTMsNyArNTkzLDcgQEAgaW5s
aW5lIFBERlBsdWdpbjo6UERGUGx1Z2luKFdlYkZyYW1lJiBmcmFtZSkKICAgICBtX3BkZkxheWVy
Q29udHJvbGxlci5nZXQoKS5wYXJlbnRMYXllciA9IG1fY29udGVudExheWVyLmdldCgpOwogCiAg
ICAgaWYgKHN1cHBvcnRzRm9ybXMoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3
ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgRG9jdW1lbnQqIGRv
Y3VtZW50ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICAgICAgbV9hbm5v
dGF0aW9uQ29udGFpbmVyID0gZG9jdW1lbnQtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxzZSk7
CiAgICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNo
cm9uaXphdGlvbihpZEF0dHIsIEF0b21TdHJpbmcoImFubm90YXRpb25Db250YWluZXIiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogCkBAIC02MDYsMTMgKzYwNiwxMyBAQCBp
bmxpbmUgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJhbWUmIGZyYW1lKQogCiAgICAgbV9hY2Nl
c3NpYmlsaXR5T2JqZWN0ID0gYWRvcHROUyhbW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVj
dCBhbGxvY10gaW5pdFdpdGhQREZQbHVnaW46dGhpc10pOwogICAgIFttX2FjY2Vzc2liaWxpdHlP
YmplY3Qgc2V0UGRmTGF5ZXJDb250cm9sbGVyOm1fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpXTsK
LSAgICBbbV9hY2Nlc3NpYmlsaXR5T2JqZWN0IHNldFBhcmVudDp3ZWJGcmFtZSgpLT5wYWdlKCkt
PmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKV07CisgICAgW21fYWNjZXNzaWJpbGl0eU9iamVj
dCBzZXRQYXJlbnQ6bV9mcmFtZS5wYWdlKCktPmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QoKV07
CiAKICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX2NvbnRlbnRMYXllci5nZXQo
KV07CiAgICAgW21fY29udGFpbmVyTGF5ZXIgYWRkU3VibGF5ZXI6bV9zY3JvbGxDb3JuZXJMYXll
ci5nZXQoKV07CiAjaWYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKQog
ICAgIGlmIChbbV9wZGZMYXllckNvbnRyb2xsZXIgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihzZXREZXZpY2VDb2xvclNwYWNlOildKSB7Ci0gICAgICAgIGF1dG8gdmlldyA9IHdlYkZyYW1l
KCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgICAgIGF1dG8gdmlldyA9IG1fZnJhbWUuY29y
ZUZyYW1lKCktPnZpZXcoKTsKICAgICAgICAgW21fcGRmTGF5ZXJDb250cm9sbGVyIHNldERldmlj
ZUNvbG9yU3BhY2U6c2NyZWVuQ29sb3JTcGFjZSh2aWV3KV07CiAgICAgfQogI2VuZGlmCkBAIC03
MzMsMjIgKzczMywyMyBAQCB2b2lkIFBERlBsdWdpbjo6dW5jb25kaXRpb25hbENvbXBsZXRlT3V0
c3RhbmRpbmdSYW5nZVJlcXVlc3RzKCkKIAogdm9pZCBQREZQbHVnaW46OnVuY29uZGl0aW9uYWxD
b21wbGV0ZVJhbmdlUmVxdWVzdChCeXRlUmFuZ2VSZXF1ZXN0JiByZXF1ZXN0KQogewotICAgIHVp
bnQ2NF90IGZ1bGxTaXplID0gbV9kYXRhID8gc3RhdGljX2Nhc3Q8dWludDY0X3Q+KENGRGF0YUdl
dExlbmd0aChtX2RhdGEuZ2V0KCkpKSA6IDA7Ci0gICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90
PihyZXF1ZXN0LnBvc2l0aW9uKSA+PSBmdWxsU2l6ZSkgeworICAgIGlmIChzdGF0aWNfY2FzdDx1
aW50NjRfdD4ocmVxdWVzdC5wb3NpdGlvbikgPj0gbV9zdHJlYW1lZEJ5dGVzKSB7CiAgICAgICAg
IHJlcXVlc3QuY29tcGxldGlvbkhhbmRsZXIobnVsbHB0ciwgMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBhdXRvIGNvdW50ID0gcmVxdWVzdC5wb3NpdGlvbiArIHJlcXVlc3QuY291
bnQgPiBmdWxsU2l6ZSA/IGZ1bGxTaXplIC0gcmVxdWVzdC5wb3NpdGlvbiA6IHJlcXVlc3QuY291
bnQ7CisgICAgQVNTRVJUKG1fZGF0YSk7CisKKyAgICBhdXRvIGNvdW50ID0gcmVxdWVzdC5wb3Np
dGlvbiArIHJlcXVlc3QuY291bnQgPiBtX3N0cmVhbWVkQnl0ZXMgPyBtX3N0cmVhbWVkQnl0ZXMg
LSByZXF1ZXN0LnBvc2l0aW9uIDogcmVxdWVzdC5jb3VudDsKICAgICByZXF1ZXN0LmNvbXBsZXRp
b25IYW5kbGVyKENGRGF0YUdldEJ5dGVQdHIobV9kYXRhLmdldCgpKSArIHJlcXVlc3QucG9zaXRp
b24sIGNvdW50KTsKIH0KIAogdm9pZCBQREZQbHVnaW46OmdldFJlc291cmNlQnl0ZXNBdFBvc2l0
aW9uKHNpemVfdCBjb3VudCwgb2ZmX3QgcG9zaXRpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgdWludDhfdCosIHNpemVfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOyAKIAotICAg
IHVpbnQ2NF90IGRhdGFMZW5ndGggPSBtX2RhdGEgPyBzdGF0aWNfY2FzdDx1aW50NjRfdD4oQ0ZE
YXRhR2V0TGVuZ3RoKG1fZGF0YS5nZXQoKSkpIDogMDsKLSAgICBpZiAobV9kYXRhICYmIGRhdGFM
ZW5ndGggPj0gcG9zaXRpb24gKyBjb3VudCkgeworICAgIGlmIChtX3N0cmVhbWVkQnl0ZXMgPj0g
cG9zaXRpb24gKyBjb3VudCkgeworICAgICAgICBBU1NFUlQobV9kYXRhKTsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoQ0ZEYXRhR2V0Qnl0ZVB0cihtX2RhdGEuZ2V0KCkpICsgcG9zaXRpb24s
IGNvdW50KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg0OSw3ICs4NTAsNyBAQCB2b2lk
IFBERlBsdWdpbjo6dXBkYXRlU2Nyb2xsYmFycygpCiAgICAgICAgIG1fdmVydGljYWxTY3JvbGxi
YXItPnNldEZyYW1lUmVjdChzY3JvbGxiYXJSZWN0KTsKICAgICB9CiAKLSAgICBGcmFtZVZpZXcq
IGZyYW1lVmlldyA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgRnJhbWVWaWV3
KiBmcmFtZVZpZXcgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7CiAgICAgaWYgKCFmcmFt
ZVZpZXcpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTAwLDcgKzkwMSw3IEBAIFJlZjxTY3JvbGxi
YXI+IFBERlBsdWdpbjo6Y3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVu
dGF0aW9uKQogICAgICAgICBbbV9jb250YWluZXJMYXllciBhZGRTdWJsYXllcjptX3ZlcnRpY2Fs
U2Nyb2xsYmFyTGF5ZXIuZ2V0KCldOwogICAgIH0KICAgICBkaWRBZGRTY3JvbGxiYXIod2lkZ2V0
LnB0cigpLCBvcmllbnRhdGlvbik7Ci0gICAgaWYgKEZyYW1lKiBmcmFtZSA9IHdlYkZyYW1lKCkt
PmNvcmVGcmFtZSgpKSB7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9mcmFtZS5jb3JlRnJhbWUo
KSkgewogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IGZyYW1lLT5wYWdlKCkpIHsKICAgICAgICAg
ICAgIGlmIChwYWdlLT5pc01vbml0b3JpbmdXaGVlbEV2ZW50cygpKQogICAgICAgICAgICAgICAg
IHNjcm9sbEFuaW1hdG9yKCkuc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKHBhZ2UtPndoZWVsRXZl
bnRUZXN0TW9uaXRvcigpKTsKQEAgLTk5MCw3ICs5OTEsNyBAQCBJbnRSZWN0IFBERlBsdWdpbjo6
c2Nyb2xsYWJsZUFyZWFCb3VuZGluZ0JveChib29sKikgY29uc3QKIAogYm9vbCBQREZQbHVnaW46
OmlzQWN0aXZlKCkgY29uc3QKIHsKLSAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IG1fZnJhbWUt
PmNvcmVGcmFtZSgpKSB7CisgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLmNvcmVG
cmFtZSgpKSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gY29yZUZyYW1lLT5wYWdlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuaXNBY3RpdmUoKTsKICAg
ICB9CkBAIC0xMDAwLDcgKzEwMDEsNyBAQCBib29sIFBERlBsdWdpbjo6aXNBY3RpdmUoKSBjb25z
dAogCiBib29sIFBERlBsdWdpbjo6Zm9yY2VVcGRhdGVTY3JvbGxiYXJzT25NYWluVGhyZWFkRm9y
UGVyZm9ybWFuY2VUZXN0aW5nKCkgY29uc3QKIHsKLSAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9
IG1fZnJhbWUtPmNvcmVGcmFtZSgpKSB7CisgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBtX2Zy
YW1lLmNvcmVGcmFtZSgpKSB7CiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gY29yZUZyYW1lLT5w
YWdlKCkpCiAgICAgICAgICAgICByZXR1cm4gcGFnZS0+c2V0dGluZ3MoKS5mb3JjZVVwZGF0ZVNj
cm9sbGJhcnNPbk1haW5UaHJlYWRGb3JQZXJmb3JtYW5jZVRlc3RpbmcoKTsKICAgICB9CkBAIC0x
MDY4LDEzICsxMDY5LDkgQEAgc3RhdGljIHZvaWQganNQREZEb2NGaW5hbGl6ZShKU09iamVjdFJl
ZiBvYmplY3QpCiAKIEpTVmFsdWVSZWYgUERGUGx1Z2luOjpqc1BERkRvY1ByaW50KEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewotICAgIFBERlBsdWdpbiogcGRmVmlldyA9IHN0YXRpY19jYXN0
PFBERlBsdWdpbio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Ci0KLSAgICBXZWJG
cmFtZSogZnJhbWUgPSBwZGZWaWV3LT5tX2ZyYW1lOwotICAgIGlmICghZnJhbWUpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjdHgpOworICAgIFBERlBsdWdpbiogcGRmUGx1
Z2luID0gc3RhdGljX2Nhc3Q8UERGUGx1Z2luKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmpl
Y3QpKTsKIAotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZS0+Y29yZUZyYW1lKCk7CisgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IHBkZlBsdWdpbi0+bV9mcmFtZS5jb3JlRnJhbWUoKTsKICAgICBp
ZiAoIWNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGN0eCk7
CiAKQEAgLTExNTYsNyArMTE1Myw3IEBAIHZvaWQgUERGUGx1Z2luOjppbnN0YWxsUERGRG9jdW1l
bnQoKQogICAgICAgICBjcmVhdGVQYXNzd29yZEVudHJ5Rm9ybSgpOwogCiAgICAgaWYgKFttX3Bk
ZkxheWVyQ29udHJvbGxlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHNldFVSTEZyYWdt
ZW50OildKSB7Ci0gICAgICAgIFN0cmluZyBwZGZVUkxGcmFnbWVudCA9IHdlYkZyYW1lKCktPnVy
bCgpLmZyYWdtZW50SWRlbnRpZmllcigpOworICAgICAgICBTdHJpbmcgcGRmVVJMRnJhZ21lbnQg
PSBtX2ZyYW1lLnVybCgpLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgICAgICBbbV9wZGZMYXll
ckNvbnRyb2xsZXIgc2V0VVJMRnJhZ21lbnQ6cGRmVVJMRnJhZ21lbnRdOwogICAgIH0KIH0KQEAg
LTExOTAsNiArMTE4Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpzdHJlYW1EaWRSZWNlaXZlRGF0YSh1
aW50NjRfdCBzdHJlYW1JRCwgY29uc3QgY2hhciogYnl0ZXMsIGludCBsCiAgICAgICAgIG1fZGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKICAgICBDRkRhdGFBcHBl
bmRCeXRlcyhtX2RhdGEuZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgqPihieXRl
cyksIGxlbmd0aCk7CisgICAgbV9zdHJlYW1lZEJ5dGVzICs9IGxlbmd0aDsKIH0KIAogdm9pZCBQ
REZQbHVnaW46OnN0cmVhbURpZEZpbmlzaExvYWRpbmcodWludDY0X3Qgc3RyZWFtSUQpCkBAIC0x
MjIxLDEyICsxMjE5LDEzIEBAIHZvaWQgUERGUGx1Z2luOjptYW51YWxTdHJlYW1EaWRSZWNlaXZl
RGF0YShjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKICAgICAgICAgbV9kYXRhID0gYWRv
cHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKIAogICAgIENGRGF0YUFwcGVuZEJ5dGVz
KG1fZGF0YS5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBVSW50OCo+KGJ5dGVzKSwgbGVu
Z3RoKTsKKyAgICBtX3N0cmVhbWVkQnl0ZXMgKz0gbGVuZ3RoOwogCiAjaWYgSEFWRShJTkNSRU1F
TlRBTF9QREZfQVBJUykKICAgICBzaXplX3QgaW5kZXggPSAwOwogICAgIHdoaWxlIChpbmRleCA8
IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0cy5zaXplKCkpIHsKICAgICAgICAgYXV0byYg
cmVxdWVzdCA9IG1fb3V0c3RhbmRpbmdCeXRlUmFuZ2VSZXF1ZXN0c1tpbmRleF07Ci0gICAgICAg
IGlmIChzdGF0aWNfY2FzdDx1aW50NjRfdD4oQ0ZEYXRhR2V0TGVuZ3RoKG1fZGF0YS5nZXQoKSkp
ID49IHJlcXVlc3QucG9zaXRpb24gKyByZXF1ZXN0LmNvdW50KSB7CisgICAgICAgIGlmIChtX3N0
cmVhbWVkQnl0ZXMgPj0gcmVxdWVzdC5wb3NpdGlvbiArIHJlcXVlc3QuY291bnQpIHsKICAgICAg
ICAgICAgIHJlcXVlc3QuY29tcGxldGlvbkhhbmRsZXIoQ0ZEYXRhR2V0Qnl0ZVB0cihtX2RhdGEu
Z2V0KCkpICsgcmVxdWVzdC5wb3NpdGlvbiwgcmVxdWVzdC5jb3VudCk7CiAgICAgICAgICAgICBt
X291dHN0YW5kaW5nQnl0ZVJhbmdlUmVxdWVzdHMucmVtb3ZlKGluZGV4KTsKICAgICAgICAgICAg
IGNvbnRpbnVlOwpAQCAtMTI5MCw3ICsxMjg5LDcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZVBh
Z2VBbmREZXZpY2VTY2FsZUZhY3RvcnMoKQogewogICAgIGRvdWJsZSBuZXdTY2FsZUZhY3RvciA9
IGNvbnRyb2xsZXIoKS0+Y29udGVudHNTY2FsZUZhY3RvcigpOwogICAgIGlmICghaGFuZGxlc1Bh
Z2VTY2FsZUZhY3RvcigpKQotICAgICAgICBuZXdTY2FsZUZhY3RvciAqPSB3ZWJGcmFtZSgpLT5w
YWdlKCktPnBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICBuZXdTY2FsZUZhY3RvciAqPSBtX2Zy
YW1lLnBhZ2UoKS0+cGFnZVNjYWxlRmFjdG9yKCk7CiAKICAgICBpZiAobmV3U2NhbGVGYWN0b3Ig
IT0gW21fcGRmTGF5ZXJDb250cm9sbGVyIGRldmljZVNjYWxlRmFjdG9yXSkKICAgICAgICAgW21f
cGRmTGF5ZXJDb250cm9sbGVyIHNldERldmljZVNjYWxlRmFjdG9yOm5ld1NjYWxlRmFjdG9yXTsK
QEAgLTEzMjUsMTAgKzEzMjQsOCBAQCBib29sIFBERlBsdWdpbjo6aW5pdGlhbGl6ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogCiB2b2lkIFBERlBsdWdpbjo6d2lsbERldGFjaFJlbmRl
cmVyKCkKIHsKLSAgICBpZiAod2ViRnJhbWUoKSkgewotICAgICAgICBpZiAoRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpKQotICAgICAgICAgICAg
ZnJhbWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKLSAgICB9CisgICAgaWYgKGF1
dG8qIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZyYW1lKCktPnZpZXcoKSkKKyAgICAgICAgZnJh
bWVWaWV3LT5yZW1vdmVTY3JvbGxhYmxlQXJlYSh0aGlzKTsKIH0KIAogdm9pZCBQREZQbHVnaW46
OmRlc3Ryb3koKQpAQCAtMTM0NywxMCArMTM0NCw4IEBAIHZvaWQgUERGUGx1Z2luOjpkZXN0cm95
KCkKIAogICAgIG1fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpLmRlbGVnYXRlID0gMDsKIAotICAg
IGlmICh3ZWJGcmFtZSgpKSB7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdl
YkZyYW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCkpCi0gICAgICAgICAgICBmcmFtZVZpZXctPnJl
bW92ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwotICAgIH0KKyAgICBpZiAoYXV0byogZnJhbWVWaWV3
ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpKQorICAgICAgICBmcmFtZVZpZXctPnJlbW92
ZVNjcm9sbGFibGVBcmVhKHRoaXMpOwogCiAgICAgbV9hY3RpdmVBbm5vdGF0aW9uID0gbnVsbHB0
cjsKICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBudWxscHRyOwpAQCAtMTM3Niw3ICsxMzcx
LDcgQEAgdm9pZCBQREZQbHVnaW46OnVwZGF0ZUNvbnRyb2xUaW50cyhHcmFwaGljc0NvbnRleHQm
IGdyYXBoaWNzQ29udGV4dCkKIHZvaWQgUERGUGx1Z2luOjpwYWludENvbnRyb2xGb3JMYXllcklu
Q29udGV4dChDQUxheWVyICpsYXllciwgQ0dDb250ZXh0UmVmIGNvbnRleHQpCiB7CiAjaWYgUExB
VEZPUk0oTUFDKQotICAgIGF1dG8qIHBhZ2UgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+cGFn
ZSgpOworICAgIGF1dG8qIHBhZ2UgPSBtX2ZyYW1lLmNvcmVGcmFtZSgpLT5wYWdlKCk7CiAgICAg
TG9jYWxEZWZhdWx0U3lzdGVtQXBwZWFyYW5jZSBsb2NhbEFwcGVhcmFuY2UocGFnZS0+dXNlRGFy
a0FwcGVhcmFuY2UoKSk7CiAjZW5kaWYKIApAQCAtMTQ1NywxOSArMTQ1MiwxOSBAQCBJbnRQb2lu
dCBQREZQbHVnaW46OmNvbnZlcnRGcm9tUm9vdFZpZXdUb1BERlZpZXcoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdAogCiBGbG9hdFJlY3QgUERGUGx1Z2luOjpjb252ZXJ0RnJvbVBERlZpZXdU
b1NjcmVlbihjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgIEZyYW1lVmll
dyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+dmlldygpOwogCiAgICAgaWYgKCFm
cmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIEZsb2F0UmVjdCB1
cGRhdGVkUmVjdCA9IHJlY3Q7CiAgICAgdXBkYXRlZFJlY3Quc2V0TG9jYXRpb24oY29udmVydEZy
b21QREZWaWV3VG9Sb290VmlldyhJbnRQb2ludCh1cGRhdGVkUmVjdC5sb2NhdGlvbigpKSkpOwot
ICAgIHJldHVybiB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5yb290
Vmlld1RvU2NyZWVuKGVuY2xvc2luZ0ludFJlY3QodXBkYXRlZFJlY3QpKTsKKyAgICByZXR1cm4g
bV9mcmFtZS5jb3JlRnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS5yb290Vmlld1RvU2NyZWVuKGVu
Y2xvc2luZ0ludFJlY3QodXBkYXRlZFJlY3QpKTsKIH0KIAogSW50UmVjdCBQREZQbHVnaW46OmJv
dW5kc09uU2NyZWVuKCkgY29uc3QKIHsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYkZy
YW1lKCktPmNvcmVGcmFtZSgpLT52aWV3KCk7CisgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBt
X2ZyYW1lLmNvcmVGcmFtZSgpLT52aWV3KCk7CiAKICAgICBpZiAoIWZyYW1lVmlldykKICAgICAg
ICAgcmV0dXJuIEludFJlY3QoKTsKQEAgLTE3MjEsNyArMTcxNiw3IEBAIGJvb2wgUERGUGx1Z2lu
OjpoYW5kbGVNb3VzZUxlYXZlRXZlbnQoY29uc3QgV2ViTW91c2VFdmVudCYpCiAgICAgCiBib29s
IFBERlBsdWdpbjo6c2hvd0NvbnRleHRNZW51QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiB7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+
dmlldygpOworICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbV9mcmFtZS5jb3JlRnJhbWUoKS0+
dmlldygpOwogICAgIEludFBvaW50IGNvbnRlbnRzUG9pbnQgPSBmcmFtZVZpZXctPmNvbnRlbnRz
VG9Sb290Vmlldyhwb2ludCk7CiAgICAgV2ViTW91c2VFdmVudCBldmVudChXZWJFdmVudDo6TW91
c2VEb3duLCBXZWJNb3VzZUV2ZW50OjpSaWdodEJ1dHRvbiwgMCwgY29udGVudHNQb2ludCwgY29u
dGVudHNQb2ludCwgMCwgMCwgMCwgMSwgT3B0aW9uU2V0PFdlYkV2ZW50OjpNb2RpZmllcj4geyB9
LCBXYWxsVGltZTo6bm93KCksIFdlYkNvcmU6OkZvcmNlQXRDbGljayk7CiAgICAgcmV0dXJuIGhh
bmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOwpAQCAtMTcyOSwxMSArMTcyNCwxMSBAQCBib29s
IFBERlBsdWdpbjo6c2hvd0NvbnRleHRNZW51QXRQb2ludChjb25zdCBJbnRQb2ludCYgcG9pbnQp
CiAKIGJvb2wgUERGUGx1Z2luOjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KGNvbnN0IFdlYk1vdXNl
RXZlbnQmIGV2ZW50KQogewotICAgIGlmICghd2ViRnJhbWUoKS0+cGFnZSgpKQorICAgIGlmICgh
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSB3ZWJGcmFtZSgpLT5wYWdlKCk7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3
ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+dmlldygpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBt
X2ZyYW1lLnBhZ2UoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fZnJhbWUuY29yZUZy
YW1lKCktPnZpZXcoKTsKICAgICBJbnRQb2ludCBwb2ludCA9IGZyYW1lVmlldy0+Y29udGVudHNU
b1NjcmVlbihJbnRSZWN0KGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyhldmVudC5wb3NpdGlv
bigpKSwgSW50U2l6ZSgpKSkubG9jYXRpb24oKTsKIAogICAgIE5TVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiB1aUxheW91dERpcmVjdGlvbiA9IHdlYlBhZ2UtPnVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24oKSA9PSBVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uOjpMVFIgPyBOU1Vz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb25MZWZ0VG9SaWdodCA6IE5TVXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvblJpZ2h0VG9MZWZ0OwpAQCAtMTg0MSwxMyArMTgzNiwxMyBAQCBib29sIFBE
RlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVnaW4oKSBjb25zdAogewogICAgIC8vIDxvYmplY3Q+IG9y
IDxlbWJlZD4gcGx1Z2lucyB3aWxsIGFwcGVhciB0byBiZSBpbiB0aGVpciBwYXJlbnQgZnJhbWUs
IHNvIHdlIGhhdmUgdG8KICAgICAvLyBjaGVjayB3aGV0aGVyIG91ciBmcmFtZSdzIHdpZGdldCBp
cyBleGFjdGx5IG91ciBQbHVnaW5WaWV3LgotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdlYkZy
YW1lKCktPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fZnJhbWUuY29yZUZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgcmV0dXJuIGRvY3VtZW50LT5p
c1BsdWdpbkRvY3VtZW50KCkgJiYgc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihkb2N1bWVu
dCktPnBsdWdpbldpZGdldCgpID09IHBsdWdpblZpZXcoKTsKIH0KIAogYm9vbCBQREZQbHVnaW46
OmhhbmRsZXNQYWdlU2NhbGVGYWN0b3IoKSBjb25zdAogewotICAgIHJldHVybiB3ZWJGcmFtZSgp
LT5pc01haW5GcmFtZSgpICYmIGlzRnVsbEZyYW1lUGx1Z2luKCk7CisgICAgcmV0dXJuIG1fZnJh
bWUuaXNNYWluRnJhbWUoKSAmJiBpc0Z1bGxGcmFtZVBsdWdpbigpOwogfQogCiB2b2lkIFBERlBs
dWdpbjo6Y2xpY2tlZExpbmsoTlNVUkwgKnVybCkKQEAgLTE4NTYsNyArMTg1MSw3IEBAIHZvaWQg
UERGUGx1Z2luOjpjbGlja2VkTGluayhOU1VSTCAqdXJsKQogICAgIGlmIChXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KGNvcmVVUkwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZSogZnJh
bWUgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKTsKKyAgICBhdXRvKiBmcmFtZSA9IG1fZnJhbWUu
Y29yZUZyYW1lKCk7CiAKICAgICBSZWZQdHI8RXZlbnQ+IGNvcmVFdmVudDsKICAgICBpZiAobV9s
YXN0TW91c2VFdmVudC50eXBlKCkgIT0gV2ViRXZlbnQ6Ok5vVHlwZSkKQEAgLTE5MzMsNyArMTky
OCw3IEBAIHZvaWQgUERGUGx1Z2luOjpzYXZlVG9QREYoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBOU0RhdGEgKmRhdGEgPSBsaXZlRGF0YSgpOwotICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2F2
ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVyKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIHdlYkZyYW1l
KCktPnVybCgpLCBzdGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVz
XSksIFtkYXRhIGxlbmd0aF0pOworICAgIG1fZnJhbWUucGFnZSgpLT5zYXZlUERGVG9GaWxlSW5E
b3dubG9hZHNGb2xkZXIobV9zdWdnZXN0ZWRGaWxlbmFtZSwgbV9mcmFtZS51cmwoKSwgc3RhdGlj
X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhciAqPihbZGF0YSBieXRlc10pLCBbZGF0YSBsZW5ndGhd
KTsKIH0KIAogdm9pZCBQREZQbHVnaW46Om9wZW5XaXRoTmF0aXZlQXBwbGljYXRpb24oKQpAQCAt
MTk0OSwxMSArMTk0NCwxMSBAQCB2b2lkIFBERlBsdWdpbjo6b3BlbldpdGhOYXRpdmVBcHBsaWNh
dGlvbigpCiAgICAgICAgIG1fdGVtcG9yYXJ5UERGVVVJRCA9IGNyZWF0ZUNhbm9uaWNhbFVVSURT
dHJpbmcoKTsKICAgICAgICAgQVNTRVJUKG1fdGVtcG9yYXJ5UERGVVVJRCk7CiAKLSAgICAgICAg
d2ViRnJhbWUoKS0+cGFnZSgpLT5zYXZlUERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5h
dGl2ZUFwcGxpY2F0aW9uKG1fc3VnZ2VzdGVkRmlsZW5hbWUsIHdlYkZyYW1lKCktPnVybCgpLCBz
dGF0aWNfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyICo+KFtkYXRhIGJ5dGVzXSksIFtkYXRhIGxl
bmd0aF0sIG1fdGVtcG9yYXJ5UERGVVVJRCk7CisgICAgICAgIG1fZnJhbWUucGFnZSgpLT5zYXZl
UERGVG9UZW1wb3JhcnlGb2xkZXJBbmRPcGVuV2l0aE5hdGl2ZUFwcGxpY2F0aW9uKG1fc3VnZ2Vz
dGVkRmlsZW5hbWUsIG1fZnJhbWUudXJsKCksIHN0YXRpY19jYXN0PGNvbnN0IHVuc2lnbmVkIGNo
YXIgKj4oW2RhdGEgYnl0ZXNdKSwgW2RhdGEgbGVuZ3RoXSwgbV90ZW1wb3JhcnlQREZVVUlEKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpPcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldpdGhOYXRp
dmVBcHBsaWNhdGlvbihtX3RlbXBvcmFyeVBERlVVSUQpKTsKKyAgICBtX2ZyYW1lLnBhZ2UoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpPcGVuUERGRnJvbVRlbXBvcmFyeUZvbGRlcldp
dGhOYXRpdmVBcHBsaWNhdGlvbihtX3RlbXBvcmFyeVBERlVVSUQpKTsKIH0KIAogdm9pZCBQREZQ
bHVnaW46OndyaXRlSXRlbXNUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKnBhc3RlYm9hcmROYW1lLCBO
U0FycmF5ICppdGVtcywgTlNBcnJheSAqdHlwZXMpCkBAIC0yMDE1LDcgKzIwMTAsNyBAQCB2b2lk
IFBERlBsdWdpbjo6c2hvd0RlZmluaXRpb25Gb3JBdHRyaWJ1dGVkU3RyaW5nKE5TQXR0cmlidXRl
ZFN0cmluZyAqc3RyaW5nLCBDRwogICAgIGRhdGFGb3JTZWxlY3Rpb24ucHJlc2VudGF0aW9uVHJh
bnNpdGlvbiA9IFRleHRJbmRpY2F0b3JQcmVzZW50YXRpb25UcmFuc2l0aW9uOjpGYWRlSW47CiAg
ICAgZGljdGlvbmFyeVBvcHVwSW5mby50ZXh0SW5kaWNhdG9yID0gZGF0YUZvclNlbGVjdGlvbjsK
ICAgICAKLSAgICB3ZWJGcmFtZSgpLT5wYWdlKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoZGljdGlvbmFyeVBvcHVwSW5mbykpOworICAg
IG1fZnJhbWUucGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwKGRpY3Rpb25hcnlQb3B1cEluZm8pKTsKIH0KIAogdW5zaWduZWQgUERG
UGx1Z2luOjpjb3VudEZpbmRNYXRjaGVzKGNvbnN0IFN0cmluZyYgdGFyZ2V0LCBXZWJDb3JlOjpG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCAvKm1heE1hdGNoQ291bnQqLykKQEAgLTIxMjMs
NyArMjExOCw3IEBAIHZvaWQgUERGUGx1Z2luOjpmb2N1c1ByZXZpb3VzQW5ub3RhdGlvbigpCiAK
IHZvaWQgUERGUGx1Z2luOjpub3RpZnlTZWxlY3Rpb25DaGFuZ2VkKFBERlNlbGVjdGlvbiAqKQog
ewotICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+ZGlkQ2hhbmdlU2VsZWN0aW9uKCk7CisgICAgbV9m
cmFtZS5wYWdlKCktPmRpZENoYW5nZVNlbGVjdGlvbigpOwogfQogCiBzdGF0aWMgY29uc3QgV2Vi
Q29yZTo6Q3Vyc29yJiBjb3JlQ3Vyc29yKFBERkxheWVyQ29udHJvbGxlckN1cnNvclR5cGUgdHlw
ZSkKQEAgLTIxNDEsNyArMjEzNiw3IEBAIHN0YXRpYyBjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGNv
cmVDdXJzb3IoUERGTGF5ZXJDb250cm9sbGVyQ3Vyc29yVHlwZSB0eXBlKQogCiB2b2lkIFBERlBs
dWdpbjo6bm90aWZ5Q3Vyc29yQ2hhbmdlZCh1aW50NjRfdCB0eXBlKQogewotICAgIHdlYkZyYW1l
KCktPnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRDdXJzb3IoY29yZUN1
cnNvcihzdGF0aWNfY2FzdDxQREZMYXllckNvbnRyb2xsZXJDdXJzb3JUeXBlPih0eXBlKSkpKTsK
KyAgICBtX2ZyYW1lLnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRDdXJz
b3IoY29yZUN1cnNvcihzdGF0aWNfY2FzdDxQREZMYXllckNvbnRyb2xsZXJDdXJzb3JUeXBlPih0
eXBlKSkpKTsKIH0KIAogU3RyaW5nIFBERlBsdWdpbjo6Z2V0U2VsZWN0aW9uU3RyaW5nKCkgY29u
c3QKQEAgLTIyNjUsNyArMjI2MCw3IEBAIHN0YXRpYyBOU1JlY3QgcmVjdEluVmlld1NwYWNlRm9y
UmVjdEluTGF5b3V0U3BhY2UoUERGTGF5ZXJDb250cm9sbGVyKiBwZGZMYXllckNvCiAgICAgCiBX
ZWJDb3JlOjpBWE9iamVjdENhY2hlKiBQREZQbHVnaW46OmF4T2JqZWN0Q2FjaGUoKSBjb25zdAog
ewotICAgIHJldHVybiB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+YXhPYmpl
Y3RDYWNoZSgpOworICAgIHJldHVybiBtX2ZyYW1lLmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5h
eE9iamVjdENhY2hlKCk7CiB9CiAKIFdlYkNvcmU6OkZsb2F0UmVjdCBQREZQbHVnaW46OnJlY3RG
b3JTZWxlY3Rpb25JblJvb3RWaWV3KFBERlNlbGVjdGlvbiAqc2VsZWN0aW9uKSBjb25zdApAQCAt
MjI5NCwxMiArMjI4OSwxMiBAQCBDR0Zsb2F0IFBERlBsdWdpbjo6c2NhbGVGYWN0b3IoKSBjb25z
dAogCiB2b2lkIFBERlBsdWdpbjo6cGVyZm9ybVdlYlNlYXJjaChOU1N0cmluZyAqc3RyaW5nKQog
ewotICAgIHdlYkZyYW1lKCktPnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
ZWFyY2hUaGVXZWIoc3RyaW5nKSk7CisgICAgbV9mcmFtZS5wYWdlKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2VhcmNoVGhlV2ViKHN0cmluZykpOwogfQogCiB2b2lkIFBERlBsdWdp
bjo6cGVyZm9ybVNwb3RsaWdodFNlYXJjaChOU1N0cmluZyAqc3RyaW5nKQogewotICAgIHdlYkZy
YW1lKCktPnBhZ2UoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZWFyY2hXaXRoU3Bv
dGxpZ2h0KHN0cmluZykpOworICAgIG1fZnJhbWUucGFnZSgpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlNlYXJjaFdpdGhTcG90bGlnaHQoc3RyaW5nKSk7CiB9CiAKIGJvb2wgUERGUGx1
Z2luOjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYldoZWVsRXZlbnQmIGV2ZW50KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>