<?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>106408</bug_id>
          
          <creation_ts>2013-01-08 19:37:33 -0800</creation_ts>
          <short_desc>Change semantics of subtracting one Int/FloatPoint from another</short_desc>
          <delta_ts>2013-01-09 18:14:57 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Steve Block">steveblock</reporter>
          <assigned_to name="Steve Block">steveblock</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andersca</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>d-r</cc>
    
    <cc>eric</cc>
    
    <cc>fmalita</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>jdiggs</cc>
    
    <cc>junov</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>noam</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>schenney</cc>
    
    <cc>senorblanco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>steveblock</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>802919</commentid>
    <comment_count>0</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-08 19:37:33 -0800</bug_when>
    <thetext>Change semantics of subtracting one Int/FloatPoint from another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802926</commentid>
    <comment_count>1</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-08 19:51:06 -0800</bug_when>
    <thetext>The common case of subtracting one Int/FloatPoint from another is to obtain a relative position or vector, so this should be supported by operator-().  Creating an Int/FloatSize from two Int/FloatPoints is a less common operation and should be made more explicit.

I therefore propose that we ...
- remove &apos;Int/FloatSize operator-(const int/FloatPoint&amp;, const Int/FloatPoint&amp;)&apos;
- add &apos;Int/FloatPoint operator-(const int/FloatPoint&amp;, const Int/FloatPoint&amp;)&apos;
- add &apos;Int/FloatSize Int/FloatSize::fromCornerPoints(const int/FloatPoint&amp;, const Int/FloatPoint&amp;)&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802927</commentid>
    <comment_count>2</comment_count>
      <attachid>181826</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-08 19:51:19 -0800</bug_when>
    <thetext>Created attachment 181826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802931</commentid>
    <comment_count>3</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-08 19:55:37 -0800</bug_when>
    <thetext>Patch for initial comments. A few things to note ...
- Adding &apos;FloatPoint::distance(Squared)ToPoint(const FloatPoint&amp;)&apos; can be done in a prerequisite patch - https://bugs.webkit.org/show_bug.cgi?id=105995
- The XCode project file needs updating
- I can move more implementation to the new IntSize.cpp

I&apos;ll wait for initial feedback before addressing these things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802934</commentid>
    <comment_count>4</comment_count>
      <attachid>181826</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-08 20:01:32 -0800</bug_when>
    <thetext>Comment on attachment 181826
Patch

Attachment 181826 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15758372</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802937</commentid>
    <comment_count>5</comment_count>
      <attachid>181826</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-08 20:04:57 -0800</bug_when>
    <thetext>Comment on attachment 181826
Patch

Attachment 181826 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15775188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802947</commentid>
    <comment_count>6</comment_count>
      <attachid>181826</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-08 20:24:13 -0800</bug_when>
    <thetext>Comment on attachment 181826
Patch

Attachment 181826 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15774198</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802958</commentid>
    <comment_count>7</comment_count>
      <attachid>181826</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-08 20:38:28 -0800</bug_when>
    <thetext>Comment on attachment 181826
Patch

Attachment 181826 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15766269</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803017</commentid>
    <comment_count>8</comment_count>
      <attachid>181826</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-08 21:57:14 -0800</bug_when>
    <thetext>Comment on attachment 181826
Patch

Attachment 181826 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15766309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803025</commentid>
    <comment_count>9</comment_count>
      <attachid>181846</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-08 22:07:07 -0800</bug_when>
    <thetext>Created attachment 181846
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803035</commentid>
    <comment_count>10</comment_count>
      <attachid>181846</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-01-08 22:24:33 -0800</bug_when>
    <thetext>Comment on attachment 181846
Patch

Attachment 181846 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15763395</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803055</commentid>
    <comment_count>11</comment_count>
      <attachid>181846</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-01-08 23:00:28 -0800</bug_when>
    <thetext>Comment on attachment 181846
Patch

Attachment 181846 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15760368</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803057</commentid>
    <comment_count>12</comment_count>
      <attachid>181854</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-08 23:02:23 -0800</bug_when>
    <thetext>Created attachment 181854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803103</commentid>
    <comment_count>13</comment_count>
      <attachid>181854</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 00:09:43 -0800</bug_when>
    <thetext>Comment on attachment 181854
Patch

Attachment 181854 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15764374</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803121</commentid>
    <comment_count>14</comment_count>
      <attachid>181854</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 01:08:17 -0800</bug_when>
    <thetext>Comment on attachment 181854
Patch

Attachment 181854 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15756491</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803796</commentid>
    <comment_count>15</comment_count>
      <attachid>182003</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-09 16:10:17 -0800</bug_when>
    <thetext>Created attachment 182003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803871</commentid>
    <comment_count>16</comment_count>
      <attachid>182003</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-09 17:22:35 -0800</bug_when>
    <thetext>Comment on attachment 182003
Patch

Attachment 182003 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15759738</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803915</commentid>
    <comment_count>17</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2013-01-09 18:14:57 -0800</bug_when>
    <thetext>It seems there ins&apos;t the required level of support for this change. See http://lists.webkit.org/pipermail/webkit-dev/2013-January/023212.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181826</attachid>
            <date>2013-01-08 19:51:19 -0800</date>
            <delta_ts>2013-01-08 22:07:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106408-20130109144822.patch</filename>
            <type>text/plain</type>
            <size>60003</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJiM2NjYzI4Y2E0Nzg1
OWI5NDA0MjhjYjgyNmFlZWMwZjAxMWE1NC4uNTFiMjBjYmRiYTM4YmM4ZjkwM2EzNTEzNjlhNzVk
ZmIxYWRkMmQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMCBAQAorMjAxMy0wMS0wOCAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugc2Vt
YW50aWNzIG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBmcm9tIGFub3RoZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQwOAorCisg
ICAgICAgIFRoZSBjb21tb24gY2FzZSBvZiBzdWJ0cmFjdGluZyBvbmUgSW50L0Zsb2F0UG9pbnQg
ZnJvbSBhbm90aGVyIGlzIHRvCisgICAgICAgIG9idGFpbiBhIHJlbGF0aXZlIHBvc2l0aW9uIG9y
IHZlY3Rvciwgc28gdGhpcyBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5CisgICAgICAgIG9wZXJhdG9y
LSgpLiAgQ3JlYXRpbmcgYW4gSW50L0Zsb2F0U2l6ZSBmcm9tIHR3byBJbnQvRmxvYXRQb2ludHMg
aXMgYQorICAgICAgICBsZXNzIGNvbW1vbiBvcGVyYXRpb24gYW5kIHNob3VsZCBiZSBtYWRlIG1v
cmUgZXhwbGljaXQuIFRoaXMgY2hhbmdlIC4uLgorICAgICAgICAtIHJlbW92ZXMgJ0ludC9GbG9h
dFNpemUgb3BlcmF0b3ItKGNvbnN0IGludC9GbG9hdFBvaW50JiwgY29uc3QgSW50L0Zsb2F0UG9p
bnQmKScKKyAgICAgICAgLSBhZGRzICdJbnQvRmxvYXRQb2ludCBvcGVyYXRvci0oY29uc3QgaW50
L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJworICAgICAgICAtIGFkZHMgJ0lu
dC9GbG9hdFNpemUgSW50L0Zsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhjb25zdCBpbnQvRmxv
YXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisKKyAgICAgICAgQWxzbyBhZGRzICdm
bG9hdCBGbG9hdFBvaW50OjpkaXN0YW5jZShTcXVhcmVkKVRvUG9pbnQoY29uc3QgRmxvYXRQb2lu
dCYpJworICAgICAgICBhcyBhIGNvbnZlbmllbmNlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIG5vIGZ1bmN0aW9uYWwg
Y2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhp
dFRlc3QpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3RhbmNlVG9DbG9zZXN0Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlVG9GYXJ0
aGVzdENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpob3Jpem9udGFsRWxsaXBzZVJhZGl1cyk6
CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6Ym91bmRpbmdCb3gpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdCk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFn
SHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
Ojpjb21wdXRlU3RpY2t5T2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRQb2ludDo6c2NhbGUpOgorICAgICAgICAoRmxvYXRQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDo6
ZGlzdGFuY2VTcXVhcmVkVG9Qb2ludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0UG9pbnQ6OmRpc3RhbmNlVG9Qb2ludCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluYW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzUG9pbnRJblRyaWFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0TW9zdENvcm5lclRvVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UXVhZDo6
aW50ZXJzZWN0c1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuY2xvc2VkSW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNp
emUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRmxvYXRTaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6SW50UG9pbnQ6OmlzWmVybyk6CisgICAg
ICAgIChJbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6bGVuZ3RoU3F1YXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6SW50
UG9pbnQ6OmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFNpemUuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEludFNpemUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZW5jbG9zaW5nSW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRy
YXZlcnNhbFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGhUcmF2ZXJzYWxTdGF0ZTo6
cHJvY2Vzc1NlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5Mb2NhbFRy
aWFuZ3VsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb29wQmxpbm5Mb2NhbFRyaWFuZ3Vs
YXRvcjo6dHJpYW5ndWxhdGVIZWxwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dw
dS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9vcEJsaW5uTWF0
aFV0aWxzOjphcHByb3hFcXVhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd0xpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluYW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY3VsYXRlQXV0b3Nj
cm9sbERpcmVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5k
SW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdGVkU2Nyb2xsRGVsdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZyb21Qb2ludCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6b2Zmc2V0RnJvbVJlc2l6ZUNvcm5lcik6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6c2Nyb2xsVG93YXJkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6cGFpbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFy
a2VyRGF0YTo6Y3VycmVudEFuZ2xlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNh
bGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKToKKyAgICAg
ICAgKiBzdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VHJhbnNmb3JtRGlzdGFuY2U6OlNWR1RyYW5zZm9ybURpc3RhbmNlKToKKwogMjAxMy0wMS0wOCAg
VG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDb3B5LXBhc3RlIHBy
ZXNlcnZlcyA8ZW1iZWQ+IHRhZ3MgY29udGFpbmluZyBhY3RpdmUgY29udGVudC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKaW5kZXggNGI3YjYzNzUxOTcwMjdjZThmMTFhZGFkNjc2NDE2YzNlYmNj
ZjNkYS4uY2IwYTc0Nzk4ZWQ0YTY3NjE2YjJkNmZkZTIyMGRkMThhNmI2MmUwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wMS0wOCAgU3RldmUgQmxv
Y2sgIDxzdGV2ZWJsb2NrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugc2VtYW50aWNz
IG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBmcm9tIGFub3RoZXIKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQwOAorCisgICAgICAg
IFRoZSBjb21tb24gY2FzZSBvZiBzdWJ0cmFjdGluZyBvbmUgSW50L0Zsb2F0UG9pbnQgZnJvbSBh
bm90aGVyIGlzIHRvCisgICAgICAgIG9idGFpbiBhIHJlbGF0aXZlIHBvc2l0aW9uIG9yIHZlY3Rv
ciwgc28gdGhpcyBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5IAorICAgICAgICBvcGVyYXRvci0oKS4g
IENyZWF0aW5nIGFuIEludC9GbG9hdFNpemUgZnJvbSB0d28gSW50L0Zsb2F0UG9pbnRzIGlzIGEK
KyAgICAgICAgbGVzcyBjb21tb24gb3BlcmF0aW9uIGFuZCBzaG91bGQgYmUgbWFkZSBtb3JlIGV4
cGxpY2l0LiBUaGlzIGNoYW5nZSAuLi4KKyAgICAgICAgLSByZW1vdmVzICdJbnQvRmxvYXRTaXpl
IG9wZXJhdG9yLShjb25zdCBpbnQvRmxvYXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50Jikn
CisgICAgICAgIC0gYWRkcyAnSW50L0Zsb2F0UG9pbnQgb3BlcmF0b3ItKGNvbnN0IGludC9GbG9h
dFBvaW50JiwgY29uc3QgSW50L0Zsb2F0UG9pbnQmKScKKyAgICAgICAgLSBhZGRzICdJbnQvRmxv
YXRTaXplIEludC9GbG9hdFNpemU6OmZyb21Db3JuZXJQb2ludHMoY29uc3QgaW50L0Zsb2F0UG9p
bnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJworCisgICAgICAgIEFsc28gYWRkcyAnZmxvYXQg
RmxvYXRQb2ludDo6ZGlzdGFuY2UoU3F1YXJlZClUb1BvaW50KGNvbnN0IEZsb2F0UG9pbnQmKScK
KyAgICAgICAgYXMgYSBjb252ZW5pZW5jZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHNyYy9EcmFnQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkRyYWdDbGllbnRJbXBsOjpzdGFydERyYWcpOgorICAgICAgICAqIHNyYy9XZWJGcmFt
ZUltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6Om5lYXJlc3RGaW5kTWF0
Y2gpOgorCiAyMDEzLTAxLTA4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIENvcHktcGFzdGUgcHJlc2VydmVzIDxlbWJlZD4gdGFncyBjb250YWluaW5nIGFjdGl2
ZSBjb250ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2YmY5NDJjOTg1OTY2NDAwZmQxYTIx
YWZjNDFjNmM5MjVlYWNkOTZkLi5kOGNhMTRkYThlZmJmNDA4NGM4NDBlYzg2OTkwMDBmNGM5Nzc5
OGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTkxNyw2ICsxOTE3LDcgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UmVjdC5jcHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1Bh
dGguY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggYmFlMjg3OGEwYmZmNDVlYzVmOTYwY2RkZWRl
ZDAwMzFhYmVmMTk3Ny4uNmY4ZjhkNTQ3NTBmYWYzZTc0YzU1MDFkYTc5NjFlNjdkMmJlMGQ2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01NTc4LDYgKzU1NzgsNyBAQCB3ZWJj
b3JlX3BsYXRmb3JtX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50SGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5o
IFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplSGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9MYXRpbjFUZXh0SXRlcmF0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAxZjRl
YmI2ZTMyNTNhOTA1NWMxNWNhNTgxODY3MmQxMGFmMGI2ODU4Li44YjNkY2YyYjhmZjA3NzcyYTBk
NWNkNTdkNzc1ZTg5NWMyY2M4MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk5OSw2ICs5OTksNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbnRSZWN0LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAg
XAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJu
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMjJjZDc0ZTg4ZmI0Y2M1NTE1ZjQ1MDYzZGZiM2Zm
YTIyYTdlMzE4MS4uNmU4MTdiNGY3ZmQ2YWM3YjAwZmU3NzhjYjM5ZTk5YjZkMmI5ZjgyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtNDYyNyw2ICs0NjI3LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFNpemUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0
LmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9SZWdpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDliODMxNzkwNTI3ODJk
NDg0ZGE4NzdlMWUyOWY0ZjVhMWI1N2ZlM2IuLmI0ZjNjYjEzNmFhNWY5NjllMzUxODA4MzE1MWE3
YTIwODNkN2VlMzMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC0yOTc5Myw2ICsyOTc5MywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW50U2l6ZS5j
cHAiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwbGF0Zm9ybVxncmFwaGljc1xJbnRTaXplLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAppbmRleCA0NzIyNzBjMTgyYWI3NWU3YjAyN2Y0MzVmMWUyNWZkYmYxN2Y3MjM0Li41OGRjNmIz
MGRhODBhOThhNWExM2NjZGIzY2UxYjVhZTRhZDgyNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE1MjIsNyAr
MTUyMiw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1l
bnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQCiAgICAgICAgIFdpZGdldCogd2lkZ2V0
ID0gd2lkZ2V0Rm9yQXR0YWNobWVudFZpZXcoKTsKICAgICAgICAgLy8gTm9ybWFsaXplIHRoZSBw
b2ludCBmb3IgdGhlIHdpZGdldCdzIGJvdW5kcy4KICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRn
ZXQtPmlzRnJhbWVWaWV3KCkpCi0gICAgICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5n
ZXRPckNyZWF0ZSh3aWRnZXQpLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCAt
IHdpZGdldC0+ZnJhbWVSZWN0KCkubG9jYXRpb24oKSkpOworICAgICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KS0+YWNjZXNzaWJpbGl0eUhpdFRlc3Qo
cG9pbnQgLSB3aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpOwogICAgIH0KICAgICAKICAg
ICAvLyBDaGVjayBpZiB0aGVyZSBhcmUgYW55IG1vY2sgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJl
IGhhbmRsZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0MmU1NTc2MGNlZWUwM2NjN2I4Zjcw
NDM4NjVmYzRjZGJlMmVmODZlLi4wM2VlYjRlNDBhZWQwMWYzMTc5MmNmNDFiYTU4NjcwYjkzZTBl
OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTIxNzAsOCArMjE3MCw4IEBAIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRI
aXRUZXN0KGNvbnN0IEluCiAgICAgaWYgKCFyZW1vdGUpCiAgICAgICAgIHJldHVybiAwOwogICAg
IAotICAgIEludFNpemUgb2Zmc2V0ID0gcG9pbnQgLSByb3VuZGVkSW50UG9pbnQoYm91bmRpbmdC
b3hSZWN0KCkubG9jYXRpb24oKSk7Ci0gICAgcmV0dXJuIHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhp
dFRlc3QoSW50UG9pbnQob2Zmc2V0KSk7CisgICAgSW50UG9pbnQgb2Zmc2V0ID0gcG9pbnQgLSBy
b3VuZGVkSW50UG9pbnQoYm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKSk7CisgICAgcmV0dXJu
IHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3Qob2Zmc2V0KTsKIH0KIAogQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlI
aXRUZXN0KGNvbnN0IEludFBvaW50JiBwb2ludCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFkaWVudFZhbHVlLmNwcAppbmRleCA3ZGMyMmJiYmQ4ZDAzYTdlNDI5OGRmOGRjMTdlNzRiMzJm
NDBmNDEzLi41ZjQ5ZjFlZjBiNGU0NGNjNDc5MjBhZWIyMmEyZTRjMjc3ZDdhMjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0xOTEsOCArMTkxLDcgQEAgdm9p
ZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQsIFJlbmRlck9i
amVjdCogcmVuZGVyZXIsIFJlbmQKICAgICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBz
dG9wLm1fcG9zaXRpb24tPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJD
RU5UQUdFKSAvIDEwMDsKICAgICAgICAgICAgIGVsc2UgaWYgKHN0b3AubV9wb3NpdGlvbi0+aXNM
ZW5ndGgoKSB8fCBzdG9wLm1fcG9zaXRpb24tPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVu
Z3RoKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgpIHsK
LSAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0YXJ0
IC0gZ3JhZGllbnRFbmQpOwotICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdy
YWRpZW50U2l6ZS5kaWFnb25hbExlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBncmFkaWVu
dExlbmd0aCA9IGdyYWRpZW50U3RhcnQuZGlzdGFuY2VUb1BvaW50KGdyYWRpZW50RW5kKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoOwogICAgICAgICAg
ICAgICAgIGlmIChzdG9wLm1fcG9zaXRpb24tPmlzTGVuZ3RoKCkpCkBAIC0yODEsOCArMjgwLDcg
QEAgdm9pZCBDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQsIFJl
bmRlck9iamVjdCogcmVuZGVyZXIsIFJlbmQKICAgICAgICAgICAgIC8vIHRvIHJlcGVhdCBvdXQg
dG8gdGhlIGNvcm5lcnMgb2YgdGhlIGJveC4KICAgICAgICAgICAgIGlmIChpc1JhZGlhbEdyYWRp
ZW50KCkpIHsKICAgICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgpIHsK
LSAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0YXJ0
IC0gZ3JhZGllbnRFbmQpOwotICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdy
YWRpZW50U2l6ZS5kaWFnb25hbExlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBncmFkaWVu
dExlbmd0aCA9IGdyYWRpZW50U3RhcnQuZGlzdGFuY2VUb1BvaW50KGdyYWRpZW50RW5kKTsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAobWF4TGVuZ3RoRm9yUmVwZWF0
ID4gZ3JhZGllbnRMZW5ndGgpCkBAIC03NjYsMTYgKzc2NCwxNiBAQCBmbG9hdCBDU1NSYWRpYWxH
cmFkaWVudFZhbHVlOjpyZXNvbHZlUmFkaXVzKENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMsIFJl
bmRlclN0eQogc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9DbG9zZXN0Q29ybmVyKGNvbnN0IEZsb2F0
UG9pbnQmIHAsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYgY29ybmVyKQogewog
ICAgIEZsb2F0UG9pbnQgdG9wTGVmdDsKLSAgICBmbG9hdCB0b3BMZWZ0RGlzdGFuY2UgPSBGbG9h
dFNpemUocCAtIHRvcExlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9wTGVmdERp
c3RhbmNlID0gcC5kaXN0YW5jZVRvUG9pbnQodG9wTGVmdCk7CiAKICAgICBGbG9hdFBvaW50IHRv
cFJpZ2h0KHNpemUud2lkdGgoKSwgMCk7Ci0gICAgZmxvYXQgdG9wUmlnaHREaXN0YW5jZSA9IEZs
b2F0U2l6ZShwIC0gdG9wUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9wUmln
aHREaXN0YW5jZSA9IHAuZGlzdGFuY2VUb1BvaW50KHRvcFJpZ2h0KTsKIAogICAgIEZsb2F0UG9p
bnQgYm90dG9tTGVmdCgwLCBzaXplLmhlaWdodCgpKTsKLSAgICBmbG9hdCBib3R0b21MZWZ0RGlz
dGFuY2UgPSBGbG9hdFNpemUocCAtIGJvdHRvbUxlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAg
ZmxvYXQgYm90dG9tTGVmdERpc3RhbmNlID0gcC5kaXN0YW5jZVRvUG9pbnQoYm90dG9tTGVmdCk7
CiAKICAgICBGbG9hdFBvaW50IGJvdHRvbVJpZ2h0KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQo
KSk7Ci0gICAgZmxvYXQgYm90dG9tUmlnaHREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0gYm90dG9t
UmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgYm90dG9tUmlnaHREaXN0YW5jZSA9
IHAuZGlzdGFuY2VUb1BvaW50KGJvdHRvbVJpZ2h0KTsKIAogICAgIGNvcm5lciA9IHRvcExlZnQ7
CiAgICAgZmxvYXQgbWluRGlzdGFuY2UgPSB0b3BMZWZ0RGlzdGFuY2U7CkBAIC03OTksMTYgKzc5
NywxNiBAQCBzdGF0aWMgZmxvYXQgZGlzdGFuY2VUb0Nsb3Nlc3RDb3JuZXIoY29uc3QgRmxvYXRQ
b2ludCYgcCwgY29uc3QgRmxvYXRTaXplJiBzaXplLAogc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9G
YXJ0aGVzdENvcm5lcihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFNpemUmIHNpemUs
IEZsb2F0UG9pbnQmIGNvcm5lcikKIHsKICAgICBGbG9hdFBvaW50IHRvcExlZnQ7Ci0gICAgZmxv
YXQgdG9wTGVmdERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSB0b3BMZWZ0KS5kaWFnb25hbExlbmd0
aCgpOworICAgIGZsb2F0IHRvcExlZnREaXN0YW5jZSA9IHAuZGlzdGFuY2VUb1BvaW50KHRvcExl
ZnQpOwogCiAgICAgRmxvYXRQb2ludCB0b3BSaWdodChzaXplLndpZHRoKCksIDApOwotICAgIGZs
b2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRvcFJpZ2h0KS5kaWFnb25hbExl
bmd0aCgpOworICAgIGZsb2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Qb2ludCh0
b3BSaWdodCk7CiAKICAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQoMCwgc2l6ZS5oZWlnaHQoKSk7
Ci0gICAgZmxvYXQgYm90dG9tTGVmdERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21MZWZ0
KS5kaWFnb25hbExlbmd0aCgpOworICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0YW5jZSA9IHAuZGlz
dGFuY2VUb1BvaW50KGJvdHRvbUxlZnQpOwogCiAgICAgRmxvYXRQb2ludCBib3R0b21SaWdodChz
aXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwotICAgIGZsb2F0IGJvdHRvbVJpZ2h0RGlzdGFu
Y2UgPSBGbG9hdFNpemUocCAtIGJvdHRvbVJpZ2h0KS5kaWFnb25hbExlbmd0aCgpOworICAgIGZs
b2F0IGJvdHRvbVJpZ2h0RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Qb2ludChib3R0b21SaWdodCk7
CiAKICAgICBjb3JuZXIgPSB0b3BMZWZ0OwogICAgIGZsb2F0IG1heERpc3RhbmNlID0gdG9wTGVm
dERpc3RhbmNlOwpAQCAtODMxLDEyICs4MjksMTIgQEAgc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9G
YXJ0aGVzdENvcm5lcihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFNpemUmIHNpemUK
IAogLy8gQ29tcHV0ZSBob3Jpem9udGFsIHJhZGl1cyBvZiBlbGxpcHNlIHdpdGggY2VudGVyIGF0
IDAsMCB3aGljaCBwYXNzZXMgdGhyb3VnaCBwLCBhbmQgaGFzCiAvLyB3aWR0aC9oZWlnaHQgZ2l2
ZW4gYnkgYXNwZWN0UmF0aW8uCi1zdGF0aWMgaW5saW5lIGZsb2F0IGhvcml6b250YWxFbGxpcHNl
UmFkaXVzKGNvbnN0IEZsb2F0U2l6ZSYgcCwgZmxvYXQgYXNwZWN0UmF0aW8pCitzdGF0aWMgaW5s
aW5lIGZsb2F0IGhvcml6b250YWxFbGxpcHNlUmFkaXVzKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGZs
b2F0IGFzcGVjdFJhdGlvKQogewogICAgIC8vIHheMi9hXjIgKyB5XjIvYl4yID0gMQogICAgIC8v
IGEvYiA9IGFzcGVjdFJhdGlvLCBiID0gYS9hc3BlY3RSYXRpbwogICAgIC8vIGEgPSBzcXJ0KHhe
MiArIHleMi8oMS9yXjIpKQotICAgIHJldHVybiBzcXJ0ZihwLndpZHRoKCkgKiBwLndpZHRoKCkg
KyAocC5oZWlnaHQoKSAqIHAuaGVpZ2h0KCkpIC8gKDEgLyAoYXNwZWN0UmF0aW8gKiBhc3BlY3RS
YXRpbykpKTsKKyAgICByZXR1cm4gc3FydGYocC54KCkgKiBwLngoKSArIChwLnkoKSAqIHAueSgp
KSAvICgxIC8gKGFzcGVjdFJhdGlvICogYXNwZWN0UmF0aW8pKSk7CiB9CiAKIC8vIEZJWE1FOiBz
aGFyZSBjb2RlIHdpdGggdGhlIGxpbmVhciB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggMjE1YTkxNGEzMzY2OGFkZjNiNTljODRmNWZkMjkyYWM5MjViMTQ4NC4u
MTMxODQzYzc3YWY2N2Q3MmE0MGMxZWZiOTQ0NTU3NzFlZjE0YzIyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcApAQCAtOTQzLDcgKzk0Myw3IEBAIExheW91dFJlY3QgQ29udGFp
bmVyTm9kZTo6Ym91bmRpbmdCb3goKSBjb25zdAogICAgICAgICAgICAgdXBwZXJMZWZ0ID0gbG93
ZXJSaWdodDsKICAgICB9IAogCi0gICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoRmxvYXRS
ZWN0KHVwcGVyTGVmdCwgbG93ZXJSaWdodC5leHBhbmRlZFRvKHVwcGVyTGVmdCkgLSB1cHBlckxl
ZnQpKTsKKyAgICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QodXBwZXJMZWZ0
LCBGbG9hdFNpemU6OmZyb21Db3JuZXJQb2ludHMobG93ZXJSaWdodCwgdXBwZXJMZWZ0KS5leHBh
bmRlZFRvKEZsb2F0U2l6ZSgpKSkpOwogfQogCiB2b2lkIENvbnRhaW5lck5vZGU6OnNldEZvY3Vz
KGJvb2wgcmVjZWl2ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAppbmRleCA3ZGQwOTE2M2U1ODk5ZWIzMWQ2Mzc3
YTZlZDEzNDcwNjMwZDI4MTI1Li44MzM2ZThlMThiY2MzNWJlYTdhYWRhODliOWQ3ODA3YjVjOTg3
ZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHAKQEAgLTE2MjAsNyArMTYyMCw3IEBAIHRlbXBsYXRlPGNsYXNz
IFQ+IEludFJlY3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjYWxjdWxhdGVDb21wb3NpdGlu
Z0J1ZmZlclJlCiAgICAgSW50UG9pbnQgb3JpZ2luYWxMb2NhdGlvbiA9IGJ1ZmZlclJlY3QubG9j
YXRpb24oKTsKICAgICBidWZmZXJSZWN0LmludGVyc2VjdChjYW52YXNSZWN0KTsKICAgICBpZiAo
Y3JvcHBlZE9mZnNldCkKLSAgICAgICAgKmNyb3BwZWRPZmZzZXQgPSBvcmlnaW5hbExvY2F0aW9u
IC0gYnVmZmVyUmVjdC5sb2NhdGlvbigpOworICAgICAgICAqY3JvcHBlZE9mZnNldCA9IEludFNp
emU6OmZyb21Db3JuZXJQb2ludHMob3JpZ2luYWxMb2NhdGlvbiwgYnVmZmVyUmVjdC5sb2NhdGlv
bigpKTsKICAgICByZXR1cm4gYnVmZmVyUmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCmluZGV4IDAyMTdhMDJjODRjNDMwOTVhYmJjMzU3ODA0NGRiYWZiYjE0YmMzNmYu
LjI0ZTgzYjRiZTgwNzY3ZWE3NDZlOTk1YmIwMzI2MTlkYzZlY2RkMjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0V2ZW50SGFuZGxlci5jcHAKQEAgLTMxOTAsNyArMzE5MCw3IEBAIGJvb2wgRXZlbnRIYW5k
bGVyOjpkcmFnSHlzdGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9y
dExvY2F0aW9uCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSW50
UG9pbnQgZHJhZ0xvY2F0aW9uID0gdmlldy0+d2luZG93VG9Db250ZW50cyhmbG9vcmVkSW50UG9p
bnQoZHJhZ1ZpZXdwb3J0TG9jYXRpb24pKTsKLSAgICBJbnRTaXplIGRlbHRhID0gZHJhZ0xvY2F0
aW9uIC0gbV9tb3VzZURvd25Qb3M7CisgICAgSW50UG9pbnQgZGVsdGEgPSBkcmFnTG9jYXRpb24g
LSBtX21vdXNlRG93blBvczsKICAgICAKICAgICBpbnQgdGhyZXNob2xkID0gR2VuZXJhbERyYWdI
eXN0ZXJlc2lzOwogICAgIHN3aXRjaCAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSkgewpAQCAtMzIx
MCw3ICszMjEwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQo
Y29uc3QgRmxvYXRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBhYnMoZGVsdGEud2lkdGgoKSkg
Pj0gdGhyZXNob2xkIHx8IGFicyhkZWx0YS5oZWlnaHQoKSkgPj0gdGhyZXNob2xkOworICAgIHJl
dHVybiBhYnMoZGVsdGEueCgpKSA+PSB0aHJlc2hvbGQgfHwgYWJzKGRlbHRhLnkoKSkgPj0gdGhy
ZXNob2xkOwogfQogICAgIAogdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9hcmQoKQpAQCAt
MzM1Myw4ICszMzUzLDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91
c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZHJhZ1N0YXRlKCkubV9kcmFnU3JjLT5yZW5kZXJl
cigpKSB7CiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJl
Y3RseSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBhYnNQb3Mg
PSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBk
ZWx0YSA9IG1fbW91c2VEb3duUG9zIC0gcm91bmRlZEludFBvaW50KGFic1Bvcyk7Ci0gICAgICAg
ICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXREcmFnSW1hZ2VFbGVtZW50
KGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYy5nZXQoKSwgSW50UG9pbnQoZGVsdGEpKTsKKyAgICAgICAg
ICAgICAgICBJbnRQb2ludCBkZWx0YSA9IG1fbW91c2VEb3duUG9zIC0gcm91bmRlZEludFBvaW50
KGFic1Bvcyk7CisgICAgICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5z
ZXREcmFnSW1hZ2VFbGVtZW50KGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYy5nZXQoKSwgZGVsdGEpOwog
ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcmVuZGVyZXIgaGFz
IGRpc2FwcGVhcmVkLCB0aGlzIGNhbiBoYXBwZW4gaWYgdGhlIG9uU3RhcnREcmFnIGhhbmRsZXIg
aGFzIGhpZGRlbgogICAgICAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IGluIHNvbWUgd2F5LiAg
SW4gdGhpcyBjYXNlIHdlIGp1c3Qga2lsbCB0aGUgZHJhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcAppbmRleCAwYmJj
NjU3N2ZkMDJkMDEwYmFkMzk2ZjFkOTAyMTA4MWJjODgxNzQwLi45MGU0MWU1NGMwYTFhOGNiNzg4
MmJhMTQ0NjhkMGNhMTEwMWE5NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZs
b2F0U2l6ZSBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmNvbXB1dGVTdGlja3lP
ZmZzZXQoY29uc3QgRmxvYXRSZWN0CiAgICAgICAgIGJveFJlY3QubW92ZSgwLCB0b3BEZWx0YSk7
CiAgICAgfQogCi0gICAgcmV0dXJuIGJveFJlY3QubG9jYXRpb24oKSAtIG1fYWJzb2x1dGVTdGlj
a3lCb3hSZWN0LmxvY2F0aW9uKCk7CisgICAgcmV0dXJuIEZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBv
aW50cyhib3hSZWN0LmxvY2F0aW9uKCksIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0LmxvY2F0aW9u
KCkpOwogfQogCiBGbG9hdFBvaW50IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6
bGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVj
dCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1h
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRl
eCA5Nzg2M2M0ZDE4ZWUxYzQ2MWViY2JjYjZiZGUyNGM1YjM2NDBmMGFhLi4xMzY4MmE4MGMyMWY1
NTQzMjlkYzc0NTY3MTY4ZmQ3NDU5NDYwNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuY3BwCkBAIC05NywxMiArOTcsMTIgQEAgYm9vbCBTY3JvbGxBbmltYXRv
cjo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgU2Ny
b2xsR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsOwogI2VuZGlmCiAKLSAg
ICBJbnRTaXplIG1heEZvcndhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFyZWEtPm1heGlt
dW1TY3JvbGxQb3NpdGlvbigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKTsK
LSAgICBJbnRTaXplIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLT5z
Y3JvbGxQb3NpdGlvbigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBvc2l0aW9u
KCk7Ci0gICAgaWYgKChkZWx0YVggPCAwICYmIG1heEZvcndhcmRTY3JvbGxEZWx0YS53aWR0aCgp
ID4gMCkKLSAgICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS53
aWR0aCgpID4gMCkKLSAgICAgICAgfHwgKGRlbHRhWSA8IDAgJiYgbWF4Rm9yd2FyZFNjcm9sbERl
bHRhLmhlaWdodCgpID4gMCkKLSAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgbWF4QmFja3dhcmRT
Y3JvbGxEZWx0YS5oZWlnaHQoKSA+IDApKSB7CisgICAgSW50UG9pbnQgbWF4Rm9yd2FyZFNjcm9s
bERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBtX3Nj
cm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOworICAgIEludFBvaW50IG1heEJhY2t3YXJk
U2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpIC0gbV9zY3Jv
bGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgaWYgKChkZWx0YVggPCAw
ICYmIG1heEZvcndhcmRTY3JvbGxEZWx0YS54KCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFYID4g
MCAmJiBtYXhCYWNrd2FyZFNjcm9sbERlbHRhLngoKSA+IDApCisgICAgICAgIHx8IChkZWx0YVkg
PCAwICYmIG1heEZvcndhcmRTY3JvbGxEZWx0YS55KCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFZ
ID4gMCAmJiBtYXhCYWNrd2FyZFNjcm9sbERlbHRhLnkoKSA+IDApKSB7CiAgICAgICAgIGhhbmRs
ZWQgPSB0cnVlOwogCiAgICAgICAgIGlmIChkZWx0YVkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAppbmRleCAxMTFlMjMxODI2M2RhODJhNTlkMzVm
NzNiOTJlZDdjNzRiMDNiMjExLi42YTIwZGJiOWFjZTJiMmQwMjNkYmQyM2IxOTY5MjBhMjc1NDNk
OTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBv
aW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5o
CkBAIC0xMjAsNiArMTIwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV94ICs9IGEueCgpOwogICAg
ICAgICBtX3kgKz0gYS55KCk7CiAgICAgfQorICAgIHZvaWQgc2NhbGUoZmxvYXQgcykKKyAgICB7
CisgICAgICAgIHNjYWxlKHMsIHMpOworICAgIH0KICAgICB2b2lkIHNjYWxlKGZsb2F0IHN4LCBm
bG9hdCBzeSkKICAgICB7CiAgICAgICAgIG1feCAqPSBzeDsKQEAgLTE1MCw2ICsxNTQsOSBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiBGbG9hdFBvaW50KG1feSwgbV94KTsKICAgICB9CiAKKyAg
ICBmbG9hdCBkaXN0YW5jZVNxdWFyZWRUb1BvaW50KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsK
KyAgICBmbG9hdCBkaXN0YW5jZVRvUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OworCiAj
aWYgVVNFKENHKSB8fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCiAgICAgRmxvYXRQb2ludChj
b25zdCBDR1BvaW50Jik7CiAgICAgb3BlcmF0b3IgQ0dQb2ludCgpIGNvbnN0OwpAQCAtMjEyLDkg
KzIxOSw5IEBAIGlubGluZSBGbG9hdFBvaW50IG9wZXJhdG9yKyhjb25zdCBGbG9hdFBvaW50JiBh
LCBjb25zdCBGbG9hdFBvaW50JiBiKQogICAgIHJldHVybiBGbG9hdFBvaW50KGEueCgpICsgYi54
KCksIGEueSgpICsgYi55KCkpOwogfQogCi1pbmxpbmUgRmxvYXRTaXplIG9wZXJhdG9yLShjb25z
dCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFBvaW50JiBiKQoraW5saW5lIEZsb2F0UG9pbnQg
b3BlcmF0b3ItKGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCiB7Ci0g
ICAgcmV0dXJuIEZsb2F0U2l6ZShhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKKyAgICBy
ZXR1cm4gRmxvYXRQb2ludChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKIH0KIAogaW5s
aW5lIEZsb2F0UG9pbnQgb3BlcmF0b3ItKGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0
U2l6ZSYgYikKQEAgLTI3Myw2ICsyODAsMTYgQEAgZmxvYXQgZmluZFNsb3BlKGNvbnN0IEZsb2F0
UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBwMiwgZmxvYXQmIGMpOwogLy8gRmluZCBwb2lu
dCB3aGVyZSBsaW5lcyB0aHJvdWdoIHRoZSB0d28gcGFpcnMgb2YgcG9pbnRzIGludGVyc2VjdC4g
UmV0dXJucyBmYWxzZSBpZiB0aGUgbGluZXMgZG9uJ3QgaW50ZXJzZWN0LgogYm9vbCBmaW5kSW50
ZXJzZWN0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBwMiwgY29u
c3QgRmxvYXRQb2ludCYgZDEsIGNvbnN0IEZsb2F0UG9pbnQmIGQyLCBGbG9hdFBvaW50JiBpbnRl
cnNlY3Rpb24pOwogCitpbmxpbmUgZmxvYXQgRmxvYXRQb2ludDo6ZGlzdGFuY2VTcXVhcmVkVG9Q
b2ludChjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gKCgqdGhp
cykgLSBwb2ludCkubGVuZ3RoU3F1YXJlZCgpOworfQorCitpbmxpbmUgZmxvYXQgRmxvYXRQb2lu
dDo6ZGlzdGFuY2VUb1BvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAoreworICAg
IHJldHVybiAoKCp0aGlzKSAtIHBvaW50KS5sZW5ndGgoKTsKK30KKwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwCmluZGV4IGZj
OWQ2MTNlYzdiOTk1MWQzYWU3ZjFlZjQyNjIzMmI5NDg2YzJiMmUuLjM5ZjI3MjkzZjQ0YjI0OTk3
MzdiODQ2ODBkNWJlOWIxY2E1NzdiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRRdWFkLmNwcApAQCAtNDcsMjkgKzQ3LDI0IEBAIHN0YXRpYyBpbmxpbmUg
ZmxvYXQgbWF4NChmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKQogICAgIHJldHVy
biBtYXgobWF4KGEsIGIpLCBtYXgoYywgZCkpOwogfQogCi1pbmxpbmUgZmxvYXQgZG90KGNvbnN0
IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQoraW5saW5lIGZsb2F0IGRldGVybWlu
YW50KGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCiB7Ci0gICAgcmV0
dXJuIGEud2lkdGgoKSAqIGIud2lkdGgoKSArIGEuaGVpZ2h0KCkgKiBiLmhlaWdodCgpOwotfQot
Ci1pbmxpbmUgZmxvYXQgZGV0ZXJtaW5hbnQoY29uc3QgRmxvYXRTaXplJiBhLCBjb25zdCBGbG9h
dFNpemUmIGIpCi17Ci0gICAgcmV0dXJuIGEud2lkdGgoKSAqIGIuaGVpZ2h0KCkgLSBhLmhlaWdo
dCgpICogYi53aWR0aCgpOworICAgIHJldHVybiBhLngoKSAqIGIueSgpIC0gYS55KCkgKiBiLngo
KTsKIH0KIAogaW5saW5lIGJvb2wgaXNQb2ludEluVHJpYW5nbGUoY29uc3QgRmxvYXRQb2ludCYg
cCwgY29uc3QgRmxvYXRQb2ludCYgdDEsIGNvbnN0IEZsb2F0UG9pbnQmIHQyLCBjb25zdCBGbG9h
dFBvaW50JiB0MykKIHsKICAgICAvLyBDb21wdXRlIHZlY3RvcnMgICAgICAgIAotICAgIEZsb2F0
U2l6ZSB2MCA9IHQzIC0gdDE7Ci0gICAgRmxvYXRTaXplIHYxID0gdDIgLSB0MTsKLSAgICBGbG9h
dFNpemUgdjIgPSBwIC0gdDE7CisgICAgRmxvYXRQb2ludCB2MCA9IHQzIC0gdDE7CisgICAgRmxv
YXRQb2ludCB2MSA9IHQyIC0gdDE7CisgICAgRmxvYXRQb2ludCB2MiA9IHAgLSB0MTsKICAgICAK
ICAgICAvLyBDb21wdXRlIGRvdCBwcm9kdWN0cwotICAgIGZsb2F0IGRvdDAwID0gZG90KHYwLCB2
MCk7Ci0gICAgZmxvYXQgZG90MDEgPSBkb3QodjAsIHYxKTsKLSAgICBmbG9hdCBkb3QwMiA9IGRv
dCh2MCwgdjIpOwotICAgIGZsb2F0IGRvdDExID0gZG90KHYxLCB2MSk7Ci0gICAgZmxvYXQgZG90
MTIgPSBkb3QodjEsIHYyKTsKKyAgICBmbG9hdCBkb3QwMCA9IHYwLmRvdCh2MCk7CisgICAgZmxv
YXQgZG90MDEgPSB2MC5kb3QodjEpOworICAgIGZsb2F0IGRvdDAyID0gdjAuZG90KHYyKTsKKyAg
ICBmbG9hdCBkb3QxMSA9IHYxLmRvdCh2MSk7CisgICAgZmxvYXQgZG90MTIgPSB2MS5kb3QodjIp
OwogCiAgICAgLy8gQ29tcHV0ZSBiYXJ5Y2VudHJpYyBjb29yZGluYXRlcwogICAgIGZsb2F0IGlu
dkRlbm9tID0gMS4wZiAvIChkb3QwMCAqIGRvdDExIC0gZG90MDEgKiBkb3QwMSk7CkBAIC0xMTMs
NyArMTA4LDcgQEAgYm9vbCBGbG9hdFF1YWQ6OmNvbnRhaW5zUXVhZChjb25zdCBGbG9hdFF1YWQm
IG90aGVyKSBjb25zdAogICAgIHJldHVybiBjb250YWluc1BvaW50KG90aGVyLnAxKCkpICYmIGNv
bnRhaW5zUG9pbnQob3RoZXIucDIoKSkgJiYgY29udGFpbnNQb2ludChvdGhlci5wMygpKSAmJiBj
b250YWluc1BvaW50KG90aGVyLnA0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEZsb2F0UG9pbnQg
cmlnaHRNb3N0Q29ybmVyVG9WZWN0b3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9h
dFNpemUmIHZlY3RvcikKK3N0YXRpYyBpbmxpbmUgRmxvYXRQb2ludCByaWdodE1vc3RDb3JuZXJU
b1ZlY3Rvcihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHZlY3RvcikK
IHsKICAgICAvLyBSZXR1cm4gdGhlIGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlIHRoYXQgaWYgaXQg
aXMgdG8gdGhlIGxlZnQgb2YgdGhlIHZlY3RvcgogICAgIC8vIHdvdWxkIG1lYW4gYWxsIG9mIHRo
ZSByZWN0YW5nbGUgaXMgdG8gdGhlIGxlZnQgb2YgdGhlIHZlY3Rvci4KQEAgLTEyNSwxMSArMTIw
LDExIEBAIHN0YXRpYyBpbmxpbmUgRmxvYXRQb2ludCByaWdodE1vc3RDb3JuZXJUb1ZlY3Rvcihj
b25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsCiAgICAgLy8gICBRCiAgICAgLy8KICAgICBG
bG9hdFBvaW50IHBvaW50OwotICAgIGlmICh2ZWN0b3Iud2lkdGgoKSA+PSAwKQorICAgIGlmICh2
ZWN0b3IueCgpID49IDApCiAgICAgICAgIHBvaW50LnNldFkocmVjdC5tYXhZKCkpOwogICAgIGVs
c2UKICAgICAgICAgcG9pbnQuc2V0WShyZWN0LnkoKSk7Ci0gICAgaWYgKHZlY3Rvci5oZWlnaHQo
KSA+PSAwKQorICAgIGlmICh2ZWN0b3IueSgpID49IDApCiAgICAgICAgIHBvaW50LnNldFgocmVj
dC54KCkpOwogICAgIGVsc2UKICAgICAgICAgcG9pbnQuc2V0WChyZWN0Lm1heFgoKSk7CkBAIC0x
NDEsNyArMTM2LDcgQEAgYm9vbCBGbG9hdFF1YWQ6OmludGVyc2VjdHNSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgY29uc3QKICAgICAvLyBGb3IgZWFjaCBzaWRlIG9mIHRoZSBxdWFkIGNsb2Nr
d2lzZSB3ZSBjaGVjayBpZiB0aGUgcmVjdGFuZ2xlIGlzIHRvIHRoZSBsZWZ0IG9mIGl0CiAgICAg
Ly8gc2luY2Ugb25seSBjb250ZW50IG9uIHRoZSByaWdodCBjYW4gb25sYXAgd2l0aCB0aGUgcXVh
ZC4KICAgICAvLyBUaGlzIG9ubHkgd29ya3MgaWYgdGhlIHF1YWQgaXMgY29udmV4LgotICAgIEZs
b2F0U2l6ZSB2MSwgdjIsIHYzLCB2NDsKKyAgICBGbG9hdFBvaW50IHYxLCB2MiwgdjMsIHY0Owog
CiAgICAgLy8gRW5zdXJlIHdlIHVzZSBjbG9ja3dpc2UgdmVjdG9ycy4KICAgICBpZiAoIWlzQ291
bnRlcmNsb2Nrd2lzZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRSZWN0LmNwcAppbmRleCBlZGNlOGEyNWEzYTViMDdhNDAxMzA4NWNiMTBhOGI0YjAwNjVk
NjE4Li5kMmJmYWY4NmRlZDYxMWEwNmYzODA1M2M3ODFhNzdiNWRiOWE3NGJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKQEAgLTIyNywxNCAr
MjI3LDE0IEBAIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiAgICAgSW50UG9pbnQgbG9jYXRpb24gPSBmbG9vcmVkSW50UG9pbnQocmVjdC5taW5YTWluWUNv
cm5lcigpKTsKICAgICBJbnRQb2ludCBtYXhQb2ludCA9IGNlaWxlZEludFBvaW50KHJlY3QubWF4
WE1heFlDb3JuZXIoKSk7CiAKLSAgICByZXR1cm4gSW50UmVjdChsb2NhdGlvbiwgbWF4UG9pbnQg
LSBsb2NhdGlvbik7CisgICAgcmV0dXJuIEludFJlY3QobG9jYXRpb24sIEludFNpemU6OmZyb21D
b3JuZXJQb2ludHMobWF4UG9pbnQsIGxvY2F0aW9uKSk7CiB9CiAKIEludFJlY3QgZW5jbG9zZWRJ
bnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBJbnRQb2ludCBsb2NhdGlvbiA9
IGNlaWxlZEludFBvaW50KHJlY3QubWluWE1pbllDb3JuZXIoKSk7CiAgICAgSW50UG9pbnQgbWF4
UG9pbnQgPSBmbG9vcmVkSW50UG9pbnQocmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKLSAgICBJbnRT
aXplIHNpemUgPSBtYXhQb2ludCAtIGxvY2F0aW9uOworICAgIEludFNpemUgc2l6ZSA9IEludFNp
emU6OmZyb21Db3JuZXJQb2ludHMobWF4UG9pbnQsIGxvY2F0aW9uKTsKICAgICBzaXplLmNsYW1w
TmVnYXRpdmVUb1plcm8oKTsKIAogICAgIHJldHVybiBJbnRSZWN0KGxvY2F0aW9uLCBzaXplKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwCmluZGV4
IGUxMWI4MjhiYjUzNWViMzZmOWJiMDA0ODRhODhmOWJkYjc0YjY3ZTMuLjE2MjcyNDViY2Q1MWUy
NGJhMmYyZTEwODNhN2UzOGVkNTNkNTdkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZs
b2F0U2l6ZS5oIgogCiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMYXlvdXRTaXplLmgi
CiAjaW5jbHVkZSA8bGltaXRzPgpAQCAtNDUsNiArNDYsMTEgQEAgRmxvYXRTaXplOjpGbG9hdFNp
emUoY29uc3QgTGF5b3V0U2l6ZSYgc2l6ZSkgOiBtX3dpZHRoKHNpemUud2lkdGgoKSksIG1faGVp
Z2h0KHMKIHsKIH0KIAorRmxvYXRTaXplIEZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhjb25z
dCBGbG9hdFBvaW50ICZtYXhYTWF4WVBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBtaW5YTWluWVBv
aW50KQoreworICAgIHJldHVybiBGbG9hdFNpemUobWF4WE1heFlQb2ludC54KCkgLSBtaW5YTWlu
WVBvaW50LngoKSwgbWF4WE1heFlQb2ludC55KCkgLSBtaW5YTWluWVBvaW50LnkoKSk7Cit9CisK
IGZsb2F0IEZsb2F0U2l6ZTo6ZGlhZ29uYWxMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBz
cXJ0ZihkaWFnb25hbExlbmd0aFNxdWFyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCmluZGV4IDJjYTIyY2RkNDUxNTgyMDAwMTk3YTNlYjZjODIw
ZTc2YjQzNmY1OWYuLjJiZDZlMDRmZWRiYTIwNmQ3ZGQxMjQyNDQxNmVhMTk3ZDU3Nzc1MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCkBAIC01OSw2
ICs1OSw3IEBAIHR5cGVkZWYgc3RydWN0IF9OU1NpemUgTlNTaXplOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgTGF5b3V0
U2l6ZTsKIApAQCAtNzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplKGNvbnN0IExh
eW91dFNpemUmKTsKIAogICAgIHN0YXRpYyBGbG9hdFNpemUgbmFycm93UHJlY2lzaW9uKGRvdWJs
ZSB3aWR0aCwgZG91YmxlIGhlaWdodCk7CisgICAgc3RhdGljIEZsb2F0U2l6ZSBmcm9tQ29ybmVy
UG9pbnRzKGNvbnN0IEZsb2F0UG9pbnQmIG1heFhNYXhZUG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQm
IG1pblhNaW5ZUG9pbnQpOwogCiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dp
ZHRoOyB9CiAgICAgZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgK
aW5kZXggMWFjOGNjOGI4NTdhNDkzNDY1YzcwNmM4YjUwZDM4YzY0MzgzYTE0NC4uZTk4M2E4ZDA1
MjAwMWVhMTNhMmExMTVkMTE2NGY3ZGE1NTM1ZThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxOSw2ICs0MTksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXpl
Jik7CiAgICAgICAgIHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKICAgICAgICAg
dm9pZCB0cmFuc2xhdGUoY29uc3QgRmxvYXRTaXplJiBzaXplKSB7IHRyYW5zbGF0ZShzaXplLndp
ZHRoKCksIHNpemUuaGVpZ2h0KCkpOyB9CisgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZs
b2F0UG9pbnQmIHBvaW50KSB7IHRyYW5zbGF0ZShwb2ludC54KCksIHBvaW50LnkoKSk7IH0KICAg
ICAgICAgdm9pZCB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CiAKICAgICAgICAgdm9pZCBz
ZXRVUkxGb3JSZWN0KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAppbmRleCAzZTgxNDhhOWEwYjk4NDA0MDg5
NDcyM2NhZDU2MDFkNDYwNGY0ZmY3Li5jNDRjY2I3OWFlMTE2OTMwNDAwNzMyNDYxMGRlMDBjMTRh
MmRjMTc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgK
QEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0WChpbnQgeCkgeyBtX3ggPSB4
OyB9CiAgICAgdm9pZCBzZXRZKGludCB5KSB7IG1feSA9IHk7IH0KIAorICAgIGJvb2wgaXNaZXJv
KCkgY29uc3QgeyByZXR1cm4gIW1feCAmJiAhbV95OyB9CisKICAgICB2b2lkIG1vdmUoY29uc3Qg
SW50U2l6ZSYgcykgeyBtb3ZlKHMud2lkdGgoKSwgcy5oZWlnaHQoKSk7IH0gCiAgICAgdm9pZCBt
b3ZlQnkoY29uc3QgSW50UG9pbnQmIG9mZnNldCkgeyBtb3ZlKG9mZnNldC54KCksIG9mZnNldC55
KCkpOyB9CiAgICAgdm9pZCBtb3ZlKGludCBkeCwgaW50IGR5KSB7IG1feCArPSBkeDsgbV95ICs9
IGR5OyB9CkBAIC05NSw2ICs5NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1feSA9IGxyb3VuZGYo
c3RhdGljX2Nhc3Q8ZmxvYXQ+KG1feSAqIHN5KSk7CiAgICAgfQogICAgIAorICAgIGludCBsZW5n
dGhTcXVhcmVkKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ggKiBtX3ggKyBtX3kg
KiBtX3k7CisgICAgfQorCiAgICAgSW50UG9pbnQgZXhwYW5kZWRUbyhjb25zdCBJbnRQb2ludCYg
b3RoZXIpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gSW50UG9pbnQobV94ID4gb3RoZXIu
bV94ID8gbV94IDogb3RoZXIubV94LApAQCAtMTg1LDkgKzE5Miw5IEBAIGlubGluZSBJbnRQb2lu
dCBvcGVyYXRvcisoY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBvaW50JiBiKQogICAgIHJl
dHVybiBJbnRQb2ludChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgpKTsKIH0KIAotaW5saW5l
IEludFNpemUgb3BlcmF0b3ItKGNvbnN0IEludFBvaW50JiBhLCBjb25zdCBJbnRQb2ludCYgYikK
K2lubGluZSBJbnRQb2ludCBvcGVyYXRvci0oY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBv
aW50JiBiKQogewotICAgIHJldHVybiBJbnRTaXplKGEueCgpIC0gYi54KCksIGEueSgpIC0gYi55
KCkpOworICAgIHJldHVybiBJbnRQb2ludChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsK
IH0KIAogaW5saW5lIEludFBvaW50IG9wZXJhdG9yLShjb25zdCBJbnRQb2ludCYgYSwgY29uc3Qg
SW50U2l6ZSYgYikKQEAgLTIxNyw3ICsyMjQsNyBAQCBpbmxpbmUgSW50U2l6ZSB0b0ludFNpemUo
Y29uc3QgSW50UG9pbnQmIGEpCiAKIGlubGluZSBpbnQgSW50UG9pbnQ6OmRpc3RhbmNlU3F1YXJl
ZFRvUG9pbnQoY29uc3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIHJldHVybiAoKCp0
aGlzKSAtIHBvaW50KS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKTsKKyAgICByZXR1cm4gKCp0aGlz
IC0gcG9pbnQpLmxlbmd0aFNxdWFyZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zNTY1OTcyNWNkMzc3OGFmNmMzMTA1Njg0MjkwYjQ2MTIxMzg0MmUzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKQEAgLTAs
MCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBDb21wdXRlciwgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkludFNpemUuaCIKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSW50U2l6ZSBJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGNvbnN0IEludFBv
aW50JiBtYXhYTWF4WVBvaW50LCBjb25zdCBJbnRQb2ludCYgbWluWE1pbllQb2ludCkKK3sKKyAg
ICByZXR1cm4gSW50U2l6ZShtYXhYTWF4WVBvaW50LngoKSAtIG1pblhNaW5ZUG9pbnQueCgpLCBt
YXhYTWF4WVBvaW50LnkoKSAtIG1pblhNaW5ZUG9pbnQueSgpKTsKK30KKworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCmluZGV4IGM4YTU0OWRkNzEzNmYxYjNh
YjU5OTBlYzJkMGZlMTdlZTYyMDNhYTUuLjkyNTM5YzlhYWFmODEyNDMzMzk3OTU3NjcyYzMzZGFl
ZDQwZmNjMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgK
QEAgLTU5LDExICs1OSwxNCBAQCBjbGFzcyB3eFNpemU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgSW50UG9pbnQ7CisKIGNsYXNzIEludFNpemUgewogcHVibGljOgogICAgIEludFNp
emUoKSA6IG1fd2lkdGgoMCksIG1faGVpZ2h0KDApIHsgfQogICAgIEludFNpemUoaW50IHdpZHRo
LCBpbnQgaGVpZ2h0KSA6IG1fd2lkdGgod2lkdGgpLCBtX2hlaWdodChoZWlnaHQpIHsgfQotICAg
IAorICAgIHN0YXRpYyBJbnRTaXplIGZyb21Db3JuZXJQb2ludHMoY29uc3QgSW50UG9pbnQmIG1h
eFhNYXhZUG9pbnQsIGNvbnN0IEludFBvaW50JiBtaW5YTWluWVBvaW50KTsKKwogICAgIGludCB3
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBpbnQgaGVpZ2h0KCkgY29uc3Qg
eyByZXR1cm4gbV9oZWlnaHQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9MYXlvdXRSZWN0LmNwcAppbmRleCBhZDc3MjgyNWRhNDQ2ZjJkZmRlZGIzODhiMTQ3NDg5
YmExNTNlNDYzLi4xNGNmZjE2YTQwZTFiYzJhNjU0MjMzMjg2MjdkZWM5YzE4Mzc3YWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcApAQCAt
MTMxLDcgKzEzMSw3IEBAIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBMYXlvdXRSZWN0
JiByZWN0KQogICAgIEludFBvaW50IGxvY2F0aW9uID0gZmxvb3JlZEludFBvaW50KHJlY3QubWlu
WE1pbllDb3JuZXIoKSk7CiAgICAgSW50UG9pbnQgbWF4UG9pbnQgPSBjZWlsZWRJbnRQb2ludChy
ZWN0Lm1heFhNYXhZQ29ybmVyKCkpOwogCi0gICAgcmV0dXJuIEludFJlY3QobG9jYXRpb24sIG1h
eFBvaW50IC0gbG9jYXRpb24pOworICAgIHJldHVybiBJbnRSZWN0KGxvY2F0aW9uLCBJbnRTaXpl
Ojpmcm9tQ29ybmVyUG9pbnRzKG1heFBvaW50LCBsb2NhdGlvbikpOwogfQogCiBMYXlvdXRSZWN0
IGVuY2xvc2luZ0xheW91dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAK
aW5kZXggY2Y1MzcxNzI3MjMzNjVkYjBjNmRiOGNkYzljYzI5YzI3NTA0NzE2Ny4uNTk2M2Y0NGU1
OTc0NWFmMWY0NDJiZjIxMWI5Y2NiNzljZGZhMzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCkBAIC0yMDks
NyArMjA5LDcgQEAgdm9pZCBQYXRoVHJhdmVyc2FsU3RhdGU6OnByb2Nlc3NTZWdtZW50KCkKICAg
ICAgICAgbV9zdWNjZXNzID0gdHJ1ZTsKICAgICAgICAgCiAgICAgaWYgKChtX2FjdGlvbiA9PSBU
cmF2ZXJzYWxQb2ludEF0TGVuZ3RoIHx8IG1fYWN0aW9uID09IFRyYXZlcnNhbE5vcm1hbEFuZ2xl
QXRMZW5ndGgpICYmIG1fdG90YWxMZW5ndGggPj0gbV9kZXNpcmVkTGVuZ3RoKSB7Ci0gICAgICAg
IGZsb2F0IHNsb3BlID0gRmxvYXRQb2ludChtX2N1cnJlbnQgLSBtX3ByZXZpb3VzKS5zbG9wZUFu
Z2xlUmFkaWFucygpOworICAgICAgICBmbG9hdCBzbG9wZSA9IChtX2N1cnJlbnQgLSBtX3ByZXZp
b3VzKS5zbG9wZUFuZ2xlUmFkaWFucygpOwogICAgICAgICBpZiAobV9hY3Rpb24gPT0gVHJhdmVy
c2FsUG9pbnRBdExlbmd0aCkgewogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gbV9kZXNpcmVk
TGVuZ3RoIC0gbV90b3RhbExlbmd0aDsKICAgICAgICAgICAgIG1fY3VycmVudC5tb3ZlKG9mZnNl
dCAqIGNvc2Yoc2xvcGUpLCBvZmZzZXQgKiBzaW5mKHNsb3BlKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDMzNTkyODM2N2JmN2M0
MjEwZGVmMjJlYmVkYTBlNWIxY2VjMjg2NTYuLjQzN2IxOTAwNTU3ZGMzNDdkN2RmMmY2ZDFlOWEx
MmMwNmQyZjJhYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NoYWRvd0JsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1No
YWRvd0JsdXIuY3BwCkBAIC00MjgsMTIgKzQyOCwxMiBAQCBJbnRSZWN0IFNoYWRvd0JsdXI6OmNh
bGN1bGF0ZUxheWVyQm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3Qg
RgogICAgIG1fbGF5ZXJTaXplID0gbGF5ZXJSZWN0LnNpemUoKTsKIAogICAgIGNvbnN0IEZsb2F0
UG9pbnQgdW5jbGlwcGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVj
dC54KCksIHVuY2xpcHBlZExheWVyUmVjdC55KCkpOwotICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlw
cGVkT3V0ID0gdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOworICAgIGNvbnN0
IEZsb2F0UG9pbnQgY2xpcHBlZE91dCA9IHVuY2xpcHBlZExheWVyT3JpZ2luIC0gbV9sYXllck9y
aWdpbjsKIAogICAgIC8vIFNldCB0aGUgb3JpZ2luIGFzIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2Yg
dGhlIHNjcmF0Y2ggaW1hZ2UsIG9yLCBpbiBjYXNlIHRoZXJlJ3MgYSBjbGlwcGVkCiAgICAgLy8g
b3V0IHJlZ2lvbiwgc2V0IHRoZSBvcmlnaW4gYWNjb3JkaW5nbHkgdG8gdGhlIGZ1bGwgYm91bmRp
bmcgcmVjdCdzIHRvcC1sZWZ0IGNvcm5lci4KLSAgICBmbG9hdCB0cmFuc2xhdGlvblggPSAtc2hh
ZG93ZWRSZWN0LngoKSArIGluZmxhdGlvbi53aWR0aCgpIC0gZmFic2YoY2xpcHBlZE91dC53aWR0
aCgpKTsKLSAgICBmbG9hdCB0cmFuc2xhdGlvblkgPSAtc2hhZG93ZWRSZWN0LnkoKSArIGluZmxh
dGlvbi5oZWlnaHQoKSAtIGZhYnNmKGNsaXBwZWRPdXQuaGVpZ2h0KCkpOworICAgIGZsb2F0IHRy
YW5zbGF0aW9uWCA9IC1zaGFkb3dlZFJlY3QueCgpICsgaW5mbGF0aW9uLndpZHRoKCkgLSBmYWJz
ZihjbGlwcGVkT3V0LngoKSk7CisgICAgZmxvYXQgdHJhbnNsYXRpb25ZID0gLXNoYWRvd2VkUmVj
dC55KCkgKyBpbmZsYXRpb24uaGVpZ2h0KCkgLSBmYWJzZihjbGlwcGVkT3V0LnkoKSk7CiAgICAg
bV9sYXllckNvbnRleHRUcmFuc2xhdGlvbiA9IEZsb2F0U2l6ZSh0cmFuc2xhdGlvblgsIHRyYW5z
bGF0aW9uWSk7CiAKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChsYXllclJlY3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubkxv
Y2FsVHJpYW5ndWxhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9Mb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvci5jcHAKaW5kZXggMTUxN2E2NzJmMDJjNWZiN2Y2
OWIxMTYwODlmNGVkOTgyOTljYmEyZC4uZGRkMTc3ZDE4NmMwZGE2NTY0NDZlODc0ZjM3YjIzYmFh
ZDdlZDdmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0xvb3BCbGlubkxvY2FsVHJpYW5ndWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTG9jYWxUcmlhbmd1bGF0b3IuY3BwCkBAIC0yMTMs
OCArMjEzLDggQEAgdm9pZCBMb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvcjo6dHJpYW5ndWxhdGVI
ZWxwZXIoTG9vcEJsaW5uQ29uc3RhbnRzOjpGaWxsU2lkZQogICAgICAgICAgICAgICAgICAgICAg
ICBtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
bV92ZXJ0aWNlc1sxXS54eUNvb3JkaW5hdGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1f
dmVydGljZXNbM10ueHlDb29yZGluYXRlcygpKSkgewotICAgICAgICBpZiAoKG1fdmVydGljZXNb
Ml0ueHlDb29yZGluYXRlcygpIC0gbV92ZXJ0aWNlc1swXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdv
bmFsTGVuZ3RoU3F1YXJlZCgpIDwKLSAgICAgICAgICAgIChtX3ZlcnRpY2VzWzNdLnh5Q29vcmRp
bmF0ZXMoKSAtIG1fdmVydGljZXNbMV0ueHlDb29yZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNx
dWFyZWQoKSkgeworICAgICAgICBpZiAobV92ZXJ0aWNlc1syXS54eUNvb3JkaW5hdGVzKCkuZGlz
dGFuY2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRpY2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkgPAorICAg
ICAgICAgICAgbV92ZXJ0aWNlc1szXS54eUNvb3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Q
b2ludChtX3ZlcnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMoKSkpIHsKICAgICAgICAgICAgIGFkZFRy
aWFuZ2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92ZXJ0aWNlc1sxXSwgJm1fdmVydGljZXNbMl0pOwog
ICAgICAgICAgICAgYWRkVHJpYW5nbGUoJm1fdmVydGljZXNbMF0sICZtX3ZlcnRpY2VzWzJdLCAm
bV92ZXJ0aWNlc1szXSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjUsOCArMjI1LDggQEAgdm9p
ZCBMb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvcjo6dHJpYW5ndWxhdGVIZWxwZXIoTG9vcEJsaW5u
Q29uc3RhbnRzOjpGaWxsU2lkZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0
aWNlc1szXS54eUNvb3JkaW5hdGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X3ZlcnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fdmVydGljZXNbMl0ueHlDb29yZGluYXRlcygpKSkgewotICAgICAgICBpZiAoKG1fdmVy
dGljZXNbM10ueHlDb29yZGluYXRlcygpIC0gbV92ZXJ0aWNlc1swXS54eUNvb3JkaW5hdGVzKCkp
LmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIDwKLSAgICAgICAgICAgIChtX3ZlcnRpY2VzWzJdLnh5
Q29vcmRpbmF0ZXMoKSAtIG1fdmVydGljZXNbMV0ueHlDb29yZGluYXRlcygpKS5kaWFnb25hbExl
bmd0aFNxdWFyZWQoKSkgeworICAgICAgICBpZiAobV92ZXJ0aWNlc1szXS54eUNvb3JkaW5hdGVz
KCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRpY2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkg
PAorICAgICAgICAgICAgbV92ZXJ0aWNlc1syXS54eUNvb3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVh
cmVkVG9Qb2ludChtX3ZlcnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMoKSkpIHsKICAgICAgICAgICAg
IGFkZFRyaWFuZ2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92ZXJ0aWNlc1sxXSwgJm1fdmVydGljZXNb
M10pOwogICAgICAgICAgICAgYWRkVHJpYW5nbGUoJm1fdmVydGljZXNbMF0sICZtX3ZlcnRpY2Vz
WzNdLCAmbV92ZXJ0aWNlc1syXSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMzYsOCArMjM2LDgg
QEAgdm9pZCBMb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvcjo6dHJpYW5ndWxhdGVIZWxwZXIoTG9v
cEJsaW5uQ29uc3RhbnRzOjpGaWxsU2lkZQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIExpbmVz
ICgwLT4xKSwgKDItPjMpIGludGVyc2VjdCAtLSBvciBzaG91bGQsIG1vZHVsbyBudW1lcmljYWwK
ICAgICAgICAgLy8gcHJlY2lzaW9uIGlzc3VlcwotICAgICAgICBpZiAoKG1fdmVydGljZXNbMV0u
eHlDb29yZGluYXRlcygpIC0gbV92ZXJ0aWNlc1swXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdvbmFs
TGVuZ3RoU3F1YXJlZCgpIDwKLSAgICAgICAgICAgIChtX3ZlcnRpY2VzWzNdLnh5Q29vcmRpbmF0
ZXMoKSAtIG1fdmVydGljZXNbMl0ueHlDb29yZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNxdWFy
ZWQoKSkgeworICAgICAgICBpZiAobV92ZXJ0aWNlc1sxXS54eUNvb3JkaW5hdGVzKCkuZGlzdGFu
Y2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRpY2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkgPAorICAgICAg
ICAgICAgbV92ZXJ0aWNlc1szXS54eUNvb3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2lu
dChtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0ZXMoKSkpIHsKICAgICAgICAgICAgIGFkZFRyaWFu
Z2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92ZXJ0aWNlc1syXSwgJm1fdmVydGljZXNbMV0pOwogICAg
ICAgICAgICAgYWRkVHJpYW5nbGUoJm1fdmVydGljZXNbMF0sICZtX3ZlcnRpY2VzWzFdLCAmbV92
ZXJ0aWNlc1szXSk7CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTWF0aFV0aWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCmluZGV4
IGJhZjFjOTY4NTkyZWI1ZGExYmJmOWIwOTM1NTMxZjIxM2Q2ZDhlNGIuLmYyYjkyMmY3ZDI5YzM4
MWY1MmUyMjhmM2QyYWQxOWU0ZTE2YmYxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCkBAIC0x
MjAsNyArMTIwLDcgQEAgZmxvYXQgcm91bmRUb1plcm8oZmxvYXQgdmFsKQogCiBib29sIGFwcHJv
eEVxdWFsKGNvbnN0IEZsb2F0UG9pbnQmIHYwLCBjb25zdCBGbG9hdFBvaW50JiB2MSkKIHsKLSAg
ICByZXR1cm4gKHYwIC0gdjEpLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIDwgRXBzaWxvbiAqIEVw
c2lsb247CisgICAgcmV0dXJuIHYwLmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQodjEpIDwgRXBzaWxv
biAqIEVwc2lsb247CiB9CiAKIGJvb2wgYXBwcm94RXF1YWwoY29uc3QgRmxvYXRQb2ludDNEJiB2
MCwgY29uc3QgRmxvYXRQb2ludDNEJiB2MSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCmluZGV4
IDQ4ZmI3NjllN2IyZjE0M2RkMmUwMGViNzRhN2VlYzRkMDViMTg3MjAuLjYwYzA0NTczY2ZlNjNh
YTg3ZGFhOWNlMjlkNjQzNjE2Y2FhZjhlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcApA
QCAtNTUzLDggKzU1Myw4IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJ
bnRQb2ludCYgcG9pbnQxLCBjb25zdCBJbnRQb2ludCYgcG9pbnQyKQogICAgIC8vIFdlIGtub3cg
dGhlc2UgYXJlIHZlcnRpY2FsIG9yIGhvcml6b250YWwgbGluZXMsIHNvIHRoZSBsZW5ndGggd2ls
bCBqdXN0CiAgICAgLy8gYmUgdGhlIHN1bSBvZiB0aGUgZGlzcGxhY2VtZW50IGNvbXBvbmVudCB2
ZWN0b3JzIGdpdmUgb3IgdGFrZSAxIC0KICAgICAvLyBwcm9iYWJseSB3b3J0aCB0aGUgc3BlZWQg
dXAgb2Ygbm8gc3F1YXJlIHJvb3QsIHdoaWNoIGFsc28gd29uJ3QgYmUgZXhhY3QuCi0gICAgRmxv
YXRTaXplIGRpc3AgPSBwMiAtIHAxOwotICAgIGludCBsZW5ndGggPSBTa1NjYWxhclJvdW5kKGRp
c3Aud2lkdGgoKSArIGRpc3AuaGVpZ2h0KCkpOworICAgIEZsb2F0UG9pbnQgZGlzcCA9IHAyIC0g
cDE7CisgICAgaW50IGxlbmd0aCA9IFNrU2NhbGFyUm91bmQoZGlzcC54KCkgKyBkaXNwLnkoKSk7
CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JTdHJva2luZygmcGFpbnQsIDAs
IGxlbmd0aCk7CiAKICAgICBpZiAoc3Ryb2tlU3R5bGUoKSA9PSBEb3R0ZWRTdHJva2UgfHwgc3Ry
b2tlU3R5bGUoKSA9PSBEYXNoZWRTdHJva2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9FeGNsdXNpb25Qb2x5Z29uLmNwcAppbmRleCBhNTIyMzJmMmI3ZTdkMjljNjE0NWI3OTJlZDA4
ODg3YThiYzhjOWFlLi5mMDRmYzI2NTFiYzZjNmEzOGJmODUxMmNhOTJhNmUyYjM1NmVmMWI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCkBAIC00
Nyw5ICs0Nyw5IEBAIHN0cnVjdCBFZGdlSW50ZXJzZWN0aW9uIHsKICAgICBFZGdlSW50ZXJzZWN0
aW9uVHlwZSB0eXBlOwogfTsKIAotc3RhdGljIGlubGluZSBmbG9hdCBkZXRlcm1pbmFudChjb25z
dCBGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKK3N0YXRpYyBpbmxpbmUgZmxvYXQg
ZGV0ZXJtaW5hbnQoY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKIHsK
LSAgICByZXR1cm4gYS53aWR0aCgpICogYi5oZWlnaHQoKSAtIGEuaGVpZ2h0KCkgKiBiLndpZHRo
KCk7CisgICAgcmV0dXJuIGEueCgpICogYi55KCkgLSBhLnkoKSAqIGIueCgpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgYXJlQ29sbGluZWFyUG9pbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBj
b25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYgcDIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDM1NTI4MDVjOTVmNmQyMmIxNDlhZWNjNGNiYzA5
YWY3MGJkYzM5YTAuLjJhM2MyZDA1YmRjZDVmYzU0ZjBiMTFiMDllZmNhZTIyMzUwMzI5MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC03MzYsNyArNzM2LDcgQEAg
SW50U2l6ZSBSZW5kZXJCb3g6OmNhbGN1bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24oY29uc3QgSW50
UG9pbnQmIHdpbmRvd1BvaW50KSBjb24KICAgICAgICAgcG9pbnQubW92ZSgwLCAtYXV0b3Njcm9s
bEJlbHRTaXplKTsKICAgICBlbHNlIGlmIChwb2ludC55KCkgPiBib3gubWF4WSgpIC0gYXV0b3Nj
cm9sbEJlbHRTaXplKQogICAgICAgICBwb2ludC5tb3ZlKDAsIGF1dG9zY3JvbGxCZWx0U2l6ZSk7
Ci0gICAgcmV0dXJuIGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhwb2ludCkgLSB3aW5kb3dQ
b2ludDsKKyAgICByZXR1cm4gdG9JbnRTaXplKGZyYW1lVmlldy0+Y29udGVudHNUb1dpbmRvdyhw
b2ludCkgLSB3aW5kb3dQb2ludCk7CiB9CiAKIFJlbmRlckJveCogUmVuZGVyQm94OjpmaW5kQXV0
b3Njcm9sbGFibGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGYwNmUxMjYzOGI5YWM0
MWY2MDA5MmFkNDg1OTIzZGEyNGY0MGY2M2IuLjllNzJkYWVlMzgzNTZjZDI2NDU1YjdlZjNjMzZj
MTBmNzc0OWQ5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcApAQCAtMTE2Nyw5ICsxMTY3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2Rl
bE9iamVjdDo6QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXAoY29uc3QgSW50UmVjdCYgY2xp
cFJlY3QKIAogSW50UG9pbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdl
b21ldHJ5OjpyZWxhdGl2ZVBoYXNlKCkgY29uc3QKIHsKLSAgICBJbnRQb2ludCBwaGFzZSA9IG1f
cGhhc2U7Ci0gICAgcGhhc2UgKz0gbV9kZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0T3JpZ2lu
OwotICAgIHJldHVybiBwaGFzZTsKKyAgICByZXR1cm4gbV9waGFzZSArIG1fZGVzdFJlY3QubG9j
YXRpb24oKSAtIG1fZGVzdE9yaWdpbjsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
Y2FsY3VsYXRlQmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiBmaWxsTGF5
ZXIsIGNvbnN0IExheW91dFJlY3QmIHBhaW50UmVjdCwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAppbmRleCBkZGY1ZDM3OTVjNjhhYjFhNjBhOTAxZjcxZjQwNThjMjBl
ZjE4ZjRjLi4wZDNhZThiZjI4ZmRiMDVhNjkyOTI2ZjljNjljNjY3YjIyYjYxNTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE5MzAsOSArMTkzMCw5IEBA
IHN0YXRpYyBpbmxpbmUgaW50IGFkanVzdGVkU2Nyb2xsRGVsdGEoaW50IGJlZ2lubmluZ0RlbHRh
KSB7CiAgICAgcmV0dXJuIGFkanVzdGVkRGVsdGE7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSW50U2l6
ZSBhZGp1c3RlZFNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmIGRlbHRhKQorc3RhdGljIGlubGlu
ZSBJbnRTaXplIGFkanVzdGVkU2Nyb2xsRGVsdGEoY29uc3QgSW50UG9pbnQmIGRlbHRhKQogewot
ICAgIHJldHVybiBJbnRTaXplKGFkanVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEud2lkdGgoKSksIGFk
anVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEuaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gSW50U2l6ZShh
ZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRhLngoKSksIGFkanVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEu
eSgpKSk7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJ
bnRQb2ludCYgc291cmNlUG9pbnQpCkBAIC0xOTUwLDEyICsxOTUwLDEyIEBAIHZvaWQgUmVuZGVy
TGF5ZXI6OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgc291cmNlUG9pbnQpCiAg
ICAgZWxzZQogICAgICAgICBwcmV2aW91c01vdXNlUG9zaXRpb24gPSBsYXN0S25vd25Nb3VzZVBv
c2l0aW9uOwogCi0gICAgSW50U2l6ZSBkZWx0YSA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb24gLSBz
b3VyY2VQb2ludDsKKyAgICBJbnRQb2ludCBkZWx0YSA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb24g
LSBzb3VyY2VQb2ludDsKIAotICAgIGlmIChhYnMoZGVsdGEud2lkdGgoKSkgPD0gU2Nyb2xsVmll
dzo6bm9QYW5TY3JvbGxSYWRpdXMpIC8vIGF0IHRoZSBjZW50ZXIgd2UgbGV0IHRoZSBzcGFjZSBm
b3IgdGhlIGljb24KLSAgICAgICAgZGVsdGEuc2V0V2lkdGgoMCk7Ci0gICAgaWYgKGFicyhkZWx0
YS5oZWlnaHQoKSkgPD0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpCi0gICAgICAgIGRl
bHRhLnNldEhlaWdodCgwKTsKKyAgICBpZiAoYWJzKGRlbHRhLngoKSkgPD0gU2Nyb2xsVmlldzo6
bm9QYW5TY3JvbGxSYWRpdXMpIC8vIGF0IHRoZSBjZW50ZXIgd2UgbGV0IHRoZSBzcGFjZSBmb3Ig
dGhlIGljb24KKyAgICAgICAgZGVsdGEuc2V0WCgwKTsKKyAgICBpZiAoYWJzKGRlbHRhLnkoKSkg
PD0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpCisgICAgICAgIGRlbHRhLnNldFkoMCk7
CiAKICAgICBzY3JvbGxCeVJlY3Vyc2l2ZWx5KGFkanVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEpLCBT
Y3JvbGxPZmZzZXRDbGFtcGVkKTsKIH0KQEAgLTI4MTEsNyArMjgxMSw3IEBAIEludFNpemUgUmVu
ZGVyTGF5ZXI6Om9mZnNldEZyb21SZXNpemVDb3JuZXIoY29uc3QgSW50UG9pbnQmIGFic29sdXRl
UG9pbnQpIGNvbnN0CiAgICAgICAgIGVsZW1lbnRTaXplLnNldFdpZHRoKDApOwogICAgIEludFBv
aW50IHJlc2l6ZXJQb2ludCA9IEludFBvaW50KGVsZW1lbnRTaXplKTsKICAgICBJbnRQb2ludCBs
b2NhbFBvaW50ID0gcm91bmRlZEludFBvaW50KGFic29sdXRlVG9Db250ZW50cyhhYnNvbHV0ZVBv
aW50KSk7Ci0gICAgcmV0dXJuIGxvY2FsUG9pbnQgLSByZXNpemVyUG9pbnQ7CisgICAgcmV0dXJu
IEludFNpemU6OmZyb21Db3JuZXJQb2ludHMobG9jYWxQb2ludCwgcmVzaXplclBvaW50KTsKIH0K
IAogYm9vbCBSZW5kZXJMYXllcjo6aGFzT3ZlcmZsb3dDb250cm9scygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGZiOGVh
OGNhYzY1NWRiNTNmNjI2MjVhYzI5MTYxNDU2NTE5MWFiNDQuLmVmZWYxNzY5MjhiNzg4Y2FmZjkx
MWM2MDA2ZDA1NzYzNTU1YTdiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC02MjQsMTcgKzYyNCwxNyBAQCB2b2lkIFJlbmRlckxh
eWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAgICAgUmVuZGVy
TGF5ZXI6OkNsaXBSZWN0c0NvbnRleHQgY2xpcFJlY3RzQ29udGV4dChjb21wQW5jZXN0b3IsIDAs
IFRlbXBvcmFyeUNsaXBSZWN0cywgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIFJlbmRlckxh
eWVyOjpJZ25vcmVPdmVyZmxvd0NsaXApOwogICAgICAgICBJbnRSZWN0IHBhcmVudENsaXBSZWN0
ID0gcGl4ZWxTbmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5kQ2xpcFJlY3Qo
Y2xpcFJlY3RzQ29udGV4dCkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJl
Z2lvbnMuCiAgICAgICAgIEFTU0VSVChwYXJlbnRDbGlwUmVjdCAhPSBQYWludEluZm86OmluZmlu
aXRlUmVjdCgpKTsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldFBvc2l0aW9u
KEZsb2F0UG9pbnQocGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJl
bnRMb2NhdGlvbikpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0UG9zaXRp
b24ocGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlv
bik7CiAgICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRTaXplKHBhcmVudENsaXBS
ZWN0LnNpemUoKSk7CiAKICAgICAgICAgLy8gYmFja2dyb3VuZFJlY3QgaXMgcmVsYXRpdmUgdG8g
Y29tcEFuY2VzdG9yLCBzbyBzdWJ0cmFjdCBkZWx0YVgvZGVsdGFZIHRvIGdldCBiYWNrIHRvIGxv
Y2FsIGNvb3Jkcy4KLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldE9mZnNldEZy
b21SZW5kZXJlcihwYXJlbnRDbGlwUmVjdC5sb2NhdGlvbigpIC0gZGVsdGEpOworICAgICAgICBt
X2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKEludFNpemU6OmZy
b21Db3JuZXJQb2ludHMocGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKSwgZGVsdGEpKTsKIAogICAg
ICAgICAvLyBUaGUgcHJpbWFyeSBsYXllciBpcyB0aGVuIHBhcmVudGVkIGluLCBhbmQgcG9zaXRp
b25lZCByZWxhdGl2ZSB0byB0aGlzIGNsaXBwaW5nIGxheWVyLgogICAgICAgICBncmFwaGljc0xh
eWVyUGFyZW50TG9jYXRpb24gPSBwYXJlbnRDbGlwUmVjdC5sb2NhdGlvbigpOwogICAgIH0KIAot
ICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChyZWxhdGl2ZUNvbXBv
c2l0aW5nQm91bmRzLmxvY2F0aW9uKCkgLSBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24pKTsK
KyAgICBtX2dyYXBoaWNzTGF5ZXItPnNldFBvc2l0aW9uKHJlbGF0aXZlQ29tcG9zaXRpbmdCb3Vu
ZHMubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbik7CiAgICAgbV9ncmFw
aGljc0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIodG9JbnRTaXplKGxvY2FsQ29tcG9zaXRp
bmdCb3VuZHMubG9jYXRpb24oKSkpOwogICAgIAogICAgIEZsb2F0U2l6ZSBvbGRTaXplID0gbV9n
cmFwaGljc0xheWVyLT5zaXplKCk7CkBAIC02NTIsNyArNjUyLDcgQEAgdm9pZCBSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgSW50UmVjdCBjbGlw
cGluZ0JveDsKICAgICBpZiAoR3JhcGhpY3NMYXllciogY2xpcExheWVyID0gY2xpcHBpbmdMYXll
cigpKSB7CiAgICAgICAgIGNsaXBwaW5nQm94ID0gY2xpcEJveCh0b1JlbmRlckJveChyZW5kZXJl
cigpKSk7Ci0gICAgICAgIGNsaXBMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChjbGlwcGlu
Z0JveC5sb2NhdGlvbigpIC0gbG9jYWxDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpKSk7Cisg
ICAgICAgIGNsaXBMYXllci0+c2V0UG9zaXRpb24oY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIGxv
Y2FsQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRpb24oKSk7CiAgICAgICAgIGNsaXBMYXllci0+c2V0
U2l6ZShjbGlwcGluZ0JveC5zaXplKCkpOwogICAgICAgICBjbGlwTGF5ZXItPnNldE9mZnNldEZy
b21SZW5kZXJlcih0b0ludFNpemUoY2xpcHBpbmdCb3gubG9jYXRpb24oKSkpOwogICAgIH0KQEAg
LTcyOCw3ICs3MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NM
YXllckdlb21ldHJ5KCkKICAgICAgICAgLy8gYnV0IHRoZSByZWZsZWN0ZWQgbGF5ZXIgaXMgdGhl
IGJvdW5kcyBvZiB0aGlzIGxheWVyLCBzbyB3ZSBuZWVkIHRvIHBvc2l0aW9uIGl0IGFwcHJvcHJp
YXRlbHkuCiAgICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IGNvbXBvc2l0ZWRCb3VuZHMo
KTsKICAgICAgICAgRmxvYXRSZWN0IHJlZmxlY3Rpb25MYXllckJvdW5kcyA9IHJlZmxlY3Rpb25C
YWNraW5nLT5jb21wb3NpdGVkQm91bmRzKCk7Ci0gICAgICAgIHJlZmxlY3Rpb25CYWNraW5nLT5n
cmFwaGljc0xheWVyKCktPnNldFJlcGxpY2F0ZWRMYXllclBvc2l0aW9uKEZsb2F0UG9pbnQobGF5
ZXJCb3VuZHMubG9jYXRpb24oKSAtIHJlZmxlY3Rpb25MYXllckJvdW5kcy5sb2NhdGlvbigpKSk7
CisgICAgICAgIHJlZmxlY3Rpb25CYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnNldFJlcGxpY2F0
ZWRMYXllclBvc2l0aW9uKGxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZWZsZWN0aW9uTGF5ZXJC
b3VuZHMubG9jYXRpb24oKSk7CiAgICAgfQogCiAgICAgaWYgKG1fc2Nyb2xsaW5nTGF5ZXIpIHsK
QEAgLTczNyw3ICs3MzcsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhp
Y3NMYXllckdlb21ldHJ5KCkKICAgICAgICAgSW50UmVjdCBwYWRkaW5nQm94KHJlbmRlckJveC0+
Ym9yZGVyTGVmdCgpLCByZW5kZXJCb3gtPmJvcmRlclRvcCgpLCByZW5kZXJCb3gtPndpZHRoKCkg
LSByZW5kZXJCb3gtPmJvcmRlckxlZnQoKSAtIHJlbmRlckJveC0+Ym9yZGVyUmlnaHQoKSwgcmVu
ZGVyQm94LT5oZWlnaHQoKSAtIHJlbmRlckJveC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJCb3gtPmJv
cmRlckJvdHRvbSgpKTsKICAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBtX293bmluZ0xh
eWVyLT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKTsKIAotICAgICAgICBtX3Njcm9sbGluZ0xheWVy
LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KHBhZGRpbmdCb3gubG9jYXRpb24oKSAtIGxvY2FsQ29t
cG9zaXRpbmdCb3VuZHMubG9jYXRpb24oKSkpOworICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5z
ZXRQb3NpdGlvbihwYWRkaW5nQm94LmxvY2F0aW9uKCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRz
LmxvY2F0aW9uKCkpOwogCiAgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFNpemUocGFkZGlu
Z0JveC5zaXplKCkpOwogICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldFBvc2l0
aW9uKEZsb2F0UG9pbnQoLXNjcm9sbE9mZnNldC53aWR0aCgpLCAtc2Nyb2xsT2Zmc2V0LmhlaWdo
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJv
eC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXgg
MTRhZTBiZTUzZDdkMjFlMmI4OTQ5OTdhZTBlYWNiMmFhZWRkNTc4OS4uZjZiMTUyM2ZhZDY1ODJi
Njg3OTk3ODU4NDkzZDMyMmQ5NTA4M2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMaXN0Qm94LmNwcApAQCAtNTQwLDE4ICs1NDAsMTggQEAgaW50IFJlbmRlckxpc3RCb3g6
OnNjcm9sbFRvd2FyZChjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24pCiB7CiAgICAgLy8gRklY
TUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgRmxv
YXRQb2ludCBhYnNQb3MgPSBsb2NhbFRvQWJzb2x1dGUoKTsKLSAgICBJbnRTaXplIHBvc2l0aW9u
T2Zmc2V0ID0gcm91bmRlZEludFNpemUoZGVzdGluYXRpb24gLSBhYnNQb3MpOworICAgIEludFBv
aW50IHBvc2l0aW9uT2Zmc2V0ID0gZGVzdGluYXRpb24gLSByb3VuZGVkSW50UG9pbnQoYWJzUG9z
KTsKIAogICAgIGludCByb3dzID0gbnVtVmlzaWJsZUl0ZW1zKCk7CiAgICAgaW50IG9mZnNldCA9
IG1faW5kZXhPZmZzZXQ7CiAgICAgCi0gICAgaWYgKHBvc2l0aW9uT2Zmc2V0LmhlaWdodCgpIDwg
Ym9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgJiYgc2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0
SW5kZXgob2Zmc2V0IC0gMSkpCisgICAgaWYgKHBvc2l0aW9uT2Zmc2V0LnkoKSA8IGJvcmRlclRv
cCgpICsgcGFkZGluZ1RvcCgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9m
ZnNldCAtIDEpKQogICAgICAgICByZXR1cm4gb2Zmc2V0IC0gMTsKICAgICAKLSAgICBpZiAocG9z
aXRpb25PZmZzZXQuaGVpZ2h0KCkgPiBoZWlnaHQoKSAtIHBhZGRpbmdCb3R0b20oKSAtIGJvcmRl
ckJvdHRvbSgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCArIHJv
d3MpKQorICAgIGlmIChwb3NpdGlvbk9mZnNldC55KCkgPiBoZWlnaHQoKSAtIHBhZGRpbmdCb3R0
b20oKSAtIGJvcmRlckJvdHRvbSgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4
KG9mZnNldCArIHJvd3MpKQogICAgICAgICByZXR1cm4gb2Zmc2V0ICsgcm93cyAtIDE7CiAgICAg
Ci0gICAgcmV0dXJuIGxpc3RJbmRleEF0T2Zmc2V0KHBvc2l0aW9uT2Zmc2V0KTsKKyAgICByZXR1
cm4gbGlzdEluZGV4QXRPZmZzZXQodG9TaXplKHBvc2l0aW9uT2Zmc2V0KSk7CiB9CiAKIHZvaWQg
UmVuZGVyTGlzdEJveDo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDZkYjBkNjkzYmI1ZmM1NzljOTFiMDll
MGZiN2JmMzIzNjVlZTgxMjIuLjAyYjQ3NWIzZjJkYzEzNzVmNzIyZjJjMTk1NjNlODFkMDJiNWE2
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0yODEs
MTIgKzI4MSwxMiBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludElu
Zm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIHJvdW5kVG9J
bnQoYWRqdXN0ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkp
OwogICAgICAgICBJbnRSZWN0IHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OwogCi0gICAgICAg
IEludFNpemUgd2lkZ2V0UGFpbnRPZmZzZXQgPSBwYWludExvY2F0aW9uIC0gd2lkZ2V0TG9jYXRp
b247CisgICAgICAgIEludFBvaW50IHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlvbiAt
IHdpZGdldExvY2F0aW9uOwogICAgICAgICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMgaW50byBj
b21wb3NpdGluZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2lu
ZyBjb21wb3NpdGluZyBsYXllciwKICAgICAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlzIGNh
c2UsIHNoaWZ0IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3QtcmVs
YXRpdmUgdG8gZml4IHBsdWctaW4gZHJhd2luZy4KICAgICAgICAgaWYgKCF3aWRnZXRQYWludE9m
ZnNldC5pc1plcm8oKSkgewogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0
ZSh3aWRnZXRQYWludE9mZnNldCk7Ci0gICAgICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0
UGFpbnRPZmZzZXQpOworICAgICAgICAgICAgcGFpbnRSZWN0Lm1vdmVCeSgtd2lkZ2V0UGFpbnRP
ZmZzZXQpOwogICAgICAgICB9CiAgICAgICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29u
dGV4dCwgcGFpbnRSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdNYXJrZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01h
cmtlckRhdGEuaAppbmRleCAwOWE1NDJiMjEwOTc1N2M5NjJkMjM1OWJiOTkwNTBkNDkxNGQwNTg4
Li4zMzE1YTgyZjM1OThhMWE5ZWM2MWI0ZjY3YjdlNzgxNjJlN2E4MTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaApAQCAtODIsOCArODIsOCBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIGZsb2F0IGN1cnJlbnRBbmdsZShTVkdNYXJrZXJUeXBlIHR5
cGUpIGNvbnN0CiAgICAgewotICAgICAgICBGbG9hdFBvaW50IGluc2xvcGVDaGFuZ2UobV9pbnNs
b3BlUG9pbnRzWzFdIC0gbV9pbnNsb3BlUG9pbnRzWzBdKTsKLSAgICAgICAgRmxvYXRQb2ludCBv
dXRzbG9wZUNoYW5nZShtX291dHNsb3BlUG9pbnRzWzFdIC0gbV9vdXRzbG9wZVBvaW50c1swXSk7
CisgICAgICAgIEZsb2F0UG9pbnQgaW5zbG9wZUNoYW5nZSA9IG1faW5zbG9wZVBvaW50c1sxXSAt
IG1faW5zbG9wZVBvaW50c1swXTsKKyAgICAgICAgRmxvYXRQb2ludCBvdXRzbG9wZUNoYW5nZSA9
IG1fb3V0c2xvcGVQb2ludHNbMV0gLSBtX291dHNsb3BlUG9pbnRzWzBdOwogCiAgICAgICAgIGRv
dWJsZSBpbnNsb3BlID0gcmFkMmRlZyhpbnNsb3BlQ2hhbmdlLnNsb3BlQW5nbGVSYWRpYW5zKCkp
OwogICAgICAgICBkb3VibGUgb3V0c2xvcGUgPSByYWQyZGVnKG91dHNsb3BlQ2hhbmdlLnNsb3Bl
QW5nbGVSYWRpYW5zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9u
RWxlbWVudC5jcHAKaW5kZXggYTJjMzkyZjkwOWEzMjMxODA1MDk1MDNlNGRmM2M5NDEwOWQ2MzE2
My4uYzk0YjFkNWQ4Y2JmZjUzMDNiZWE0ZDlkZTJmOTI2ODMyYWJmNTg2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0zMjEsOCArMzIx
LDggQEAgZmxvYXQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbmNlKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlm
ICghcGFyc2VQb2ludCh0b1N0cmluZywgdG8pKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgRmxv
YXRTaXplIGRpZmYgPSB0byAtIGZyb207Ci0gICAgcmV0dXJuIHNxcnRmKGRpZmYud2lkdGgoKSAq
IGRpZmYud2lkdGgoKSArIGRpZmYuaGVpZ2h0KCkgKiBkaWZmLmhlaWdodCgpKTsKKyAgICBGbG9h
dFBvaW50IGRpZmYgPSB0byAtIGZyb207CisgICAgcmV0dXJuIGRpZmYubGVuZ3RoKCk7CiB9CiAK
IHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OnVwZGF0ZUFuaW1hdGlvbk1vZGUoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCmluZGV4IGY5MDhlMGRiMzQwZThjZWVlM2JiNGZm
ZWJhMmU2ZjhlZDlmOWFlZWYuLmRiZDFkMDY0NzFkOTY1MGZkNWI1NDFlMzllYmU4OWFhZWQyNzdh
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAKQEAgLTQxMiwxMyArNDEyLDEz
IEBAIHZvaWQgU1ZHUGF0aFBhcnNlcjo6Y2xlYW51cCgpCiAvLyBTZWUgYWxzbyBTVkcgaW1wbGVt
ZW50YXRpb24gbm90ZXM6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9pbXBsbm90ZS5odG1sI0Fy
Y0NvbnZlcnNpb25FbmRwb2ludFRvQ2VudGVyCiBib29sIFNWR1BhdGhQYXJzZXI6OmRlY29tcG9z
ZUFyY1RvQ3ViaWMoZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxvYXRQb2ludCYg
cG9pbnQxLCBGbG9hdFBvaW50JiBwb2ludDIsIGJvb2wgbGFyZ2VBcmNGbGFnLCBib29sIHN3ZWVw
RmxhZykKIHsKLSAgICBGbG9hdFNpemUgbWlkUG9pbnREaXN0YW5jZSA9IHBvaW50MSAtIHBvaW50
MjsKKyAgICBGbG9hdFBvaW50IG1pZFBvaW50RGlzdGFuY2UgPSBwb2ludDEgLSBwb2ludDI7CiAg
ICAgbWlkUG9pbnREaXN0YW5jZS5zY2FsZSgwLjVmKTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSBw
b2ludFRyYW5zZm9ybTsKICAgICBwb2ludFRyYW5zZm9ybS5yb3RhdGUoLWFuZ2xlKTsKIAotICAg
IEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRNaWRQb2ludCA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50
KEZsb2F0UG9pbnQobWlkUG9pbnREaXN0YW5jZS53aWR0aCgpLCBtaWRQb2ludERpc3RhbmNlLmhl
aWdodCgpKSk7CisgICAgRmxvYXRQb2ludCB0cmFuc2Zvcm1lZE1pZFBvaW50ID0gcG9pbnRUcmFu
c2Zvcm0ubWFwUG9pbnQobWlkUG9pbnREaXN0YW5jZSk7CiAgICAgZmxvYXQgc3F1YXJlUnggPSBy
eCAqIHJ4OwogICAgIGZsb2F0IHNxdWFyZVJ5ID0gcnkgKiByeTsKICAgICBmbG9hdCBzcXVhcmVY
ID0gdHJhbnNmb3JtZWRNaWRQb2ludC54KCkgKiB0cmFuc2Zvcm1lZE1pZFBvaW50LngoKTsKQEAg
LTQzOCw5ICs0MzgsOSBAQCBib29sIFNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMo
ZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxvYXRQbwogCiAgICAgcG9pbnQxID0g
cG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQxKTsKICAgICBwb2ludDIgPSBwb2ludFRyYW5z
Zm9ybS5tYXBQb2ludChwb2ludDIpOwotICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHBvaW50MiAtIHBv
aW50MTsKKyAgICBGbG9hdFBvaW50IGRlbHRhID0gcG9pbnQyIC0gcG9pbnQxOwogCi0gICAgZmxv
YXQgZCA9IGRlbHRhLndpZHRoKCkgKiBkZWx0YS53aWR0aCgpICsgZGVsdGEuaGVpZ2h0KCkgKiBk
ZWx0YS5oZWlnaHQoKTsKKyAgICBmbG9hdCBkID0gZGVsdGEubGVuZ3RoU3F1YXJlZCgpOwogICAg
IGZsb2F0IHNjYWxlRmFjdG9yU3F1YXJlZCA9IHN0ZDo6bWF4KDEgLyBkIC0gMC4yNWYsIDAuZik7
CiAKICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHNxcnRmKHNjYWxlRmFjdG9yU3F1YXJlZCk7CkBA
IC00NTAsMTAgKzQ1MCwxMCBAQCBib29sIFNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3Vi
aWMoZmxvYXQgYW5nbGUsIGZsb2F0IHJ4LCBmbG9hdCByeSwgRmxvYXRQbwogICAgIGRlbHRhLnNj
YWxlKHNjYWxlRmFjdG9yKTsKICAgICBGbG9hdFBvaW50IGNlbnRlclBvaW50ID0gcG9pbnQxICsg
cG9pbnQyOwogICAgIGNlbnRlclBvaW50LnNjYWxlKDAuNWYsIDAuNWYpOwotICAgIGNlbnRlclBv
aW50Lm1vdmUoLWRlbHRhLmhlaWdodCgpLCBkZWx0YS53aWR0aCgpKTsKKyAgICBjZW50ZXJQb2lu
dC5tb3ZlKC1kZWx0YS55KCksIGRlbHRhLngoKSk7CiAKLSAgICBmbG9hdCB0aGV0YTEgPSBGbG9h
dFBvaW50KHBvaW50MSAtIGNlbnRlclBvaW50KS5zbG9wZUFuZ2xlUmFkaWFucygpOwotICAgIGZs
b2F0IHRoZXRhMiA9IEZsb2F0UG9pbnQocG9pbnQyIC0gY2VudGVyUG9pbnQpLnNsb3BlQW5nbGVS
YWRpYW5zKCk7CisgICAgZmxvYXQgdGhldGExID0gKHBvaW50MSAtIGNlbnRlclBvaW50KS5zbG9w
ZUFuZ2xlUmFkaWFucygpOworICAgIGZsb2F0IHRoZXRhMiA9IChwb2ludDIgLSBjZW50ZXJQb2lu
dCkuc2xvcGVBbmdsZVJhZGlhbnMoKTsKIAogICAgIGZsb2F0IHRoZXRhQXJjID0gdGhldGEyIC0g
dGhldGExOwogICAgIGlmICh0aGV0YUFyYyA8IDAgJiYgc3dlZXBGbGFnKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKaW5kZXggODBhYmVlM2MyMjE4ZTRkNjJm
NjI0MzRmZTVlNWI2MmM3MTRkYTIzYS4uY2RiOTE0NGY5MWExMmQyMzZhZGE4NzlmZGRlM2MzMWUz
YWVhYzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3Rh
bmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3Bw
CkBAIC02MSwxNSArNjEsMTUgQEAgU1ZHVHJhbnNmb3JtRGlzdGFuY2U6OlNWR1RyYW5zZm9ybURp
c3RhbmNlKGNvbnN0IFNWR1RyYW5zZm9ybSYgZnJvbVNWR1RyYW5zZm9ybSwKICAgICBjYXNlIFNW
R1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9VTktOT1dOOgogICAgICAgICBicmVhazsKICAgICBj
YXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9ST1RBVEU6IHsKLSAgICAgICAgRmxvYXRT
aXplIGNlbnRlckRpc3RhbmNlID0gdG9TVkdUcmFuc2Zvcm0ucm90YXRpb25DZW50ZXIoKSAtIGZy
b21TVkdUcmFuc2Zvcm0ucm90YXRpb25DZW50ZXIoKTsKKyAgICAgICAgRmxvYXRQb2ludCBjZW50
ZXJEaXN0YW5jZSA9IHRvU1ZHVHJhbnNmb3JtLnJvdGF0aW9uQ2VudGVyKCkgLSBmcm9tU1ZHVHJh
bnNmb3JtLnJvdGF0aW9uQ2VudGVyKCk7CiAgICAgICAgIG1fYW5nbGUgPSB0b1NWR1RyYW5zZm9y
bS5hbmdsZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS5hbmdsZSgpOwotICAgICAgICBtX2N4ID0gY2Vu
dGVyRGlzdGFuY2Uud2lkdGgoKTsKLSAgICAgICAgbV9jeSA9IGNlbnRlckRpc3RhbmNlLmhlaWdo
dCgpOworICAgICAgICBtX2N4ID0gY2VudGVyRGlzdGFuY2UueCgpOworICAgICAgICBtX2N5ID0g
Y2VudGVyRGlzdGFuY2UueSgpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBTVkdU
cmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVFJBTlNMQVRFOiB7Ci0gICAgICAgIEZsb2F0U2l6ZSB0
cmFuc2xhdGlvbkRpc3RhbmNlID0gdG9TVkdUcmFuc2Zvcm0udHJhbnNsYXRlKCkgLSBmcm9tU1ZH
VHJhbnNmb3JtLnRyYW5zbGF0ZSgpOwotICAgICAgICBtX3RyYW5zZm9ybS50cmFuc2xhdGUodHJh
bnNsYXRpb25EaXN0YW5jZS53aWR0aCgpLCB0cmFuc2xhdGlvbkRpc3RhbmNlLmhlaWdodCgpKTsK
KyAgICAgICAgRmxvYXRQb2ludCB0cmFuc2xhdGlvbkRpc3RhbmNlID0gdG9TVkdUcmFuc2Zvcm0u
dHJhbnNsYXRlKCkgLSBmcm9tU1ZHVHJhbnNmb3JtLnRyYW5zbGF0ZSgpOworICAgICAgICBtX3Ry
YW5zZm9ybS50cmFuc2xhdGUodHJhbnNsYXRpb25EaXN0YW5jZS54KCksIHRyYW5zbGF0aW9uRGlz
dGFuY2UueSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU1ZHVHJhbnNmb3Jt
OjpTVkdfVFJBTlNGT1JNX1NDQUxFOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9EcmFnQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9E
cmFnQ2xpZW50SW1wbC5jcHAKaW5kZXggMzlmNDhjNmI1YmJhZThhNjNmM2ZhMjM1NWJlYTE4OGFj
NjczZTYxNC4uNDcwNmY2OTc3MjU2NTQ1ZjA3YzQwNmRkYWI1OGY1MjVhMjE5MGY5MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRHJhZ0NsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RyYWdDbGllbnRJbXBsLmNwcApAQCAtODQsOCAr
ODQsOCBAQCB2b2lkIERyYWdDbGllbnRJbXBsOjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGRyYWdJ
bWFnZSwKIAogICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBjbGlwYm9hcmQt
PnNvdXJjZU9wZXJhdGlvbigpOwogCi0gICAgSW50U2l6ZSBvZmZzZXRTaXplKGV2ZW50UG9zIC0g
ZHJhZ0ltYWdlT3JpZ2luKTsKLSAgICBXZWJQb2ludCBvZmZzZXRQb2ludChvZmZzZXRTaXplLndp
ZHRoKCksIG9mZnNldFNpemUuaGVpZ2h0KCkpOworICAgIEludFBvaW50IG9mZnNldCA9IGV2ZW50
UG9zIC0gZHJhZ0ltYWdlT3JpZ2luOworICAgIFdlYlBvaW50IG9mZnNldFBvaW50KG9mZnNldC54
KCksIG9mZnNldC55KCkpOwogCiAgICAgaWYgKGRyYWdJbWFnZSAmJiBkcmFnSW1hZ2UtPmJpdG1h
cCAmJiBtX3dlYlZpZXctPmRldmljZVNjYWxlRmFjdG9yKCkgIT0gZHJhZ0ltYWdlLT5yZXNvbHV0
aW9uU2NhbGUpIHsKICAgICAgICAgQVNTRVJUKGRyYWdJbWFnZS0+cmVzb2x1dGlvblNjYWxlID4g
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAppbmRleCA5
ZTcyNTI4OGEwZGM3MTZhYmI4NjRmMDJjMTkyYjljZDNlNWI2YTBmLi4wZTUwM2IwYzA3MWQwMDc2
YTQxODhhNGYxMDJhMmNmOTJmYTVjZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKQEAgLTIwMDEsMTAgKzIwMDEsOCBAQCBpbnQgV2ViRnJhbWVJbXBs
OjpuZWFyZXN0RmluZE1hdGNoKGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCYgZGlzdGFu
Y2VTcXVhcgogICAgIGRpc3RhbmNlU3F1YXJlZCA9IEZMVF9NQVg7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2ZpbmRNYXRjaGVzQ2FjaGUuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgQVNT
RVJUKCFtX2ZpbmRNYXRjaGVzQ2FjaGVbaV0ubV9yZWN0LmlzRW1wdHkoKSk7Ci0gICAgICAgIEZs
b2F0U2l6ZSBvZmZzZXQgPSBwb2ludCAtIG1fZmluZE1hdGNoZXNDYWNoZVtpXS5tX3JlY3QuY2Vu
dGVyKCk7Ci0gICAgICAgIGZsb2F0IHdpZHRoID0gb2Zmc2V0LndpZHRoKCk7Ci0gICAgICAgIGZs
b2F0IGhlaWdodCA9IG9mZnNldC5oZWlnaHQoKTsKLSAgICAgICAgZmxvYXQgY3VycmVudERpc3Rh
bmNlU3F1YXJlZCA9IHdpZHRoICogd2lkdGggKyBoZWlnaHQgKiBoZWlnaHQ7CisgICAgICAgIEZs
b2F0UG9pbnQgb2Zmc2V0ID0gcG9pbnQgLSBtX2ZpbmRNYXRjaGVzQ2FjaGVbaV0ubV9yZWN0LmNl
bnRlcigpOworICAgICAgICBmbG9hdCBjdXJyZW50RGlzdGFuY2VTcXVhcmVkID0gb2Zmc2V0Lmxl
bmd0aFNxdWFyZWQoKTsKICAgICAgICAgaWYgKGN1cnJlbnREaXN0YW5jZVNxdWFyZWQgPCBkaXN0
YW5jZVNxdWFyZWQpIHsKICAgICAgICAgICAgIG5lYXJlc3QgPSBpOwogICAgICAgICAgICAgZGlz
dGFuY2VTcXVhcmVkID0gY3VycmVudERpc3RhbmNlU3F1YXJlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181846</attachid>
            <date>2013-01-08 22:07:07 -0800</date>
            <delta_ts>2013-01-08 23:02:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106408-20130109170410.patch</filename>
            <type>text/plain</type>
            <size>66500</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJiM2NjYzI4Y2E0Nzg1
OWI5NDA0MjhjYjgyNmFlZWMwZjAxMWE1NC4uMjJiNDlkYjQxODhiNzY0NWRhMGRhNjE3ZGU4ZWMx
ZjdiNmI4OTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAxMy0wMS0wOCAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugc2Vt
YW50aWNzIG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBmcm9tIGFub3RoZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQwOAorCisg
ICAgICAgIFRoZSBjb21tb24gY2FzZSBvZiBzdWJ0cmFjdGluZyBvbmUgSW50L0Zsb2F0UG9pbnQg
ZnJvbSBhbm90aGVyIGlzIHRvCisgICAgICAgIG9idGFpbiBhIHJlbGF0aXZlIHBvc2l0aW9uIG9y
IHZlY3Rvciwgc28gdGhpcyBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5IAorICAgICAgICBvcGVyYXRv
ci0oKS4gIENyZWF0aW5nIGFuIEludC9GbG9hdFNpemUgZnJvbSB0d28gSW50L0Zsb2F0UG9pbnRz
IGlzIGEKKyAgICAgICAgbGVzcyBjb21tb24gb3BlcmF0aW9uIGFuZCBzaG91bGQgYmUgbWFkZSBt
b3JlIGV4cGxpY2l0LiBUaGlzIGNoYW5nZSAuLi4KKyAgICAgICAgLSByZW1vdmVzICdJbnQvRmxv
YXRTaXplIG9wZXJhdG9yLShjb25zdCBpbnQvRmxvYXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBv
aW50JiknCisgICAgICAgIC0gYWRkcyAnSW50L0Zsb2F0UG9pbnQgb3BlcmF0b3ItKGNvbnN0IGlu
dC9GbG9hdFBvaW50JiwgY29uc3QgSW50L0Zsb2F0UG9pbnQmKScKKyAgICAgICAgLSBhZGRzICdJ
bnQvRmxvYXRTaXplIEludC9GbG9hdFNpemU6OmZyb21Db3JuZXJQb2ludHMoY29uc3QgaW50L0Zs
b2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJworCisgICAgICAgIEFsc28gYWRkcyAn
ZmxvYXQgRmxvYXRQb2ludDo6ZGlzdGFuY2UoU3F1YXJlZClUb1BvaW50KGNvbnN0IEZsb2F0UG9p
bnQmKScKKyAgICAgICAgYXMgYSBjb252ZW5pZW5jZS4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyBvbmx5LCBubyBmdW5jdGlvbmFs
IGNoYW5nZS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5
cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmlsaXR5SGl0VGVzdCk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRI
aXRUZXN0KToKKyAgICAgICAgKiBjc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NHcmFkaWVudFZhbHVlOjphZGRTdG9wcyk6CisgICAgICAgIChXZWJDb3JlOjpk
aXN0YW5jZVRvQ2xvc2VzdENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpkaXN0YW5jZVRvRmFy
dGhlc3RDb3JuZXIpOgorICAgICAgICAoV2ViQ29yZTo6aG9yaXpvbnRhbEVsbGlwc2VSYWRpdXMp
OgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6OmJvdW5kaW5nQm94KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJlY3QpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZHJh
Z0h5c3RlcmVzaXNFeGNlZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6Omhh
bmRsZURyYWcpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50
czo6Y29tcHV0ZVN0aWNreU9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZl
bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkZsb2F0UG9pbnQ6OnNjYWxlKToKKyAgICAgICAgKEZsb2F0UG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3ItKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UG9pbnQ6
OmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpGbG9hdFBvaW50OjpkaXN0YW5jZVRvUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmFudCk6
CisgICAgICAgIChXZWJDb3JlOjppc1BvaW50SW5UcmlhbmdsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpyaWdodE1vc3RDb3JuZXJUb1ZlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFF1YWQ6
OmludGVyc2VjdHNSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjplbmNsb3NlZEludFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
U2l6ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFNpemU6OmZyb21Db3JuZXJQb2ludHMp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZsb2F0U2l6ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnRyYW5zbGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkludFBvaW50Ojppc1plcm8pOgorICAg
ICAgICAoSW50UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW50UG9pbnQ6Omxlbmd0aFNxdWFy
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3ItKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
dFBvaW50OjpkaXN0YW5jZVNxdWFyZWRUb1BvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbnRTaXplLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRTaXplLmNwcC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50U2l6ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnRTaXplKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVuY2xvc2luZ0ludFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhU
cmF2ZXJzYWxTdGF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXRoVHJhdmVyc2FsU3RhdGU6
OnByb2Nlc3NTZWdtZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVyQm91bmRp
bmdSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0Eu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNBOjpjb21wdXRlUGl4ZWxBbGln
bm1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBp
eGVscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubkxvY2FsVHJp
YW5ndWxhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxvb3BCbGlubkxvY2FsVHJpYW5ndWxh
dG9yOjp0cmlhbmd1bGF0ZUhlbHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0xvb3BCbGlubk1hdGhVdGlscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb29wQmxpbm5NYXRo
VXRpbHM6OmFwcHJveEVxdWFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0NvbnRleHRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnJv
dW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3Jh
cGhpY3NDb250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXRSZW5kZXJpbmdDb250ZXh0OjpXaWRnZXRS
ZW5kZXJpbmdDb250ZXh0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpkZXRlcm1pbmFudCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGN1bGF0ZUF1
dG9zY3JvbGxEaXJlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6QmFja2dy
b3VuZEltYWdlR2VvbWV0cnk6OnJlbGF0aXZlUGhhc2UpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RlZFNjcm9sbERlbHRhKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Om9mZnNldEZyb21SZXNpemVDb3JuZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxpc3RCb3g6OnNjcm9sbFRvd2FyZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldp
ZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnBhaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R01hcmtlckRhdGE6OmN1cnJlbnRBbmdsZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rp
b25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR1BhdGhQYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aFBhcnNlcjo6ZGVjb21wb3NlQXJjVG9DdWJpYyk6Cisg
ICAgICAgICogc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RyYW5zZm9ybURpc3RhbmNlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZSk6CisKIDIwMTMtMDEt
MDggIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29weS1wYXN0
ZSBwcmVzZXJ2ZXMgPGVtYmVkPiB0YWdzIGNvbnRhaW5pbmcgYWN0aXZlIGNvbnRlbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDRiN2I2Mzc1MTk3MDI3Y2U4ZjExYWRhZDY3NjQxNmMz
ZWJjY2YzZGEuLmNiMGE3NDc5OGVkNGE2NzYxNmIyZDZmZGUyMjBkZDE4YTZiNjJlMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTMtMDEtMDggIFN0ZXZl
IEJsb2NrICA8c3RldmVibG9ja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdlIHNlbWFu
dGljcyBvZiBzdWJ0cmFjdGluZyBvbmUgSW50L0Zsb2F0UG9pbnQgZnJvbSBhbm90aGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0MDgKKworICAg
ICAgICBUaGUgY29tbW9uIGNhc2Ugb2Ygc3VidHJhY3Rpbmcgb25lIEludC9GbG9hdFBvaW50IGZy
b20gYW5vdGhlciBpcyB0bworICAgICAgICBvYnRhaW4gYSByZWxhdGl2ZSBwb3NpdGlvbiBvciB2
ZWN0b3IsIHNvIHRoaXMgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSAKKyAgICAgICAgb3BlcmF0b3It
KCkuICBDcmVhdGluZyBhbiBJbnQvRmxvYXRTaXplIGZyb20gdHdvIEludC9GbG9hdFBvaW50cyBp
cyBhCisgICAgICAgIGxlc3MgY29tbW9uIG9wZXJhdGlvbiBhbmQgc2hvdWxkIGJlIG1hZGUgbW9y
ZSBleHBsaWNpdC4gVGhpcyBjaGFuZ2UgLi4uCisgICAgICAgIC0gcmVtb3ZlcyAnSW50L0Zsb2F0
U2l6ZSBvcGVyYXRvci0oY29uc3QgaW50L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2lu
dCYpJworICAgICAgICAtIGFkZHMgJ0ludC9GbG9hdFBvaW50IG9wZXJhdG9yLShjb25zdCBpbnQv
RmxvYXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisgICAgICAgIC0gYWRkcyAnSW50
L0Zsb2F0U2l6ZSBJbnQvRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGNvbnN0IGludC9GbG9h
dFBvaW50JiwgY29uc3QgSW50L0Zsb2F0UG9pbnQmKScKKworICAgICAgICBBbHNvIGFkZHMgJ2Zs
b2F0IEZsb2F0UG9pbnQ6OmRpc3RhbmNlKFNxdWFyZWQpVG9Qb2ludChjb25zdCBGbG9hdFBvaW50
JiknCisgICAgICAgIGFzIGEgY29udmVuaWVuY2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzcmMvRHJhZ0NsaWVudEltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpEcmFnQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBzcmMvV2Vi
RnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpuZWFyZXN0Rmlu
ZE1hdGNoKToKKwogMjAxMy0wMS0wOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBDb3B5LXBhc3RlIHByZXNlcnZlcyA8ZW1iZWQ+IHRhZ3MgY29udGFpbmluZyBh
Y3RpdmUgY29udGVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NmQyNDcwOWM0NDU4ZWVlOTU3YWZlN2I1MGZl
YTAxNzQyNmVkY2FmLi40ZmQ0YWE4MmExOWViOTIzZmVlNWVjYzE3NzQzOTNkY2NiODZkZDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTMtMDEtMDggIFN0ZXZlIEJsb2NrICA8c3Rl
dmVibG9ja0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdlIHNlbWFudGljcyBvZiBzdWJ0
cmFjdGluZyBvbmUgSW50L0Zsb2F0UG9pbnQgZnJvbSBhbm90aGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0MDgKKworICAgICAgICBUaGUgY29t
bW9uIGNhc2Ugb2Ygc3VidHJhY3Rpbmcgb25lIEludC9GbG9hdFBvaW50IGZyb20gYW5vdGhlciBp
cyB0bworICAgICAgICBvYnRhaW4gYSByZWxhdGl2ZSBwb3NpdGlvbiBvciB2ZWN0b3IsIHNvIHRo
aXMgc2hvdWxkIGJlIHN1cHBvcnRlZCBieSAKKyAgICAgICAgb3BlcmF0b3ItKCkuICBDcmVhdGlu
ZyBhbiBJbnQvRmxvYXRTaXplIGZyb20gdHdvIEludC9GbG9hdFBvaW50cyBpcyBhCisgICAgICAg
IGxlc3MgY29tbW9uIG9wZXJhdGlvbiBhbmQgc2hvdWxkIGJlIG1hZGUgbW9yZSBleHBsaWNpdC4g
VGhpcyBjaGFuZ2UgLi4uCisgICAgICAgIC0gcmVtb3ZlcyAnSW50L0Zsb2F0U2l6ZSBvcGVyYXRv
ci0oY29uc3QgaW50L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJworICAgICAg
ICAtIGFkZHMgJ0ludC9GbG9hdFBvaW50IG9wZXJhdG9yLShjb25zdCBpbnQvRmxvYXRQb2ludCYs
IGNvbnN0IEludC9GbG9hdFBvaW50JiknCisgICAgICAgIC0gYWRkcyAnSW50L0Zsb2F0U2l6ZSBJ
bnQvRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGNvbnN0IGludC9GbG9hdFBvaW50JiwgY29u
c3QgSW50L0Zsb2F0UG9pbnQmKScKKworICAgICAgICBBbHNvIGFkZHMgJ2Zsb2F0IEZsb2F0UG9p
bnQ6OmRpc3RhbmNlKFNxdWFyZWQpVG9Qb2ludChjb25zdCBGbG9hdFBvaW50JiknCisgICAgICAg
IGFzIGEgY29udmVuaWVuY2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5k
ZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjphZGp1c3RQb3Np
dGlvbkZvckZpeGVkTGF5ZXJzKToKKwogMjAxMy0wMS0wOCAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbGVuY2UgYSBzYW5kYm94IHZpb2xhdGlvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dAppbmRleCA2YmY5NDJjOTg1OTY2NDAwZmQxYTIxYWZjNDFjNmM5MjVl
YWNkOTZkLi5kOGNhMTRkYThlZmJmNDA4NGM4NDBlYzg2OTkwMDBmNGM5Nzc5OGFkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dApAQCAtMTkxNyw2ICsxOTE3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlT3JpZW50YXRpb24uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5j
cHAKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL01lZGlhUGxheWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KaW5kZXggYmFlMjg3OGEwYmZmNDVlYzVmOTYwY2RkZWRlZDAwMzFhYmVmMTk3
Ny4uNmY4ZjhkNTQ3NTBmYWYzZTc0YzU1MDFkYTc5NjFlNjdkMmJlMGQ2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCkBAIC01NTc4LDYgKzU1NzgsNyBAQCB3ZWJjb3JlX3BsYXRmb3Jt
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50
SGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRTaXplSGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9MYXRpbjFUZXh0SXRlcmF0b3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAxZjRlYmI2ZTMyNTNhOTA1
NWMxNWNhNTgxODY3MmQxMGFmMGI2ODU4Li44YjNkY2YyYjhmZjA3NzcyYTBkNWNkNTdkNzc1ZTg5
NWMyY2M4MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTk5OSw2ICs5OTksNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcCBcCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRS
ZWN0LmNwcCBcCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAgXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVy
c2FsU3RhdGUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKaW5kZXggMjJjZDc0ZTg4ZmI0Y2M1NTE1ZjQ1MDYzZGZiM2ZmYTIyYTdlMzE4MS4u
NmU4MTdiNGY3ZmQ2YWM3YjAwZmU3NzhjYjM5ZTk5YjZkMmI5ZjgyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQpAQCAtNDYyNyw2ICs0NjI3LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUu
Y3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9n
cmFwaGljcy9SZWdpb24uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDliODMxNzkwNTI3ODJkNDg0ZGE4NzdlMWUy
OWY0ZjVhMWI1N2ZlM2IuLmI0ZjNjYjEzNmFhNWY5NjllMzUxODA4MzE1MWE3YTIwODNkN2VlMzMg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0y
OTc5Myw2ICsyOTc5MywxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW50U2l6ZS5jcHAiCisJCQkJCT4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxn
cmFwaGljc1xJbnRTaXplLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAppbmRleCA0NzIy
NzBjMTgyYWI3NWU3YjAyN2Y0MzVmMWUyNWZkYmYxN2Y3MjM0Li41OGRjNmIzMGRhODBhOThhNWEx
M2NjZGIzY2UxYjVhZTRhZDgyNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTE1MjIsNyArMTUyMiw3IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmVsZW1lbnRBY2Nlc3NpYmls
aXR5SGl0VGVzdChjb25zdCBJbnRQCiAgICAgICAgIFdpZGdldCogd2lkZ2V0ID0gd2lkZ2V0Rm9y
QXR0YWNobWVudFZpZXcoKTsKICAgICAgICAgLy8gTm9ybWFsaXplIHRoZSBwb2ludCBmb3IgdGhl
IHdpZGdldCdzIGJvdW5kcy4KICAgICAgICAgaWYgKHdpZGdldCAmJiB3aWRnZXQtPmlzRnJhbWVW
aWV3KCkpCi0gICAgICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZSh3
aWRnZXQpLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChwb2ludCAtIHdpZGdldC0+ZnJh
bWVSZWN0KCkubG9jYXRpb24oKSkpOworICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0Q2FjaGUo
KS0+Z2V0T3JDcmVhdGUod2lkZ2V0KS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QocG9pbnQgLSB3aWRn
ZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpOwogICAgIH0KICAgICAKICAgICAvLyBDaGVjayBp
ZiB0aGVyZSBhcmUgYW55IG1vY2sgZWxlbWVudHMgdGhhdCBuZWVkIHRvIGJlIGhhbmRsZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA0MmU1NTc2MGNlZWUwM2NjN2I4ZjcwNDM4NjVmYzRjZGJl
MmVmODZlLi4wM2VlYjRlNDBhZWQwMWYzMTc5MmNmNDFiYTU4NjcwYjkzZTBlOTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHAKQEAgLTIxNzAsOCArMjE3MCw4IEBAIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR0VsZW1lbnRIaXRUZXN0KGNvbnN0
IEluCiAgICAgaWYgKCFyZW1vdGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIEludFNp
emUgb2Zmc2V0ID0gcG9pbnQgLSByb3VuZGVkSW50UG9pbnQoYm91bmRpbmdCb3hSZWN0KCkubG9j
YXRpb24oKSk7Ci0gICAgcmV0dXJuIHJlbW90ZS0+YWNjZXNzaWJpbGl0eUhpdFRlc3QoSW50UG9p
bnQob2Zmc2V0KSk7CisgICAgSW50UG9pbnQgb2Zmc2V0ID0gcG9pbnQgLSByb3VuZGVkSW50UG9p
bnQoYm91bmRpbmdCb3hSZWN0KCkubG9jYXRpb24oKSk7CisgICAgcmV0dXJuIHJlbW90ZS0+YWNj
ZXNzaWJpbGl0eUhpdFRlc3Qob2Zmc2V0KTsKIH0KIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KGNvbnN0
IEludFBvaW50JiBwb2ludCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFkaWVudFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVl
LmNwcAppbmRleCA3ZGMyMmJiYmQ4ZDAzYTdlNDI5OGRmOGRjMTdlNzRiMzJmNDBmNDEzLi41ZjQ5
ZjFlZjBiNGU0NGNjNDc5MjBhZWIyMmEyZTRjMjc3ZDdhMjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0dyYWRpZW50VmFsdWUuY3BwCkBAIC0xOTEsOCArMTkxLDcgQEAgdm9pZCBDU1NHcmFkaWVu
dFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQsIFJlbmRlck9iamVjdCogcmVuZGVy
ZXIsIFJlbmQKICAgICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBzdG9wLm1fcG9zaXRp
b24tPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEw
MDsKICAgICAgICAgICAgIGVsc2UgaWYgKHN0b3AubV9wb3NpdGlvbi0+aXNMZW5ndGgoKSB8fCBz
dG9wLm1fcG9zaXRpb24tPmlzQ2FsY3VsYXRlZFBlcmNlbnRhZ2VXaXRoTGVuZ3RoKCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0YXJ0IC0gZ3JhZGllbnRF
bmQpOwotICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdyYWRpZW50U2l6ZS5k
aWFnb25hbExlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdy
YWRpZW50U3RhcnQuZGlzdGFuY2VUb1BvaW50KGdyYWRpZW50RW5kKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoOwogICAgICAgICAgICAgICAgIGlmIChz
dG9wLm1fcG9zaXRpb24tPmlzTGVuZ3RoKCkpCkBAIC0yODEsOCArMjgwLDcgQEAgdm9pZCBDU1NH
cmFkaWVudFZhbHVlOjphZGRTdG9wcyhHcmFkaWVudCogZ3JhZGllbnQsIFJlbmRlck9iamVjdCog
cmVuZGVyZXIsIFJlbmQKICAgICAgICAgICAgIC8vIHRvIHJlcGVhdCBvdXQgdG8gdGhlIGNvcm5l
cnMgb2YgdGhlIGJveC4KICAgICAgICAgICAgIGlmIChpc1JhZGlhbEdyYWRpZW50KCkpIHsKICAg
ICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgpIHsKLSAgICAgICAgICAg
ICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0YXJ0IC0gZ3JhZGllbnRF
bmQpOwotICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdyYWRpZW50U2l6ZS5k
aWFnb25hbExlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdy
YWRpZW50U3RhcnQuZGlzdGFuY2VUb1BvaW50KGdyYWRpZW50RW5kKTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBpZiAobWF4TGVuZ3RoRm9yUmVwZWF0ID4gZ3JhZGllbnRM
ZW5ndGgpCkBAIC03NjYsMTYgKzc2NCwxNiBAQCBmbG9hdCBDU1NSYWRpYWxHcmFkaWVudFZhbHVl
OjpyZXNvbHZlUmFkaXVzKENTU1ByaW1pdGl2ZVZhbHVlKiByYWRpdXMsIFJlbmRlclN0eQogc3Rh
dGljIGZsb2F0IGRpc3RhbmNlVG9DbG9zZXN0Q29ybmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNv
bnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYgY29ybmVyKQogewogICAgIEZsb2F0UG9p
bnQgdG9wTGVmdDsKLSAgICBmbG9hdCB0b3BMZWZ0RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRv
cExlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9wTGVmdERpc3RhbmNlID0gcC5k
aXN0YW5jZVRvUG9pbnQodG9wTGVmdCk7CiAKICAgICBGbG9hdFBvaW50IHRvcFJpZ2h0KHNpemUu
d2lkdGgoKSwgMCk7Ci0gICAgZmxvYXQgdG9wUmlnaHREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0g
dG9wUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9wUmlnaHREaXN0YW5jZSA9
IHAuZGlzdGFuY2VUb1BvaW50KHRvcFJpZ2h0KTsKIAogICAgIEZsb2F0UG9pbnQgYm90dG9tTGVm
dCgwLCBzaXplLmhlaWdodCgpKTsKLSAgICBmbG9hdCBib3R0b21MZWZ0RGlzdGFuY2UgPSBGbG9h
dFNpemUocCAtIGJvdHRvbUxlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgYm90dG9t
TGVmdERpc3RhbmNlID0gcC5kaXN0YW5jZVRvUG9pbnQoYm90dG9tTGVmdCk7CiAKICAgICBGbG9h
dFBvaW50IGJvdHRvbVJpZ2h0KHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZmxv
YXQgYm90dG9tUmlnaHREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0gYm90dG9tUmlnaHQpLmRpYWdv
bmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgYm90dG9tUmlnaHREaXN0YW5jZSA9IHAuZGlzdGFuY2VU
b1BvaW50KGJvdHRvbVJpZ2h0KTsKIAogICAgIGNvcm5lciA9IHRvcExlZnQ7CiAgICAgZmxvYXQg
bWluRGlzdGFuY2UgPSB0b3BMZWZ0RGlzdGFuY2U7CkBAIC03OTksMTYgKzc5NywxNiBAQCBzdGF0
aWMgZmxvYXQgZGlzdGFuY2VUb0Nsb3Nlc3RDb3JuZXIoY29uc3QgRmxvYXRQb2ludCYgcCwgY29u
c3QgRmxvYXRTaXplJiBzaXplLAogc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9GYXJ0aGVzdENvcm5l
cihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIEZsb2F0UG9pbnQm
IGNvcm5lcikKIHsKICAgICBGbG9hdFBvaW50IHRvcExlZnQ7Ci0gICAgZmxvYXQgdG9wTGVmdERp
c3RhbmNlID0gRmxvYXRTaXplKHAgLSB0b3BMZWZ0KS5kaWFnb25hbExlbmd0aCgpOworICAgIGZs
b2F0IHRvcExlZnREaXN0YW5jZSA9IHAuZGlzdGFuY2VUb1BvaW50KHRvcExlZnQpOwogCiAgICAg
RmxvYXRQb2ludCB0b3BSaWdodChzaXplLndpZHRoKCksIDApOwotICAgIGZsb2F0IHRvcFJpZ2h0
RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRvcFJpZ2h0KS5kaWFnb25hbExlbmd0aCgpOworICAg
IGZsb2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Qb2ludCh0b3BSaWdodCk7CiAK
ICAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZmxvYXQg
Ym90dG9tTGVmdERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21MZWZ0KS5kaWFnb25hbExl
bmd0aCgpOworICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0YW5jZSA9IHAuZGlzdGFuY2VUb1BvaW50
KGJvdHRvbUxlZnQpOwogCiAgICAgRmxvYXRQb2ludCBib3R0b21SaWdodChzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpOwotICAgIGZsb2F0IGJvdHRvbVJpZ2h0RGlzdGFuY2UgPSBGbG9hdFNp
emUocCAtIGJvdHRvbVJpZ2h0KS5kaWFnb25hbExlbmd0aCgpOworICAgIGZsb2F0IGJvdHRvbVJp
Z2h0RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Qb2ludChib3R0b21SaWdodCk7CiAKICAgICBjb3Ju
ZXIgPSB0b3BMZWZ0OwogICAgIGZsb2F0IG1heERpc3RhbmNlID0gdG9wTGVmdERpc3RhbmNlOwpA
QCAtODMxLDEyICs4MjksMTIgQEAgc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9GYXJ0aGVzdENvcm5l
cihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFNpemUmIHNpemUKIAogLy8gQ29tcHV0
ZSBob3Jpem9udGFsIHJhZGl1cyBvZiBlbGxpcHNlIHdpdGggY2VudGVyIGF0IDAsMCB3aGljaCBw
YXNzZXMgdGhyb3VnaCBwLCBhbmQgaGFzCiAvLyB3aWR0aC9oZWlnaHQgZ2l2ZW4gYnkgYXNwZWN0
UmF0aW8uCi1zdGF0aWMgaW5saW5lIGZsb2F0IGhvcml6b250YWxFbGxpcHNlUmFkaXVzKGNvbnN0
IEZsb2F0U2l6ZSYgcCwgZmxvYXQgYXNwZWN0UmF0aW8pCitzdGF0aWMgaW5saW5lIGZsb2F0IGhv
cml6b250YWxFbGxpcHNlUmFkaXVzKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGZsb2F0IGFzcGVjdFJh
dGlvKQogewogICAgIC8vIHheMi9hXjIgKyB5XjIvYl4yID0gMQogICAgIC8vIGEvYiA9IGFzcGVj
dFJhdGlvLCBiID0gYS9hc3BlY3RSYXRpbwogICAgIC8vIGEgPSBzcXJ0KHheMiArIHleMi8oMS9y
XjIpKQotICAgIHJldHVybiBzcXJ0ZihwLndpZHRoKCkgKiBwLndpZHRoKCkgKyAocC5oZWlnaHQo
KSAqIHAuaGVpZ2h0KCkpIC8gKDEgLyAoYXNwZWN0UmF0aW8gKiBhc3BlY3RSYXRpbykpKTsKKyAg
ICByZXR1cm4gc3FydGYocC54KCkgKiBwLngoKSArIChwLnkoKSAqIHAueSgpKSAvICgxIC8gKGFz
cGVjdFJhdGlvICogYXNwZWN0UmF0aW8pKSk7CiB9CiAKIC8vIEZJWE1FOiBzaGFyZSBjb2RlIHdp
dGggdGhlIGxpbmVhciB2ZXJzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggMjE1YTkxNGEzMzY2OGFkZjNiNTljODRmNWZkMjkyYWM5MjViMTQ4NC4uMTMxODQzYzc3YWY2
N2Q3MmE0MGMxZWZiOTQ0NTU3NzFlZjE0YzIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtOTQzLDcgKzk0Myw3IEBAIExheW91dFJlY3QgQ29udGFpbmVyTm9kZTo6Ym91
bmRpbmdCb3goKSBjb25zdAogICAgICAgICAgICAgdXBwZXJMZWZ0ID0gbG93ZXJSaWdodDsKICAg
ICB9IAogCi0gICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoRmxvYXRSZWN0KHVwcGVyTGVm
dCwgbG93ZXJSaWdodC5leHBhbmRlZFRvKHVwcGVyTGVmdCkgLSB1cHBlckxlZnQpKTsKKyAgICBy
ZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QodXBwZXJMZWZ0LCBGbG9hdFNpemU6
OmZyb21Db3JuZXJQb2ludHMobG93ZXJSaWdodCwgdXBwZXJMZWZ0KS5leHBhbmRlZFRvKEZsb2F0
U2l6ZSgpKSkpOwogfQogCiB2b2lkIENvbnRhaW5lck5vZGU6OnNldEZvY3VzKGJvb2wgcmVjZWl2
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAppbmRleCA3ZGQwOTE2M2U1ODk5ZWIzMWQ2Mzc3YTZlZDEzNDcwNjMw
ZDI4MTI1Li44MzM2ZThlMThiY2MzNWJlYTdhYWRhODliOWQ3ODA3YjVjOTg3ZDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5jcHAKQEAgLTE2MjAsNyArMTYyMCw3IEBAIHRlbXBsYXRlPGNsYXNzIFQ+IEludFJlY3Qg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpjYWxjdWxhdGVDb21wb3NpdGluZ0J1ZmZlclJlCiAg
ICAgSW50UG9pbnQgb3JpZ2luYWxMb2NhdGlvbiA9IGJ1ZmZlclJlY3QubG9jYXRpb24oKTsKICAg
ICBidWZmZXJSZWN0LmludGVyc2VjdChjYW52YXNSZWN0KTsKICAgICBpZiAoY3JvcHBlZE9mZnNl
dCkKLSAgICAgICAgKmNyb3BwZWRPZmZzZXQgPSBvcmlnaW5hbExvY2F0aW9uIC0gYnVmZmVyUmVj
dC5sb2NhdGlvbigpOworICAgICAgICAqY3JvcHBlZE9mZnNldCA9IEludFNpemU6OmZyb21Db3Ju
ZXJQb2ludHMob3JpZ2luYWxMb2NhdGlvbiwgYnVmZmVyUmVjdC5sb2NhdGlvbigpKTsKICAgICBy
ZXR1cm4gYnVmZmVyUmVjdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCmlu
ZGV4IDAyMTdhMDJjODRjNDMwOTVhYmJjMzU3ODA0NGRiYWZiYjE0YmMzNmYuLjI0ZTgzYjRiZTgw
NzY3ZWE3NDZlOTk1YmIwMzI2MTlkYzZlY2RkMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5jcHAKQEAgLTMxOTAsNyArMzE5MCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uCiAg
ICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgSW50UG9pbnQgZHJhZ0xv
Y2F0aW9uID0gdmlldy0+d2luZG93VG9Db250ZW50cyhmbG9vcmVkSW50UG9pbnQoZHJhZ1ZpZXdw
b3J0TG9jYXRpb24pKTsKLSAgICBJbnRTaXplIGRlbHRhID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3Vz
ZURvd25Qb3M7CisgICAgSW50UG9pbnQgZGVsdGEgPSBkcmFnTG9jYXRpb24gLSBtX21vdXNlRG93
blBvczsKICAgICAKICAgICBpbnQgdGhyZXNob2xkID0gR2VuZXJhbERyYWdIeXN0ZXJlc2lzOwog
ICAgIHN3aXRjaCAoZHJhZ1N0YXRlKCkubV9kcmFnVHlwZSkgewpAQCAtMzIxMCw3ICszMjEwLDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhjZWVkZWQoY29uc3QgRmxvYXRQ
b2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24KICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgfQogICAgIAotICAgIHJldHVybiBhYnMoZGVsdGEud2lkdGgoKSkgPj0gdGhyZXNob2xk
IHx8IGFicyhkZWx0YS5oZWlnaHQoKSkgPj0gdGhyZXNob2xkOworICAgIHJldHVybiBhYnMoZGVs
dGEueCgpKSA+PSB0aHJlc2hvbGQgfHwgYWJzKGRlbHRhLnkoKSkgPj0gdGhyZXNob2xkOwogfQog
ICAgIAogdm9pZCBFdmVudEhhbmRsZXI6OmZyZWVDbGlwYm9hcmQoKQpAQCAtMzM1Myw4ICszMzUz
LDggQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZURyYWcoY29uc3QgTW91c2VFdmVudFdpdGhI
aXRUZXN0UmVzdWx0cyYgZXZlbnQsIENoZWNrRHIKICAgICAgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gZHJhZ1N0YXRlKCkubV9kcmFnU3JjLT5yZW5kZXJlcigpKSB7CiAgICAg
ICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRy
YW5zZm9ybXMuCiAgICAgICAgICAgICAgICAgRmxvYXRQb2ludCBhYnNQb3MgPSByZW5kZXJlci0+
bG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSBkZWx0YSA9IG1fbW91
c2VEb3duUG9zIC0gcm91bmRlZEludFBvaW50KGFic1Bvcyk7Ci0gICAgICAgICAgICAgICAgZHJh
Z1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXREcmFnSW1hZ2VFbGVtZW50KGRyYWdTdGF0ZSgp
Lm1fZHJhZ1NyYy5nZXQoKSwgSW50UG9pbnQoZGVsdGEpKTsKKyAgICAgICAgICAgICAgICBJbnRQ
b2ludCBkZWx0YSA9IG1fbW91c2VEb3duUG9zIC0gcm91bmRlZEludFBvaW50KGFic1Bvcyk7Cisg
ICAgICAgICAgICAgICAgZHJhZ1N0YXRlKCkubV9kcmFnQ2xpcGJvYXJkLT5zZXREcmFnSW1hZ2VF
bGVtZW50KGRyYWdTdGF0ZSgpLm1fZHJhZ1NyYy5nZXQoKSwgZGVsdGEpOwogICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgcmVuZGVyZXIgaGFzIGRpc2FwcGVhcmVk
LCB0aGlzIGNhbiBoYXBwZW4gaWYgdGhlIG9uU3RhcnREcmFnIGhhbmRsZXIgaGFzIGhpZGRlbgog
ICAgICAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IGluIHNvbWUgd2F5LiAgSW4gdGhpcyBjYXNl
IHdlIGp1c3Qga2lsbCB0aGUgZHJhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcAppbmRleCAwYmJjNjU3N2ZkMDJkMDEw
YmFkMzk2ZjFkOTAyMTA4MWJjODgxNzQwLi45MGU0MWU1NGMwYTFhOGNiNzg4MmJhMTQ0NjhkMGNh
MTEwMWE5NWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb25zdHJhaW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIEZsb2F0U2l6ZSBTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmNvbXB1dGVTdGlja3lPZmZzZXQoY29uc3Qg
RmxvYXRSZWN0CiAgICAgICAgIGJveFJlY3QubW92ZSgwLCB0b3BEZWx0YSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIGJveFJlY3QubG9jYXRpb24oKSAtIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0Lmxv
Y2F0aW9uKCk7CisgICAgcmV0dXJuIEZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhib3hSZWN0
LmxvY2F0aW9uKCksIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0LmxvY2F0aW9uKCkpOwogfQogCiBG
bG9hdFBvaW50IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6bGF5ZXJQb3NpdGlv
bkZvclZpZXdwb3J0UmVjdChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAppbmRleCA5Nzg2M2M0ZDE4
ZWUxYzQ2MWViY2JjYjZiZGUyNGM1YjM2NDBmMGFhLi4xMzY4MmE4MGMyMWY1NTQzMjlkYzc0NTY3
MTY4ZmQ3NDU5NDYwNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0
b3IuY3BwCkBAIC05NywxMiArOTcsMTIgQEAgYm9vbCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hl
ZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgU2Nyb2xsR3JhbnVsYXJp
dHkgZ3JhbnVsYXJpdHkgPSBTY3JvbGxCeVBpeGVsOwogI2VuZGlmCiAKLSAgICBJbnRTaXplIG1h
eEZvcndhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFyZWEtPm1heGltdW1TY3JvbGxQb3Np
dGlvbigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKTsKLSAgICBJbnRTaXpl
IG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlv
bigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+bWluaW11bVNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgaWYg
KChkZWx0YVggPCAwICYmIG1heEZvcndhcmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkKLSAgICAg
ICAgfHwgKGRlbHRhWCA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS53aWR0aCgpID4gMCkK
LSAgICAgICAgfHwgKGRlbHRhWSA8IDAgJiYgbWF4Rm9yd2FyZFNjcm9sbERlbHRhLmhlaWdodCgp
ID4gMCkKLSAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS5o
ZWlnaHQoKSA+IDApKSB7CisgICAgSW50UG9pbnQgbWF4Rm9yd2FyZFNjcm9sbERlbHRhID0gbV9z
Y3JvbGxhYmxlQXJlYS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVh
LT5zY3JvbGxQb3NpdGlvbigpOworICAgIEludFBvaW50IG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEg
PSBtX3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+
bWluaW11bVNjcm9sbFBvc2l0aW9uKCk7CisgICAgaWYgKChkZWx0YVggPCAwICYmIG1heEZvcndh
cmRTY3JvbGxEZWx0YS54KCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFYID4gMCAmJiBtYXhCYWNr
d2FyZFNjcm9sbERlbHRhLngoKSA+IDApCisgICAgICAgIHx8IChkZWx0YVkgPCAwICYmIG1heEZv
cndhcmRTY3JvbGxEZWx0YS55KCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFZID4gMCAmJiBtYXhC
YWNrd2FyZFNjcm9sbERlbHRhLnkoKSA+IDApKSB7CiAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwog
CiAgICAgICAgIGlmIChkZWx0YVkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQuaAppbmRleCAxMTFlMjMxODI2M2RhODJhNTlkMzVmNzNiOTJlZDdjNzRi
MDNiMjExLi42YTIwZGJiOWFjZTJiMmQwMjNkYmQyM2IxOTY5MjBhMjc1NDNkOTU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCkBAIC0xMjAsNiAr
MTIwLDEwIEBAIHB1YmxpYzoKICAgICAgICAgbV94ICs9IGEueCgpOwogICAgICAgICBtX3kgKz0g
YS55KCk7CiAgICAgfQorICAgIHZvaWQgc2NhbGUoZmxvYXQgcykKKyAgICB7CisgICAgICAgIHNj
YWxlKHMsIHMpOworICAgIH0KICAgICB2b2lkIHNjYWxlKGZsb2F0IHN4LCBmbG9hdCBzeSkKICAg
ICB7CiAgICAgICAgIG1feCAqPSBzeDsKQEAgLTE1MCw2ICsxNTQsOSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBGbG9hdFBvaW50KG1feSwgbV94KTsKICAgICB9CiAKKyAgICBmbG9hdCBkaXN0
YW5jZVNxdWFyZWRUb1BvaW50KGNvbnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKyAgICBmbG9hdCBk
aXN0YW5jZVRvUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OworCiAjaWYgVVNFKENHKSB8
fCBVU0UoU0tJQV9PTl9NQUNfQ0hST01JVU0pCiAgICAgRmxvYXRQb2ludChjb25zdCBDR1BvaW50
Jik7CiAgICAgb3BlcmF0b3IgQ0dQb2ludCgpIGNvbnN0OwpAQCAtMjEyLDkgKzIxOSw5IEBAIGlu
bGluZSBGbG9hdFBvaW50IG9wZXJhdG9yKyhjb25zdCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9h
dFBvaW50JiBiKQogICAgIHJldHVybiBGbG9hdFBvaW50KGEueCgpICsgYi54KCksIGEueSgpICsg
Yi55KCkpOwogfQogCi1pbmxpbmUgRmxvYXRTaXplIG9wZXJhdG9yLShjb25zdCBGbG9hdFBvaW50
JiBhLCBjb25zdCBGbG9hdFBvaW50JiBiKQoraW5saW5lIEZsb2F0UG9pbnQgb3BlcmF0b3ItKGNv
bnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCiB7Ci0gICAgcmV0dXJuIEZs
b2F0U2l6ZShhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKKyAgICByZXR1cm4gRmxvYXRQ
b2ludChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKIH0KIAogaW5saW5lIEZsb2F0UG9p
bnQgb3BlcmF0b3ItKGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKQEAg
LTI3Myw2ICsyODAsMTYgQEAgZmxvYXQgZmluZFNsb3BlKGNvbnN0IEZsb2F0UG9pbnQmIHAxLCBj
b25zdCBGbG9hdFBvaW50JiBwMiwgZmxvYXQmIGMpOwogLy8gRmluZCBwb2ludCB3aGVyZSBsaW5l
cyB0aHJvdWdoIHRoZSB0d28gcGFpcnMgb2YgcG9pbnRzIGludGVyc2VjdC4gUmV0dXJucyBmYWxz
ZSBpZiB0aGUgbGluZXMgZG9uJ3QgaW50ZXJzZWN0LgogYm9vbCBmaW5kSW50ZXJzZWN0aW9uKGNv
bnN0IEZsb2F0UG9pbnQmIHAxLCBjb25zdCBGbG9hdFBvaW50JiBwMiwgY29uc3QgRmxvYXRQb2lu
dCYgZDEsIGNvbnN0IEZsb2F0UG9pbnQmIGQyLCBGbG9hdFBvaW50JiBpbnRlcnNlY3Rpb24pOwog
CitpbmxpbmUgZmxvYXQgRmxvYXRQb2ludDo6ZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChjb25zdCBG
bG9hdFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gKCgqdGhpcykgLSBwb2ludCku
bGVuZ3RoU3F1YXJlZCgpOworfQorCitpbmxpbmUgZmxvYXQgRmxvYXRQb2ludDo6ZGlzdGFuY2VU
b1BvaW50KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSBjb25zdAoreworICAgIHJldHVybiAoKCp0
aGlzKSAtIHBvaW50KS5sZW5ndGgoKTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwCmluZGV4IGZjOWQ2MTNlYzdiOTk1
MWQzYWU3ZjFlZjQyNjIzMmI5NDg2YzJiMmUuLjM5ZjI3MjkzZjQ0YjI0OTk3MzdiODQ2ODBkNWJl
OWIxY2E1NzdiNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRRdWFkLmNwcApAQCAtNDcsMjkgKzQ3LDI0IEBAIHN0YXRpYyBpbmxpbmUgZmxvYXQgbWF4NChm
bG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKQogICAgIHJldHVybiBtYXgobWF4KGEs
IGIpLCBtYXgoYywgZCkpOwogfQogCi1pbmxpbmUgZmxvYXQgZG90KGNvbnN0IEZsb2F0U2l6ZSYg
YSwgY29uc3QgRmxvYXRTaXplJiBiKQoraW5saW5lIGZsb2F0IGRldGVybWluYW50KGNvbnN0IEZs
b2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEud2lkdGgo
KSAqIGIud2lkdGgoKSArIGEuaGVpZ2h0KCkgKiBiLmhlaWdodCgpOwotfQotCi1pbmxpbmUgZmxv
YXQgZGV0ZXJtaW5hbnQoY29uc3QgRmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCi17
Ci0gICAgcmV0dXJuIGEud2lkdGgoKSAqIGIuaGVpZ2h0KCkgLSBhLmhlaWdodCgpICogYi53aWR0
aCgpOworICAgIHJldHVybiBhLngoKSAqIGIueSgpIC0gYS55KCkgKiBiLngoKTsKIH0KIAogaW5s
aW5lIGJvb2wgaXNQb2ludEluVHJpYW5nbGUoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgRmxv
YXRQb2ludCYgdDEsIGNvbnN0IEZsb2F0UG9pbnQmIHQyLCBjb25zdCBGbG9hdFBvaW50JiB0MykK
IHsKICAgICAvLyBDb21wdXRlIHZlY3RvcnMgICAgICAgIAotICAgIEZsb2F0U2l6ZSB2MCA9IHQz
IC0gdDE7Ci0gICAgRmxvYXRTaXplIHYxID0gdDIgLSB0MTsKLSAgICBGbG9hdFNpemUgdjIgPSBw
IC0gdDE7CisgICAgRmxvYXRQb2ludCB2MCA9IHQzIC0gdDE7CisgICAgRmxvYXRQb2ludCB2MSA9
IHQyIC0gdDE7CisgICAgRmxvYXRQb2ludCB2MiA9IHAgLSB0MTsKICAgICAKICAgICAvLyBDb21w
dXRlIGRvdCBwcm9kdWN0cwotICAgIGZsb2F0IGRvdDAwID0gZG90KHYwLCB2MCk7Ci0gICAgZmxv
YXQgZG90MDEgPSBkb3QodjAsIHYxKTsKLSAgICBmbG9hdCBkb3QwMiA9IGRvdCh2MCwgdjIpOwot
ICAgIGZsb2F0IGRvdDExID0gZG90KHYxLCB2MSk7Ci0gICAgZmxvYXQgZG90MTIgPSBkb3QodjEs
IHYyKTsKKyAgICBmbG9hdCBkb3QwMCA9IHYwLmRvdCh2MCk7CisgICAgZmxvYXQgZG90MDEgPSB2
MC5kb3QodjEpOworICAgIGZsb2F0IGRvdDAyID0gdjAuZG90KHYyKTsKKyAgICBmbG9hdCBkb3Qx
MSA9IHYxLmRvdCh2MSk7CisgICAgZmxvYXQgZG90MTIgPSB2MS5kb3QodjIpOwogCiAgICAgLy8g
Q29tcHV0ZSBiYXJ5Y2VudHJpYyBjb29yZGluYXRlcwogICAgIGZsb2F0IGludkRlbm9tID0gMS4w
ZiAvIChkb3QwMCAqIGRvdDExIC0gZG90MDEgKiBkb3QwMSk7CkBAIC0xMTMsNyArMTA4LDcgQEAg
Ym9vbCBGbG9hdFF1YWQ6OmNvbnRhaW5zUXVhZChjb25zdCBGbG9hdFF1YWQmIG90aGVyKSBjb25z
dAogICAgIHJldHVybiBjb250YWluc1BvaW50KG90aGVyLnAxKCkpICYmIGNvbnRhaW5zUG9pbnQo
b3RoZXIucDIoKSkgJiYgY29udGFpbnNQb2ludChvdGhlci5wMygpKSAmJiBjb250YWluc1BvaW50
KG90aGVyLnA0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEZsb2F0UG9pbnQgcmlnaHRNb3N0Q29y
bmVyVG9WZWN0b3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUmIHZlY3Rv
cikKK3N0YXRpYyBpbmxpbmUgRmxvYXRQb2ludCByaWdodE1vc3RDb3JuZXJUb1ZlY3Rvcihjb25z
dCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0UG9pbnQmIHZlY3RvcikKIHsKICAgICAvLyBS
ZXR1cm4gdGhlIGNvcm5lciBvZiB0aGUgcmVjdGFuZ2xlIHRoYXQgaWYgaXQgaXMgdG8gdGhlIGxl
ZnQgb2YgdGhlIHZlY3RvcgogICAgIC8vIHdvdWxkIG1lYW4gYWxsIG9mIHRoZSByZWN0YW5nbGUg
aXMgdG8gdGhlIGxlZnQgb2YgdGhlIHZlY3Rvci4KQEAgLTEyNSwxMSArMTIwLDExIEBAIHN0YXRp
YyBpbmxpbmUgRmxvYXRQb2ludCByaWdodE1vc3RDb3JuZXJUb1ZlY3Rvcihjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIGNvbnN0IEZsCiAgICAgLy8gICBRCiAgICAgLy8KICAgICBGbG9hdFBvaW50IHBv
aW50OwotICAgIGlmICh2ZWN0b3Iud2lkdGgoKSA+PSAwKQorICAgIGlmICh2ZWN0b3IueCgpID49
IDApCiAgICAgICAgIHBvaW50LnNldFkocmVjdC5tYXhZKCkpOwogICAgIGVsc2UKICAgICAgICAg
cG9pbnQuc2V0WShyZWN0LnkoKSk7Ci0gICAgaWYgKHZlY3Rvci5oZWlnaHQoKSA+PSAwKQorICAg
IGlmICh2ZWN0b3IueSgpID49IDApCiAgICAgICAgIHBvaW50LnNldFgocmVjdC54KCkpOwogICAg
IGVsc2UKICAgICAgICAgcG9pbnQuc2V0WChyZWN0Lm1heFgoKSk7CkBAIC0xNDEsNyArMTM2LDcg
QEAgYm9vbCBGbG9hdFF1YWQ6OmludGVyc2VjdHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkg
Y29uc3QKICAgICAvLyBGb3IgZWFjaCBzaWRlIG9mIHRoZSBxdWFkIGNsb2Nrd2lzZSB3ZSBjaGVj
ayBpZiB0aGUgcmVjdGFuZ2xlIGlzIHRvIHRoZSBsZWZ0IG9mIGl0CiAgICAgLy8gc2luY2Ugb25s
eSBjb250ZW50IG9uIHRoZSByaWdodCBjYW4gb25sYXAgd2l0aCB0aGUgcXVhZC4KICAgICAvLyBU
aGlzIG9ubHkgd29ya3MgaWYgdGhlIHF1YWQgaXMgY29udmV4LgotICAgIEZsb2F0U2l6ZSB2MSwg
djIsIHYzLCB2NDsKKyAgICBGbG9hdFBvaW50IHYxLCB2MiwgdjMsIHY0OwogCiAgICAgLy8gRW5z
dXJlIHdlIHVzZSBjbG9ja3dpc2UgdmVjdG9ycy4KICAgICBpZiAoIWlzQ291bnRlcmNsb2Nrd2lz
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFJlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNw
cAppbmRleCBlZGNlOGEyNWEzYTViMDdhNDAxMzA4NWNiMTBhOGI0YjAwNjVkNjE4Li5kMmJmYWY4
NmRlZDYxMWEwNmYzODA1M2M3ODFhNzdiNWRiOWE3NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKQEAgLTIyNywxNCArMjI3LDE0IEBAIElu
dFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgSW50UG9p
bnQgbG9jYXRpb24gPSBmbG9vcmVkSW50UG9pbnQocmVjdC5taW5YTWluWUNvcm5lcigpKTsKICAg
ICBJbnRQb2ludCBtYXhQb2ludCA9IGNlaWxlZEludFBvaW50KHJlY3QubWF4WE1heFlDb3JuZXIo
KSk7CiAKLSAgICByZXR1cm4gSW50UmVjdChsb2NhdGlvbiwgbWF4UG9pbnQgLSBsb2NhdGlvbik7
CisgICAgcmV0dXJuIEludFJlY3QobG9jYXRpb24sIEludFNpemU6OmZyb21Db3JuZXJQb2ludHMo
bWF4UG9pbnQsIGxvY2F0aW9uKSk7CiB9CiAKIEludFJlY3QgZW5jbG9zZWRJbnRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBJbnRQb2ludCBsb2NhdGlvbiA9IGNlaWxlZEludFBv
aW50KHJlY3QubWluWE1pbllDb3JuZXIoKSk7CiAgICAgSW50UG9pbnQgbWF4UG9pbnQgPSBmbG9v
cmVkSW50UG9pbnQocmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKLSAgICBJbnRTaXplIHNpemUgPSBt
YXhQb2ludCAtIGxvY2F0aW9uOworICAgIEludFNpemUgc2l6ZSA9IEludFNpemU6OmZyb21Db3Ju
ZXJQb2ludHMobWF4UG9pbnQsIGxvY2F0aW9uKTsKICAgICBzaXplLmNsYW1wTmVnYXRpdmVUb1pl
cm8oKTsKIAogICAgIHJldHVybiBJbnRSZWN0KGxvY2F0aW9uLCBzaXplKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwCmluZGV4IGUxMWI4MjhiYjUz
NWViMzZmOWJiMDA0ODRhODhmOWJkYjc0YjY3ZTMuLjE2MjcyNDViY2Q1MWUyNGJhMmYyZTEwODNh
N2UzOGVkNTNkNTdkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0U2l6ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
RmxvYXRTaXplLmNwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkZsb2F0U2l6ZS5oIgog
CiAjaW5jbHVkZSAiRmxvYXRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgog
I2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMYXlvdXRTaXplLmgiCiAjaW5jbHVkZSA8
bGltaXRzPgpAQCAtNDUsNiArNDYsMTEgQEAgRmxvYXRTaXplOjpGbG9hdFNpemUoY29uc3QgTGF5
b3V0U2l6ZSYgc2l6ZSkgOiBtX3dpZHRoKHNpemUud2lkdGgoKSksIG1faGVpZ2h0KHMKIHsKIH0K
IAorRmxvYXRTaXplIEZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhjb25zdCBGbG9hdFBvaW50
ICZtYXhYTWF4WVBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBtaW5YTWluWVBvaW50KQoreworICAg
IHJldHVybiBGbG9hdFNpemUobWF4WE1heFlQb2ludC54KCkgLSBtaW5YTWluWVBvaW50LngoKSwg
bWF4WE1heFlQb2ludC55KCkgLSBtaW5YTWluWVBvaW50LnkoKSk7Cit9CisKIGZsb2F0IEZsb2F0
U2l6ZTo6ZGlhZ29uYWxMZW5ndGgoKSBjb25zdAogewogICAgIHJldHVybiBzcXJ0ZihkaWFnb25h
bExlbmd0aFNxdWFyZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5oCmluZGV4IDJjYTIyY2RkNDUxNTgyMDAwMTk3YTNlYjZjODIwZTc2YjQzNmY1OWYu
LjJiZDZlMDRmZWRiYTIwNmQ3ZGQxMjQyNDQxNmVhMTk3ZDU3Nzc1MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oCkBAIC01OSw2ICs1OSw3IEBAIHR5
cGVkZWYgc3RydWN0IF9OU1NpemUgTlNTaXplOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgTGF5b3V0U2l6ZTsKIApAQCAt
NzAsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgRmxvYXRTaXplKGNvbnN0IExheW91dFNpemUmKTsK
IAogICAgIHN0YXRpYyBGbG9hdFNpemUgbmFycm93UHJlY2lzaW9uKGRvdWJsZSB3aWR0aCwgZG91
YmxlIGhlaWdodCk7CisgICAgc3RhdGljIEZsb2F0U2l6ZSBmcm9tQ29ybmVyUG9pbnRzKGNvbnN0
IEZsb2F0UG9pbnQmIG1heFhNYXhZUG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIG1pblhNaW5ZUG9p
bnQpOwogCiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAg
ZmxvYXQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9oZWlnaHQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKaW5kZXggMWFjOGNj
OGI4NTdhNDkzNDY1YzcwNmM4YjUwZDM4YzY0MzgzYTE0NC4uZTk4M2E4ZDA1MjAwMWVhMTNhMmEx
MTVkMTE2NGY3ZGE1NTM1ZThjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTQxOSw2ICs0MTksNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2NhbGUoY29uc3QgRmxvYXRTaXplJik7CiAgICAgICAg
IHZvaWQgcm90YXRlKGZsb2F0IGFuZ2xlSW5SYWRpYW5zKTsKICAgICAgICAgdm9pZCB0cmFuc2xh
dGUoY29uc3QgRmxvYXRTaXplJiBzaXplKSB7IHRyYW5zbGF0ZShzaXplLndpZHRoKCksIHNpemUu
aGVpZ2h0KCkpOyB9CisgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50KSB7IHRyYW5zbGF0ZShwb2ludC54KCksIHBvaW50LnkoKSk7IH0KICAgICAgICAgdm9pZCB0
cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSk7CiAKICAgICAgICAgdm9pZCBzZXRVUkxGb3JSZWN0
KGNvbnN0IEtVUkwmLCBjb25zdCBJbnRSZWN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW50UG9pbnQuaAppbmRleCAzZTgxNDhhOWEwYjk4NDA0MDg5NDcyM2NhZDU2MDFk
NDYwNGY0ZmY3Li5jNDRjY2I3OWFlMTE2OTMwNDAwNzMyNDYxMGRlMDBjMTRhMmRjMTc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKQEAgLTg2LDYgKzg2
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0WChpbnQgeCkgeyBtX3ggPSB4OyB9CiAgICAgdm9p
ZCBzZXRZKGludCB5KSB7IG1feSA9IHk7IH0KIAorICAgIGJvb2wgaXNaZXJvKCkgY29uc3QgeyBy
ZXR1cm4gIW1feCAmJiAhbV95OyB9CisKICAgICB2b2lkIG1vdmUoY29uc3QgSW50U2l6ZSYgcykg
eyBtb3ZlKHMud2lkdGgoKSwgcy5oZWlnaHQoKSk7IH0gCiAgICAgdm9pZCBtb3ZlQnkoY29uc3Qg
SW50UG9pbnQmIG9mZnNldCkgeyBtb3ZlKG9mZnNldC54KCksIG9mZnNldC55KCkpOyB9CiAgICAg
dm9pZCBtb3ZlKGludCBkeCwgaW50IGR5KSB7IG1feCArPSBkeDsgbV95ICs9IGR5OyB9CkBAIC05
NSw2ICs5NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1feSA9IGxyb3VuZGYoc3RhdGljX2Nhc3Q8
ZmxvYXQ+KG1feSAqIHN5KSk7CiAgICAgfQogICAgIAorICAgIGludCBsZW5ndGhTcXVhcmVkKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3ggKiBtX3ggKyBtX3kgKiBtX3k7CisgICAg
fQorCiAgICAgSW50UG9pbnQgZXhwYW5kZWRUbyhjb25zdCBJbnRQb2ludCYgb3RoZXIpIGNvbnN0
CiAgICAgewogICAgICAgICByZXR1cm4gSW50UG9pbnQobV94ID4gb3RoZXIubV94ID8gbV94IDog
b3RoZXIubV94LApAQCAtMTg1LDkgKzE5Miw5IEBAIGlubGluZSBJbnRQb2ludCBvcGVyYXRvciso
Y29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBvaW50JiBiKQogICAgIHJldHVybiBJbnRQb2lu
dChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgpKTsKIH0KIAotaW5saW5lIEludFNpemUgb3Bl
cmF0b3ItKGNvbnN0IEludFBvaW50JiBhLCBjb25zdCBJbnRQb2ludCYgYikKK2lubGluZSBJbnRQ
b2ludCBvcGVyYXRvci0oY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBvaW50JiBiKQogewot
ICAgIHJldHVybiBJbnRTaXplKGEueCgpIC0gYi54KCksIGEueSgpIC0gYi55KCkpOworICAgIHJl
dHVybiBJbnRQb2ludChhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKIH0KIAogaW5saW5l
IEludFBvaW50IG9wZXJhdG9yLShjb25zdCBJbnRQb2ludCYgYSwgY29uc3QgSW50U2l6ZSYgYikK
QEAgLTIxNyw3ICsyMjQsNyBAQCBpbmxpbmUgSW50U2l6ZSB0b0ludFNpemUoY29uc3QgSW50UG9p
bnQmIGEpCiAKIGlubGluZSBpbnQgSW50UG9pbnQ6OmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQoY29u
c3QgSW50UG9pbnQmIHBvaW50KSBjb25zdAogewotICAgIHJldHVybiAoKCp0aGlzKSAtIHBvaW50
KS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKTsKKyAgICByZXR1cm4gKCp0aGlzIC0gcG9pbnQpLmxl
bmd0aFNxdWFyZWQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNTY1OTcyNWNk
Mzc3OGFmNmMzMTA1Njg0MjkwYjQ2MTIxMzg0MmUzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHAKQEAgLTAsMCArMSwzOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkludFNp
emUuaCIKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SW50U2l6ZSBJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGNvbnN0IEludFBvaW50JiBtYXhYTWF4
WVBvaW50LCBjb25zdCBJbnRQb2ludCYgbWluWE1pbllQb2ludCkKK3sKKyAgICByZXR1cm4gSW50
U2l6ZShtYXhYTWF4WVBvaW50LngoKSAtIG1pblhNaW5ZUG9pbnQueCgpLCBtYXhYTWF4WVBvaW50
LnkoKSAtIG1pblhNaW5ZUG9pbnQueSgpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50U2l6ZS5oCmluZGV4IGM4YTU0OWRkNzEzNmYxYjNhYjU5OTBlYzJkMGZl
MTdlZTYyMDNhYTUuLjkyNTM5YzlhYWFmODEyNDMzMzk3OTU3NjcyYzMzZGFlZDQwZmNjMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKQEAgLTU5LDExICs1
OSwxNCBAQCBjbGFzcyB3eFNpemU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSW50
UG9pbnQ7CisKIGNsYXNzIEludFNpemUgewogcHVibGljOgogICAgIEludFNpemUoKSA6IG1fd2lk
dGgoMCksIG1faGVpZ2h0KDApIHsgfQogICAgIEludFNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0
KSA6IG1fd2lkdGgod2lkdGgpLCBtX2hlaWdodChoZWlnaHQpIHsgfQotICAgIAorICAgIHN0YXRp
YyBJbnRTaXplIGZyb21Db3JuZXJQb2ludHMoY29uc3QgSW50UG9pbnQmIG1heFhNYXhZUG9pbnQs
IGNvbnN0IEludFBvaW50JiBtaW5YTWluWVBvaW50KTsKKwogICAgIGludCB3aWR0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9o
ZWlnaHQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
TGF5b3V0UmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRS
ZWN0LmNwcAppbmRleCBhZDc3MjgyNWRhNDQ2ZjJkZmRlZGIzODhiMTQ3NDg5YmExNTNlNDYzLi4x
NGNmZjE2YTQwZTFiYzJhNjU0MjMzMjg2MjdkZWM5YzE4Mzc3YWUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNwcApAQCAtMTMxLDcgKzEzMSw3
IEBAIEludFJlY3QgZW5jbG9zaW5nSW50UmVjdChjb25zdCBMYXlvdXRSZWN0JiByZWN0KQogICAg
IEludFBvaW50IGxvY2F0aW9uID0gZmxvb3JlZEludFBvaW50KHJlY3QubWluWE1pbllDb3JuZXIo
KSk7CiAgICAgSW50UG9pbnQgbWF4UG9pbnQgPSBjZWlsZWRJbnRQb2ludChyZWN0Lm1heFhNYXhZ
Q29ybmVyKCkpOwogCi0gICAgcmV0dXJuIEludFJlY3QobG9jYXRpb24sIG1heFBvaW50IC0gbG9j
YXRpb24pOworICAgIHJldHVybiBJbnRSZWN0KGxvY2F0aW9uLCBJbnRTaXplOjpmcm9tQ29ybmVy
UG9pbnRzKG1heFBvaW50LCBsb2NhdGlvbikpOwogfQogCiBMYXlvdXRSZWN0IGVuY2xvc2luZ0xh
eW91dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKaW5kZXggY2Y1Mzcx
NzI3MjMzNjVkYjBjNmRiOGNkYzljYzI5YzI3NTA0NzE2Ny4uNTk2M2Y0NGU1OTc0NWFmMWY0NDJi
ZjIxMWI5Y2NiNzljZGZhMzJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAg
dm9pZCBQYXRoVHJhdmVyc2FsU3RhdGU6OnByb2Nlc3NTZWdtZW50KCkKICAgICAgICAgbV9zdWNj
ZXNzID0gdHJ1ZTsKICAgICAgICAgCiAgICAgaWYgKChtX2FjdGlvbiA9PSBUcmF2ZXJzYWxQb2lu
dEF0TGVuZ3RoIHx8IG1fYWN0aW9uID09IFRyYXZlcnNhbE5vcm1hbEFuZ2xlQXRMZW5ndGgpICYm
IG1fdG90YWxMZW5ndGggPj0gbV9kZXNpcmVkTGVuZ3RoKSB7Ci0gICAgICAgIGZsb2F0IHNsb3Bl
ID0gRmxvYXRQb2ludChtX2N1cnJlbnQgLSBtX3ByZXZpb3VzKS5zbG9wZUFuZ2xlUmFkaWFucygp
OworICAgICAgICBmbG9hdCBzbG9wZSA9IChtX2N1cnJlbnQgLSBtX3ByZXZpb3VzKS5zbG9wZUFu
Z2xlUmFkaWFucygpOwogICAgICAgICBpZiAobV9hY3Rpb24gPT0gVHJhdmVyc2FsUG9pbnRBdExl
bmd0aCkgewogICAgICAgICAgICAgZmxvYXQgb2Zmc2V0ID0gbV9kZXNpcmVkTGVuZ3RoIC0gbV90
b3RhbExlbmd0aDsKICAgICAgICAgICAgIG1fY3VycmVudC5tb3ZlKG9mZnNldCAqIGNvc2Yoc2xv
cGUpLCBvZmZzZXQgKiBzaW5mKHNsb3BlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NoYWRvd0JsdXIuY3BwCmluZGV4IDMzNTkyODM2N2JmN2M0MjEwZGVmMjJlYmVk
YTBlNWIxY2VjMjg2NTYuLjQzN2IxOTAwNTU3ZGMzNDdkN2RmMmY2ZDFlOWExMmMwNmQyZjJhYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIuY3Bw
CkBAIC00MjgsMTIgKzQyOCwxMiBAQCBJbnRSZWN0IFNoYWRvd0JsdXI6OmNhbGN1bGF0ZUxheWVy
Qm91bmRpbmdSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRgogICAgIG1fbGF5
ZXJTaXplID0gbGF5ZXJSZWN0LnNpemUoKTsKIAogICAgIGNvbnN0IEZsb2F0UG9pbnQgdW5jbGlw
cGVkTGF5ZXJPcmlnaW4gPSBGbG9hdFBvaW50KHVuY2xpcHBlZExheWVyUmVjdC54KCksIHVuY2xp
cHBlZExheWVyUmVjdC55KCkpOwotICAgIGNvbnN0IEZsb2F0U2l6ZSBjbGlwcGVkT3V0ID0gdW5j
bGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOworICAgIGNvbnN0IEZsb2F0UG9pbnQg
Y2xpcHBlZE91dCA9IHVuY2xpcHBlZExheWVyT3JpZ2luIC0gbV9sYXllck9yaWdpbjsKIAogICAg
IC8vIFNldCB0aGUgb3JpZ2luIGFzIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgdGhlIHNjcmF0Y2gg
aW1hZ2UsIG9yLCBpbiBjYXNlIHRoZXJlJ3MgYSBjbGlwcGVkCiAgICAgLy8gb3V0IHJlZ2lvbiwg
c2V0IHRoZSBvcmlnaW4gYWNjb3JkaW5nbHkgdG8gdGhlIGZ1bGwgYm91bmRpbmcgcmVjdCdzIHRv
cC1sZWZ0IGNvcm5lci4KLSAgICBmbG9hdCB0cmFuc2xhdGlvblggPSAtc2hhZG93ZWRSZWN0Lngo
KSArIGluZmxhdGlvbi53aWR0aCgpIC0gZmFic2YoY2xpcHBlZE91dC53aWR0aCgpKTsKLSAgICBm
bG9hdCB0cmFuc2xhdGlvblkgPSAtc2hhZG93ZWRSZWN0LnkoKSArIGluZmxhdGlvbi5oZWlnaHQo
KSAtIGZhYnNmKGNsaXBwZWRPdXQuaGVpZ2h0KCkpOworICAgIGZsb2F0IHRyYW5zbGF0aW9uWCA9
IC1zaGFkb3dlZFJlY3QueCgpICsgaW5mbGF0aW9uLndpZHRoKCkgLSBmYWJzZihjbGlwcGVkT3V0
LngoKSk7CisgICAgZmxvYXQgdHJhbnNsYXRpb25ZID0gLXNoYWRvd2VkUmVjdC55KCkgKyBpbmZs
YXRpb24uaGVpZ2h0KCkgLSBmYWJzZihjbGlwcGVkT3V0LnkoKSk7CiAgICAgbV9sYXllckNvbnRl
eHRUcmFuc2xhdGlvbiA9IEZsb2F0U2l6ZSh0cmFuc2xhdGlvblgsIHRyYW5zbGF0aW9uWSk7CiAK
ICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChsYXllclJlY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5k
ZXggYzljNDg2YTQxNThlNzQ2Y2UwNjg3Y2Y2MGViZTUzMWIyMjc5MmM0YS4uZTM5YmEzYjNlNDY0
MjM4MGY1YjZjNzZjZmQ4YTdjYzRjOWUxODI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yOTY2LDcg
KzI5NjYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6Y29tcHV0ZVBpeGVsQWxpZ25tZW50KGZs
b2F0IHBhZ2VTY2FsZUZhY3RvciwgY29uc3QgRmxvYXRQbwogICAgIGNvbnN0IGZsb2F0IGVwc2ls
b24gPSAxZS01ZjsKICAgICBhbGlnbmVkQm91bmRzLmV4cGFuZChlcHNpbG9uLCBlcHNpbG9uKTsK
ICAgICAKLSAgICBhbGlnbm1lbnRPZmZzZXQgPSBiYXNlUmVsYXRpdmVCb3VuZHMubG9jYXRpb24o
KSAtIGFsaWduZWRCb3VuZHMubG9jYXRpb24oKTsKKyAgICBhbGlnbm1lbnRPZmZzZXQgPSB0b0Zs
b2F0U2l6ZShiYXNlUmVsYXRpdmVCb3VuZHMubG9jYXRpb24oKSAtIGFsaWduZWRCb3VuZHMubG9j
YXRpb24oKSk7CiAgICAgcG9zaXRpb24gPSBtX3Bvc2l0aW9uIC0gYWxpZ25tZW50T2Zmc2V0Owog
ICAgIHNpemUgPSBhbGlnbmVkQm91bmRzLnNpemUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCmluZGV4
IDljNDgxOWFiODU4YjVlYzlmOTgzNTNlNDRiMGU4NDE1NWI0NjgyNjcuLmQwMTI4MTQyNmNlMGUw
MTI3MjVkOGZiYjdkMGExYjQ3YzhhMGZhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKQEAgLTE0NzMs
NyArMTQ3Myw3IEBAIEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhl
bHMoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBSb3VuZGluZ01vCiAKICAgICBGbG9hdFBvaW50IHJv
dW5kZWRPcmlnaW4gPSBGbG9hdFBvaW50KGRldmljZU9yaWdpbi54IC8gZGV2aWNlU2NhbGVYLCBk
ZXZpY2VPcmlnaW4ueSAvIGRldmljZVNjYWxlWSk7CiAgICAgRmxvYXRQb2ludCByb3VuZGVkTG93
ZXJSaWdodCA9IEZsb2F0UG9pbnQoZGV2aWNlTG93ZXJSaWdodC54IC8gZGV2aWNlU2NhbGVYLCBk
ZXZpY2VMb3dlclJpZ2h0LnkgLyBkZXZpY2VTY2FsZVkpOwotICAgIHJldHVybiBGbG9hdFJlY3Qo
cm91bmRlZE9yaWdpbiwgcm91bmRlZExvd2VyUmlnaHQgLSByb3VuZGVkT3JpZ2luKTsKKyAgICBy
ZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmlnaW4sIHRvRmxvYXRTaXplKHJvdW5kZWRMb3dlclJp
Z2h0IC0gcm91bmRlZE9yaWdpbikpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTG9jYWxU
cmlhbmd1bGF0b3IuY3BwCmluZGV4IDE1MTdhNjcyZjAyYzVmYjdmNjliMTE2MDg5ZjRlZDk4Mjk5
Y2JhMmQuLmRkZDE3N2QxODZjMGRhNjU2NDQ2ZTg3NGYzN2IyM2JhYWQ3ZWQ3ZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5Mb2NhbFRy
aWFuZ3VsYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1
L0xvb3BCbGlubkxvY2FsVHJpYW5ndWxhdG9yLmNwcApAQCAtMjEzLDggKzIxMyw4IEBAIHZvaWQg
TG9vcEJsaW5uTG9jYWxUcmlhbmd1bGF0b3I6OnRyaWFuZ3VsYXRlSGVscGVyKExvb3BCbGlubkNv
bnN0YW50czo6RmlsbFNpZGUKICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNlc1syXS54
eUNvb3JkaW5hdGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVydGljZXNbMV0ueHlD
b29yZGluYXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2VzWzNdLnh5Q29v
cmRpbmF0ZXMoKSkpIHsKLSAgICAgICAgaWYgKChtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0ZXMo
KSAtIG1fdmVydGljZXNbMF0ueHlDb29yZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNxdWFyZWQo
KSA8Ci0gICAgICAgICAgICAobV92ZXJ0aWNlc1szXS54eUNvb3JkaW5hdGVzKCkgLSBtX3ZlcnRp
Y2VzWzFdLnh5Q29vcmRpbmF0ZXMoKSkuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkpIHsKKyAgICAg
ICAgaWYgKG1fdmVydGljZXNbMl0ueHlDb29yZGluYXRlcygpLmRpc3RhbmNlU3F1YXJlZFRvUG9p
bnQobV92ZXJ0aWNlc1swXS54eUNvb3JkaW5hdGVzKCkpIDwKKyAgICAgICAgICAgIG1fdmVydGlj
ZXNbM10ueHlDb29yZGluYXRlcygpLmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQobV92ZXJ0aWNlc1sx
XS54eUNvb3JkaW5hdGVzKCkpKSB7CiAgICAgICAgICAgICBhZGRUcmlhbmdsZSgmbV92ZXJ0aWNl
c1swXSwgJm1fdmVydGljZXNbMV0sICZtX3ZlcnRpY2VzWzJdKTsKICAgICAgICAgICAgIGFkZFRy
aWFuZ2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92ZXJ0aWNlc1syXSwgJm1fdmVydGljZXNbM10pOwog
ICAgICAgICB9IGVsc2UgewpAQCAtMjI1LDggKzIyNSw4IEBAIHZvaWQgTG9vcEJsaW5uTG9jYWxU
cmlhbmd1bGF0b3I6OnRyaWFuZ3VsYXRlSGVscGVyKExvb3BCbGlubkNvbnN0YW50czo6RmlsbFNp
ZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVydGljZXNbM10ueHlDb29yZGlu
YXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNlc1sxXS54eUNv
b3JkaW5hdGVzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2VzWzJd
Lnh5Q29vcmRpbmF0ZXMoKSkpIHsKLSAgICAgICAgaWYgKChtX3ZlcnRpY2VzWzNdLnh5Q29vcmRp
bmF0ZXMoKSAtIG1fdmVydGljZXNbMF0ueHlDb29yZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNx
dWFyZWQoKSA8Ci0gICAgICAgICAgICAobV92ZXJ0aWNlc1syXS54eUNvb3JkaW5hdGVzKCkgLSBt
X3ZlcnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMoKSkuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkpIHsK
KyAgICAgICAgaWYgKG1fdmVydGljZXNbM10ueHlDb29yZGluYXRlcygpLmRpc3RhbmNlU3F1YXJl
ZFRvUG9pbnQobV92ZXJ0aWNlc1swXS54eUNvb3JkaW5hdGVzKCkpIDwKKyAgICAgICAgICAgIG1f
dmVydGljZXNbMl0ueHlDb29yZGluYXRlcygpLmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQobV92ZXJ0
aWNlc1sxXS54eUNvb3JkaW5hdGVzKCkpKSB7CiAgICAgICAgICAgICBhZGRUcmlhbmdsZSgmbV92
ZXJ0aWNlc1swXSwgJm1fdmVydGljZXNbMV0sICZtX3ZlcnRpY2VzWzNdKTsKICAgICAgICAgICAg
IGFkZFRyaWFuZ2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92ZXJ0aWNlc1szXSwgJm1fdmVydGljZXNb
Ml0pOwogICAgICAgICB9IGVsc2UgewpAQCAtMjM2LDggKzIzNiw4IEBAIHZvaWQgTG9vcEJsaW5u
TG9jYWxUcmlhbmd1bGF0b3I6OnRyaWFuZ3VsYXRlSGVscGVyKExvb3BCbGlubkNvbnN0YW50czo6
RmlsbFNpZGUKICAgICB9IGVsc2UgewogICAgICAgICAvLyBMaW5lcyAoMC0+MSksICgyLT4zKSBp
bnRlcnNlY3QgLS0gb3Igc2hvdWxkLCBtb2R1bG8gbnVtZXJpY2FsCiAgICAgICAgIC8vIHByZWNp
c2lvbiBpc3N1ZXMKLSAgICAgICAgaWYgKChtX3ZlcnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMoKSAt
IG1fdmVydGljZXNbMF0ueHlDb29yZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSA8
Ci0gICAgICAgICAgICAobV92ZXJ0aWNlc1szXS54eUNvb3JkaW5hdGVzKCkgLSBtX3ZlcnRpY2Vz
WzJdLnh5Q29vcmRpbmF0ZXMoKSkuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkpIHsKKyAgICAgICAg
aWYgKG1fdmVydGljZXNbMV0ueHlDb29yZGluYXRlcygpLmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQo
bV92ZXJ0aWNlc1swXS54eUNvb3JkaW5hdGVzKCkpIDwKKyAgICAgICAgICAgIG1fdmVydGljZXNb
M10ueHlDb29yZGluYXRlcygpLmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQobV92ZXJ0aWNlc1syXS54
eUNvb3JkaW5hdGVzKCkpKSB7CiAgICAgICAgICAgICBhZGRUcmlhbmdsZSgmbV92ZXJ0aWNlc1sw
XSwgJm1fdmVydGljZXNbMl0sICZtX3ZlcnRpY2VzWzFdKTsKICAgICAgICAgICAgIGFkZFRyaWFu
Z2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92ZXJ0aWNlc1sxXSwgJm1fdmVydGljZXNbM10pOwogICAg
ICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3B1L0xvb3BCbGlubk1hdGhVdGlscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvTG9vcEJsaW5uTWF0aFV0aWxzLmNwcAppbmRleCBiYWYxYzk2ODU5MmViNWRh
MWJiZjliMDkzNTUzMWYyMTNkNmQ4ZTRiLi5mMmI5MjJmN2QyOWMzODFmNTJlMjI4ZjNkMmFkMTll
NGUxNmJmMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
cHUvTG9vcEJsaW5uTWF0aFV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ncHUvTG9vcEJsaW5uTWF0aFV0aWxzLmNwcApAQCAtMTIwLDcgKzEyMCw3IEBAIGZs
b2F0IHJvdW5kVG9aZXJvKGZsb2F0IHZhbCkKIAogYm9vbCBhcHByb3hFcXVhbChjb25zdCBGbG9h
dFBvaW50JiB2MCwgY29uc3QgRmxvYXRQb2ludCYgdjEpCiB7Ci0gICAgcmV0dXJuICh2MCAtIHYx
KS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSA8IEVwc2lsb24gKiBFcHNpbG9uOworICAgIHJldHVy
biB2MC5kaXN0YW5jZVNxdWFyZWRUb1BvaW50KHYxKSA8IEVwc2lsb24gKiBFcHNpbG9uOwogfQog
CiBib29sIGFwcHJveEVxdWFsKGNvbnN0IEZsb2F0UG9pbnQzRCYgdjAsIGNvbnN0IEZsb2F0UG9p
bnQzRCYgdjEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9HcmFwaGljc0NvbnRleHRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKaW5kZXggZGY5NmI4NmM3MDM1ZGU3N2Y1MzJlYzJk
NWZmNDJhYWFiMTBmZDBiMy4uM2QxODQ0YTBiMmYyYzhlMDI2MjE0YTFkMGUyNGQ5MjgwZDMxOTRh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhp
Y3NDb250ZXh0UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0
L0dyYXBoaWNzQ29udGV4dFF0LmNwcApAQCAtMTA1NSw3ICsxMDU1LDcgQEAgRmxvYXRSZWN0IEdy
YXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBGbG9hdFJlY3QmIGZyZWN0
LCBSb3VuZGluZ00KIAogICAgIEZsb2F0UG9pbnQgcm91bmRlZE9yaWdpbiA9IEZsb2F0UG9pbnQo
ZGV2aWNlT3JpZ2luLngoKSAvIGRldmljZVNjYWxlWCwgZGV2aWNlT3JpZ2luLnkoKSAvIGRldmlj
ZVNjYWxlWSk7CiAgICAgRmxvYXRQb2ludCByb3VuZGVkTG93ZXJSaWdodCA9IEZsb2F0UG9pbnQo
ZGV2aWNlTG93ZXJSaWdodC54KCkgLyBkZXZpY2VTY2FsZVgsIGRldmljZUxvd2VyUmlnaHQueSgp
IC8gZGV2aWNlU2NhbGVZKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmlnaW4sIHJv
dW5kZWRMb3dlclJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CisgICAgcmV0dXJuIEZsb2F0UmVjdChy
b3VuZGVkT3JpZ2luLCB0b0Zsb2F0U2l6ZShyb3VuZGVkTG93ZXJSaWdodCAtIHJvdW5kZWRPcmln
aW4pKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0
IEZsb2F0U2l6ZSYgc2l6ZSwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAppbmRleCA0OGZiNzY5ZTdi
MmYxNDNkZDJlMDBlYjc0YTdlZWM0ZDA1YjE4NzIwLi42MGMwNDU3M2NmZTYzYWE4N2RhYTljZTI5
ZDY0MzYxNmNhYWY4ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKQEAgLTU1Myw4ICs1
NTMsOCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50UG9pbnQmIHBv
aW50MSwgY29uc3QgSW50UG9pbnQmIHBvaW50MikKICAgICAvLyBXZSBrbm93IHRoZXNlIGFyZSB2
ZXJ0aWNhbCBvciBob3Jpem9udGFsIGxpbmVzLCBzbyB0aGUgbGVuZ3RoIHdpbGwganVzdAogICAg
IC8vIGJlIHRoZSBzdW0gb2YgdGhlIGRpc3BsYWNlbWVudCBjb21wb25lbnQgdmVjdG9ycyBnaXZl
IG9yIHRha2UgMSAtCiAgICAgLy8gcHJvYmFibHkgd29ydGggdGhlIHNwZWVkIHVwIG9mIG5vIHNx
dWFyZSByb290LCB3aGljaCBhbHNvIHdvbid0IGJlIGV4YWN0LgotICAgIEZsb2F0U2l6ZSBkaXNw
ID0gcDIgLSBwMTsKLSAgICBpbnQgbGVuZ3RoID0gU2tTY2FsYXJSb3VuZChkaXNwLndpZHRoKCkg
KyBkaXNwLmhlaWdodCgpKTsKKyAgICBGbG9hdFBvaW50IGRpc3AgPSBwMiAtIHAxOworICAgIGlu
dCBsZW5ndGggPSBTa1NjYWxhclJvdW5kKGRpc3AueCgpICsgZGlzcC55KCkpOwogICAgIHBsYXRm
b3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yU3Ryb2tpbmcoJnBhaW50LCAwLCBsZW5ndGgpOwog
CiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gRG90dGVkU3Ryb2tlIHx8IHN0cm9rZVN0eWxlKCkg
PT0gRGFzaGVkU3Ryb2tlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTlmNWRhNTQ2ODMwMzg1MzYzMTM3
MWM0YzdlZjM2M2U3MTRmODExYy4uMDZiYTQzN2MwMGIyOGQ3NzQ3ZDI5NWY0NzFhYjgzODI1YjA5
NmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRS
ZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtOTcsNyArOTcsNyBAQCBXaWRnZXRSZW5kZXJpbmdDb250
ZXh0OjpXaWRnZXRSZW5kZXJpbmdDb250ZXh0KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LAogICAgIG1fdGFyZ2V0UmVjdC5pbmZsYXRlKGV4dHJhU3BhY2UpOwogCiAgICAgLy8gVGhp
cyBvZmZzZXQgd2lsbCBtYXAgYSBwb2ludCBpbiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhl
IHdpZGdldCB0byB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gb2YgdGhlIHBhaW50aW5nIGJ1ZmZlci4K
LSAgICBtX3BhaW50T2Zmc2V0ID0gdGFyZ2V0UmVjdC5sb2NhdGlvbigpIC0gbV90YXJnZXRSZWN0
LmxvY2F0aW9uKCk7CisgICAgbV9wYWludE9mZnNldCA9IHRvSW50U2l6ZSh0YXJnZXRSZWN0Lmxv
Y2F0aW9uKCkgLSBtX3RhcmdldFJlY3QubG9jYXRpb24oKSk7CiAKICAgICBpbnQgd2lkdGggPSBt
X3RhcmdldFJlY3Qud2lkdGgoKSArIChleHRyYVNwYWNlICogMik7CiAgICAgaW50IGhlaWdodCA9
IG1fdGFyZ2V0UmVjdC5oZWlnaHQoKSArIChleHRyYVNwYWNlICogMik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKaW5kZXggYTUyMjMyZjJiN2U3ZDI5
YzYxNDViNzkyZWQwODg4N2E4YmM4YzlhZS4uZjA0ZmMyNjUxYmM2YzZhMzhiZjg1MTJjYTkyYTZl
MmIzNTZlZjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lv
blBvbHlnb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5
Z29uLmNwcApAQCAtNDcsOSArNDcsOSBAQCBzdHJ1Y3QgRWRnZUludGVyc2VjdGlvbiB7CiAgICAg
RWRnZUludGVyc2VjdGlvblR5cGUgdHlwZTsKIH07CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgZGV0
ZXJtaW5hbnQoY29uc3QgRmxvYXRTaXplJiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCitzdGF0aWMg
aW5saW5lIGZsb2F0IGRldGVybWluYW50KGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0
UG9pbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEud2lkdGgoKSAqIGIuaGVpZ2h0KCkgLSBhLmhlaWdo
dCgpICogYi53aWR0aCgpOworICAgIHJldHVybiBhLngoKSAqIGIueSgpIC0gYS55KCkgKiBiLngo
KTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZUNvbGxpbmVhclBvaW50cyhjb25zdCBGbG9h
dFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCAzNTUyODA1Yzk1ZjZkMjJi
MTQ5YWVjYzRjYmMwOWFmNzBiZGMzOWEwLi4yYTNjMmQwNWJkY2Q1ZmM1NGYwYjExYjA5ZWZjYWUy
MjM1MDMyOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNzM2
LDcgKzczNiw3IEBAIEludFNpemUgUmVuZGVyQm94OjpjYWxjdWxhdGVBdXRvc2Nyb2xsRGlyZWN0
aW9uKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uCiAgICAgICAgIHBvaW50Lm1vdmUo
MCwgLWF1dG9zY3JvbGxCZWx0U2l6ZSk7CiAgICAgZWxzZSBpZiAocG9pbnQueSgpID4gYm94Lm1h
eFkoKSAtIGF1dG9zY3JvbGxCZWx0U2l6ZSkKICAgICAgICAgcG9pbnQubW92ZSgwLCBhdXRvc2Ny
b2xsQmVsdFNpemUpOwotICAgIHJldHVybiBmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocG9p
bnQpIC0gd2luZG93UG9pbnQ7CisgICAgcmV0dXJuIHRvSW50U2l6ZShmcmFtZVZpZXctPmNvbnRl
bnRzVG9XaW5kb3cocG9pbnQpIC0gd2luZG93UG9pbnQpOwogfQogCiBSZW5kZXJCb3gqIFJlbmRl
ckJveDo6ZmluZEF1dG9zY3JvbGxhYmxlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBm
MDZlMTI2MzhiOWFjNDFmNjAwOTJhZDQ4NTkyM2RhMjRmNDBmNjNiLi45ZTcyZGFlZTM4MzU2Y2Qy
NjQ1NWI3ZWYzYzM2YzEwZjc3NDlkOTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTExNjcsOSArMTE2Nyw3IEBAIHZvaWQg
UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5OjpjbGlwKGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0CiAKIEludFBvaW50IFJlbmRlckJveE1vZGVsT2JqZWN0OjpCYWNr
Z3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSgpIGNvbnN0CiB7Ci0gICAgSW50UG9p
bnQgcGhhc2UgPSBtX3BoYXNlOwotICAgIHBoYXNlICs9IG1fZGVzdFJlY3QubG9jYXRpb24oKSAt
IG1fZGVzdE9yaWdpbjsKLSAgICByZXR1cm4gcGhhc2U7CisgICAgcmV0dXJuIG1fcGhhc2UgKyBt
X2Rlc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RPcmlnaW47CiB9CiAKIHZvaWQgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJbWFnZUdlb21ldHJ5KGNvbnN0IEZpbGxM
YXllciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0JiBwYWludFJlY3QsIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggZGRmNWQzNzk1YzY4YWIxYTYwYTkw
MWY3MWY0MDU4YzIwZWYxOGY0Yy4uMGQzYWU4YmYyOGZkYjA1YTY5MjkyNmY5YzY5YzY2N2IyMmI2
MTU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xOTMw
LDkgKzE5MzAsOSBAQCBzdGF0aWMgaW5saW5lIGludCBhZGp1c3RlZFNjcm9sbERlbHRhKGludCBi
ZWdpbm5pbmdEZWx0YSkgewogICAgIHJldHVybiBhZGp1c3RlZERlbHRhOwogfQogCi1zdGF0aWMg
aW5saW5lIEludFNpemUgYWRqdXN0ZWRTY3JvbGxEZWx0YShjb25zdCBJbnRTaXplJiBkZWx0YSkK
K3N0YXRpYyBpbmxpbmUgSW50U2l6ZSBhZGp1c3RlZFNjcm9sbERlbHRhKGNvbnN0IEludFBvaW50
JiBkZWx0YSkKIHsKLSAgICByZXR1cm4gSW50U2l6ZShhZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRh
LndpZHRoKCkpLCBhZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRhLmhlaWdodCgpKSk7CisgICAgcmV0
dXJuIEludFNpemUoYWRqdXN0ZWRTY3JvbGxEZWx0YShkZWx0YS54KCkpLCBhZGp1c3RlZFNjcm9s
bERlbHRhKGRlbHRhLnkoKSkpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9t
UG9pbnQoY29uc3QgSW50UG9pbnQmIHNvdXJjZVBvaW50KQpAQCAtMTk1MCwxMiArMTk1MCwxMiBA
QCB2b2lkIFJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmIHNv
dXJjZVBvaW50KQogICAgIGVsc2UKICAgICAgICAgcHJldmlvdXNNb3VzZVBvc2l0aW9uID0gbGFz
dEtub3duTW91c2VQb3NpdGlvbjsKIAotICAgIEludFNpemUgZGVsdGEgPSBsYXN0S25vd25Nb3Vz
ZVBvc2l0aW9uIC0gc291cmNlUG9pbnQ7CisgICAgSW50UG9pbnQgZGVsdGEgPSBsYXN0S25vd25N
b3VzZVBvc2l0aW9uIC0gc291cmNlUG9pbnQ7CiAKLSAgICBpZiAoYWJzKGRlbHRhLndpZHRoKCkp
IDw9IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKSAvLyBhdCB0aGUgY2VudGVyIHdlIGxl
dCB0aGUgc3BhY2UgZm9yIHRoZSBpY29uCi0gICAgICAgIGRlbHRhLnNldFdpZHRoKDApOwotICAg
IGlmIChhYnMoZGVsdGEuaGVpZ2h0KCkpIDw9IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVz
KQotICAgICAgICBkZWx0YS5zZXRIZWlnaHQoMCk7CisgICAgaWYgKGFicyhkZWx0YS54KCkpIDw9
IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKSAvLyBhdCB0aGUgY2VudGVyIHdlIGxldCB0
aGUgc3BhY2UgZm9yIHRoZSBpY29uCisgICAgICAgIGRlbHRhLnNldFgoMCk7CisgICAgaWYgKGFi
cyhkZWx0YS55KCkpIDw9IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKQorICAgICAgICBk
ZWx0YS5zZXRZKDApOwogCiAgICAgc2Nyb2xsQnlSZWN1cnNpdmVseShhZGp1c3RlZFNjcm9sbERl
bHRhKGRlbHRhKSwgU2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7CiB9CkBAIC0yODExLDcgKzI4MTEsNyBA
QCBJbnRTaXplIFJlbmRlckxheWVyOjpvZmZzZXRGcm9tUmVzaXplQ29ybmVyKGNvbnN0IEludFBv
aW50JiBhYnNvbHV0ZVBvaW50KSBjb25zdAogICAgICAgICBlbGVtZW50U2l6ZS5zZXRXaWR0aCgw
KTsKICAgICBJbnRQb2ludCByZXNpemVyUG9pbnQgPSBJbnRQb2ludChlbGVtZW50U2l6ZSk7CiAg
ICAgSW50UG9pbnQgbG9jYWxQb2ludCA9IHJvdW5kZWRJbnRQb2ludChhYnNvbHV0ZVRvQ29udGVu
dHMoYWJzb2x1dGVQb2ludCkpOwotICAgIHJldHVybiBsb2NhbFBvaW50IC0gcmVzaXplclBvaW50
OworICAgIHJldHVybiBJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGxvY2FsUG9pbnQsIHJlc2l6
ZXJQb2ludCk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXI6Omhhc092ZXJmbG93Q29udHJvbHMoKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAppbmRleCBmYjhlYThjYWM2NTVkYjUzZjYyNjI1YWMyOTE2MTQ1NjUxOTFhYjQ0Li5lZmVmMTc2
OTI4Yjc4OGNhZmY5MTFjNjAwNmQwNTc2MzU1NWE3YmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNjI0LDE3ICs2MjQsMTcgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAg
ICAgICAgIFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250ZXh0IGNsaXBSZWN0c0NvbnRleHQoY29t
cEFuY2VzdG9yLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMsIElnbm9yZU92ZXJsYXlTY3JvbGxiYXJT
aXplLCBSZW5kZXJMYXllcjo6SWdub3JlT3ZlcmZsb3dDbGlwKTsKICAgICAgICAgSW50UmVjdCBw
YXJlbnRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QobV9vd25pbmdMYXllci0+YmFja2dy
b3VuZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpLnJlY3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJl
Y3QgZm9yIENTUyByZWdpb25zLgogICAgICAgICBBU1NFUlQocGFyZW50Q2xpcFJlY3QgIT0gUGFp
bnRJbmZvOjppbmZpbml0ZVJlY3QoKSk7Ci0gICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVy
LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KHBhcmVudENsaXBSZWN0LmxvY2F0aW9uKCkgLSBncmFw
aGljc0xheWVyUGFyZW50TG9jYXRpb24pKTsKKyAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5
ZXItPnNldFBvc2l0aW9uKHBhcmVudENsaXBSZWN0LmxvY2F0aW9uKCkgLSBncmFwaGljc0xheWVy
UGFyZW50TG9jYXRpb24pOwogICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0U2l6
ZShwYXJlbnRDbGlwUmVjdC5zaXplKCkpOwogCiAgICAgICAgIC8vIGJhY2tncm91bmRSZWN0IGlz
IHJlbGF0aXZlIHRvIGNvbXBBbmNlc3Rvciwgc28gc3VidHJhY3QgZGVsdGFYL2RlbHRhWSB0byBn
ZXQgYmFjayB0byBsb2NhbCBjb29yZHMuCi0gICAgICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVy
LT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIocGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKSAtIGRlbHRh
KTsKKyAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldE9mZnNldEZyb21SZW5kZXJl
cihJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKHBhcmVudENsaXBSZWN0LmxvY2F0aW9uKCksIGRl
bHRhKSk7CiAKICAgICAgICAgLy8gVGhlIHByaW1hcnkgbGF5ZXIgaXMgdGhlbiBwYXJlbnRlZCBp
biwgYW5kIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhpcyBjbGlwcGluZyBsYXllci4KICAgICAg
ICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0gcGFyZW50Q2xpcFJlY3QubG9jYXRpb24o
KTsKICAgICB9CiAKLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQo
cmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpIC0gZ3JhcGhpY3NMYXllclBhcmVu
dExvY2F0aW9uKSk7CisgICAgbV9ncmFwaGljc0xheWVyLT5zZXRQb3NpdGlvbihyZWxhdGl2ZUNv
bXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkgLSBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24p
OwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKHRvSW50U2l6ZShs
b2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpKTsKICAgICAKICAgICBGbG9hdFNpemUg
b2xkU2l6ZSA9IG1fZ3JhcGhpY3NMYXllci0+c2l6ZSgpOwpAQCAtNjUyLDcgKzY1Miw3IEBAIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFwaGljc0xheWVyR2VvbWV0cnkoKQogICAg
IEludFJlY3QgY2xpcHBpbmdCb3g7CiAgICAgaWYgKEdyYXBoaWNzTGF5ZXIqIGNsaXBMYXllciA9
IGNsaXBwaW5nTGF5ZXIoKSkgewogICAgICAgICBjbGlwcGluZ0JveCA9IGNsaXBCb3godG9SZW5k
ZXJCb3gocmVuZGVyZXIoKSkpOwotICAgICAgICBjbGlwTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMubG9j
YXRpb24oKSkpOworICAgICAgICBjbGlwTGF5ZXItPnNldFBvc2l0aW9uKGNsaXBwaW5nQm94Lmxv
Y2F0aW9uKCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpOwogICAgICAgICBj
bGlwTGF5ZXItPnNldFNpemUoY2xpcHBpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgY2xpcExheWVy
LT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIodG9JbnRTaXplKGNsaXBwaW5nQm94LmxvY2F0aW9uKCkp
KTsKICAgICB9CkBAIC03MjgsNyArNzI4LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVw
ZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgICAgIC8vIGJ1dCB0aGUgcmVmbGVjdGVk
IGxheWVyIGlzIHRoZSBib3VuZHMgb2YgdGhpcyBsYXllciwgc28gd2UgbmVlZCB0byBwb3NpdGlv
biBpdCBhcHByb3ByaWF0ZWx5LgogICAgICAgICBGbG9hdFJlY3QgbGF5ZXJCb3VuZHMgPSBjb21w
b3NpdGVkQm91bmRzKCk7CiAgICAgICAgIEZsb2F0UmVjdCByZWZsZWN0aW9uTGF5ZXJCb3VuZHMg
PSByZWZsZWN0aW9uQmFja2luZy0+Y29tcG9zaXRlZEJvdW5kcygpOwotICAgICAgICByZWZsZWN0
aW9uQmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5zZXRSZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbihG
bG9hdFBvaW50KGxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZWZsZWN0aW9uTGF5ZXJCb3VuZHMu
bG9jYXRpb24oKSkpOworICAgICAgICByZWZsZWN0aW9uQmFja2luZy0+Z3JhcGhpY3NMYXllcigp
LT5zZXRSZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbihsYXllckJvdW5kcy5sb2NhdGlvbigpIC0gcmVm
bGVjdGlvbkxheWVyQm91bmRzLmxvY2F0aW9uKCkpOwogICAgIH0KIAogICAgIGlmIChtX3Njcm9s
bGluZ0xheWVyKSB7CkBAIC03MzcsNyArNzM3LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgICAgIEludFJlY3QgcGFkZGluZ0Jv
eChyZW5kZXJCb3gtPmJvcmRlckxlZnQoKSwgcmVuZGVyQm94LT5ib3JkZXJUb3AoKSwgcmVuZGVy
Qm94LT53aWR0aCgpIC0gcmVuZGVyQm94LT5ib3JkZXJMZWZ0KCkgLSByZW5kZXJCb3gtPmJvcmRl
clJpZ2h0KCksIHJlbmRlckJveC0+aGVpZ2h0KCkgLSByZW5kZXJCb3gtPmJvcmRlclRvcCgpIC0g
cmVuZGVyQm94LT5ib3JkZXJCb3R0b20oKSk7CiAgICAgICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0
ID0gbV9vd25pbmdMYXllci0+c2Nyb2xsZWRDb250ZW50T2Zmc2V0KCk7CiAKLSAgICAgICAgbV9z
Y3JvbGxpbmdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChwYWRkaW5nQm94LmxvY2F0aW9u
KCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkpKTsKKyAgICAgICAgbV9zY3Jv
bGxpbmdMYXllci0+c2V0UG9zaXRpb24ocGFkZGluZ0JveC5sb2NhdGlvbigpIC0gbG9jYWxDb21w
b3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpKTsKIAogICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5z
ZXRTaXplKHBhZGRpbmdCb3guc2l6ZSgpKTsKICAgICAgICAgbV9zY3JvbGxpbmdDb250ZW50c0xh
eWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KC1zY3JvbGxPZmZzZXQud2lkdGgoKSwgLXNjcm9s
bE9mZnNldC5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RC
b3guY3BwCmluZGV4IDE0YWUwYmU1M2Q3ZDIxZTJiODk0OTk3YWUwZWFjYjJhYWVkZDU3ODkuLmY2
YjE1MjNmYWQ2NTgyYjY4Nzk5Nzg1ODQ5M2QzMjJkOTUwODNiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAgLTU0MCwxOCArNTQwLDE4IEBAIGludCBS
ZW5kZXJMaXN0Qm94OjpzY3JvbGxUb3dhcmQoY29uc3QgSW50UG9pbnQmIGRlc3RpbmF0aW9uKQog
ewogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zv
cm1zLgogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgSW50
U2l6ZSBwb3NpdGlvbk9mZnNldCA9IHJvdW5kZWRJbnRTaXplKGRlc3RpbmF0aW9uIC0gYWJzUG9z
KTsKKyAgICBJbnRQb2ludCBwb3NpdGlvbk9mZnNldCA9IGRlc3RpbmF0aW9uIC0gcm91bmRlZElu
dFBvaW50KGFic1Bvcyk7CiAKICAgICBpbnQgcm93cyA9IG51bVZpc2libGVJdGVtcygpOwogICAg
IGludCBvZmZzZXQgPSBtX2luZGV4T2Zmc2V0OwogICAgIAotICAgIGlmIChwb3NpdGlvbk9mZnNl
dC5oZWlnaHQoKSA8IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICYmIHNjcm9sbFRvUmV2ZWFs
RWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCAtIDEpKQorICAgIGlmIChwb3NpdGlvbk9mZnNldC55
KCkgPCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSAmJiBzY3JvbGxUb1JldmVhbEVsZW1lbnRB
dExpc3RJbmRleChvZmZzZXQgLSAxKSkKICAgICAgICAgcmV0dXJuIG9mZnNldCAtIDE7CiAgICAg
Ci0gICAgaWYgKHBvc2l0aW9uT2Zmc2V0LmhlaWdodCgpID4gaGVpZ2h0KCkgLSBwYWRkaW5nQm90
dG9tKCkgLSBib3JkZXJCb3R0b20oKSAmJiBzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRl
eChvZmZzZXQgKyByb3dzKSkKKyAgICBpZiAocG9zaXRpb25PZmZzZXQueSgpID4gaGVpZ2h0KCkg
LSBwYWRkaW5nQm90dG9tKCkgLSBib3JkZXJCb3R0b20oKSAmJiBzY3JvbGxUb1JldmVhbEVsZW1l
bnRBdExpc3RJbmRleChvZmZzZXQgKyByb3dzKSkKICAgICAgICAgcmV0dXJuIG9mZnNldCArIHJv
d3MgLSAxOwogICAgIAotICAgIHJldHVybiBsaXN0SW5kZXhBdE9mZnNldChwb3NpdGlvbk9mZnNl
dCk7CisgICAgcmV0dXJuIGxpc3RJbmRleEF0T2Zmc2V0KHRvU2l6ZShwb3NpdGlvbk9mZnNldCkp
OwogfQogCiB2b2lkIFJlbmRlckxpc3RCb3g6OmF1dG9zY3JvbGwoY29uc3QgSW50UG9pbnQmKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAppbmRleCA2ZGIwZDY5M2Ji
NWZjNTc5YzkxYjA5ZTBmYjdiZjMyMzY1ZWU4MTIyLi4wMmI0NzViM2YyZGMxMzc1ZjcyMmYyYzE5
NTYzZTgxZDAyYjVhNjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0
LmNwcApAQCAtMjgxLDEyICsyODEsMTIgQEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiAgICAgICAg
ICAgICByb3VuZFRvSW50KGFkanVzdGVkUGFpbnRPZmZzZXQueSgpICsgYm9yZGVyVG9wKCkgKyBw
YWRkaW5nVG9wKCkpKTsKICAgICAgICAgSW50UmVjdCBwYWludFJlY3QgPSBwYWludEluZm8ucmVj
dDsKIAotICAgICAgICBJbnRTaXplIHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlvbiAt
IHdpZGdldExvY2F0aW9uOworICAgICAgICBJbnRQb2ludCB3aWRnZXRQYWludE9mZnNldCA9IHBh
aW50TG9jYXRpb24gLSB3aWRnZXRMb2NhdGlvbjsKICAgICAgICAgLy8gV2hlbiBwYWludGluZyB3
aWRnZXRzIGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRv
IHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIsCiAgICAgICAgIC8vIG5vdCB0aGUgcm9v
dC4gSW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFuZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0
byBiZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWluIGRyYXdpbmcuCiAgICAgICAgIGlmICgh
d2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpIHsKICAgICAgICAgICAgIHBhaW50SW5mby5jb250
ZXh0LT50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnRSZWN0
Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKKyAgICAgICAgICAgIHBhaW50UmVjdC5tb3ZlQnko
LXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgfQogICAgICAgICBtX3dpZGdldC0+cGFpbnQo
cGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdNYXJrZXJEYXRhLmgKaW5kZXggMDlhNTQyYjIxMDk3NTdjOTYyZDIzNTliYjk5
MDUwZDQ5MTRkMDU4OC4uMzMxNWE4MmYzNTk4YTFhOWVjNjFiNGY2N2I3ZTc4MTYyZTdhODE1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJEYXRhLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJEYXRhLmgKQEAgLTgy
LDggKzgyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBmbG9hdCBjdXJyZW50QW5nbGUoU1ZH
TWFya2VyVHlwZSB0eXBlKSBjb25zdAogICAgIHsKLSAgICAgICAgRmxvYXRQb2ludCBpbnNsb3Bl
Q2hhbmdlKG1faW5zbG9wZVBvaW50c1sxXSAtIG1faW5zbG9wZVBvaW50c1swXSk7Ci0gICAgICAg
IEZsb2F0UG9pbnQgb3V0c2xvcGVDaGFuZ2UobV9vdXRzbG9wZVBvaW50c1sxXSAtIG1fb3V0c2xv
cGVQb2ludHNbMF0pOworICAgICAgICBGbG9hdFBvaW50IGluc2xvcGVDaGFuZ2UgPSBtX2luc2xv
cGVQb2ludHNbMV0gLSBtX2luc2xvcGVQb2ludHNbMF07CisgICAgICAgIEZsb2F0UG9pbnQgb3V0
c2xvcGVDaGFuZ2UgPSBtX291dHNsb3BlUG9pbnRzWzFdIC0gbV9vdXRzbG9wZVBvaW50c1swXTsK
IAogICAgICAgICBkb3VibGUgaW5zbG9wZSA9IHJhZDJkZWcoaW5zbG9wZUNoYW5nZS5zbG9wZUFu
Z2xlUmFkaWFucygpKTsKICAgICAgICAgZG91YmxlIG91dHNsb3BlID0gcmFkMmRlZyhvdXRzbG9w
ZUNoYW5nZS5zbG9wZUFuZ2xlUmFkaWFucygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGEyYzM5MmY5MDlhMzIzMTgwNTA5NTAzZTRk
ZjNjOTQxMDlkNjMxNjMuLmM5NGIxZDVkOGNiZmY1MzAzYmVhNGQ5ZGUyZjkyNjgzMmFiZjU4NmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApA
QCAtMzIxLDggKzMyMSw4IEBAIGZsb2F0IFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjpjYWxjdWxh
dGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0CiAgICAgICAgIHJldHVy
biAtMTsKICAgICBpZiAoIXBhcnNlUG9pbnQodG9TdHJpbmcsIHRvKSkKICAgICAgICAgcmV0dXJu
IC0xOwotICAgIEZsb2F0U2l6ZSBkaWZmID0gdG8gLSBmcm9tOwotICAgIHJldHVybiBzcXJ0Zihk
aWZmLndpZHRoKCkgKiBkaWZmLndpZHRoKCkgKyBkaWZmLmhlaWdodCgpICogZGlmZi5oZWlnaHQo
KSk7CisgICAgRmxvYXRQb2ludCBkaWZmID0gdG8gLSBmcm9tOworICAgIHJldHVybiBkaWZmLmxl
bmd0aCgpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1cGRhdGVBbmltYXRp
b25Nb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAppbmRleCBmOTA4ZTBkYjM0
MGU4Y2VlZTNiYjRmZmViYTJlNmY4ZWQ5ZjlhZWVmLi5kYmQxZDA2NDcxZDk2NTBmZDViNTQxZTM5
ZWJlODlhYWVkMjc3YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJzZXIuY3BwCkBAIC00
MTIsMTMgKzQxMiwxMyBAQCB2b2lkIFNWR1BhdGhQYXJzZXI6OmNsZWFudXAoKQogLy8gU2VlIGFs
c28gU1ZHIGltcGxlbWVudGF0aW9uIG5vdGVzOiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvaW1w
bG5vdGUuaHRtbCNBcmNDb252ZXJzaW9uRW5kcG9pbnRUb0NlbnRlcgogYm9vbCBTVkdQYXRoUGFy
c2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9hdCByeCwgZmxvYXQgcnks
IEZsb2F0UG9pbnQmIHBvaW50MSwgRmxvYXRQb2ludCYgcG9pbnQyLCBib29sIGxhcmdlQXJjRmxh
ZywgYm9vbCBzd2VlcEZsYWcpCiB7Ci0gICAgRmxvYXRTaXplIG1pZFBvaW50RGlzdGFuY2UgPSBw
b2ludDEgLSBwb2ludDI7CisgICAgRmxvYXRQb2ludCBtaWRQb2ludERpc3RhbmNlID0gcG9pbnQx
IC0gcG9pbnQyOwogICAgIG1pZFBvaW50RGlzdGFuY2Uuc2NhbGUoMC41Zik7CiAKICAgICBBZmZp
bmVUcmFuc2Zvcm0gcG9pbnRUcmFuc2Zvcm07CiAgICAgcG9pbnRUcmFuc2Zvcm0ucm90YXRlKC1h
bmdsZSk7CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkTWlkUG9pbnQgPSBwb2ludFRyYW5z
Zm9ybS5tYXBQb2ludChGbG9hdFBvaW50KG1pZFBvaW50RGlzdGFuY2Uud2lkdGgoKSwgbWlkUG9p
bnREaXN0YW5jZS5oZWlnaHQoKSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNmb3JtZWRNaWRQb2lu
dCA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KG1pZFBvaW50RGlzdGFuY2UpOwogICAgIGZsb2F0
IHNxdWFyZVJ4ID0gcnggKiByeDsKICAgICBmbG9hdCBzcXVhcmVSeSA9IHJ5ICogcnk7CiAgICAg
ZmxvYXQgc3F1YXJlWCA9IHRyYW5zZm9ybWVkTWlkUG9pbnQueCgpICogdHJhbnNmb3JtZWRNaWRQ
b2ludC54KCk7CkBAIC00MzgsOSArNDM4LDkgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpkZWNvbXBv
c2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9hdCByeCwgZmxvYXQgcnksIEZsb2F0UG8KIAog
ICAgIHBvaW50MSA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50MSk7CiAgICAgcG9pbnQy
ID0gcG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQyKTsKLSAgICBGbG9hdFNpemUgZGVsdGEg
PSBwb2ludDIgLSBwb2ludDE7CisgICAgRmxvYXRQb2ludCBkZWx0YSA9IHBvaW50MiAtIHBvaW50
MTsKIAotICAgIGZsb2F0IGQgPSBkZWx0YS53aWR0aCgpICogZGVsdGEud2lkdGgoKSArIGRlbHRh
LmhlaWdodCgpICogZGVsdGEuaGVpZ2h0KCk7CisgICAgZmxvYXQgZCA9IGRlbHRhLmxlbmd0aFNx
dWFyZWQoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvclNxdWFyZWQgPSBzdGQ6Om1heCgxIC8gZCAt
IDAuMjVmLCAwLmYpOwogCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzcXJ0ZihzY2FsZUZhY3Rv
clNxdWFyZWQpOwpAQCAtNDUwLDEwICs0NTAsMTAgQEAgYm9vbCBTVkdQYXRoUGFyc2VyOjpkZWNv
bXBvc2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9hdCByeCwgZmxvYXQgcnksIEZsb2F0UG8K
ICAgICBkZWx0YS5zY2FsZShzY2FsZUZhY3Rvcik7CiAgICAgRmxvYXRQb2ludCBjZW50ZXJQb2lu
dCA9IHBvaW50MSArIHBvaW50MjsKICAgICBjZW50ZXJQb2ludC5zY2FsZSgwLjVmLCAwLjVmKTsK
LSAgICBjZW50ZXJQb2ludC5tb3ZlKC1kZWx0YS5oZWlnaHQoKSwgZGVsdGEud2lkdGgoKSk7Cisg
ICAgY2VudGVyUG9pbnQubW92ZSgtZGVsdGEueSgpLCBkZWx0YS54KCkpOwogCi0gICAgZmxvYXQg
dGhldGExID0gRmxvYXRQb2ludChwb2ludDEgLSBjZW50ZXJQb2ludCkuc2xvcGVBbmdsZVJhZGlh
bnMoKTsKLSAgICBmbG9hdCB0aGV0YTIgPSBGbG9hdFBvaW50KHBvaW50MiAtIGNlbnRlclBvaW50
KS5zbG9wZUFuZ2xlUmFkaWFucygpOworICAgIGZsb2F0IHRoZXRhMSA9IChwb2ludDEgLSBjZW50
ZXJQb2ludCkuc2xvcGVBbmdsZVJhZGlhbnMoKTsKKyAgICBmbG9hdCB0aGV0YTIgPSAocG9pbnQy
IC0gY2VudGVyUG9pbnQpLnNsb3BlQW5nbGVSYWRpYW5zKCk7CiAKICAgICBmbG9hdCB0aGV0YUFy
YyA9IHRoZXRhMiAtIHRoZXRhMTsKICAgICBpZiAodGhldGFBcmMgPCAwICYmIHN3ZWVwRmxhZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwCmluZGV4IDgwYWJl
ZTNjMjIxOGU0ZDYyZjYyNDM0ZmU1ZTViNjJjNzE0ZGEyM2EuLmNkYjkxNDRmOTFhMTJkMjM2YWRh
ODc5ZmRkZTNjMzFlM2FlYWMwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
cmFuc2Zvcm1EaXN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9y
bURpc3RhbmNlLmNwcApAQCAtNjEsMTUgKzYxLDE1IEBAIFNWR1RyYW5zZm9ybURpc3RhbmNlOjpT
VkdUcmFuc2Zvcm1EaXN0YW5jZShjb25zdCBTVkdUcmFuc2Zvcm0mIGZyb21TVkdUcmFuc2Zvcm0s
CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVU5LTk9XTjoKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fUk9UQVRFOiB7Ci0g
ICAgICAgIEZsb2F0U2l6ZSBjZW50ZXJEaXN0YW5jZSA9IHRvU1ZHVHJhbnNmb3JtLnJvdGF0aW9u
Q2VudGVyKCkgLSBmcm9tU1ZHVHJhbnNmb3JtLnJvdGF0aW9uQ2VudGVyKCk7CisgICAgICAgIEZs
b2F0UG9pbnQgY2VudGVyRGlzdGFuY2UgPSB0b1NWR1RyYW5zZm9ybS5yb3RhdGlvbkNlbnRlcigp
IC0gZnJvbVNWR1RyYW5zZm9ybS5yb3RhdGlvbkNlbnRlcigpOwogICAgICAgICBtX2FuZ2xlID0g
dG9TVkdUcmFuc2Zvcm0uYW5nbGUoKSAtIGZyb21TVkdUcmFuc2Zvcm0uYW5nbGUoKTsKLSAgICAg
ICAgbV9jeCA9IGNlbnRlckRpc3RhbmNlLndpZHRoKCk7Ci0gICAgICAgIG1fY3kgPSBjZW50ZXJE
aXN0YW5jZS5oZWlnaHQoKTsKKyAgICAgICAgbV9jeCA9IGNlbnRlckRpc3RhbmNlLngoKTsKKyAg
ICAgICAgbV9jeSA9IGNlbnRlckRpc3RhbmNlLnkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFURTogewotICAgICAg
ICBGbG9hdFNpemUgdHJhbnNsYXRpb25EaXN0YW5jZSA9IHRvU1ZHVHJhbnNmb3JtLnRyYW5zbGF0
ZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS50cmFuc2xhdGUoKTsKLSAgICAgICAgbV90cmFuc2Zvcm0u
dHJhbnNsYXRlKHRyYW5zbGF0aW9uRGlzdGFuY2Uud2lkdGgoKSwgdHJhbnNsYXRpb25EaXN0YW5j
ZS5oZWlnaHQoKSk7CisgICAgICAgIEZsb2F0UG9pbnQgdHJhbnNsYXRpb25EaXN0YW5jZSA9IHRv
U1ZHVHJhbnNmb3JtLnRyYW5zbGF0ZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS50cmFuc2xhdGUoKTsK
KyAgICAgICAgbV90cmFuc2Zvcm0udHJhbnNsYXRlKHRyYW5zbGF0aW9uRGlzdGFuY2UueCgpLCB0
cmFuc2xhdGlvbkRpc3RhbmNlLnkoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNl
IFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TQ0FMRTogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRHJhZ0NsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRHJhZ0NsaWVudEltcGwuY3BwCmluZGV4IDM5ZjQ4YzZiNWJiYWU4YTYzZjNm
YTIzNTViZWExODhhYzY3M2U2MTQuLjQ3MDZmNjk3NzI1NjU0NWYwN2M0MDZkZGFiNThmNTI1YTIx
OTBmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RyYWdDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EcmFnQ2xpZW50SW1wbC5j
cHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBEcmFnQ2xpZW50SW1wbDo6c3RhcnREcmFnKERyYWdJ
bWFnZVJlZiBkcmFnSW1hZ2UsCiAKICAgICBEcmFnT3BlcmF0aW9uIGRyYWdPcGVyYXRpb25NYXNr
ID0gY2xpcGJvYXJkLT5zb3VyY2VPcGVyYXRpb24oKTsKIAotICAgIEludFNpemUgb2Zmc2V0U2l6
ZShldmVudFBvcyAtIGRyYWdJbWFnZU9yaWdpbik7Ci0gICAgV2ViUG9pbnQgb2Zmc2V0UG9pbnQo
b2Zmc2V0U2l6ZS53aWR0aCgpLCBvZmZzZXRTaXplLmhlaWdodCgpKTsKKyAgICBJbnRQb2ludCBv
ZmZzZXQgPSBldmVudFBvcyAtIGRyYWdJbWFnZU9yaWdpbjsKKyAgICBXZWJQb2ludCBvZmZzZXRQ
b2ludChvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsKIAogICAgIGlmIChkcmFnSW1hZ2UgJiYgZHJh
Z0ltYWdlLT5iaXRtYXAgJiYgbV93ZWJWaWV3LT5kZXZpY2VTY2FsZUZhY3RvcigpICE9IGRyYWdJ
bWFnZS0+cmVzb2x1dGlvblNjYWxlKSB7CiAgICAgICAgIEFTU0VSVChkcmFnSW1hZ2UtPnJlc29s
dXRpb25TY2FsZSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1w
bC5jcHAKaW5kZXggOWU3MjUyODhhMGRjNzE2YWJiODY0ZjAyYzE5MmI5Y2QzZTViNmEwZi4uMGU1
MDNiMGMwNzFkMDA3NmE0MTg4YTRmMTAyYTJjZjkyZmE1Y2YxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0yMDAxLDEwICsyMDAxLDggQEAgaW50
IFdlYkZyYW1lSW1wbDo6bmVhcmVzdEZpbmRNYXRjaChjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
ZmxvYXQmIGRpc3RhbmNlU3F1YXIKICAgICBkaXN0YW5jZVNxdWFyZWQgPSBGTFRfTUFYOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9maW5kTWF0Y2hlc0NhY2hlLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIEFTU0VSVCghbV9maW5kTWF0Y2hlc0NhY2hlW2ldLm1fcmVjdC5pc0VtcHR5KCkp
OwotICAgICAgICBGbG9hdFNpemUgb2Zmc2V0ID0gcG9pbnQgLSBtX2ZpbmRNYXRjaGVzQ2FjaGVb
aV0ubV9yZWN0LmNlbnRlcigpOwotICAgICAgICBmbG9hdCB3aWR0aCA9IG9mZnNldC53aWR0aCgp
OwotICAgICAgICBmbG9hdCBoZWlnaHQgPSBvZmZzZXQuaGVpZ2h0KCk7Ci0gICAgICAgIGZsb2F0
IGN1cnJlbnREaXN0YW5jZVNxdWFyZWQgPSB3aWR0aCAqIHdpZHRoICsgaGVpZ2h0ICogaGVpZ2h0
OworICAgICAgICBGbG9hdFBvaW50IG9mZnNldCA9IHBvaW50IC0gbV9maW5kTWF0Y2hlc0NhY2hl
W2ldLm1fcmVjdC5jZW50ZXIoKTsKKyAgICAgICAgZmxvYXQgY3VycmVudERpc3RhbmNlU3F1YXJl
ZCA9IG9mZnNldC5sZW5ndGhTcXVhcmVkKCk7CiAgICAgICAgIGlmIChjdXJyZW50RGlzdGFuY2VT
cXVhcmVkIDwgZGlzdGFuY2VTcXVhcmVkKSB7CiAgICAgICAgICAgICBuZWFyZXN0ID0gaTsKICAg
ICAgICAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGN1cnJlbnREaXN0YW5jZVNxdWFyZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggNmU5NzMwMjE2NjJiNDBkMzZhMjg0
YzNmZDFkMDQ5YWI2NmEyNTk5Ni4uNTQ0OGM1MTdkNTNmYzk2M2M4ZTJhOWI2NDM0NTMzZTQ0MTg4
MzcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApAQCAtMjA3LDcgKzIw
Nyw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFkanVzdFBvc2l0aW9uRm9yRml4ZWRMYXll
cnMoKQogICAgIC8vIHRoZW0gYnkgdGhlIGRlbHRhIGJldHdlZW4gdGhlIGN1cnJlbnQgcG9zaXRp
b24gYW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgdmlld3BvcnQgdXNlZCBmb3IgdGhlIGxhc3QgbGF5
b3V0LgogICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBib3VuZGVkU2Nyb2xsUG9zaXRp
b24obV92aXNpYmxlQ29udGVudHNSZWN0LmxvY2F0aW9uKCksIG1fdmlzaWJsZUNvbnRlbnRzUmVj
dCwgbV9jb250ZW50c1NpemUpOwogICAgIEZsb2F0UG9pbnQgcmVuZGVyZWRTY3JvbGxQb3NpdGlv
biA9IGJvdW5kZWRTY3JvbGxQb3NpdGlvbihtX3JlbmRlcmVkQ29udGVudHNTY3JvbGxQb3NpdGlv
biwgbV92aXNpYmxlQ29udGVudHNSZWN0LCBtX2NvbnRlbnRzU2l6ZSk7Ci0gICAgRmxvYXRTaXpl
IGRlbHRhID0gc2Nyb2xsUG9zaXRpb24gLSByZW5kZXJlZFNjcm9sbFBvc2l0aW9uOworICAgIEZs
b2F0U2l6ZSBkZWx0YSA9IHRvRmxvYXRTaXplKHNjcm9sbFBvc2l0aW9uIC0gcmVuZGVyZWRTY3Jv
bGxQb3NpdGlvbik7CiAKICAgICBMYXllclJhd1B0ck1hcDo6aXRlcmF0b3IgZW5kID0gbV9maXhl
ZExheWVycy5lbmQoKTsKICAgICBmb3IgKExheWVyUmF3UHRyTWFwOjppdGVyYXRvciBpdCA9IG1f
Zml4ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181854</attachid>
            <date>2013-01-08 23:02:23 -0800</date>
            <delta_ts>2013-01-09 16:10:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106408-20130109175927.patch</filename>
            <type>text/plain</type>
            <size>68635</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJiM2NjYzI4Y2E0Nzg1
OWI5NDA0MjhjYjgyNmFlZWMwZjAxMWE1NC4uOWUxYmM1MGQ3NWRjYWJhMzU3YzNiNDI4OWI0Y2Y0
NjRmZDRmODc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAxMy0wMS0wOCAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugc2Vt
YW50aWNzIG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBmcm9tIGFub3RoZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQwOAorCisg
ICAgICAgIFRoZSBjb21tb24gY2FzZSBvZiBzdWJ0cmFjdGluZyBvbmUgSW50L0Zsb2F0UG9pbnQg
ZnJvbSBhbm90aGVyIGlzIHRvCisgICAgICAgIG9idGFpbiBhIHJlbGF0aXZlIHBvc2l0aW9uIG9y
IHZlY3Rvciwgc28gdGhpcyBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5CisgICAgICAgIG9wZXJhdG9y
LSgpLiAgQ3JlYXRpbmcgYW4gSW50L0Zsb2F0U2l6ZSBmcm9tIHR3byBJbnQvRmxvYXRQb2ludHMg
aXMgYQorICAgICAgICBsZXNzIGNvbW1vbiBvcGVyYXRpb24gYW5kIHNob3VsZCBiZSBtYWRlIG1v
cmUgZXhwbGljaXQuIFRoaXMgY2hhbmdlIC4uLgorICAgICAgICAtIHJlbW92ZXMgJ0ludC9GbG9h
dFNpemUgb3BlcmF0b3ItKGNvbnN0IGludC9GbG9hdFBvaW50JiwgY29uc3QgSW50L0Zsb2F0UG9p
bnQmKScKKyAgICAgICAgLSBhZGRzICdJbnQvRmxvYXRQb2ludCBvcGVyYXRvci0oY29uc3QgaW50
L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJworICAgICAgICAtIGFkZHMgJ0lu
dC9GbG9hdFNpemUgSW50L0Zsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhjb25zdCBpbnQvRmxv
YXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisKKyAgICAgICAgQWxzbyBhZGRzICdm
bG9hdCBGbG9hdFBvaW50OjpkaXN0YW5jZShTcXVhcmVkKVRvUG9pbnQoY29uc3QgRmxvYXRQb2lu
dCYpJworICAgICAgICBhcyBhIGNvbnZlbmllbmNlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIG5vIGZ1bmN0aW9uYWwg
Y2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhp
dFRlc3QpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3RhbmNlVG9DbG9zZXN0Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlVG9GYXJ0
aGVzdENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpob3Jpem9udGFsRWxsaXBzZVJhZGl1cyk6
CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6Ym91bmRpbmdCb3gpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdCk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFn
SHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
Ojpjb21wdXRlU3RpY2t5T2Zmc2V0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxFdmVu
dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRQb2ludDo6c2NhbGUpOgorICAgICAgICAoRmxvYXRQb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDo6
ZGlzdGFuY2VTcXVhcmVkVG9Qb2ludCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZsb2F0UG9pbnQ6OmRpc3RhbmNlVG9Qb2ludCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRRdWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluYW50KToK
KyAgICAgICAgKFdlYkNvcmU6OmlzUG9pbnRJblRyaWFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6
OnJpZ2h0TW9zdENvcm5lclRvVmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0UXVhZDo6
aW50ZXJzZWN0c1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OmVuY2xvc2VkSW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyk6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNp
emUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRmxvYXRTaXplKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6dHJhbnNsYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6SW50UG9pbnQ6OmlzWmVybyk6CisgICAg
ICAgIChJbnRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6bGVuZ3RoU3F1YXJl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvci0pOgorICAgICAgICAoV2ViQ29yZTo6SW50
UG9pbnQ6OmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9GbG9hdFNpemUuY3BwLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEludFNpemUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6ZW5jbG9zaW5nSW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRy
YXZlcnNhbFN0YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdGhUcmF2ZXJzYWxTdGF0ZTo6
cHJvY2Vzc1NlZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NoYWRvd0JsdXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGlu
Z1JlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6OmNvbXB1dGVQaXhlbEFsaWdu
bWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4
ZWxzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTG9jYWxUcmlh
bmd1bGF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9vcEJsaW5uTG9jYWxUcmlhbmd1bGF0
b3I6OnRyaWFuZ3VsYXRlSGVscGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ncHUv
TG9vcEJsaW5uTWF0aFV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxvb3BCbGlubk1hdGhV
dGlsczo6YXBwcm94RXF1YWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6cm91
bmRUb0RldmljZVBpeGVscyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
ZHJhd0xpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldFJlbmRlcmluZ0NvbnRleHQ6OldpZGdldFJl
bmRlcmluZ0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxFbGFzdGljaXR5
Q29udHJvbGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEVsYXN0aWNpdHlDb250cm9s
bGVyOjpzbmFwUnViYmVyQmFuZFRpbWVyRmlyZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9FeGNs
dXNpb25Qb2x5Z29uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRldGVybWluYW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJv
eDo6Y2FsY3VsYXRlQXV0b3Njcm9sbERpcmVjdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1vZGVs
T2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFzZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdGVk
U2Nyb2xsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZy
b21Qb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6b2Zmc2V0RnJvbVJlc2l6
ZUNvcm5lcik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJH
ZW9tZXRyeSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJveDo6c2Nyb2xsVG93YXJkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6
cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTWFya2VyRGF0YTo6Y3VycmVudEFuZ2xlKToKKyAgICAgICAgKiBzdmcv
U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRoUGFyc2VyOjpkZWNvbXBvc2VB
cmNUb0N1YmljKToKKyAgICAgICAgKiBzdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2U6OlNWR1RyYW5zZm9ybURpc3RhbmNl
KToKKwogMjAxMy0wMS0wOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDb3B5LXBhc3RlIHByZXNlcnZlcyA8ZW1iZWQ+IHRhZ3MgY29udGFpbmluZyBhY3RpdmUg
Y29udGVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNGI3YjYzNzUxOTcwMjdjZThm
MTFhZGFkNjc2NDE2YzNlYmNjZjNkYS4uZjZjNTRiZTBkMGY4NzE2NjhlM2NhMjY2MzE5ODIzYzRk
NTUyMDg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAx
My0wMS0wOCAgU3RldmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBDaGFuZ2Ugc2VtYW50aWNzIG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBmcm9t
IGFub3RoZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNjQwOAorCisgICAgICAgIFRoZSBjb21tb24gY2FzZSBvZiBzdWJ0cmFjdGluZyBvbmUgSW50
L0Zsb2F0UG9pbnQgZnJvbSBhbm90aGVyIGlzIHRvCisgICAgICAgIG9idGFpbiBhIHJlbGF0aXZl
IHBvc2l0aW9uIG9yIHZlY3Rvciwgc28gdGhpcyBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5CisgICAg
ICAgIG9wZXJhdG9yLSgpLiAgQ3JlYXRpbmcgYW4gSW50L0Zsb2F0U2l6ZSBmcm9tIHR3byBJbnQv
RmxvYXRQb2ludHMgaXMgYQorICAgICAgICBsZXNzIGNvbW1vbiBvcGVyYXRpb24gYW5kIHNob3Vs
ZCBiZSBtYWRlIG1vcmUgZXhwbGljaXQuIFRoaXMgY2hhbmdlIC4uLgorICAgICAgICAtIHJlbW92
ZXMgJ0ludC9GbG9hdFNpemUgb3BlcmF0b3ItKGNvbnN0IGludC9GbG9hdFBvaW50JiwgY29uc3Qg
SW50L0Zsb2F0UG9pbnQmKScKKyAgICAgICAgLSBhZGRzICdJbnQvRmxvYXRQb2ludCBvcGVyYXRv
ci0oY29uc3QgaW50L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJworICAgICAg
ICAtIGFkZHMgJ0ludC9GbG9hdFNpemUgSW50L0Zsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhj
b25zdCBpbnQvRmxvYXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisKKyAgICAgICAg
QWxzbyBhZGRzICdmbG9hdCBGbG9hdFBvaW50OjpkaXN0YW5jZShTcXVhcmVkKVRvUG9pbnQoY29u
c3QgRmxvYXRQb2ludCYpJworICAgICAgICBhcyBhIGNvbnZlbmllbmNlLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0RyYWdDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudEltcGw6OnN0YXJ0RHJhZyk6CisgICAg
ICAgICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1w
bDo6bmVhcmVzdEZpbmRNYXRjaCk6CisKIDIwMTMtMDEtMDggIFRvbSBTZXBleiAgPHRzZXBlekBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29weS1wYXN0ZSBwcmVzZXJ2ZXMgPGVtYmVkPiB0YWdz
IGNvbnRhaW5pbmcgYWN0aXZlIGNvbnRlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODZkMjQ3MDljNDQ1OGVl
ZTk1N2FmZTdiNTBmZWEwMTc0MjZlZGNhZi4uYjAxNzY5ZmJhYzQ4YzIzNmRlOWUxY2M1MWE1ZmM5
N2MyYTQ5ZGVkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTA4ICBTdGV2
ZSBCbG9jayAgPHN0ZXZlYmxvY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSBzZW1h
bnRpY3Mgb2Ygc3VidHJhY3Rpbmcgb25lIEludC9GbG9hdFBvaW50IGZyb20gYW5vdGhlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDA4CisKKyAg
ICAgICAgVGhlIGNvbW1vbiBjYXNlIG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBm
cm9tIGFub3RoZXIgaXMgdG8KKyAgICAgICAgb2J0YWluIGEgcmVsYXRpdmUgcG9zaXRpb24gb3Ig
dmVjdG9yLCBzbyB0aGlzIHNob3VsZCBiZSBzdXBwb3J0ZWQgYnkKKyAgICAgICAgb3BlcmF0b3It
KCkuICBDcmVhdGluZyBhbiBJbnQvRmxvYXRTaXplIGZyb20gdHdvIEludC9GbG9hdFBvaW50cyBp
cyBhCisgICAgICAgIGxlc3MgY29tbW9uIG9wZXJhdGlvbiBhbmQgc2hvdWxkIGJlIG1hZGUgbW9y
ZSBleHBsaWNpdC4gVGhpcyBjaGFuZ2UgLi4uCisgICAgICAgIC0gcmVtb3ZlcyAnSW50L0Zsb2F0
U2l6ZSBvcGVyYXRvci0oY29uc3QgaW50L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2lu
dCYpJworICAgICAgICAtIGFkZHMgJ0ludC9GbG9hdFBvaW50IG9wZXJhdG9yLShjb25zdCBpbnQv
RmxvYXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisgICAgICAgIC0gYWRkcyAnSW50
L0Zsb2F0U2l6ZSBJbnQvRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGNvbnN0IGludC9GbG9h
dFBvaW50JiwgY29uc3QgSW50L0Zsb2F0UG9pbnQmKScKKworICAgICAgICBBbHNvIGFkZHMgJ2Zs
b2F0IEZsb2F0UG9pbnQ6OmRpc3RhbmNlKFNxdWFyZWQpVG9Qb2ludChjb25zdCBGbG9hdFBvaW50
JiknCisgICAgICAgIGFzIGEgY29udmVuaWVuY2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVy
OjphZGp1c3RQb3NpdGlvbkZvckZpeGVkTGF5ZXJzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjb21wdXRlUGl4ZWxB
bGlnbm1lbnQpOgorCiAyMDEzLTAxLTA4ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgU2lsZW5jZSBhIHNhbmRib3ggdmlvbGF0aW9uCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CmluZGV4IDZiZjk0MmM5ODU5NjY0MDBmZDFhMjFhZmM0MWM2YzkyNWVhY2Q5NmQuLmQ4
Y2ExNGRhOGVmYmY0MDg0Yzg0MGVjODY5OTAwMGY0Yzk3Nzk4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CkBAIC0xOTE3LDYgKzE5MTcsNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
cmllbnRhdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmNwcAorICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aC5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQppbmRleCBiYWUyODc4YTBiZmY0NWVjNWY5NjBjZGRlZGVkMDAzMWFiZWYxOTc3Li42ZjhmOGQ1
NDc1MGZhZjNlNzRjNTUwMWRhNzk2MWU2N2QyYmUwZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KQEAgLTU1NzgsNiArNTU3OCw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbnRTaXplLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemVIYXNoLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xhdGluMVRl
eHRJdGVyYXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDFmNGViYjZlMzI1M2E5MDU1YzE1Y2E1ODE4
NjcyZDEwYWYwYjY4NTguLjhiM2RjZjJiOGZmMDc3NzJhMGQ1Y2Q1N2Q3NzVlODk1YzJjYzgwZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtOTk5LDYgKzk5OSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwIFwK
KyAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0aC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCAyMmNkNzRlODhmYjRjYzU1MTVmNDUwNjNkZmIzZmZhMjJhN2UzMTgxLi42ZTgxN2I0Zjdm
ZDZhYzdiMDBmZTc3OGNiMzllOTliNmQyYjlmODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00NjI3
LDYgKzQ2MjcsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5j
cHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL1Jl
Z2lvbi5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJh
bnNmb3JtYXRpb25NYXRyaXguY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggOWI4MzE3OTA1Mjc4MmQ0ODRkYTg3N2UxZTI5ZjRmNWExYjU3
ZmUzYi4uYjRmM2NiMTM2YWE1Zjk2OWUzNTE4MDgzMTUxYTdhMjA4M2Q3ZWUzMyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI5NzkzLDYgKzI5
NzkzLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbnRTaXplLmNwcCIKKwkJCQkJPgorCQkJCTwvRmls
ZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXElu
dFNpemUuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDQ3MjI3MGMxODJhYjc1
ZTdiMDI3ZjQzNWYxZTI1ZmRiZjE3ZjcyMzQuLjU4ZGM2YjMwZGE4MGE5OGE1YTEzY2NkYjNjZTFi
NWFlNGFkODI0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMTUyMiw3ICsxNTIyLDcgQEAgQWNjZXNzaWJpbGl0
eU9iamVjdCogQWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0
KGNvbnN0IEludFAKICAgICAgICAgV2lkZ2V0KiB3aWRnZXQgPSB3aWRnZXRGb3JBdHRhY2htZW50
VmlldygpOwogICAgICAgICAvLyBOb3JtYWxpemUgdGhlIHBvaW50IGZvciB0aGUgd2lkZ2V0J3Mg
Ym91bmRzLgogICAgICAgICBpZiAod2lkZ2V0ICYmIHdpZGdldC0+aXNGcmFtZVZpZXcoKSkKLSAg
ICAgICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCktPmFj
Y2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KHBvaW50IC0gd2lkZ2V0LT5mcmFtZVJlY3QoKS5s
b2NhdGlvbigpKSk7CisgICAgICAgICAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZSh3aWRnZXQpLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChwb2ludCAtIHdpZGdldC0+ZnJhbWVS
ZWN0KCkubG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAgIC8vIENoZWNrIGlmIHRoZXJlIGFy
ZSBhbnkgbW9jayBlbGVtZW50cyB0aGF0IG5lZWQgdG8gYmUgaGFuZGxlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCmluZGV4IDQyZTU1NzYwY2VlZTAzY2M3YjhmNzA0Mzg2NWZjNGNkYmUyZWY4NmUuLjAz
ZWViNGU0MGFlZDAxZjMxNzkyY2Y0MWJhNTg2NzBiOTNlMGU5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcApAQCAtMjE3MCw4ICsyMTcwLDggQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhpdFRlc3QoY29uc3QgSW4KICAgICBp
ZiAoIXJlbW90ZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgSW50U2l6ZSBvZmZzZXQg
PSBwb2ludCAtIHJvdW5kZWRJbnRQb2ludChib3VuZGluZ0JveFJlY3QoKS5sb2NhdGlvbigpKTsK
LSAgICByZXR1cm4gcmVtb3RlLT5hY2Nlc3NpYmlsaXR5SGl0VGVzdChJbnRQb2ludChvZmZzZXQp
KTsKKyAgICBJbnRQb2ludCBvZmZzZXQgPSBwb2ludCAtIHJvdW5kZWRJbnRQb2ludChib3VuZGlu
Z0JveFJlY3QoKS5sb2NhdGlvbigpKTsKKyAgICByZXR1cm4gcmVtb3RlLT5hY2Nlc3NpYmlsaXR5
SGl0VGVzdChvZmZzZXQpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQm
IHBvaW50KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCmluZGV4
IDdkYzIyYmJiZDhkMDNhN2U0Mjk4ZGY4ZGMxN2U3NGIzMmY0MGY0MTMuLjVmNDlmMWVmMGI0ZTQ0
Y2M0NzkyMGFlYjIyYTJlNGMyNzdkN2EyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFkaWVudFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGll
bnRWYWx1ZS5jcHAKQEAgLTE5MSw4ICsxOTEsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFsdWU6OmFk
ZFN0b3BzKEdyYWRpZW50KiBncmFkaWVudCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgUmVuZAog
ICAgICAgICAgICAgICAgIHN0b3BzW2ldLm9mZnNldCA9IHN0b3AubV9wb3NpdGlvbi0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpIC8gMTAwOwogICAgICAg
ICAgICAgZWxzZSBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5pc0xlbmd0aCgpIHx8IHN0b3AubV9wb3Np
dGlvbi0+aXNDYWxjdWxhdGVkUGVyY2VudGFnZVdpdGhMZW5ndGgoKSkgewogICAgICAgICAgICAg
ICAgIGlmICghY29tcHV0ZWRHcmFkaWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBG
bG9hdFNpemUgZ3JhZGllbnRTaXplKGdyYWRpZW50U3RhcnQgLSBncmFkaWVudEVuZCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGdyYWRpZW50TGVuZ3RoID0gZ3JhZGllbnRTaXplLmRpYWdvbmFsTGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50TGVuZ3RoID0gZ3JhZGllbnRTdGFy
dC5kaXN0YW5jZVRvUG9pbnQoZ3JhZGllbnRFbmQpOwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBmbG9hdCBsZW5ndGg7CiAgICAgICAgICAgICAgICAgaWYgKHN0b3AubV9wb3Np
dGlvbi0+aXNMZW5ndGgoKSkKQEAgLTI4MSw4ICsyODAsNyBAQCB2b2lkIENTU0dyYWRpZW50VmFs
dWU6OmFkZFN0b3BzKEdyYWRpZW50KiBncmFkaWVudCwgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwg
UmVuZAogICAgICAgICAgICAgLy8gdG8gcmVwZWF0IG91dCB0byB0aGUgY29ybmVycyBvZiB0aGUg
Ym94LgogICAgICAgICAgICAgaWYgKGlzUmFkaWFsR3JhZGllbnQoKSkgewogICAgICAgICAgICAg
ICAgIGlmICghY29tcHV0ZWRHcmFkaWVudExlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBG
bG9hdFNpemUgZ3JhZGllbnRTaXplKGdyYWRpZW50U3RhcnQgLSBncmFkaWVudEVuZCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGdyYWRpZW50TGVuZ3RoID0gZ3JhZGllbnRTaXplLmRpYWdvbmFsTGVu
Z3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGdyYWRpZW50TGVuZ3RoID0gZ3JhZGllbnRTdGFy
dC5kaXN0YW5jZVRvUG9pbnQoZ3JhZGllbnRFbmQpOwogICAgICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgICAgIGlmIChtYXhMZW5ndGhGb3JSZXBlYXQgPiBncmFkaWVudExlbmd0aCkKQEAg
LTc2NiwxNiArNzY0LDE2IEBAIGZsb2F0IENTU1JhZGlhbEdyYWRpZW50VmFsdWU6OnJlc29sdmVS
YWRpdXMoQ1NTUHJpbWl0aXZlVmFsdWUqIHJhZGl1cywgUmVuZGVyU3R5CiBzdGF0aWMgZmxvYXQg
ZGlzdGFuY2VUb0Nsb3Nlc3RDb3JuZXIoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3QgRmxvYXRT
aXplJiBzaXplLCBGbG9hdFBvaW50JiBjb3JuZXIpCiB7CiAgICAgRmxvYXRQb2ludCB0b3BMZWZ0
OwotICAgIGZsb2F0IHRvcExlZnREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0gdG9wTGVmdCkuZGlh
Z29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCB0b3BMZWZ0RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Q
b2ludCh0b3BMZWZ0KTsKIAogICAgIEZsb2F0UG9pbnQgdG9wUmlnaHQoc2l6ZS53aWR0aCgpLCAw
KTsKLSAgICBmbG9hdCB0b3BSaWdodERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSB0b3BSaWdodCku
ZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCB0b3BSaWdodERpc3RhbmNlID0gcC5kaXN0YW5j
ZVRvUG9pbnQodG9wUmlnaHQpOwogCiAgICAgRmxvYXRQb2ludCBib3R0b21MZWZ0KDAsIHNpemUu
aGVpZ2h0KCkpOwotICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0g
Ym90dG9tTGVmdCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCBib3R0b21MZWZ0RGlzdGFu
Y2UgPSBwLmRpc3RhbmNlVG9Qb2ludChib3R0b21MZWZ0KTsKIAogICAgIEZsb2F0UG9pbnQgYm90
dG9tUmlnaHQoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBmbG9hdCBib3R0b21S
aWdodERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21SaWdodCkuZGlhZ29uYWxMZW5ndGgo
KTsKKyAgICBmbG9hdCBib3R0b21SaWdodERpc3RhbmNlID0gcC5kaXN0YW5jZVRvUG9pbnQoYm90
dG9tUmlnaHQpOwogCiAgICAgY29ybmVyID0gdG9wTGVmdDsKICAgICBmbG9hdCBtaW5EaXN0YW5j
ZSA9IHRvcExlZnREaXN0YW5jZTsKQEAgLTc5OSwxNiArNzk3LDE2IEBAIHN0YXRpYyBmbG9hdCBk
aXN0YW5jZVRvQ2xvc2VzdENvcm5lcihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFNp
emUmIHNpemUsCiBzdGF0aWMgZmxvYXQgZGlzdGFuY2VUb0ZhcnRoZXN0Q29ybmVyKGNvbnN0IEZs
b2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgRmxvYXRQb2ludCYgY29ybmVyKQog
ewogICAgIEZsb2F0UG9pbnQgdG9wTGVmdDsKLSAgICBmbG9hdCB0b3BMZWZ0RGlzdGFuY2UgPSBG
bG9hdFNpemUocCAtIHRvcExlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9wTGVm
dERpc3RhbmNlID0gcC5kaXN0YW5jZVRvUG9pbnQodG9wTGVmdCk7CiAKICAgICBGbG9hdFBvaW50
IHRvcFJpZ2h0KHNpemUud2lkdGgoKSwgMCk7Ci0gICAgZmxvYXQgdG9wUmlnaHREaXN0YW5jZSA9
IEZsb2F0U2l6ZShwIC0gdG9wUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgdG9w
UmlnaHREaXN0YW5jZSA9IHAuZGlzdGFuY2VUb1BvaW50KHRvcFJpZ2h0KTsKIAogICAgIEZsb2F0
UG9pbnQgYm90dG9tTGVmdCgwLCBzaXplLmhlaWdodCgpKTsKLSAgICBmbG9hdCBib3R0b21MZWZ0
RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIGJvdHRvbUxlZnQpLmRpYWdvbmFsTGVuZ3RoKCk7Cisg
ICAgZmxvYXQgYm90dG9tTGVmdERpc3RhbmNlID0gcC5kaXN0YW5jZVRvUG9pbnQoYm90dG9tTGVm
dCk7CiAKICAgICBGbG9hdFBvaW50IGJvdHRvbVJpZ2h0KHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7Ci0gICAgZmxvYXQgYm90dG9tUmlnaHREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0gYm90
dG9tUmlnaHQpLmRpYWdvbmFsTGVuZ3RoKCk7CisgICAgZmxvYXQgYm90dG9tUmlnaHREaXN0YW5j
ZSA9IHAuZGlzdGFuY2VUb1BvaW50KGJvdHRvbVJpZ2h0KTsKIAogICAgIGNvcm5lciA9IHRvcExl
ZnQ7CiAgICAgZmxvYXQgbWF4RGlzdGFuY2UgPSB0b3BMZWZ0RGlzdGFuY2U7CkBAIC04MzEsMTIg
KzgyOSwxMiBAQCBzdGF0aWMgZmxvYXQgZGlzdGFuY2VUb0ZhcnRoZXN0Q29ybmVyKGNvbnN0IEZs
b2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZQogCiAvLyBDb21wdXRlIGhvcml6b250
YWwgcmFkaXVzIG9mIGVsbGlwc2Ugd2l0aCBjZW50ZXIgYXQgMCwwIHdoaWNoIHBhc3NlcyB0aHJv
dWdoIHAsIGFuZCBoYXMKIC8vIHdpZHRoL2hlaWdodCBnaXZlbiBieSBhc3BlY3RSYXRpby4KLXN0
YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVsbGlwc2VSYWRpdXMoY29uc3QgRmxvYXRTaXpl
JiBwLCBmbG9hdCBhc3BlY3RSYXRpbykKK3N0YXRpYyBpbmxpbmUgZmxvYXQgaG9yaXpvbnRhbEVs
bGlwc2VSYWRpdXMoY29uc3QgRmxvYXRQb2ludCYgcCwgZmxvYXQgYXNwZWN0UmF0aW8pCiB7CiAg
ICAgLy8geF4yL2FeMiArIHleMi9iXjIgPSAxCiAgICAgLy8gYS9iID0gYXNwZWN0UmF0aW8sIGIg
PSBhL2FzcGVjdFJhdGlvCiAgICAgLy8gYSA9IHNxcnQoeF4yICsgeV4yLygxL3JeMikpCi0gICAg
cmV0dXJuIHNxcnRmKHAud2lkdGgoKSAqIHAud2lkdGgoKSArIChwLmhlaWdodCgpICogcC5oZWln
aHQoKSkgLyAoMSAvIChhc3BlY3RSYXRpbyAqIGFzcGVjdFJhdGlvKSkpOworICAgIHJldHVybiBz
cXJ0ZihwLngoKSAqIHAueCgpICsgKHAueSgpICogcC55KCkpIC8gKDEgLyAoYXNwZWN0UmF0aW8g
KiBhc3BlY3RSYXRpbykpKTsKIH0KIAogLy8gRklYTUU6IHNoYXJlIGNvZGUgd2l0aCB0aGUgbGlu
ZWFyIHZlcnNpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCAyMTVhOTE0
YTMzNjY4YWRmM2I1OWM4NGY1ZmQyOTJhYzkyNWIxNDg0Li4xMzE4NDNjNzdhZjY3ZDcyYTQwYzFl
ZmI5NDQ1NTc3MWVmMTRjMjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBA
IC05NDMsNyArOTQzLDcgQEAgTGF5b3V0UmVjdCBDb250YWluZXJOb2RlOjpib3VuZGluZ0JveCgp
IGNvbnN0CiAgICAgICAgICAgICB1cHBlckxlZnQgPSBsb3dlclJpZ2h0OwogICAgIH0gCiAKLSAg
ICByZXR1cm4gZW5jbG9zaW5nTGF5b3V0UmVjdChGbG9hdFJlY3QodXBwZXJMZWZ0LCBsb3dlclJp
Z2h0LmV4cGFuZGVkVG8odXBwZXJMZWZ0KSAtIHVwcGVyTGVmdCkpOworICAgIHJldHVybiBlbmNs
b3NpbmdMYXlvdXRSZWN0KEZsb2F0UmVjdCh1cHBlckxlZnQsIEZsb2F0U2l6ZTo6ZnJvbUNvcm5l
clBvaW50cyhsb3dlclJpZ2h0LCB1cHBlckxlZnQpLmV4cGFuZGVkVG8oRmxvYXRTaXplKCkpKSk7
CiB9CiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6c2V0Rm9jdXMoYm9vbCByZWNlaXZlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuY3BwCmluZGV4IDdkZDA5MTYzZTU4OTllYjMxZDYzNzdhNmVkMTM0NzA2MzBkMjgxMjUuLjgz
MzZlOGUxOGJjYzM1YmVhN2FhZGE4OWI5ZDc4MDdiNWM5ODdkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcApA
QCAtMTYyMCw3ICsxNjIwLDcgQEAgdGVtcGxhdGU8Y2xhc3MgVD4gSW50UmVjdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmUKICAgICBJbnRQb2lu
dCBvcmlnaW5hbExvY2F0aW9uID0gYnVmZmVyUmVjdC5sb2NhdGlvbigpOwogICAgIGJ1ZmZlclJl
Y3QuaW50ZXJzZWN0KGNhbnZhc1JlY3QpOwogICAgIGlmIChjcm9wcGVkT2Zmc2V0KQotICAgICAg
ICAqY3JvcHBlZE9mZnNldCA9IG9yaWdpbmFsTG9jYXRpb24gLSBidWZmZXJSZWN0LmxvY2F0aW9u
KCk7CisgICAgICAgICpjcm9wcGVkT2Zmc2V0ID0gSW50U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhv
cmlnaW5hbExvY2F0aW9uLCBidWZmZXJSZWN0LmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBidWZm
ZXJSZWN0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKaW5kZXggMDIxN2Ew
MmM4NGM0MzA5NWFiYmMzNTc4MDQ0ZGJhZmJiMTRiYzM2Zi4uMjRlODNiNGJlODA3NjdlYTc0NmU5
OTViYjAzMjYxOWRjNmVjZGQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApA
QCAtMzE5MCw3ICszMTkwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRyYWdIeXN0ZXJlc2lzRXhj
ZWVkZWQoY29uc3QgRmxvYXRQb2ludCYgZHJhZ1ZpZXdwb3J0TG9jYXRpb24KICAgICBpZiAoIXZp
ZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBJbnRQb2ludCBkcmFnTG9jYXRpb24gPSB2
aWV3LT53aW5kb3dUb0NvbnRlbnRzKGZsb29yZWRJbnRQb2ludChkcmFnVmlld3BvcnRMb2NhdGlv
bikpOwotICAgIEludFNpemUgZGVsdGEgPSBkcmFnTG9jYXRpb24gLSBtX21vdXNlRG93blBvczsK
KyAgICBJbnRQb2ludCBkZWx0YSA9IGRyYWdMb2NhdGlvbiAtIG1fbW91c2VEb3duUG9zOwogICAg
IAogICAgIGludCB0aHJlc2hvbGQgPSBHZW5lcmFsRHJhZ0h5c3RlcmVzaXM7CiAgICAgc3dpdGNo
IChkcmFnU3RhdGUoKS5tX2RyYWdUeXBlKSB7CkBAIC0zMjEwLDcgKzMyMTAsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBvaW50JiBkcmFn
Vmlld3BvcnRMb2NhdGlvbgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAg
ICAgCi0gICAgcmV0dXJuIGFicyhkZWx0YS53aWR0aCgpKSA+PSB0aHJlc2hvbGQgfHwgYWJzKGRl
bHRhLmhlaWdodCgpKSA+PSB0aHJlc2hvbGQ7CisgICAgcmV0dXJuIGFicyhkZWx0YS54KCkpID49
IHRocmVzaG9sZCB8fCBhYnMoZGVsdGEueSgpKSA+PSB0aHJlc2hvbGQ7CiB9CiAgICAgCiB2b2lk
IEV2ZW50SGFuZGxlcjo6ZnJlZUNsaXBib2FyZCgpCkBAIC0zMzUzLDggKzMzNTMsOCBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlRHJhZyhjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1
bHRzJiBldmVudCwgQ2hlY2tEcgogICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBkcmFnU3RhdGUoKS5tX2RyYWdTcmMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3Jtcy4K
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IGFic1BvcyA9IHJlbmRlcmVyLT5sb2NhbFRvQWJz
b2x1dGUoKTsKLSAgICAgICAgICAgICAgICBJbnRTaXplIGRlbHRhID0gbV9tb3VzZURvd25Qb3Mg
LSByb3VuZGVkSW50UG9pbnQoYWJzUG9zKTsKLSAgICAgICAgICAgICAgICBkcmFnU3RhdGUoKS5t
X2RyYWdDbGlwYm9hcmQtPnNldERyYWdJbWFnZUVsZW1lbnQoZHJhZ1N0YXRlKCkubV9kcmFnU3Jj
LmdldCgpLCBJbnRQb2ludChkZWx0YSkpOworICAgICAgICAgICAgICAgIEludFBvaW50IGRlbHRh
ID0gbV9tb3VzZURvd25Qb3MgLSByb3VuZGVkSW50UG9pbnQoYWJzUG9zKTsKKyAgICAgICAgICAg
ICAgICBkcmFnU3RhdGUoKS5tX2RyYWdDbGlwYm9hcmQtPnNldERyYWdJbWFnZUVsZW1lbnQoZHJh
Z1N0YXRlKCkubV9kcmFnU3JjLmdldCgpLCBkZWx0YSk7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIC8vIFRoZSByZW5kZXJlciBoYXMgZGlzYXBwZWFyZWQsIHRoaXMgY2Fu
IGhhcHBlbiBpZiB0aGUgb25TdGFydERyYWcgaGFuZGxlciBoYXMgaGlkZGVuCiAgICAgICAgICAg
ICAgICAgLy8gdGhlIGVsZW1lbnQgaW4gc29tZSB3YXkuICBJbiB0aGlzIGNhc2Ugd2UganVzdCBr
aWxsIHRoZSBkcmFnLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCmluZGV4IDBiYmM2NTc3ZmQwMmQwMTBiYWQzOTZmMWQ5
MDIxMDgxYmM4ODE3NDAuLjkwZTQxZTU0YzBhMWE4Y2I3ODgyYmExNDQ2OGQwY2ExMTAxYTk1ZGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0
cmFpbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b25zdHJhaW50cy5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgRmxvYXRTaXplIFN0aWNreVBvc2l0aW9u
Vmlld3BvcnRDb25zdHJhaW50czo6Y29tcHV0ZVN0aWNreU9mZnNldChjb25zdCBGbG9hdFJlY3QK
ICAgICAgICAgYm94UmVjdC5tb3ZlKDAsIHRvcERlbHRhKTsKICAgICB9CiAKLSAgICByZXR1cm4g
Ym94UmVjdC5sb2NhdGlvbigpIC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QubG9jYXRpb24oKTsK
KyAgICByZXR1cm4gRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGJveFJlY3QubG9jYXRpb24o
KSwgbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QubG9jYXRpb24oKSk7CiB9CiAKIEZsb2F0UG9pbnQg
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpsYXllclBvc2l0aW9uRm9yVmlld3Bv
cnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0KSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCmluZGV4IDk3ODYzYzRkMThlZTFjNDYxZWJj
YmNiNmJkZTI0YzViMzY0MGYwYWEuLjEzNjgyYTgwYzIxZjU1NDMyOWRjNzQ1NjcxNjhmZDc0NTk0
NjA0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKQEAg
LTk3LDEyICs5NywxMiBAQCBib29sIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKICAgICBTY3JvbGxHcmFudWxhcml0eSBncmFudWxh
cml0eSA9IFNjcm9sbEJ5UGl4ZWw7CiAjZW5kaWYKIAotICAgIEludFNpemUgbWF4Rm9yd2FyZFNj
cm9sbERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS0+bWF4aW11bVNjcm9sbFBvc2l0aW9uKCkgLSBt
X3Njcm9sbGFibGVBcmVhLT5zY3JvbGxQb3NpdGlvbigpOwotICAgIEludFNpemUgbWF4QmFja3dh
cmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgLSBtX3Nj
cm9sbGFibGVBcmVhLT5taW5pbXVtU2Nyb2xsUG9zaXRpb24oKTsKLSAgICBpZiAoKGRlbHRhWCA8
IDAgJiYgbWF4Rm9yd2FyZFNjcm9sbERlbHRhLndpZHRoKCkgPiAwKQotICAgICAgICB8fCAoZGVs
dGFYID4gMCAmJiBtYXhCYWNrd2FyZFNjcm9sbERlbHRhLndpZHRoKCkgPiAwKQotICAgICAgICB8
fCAoZGVsdGFZIDwgMCAmJiBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAwKQotICAg
ICAgICB8fCAoZGVsdGFZID4gMCAmJiBtYXhCYWNrd2FyZFNjcm9sbERlbHRhLmhlaWdodCgpID4g
MCkpIHsKKyAgICBJbnRQb2ludCBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGFibGVB
cmVhLT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEtPnNjcm9sbFBv
c2l0aW9uKCk7CisgICAgSW50UG9pbnQgbWF4QmFja3dhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xs
YWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCkgLSBtX3Njcm9sbGFibGVBcmVhLT5taW5pbXVtU2Ny
b2xsUG9zaXRpb24oKTsKKyAgICBpZiAoKGRlbHRhWCA8IDAgJiYgbWF4Rm9yd2FyZFNjcm9sbERl
bHRhLngoKSA+IDApCisgICAgICAgIHx8IChkZWx0YVggPiAwICYmIG1heEJhY2t3YXJkU2Nyb2xs
RGVsdGEueCgpID4gMCkKKyAgICAgICAgfHwgKGRlbHRhWSA8IDAgJiYgbWF4Rm9yd2FyZFNjcm9s
bERlbHRhLnkoKSA+IDApCisgICAgICAgIHx8IChkZWx0YVkgPiAwICYmIG1heEJhY2t3YXJkU2Ny
b2xsRGVsdGEueSgpID4gMCkpIHsKICAgICAgICAgaGFuZGxlZCA9IHRydWU7CiAKICAgICAgICAg
aWYgKGRlbHRhWSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRQb2ludC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludC5oCmluZGV4IDExMWUyMzE4MjYzZGE4MmE1OWQzNWY3M2I5MmVkN2M3NGIwM2IyMTEuLjZh
MjBkYmI5YWNlMmIyZDAyM2RiZDIzYjE5NjkyMGEyNzU0M2Q5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgKQEAgLTEyMCw2ICsxMjAsMTAgQEAg
cHVibGljOgogICAgICAgICBtX3ggKz0gYS54KCk7CiAgICAgICAgIG1feSArPSBhLnkoKTsKICAg
ICB9CisgICAgdm9pZCBzY2FsZShmbG9hdCBzKQorICAgIHsKKyAgICAgICAgc2NhbGUocywgcyk7
CisgICAgfQogICAgIHZvaWQgc2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KQogICAgIHsKICAgICAg
ICAgbV94ICo9IHN4OwpAQCAtMTUwLDYgKzE1NCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IEZsb2F0UG9pbnQobV95LCBtX3gpOwogICAgIH0KIAorICAgIGZsb2F0IGRpc3RhbmNlU3F1YXJl
ZFRvUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OworICAgIGZsb2F0IGRpc3RhbmNlVG9Q
b2ludChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CisKICNpZiBVU0UoQ0cpIHx8IFVTRShTS0lB
X09OX01BQ19DSFJPTUlVTSkKICAgICBGbG9hdFBvaW50KGNvbnN0IENHUG9pbnQmKTsKICAgICBv
cGVyYXRvciBDR1BvaW50KCkgY29uc3Q7CkBAIC0yMTIsOSArMjE5LDkgQEAgaW5saW5lIEZsb2F0
UG9pbnQgb3BlcmF0b3IrKGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIp
CiAgICAgcmV0dXJuIEZsb2F0UG9pbnQoYS54KCkgKyBiLngoKSwgYS55KCkgKyBiLnkoKSk7CiB9
CiAKLWlubGluZSBGbG9hdFNpemUgb3BlcmF0b3ItKGNvbnN0IEZsb2F0UG9pbnQmIGEsIGNvbnN0
IEZsb2F0UG9pbnQmIGIpCitpbmxpbmUgRmxvYXRQb2ludCBvcGVyYXRvci0oY29uc3QgRmxvYXRQ
b2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKIHsKLSAgICByZXR1cm4gRmxvYXRTaXplKGEu
eCgpIC0gYi54KCksIGEueSgpIC0gYi55KCkpOworICAgIHJldHVybiBGbG9hdFBvaW50KGEueCgp
IC0gYi54KCksIGEueSgpIC0gYi55KCkpOwogfQogCiBpbmxpbmUgRmxvYXRQb2ludCBvcGVyYXRv
ci0oY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQpAQCAtMjczLDYgKzI4
MCwxNiBAQCBmbG9hdCBmaW5kU2xvcGUoY29uc3QgRmxvYXRQb2ludCYgcDEsIGNvbnN0IEZsb2F0
UG9pbnQmIHAyLCBmbG9hdCYgYyk7CiAvLyBGaW5kIHBvaW50IHdoZXJlIGxpbmVzIHRocm91Z2gg
dGhlIHR3byBwYWlycyBvZiBwb2ludHMgaW50ZXJzZWN0LiBSZXR1cm5zIGZhbHNlIGlmIHRoZSBs
aW5lcyBkb24ndCBpbnRlcnNlY3QuCiBib29sIGZpbmRJbnRlcnNlY3Rpb24oY29uc3QgRmxvYXRQ
b2ludCYgcDEsIGNvbnN0IEZsb2F0UG9pbnQmIHAyLCBjb25zdCBGbG9hdFBvaW50JiBkMSwgY29u
c3QgRmxvYXRQb2ludCYgZDIsIEZsb2F0UG9pbnQmIGludGVyc2VjdGlvbik7CiAKK2lubGluZSBm
bG9hdCBGbG9hdFBvaW50OjpkaXN0YW5jZVNxdWFyZWRUb1BvaW50KGNvbnN0IEZsb2F0UG9pbnQm
IHBvaW50KSBjb25zdAoreworICAgIHJldHVybiAoKCp0aGlzKSAtIHBvaW50KS5sZW5ndGhTcXVh
cmVkKCk7Cit9CisKK2lubGluZSBmbG9hdCBGbG9hdFBvaW50OjpkaXN0YW5jZVRvUG9pbnQoY29u
c3QgRmxvYXRQb2ludCYgcG9pbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuICgoKnRoaXMpIC0gcG9p
bnQpLmxlbmd0aCgpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAKaW5kZXggZmM5ZDYxM2VjN2I5OTUxZDNhZTdmMWVm
NDI2MjMyYjk0ODZjMmIyZS4uMzlmMjcyOTNmNDRiMjQ5OTczN2I4NDY4MGQ1YmU5YjFjYTU3N2I0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRRdWFk
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3Bw
CkBAIC00NywyOSArNDcsMjQgQEAgc3RhdGljIGlubGluZSBmbG9hdCBtYXg0KGZsb2F0IGEsIGZs
b2F0IGIsIGZsb2F0IGMsIGZsb2F0IGQpCiAgICAgcmV0dXJuIG1heChtYXgoYSwgYiksIG1heChj
LCBkKSk7CiB9CiAKLWlubGluZSBmbG9hdCBkb3QoY29uc3QgRmxvYXRTaXplJiBhLCBjb25zdCBG
bG9hdFNpemUmIGIpCitpbmxpbmUgZmxvYXQgZGV0ZXJtaW5hbnQoY29uc3QgRmxvYXRQb2ludCYg
YSwgY29uc3QgRmxvYXRQb2ludCYgYikKIHsKLSAgICByZXR1cm4gYS53aWR0aCgpICogYi53aWR0
aCgpICsgYS5oZWlnaHQoKSAqIGIuaGVpZ2h0KCk7Ci19Ci0KLWlubGluZSBmbG9hdCBkZXRlcm1p
bmFudChjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6ZSYgYikKLXsKLSAgICByZXR1
cm4gYS53aWR0aCgpICogYi5oZWlnaHQoKSAtIGEuaGVpZ2h0KCkgKiBiLndpZHRoKCk7CisgICAg
cmV0dXJuIGEueCgpICogYi55KCkgLSBhLnkoKSAqIGIueCgpOwogfQogCiBpbmxpbmUgYm9vbCBp
c1BvaW50SW5UcmlhbmdsZShjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFBvaW50JiB0
MSwgY29uc3QgRmxvYXRQb2ludCYgdDIsIGNvbnN0IEZsb2F0UG9pbnQmIHQzKQogewogICAgIC8v
IENvbXB1dGUgdmVjdG9ycyAgICAgICAgCi0gICAgRmxvYXRTaXplIHYwID0gdDMgLSB0MTsKLSAg
ICBGbG9hdFNpemUgdjEgPSB0MiAtIHQxOwotICAgIEZsb2F0U2l6ZSB2MiA9IHAgLSB0MTsKKyAg
ICBGbG9hdFBvaW50IHYwID0gdDMgLSB0MTsKKyAgICBGbG9hdFBvaW50IHYxID0gdDIgLSB0MTsK
KyAgICBGbG9hdFBvaW50IHYyID0gcCAtIHQxOwogICAgIAogICAgIC8vIENvbXB1dGUgZG90IHBy
b2R1Y3RzCi0gICAgZmxvYXQgZG90MDAgPSBkb3QodjAsIHYwKTsKLSAgICBmbG9hdCBkb3QwMSA9
IGRvdCh2MCwgdjEpOwotICAgIGZsb2F0IGRvdDAyID0gZG90KHYwLCB2Mik7Ci0gICAgZmxvYXQg
ZG90MTEgPSBkb3QodjEsIHYxKTsKLSAgICBmbG9hdCBkb3QxMiA9IGRvdCh2MSwgdjIpOworICAg
IGZsb2F0IGRvdDAwID0gdjAuZG90KHYwKTsKKyAgICBmbG9hdCBkb3QwMSA9IHYwLmRvdCh2MSk7
CisgICAgZmxvYXQgZG90MDIgPSB2MC5kb3QodjIpOworICAgIGZsb2F0IGRvdDExID0gdjEuZG90
KHYxKTsKKyAgICBmbG9hdCBkb3QxMiA9IHYxLmRvdCh2Mik7CiAKICAgICAvLyBDb21wdXRlIGJh
cnljZW50cmljIGNvb3JkaW5hdGVzCiAgICAgZmxvYXQgaW52RGVub20gPSAxLjBmIC8gKGRvdDAw
ICogZG90MTEgLSBkb3QwMSAqIGRvdDAxKTsKQEAgLTExMyw3ICsxMDgsNyBAQCBib29sIEZsb2F0
UXVhZDo6Y29udGFpbnNRdWFkKGNvbnN0IEZsb2F0UXVhZCYgb3RoZXIpIGNvbnN0CiAgICAgcmV0
dXJuIGNvbnRhaW5zUG9pbnQob3RoZXIucDEoKSkgJiYgY29udGFpbnNQb2ludChvdGhlci5wMigp
KSAmJiBjb250YWluc1BvaW50KG90aGVyLnAzKCkpICYmIGNvbnRhaW5zUG9pbnQob3RoZXIucDQo
KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRmxvYXRQb2ludCByaWdodE1vc3RDb3JuZXJUb1ZlY3Rv
cihjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgdmVjdG9yKQorc3RhdGlj
IGlubGluZSBGbG9hdFBvaW50IHJpZ2h0TW9zdENvcm5lclRvVmVjdG9yKGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCwgY29uc3QgRmxvYXRQb2ludCYgdmVjdG9yKQogewogICAgIC8vIFJldHVybiB0aGUg
Y29ybmVyIG9mIHRoZSByZWN0YW5nbGUgdGhhdCBpZiBpdCBpcyB0byB0aGUgbGVmdCBvZiB0aGUg
dmVjdG9yCiAgICAgLy8gd291bGQgbWVhbiBhbGwgb2YgdGhlIHJlY3RhbmdsZSBpcyB0byB0aGUg
bGVmdCBvZiB0aGUgdmVjdG9yLgpAQCAtMTI1LDExICsxMjAsMTEgQEAgc3RhdGljIGlubGluZSBG
bG9hdFBvaW50IHJpZ2h0TW9zdENvcm5lclRvVmVjdG9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwg
Y29uc3QgRmwKICAgICAvLyAgIFEKICAgICAvLwogICAgIEZsb2F0UG9pbnQgcG9pbnQ7Ci0gICAg
aWYgKHZlY3Rvci53aWR0aCgpID49IDApCisgICAgaWYgKHZlY3Rvci54KCkgPj0gMCkKICAgICAg
ICAgcG9pbnQuc2V0WShyZWN0Lm1heFkoKSk7CiAgICAgZWxzZQogICAgICAgICBwb2ludC5zZXRZ
KHJlY3QueSgpKTsKLSAgICBpZiAodmVjdG9yLmhlaWdodCgpID49IDApCisgICAgaWYgKHZlY3Rv
ci55KCkgPj0gMCkKICAgICAgICAgcG9pbnQuc2V0WChyZWN0LngoKSk7CiAgICAgZWxzZQogICAg
ICAgICBwb2ludC5zZXRYKHJlY3QubWF4WCgpKTsKQEAgLTE0MSw3ICsxMzYsNyBAQCBib29sIEZs
b2F0UXVhZDo6aW50ZXJzZWN0c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSBjb25zdAogICAg
IC8vIEZvciBlYWNoIHNpZGUgb2YgdGhlIHF1YWQgY2xvY2t3aXNlIHdlIGNoZWNrIGlmIHRoZSBy
ZWN0YW5nbGUgaXMgdG8gdGhlIGxlZnQgb2YgaXQKICAgICAvLyBzaW5jZSBvbmx5IGNvbnRlbnQg
b24gdGhlIHJpZ2h0IGNhbiBvbmxhcCB3aXRoIHRoZSBxdWFkLgogICAgIC8vIFRoaXMgb25seSB3
b3JrcyBpZiB0aGUgcXVhZCBpcyBjb252ZXguCi0gICAgRmxvYXRTaXplIHYxLCB2MiwgdjMsIHY0
OworICAgIEZsb2F0UG9pbnQgdjEsIHYyLCB2MywgdjQ7CiAKICAgICAvLyBFbnN1cmUgd2UgdXNl
IGNsb2Nrd2lzZSB2ZWN0b3JzLgogICAgIGlmICghaXNDb3VudGVyY2xvY2t3aXNlKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJlY3QuY3BwCmluZGV4IGVk
Y2U4YTI1YTNhNWIwN2E0MDEzMDg1Y2IxMGE4YjRiMDA2NWQ2MTguLmQyYmZhZjg2ZGVkNjExYTA2
ZjM4MDUzYzc4MWE3N2I1ZGI5YTc0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSZWN0LmNwcApAQCAtMjI3LDE0ICsyMjcsMTQgQEAgSW50UmVjdCBlbmNs
b3NpbmdJbnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKICAgICBJbnRQb2ludCBsb2NhdGlv
biA9IGZsb29yZWRJbnRQb2ludChyZWN0Lm1pblhNaW5ZQ29ybmVyKCkpOwogICAgIEludFBvaW50
IG1heFBvaW50ID0gY2VpbGVkSW50UG9pbnQocmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKIAotICAg
IHJldHVybiBJbnRSZWN0KGxvY2F0aW9uLCBtYXhQb2ludCAtIGxvY2F0aW9uKTsKKyAgICByZXR1
cm4gSW50UmVjdChsb2NhdGlvbiwgSW50U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhtYXhQb2ludCwg
bG9jYXRpb24pKTsKIH0KIAogSW50UmVjdCBlbmNsb3NlZEludFJlY3QoY29uc3QgRmxvYXRSZWN0
JiByZWN0KQogewogICAgIEludFBvaW50IGxvY2F0aW9uID0gY2VpbGVkSW50UG9pbnQocmVjdC5t
aW5YTWluWUNvcm5lcigpKTsKICAgICBJbnRQb2ludCBtYXhQb2ludCA9IGZsb29yZWRJbnRQb2lu
dChyZWN0Lm1heFhNYXhZQ29ybmVyKCkpOwotICAgIEludFNpemUgc2l6ZSA9IG1heFBvaW50IC0g
bG9jYXRpb247CisgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyht
YXhQb2ludCwgbG9jYXRpb24pOwogICAgIHNpemUuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogCiAg
ICAgcmV0dXJuIEludFJlY3QobG9jYXRpb24sIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKaW5kZXggZTExYjgyOGJiNTM1ZWIzNmY5YmIw
MDQ4NGE4OGY5YmRiNzRiNjdlMy4uMTYyNzI0NWJjZDUxZTI0YmEyZjJlMTA4M2E3ZTM4ZWQ1M2Q1
N2Q5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRT
aXplLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUu
Y3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAKICNpbmNsdWRl
ICJGbG9hdENvbnZlcnNpb24uaCIKKyNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAi
SW50U2l6ZS5oIgogI2luY2x1ZGUgIkxheW91dFNpemUuaCIKICNpbmNsdWRlIDxsaW1pdHM+CkBA
IC00NSw2ICs0NiwxMSBAQCBGbG9hdFNpemU6OkZsb2F0U2l6ZShjb25zdCBMYXlvdXRTaXplJiBz
aXplKSA6IG1fd2lkdGgoc2l6ZS53aWR0aCgpKSwgbV9oZWlnaHQocwogewogfQogCitGbG9hdFNp
emUgRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGNvbnN0IEZsb2F0UG9pbnQgJm1heFhNYXhZ
UG9pbnQsIGNvbnN0IEZsb2F0UG9pbnQmIG1pblhNaW5ZUG9pbnQpCit7CisgICAgcmV0dXJuIEZs
b2F0U2l6ZShtYXhYTWF4WVBvaW50LngoKSAtIG1pblhNaW5ZUG9pbnQueCgpLCBtYXhYTWF4WVBv
aW50LnkoKSAtIG1pblhNaW5ZUG9pbnQueSgpKTsKK30KKwogZmxvYXQgRmxvYXRTaXplOjpkaWFn
b25hbExlbmd0aCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHNxcnRmKGRpYWdvbmFsTGVuZ3RoU3F1
YXJlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0U2l6ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgK
aW5kZXggMmNhMjJjZGQ0NTE1ODIwMDAxOTdhM2ViNmM4MjBlNzZiNDM2ZjU5Zi4uMmJkNmUwNGZl
ZGJhMjA2ZDdkZDEyNDI0NDE2ZWExOTdkNTc3NzUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKQEAgLTU5LDYgKzU5LDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgX05TU2l6ZSBOU1NpemU7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRmxvYXRQ
b2ludDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBMYXlvdXRTaXplOwogCkBAIC03MCw2ICs3MSw3
IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUoY29uc3QgTGF5b3V0U2l6ZSYpOwogCiAgICAgc3Rh
dGljIEZsb2F0U2l6ZSBuYXJyb3dQcmVjaXNpb24oZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0
KTsKKyAgICBzdGF0aWMgRmxvYXRTaXplIGZyb21Db3JuZXJQb2ludHMoY29uc3QgRmxvYXRQb2lu
dCYgbWF4WE1heFlQb2ludCwgY29uc3QgRmxvYXRQb2ludCYgbWluWE1pbllQb2ludCk7CiAKICAg
ICBmbG9hdCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGg7IH0KICAgICBmbG9hdCBoZWln
aHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCAxYWM4Y2M4Yjg1N2E0OTM0
NjVjNzA2YzhiNTBkMzhjNjQzODNhMTQ0Li5lOTgzYThkMDUyMDAxZWExM2EyYTExNWQxMTY0Zjdk
YTU1MzVlOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQuaApAQCAtNDE5LDYgKzQxOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzY2FsZShjb25zdCBGbG9hdFNpemUmKTsKICAgICAgICAgdm9pZCByb3Rh
dGUoZmxvYXQgYW5nbGVJblJhZGlhbnMpOwogICAgICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBG
bG9hdFNpemUmIHNpemUpIHsgdHJhbnNsYXRlKHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7
IH0KKyAgICAgICAgdm9pZCB0cmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIHsgdHJh
bnNsYXRlKHBvaW50LngoKSwgcG9pbnQueSgpKTsgfQogICAgICAgICB2b2lkIHRyYW5zbGF0ZShm
bG9hdCB4LCBmbG9hdCB5KTsKIAogICAgICAgICB2b2lkIHNldFVSTEZvclJlY3QoY29uc3QgS1VS
TCYsIGNvbnN0IEludFJlY3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5oCmluZGV4IDNlODE0OGE5YTBiOTg0MDQwODk0NzIzY2FkNTYwMWQ0NjA0ZjRmZjcu
LmM0NGNjYjc5YWUxMTY5MzA0MDA3MzI0NjEwZGUwMGMxNGEyZGMxNzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaApAQCAtODYsNiArODYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRYKGludCB4KSB7IG1feCA9IHg7IH0KICAgICB2b2lkIHNldFkoaW50
IHkpIHsgbV95ID0geTsgfQogCisgICAgYm9vbCBpc1plcm8oKSBjb25zdCB7IHJldHVybiAhbV94
ICYmICFtX3k7IH0KKwogICAgIHZvaWQgbW92ZShjb25zdCBJbnRTaXplJiBzKSB7IG1vdmUocy53
aWR0aCgpLCBzLmhlaWdodCgpKTsgfSAKICAgICB2b2lkIG1vdmVCeShjb25zdCBJbnRQb2ludCYg
b2Zmc2V0KSB7IG1vdmUob2Zmc2V0LngoKSwgb2Zmc2V0LnkoKSk7IH0KICAgICB2b2lkIG1vdmUo
aW50IGR4LCBpbnQgZHkpIHsgbV94ICs9IGR4OyBtX3kgKz0gZHk7IH0KQEAgLTk1LDYgKzk3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgbV95ID0gbHJvdW5kZihzdGF0aWNfY2FzdDxmbG9hdD4obV95
ICogc3kpKTsKICAgICB9CiAgICAgCisgICAgaW50IGxlbmd0aFNxdWFyZWQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1feCAqIG1feCArIG1feSAqIG1feTsKKyAgICB9CisKICAgICBJ
bnRQb2ludCBleHBhbmRlZFRvKGNvbnN0IEludFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7CiAg
ICAgICAgIHJldHVybiBJbnRQb2ludChtX3ggPiBvdGhlci5tX3ggPyBtX3ggOiBvdGhlci5tX3gs
CkBAIC0xODUsOSArMTkyLDkgQEAgaW5saW5lIEludFBvaW50IG9wZXJhdG9yKyhjb25zdCBJbnRQ
b2ludCYgYSwgY29uc3QgSW50UG9pbnQmIGIpCiAgICAgcmV0dXJuIEludFBvaW50KGEueCgpICsg
Yi54KCksIGEueSgpICsgYi55KCkpOwogfQogCi1pbmxpbmUgSW50U2l6ZSBvcGVyYXRvci0oY29u
c3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFBvaW50JiBiKQoraW5saW5lIEludFBvaW50IG9wZXJh
dG9yLShjb25zdCBJbnRQb2ludCYgYSwgY29uc3QgSW50UG9pbnQmIGIpCiB7Ci0gICAgcmV0dXJu
IEludFNpemUoYS54KCkgLSBiLngoKSwgYS55KCkgLSBiLnkoKSk7CisgICAgcmV0dXJuIEludFBv
aW50KGEueCgpIC0gYi54KCksIGEueSgpIC0gYi55KCkpOwogfQogCiBpbmxpbmUgSW50UG9pbnQg
b3BlcmF0b3ItKGNvbnN0IEludFBvaW50JiBhLCBjb25zdCBJbnRTaXplJiBiKQpAQCAtMjE3LDcg
KzIyNCw3IEBAIGlubGluZSBJbnRTaXplIHRvSW50U2l6ZShjb25zdCBJbnRQb2ludCYgYSkKIAog
aW5saW5lIGludCBJbnRQb2ludDo6ZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChjb25zdCBJbnRQb2lu
dCYgcG9pbnQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICgoKnRoaXMpIC0gcG9pbnQpLmRpYWdvbmFs
TGVuZ3RoU3F1YXJlZCgpOworICAgIHJldHVybiAoKnRoaXMgLSBwb2ludCkubGVuZ3RoU3F1YXJl
ZCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFNpemUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1NjU5NzI1Y2QzNzc4YWY2YzMx
MDU2ODQyOTBiNDYxMjEzODQyZTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmNwcApAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorCisj
aW5jbHVkZSAiSW50UG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitJbnRTaXplIElu
dFNpemU6OmZyb21Db3JuZXJQb2ludHMoY29uc3QgSW50UG9pbnQmIG1heFhNYXhZUG9pbnQsIGNv
bnN0IEludFBvaW50JiBtaW5YTWluWVBvaW50KQoreworICAgIHJldHVybiBJbnRTaXplKG1heFhN
YXhZUG9pbnQueCgpIC0gbWluWE1pbllQb2ludC54KCksIG1heFhNYXhZUG9pbnQueSgpIC0gbWlu
WE1pbllQb2ludC55KCkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbnRTaXplLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRTaXplLmgKaW5kZXggYzhhNTQ5ZGQ3MTM2ZjFiM2FiNTk5MGVjMmQwZmUxN2VlNjIwM2Fh
NS4uOTI1MzljOWFhYWY4MTI0MzMzOTc5NTc2NzJjMzNkYWVkNDBmY2MzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaApAQCAtNTksMTEgKzU5LDE0IEBAIGNs
YXNzIHd4U2l6ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJbnRQb2ludDsKKwog
Y2xhc3MgSW50U2l6ZSB7CiBwdWJsaWM6CiAgICAgSW50U2l6ZSgpIDogbV93aWR0aCgwKSwgbV9o
ZWlnaHQoMCkgeyB9CiAgICAgSW50U2l6ZShpbnQgd2lkdGgsIGludCBoZWlnaHQpIDogbV93aWR0
aCh3aWR0aCksIG1faGVpZ2h0KGhlaWdodCkgeyB9Ci0gICAgCisgICAgc3RhdGljIEludFNpemUg
ZnJvbUNvcm5lclBvaW50cyhjb25zdCBJbnRQb2ludCYgbWF4WE1heFlQb2ludCwgY29uc3QgSW50
UG9pbnQmIG1pblhNaW5ZUG9pbnQpOworCiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV93aWR0aDsgfQogICAgIGludCBoZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2hlaWdodDsgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCmlu
ZGV4IGFkNzcyODI1ZGE0NDZmMmRmZGVkYjM4OGIxNDc0ODliYTE1M2U0NjMuLjE0Y2ZmMTZhNDBl
MWJjMmE2NTQyMzMyODYyN2RlYzljMTgzNzdhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgSW50UmVj
dCBlbmNsb3NpbmdJbnRSZWN0KGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiAgICAgSW50UG9pbnQg
bG9jYXRpb24gPSBmbG9vcmVkSW50UG9pbnQocmVjdC5taW5YTWluWUNvcm5lcigpKTsKICAgICBJ
bnRQb2ludCBtYXhQb2ludCA9IGNlaWxlZEludFBvaW50KHJlY3QubWF4WE1heFlDb3JuZXIoKSk7
CiAKLSAgICByZXR1cm4gSW50UmVjdChsb2NhdGlvbiwgbWF4UG9pbnQgLSBsb2NhdGlvbik7Cisg
ICAgcmV0dXJuIEludFJlY3QobG9jYXRpb24sIEludFNpemU6OmZyb21Db3JuZXJQb2ludHMobWF4
UG9pbnQsIGxvY2F0aW9uKSk7CiB9CiAKIExheW91dFJlY3QgZW5jbG9zaW5nTGF5b3V0UmVjdChj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcAppbmRleCBjZjUzNzE3MjcyMzM2NWRi
MGM2ZGI4Y2RjOWNjMjljMjc1MDQ3MTY3Li41OTYzZjQ0ZTU5NzQ1YWYxZjQ0MmJmMjExYjljY2I3
OWNkZmEzMmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Q
YXRoVHJhdmVyc2FsU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCB2b2lkIFBhdGhU
cmF2ZXJzYWxTdGF0ZTo6cHJvY2Vzc1NlZ21lbnQoKQogICAgICAgICBtX3N1Y2Nlc3MgPSB0cnVl
OwogICAgICAgICAKICAgICBpZiAoKG1fYWN0aW9uID09IFRyYXZlcnNhbFBvaW50QXRMZW5ndGgg
fHwgbV9hY3Rpb24gPT0gVHJhdmVyc2FsTm9ybWFsQW5nbGVBdExlbmd0aCkgJiYgbV90b3RhbExl
bmd0aCA+PSBtX2Rlc2lyZWRMZW5ndGgpIHsKLSAgICAgICAgZmxvYXQgc2xvcGUgPSBGbG9hdFBv
aW50KG1fY3VycmVudCAtIG1fcHJldmlvdXMpLnNsb3BlQW5nbGVSYWRpYW5zKCk7CisgICAgICAg
IGZsb2F0IHNsb3BlID0gKG1fY3VycmVudCAtIG1fcHJldmlvdXMpLnNsb3BlQW5nbGVSYWRpYW5z
KCk7CiAgICAgICAgIGlmIChtX2FjdGlvbiA9PSBUcmF2ZXJzYWxQb2ludEF0TGVuZ3RoKSB7CiAg
ICAgICAgICAgICBmbG9hdCBvZmZzZXQgPSBtX2Rlc2lyZWRMZW5ndGggLSBtX3RvdGFsTGVuZ3Ro
OwogICAgICAgICAgICAgbV9jdXJyZW50Lm1vdmUob2Zmc2V0ICogY29zZihzbG9wZSksIG9mZnNl
dCAqIHNpbmYoc2xvcGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NoYWRvd0JsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAKaW5kZXggMzM1OTI4MzY3YmY3YzQyMTBkZWYyMmViZWRhMGU1YjFjZWMy
ODY1Ni4uNDM3YjE5MDA1NTdkYzM0N2Q3ZGYyZjZkMWU5YTEyYzA2ZDJmMmFiMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHAKQEAgLTQyOCwx
MiArNDI4LDEyIEBAIEludFJlY3QgU2hhZG93Qmx1cjo6Y2FsY3VsYXRlTGF5ZXJCb3VuZGluZ1Jl
Y3QoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGCiAgICAgbV9sYXllclNpemUgPSBs
YXllclJlY3Quc2l6ZSgpOwogCiAgICAgY29uc3QgRmxvYXRQb2ludCB1bmNsaXBwZWRMYXllck9y
aWdpbiA9IEZsb2F0UG9pbnQodW5jbGlwcGVkTGF5ZXJSZWN0LngoKSwgdW5jbGlwcGVkTGF5ZXJS
ZWN0LnkoKSk7Ci0gICAgY29uc3QgRmxvYXRTaXplIGNsaXBwZWRPdXQgPSB1bmNsaXBwZWRMYXll
ck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CisgICAgY29uc3QgRmxvYXRQb2ludCBjbGlwcGVkT3V0
ID0gdW5jbGlwcGVkTGF5ZXJPcmlnaW4gLSBtX2xheWVyT3JpZ2luOwogCiAgICAgLy8gU2V0IHRo
ZSBvcmlnaW4gYXMgdGhlIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGUgc2NyYXRjaCBpbWFnZSwgb3Is
IGluIGNhc2UgdGhlcmUncyBhIGNsaXBwZWQKICAgICAvLyBvdXQgcmVnaW9uLCBzZXQgdGhlIG9y
aWdpbiBhY2NvcmRpbmdseSB0byB0aGUgZnVsbCBib3VuZGluZyByZWN0J3MgdG9wLWxlZnQgY29y
bmVyLgotICAgIGZsb2F0IHRyYW5zbGF0aW9uWCA9IC1zaGFkb3dlZFJlY3QueCgpICsgaW5mbGF0
aW9uLndpZHRoKCkgLSBmYWJzZihjbGlwcGVkT3V0LndpZHRoKCkpOwotICAgIGZsb2F0IHRyYW5z
bGF0aW9uWSA9IC1zaGFkb3dlZFJlY3QueSgpICsgaW5mbGF0aW9uLmhlaWdodCgpIC0gZmFic2Yo
Y2xpcHBlZE91dC5oZWlnaHQoKSk7CisgICAgZmxvYXQgdHJhbnNsYXRpb25YID0gLXNoYWRvd2Vk
UmVjdC54KCkgKyBpbmZsYXRpb24ud2lkdGgoKSAtIGZhYnNmKGNsaXBwZWRPdXQueCgpKTsKKyAg
ICBmbG9hdCB0cmFuc2xhdGlvblkgPSAtc2hhZG93ZWRSZWN0LnkoKSArIGluZmxhdGlvbi5oZWln
aHQoKSAtIGZhYnNmKGNsaXBwZWRPdXQueSgpKTsKICAgICBtX2xheWVyQ29udGV4dFRyYW5zbGF0
aW9uID0gRmxvYXRTaXplKHRyYW5zbGF0aW9uWCwgdHJhbnNsYXRpb25ZKTsKIAogICAgIHJldHVy
biBlbmNsb3NpbmdJbnRSZWN0KGxheWVyUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBjOWM0ODZh
NDE1OGU3NDZjZTA2ODdjZjYwZWJlNTMxYjIyNzkyYzRhLi5lMzliYTNiM2U0NjQyMzgwZjViNmM3
NmNmZDhhN2NjNGM5ZTE4MjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTI5NjYsNyArMjk2Niw3IEBA
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpjb21wdXRlUGl4ZWxBbGlnbm1lbnQoZmxvYXQgcGFnZVNj
YWxlRmFjdG9yLCBjb25zdCBGbG9hdFBvCiAgICAgY29uc3QgZmxvYXQgZXBzaWxvbiA9IDFlLTVm
OwogICAgIGFsaWduZWRCb3VuZHMuZXhwYW5kKGVwc2lsb24sIGVwc2lsb24pOwogICAgIAotICAg
IGFsaWdubWVudE9mZnNldCA9IGJhc2VSZWxhdGl2ZUJvdW5kcy5sb2NhdGlvbigpIC0gYWxpZ25l
ZEJvdW5kcy5sb2NhdGlvbigpOworICAgIGFsaWdubWVudE9mZnNldCA9IHRvRmxvYXRTaXplKGJh
c2VSZWxhdGl2ZUJvdW5kcy5sb2NhdGlvbigpIC0gYWxpZ25lZEJvdW5kcy5sb2NhdGlvbigpKTsK
ICAgICBwb3NpdGlvbiA9IG1fcG9zaXRpb24gLSBhbGlnbm1lbnRPZmZzZXQ7CiAgICAgc2l6ZSA9
IGFsaWduZWRCb3VuZHMuc2l6ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKaW5kZXggOWM0ODE5YWI4
NThiNWVjOWY5ODM1M2U0NGIwZTg0MTU1YjQ2ODI2Ny4uZDAxMjgxNDI2Y2UwZTAxMjcyNWQ4ZmJi
N2QwYTFiNDdjOGEwZmFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApAQCAtMTQ3Myw3ICsxNDczLDcg
QEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6cm91bmRUb0RldmljZVBpeGVscyhjb25zdCBG
bG9hdFJlY3QmIHJlY3QsIFJvdW5kaW5nTW8KIAogICAgIEZsb2F0UG9pbnQgcm91bmRlZE9yaWdp
biA9IEZsb2F0UG9pbnQoZGV2aWNlT3JpZ2luLnggLyBkZXZpY2VTY2FsZVgsIGRldmljZU9yaWdp
bi55IC8gZGV2aWNlU2NhbGVZKTsKICAgICBGbG9hdFBvaW50IHJvdW5kZWRMb3dlclJpZ2h0ID0g
RmxvYXRQb2ludChkZXZpY2VMb3dlclJpZ2h0LnggLyBkZXZpY2VTY2FsZVgsIGRldmljZUxvd2Vy
UmlnaHQueSAvIGRldmljZVNjYWxlWSk7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdChyb3VuZGVkT3Jp
Z2luLCByb3VuZGVkTG93ZXJSaWdodCAtIHJvdW5kZWRPcmlnaW4pOworICAgIHJldHVybiBGbG9h
dFJlY3Qocm91bmRlZE9yaWdpbiwgdG9GbG9hdFNpemUocm91bmRlZExvd2VyUmlnaHQgLSByb3Vu
ZGVkT3JpZ2luKSk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubkxvY2FsVHJpYW5ndWxhdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRv
ci5jcHAKaW5kZXggMTUxN2E2NzJmMDJjNWZiN2Y2OWIxMTYwODlmNGVkOTgyOTljYmEyZC4uZGRk
MTc3ZDE4NmMwZGE2NTY0NDZlODc0ZjM3YjIzYmFhZDdlZDdmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubkxvY2FsVHJpYW5ndWxhdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5u
TG9jYWxUcmlhbmd1bGF0b3IuY3BwCkBAIC0yMTMsOCArMjEzLDggQEAgdm9pZCBMb29wQmxpbm5M
b2NhbFRyaWFuZ3VsYXRvcjo6dHJpYW5ndWxhdGVIZWxwZXIoTG9vcEJsaW5uQ29uc3RhbnRzOjpG
aWxsU2lkZQogICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0
ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNlc1sxXS54eUNvb3JkaW5hdGVz
KCksCiAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVydGljZXNbM10ueHlDb29yZGluYXRlcygp
KSkgewotICAgICAgICBpZiAoKG1fdmVydGljZXNbMl0ueHlDb29yZGluYXRlcygpIC0gbV92ZXJ0
aWNlc1swXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIDwKLSAgICAg
ICAgICAgIChtX3ZlcnRpY2VzWzNdLnh5Q29vcmRpbmF0ZXMoKSAtIG1fdmVydGljZXNbMV0ueHlD
b29yZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSkgeworICAgICAgICBpZiAobV92
ZXJ0aWNlc1syXS54eUNvb3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRp
Y2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkgPAorICAgICAgICAgICAgbV92ZXJ0aWNlc1szXS54eUNv
b3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRpY2VzWzFdLnh5Q29vcmRp
bmF0ZXMoKSkpIHsKICAgICAgICAgICAgIGFkZFRyaWFuZ2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92
ZXJ0aWNlc1sxXSwgJm1fdmVydGljZXNbMl0pOwogICAgICAgICAgICAgYWRkVHJpYW5nbGUoJm1f
dmVydGljZXNbMF0sICZtX3ZlcnRpY2VzWzJdLCAmbV92ZXJ0aWNlc1szXSk7CiAgICAgICAgIH0g
ZWxzZSB7CkBAIC0yMjUsOCArMjI1LDggQEAgdm9pZCBMb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRv
cjo6dHJpYW5ndWxhdGVIZWxwZXIoTG9vcEJsaW5uQ29uc3RhbnRzOjpGaWxsU2lkZQogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNlc1szXS54eUNvb3JkaW5hdGVzKCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVydGljZXNbMl0ueHlDb29yZGlu
YXRlcygpKSkgewotICAgICAgICBpZiAoKG1fdmVydGljZXNbM10ueHlDb29yZGluYXRlcygpIC0g
bV92ZXJ0aWNlc1swXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIDwK
LSAgICAgICAgICAgIChtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0ZXMoKSAtIG1fdmVydGljZXNb
MV0ueHlDb29yZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSkgeworICAgICAgICBp
ZiAobV92ZXJ0aWNlc1szXS54eUNvb3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludCht
X3ZlcnRpY2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkgPAorICAgICAgICAgICAgbV92ZXJ0aWNlc1sy
XS54eUNvb3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRpY2VzWzFdLnh5
Q29vcmRpbmF0ZXMoKSkpIHsKICAgICAgICAgICAgIGFkZFRyaWFuZ2xlKCZtX3ZlcnRpY2VzWzBd
LCAmbV92ZXJ0aWNlc1sxXSwgJm1fdmVydGljZXNbM10pOwogICAgICAgICAgICAgYWRkVHJpYW5n
bGUoJm1fdmVydGljZXNbMF0sICZtX3ZlcnRpY2VzWzNdLCAmbV92ZXJ0aWNlc1syXSk7CiAgICAg
ICAgIH0gZWxzZSB7CkBAIC0yMzYsOCArMjM2LDggQEAgdm9pZCBMb29wQmxpbm5Mb2NhbFRyaWFu
Z3VsYXRvcjo6dHJpYW5ndWxhdGVIZWxwZXIoTG9vcEJsaW5uQ29uc3RhbnRzOjpGaWxsU2lkZQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIExpbmVzICgwLT4xKSwgKDItPjMpIGludGVyc2VjdCAt
LSBvciBzaG91bGQsIG1vZHVsbyBudW1lcmljYWwKICAgICAgICAgLy8gcHJlY2lzaW9uIGlzc3Vl
cwotICAgICAgICBpZiAoKG1fdmVydGljZXNbMV0ueHlDb29yZGluYXRlcygpIC0gbV92ZXJ0aWNl
c1swXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgpIDwKLSAgICAgICAg
ICAgIChtX3ZlcnRpY2VzWzNdLnh5Q29vcmRpbmF0ZXMoKSAtIG1fdmVydGljZXNbMl0ueHlDb29y
ZGluYXRlcygpKS5kaWFnb25hbExlbmd0aFNxdWFyZWQoKSkgeworICAgICAgICBpZiAobV92ZXJ0
aWNlc1sxXS54eUNvb3JkaW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRpY2Vz
WzBdLnh5Q29vcmRpbmF0ZXMoKSkgPAorICAgICAgICAgICAgbV92ZXJ0aWNlc1szXS54eUNvb3Jk
aW5hdGVzKCkuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludChtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0
ZXMoKSkpIHsKICAgICAgICAgICAgIGFkZFRyaWFuZ2xlKCZtX3ZlcnRpY2VzWzBdLCAmbV92ZXJ0
aWNlc1syXSwgJm1fdmVydGljZXNbMV0pOwogICAgICAgICAgICAgYWRkVHJpYW5nbGUoJm1fdmVy
dGljZXNbMF0sICZtX3ZlcnRpY2VzWzFdLCAmbV92ZXJ0aWNlc1szXSk7CiAgICAgICAgIH0gZWxz
ZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9v
cEJsaW5uTWF0aFV0aWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCmluZGV4IGJhZjFjOTY4NTkyZWI1ZGExYmJmOWIwOTM1
NTMxZjIxM2Q2ZDhlNGIuLmYyYjkyMmY3ZDI5YzM4MWY1MmUyMjhmM2QyYWQxOWU0ZTE2YmYxZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxp
bm5NYXRoVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dw
dS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgZmxvYXQgcm91bmRU
b1plcm8oZmxvYXQgdmFsKQogCiBib29sIGFwcHJveEVxdWFsKGNvbnN0IEZsb2F0UG9pbnQmIHYw
LCBjb25zdCBGbG9hdFBvaW50JiB2MSkKIHsKLSAgICByZXR1cm4gKHYwIC0gdjEpLmRpYWdvbmFs
TGVuZ3RoU3F1YXJlZCgpIDwgRXBzaWxvbiAqIEVwc2lsb247CisgICAgcmV0dXJuIHYwLmRpc3Rh
bmNlU3F1YXJlZFRvUG9pbnQodjEpIDwgRXBzaWxvbiAqIEVwc2lsb247CiB9CiAKIGJvb2wgYXBw
cm94RXF1YWwoY29uc3QgRmxvYXRQb2ludDNEJiB2MCwgY29uc3QgRmxvYXRQb2ludDNEJiB2MSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNz
Q29udGV4dFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0LmNwcAppbmRleCBkZjk2Yjg2YzcwMzVkZTc3ZjUzMmVjMmQ1ZmY0MmFhYWIx
MGZkMGIzLi4zZDE4NDRhMGIyZjJjOGUwMjYyMTRhMWQwZTI0ZDkyODBkMzE5NGE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRR
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250
ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgZnJlY3QsIFJvdW5kaW5n
TQogCiAgICAgRmxvYXRQb2ludCByb3VuZGVkT3JpZ2luID0gRmxvYXRQb2ludChkZXZpY2VPcmln
aW4ueCgpIC8gZGV2aWNlU2NhbGVYLCBkZXZpY2VPcmlnaW4ueSgpIC8gZGV2aWNlU2NhbGVZKTsK
ICAgICBGbG9hdFBvaW50IHJvdW5kZWRMb3dlclJpZ2h0ID0gRmxvYXRQb2ludChkZXZpY2VMb3dl
clJpZ2h0LngoKSAvIGRldmljZVNjYWxlWCwgZGV2aWNlTG93ZXJSaWdodC55KCkgLyBkZXZpY2VT
Y2FsZVkpOwotICAgIHJldHVybiBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgcm91bmRlZExvd2Vy
UmlnaHQgLSByb3VuZGVkT3JpZ2luKTsKKyAgICByZXR1cm4gRmxvYXRSZWN0KHJvdW5kZWRPcmln
aW4sIHRvRmxvYXRTaXplKHJvdW5kZWRMb3dlclJpZ2h0IC0gcm91bmRlZE9yaWdpbikpOwogfQog
CiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXpl
JiBzaXplLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JT
cGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCmluZGV4IDQ4ZmI3NjllN2IyZjE0M2RkMmUw
MGViNzRhN2VlYzRkMDViMTg3MjAuLjYwYzA0NTczY2ZlNjNhYTg3ZGFhOWNlMjlkNjQzNjE2Y2Fh
ZjhlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcApAQCAtNTUzLDggKzU1Myw4IEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShjb25zdCBJbnRQb2ludCYgcG9pbnQxLCBjb25z
dCBJbnRQb2ludCYgcG9pbnQyKQogICAgIC8vIFdlIGtub3cgdGhlc2UgYXJlIHZlcnRpY2FsIG9y
IGhvcml6b250YWwgbGluZXMsIHNvIHRoZSBsZW5ndGggd2lsbCBqdXN0CiAgICAgLy8gYmUgdGhl
IHN1bSBvZiB0aGUgZGlzcGxhY2VtZW50IGNvbXBvbmVudCB2ZWN0b3JzIGdpdmUgb3IgdGFrZSAx
IC0KICAgICAvLyBwcm9iYWJseSB3b3J0aCB0aGUgc3BlZWQgdXAgb2Ygbm8gc3F1YXJlIHJvb3Qs
IHdoaWNoIGFsc28gd29uJ3QgYmUgZXhhY3QuCi0gICAgRmxvYXRTaXplIGRpc3AgPSBwMiAtIHAx
OwotICAgIGludCBsZW5ndGggPSBTa1NjYWxhclJvdW5kKGRpc3Aud2lkdGgoKSArIGRpc3AuaGVp
Z2h0KCkpOworICAgIEZsb2F0UG9pbnQgZGlzcCA9IHAyIC0gcDE7CisgICAgaW50IGxlbmd0aCA9
IFNrU2NhbGFyUm91bmQoZGlzcC54KCkgKyBkaXNwLnkoKSk7CiAgICAgcGxhdGZvcm1Db250ZXh0
KCktPnNldHVwUGFpbnRGb3JTdHJva2luZygmcGFpbnQsIDAsIGxlbmd0aCk7CiAKICAgICBpZiAo
c3Ryb2tlU3R5bGUoKSA9PSBEb3R0ZWRTdHJva2UgfHwgc3Ryb2tlU3R5bGUoKSA9PSBEYXNoZWRT
dHJva2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRS
ZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRS
ZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCA1OWY1ZGE1NDY4MzAzODUzNjMxMzcxYzRjN2VmMzYz
ZTcxNGY4MTFjLi4wNmJhNDM3YzAwYjI4ZDc3NDdkMjk1ZjQ3MWFiODM4MjViMDk2ZDZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIFdpZGdldFJlbmRlcmluZ0NvbnRleHQ6OldpZGdl
dFJlbmRlcmluZ0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAg
bV90YXJnZXRSZWN0LmluZmxhdGUoZXh0cmFTcGFjZSk7CiAKICAgICAvLyBUaGlzIG9mZnNldCB3
aWxsIG1hcCBhIHBvaW50IGluIHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgd2lkZ2V0IHRv
IHRoZSBjb29yZGluYXRlIHN5c3RlbSBvZiB0aGUgcGFpbnRpbmcgYnVmZmVyLgotICAgIG1fcGFp
bnRPZmZzZXQgPSB0YXJnZXRSZWN0LmxvY2F0aW9uKCkgLSBtX3RhcmdldFJlY3QubG9jYXRpb24o
KTsKKyAgICBtX3BhaW50T2Zmc2V0ID0gdG9JbnRTaXplKHRhcmdldFJlY3QubG9jYXRpb24oKSAt
IG1fdGFyZ2V0UmVjdC5sb2NhdGlvbigpKTsKIAogICAgIGludCB3aWR0aCA9IG1fdGFyZ2V0UmVj
dC53aWR0aCgpICsgKGV4dHJhU3BhY2UgKiAyKTsKICAgICBpbnQgaGVpZ2h0ID0gbV90YXJnZXRS
ZWN0LmhlaWdodCgpICsgKGV4dHJhU3BhY2UgKiAyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlci5tbQppbmRleCBm
Mjg0NTEzNGVjMDI4Yjc1MTljMzZkMDgzMjk3MDBkOWJlZWQyMDhkLi42ZWMwMmNmOGQ1ZjVkMjE0
ODgxYzJkZWExYWVkZjJhYWZiMGVhZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLm1tCkBAIC0zNzYsNyAr
Mzc2LDcgQEAgdm9pZCBTY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlcjo6c25hcFJ1YmJlckJhbmRU
aW1lckZpcmVkKCkKICAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldFdpZHRoKHJl
Ym91bmREZWx0YUZvckVsYXN0aWNEZWx0YShuZXdTdHJldGNoLndpZHRoKCkpKTsKICAgICAgICAg
ICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldEhlaWdodChyZWJvdW5kRGVsdGFGb3JFbGFzdGlj
RGVsdGEobmV3U3RyZXRjaC5oZWlnaHQoKSkpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgbV9jbGllbnQtPmltbWVkaWF0ZVNjcm9sbEJ5KG1fb3JpZ09yaWdpbiAtIG1fY2xpZW50LT5h
YnNvbHV0ZVNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICAgICAgbV9jbGllbnQtPmltbWVkaWF0
ZVNjcm9sbEJ5KEZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhtX29yaWdPcmlnaW4sIG1fY2xp
ZW50LT5hYnNvbHV0ZVNjcm9sbFBvc2l0aW9uKCkpKTsKIAogICAgICAgICAgICAgc3RvcFNuYXBS
dWJiZXJiYW5kVGltZXIoKTsKICAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0gRmxv
YXRTaXplKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9u
UG9seWdvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5j
cHAKaW5kZXggYTUyMjMyZjJiN2U3ZDI5YzYxNDViNzkyZWQwODg4N2E4YmM4YzlhZS4uZjA0ZmMy
NjUxYmM2YzZhMzhiZjg1MTJjYTkyYTZlMmIzNTZlZjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApAQCAtNDcsOSArNDcsOSBAQCBzdHJ1Y3Qg
RWRnZUludGVyc2VjdGlvbiB7CiAgICAgRWRnZUludGVyc2VjdGlvblR5cGUgdHlwZTsKIH07CiAK
LXN0YXRpYyBpbmxpbmUgZmxvYXQgZGV0ZXJtaW5hbnQoY29uc3QgRmxvYXRTaXplJiBhLCBjb25z
dCBGbG9hdFNpemUmIGIpCitzdGF0aWMgaW5saW5lIGZsb2F0IGRldGVybWluYW50KGNvbnN0IEZs
b2F0UG9pbnQmIGEsIGNvbnN0IEZsb2F0UG9pbnQmIGIpCiB7Ci0gICAgcmV0dXJuIGEud2lkdGgo
KSAqIGIuaGVpZ2h0KCkgLSBhLmhlaWdodCgpICogYi53aWR0aCgpOworICAgIHJldHVybiBhLngo
KSAqIGIueSgpIC0gYS55KCkgKiBiLngoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGFyZUNv
bGxpbmVhclBvaW50cyhjb25zdCBGbG9hdFBvaW50JiBwMCwgY29uc3QgRmxvYXRQb2ludCYgcDEs
IGNvbnN0IEZsb2F0UG9pbnQmIHAyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAppbmRleCAzNTUyODA1Yzk1ZjZkMjJiMTQ5YWVjYzRjYmMwOWFmNzBiZGMzOWEwLi4yYTNjMmQw
NWJkY2Q1ZmM1NGYwYjExYjA5ZWZjYWUyMjM1MDMyOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94LmNwcApAQCAtNzM2LDcgKzczNiw3IEBAIEludFNpemUgUmVuZGVyQm94Ojpj
YWxjdWxhdGVBdXRvc2Nyb2xsRGlyZWN0aW9uKGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkg
Y29uCiAgICAgICAgIHBvaW50Lm1vdmUoMCwgLWF1dG9zY3JvbGxCZWx0U2l6ZSk7CiAgICAgZWxz
ZSBpZiAocG9pbnQueSgpID4gYm94Lm1heFkoKSAtIGF1dG9zY3JvbGxCZWx0U2l6ZSkKICAgICAg
ICAgcG9pbnQubW92ZSgwLCBhdXRvc2Nyb2xsQmVsdFNpemUpOwotICAgIHJldHVybiBmcmFtZVZp
ZXctPmNvbnRlbnRzVG9XaW5kb3cocG9pbnQpIC0gd2luZG93UG9pbnQ7CisgICAgcmV0dXJuIHRv
SW50U2l6ZShmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocG9pbnQpIC0gd2luZG93UG9pbnQp
OwogfQogCiBSZW5kZXJCb3gqIFJlbmRlckJveDo6ZmluZEF1dG9zY3JvbGxhYmxlKFJlbmRlck9i
amVjdCogcmVuZGVyZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eE1vZGVsT2JqZWN0LmNwcAppbmRleCBmMDZlMTI2MzhiOWFjNDFmNjAwOTJhZDQ4NTkyM2RhMjRm
NDBmNjNiLi45ZTcyZGFlZTM4MzU2Y2QyNjQ1NWI3ZWYzYzM2YzEwZjc3NDlkOTZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAg
LTExNjcsOSArMTE2Nyw3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJ
bWFnZUdlb21ldHJ5OjpjbGlwKGNvbnN0IEludFJlY3QmIGNsaXBSZWN0CiAKIEludFBvaW50IFJl
bmRlckJveE1vZGVsT2JqZWN0OjpCYWNrZ3JvdW5kSW1hZ2VHZW9tZXRyeTo6cmVsYXRpdmVQaGFz
ZSgpIGNvbnN0CiB7Ci0gICAgSW50UG9pbnQgcGhhc2UgPSBtX3BoYXNlOwotICAgIHBoYXNlICs9
IG1fZGVzdFJlY3QubG9jYXRpb24oKSAtIG1fZGVzdE9yaWdpbjsKLSAgICByZXR1cm4gcGhhc2U7
CisgICAgcmV0dXJuIG1fcGhhc2UgKyBtX2Rlc3RSZWN0LmxvY2F0aW9uKCkgLSBtX2Rlc3RPcmln
aW47CiB9CiAKIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUJhY2tncm91bmRJ
bWFnZUdlb21ldHJ5KGNvbnN0IEZpbGxMYXllciogZmlsbExheWVyLCBjb25zdCBMYXlvdXRSZWN0
JiBwYWludFJlY3QsIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5k
ZXggZGRmNWQzNzk1YzY4YWIxYTYwYTkwMWY3MWY0MDU4YzIwZWYxOGY0Yy4uMGQzYWU4YmYyOGZk
YjA1YTY5MjkyNmY5YzY5YzY2N2IyMmI2MTU4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCkBAIC0xOTMwLDkgKzE5MzAsOSBAQCBzdGF0aWMgaW5saW5lIGludCBh
ZGp1c3RlZFNjcm9sbERlbHRhKGludCBiZWdpbm5pbmdEZWx0YSkgewogICAgIHJldHVybiBhZGp1
c3RlZERlbHRhOwogfQogCi1zdGF0aWMgaW5saW5lIEludFNpemUgYWRqdXN0ZWRTY3JvbGxEZWx0
YShjb25zdCBJbnRTaXplJiBkZWx0YSkKK3N0YXRpYyBpbmxpbmUgSW50U2l6ZSBhZGp1c3RlZFNj
cm9sbERlbHRhKGNvbnN0IEludFBvaW50JiBkZWx0YSkKIHsKLSAgICByZXR1cm4gSW50U2l6ZShh
ZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRhLndpZHRoKCkpLCBhZGp1c3RlZFNjcm9sbERlbHRhKGRl
bHRhLmhlaWdodCgpKSk7CisgICAgcmV0dXJuIEludFNpemUoYWRqdXN0ZWRTY3JvbGxEZWx0YShk
ZWx0YS54KCkpLCBhZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRhLnkoKSkpOwogfQogCiB2b2lkIFJl
bmRlckxheWVyOjpwYW5TY3JvbGxGcm9tUG9pbnQoY29uc3QgSW50UG9pbnQmIHNvdXJjZVBvaW50
KQpAQCAtMTk1MCwxMiArMTk1MCwxMiBAQCB2b2lkIFJlbmRlckxheWVyOjpwYW5TY3JvbGxGcm9t
UG9pbnQoY29uc3QgSW50UG9pbnQmIHNvdXJjZVBvaW50KQogICAgIGVsc2UKICAgICAgICAgcHJl
dmlvdXNNb3VzZVBvc2l0aW9uID0gbGFzdEtub3duTW91c2VQb3NpdGlvbjsKIAotICAgIEludFNp
emUgZGVsdGEgPSBsYXN0S25vd25Nb3VzZVBvc2l0aW9uIC0gc291cmNlUG9pbnQ7CisgICAgSW50
UG9pbnQgZGVsdGEgPSBsYXN0S25vd25Nb3VzZVBvc2l0aW9uIC0gc291cmNlUG9pbnQ7CiAKLSAg
ICBpZiAoYWJzKGRlbHRhLndpZHRoKCkpIDw9IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVz
KSAvLyBhdCB0aGUgY2VudGVyIHdlIGxldCB0aGUgc3BhY2UgZm9yIHRoZSBpY29uCi0gICAgICAg
IGRlbHRhLnNldFdpZHRoKDApOwotICAgIGlmIChhYnMoZGVsdGEuaGVpZ2h0KCkpIDw9IFNjcm9s
bFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKQotICAgICAgICBkZWx0YS5zZXRIZWlnaHQoMCk7Cisg
ICAgaWYgKGFicyhkZWx0YS54KCkpIDw9IFNjcm9sbFZpZXc6Om5vUGFuU2Nyb2xsUmFkaXVzKSAv
LyBhdCB0aGUgY2VudGVyIHdlIGxldCB0aGUgc3BhY2UgZm9yIHRoZSBpY29uCisgICAgICAgIGRl
bHRhLnNldFgoMCk7CisgICAgaWYgKGFicyhkZWx0YS55KCkpIDw9IFNjcm9sbFZpZXc6Om5vUGFu
U2Nyb2xsUmFkaXVzKQorICAgICAgICBkZWx0YS5zZXRZKDApOwogCiAgICAgc2Nyb2xsQnlSZWN1
cnNpdmVseShhZGp1c3RlZFNjcm9sbERlbHRhKGRlbHRhKSwgU2Nyb2xsT2Zmc2V0Q2xhbXBlZCk7
CiB9CkBAIC0yODExLDcgKzI4MTEsNyBAQCBJbnRTaXplIFJlbmRlckxheWVyOjpvZmZzZXRGcm9t
UmVzaXplQ29ybmVyKGNvbnN0IEludFBvaW50JiBhYnNvbHV0ZVBvaW50KSBjb25zdAogICAgICAg
ICBlbGVtZW50U2l6ZS5zZXRXaWR0aCgwKTsKICAgICBJbnRQb2ludCByZXNpemVyUG9pbnQgPSBJ
bnRQb2ludChlbGVtZW50U2l6ZSk7CiAgICAgSW50UG9pbnQgbG9jYWxQb2ludCA9IHJvdW5kZWRJ
bnRQb2ludChhYnNvbHV0ZVRvQ29udGVudHMoYWJzb2x1dGVQb2ludCkpOwotICAgIHJldHVybiBs
b2NhbFBvaW50IC0gcmVzaXplclBvaW50OworICAgIHJldHVybiBJbnRTaXplOjpmcm9tQ29ybmVy
UG9pbnRzKGxvY2FsUG9pbnQsIHJlc2l6ZXJQb2ludCk7CiB9CiAKIGJvb2wgUmVuZGVyTGF5ZXI6
Omhhc092ZXJmbG93Q29udHJvbHMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBmYjhlYThjYWM2NTVkYjUzZjYyNjI1YWMy
OTE2MTQ1NjUxOTFhYjQ0Li5lZmVmMTc2OTI4Yjc4OGNhZmY5MTFjNjAwNmQwNTc2MzU1NWE3YmRi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cApAQCAtNjI0LDE3ICs2MjQsMTcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdy
YXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgICAgIFJlbmRlckxheWVyOjpDbGlwUmVjdHNDb250
ZXh0IGNsaXBSZWN0c0NvbnRleHQoY29tcEFuY2VzdG9yLCAwLCBUZW1wb3JhcnlDbGlwUmVjdHMs
IElnbm9yZU92ZXJsYXlTY3JvbGxiYXJTaXplLCBSZW5kZXJMYXllcjo6SWdub3JlT3ZlcmZsb3dD
bGlwKTsKICAgICAgICAgSW50UmVjdCBwYXJlbnRDbGlwUmVjdCA9IHBpeGVsU25hcHBlZEludFJl
Y3QobV9vd25pbmdMYXllci0+YmFja2dyb3VuZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpLnJl
Y3QoKSk7IC8vIEZJWE1FOiBJbmNvcnJlY3QgZm9yIENTUyByZWdpb25zLgogICAgICAgICBBU1NF
UlQocGFyZW50Q2xpcFJlY3QgIT0gUGFpbnRJbmZvOjppbmZpbml0ZVJlY3QoKSk7Ci0gICAgICAg
IG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KHBhcmVudENs
aXBSZWN0LmxvY2F0aW9uKCkgLSBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24pKTsKKyAgICAg
ICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldFBvc2l0aW9uKHBhcmVudENsaXBSZWN0Lmxv
Y2F0aW9uKCkgLSBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24pOwogICAgICAgICBtX2FuY2Vz
dG9yQ2xpcHBpbmdMYXllci0+c2V0U2l6ZShwYXJlbnRDbGlwUmVjdC5zaXplKCkpOwogCiAgICAg
ICAgIC8vIGJhY2tncm91bmRSZWN0IGlzIHJlbGF0aXZlIHRvIGNvbXBBbmNlc3Rvciwgc28gc3Vi
dHJhY3QgZGVsdGFYL2RlbHRhWSB0byBnZXQgYmFjayB0byBsb2NhbCBjb29yZHMuCi0gICAgICAg
IG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIocGFyZW50Q2xp
cFJlY3QubG9jYXRpb24oKSAtIGRlbHRhKTsKKyAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5
ZXItPnNldE9mZnNldEZyb21SZW5kZXJlcihJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKHBhcmVu
dENsaXBSZWN0LmxvY2F0aW9uKCksIGRlbHRhKSk7CiAKICAgICAgICAgLy8gVGhlIHByaW1hcnkg
bGF5ZXIgaXMgdGhlbiBwYXJlbnRlZCBpbiwgYW5kIHBvc2l0aW9uZWQgcmVsYXRpdmUgdG8gdGhp
cyBjbGlwcGluZyBsYXllci4KICAgICAgICAgZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uID0g
cGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKTsKICAgICB9CiAKLSAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQocmVsYXRpdmVDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlv
bigpIC0gZ3JhcGhpY3NMYXllclBhcmVudExvY2F0aW9uKSk7CisgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRQb3NpdGlvbihyZWxhdGl2ZUNvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkgLSBncmFw
aGljc0xheWVyUGFyZW50TG9jYXRpb24pOwogICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0T2Zmc2V0
RnJvbVJlbmRlcmVyKHRvSW50U2l6ZShsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9uKCkp
KTsKICAgICAKICAgICBGbG9hdFNpemUgb2xkU2l6ZSA9IG1fZ3JhcGhpY3NMYXllci0+c2l6ZSgp
OwpAQCAtNjUyLDcgKzY1Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRhdGVHcmFw
aGljc0xheWVyR2VvbWV0cnkoKQogICAgIEludFJlY3QgY2xpcHBpbmdCb3g7CiAgICAgaWYgKEdy
YXBoaWNzTGF5ZXIqIGNsaXBMYXllciA9IGNsaXBwaW5nTGF5ZXIoKSkgewogICAgICAgICBjbGlw
cGluZ0JveCA9IGNsaXBCb3godG9SZW5kZXJCb3gocmVuZGVyZXIoKSkpOwotICAgICAgICBjbGlw
TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIGxv
Y2FsQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRpb24oKSkpOworICAgICAgICBjbGlwTGF5ZXItPnNl
dFBvc2l0aW9uKGNsaXBwaW5nQm94LmxvY2F0aW9uKCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRz
LmxvY2F0aW9uKCkpOwogICAgICAgICBjbGlwTGF5ZXItPnNldFNpemUoY2xpcHBpbmdCb3guc2l6
ZSgpKTsKICAgICAgICAgY2xpcExheWVyLT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIodG9JbnRTaXpl
KGNsaXBwaW5nQm94LmxvY2F0aW9uKCkpKTsKICAgICB9CkBAIC03MjgsNyArNzI4LDcgQEAgdm9p
ZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAg
ICAgIC8vIGJ1dCB0aGUgcmVmbGVjdGVkIGxheWVyIGlzIHRoZSBib3VuZHMgb2YgdGhpcyBsYXll
ciwgc28gd2UgbmVlZCB0byBwb3NpdGlvbiBpdCBhcHByb3ByaWF0ZWx5LgogICAgICAgICBGbG9h
dFJlY3QgbGF5ZXJCb3VuZHMgPSBjb21wb3NpdGVkQm91bmRzKCk7CiAgICAgICAgIEZsb2F0UmVj
dCByZWZsZWN0aW9uTGF5ZXJCb3VuZHMgPSByZWZsZWN0aW9uQmFja2luZy0+Y29tcG9zaXRlZEJv
dW5kcygpOwotICAgICAgICByZWZsZWN0aW9uQmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5zZXRS
ZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbihGbG9hdFBvaW50KGxheWVyQm91bmRzLmxvY2F0aW9uKCkg
LSByZWZsZWN0aW9uTGF5ZXJCb3VuZHMubG9jYXRpb24oKSkpOworICAgICAgICByZWZsZWN0aW9u
QmFja2luZy0+Z3JhcGhpY3NMYXllcigpLT5zZXRSZXBsaWNhdGVkTGF5ZXJQb3NpdGlvbihsYXll
ckJvdW5kcy5sb2NhdGlvbigpIC0gcmVmbGVjdGlvbkxheWVyQm91bmRzLmxvY2F0aW9uKCkpOwog
ICAgIH0KIAogICAgIGlmIChtX3Njcm9sbGluZ0xheWVyKSB7CkBAIC03MzcsNyArNzM3LDcgQEAg
dm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAg
ICAgICAgIEludFJlY3QgcGFkZGluZ0JveChyZW5kZXJCb3gtPmJvcmRlckxlZnQoKSwgcmVuZGVy
Qm94LT5ib3JkZXJUb3AoKSwgcmVuZGVyQm94LT53aWR0aCgpIC0gcmVuZGVyQm94LT5ib3JkZXJM
ZWZ0KCkgLSByZW5kZXJCb3gtPmJvcmRlclJpZ2h0KCksIHJlbmRlckJveC0+aGVpZ2h0KCkgLSBy
ZW5kZXJCb3gtPmJvcmRlclRvcCgpIC0gcmVuZGVyQm94LT5ib3JkZXJCb3R0b20oKSk7CiAgICAg
ICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0ID0gbV9vd25pbmdMYXllci0+c2Nyb2xsZWRDb250ZW50
T2Zmc2V0KCk7CiAKLSAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQ
b2ludChwYWRkaW5nQm94LmxvY2F0aW9uKCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0
aW9uKCkpKTsKKyAgICAgICAgbV9zY3JvbGxpbmdMYXllci0+c2V0UG9zaXRpb24ocGFkZGluZ0Jv
eC5sb2NhdGlvbigpIC0gbG9jYWxDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpKTsKIAogICAg
ICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRTaXplKHBhZGRpbmdCb3guc2l6ZSgpKTsKICAgICAg
ICAgbV9zY3JvbGxpbmdDb250ZW50c0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KC1zY3Jv
bGxPZmZzZXQud2lkdGgoKSwgLXNjcm9sbE9mZnNldC5oZWlnaHQoKSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwCmluZGV4IDE0YWUwYmU1M2Q3ZDIxZTJiODk0
OTk3YWUwZWFjYjJhYWVkZDU3ODkuLmY2YjE1MjNmYWQ2NTgyYjY4Nzk5Nzg1ODQ5M2QzMjJkOTUw
ODNiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKQEAg
LTU0MCwxOCArNTQwLDE4IEBAIGludCBSZW5kZXJMaXN0Qm94OjpzY3JvbGxUb3dhcmQoY29uc3Qg
SW50UG9pbnQmIGRlc3RpbmF0aW9uKQogewogICAgIC8vIEZJWE1FOiBUaGlzIGRvZXNuJ3Qgd29y
ayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gbG9j
YWxUb0Fic29sdXRlKCk7Ci0gICAgSW50U2l6ZSBwb3NpdGlvbk9mZnNldCA9IHJvdW5kZWRJbnRT
aXplKGRlc3RpbmF0aW9uIC0gYWJzUG9zKTsKKyAgICBJbnRQb2ludCBwb3NpdGlvbk9mZnNldCA9
IGRlc3RpbmF0aW9uIC0gcm91bmRlZEludFBvaW50KGFic1Bvcyk7CiAKICAgICBpbnQgcm93cyA9
IG51bVZpc2libGVJdGVtcygpOwogICAgIGludCBvZmZzZXQgPSBtX2luZGV4T2Zmc2V0OwogICAg
IAotICAgIGlmIChwb3NpdGlvbk9mZnNldC5oZWlnaHQoKSA8IGJvcmRlclRvcCgpICsgcGFkZGlu
Z1RvcCgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCAtIDEpKQor
ICAgIGlmIChwb3NpdGlvbk9mZnNldC55KCkgPCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSAm
JiBzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChvZmZzZXQgLSAxKSkKICAgICAgICAg
cmV0dXJuIG9mZnNldCAtIDE7CiAgICAgCi0gICAgaWYgKHBvc2l0aW9uT2Zmc2V0LmhlaWdodCgp
ID4gaGVpZ2h0KCkgLSBwYWRkaW5nQm90dG9tKCkgLSBib3JkZXJCb3R0b20oKSAmJiBzY3JvbGxU
b1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChvZmZzZXQgKyByb3dzKSkKKyAgICBpZiAocG9zaXRp
b25PZmZzZXQueSgpID4gaGVpZ2h0KCkgLSBwYWRkaW5nQm90dG9tKCkgLSBib3JkZXJCb3R0b20o
KSAmJiBzY3JvbGxUb1JldmVhbEVsZW1lbnRBdExpc3RJbmRleChvZmZzZXQgKyByb3dzKSkKICAg
ICAgICAgcmV0dXJuIG9mZnNldCArIHJvd3MgLSAxOwogICAgIAotICAgIHJldHVybiBsaXN0SW5k
ZXhBdE9mZnNldChwb3NpdGlvbk9mZnNldCk7CisgICAgcmV0dXJuIGxpc3RJbmRleEF0T2Zmc2V0
KHRvU2l6ZShwb3NpdGlvbk9mZnNldCkpOwogfQogCiB2b2lkIFJlbmRlckxpc3RCb3g6OmF1dG9z
Y3JvbGwoY29uc3QgSW50UG9pbnQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmNwcAppbmRleCA2ZGIwZDY5M2JiNWZjNTc5YzkxYjA5ZTBmYjdiZjMyMzY1ZWU4MTIyLi4w
MmI0NzViM2YyZGMxMzc1ZjcyMmYyYzE5NTYzZTgxZDAyYjVhNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMjgxLDEyICsyODEsMTIgQEAgdm9pZCBS
ZW5kZXJXaWRnZXQ6OnBhaW50KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2lu
dCYgcGFpbnRPZmZzZXQpCiAgICAgICAgICAgICByb3VuZFRvSW50KGFkanVzdGVkUGFpbnRPZmZz
ZXQueSgpICsgYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkpKTsKICAgICAgICAgSW50UmVjdCBw
YWludFJlY3QgPSBwYWludEluZm8ucmVjdDsKIAotICAgICAgICBJbnRTaXplIHdpZGdldFBhaW50
T2Zmc2V0ID0gcGFpbnRMb2NhdGlvbiAtIHdpZGdldExvY2F0aW9uOworICAgICAgICBJbnRQb2lu
dCB3aWRnZXRQYWludE9mZnNldCA9IHBhaW50TG9jYXRpb24gLSB3aWRnZXRMb2NhdGlvbjsKICAg
ICAgICAgLy8gV2hlbiBwYWludGluZyB3aWRnZXRzIGludG8gY29tcG9zaXRpbmcgbGF5ZXJzLCB0
eCBhbmQgdHkgYXJlIHJlbGF0aXZlIHRvIHRoZSBlbmNsb3NpbmcgY29tcG9zaXRpbmcgbGF5ZXIs
CiAgICAgICAgIC8vIG5vdCB0aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaGlmdCB0aGUgQ1RNIGFu
ZCBhZGp1c3QgdGhlIHBhaW50UmVjdCB0byBiZSByb290LXJlbGF0aXZlIHRvIGZpeCBwbHVnLWlu
IGRyYXdpbmcuCiAgICAgICAgIGlmICghd2lkZ2V0UGFpbnRPZmZzZXQuaXNaZXJvKCkpIHsKICAg
ICAgICAgICAgIHBhaW50SW5mby5jb250ZXh0LT50cmFuc2xhdGUod2lkZ2V0UGFpbnRPZmZzZXQp
OwotICAgICAgICAgICAgcGFpbnRSZWN0Lm1vdmUoLXdpZGdldFBhaW50T2Zmc2V0KTsKKyAgICAg
ICAgICAgIHBhaW50UmVjdC5tb3ZlQnkoLXdpZGdldFBhaW50T2Zmc2V0KTsKICAgICAgICAgfQog
ICAgICAgICBtX3dpZGdldC0+cGFpbnQocGFpbnRJbmZvLmNvbnRleHQsIHBhaW50UmVjdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHTWFya2VyRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJEYXRhLmgKaW5kZXggMDlh
NTQyYjIxMDk3NTdjOTYyZDIzNTliYjk5MDUwZDQ5MTRkMDU4OC4uMzMxNWE4MmYzNTk4YTFhOWVj
NjFiNGY2N2I3ZTc4MTYyZTdhODE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdNYXJrZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdNYXJrZXJEYXRhLmgKQEAgLTgyLDggKzgyLDggQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBmbG9hdCBjdXJyZW50QW5nbGUoU1ZHTWFya2VyVHlwZSB0eXBlKSBjb25zdAogICAgIHsKLSAg
ICAgICAgRmxvYXRQb2ludCBpbnNsb3BlQ2hhbmdlKG1faW5zbG9wZVBvaW50c1sxXSAtIG1faW5z
bG9wZVBvaW50c1swXSk7Ci0gICAgICAgIEZsb2F0UG9pbnQgb3V0c2xvcGVDaGFuZ2UobV9vdXRz
bG9wZVBvaW50c1sxXSAtIG1fb3V0c2xvcGVQb2ludHNbMF0pOworICAgICAgICBGbG9hdFBvaW50
IGluc2xvcGVDaGFuZ2UgPSBtX2luc2xvcGVQb2ludHNbMV0gLSBtX2luc2xvcGVQb2ludHNbMF07
CisgICAgICAgIEZsb2F0UG9pbnQgb3V0c2xvcGVDaGFuZ2UgPSBtX291dHNsb3BlUG9pbnRzWzFd
IC0gbV9vdXRzbG9wZVBvaW50c1swXTsKIAogICAgICAgICBkb3VibGUgaW5zbG9wZSA9IHJhZDJk
ZWcoaW5zbG9wZUNoYW5nZS5zbG9wZUFuZ2xlUmFkaWFucygpKTsKICAgICAgICAgZG91YmxlIG91
dHNsb3BlID0gcmFkMmRlZyhvdXRzbG9wZUNoYW5nZS5zbG9wZUFuZ2xlUmFkaWFucygpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGEy
YzM5MmY5MDlhMzIzMTgwNTA5NTAzZTRkZjNjOTQxMDlkNjMxNjMuLmM5NGIxZDVkOGNiZmY1MzAz
YmVhNGQ5ZGUyZjkyNjgzMmFiZjU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMzIxLDggKzMyMSw4IEBAIGZsb2F0IFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0CiAgICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoIXBhcnNlUG9pbnQodG9TdHJp
bmcsIHRvKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIEZsb2F0U2l6ZSBkaWZmID0gdG8gLSBm
cm9tOwotICAgIHJldHVybiBzcXJ0ZihkaWZmLndpZHRoKCkgKiBkaWZmLndpZHRoKCkgKyBkaWZm
LmhlaWdodCgpICogZGlmZi5oZWlnaHQoKSk7CisgICAgRmxvYXRQb2ludCBkaWZmID0gdG8gLSBm
cm9tOworICAgIHJldHVybiBkaWZmLmxlbmd0aCgpOwogfQogCiB2b2lkIFNWR0FuaW1hdGVNb3Rp
b25FbGVtZW50Ojp1cGRhdGVBbmltYXRpb25Nb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFy
c2VyLmNwcAppbmRleCBmOTA4ZTBkYjM0MGU4Y2VlZTNiYjRmZmViYTJlNmY4ZWQ5ZjlhZWVmLi5k
YmQxZDA2NDcxZDk2NTBmZDViNTQxZTM5ZWJlODlhYWVkMjc3YWYxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhQYXJzZXIuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB2b2lkIFNWR1BhdGhQYXJz
ZXI6OmNsZWFudXAoKQogLy8gU2VlIGFsc28gU1ZHIGltcGxlbWVudGF0aW9uIG5vdGVzOiBodHRw
Oi8vd3d3LnczLm9yZy9UUi9TVkcvaW1wbG5vdGUuaHRtbCNBcmNDb252ZXJzaW9uRW5kcG9pbnRU
b0NlbnRlcgogYm9vbCBTVkdQYXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0IGFu
Z2xlLCBmbG9hdCByeCwgZmxvYXQgcnksIEZsb2F0UG9pbnQmIHBvaW50MSwgRmxvYXRQb2ludCYg
cG9pbnQyLCBib29sIGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcpCiB7Ci0gICAgRmxvYXRT
aXplIG1pZFBvaW50RGlzdGFuY2UgPSBwb2ludDEgLSBwb2ludDI7CisgICAgRmxvYXRQb2ludCBt
aWRQb2ludERpc3RhbmNlID0gcG9pbnQxIC0gcG9pbnQyOwogICAgIG1pZFBvaW50RGlzdGFuY2Uu
c2NhbGUoMC41Zik7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcG9pbnRUcmFuc2Zvcm07CiAgICAg
cG9pbnRUcmFuc2Zvcm0ucm90YXRlKC1hbmdsZSk7CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9y
bWVkTWlkUG9pbnQgPSBwb2ludFRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KG1pZFBvaW50
RGlzdGFuY2Uud2lkdGgoKSwgbWlkUG9pbnREaXN0YW5jZS5oZWlnaHQoKSkpOworICAgIEZsb2F0
UG9pbnQgdHJhbnNmb3JtZWRNaWRQb2ludCA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KG1pZFBv
aW50RGlzdGFuY2UpOwogICAgIGZsb2F0IHNxdWFyZVJ4ID0gcnggKiByeDsKICAgICBmbG9hdCBz
cXVhcmVSeSA9IHJ5ICogcnk7CiAgICAgZmxvYXQgc3F1YXJlWCA9IHRyYW5zZm9ybWVkTWlkUG9p
bnQueCgpICogdHJhbnNmb3JtZWRNaWRQb2ludC54KCk7CkBAIC00MzgsOSArNDM4LDkgQEAgYm9v
bCBTVkdQYXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9hdCBy
eCwgZmxvYXQgcnksIEZsb2F0UG8KIAogICAgIHBvaW50MSA9IHBvaW50VHJhbnNmb3JtLm1hcFBv
aW50KHBvaW50MSk7CiAgICAgcG9pbnQyID0gcG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQy
KTsKLSAgICBGbG9hdFNpemUgZGVsdGEgPSBwb2ludDIgLSBwb2ludDE7CisgICAgRmxvYXRQb2lu
dCBkZWx0YSA9IHBvaW50MiAtIHBvaW50MTsKIAotICAgIGZsb2F0IGQgPSBkZWx0YS53aWR0aCgp
ICogZGVsdGEud2lkdGgoKSArIGRlbHRhLmhlaWdodCgpICogZGVsdGEuaGVpZ2h0KCk7CisgICAg
ZmxvYXQgZCA9IGRlbHRhLmxlbmd0aFNxdWFyZWQoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvclNx
dWFyZWQgPSBzdGQ6Om1heCgxIC8gZCAtIDAuMjVmLCAwLmYpOwogCiAgICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSBzcXJ0ZihzY2FsZUZhY3RvclNxdWFyZWQpOwpAQCAtNDUwLDEwICs0NTAsMTAgQEAg
Ym9vbCBTVkdQYXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9h
dCByeCwgZmxvYXQgcnksIEZsb2F0UG8KICAgICBkZWx0YS5zY2FsZShzY2FsZUZhY3Rvcik7CiAg
ICAgRmxvYXRQb2ludCBjZW50ZXJQb2ludCA9IHBvaW50MSArIHBvaW50MjsKICAgICBjZW50ZXJQ
b2ludC5zY2FsZSgwLjVmLCAwLjVmKTsKLSAgICBjZW50ZXJQb2ludC5tb3ZlKC1kZWx0YS5oZWln
aHQoKSwgZGVsdGEud2lkdGgoKSk7CisgICAgY2VudGVyUG9pbnQubW92ZSgtZGVsdGEueSgpLCBk
ZWx0YS54KCkpOwogCi0gICAgZmxvYXQgdGhldGExID0gRmxvYXRQb2ludChwb2ludDEgLSBjZW50
ZXJQb2ludCkuc2xvcGVBbmdsZVJhZGlhbnMoKTsKLSAgICBmbG9hdCB0aGV0YTIgPSBGbG9hdFBv
aW50KHBvaW50MiAtIGNlbnRlclBvaW50KS5zbG9wZUFuZ2xlUmFkaWFucygpOworICAgIGZsb2F0
IHRoZXRhMSA9IChwb2ludDEgLSBjZW50ZXJQb2ludCkuc2xvcGVBbmdsZVJhZGlhbnMoKTsKKyAg
ICBmbG9hdCB0aGV0YTIgPSAocG9pbnQyIC0gY2VudGVyUG9pbnQpLnNsb3BlQW5nbGVSYWRpYW5z
KCk7CiAKICAgICBmbG9hdCB0aGV0YUFyYyA9IHRoZXRhMiAtIHRoZXRhMTsKICAgICBpZiAodGhl
dGFBcmMgPCAwICYmIHN3ZWVwRmxhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3Jt
RGlzdGFuY2UuY3BwCmluZGV4IDgwYWJlZTNjMjIxOGU0ZDYyZjYyNDM0ZmU1ZTViNjJjNzE0ZGEy
M2EuLmNkYjkxNDRmOTFhMTJkMjM2YWRhODc5ZmRkZTNjMzFlM2FlYWMwNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcApAQCAtNjEsMTUgKzYxLDE1IEBA
IFNWR1RyYW5zZm9ybURpc3RhbmNlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZShjb25zdCBTVkdUcmFu
c2Zvcm0mIGZyb21TVkdUcmFuc2Zvcm0sCiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFO
U0ZPUk1fVU5LTk9XTjoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNW
R19UUkFOU0ZPUk1fUk9UQVRFOiB7Ci0gICAgICAgIEZsb2F0U2l6ZSBjZW50ZXJEaXN0YW5jZSA9
IHRvU1ZHVHJhbnNmb3JtLnJvdGF0aW9uQ2VudGVyKCkgLSBmcm9tU1ZHVHJhbnNmb3JtLnJvdGF0
aW9uQ2VudGVyKCk7CisgICAgICAgIEZsb2F0UG9pbnQgY2VudGVyRGlzdGFuY2UgPSB0b1NWR1Ry
YW5zZm9ybS5yb3RhdGlvbkNlbnRlcigpIC0gZnJvbVNWR1RyYW5zZm9ybS5yb3RhdGlvbkNlbnRl
cigpOwogICAgICAgICBtX2FuZ2xlID0gdG9TVkdUcmFuc2Zvcm0uYW5nbGUoKSAtIGZyb21TVkdU
cmFuc2Zvcm0uYW5nbGUoKTsKLSAgICAgICAgbV9jeCA9IGNlbnRlckRpc3RhbmNlLndpZHRoKCk7
Ci0gICAgICAgIG1fY3kgPSBjZW50ZXJEaXN0YW5jZS5oZWlnaHQoKTsKKyAgICAgICAgbV9jeCA9
IGNlbnRlckRpc3RhbmNlLngoKTsKKyAgICAgICAgbV9jeSA9IGNlbnRlckRpc3RhbmNlLnkoKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNG
T1JNX1RSQU5TTEFURTogewotICAgICAgICBGbG9hdFNpemUgdHJhbnNsYXRpb25EaXN0YW5jZSA9
IHRvU1ZHVHJhbnNmb3JtLnRyYW5zbGF0ZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS50cmFuc2xhdGUo
KTsKLSAgICAgICAgbV90cmFuc2Zvcm0udHJhbnNsYXRlKHRyYW5zbGF0aW9uRGlzdGFuY2Uud2lk
dGgoKSwgdHJhbnNsYXRpb25EaXN0YW5jZS5oZWlnaHQoKSk7CisgICAgICAgIEZsb2F0UG9pbnQg
dHJhbnNsYXRpb25EaXN0YW5jZSA9IHRvU1ZHVHJhbnNmb3JtLnRyYW5zbGF0ZSgpIC0gZnJvbVNW
R1RyYW5zZm9ybS50cmFuc2xhdGUoKTsKKyAgICAgICAgbV90cmFuc2Zvcm0udHJhbnNsYXRlKHRy
YW5zbGF0aW9uRGlzdGFuY2UueCgpLCB0cmFuc2xhdGlvbkRpc3RhbmNlLnkoKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TQ0FM
RTogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRHJhZ0NsaWVudElt
cGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRHJhZ0NsaWVudEltcGwuY3BwCmlu
ZGV4IDM5ZjQ4YzZiNWJiYWU4YTYzZjNmYTIzNTViZWExODhhYzY3M2U2MTQuLjQ3MDZmNjk3NzI1
NjU0NWYwN2M0MDZkZGFiNThmNTI1YTIxOTBmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0RyYWdDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9EcmFnQ2xpZW50SW1wbC5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBEcmFnQ2xp
ZW50SW1wbDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UsCiAKICAgICBEcmFnT3Bl
cmF0aW9uIGRyYWdPcGVyYXRpb25NYXNrID0gY2xpcGJvYXJkLT5zb3VyY2VPcGVyYXRpb24oKTsK
IAotICAgIEludFNpemUgb2Zmc2V0U2l6ZShldmVudFBvcyAtIGRyYWdJbWFnZU9yaWdpbik7Ci0g
ICAgV2ViUG9pbnQgb2Zmc2V0UG9pbnQob2Zmc2V0U2l6ZS53aWR0aCgpLCBvZmZzZXRTaXplLmhl
aWdodCgpKTsKKyAgICBJbnRQb2ludCBvZmZzZXQgPSBldmVudFBvcyAtIGRyYWdJbWFnZU9yaWdp
bjsKKyAgICBXZWJQb2ludCBvZmZzZXRQb2ludChvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsKIAog
ICAgIGlmIChkcmFnSW1hZ2UgJiYgZHJhZ0ltYWdlLT5iaXRtYXAgJiYgbV93ZWJWaWV3LT5kZXZp
Y2VTY2FsZUZhY3RvcigpICE9IGRyYWdJbWFnZS0+cmVzb2x1dGlvblNjYWxlKSB7CiAgICAgICAg
IEFTU0VSVChkcmFnSW1hZ2UtPnJlc29sdXRpb25TY2FsZSA+IDApOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggOWU3MjUyODhhMGRjNzE2YWJiODY0
ZjAyYzE5MmI5Y2QzZTViNmEwZi4uMGU1MDNiMGMwNzFkMDA3NmE0MTg4YTRmMTAyYTJjZjkyZmE1
Y2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBA
IC0yMDAxLDEwICsyMDAxLDggQEAgaW50IFdlYkZyYW1lSW1wbDo6bmVhcmVzdEZpbmRNYXRjaChj
b25zdCBGbG9hdFBvaW50JiBwb2ludCwgZmxvYXQmIGRpc3RhbmNlU3F1YXIKICAgICBkaXN0YW5j
ZVNxdWFyZWQgPSBGTFRfTUFYOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9maW5kTWF0
Y2hlc0NhY2hlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVCghbV9maW5kTWF0Y2hlc0Nh
Y2hlW2ldLm1fcmVjdC5pc0VtcHR5KCkpOwotICAgICAgICBGbG9hdFNpemUgb2Zmc2V0ID0gcG9p
bnQgLSBtX2ZpbmRNYXRjaGVzQ2FjaGVbaV0ubV9yZWN0LmNlbnRlcigpOwotICAgICAgICBmbG9h
dCB3aWR0aCA9IG9mZnNldC53aWR0aCgpOwotICAgICAgICBmbG9hdCBoZWlnaHQgPSBvZmZzZXQu
aGVpZ2h0KCk7Ci0gICAgICAgIGZsb2F0IGN1cnJlbnREaXN0YW5jZVNxdWFyZWQgPSB3aWR0aCAq
IHdpZHRoICsgaGVpZ2h0ICogaGVpZ2h0OworICAgICAgICBGbG9hdFBvaW50IG9mZnNldCA9IHBv
aW50IC0gbV9maW5kTWF0Y2hlc0NhY2hlW2ldLm1fcmVjdC5jZW50ZXIoKTsKKyAgICAgICAgZmxv
YXQgY3VycmVudERpc3RhbmNlU3F1YXJlZCA9IG9mZnNldC5sZW5ndGhTcXVhcmVkKCk7CiAgICAg
ICAgIGlmIChjdXJyZW50RGlzdGFuY2VTcXVhcmVkIDwgZGlzdGFuY2VTcXVhcmVkKSB7CiAgICAg
ICAgICAgICBuZWFyZXN0ID0gaTsKICAgICAgICAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGN1cnJl
bnREaXN0YW5jZVNxdWFyZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5k
ZXggNmU5NzMwMjE2NjJiNDBkMzZhMjg0YzNmZDFkMDQ5YWI2NmEyNTk5Ni4uNTQ0OGM1MTdkNTNm
Yzk2M2M4ZTJhOWI2NDM0NTMzZTQ0MTg4MzcwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJl
bmRlcmVyLmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFk
anVzdFBvc2l0aW9uRm9yRml4ZWRMYXllcnMoKQogICAgIC8vIHRoZW0gYnkgdGhlIGRlbHRhIGJl
dHdlZW4gdGhlIGN1cnJlbnQgcG9zaXRpb24gYW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgdmlld3Bv
cnQgdXNlZCBmb3IgdGhlIGxhc3QgbGF5b3V0LgogICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRp
b24gPSBib3VuZGVkU2Nyb2xsUG9zaXRpb24obV92aXNpYmxlQ29udGVudHNSZWN0LmxvY2F0aW9u
KCksIG1fdmlzaWJsZUNvbnRlbnRzUmVjdCwgbV9jb250ZW50c1NpemUpOwogICAgIEZsb2F0UG9p
bnQgcmVuZGVyZWRTY3JvbGxQb3NpdGlvbiA9IGJvdW5kZWRTY3JvbGxQb3NpdGlvbihtX3JlbmRl
cmVkQ29udGVudHNTY3JvbGxQb3NpdGlvbiwgbV92aXNpYmxlQ29udGVudHNSZWN0LCBtX2NvbnRl
bnRzU2l6ZSk7Ci0gICAgRmxvYXRTaXplIGRlbHRhID0gc2Nyb2xsUG9zaXRpb24gLSByZW5kZXJl
ZFNjcm9sbFBvc2l0aW9uOworICAgIEZsb2F0U2l6ZSBkZWx0YSA9IHRvRmxvYXRTaXplKHNjcm9s
bFBvc2l0aW9uIC0gcmVuZGVyZWRTY3JvbGxQb3NpdGlvbik7CiAKICAgICBMYXllclJhd1B0ck1h
cDo6aXRlcmF0b3IgZW5kID0gbV9maXhlZExheWVycy5lbmQoKTsKICAgICBmb3IgKExheWVyUmF3
UHRyTWFwOjppdGVyYXRvciBpdCA9IG1fZml4ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQwYTQ4NDUyYTU1NTgyZjU3
YmQzOS4uZGM2MTU1OWVkMzNkZjc3NDYxYzA1OWVlNjNjMTc4MDY2NDQ0MjFmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNv
bXB1dGVQaXhlbEFsaWdubWVudChGbG9hdFBvaW50JiBwb3NpdGlvbiwgRmxvYXQKICAgICBhbGln
bmVkQm91bmRzLnNjYWxlKDEgLyBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOwogCiAgICAgLy8g
Q29udmVydCBiYWNrIHRvIGxheWVyIGNvb3JkaW5hdGVzLgotICAgIGFsaWdubWVudE9mZnNldCA9
IGJhc2VSZWxhdGl2ZUJvdW5kcy5sb2NhdGlvbigpIC0gYWxpZ25lZEJvdW5kcy5sb2NhdGlvbigp
OworICAgIGFsaWdubWVudE9mZnNldCA9IHRvRmxvYXRTaXplKGJhc2VSZWxhdGl2ZUJvdW5kcy5s
b2NhdGlvbigpIC0gYWxpZ25lZEJvdW5kcy5sb2NhdGlvbigpKTsKIAogICAgIHBvc2l0aW9uID0g
bV9wb3NpdGlvbiAtIGFsaWdubWVudE9mZnNldDsKICAgICBzaXplID0gYWxpZ25lZEJvdW5kcy5z
aXplKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182003</attachid>
            <date>2013-01-09 16:10:17 -0800</date>
            <delta_ts>2013-01-09 17:22:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106408-20130110110719.patch</filename>
            <type>text/plain</type>
            <size>70591</size>
            <attacher name="Steve Block">steveblock</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJiM2NjYzI4Y2E0Nzg1
OWI5NDA0MjhjYjgyNmFlZWMwZjAxMWE1NC4uOGRkM2U4MTlmMDJkOWM3NmM3MDA4Mjg3MTg0MDVm
MjI2OWEwMWM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAxMy0wMS0wOSAgU3Rl
dmUgQmxvY2sgIDxzdGV2ZWJsb2NrQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2Ugc2Vt
YW50aWNzIG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBmcm9tIGFub3RoZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjQwOAorCisg
ICAgICAgIFRoZSBjb21tb24gY2FzZSBvZiBzdWJ0cmFjdGluZyBvbmUgSW50L0Zsb2F0UG9pbnQg
ZnJvbSBhbm90aGVyIGlzIHRvCisgICAgICAgIG9idGFpbiBhIHJlbGF0aXZlIHBvc2l0aW9uIG9y
IHZlY3Rvciwgc28gdGhpcyBzaG91bGQgYmUgc3VwcG9ydGVkIGJ5CisgICAgICAgIG9wZXJhdG9y
LSgpLiAgQ3JlYXRpbmcgYW4gSW50L0Zsb2F0U2l6ZSBmcm9tIHR3byBJbnQvRmxvYXRQb2ludHMg
aXMgYQorICAgICAgICBsZXNzIGNvbW1vbiBvcGVyYXRpb24gYW5kIHNob3VsZCBiZSBtYWRlIG1v
cmUgZXhwbGljaXQuIFRoaXMgY2hhbmdlIC4uLgorICAgICAgICAtIHJlbW92ZXMgJ0ludC9GbG9h
dFNpemUgb3BlcmF0b3ItKGNvbnN0IGludC9GbG9hdFBvaW50JiwgY29uc3QgSW50L0Zsb2F0UG9p
bnQmKScKKyAgICAgICAgLSBhZGRzICdJbnQvRmxvYXRQb2ludCBvcGVyYXRvci0oY29uc3QgaW50
L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJworICAgICAgICAtIGFkZHMgJ0lu
dC9GbG9hdFNpemUgSW50L0Zsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhjb25zdCBpbnQvRmxv
YXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisKKyAgICAgICAgQWxzbyBhZGRzICdm
bG9hdCBGbG9hdFBvaW50OjpkaXN0YW5jZShTcXVhcmVkKVRvUG9pbnQoY29uc3QgRmxvYXRQb2lu
dCYpJworICAgICAgICBhcyBhIGNvbnZlbmllbmNlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIG5vIGZ1bmN0aW9uYWwg
Y2hhbmdlLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QWNjZXNzaWJpbGl0eU9iamVjdDo6ZWxlbWVudEFjY2Vzc2liaWxpdHlIaXRUZXN0KToKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6cmVtb3RlU1ZHRWxlbWVudEhp
dFRlc3QpOgorICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0dyYWRpZW50VmFsdWU6OmFkZFN0b3BzKToKKyAgICAgICAgKFdlYkNvcmU6OmRp
c3RhbmNlVG9DbG9zZXN0Q29ybmVyKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3RhbmNlVG9GYXJ0
aGVzdENvcm5lcik6CisgICAgICAgIChXZWJDb3JlOjpob3Jpem9udGFsRWxsaXBzZVJhZGl1cyk6
CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29u
dGFpbmVyTm9kZTo6Ym91bmRpbmdCb3gpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQ6OmNhbGN1bGF0ZUNvbXBvc2l0aW5nQnVmZmVyUmVjdCk6CisgICAgICAgICogcGFn
ZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkcmFn
SHlzdGVyZXNpc0V4Y2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFu
ZGxlRHJhZyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
Ojpjb21wdXRlU3RpY2t5T2Zmc2V0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Ny
b2xsaW5nVHJlZUZpeGVkTm9kZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
aXhlZE5vZGU6OnBhcmVudFNjcm9sbFBvc2l0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW06CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6cGFyZW50U2Nyb2xsUG9zaXRpb25EaWRDaGFu
Z2UpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50
OjpzY2FsZSk6CisgICAgICAgIChGbG9hdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yLSk6CisgICAgICAgIChXZWJDb3JlOjpGbG9hdFBvaW50OjpkaXN0YW5jZVNxdWFyZWRUb1Bv
aW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRQb2ludDo6
ZGlzdGFuY2VUb1BvaW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5hbnQpOgorICAgICAgICAoV2ViQ29yZTo6
aXNQb2ludEluVHJpYW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRNb3N0Q29ybmVyVG9W
ZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRRdWFkOjppbnRlcnNlY3RzUmVjdCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVuY2xvc2luZ0ludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6ZW5jbG9zZWRJbnRSZWN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChGbG9hdFNpemUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojp0
cmFuc2xhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnRQb2ludDo6aXNaZXJvKToKKyAgICAgICAgKEludFBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkludFBvaW50OjpsZW5ndGhTcXVhcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yLSk6CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6ZGlzdGFuY2VTcXVh
cmVkVG9Qb2ludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5jcHA6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkludFNpemU6OmZyb21Db3Ju
ZXJQb2ludHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoSW50U2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvTGF5b3V0UmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdJbnRSZWN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UGF0aFRyYXZlcnNhbFN0YXRlOjpwcm9jZXNzU2VnbWVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2hhZG93Qmx1ci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzTGF5ZXJDQTo6Y29tcHV0ZVBpeGVsQWxpZ25tZW50KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpMb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvcjo6dHJpYW5ndWxhdGVIZWxw
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TG9vcEJsaW5uTWF0aFV0aWxzOjphcHByb3hFcXVhbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXI6OnNuYXBSdWJiZXJCYW5k
VGltZXJGaXJlZCk6CisgICAgICAgICogcmVuZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZGV0ZXJtaW5hbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjdWxhdGVBdXRvc2Ny
b2xsRGlyZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJ
bWFnZUdlb21ldHJ5OjpyZWxhdGl2ZVBoYXNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0ZWRTY3JvbGxEZWx0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGFuU2Nyb2xsRnJvbVBvaW50KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpvZmZzZXRGcm9tUmVzaXplQ29ybmVyKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
aXN0Qm94OjpzY3JvbGxUb3dhcmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpwYWludCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9TVkdNYXJrZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJr
ZXJEYXRhOjpjdXJyZW50QW5nbGUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6Y2Fs
Y3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdQYXRoUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1BhdGhQYXJzZXI6OmRlY29tcG9zZUFyY1RvQ3ViaWMpOgorICAgICAg
ICAqIHN2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
cmFuc2Zvcm1EaXN0YW5jZTo6U1ZHVHJhbnNmb3JtRGlzdGFuY2UpOgorCiAyMDEzLTAxLTA4ICBU
b20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENvcHktcGFzdGUgcHJl
c2VydmVzIDxlbWJlZD4gdGFncyBjb250YWluaW5nIGFjdGl2ZSBjb250ZW50LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCA0YjdiNjM3NTE5NzAyN2NlOGYxMWFkYWQ2NzY0MTZjM2ViY2Nm
M2RhLi4yMWI4ODc4YjNhM2YzNTQ5ZjE4ZWVkNDE0MDdlM2ZjNjdmOTM2OTljIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEzLTAxLTA5ICBTdGV2ZSBCbG9j
ayAgPHN0ZXZlYmxvY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSBzZW1hbnRpY3Mg
b2Ygc3VidHJhY3Rpbmcgb25lIEludC9GbG9hdFBvaW50IGZyb20gYW5vdGhlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA2NDA4CisKKyAgICAgICAg
VGhlIGNvbW1vbiBjYXNlIG9mIHN1YnRyYWN0aW5nIG9uZSBJbnQvRmxvYXRQb2ludCBmcm9tIGFu
b3RoZXIgaXMgdG8KKyAgICAgICAgb2J0YWluIGEgcmVsYXRpdmUgcG9zaXRpb24gb3IgdmVjdG9y
LCBzbyB0aGlzIHNob3VsZCBiZSBzdXBwb3J0ZWQgYnkKKyAgICAgICAgb3BlcmF0b3ItKCkuICBD
cmVhdGluZyBhbiBJbnQvRmxvYXRTaXplIGZyb20gdHdvIEludC9GbG9hdFBvaW50cyBpcyBhCisg
ICAgICAgIGxlc3MgY29tbW9uIG9wZXJhdGlvbiBhbmQgc2hvdWxkIGJlIG1hZGUgbW9yZSBleHBs
aWNpdC4gVGhpcyBjaGFuZ2UgLi4uCisgICAgICAgIC0gcmVtb3ZlcyAnSW50L0Zsb2F0U2l6ZSBv
cGVyYXRvci0oY29uc3QgaW50L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQvRmxvYXRQb2ludCYpJwor
ICAgICAgICAtIGFkZHMgJ0ludC9GbG9hdFBvaW50IG9wZXJhdG9yLShjb25zdCBpbnQvRmxvYXRQ
b2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisgICAgICAgIC0gYWRkcyAnSW50L0Zsb2F0
U2l6ZSBJbnQvRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGNvbnN0IGludC9GbG9hdFBvaW50
JiwgY29uc3QgSW50L0Zsb2F0UG9pbnQmKScKKworICAgICAgICBBbHNvIGFkZHMgJ2Zsb2F0IEZs
b2F0UG9pbnQ6OmRpc3RhbmNlKFNxdWFyZWQpVG9Qb2ludChjb25zdCBGbG9hdFBvaW50JiknCisg
ICAgICAgIGFzIGEgY29udmVuaWVuY2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBzcmMvRHJhZ0NsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpEcmFnQ2xpZW50SW1wbDo6c3RhcnREcmFnKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpuZWFyZXN0RmluZE1hdGNo
KToKKwogMjAxMy0wMS0wOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBDb3B5LXBhc3RlIHByZXNlcnZlcyA8ZW1iZWQ+IHRhZ3MgY29udGFpbmluZyBhY3RpdmUg
Y29udGVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA4NmQyNDcwOWM0NDU4ZWVlOTU3YWZlN2I1MGZlYTAxNzQy
NmVkY2FmLi4xYzNiNTU5MDcwMDIxMmI2YmJjMjg0MzNiOWY2ODQ1ZDEyMDk2Nzk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTMtMDEtMDkgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9j
a0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ2hhbmdlIHNlbWFudGljcyBvZiBzdWJ0cmFjdGlu
ZyBvbmUgSW50L0Zsb2F0UG9pbnQgZnJvbSBhbm90aGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY0MDgKKworICAgICAgICBUaGUgY29tbW9uIGNh
c2Ugb2Ygc3VidHJhY3Rpbmcgb25lIEludC9GbG9hdFBvaW50IGZyb20gYW5vdGhlciBpcyB0bwor
ICAgICAgICBvYnRhaW4gYSByZWxhdGl2ZSBwb3NpdGlvbiBvciB2ZWN0b3IsIHNvIHRoaXMgc2hv
dWxkIGJlIHN1cHBvcnRlZCBieQorICAgICAgICBvcGVyYXRvci0oKS4gIENyZWF0aW5nIGFuIElu
dC9GbG9hdFNpemUgZnJvbSB0d28gSW50L0Zsb2F0UG9pbnRzIGlzIGEKKyAgICAgICAgbGVzcyBj
b21tb24gb3BlcmF0aW9uIGFuZCBzaG91bGQgYmUgbWFkZSBtb3JlIGV4cGxpY2l0LiBUaGlzIGNo
YW5nZSAuLi4KKyAgICAgICAgLSByZW1vdmVzICdJbnQvRmxvYXRTaXplIG9wZXJhdG9yLShjb25z
dCBpbnQvRmxvYXRQb2ludCYsIGNvbnN0IEludC9GbG9hdFBvaW50JiknCisgICAgICAgIC0gYWRk
cyAnSW50L0Zsb2F0UG9pbnQgb3BlcmF0b3ItKGNvbnN0IGludC9GbG9hdFBvaW50JiwgY29uc3Qg
SW50L0Zsb2F0UG9pbnQmKScKKyAgICAgICAgLSBhZGRzICdJbnQvRmxvYXRTaXplIEludC9GbG9h
dFNpemU6OmZyb21Db3JuZXJQb2ludHMoY29uc3QgaW50L0Zsb2F0UG9pbnQmLCBjb25zdCBJbnQv
RmxvYXRQb2ludCYpJworCisgICAgICAgIEFsc28gYWRkcyAnZmxvYXQgRmxvYXRQb2ludDo6ZGlz
dGFuY2UoU3F1YXJlZClUb1BvaW50KGNvbnN0IEZsb2F0UG9pbnQmKScKKyAgICAgICAgYXMgYSBj
b252ZW5pZW5jZS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmFkanVzdFBvc2l0aW9uRm9y
Rml4ZWRMYXllcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmNvbXB1dGVQaXhlbEFsaWdubWVudCk6CisKIDIwMTMt
MDEtMDggIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBT
aWxlbmNlIGEgc2FuZGJveCB2aW9sYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggNmJmOTQy
Yzk4NTk2NjQwMGZkMWEyMWFmYzQxYzZjOTI1ZWFjZDk2ZC4uZDhjYTE0ZGE4ZWZiZjQwODRjODQw
ZWM4Njk5MDAwZjRjOTc3OThhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTE5MTcsNiArMTkx
Nyw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmNwcAogICAg
IHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50
U2l6ZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5jcHAKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QYXRoLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2ZXJz
YWxTdGF0ZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGJhZTI4NzhhMGJm
ZjQ1ZWM1Zjk2MGNkZGVkZWQwMDMxYWJlZjE5NzcuLjZmOGY4ZDU0NzUwZmFmM2U3NGM1NTAxZGE3
OTYxZTY3ZDJiZTBkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNTU3OCw2
ICs1NTc4LDcgQEAgd2ViY29yZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
U2l6ZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNpemUuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZUhhc2guaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF0aW4xVGV4dEl0ZXJhdG9yLmggXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggMWY0ZWJiNmUzMjUzYTkwNTVjMTVjYTU4MTg2NzJkMTBhZjBiNjg1OC4uOGIz
ZGNmMmI4ZmYwNzc3MmEwZDVjZDU3ZDc3NWU4OTVjMmNjODBmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC05
OTksNiArOTk5LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VP
cmllbnRhdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ludFNpemUuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoLmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBcCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDIyY2Q3NGU4OGZiNGNj
NTUxNWY0NTA2M2RmYjNmZmEyMmE3ZTMxODEuLjZlODE3YjRmN2ZkNmFjN2IwMGZlNzc4Y2IzOWU5
OWI2ZDJiOWY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ2MjcsNiArNDYyNyw3IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvSW50UmVjdC5jcHAnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFNpemUuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9MYXlvdXRSZWN0LmNw
cCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvUmVnaW9uLmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRl
eCA5YjgzMTc5MDUyNzgyZDQ4NGRhODc3ZTFlMjlmNGY1YTFiNTdmZTNiLi5iNGYzY2IxMzZhYTVm
OTY5ZTM1MTgwODMxNTFhN2EyMDgzZDdlZTMzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMjk3OTMsNiArMjk3OTMsMTAgQEAKIAkJCQkJPgog
CQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdy
YXBoaWNzXEludFNpemUuY3BwIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW50U2l6ZS5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5jcHAKaW5kZXggNDcyMjcwYzE4MmFiNzVlN2IwMjdmNDM1ZjFlMjVmZGJm
MTdmNzIzNC4uNThkYzZiMzBkYTgwYTk4YTVhMTNjY2RiM2NlMWI1YWU0YWQ4MjQzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCkBAIC0xNTIyLDcgKzE1MjIsNyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5T2JqZWN0OjplbGVtZW50QWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UAogICAgICAg
ICBXaWRnZXQqIHdpZGdldCA9IHdpZGdldEZvckF0dGFjaG1lbnRWaWV3KCk7CiAgICAgICAgIC8v
IE5vcm1hbGl6ZSB0aGUgcG9pbnQgZm9yIHRoZSB3aWRnZXQncyBib3VuZHMuCiAgICAgICAgIGlm
ICh3aWRnZXQgJiYgd2lkZ2V0LT5pc0ZyYW1lVmlldygpKQotICAgICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUod2lkZ2V0KS0+YWNjZXNzaWJpbGl0eUhpdFRlc3Qo
SW50UG9pbnQocG9pbnQgLSB3aWRnZXQtPmZyYW1lUmVjdCgpLmxvY2F0aW9uKCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHdpZGdldCktPmFjY2Vz
c2liaWxpdHlIaXRUZXN0KHBvaW50IC0gd2lkZ2V0LT5mcmFtZVJlY3QoKS5sb2NhdGlvbigpKTsK
ICAgICB9CiAgICAgCiAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBtb2NrIGVsZW1lbnRz
IHRoYXQgbmVlZCB0byBiZSBoYW5kbGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggNDJlNTU3
NjBjZWVlMDNjYzdiOGY3MDQzODY1ZmM0Y2RiZTJlZjg2ZS4uMDNlZWI0ZTQwYWVkMDFmMzE3OTJj
ZjQxYmE1ODY3MGI5M2UwZTkyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC0yMTcwLDggKzIx
NzAsOCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpy
ZW1vdGVTVkdFbGVtZW50SGl0VGVzdChjb25zdCBJbgogICAgIGlmICghcmVtb3RlKQogICAgICAg
ICByZXR1cm4gMDsKICAgICAKLSAgICBJbnRTaXplIG9mZnNldCA9IHBvaW50IC0gcm91bmRlZElu
dFBvaW50KGJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9uKCkpOwotICAgIHJldHVybiByZW1vdGUt
PmFjY2Vzc2liaWxpdHlIaXRUZXN0KEludFBvaW50KG9mZnNldCkpOworICAgIEludFBvaW50IG9m
ZnNldCA9IHBvaW50IC0gcm91bmRlZEludFBvaW50KGJvdW5kaW5nQm94UmVjdCgpLmxvY2F0aW9u
KCkpOworICAgIHJldHVybiByZW1vdGUtPmFjY2Vzc2liaWxpdHlIaXRUZXN0KG9mZnNldCk7CiB9
CiAKIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1l
bnRBY2Nlc3NpYmlsaXR5SGl0VGVzdChjb25zdCBJbnRQb2ludCYgcG9pbnQpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKaW5kZXggN2RjMjJiYmJkOGQwM2E3ZTQy
OThkZjhkYzE3ZTc0YjMyZjQwZjQxMy4uNWY0OWYxZWYwYjRlNDRjYzQ3OTIwYWViMjJhMmU0YzI3
N2Q3YTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcApAQCAtMTkx
LDggKzE5MSw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQqIGdy
YWRpZW50LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kCiAgICAgICAgICAgICAgICAgc3Rv
cHNbaV0ub2Zmc2V0ID0gc3RvcC5tX3Bvc2l0aW9uLT5nZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkgLyAxMDA7CiAgICAgICAgICAgICBlbHNlIGlmIChzdG9w
Lm1fcG9zaXRpb24tPmlzTGVuZ3RoKCkgfHwgc3RvcC5tX3Bvc2l0aW9uLT5pc0NhbGN1bGF0ZWRQ
ZXJjZW50YWdlV2l0aExlbmd0aCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZEdy
YWRpZW50TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBncmFkaWVudFNp
emUoZ3JhZGllbnRTdGFydCAtIGdyYWRpZW50RW5kKTsKLSAgICAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnRMZW5ndGggPSBncmFkaWVudFNpemUuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ3JhZGllbnRMZW5ndGggPSBncmFkaWVudFN0YXJ0LmRpc3RhbmNlVG9Qb2ludChn
cmFkaWVudEVuZCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGZsb2F0IGxl
bmd0aDsKICAgICAgICAgICAgICAgICBpZiAoc3RvcC5tX3Bvc2l0aW9uLT5pc0xlbmd0aCgpKQpA
QCAtMjgxLDggKzI4MCw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGll
bnQqIGdyYWRpZW50LCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBSZW5kCiAgICAgICAgICAgICAv
LyB0byByZXBlYXQgb3V0IHRvIHRoZSBjb3JuZXJzIG9mIHRoZSBib3guCiAgICAgICAgICAgICBp
ZiAoaXNSYWRpYWxHcmFkaWVudCgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjb21wdXRlZEdy
YWRpZW50TGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgICAgIEZsb2F0U2l6ZSBncmFkaWVudFNp
emUoZ3JhZGllbnRTdGFydCAtIGdyYWRpZW50RW5kKTsKLSAgICAgICAgICAgICAgICAgICAgZ3Jh
ZGllbnRMZW5ndGggPSBncmFkaWVudFNpemUuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICAgICAgICAg
ICAgICAgICAgZ3JhZGllbnRMZW5ndGggPSBncmFkaWVudFN0YXJ0LmRpc3RhbmNlVG9Qb2ludChn
cmFkaWVudEVuZCk7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgaWYgKG1h
eExlbmd0aEZvclJlcGVhdCA+IGdyYWRpZW50TGVuZ3RoKQpAQCAtNzY2LDE2ICs3NjQsMTYgQEAg
ZmxvYXQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZGl1cyhDU1NQcmltaXRpdmVW
YWx1ZSogcmFkaXVzLCBSZW5kZXJTdHkKIHN0YXRpYyBmbG9hdCBkaXN0YW5jZVRvQ2xvc2VzdENv
cm5lcihjb25zdCBGbG9hdFBvaW50JiBwLCBjb25zdCBGbG9hdFNpemUmIHNpemUsIEZsb2F0UG9p
bnQmIGNvcm5lcikKIHsKICAgICBGbG9hdFBvaW50IHRvcExlZnQ7Ci0gICAgZmxvYXQgdG9wTGVm
dERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSB0b3BMZWZ0KS5kaWFnb25hbExlbmd0aCgpOworICAg
IGZsb2F0IHRvcExlZnREaXN0YW5jZSA9IHAuZGlzdGFuY2VUb1BvaW50KHRvcExlZnQpOwogCiAg
ICAgRmxvYXRQb2ludCB0b3BSaWdodChzaXplLndpZHRoKCksIDApOwotICAgIGZsb2F0IHRvcFJp
Z2h0RGlzdGFuY2UgPSBGbG9hdFNpemUocCAtIHRvcFJpZ2h0KS5kaWFnb25hbExlbmd0aCgpOwor
ICAgIGZsb2F0IHRvcFJpZ2h0RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Qb2ludCh0b3BSaWdodCk7
CiAKICAgICBGbG9hdFBvaW50IGJvdHRvbUxlZnQoMCwgc2l6ZS5oZWlnaHQoKSk7Ci0gICAgZmxv
YXQgYm90dG9tTGVmdERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21MZWZ0KS5kaWFnb25h
bExlbmd0aCgpOworICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0YW5jZSA9IHAuZGlzdGFuY2VUb1Bv
aW50KGJvdHRvbUxlZnQpOwogCiAgICAgRmxvYXRQb2ludCBib3R0b21SaWdodChzaXplLndpZHRo
KCksIHNpemUuaGVpZ2h0KCkpOwotICAgIGZsb2F0IGJvdHRvbVJpZ2h0RGlzdGFuY2UgPSBGbG9h
dFNpemUocCAtIGJvdHRvbVJpZ2h0KS5kaWFnb25hbExlbmd0aCgpOworICAgIGZsb2F0IGJvdHRv
bVJpZ2h0RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Qb2ludChib3R0b21SaWdodCk7CiAKICAgICBj
b3JuZXIgPSB0b3BMZWZ0OwogICAgIGZsb2F0IG1pbkRpc3RhbmNlID0gdG9wTGVmdERpc3RhbmNl
OwpAQCAtNzk5LDE2ICs3OTcsMTYgQEAgc3RhdGljIGZsb2F0IGRpc3RhbmNlVG9DbG9zZXN0Q29y
bmVyKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwKIHN0YXRpYyBm
bG9hdCBkaXN0YW5jZVRvRmFydGhlc3RDb3JuZXIoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3Qg
RmxvYXRTaXplJiBzaXplLCBGbG9hdFBvaW50JiBjb3JuZXIpCiB7CiAgICAgRmxvYXRQb2ludCB0
b3BMZWZ0OwotICAgIGZsb2F0IHRvcExlZnREaXN0YW5jZSA9IEZsb2F0U2l6ZShwIC0gdG9wTGVm
dCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCB0b3BMZWZ0RGlzdGFuY2UgPSBwLmRpc3Rh
bmNlVG9Qb2ludCh0b3BMZWZ0KTsKIAogICAgIEZsb2F0UG9pbnQgdG9wUmlnaHQoc2l6ZS53aWR0
aCgpLCAwKTsKLSAgICBmbG9hdCB0b3BSaWdodERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSB0b3BS
aWdodCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCB0b3BSaWdodERpc3RhbmNlID0gcC5k
aXN0YW5jZVRvUG9pbnQodG9wUmlnaHQpOwogCiAgICAgRmxvYXRQb2ludCBib3R0b21MZWZ0KDAs
IHNpemUuaGVpZ2h0KCkpOwotICAgIGZsb2F0IGJvdHRvbUxlZnREaXN0YW5jZSA9IEZsb2F0U2l6
ZShwIC0gYm90dG9tTGVmdCkuZGlhZ29uYWxMZW5ndGgoKTsKKyAgICBmbG9hdCBib3R0b21MZWZ0
RGlzdGFuY2UgPSBwLmRpc3RhbmNlVG9Qb2ludChib3R0b21MZWZ0KTsKIAogICAgIEZsb2F0UG9p
bnQgYm90dG9tUmlnaHQoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKLSAgICBmbG9hdCBi
b3R0b21SaWdodERpc3RhbmNlID0gRmxvYXRTaXplKHAgLSBib3R0b21SaWdodCkuZGlhZ29uYWxM
ZW5ndGgoKTsKKyAgICBmbG9hdCBib3R0b21SaWdodERpc3RhbmNlID0gcC5kaXN0YW5jZVRvUG9p
bnQoYm90dG9tUmlnaHQpOwogCiAgICAgY29ybmVyID0gdG9wTGVmdDsKICAgICBmbG9hdCBtYXhE
aXN0YW5jZSA9IHRvcExlZnREaXN0YW5jZTsKQEAgLTgzMSwxMiArODI5LDEyIEBAIHN0YXRpYyBm
bG9hdCBkaXN0YW5jZVRvRmFydGhlc3RDb3JuZXIoY29uc3QgRmxvYXRQb2ludCYgcCwgY29uc3Qg
RmxvYXRTaXplJiBzaXplCiAKIC8vIENvbXB1dGUgaG9yaXpvbnRhbCByYWRpdXMgb2YgZWxsaXBz
ZSB3aXRoIGNlbnRlciBhdCAwLDAgd2hpY2ggcGFzc2VzIHRocm91Z2ggcCwgYW5kIGhhcwogLy8g
d2lkdGgvaGVpZ2h0IGdpdmVuIGJ5IGFzcGVjdFJhdGlvLgotc3RhdGljIGlubGluZSBmbG9hdCBo
b3Jpem9udGFsRWxsaXBzZVJhZGl1cyhjb25zdCBGbG9hdFNpemUmIHAsIGZsb2F0IGFzcGVjdFJh
dGlvKQorc3RhdGljIGlubGluZSBmbG9hdCBob3Jpem9udGFsRWxsaXBzZVJhZGl1cyhjb25zdCBG
bG9hdFBvaW50JiBwLCBmbG9hdCBhc3BlY3RSYXRpbykKIHsKICAgICAvLyB4XjIvYV4yICsgeV4y
L2JeMiA9IDEKICAgICAvLyBhL2IgPSBhc3BlY3RSYXRpbywgYiA9IGEvYXNwZWN0UmF0aW8KICAg
ICAvLyBhID0gc3FydCh4XjIgKyB5XjIvKDEvcl4yKSkKLSAgICByZXR1cm4gc3FydGYocC53aWR0
aCgpICogcC53aWR0aCgpICsgKHAuaGVpZ2h0KCkgKiBwLmhlaWdodCgpKSAvICgxIC8gKGFzcGVj
dFJhdGlvICogYXNwZWN0UmF0aW8pKSk7CisgICAgcmV0dXJuIHNxcnRmKHAueCgpICogcC54KCkg
KyAocC55KCkgKiBwLnkoKSkgLyAoMSAvIChhc3BlY3RSYXRpbyAqIGFzcGVjdFJhdGlvKSkpOwog
fQogCiAvLyBGSVhNRTogc2hhcmUgY29kZSB3aXRoIHRoZSBsaW5lYXIgdmVyc2lvbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IDIxNWE5MTRhMzM2NjhhZGYzYjU5Yzg0ZjVm
ZDI5MmFjOTI1YjE0ODQuLjEzMTg0M2M3N2FmNjdkNzJhNDBjMWVmYjk0NDU1NzcxZWYxNGMyMjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTk0Myw3ICs5NDMsNyBAQCBM
YXlvdXRSZWN0IENvbnRhaW5lck5vZGU6OmJvdW5kaW5nQm94KCkgY29uc3QKICAgICAgICAgICAg
IHVwcGVyTGVmdCA9IGxvd2VyUmlnaHQ7CiAgICAgfSAKIAotICAgIHJldHVybiBlbmNsb3NpbmdM
YXlvdXRSZWN0KEZsb2F0UmVjdCh1cHBlckxlZnQsIGxvd2VyUmlnaHQuZXhwYW5kZWRUbyh1cHBl
ckxlZnQpIC0gdXBwZXJMZWZ0KSk7CisgICAgcmV0dXJuIGVuY2xvc2luZ0xheW91dFJlY3QoRmxv
YXRSZWN0KHVwcGVyTGVmdCwgRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKGxvd2VyUmlnaHQs
IHVwcGVyTGVmdCkuZXhwYW5kZWRUbyhGbG9hdFNpemUoKSkpKTsKIH0KIAogdm9pZCBDb250YWlu
ZXJOb2RlOjpzZXRGb2N1cyhib29sIHJlY2VpdmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKaW5kZXggN2RkMDkx
NjNlNTg5OWViMzFkNjM3N2E2ZWQxMzQ3MDYzMGQyODEyNS4uODMzNmU4ZTE4YmNjMzViZWE3YWFk
YTg5YjlkNzgwN2I1Yzk4N2QzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCkBAIC0xNjIwLDcgKzE2MjAsNyBA
QCB0ZW1wbGF0ZTxjbGFzcyBUPiBJbnRSZWN0IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6Y2Fs
Y3VsYXRlQ29tcG9zaXRpbmdCdWZmZXJSZQogICAgIEludFBvaW50IG9yaWdpbmFsTG9jYXRpb24g
PSBidWZmZXJSZWN0LmxvY2F0aW9uKCk7CiAgICAgYnVmZmVyUmVjdC5pbnRlcnNlY3QoY2FudmFz
UmVjdCk7CiAgICAgaWYgKGNyb3BwZWRPZmZzZXQpCi0gICAgICAgICpjcm9wcGVkT2Zmc2V0ID0g
b3JpZ2luYWxMb2NhdGlvbiAtIGJ1ZmZlclJlY3QubG9jYXRpb24oKTsKKyAgICAgICAgKmNyb3Bw
ZWRPZmZzZXQgPSBJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKG9yaWdpbmFsTG9jYXRpb24sIGJ1
ZmZlclJlY3QubG9jYXRpb24oKSk7CiAgICAgcmV0dXJuIGJ1ZmZlclJlY3Q7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCAwMjE3YTAyYzg0YzQzMDk1YWJiYzM1Nzgw
NDRkYmFmYmIxNGJjMzZmLi4yNGU4M2I0YmU4MDc2N2VhNzQ2ZTk5NWJiMDMyNjE5ZGM2ZWNkZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC0zMTkwLDcgKzMxOTAsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6ZHJhZ0h5c3RlcmVzaXNFeGNlZWRlZChjb25zdCBGbG9hdFBv
aW50JiBkcmFnVmlld3BvcnRMb2NhdGlvbgogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIEludFBvaW50IGRyYWdMb2NhdGlvbiA9IHZpZXctPndpbmRvd1RvQ29udGVu
dHMoZmxvb3JlZEludFBvaW50KGRyYWdWaWV3cG9ydExvY2F0aW9uKSk7Ci0gICAgSW50U2l6ZSBk
ZWx0YSA9IGRyYWdMb2NhdGlvbiAtIG1fbW91c2VEb3duUG9zOworICAgIEludFBvaW50IGRlbHRh
ID0gZHJhZ0xvY2F0aW9uIC0gbV9tb3VzZURvd25Qb3M7CiAgICAgCiAgICAgaW50IHRocmVzaG9s
ZCA9IEdlbmVyYWxEcmFnSHlzdGVyZXNpczsKICAgICBzd2l0Y2ggKGRyYWdTdGF0ZSgpLm1fZHJh
Z1R5cGUpIHsKQEAgLTMyMTAsNyArMzIxMCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkcmFnSHlz
dGVyZXNpc0V4Y2VlZGVkKGNvbnN0IEZsb2F0UG9pbnQmIGRyYWdWaWV3cG9ydExvY2F0aW9uCiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICAKLSAgICByZXR1cm4gYWJz
KGRlbHRhLndpZHRoKCkpID49IHRocmVzaG9sZCB8fCBhYnMoZGVsdGEuaGVpZ2h0KCkpID49IHRo
cmVzaG9sZDsKKyAgICByZXR1cm4gYWJzKGRlbHRhLngoKSkgPj0gdGhyZXNob2xkIHx8IGFicyhk
ZWx0YS55KCkpID49IHRocmVzaG9sZDsKIH0KICAgICAKIHZvaWQgRXZlbnRIYW5kbGVyOjpmcmVl
Q2xpcGJvYXJkKCkKQEAgLTMzNTMsOCArMzM1Myw4IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5k
bGVEcmFnKGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZW50LCBDaGVja0Ry
CiAgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGRyYWdTdGF0ZSgpLm1f
ZHJhZ1NyYy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRv
ZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1zLgogICAgICAgICAgICAgICAgIEZs
b2F0UG9pbnQgYWJzUG9zID0gcmVuZGVyZXItPmxvY2FsVG9BYnNvbHV0ZSgpOwotICAgICAgICAg
ICAgICAgIEludFNpemUgZGVsdGEgPSBtX21vdXNlRG93blBvcyAtIHJvdW5kZWRJbnRQb2ludChh
YnNQb3MpOwotICAgICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1fZHJhZ0NsaXBib2FyZC0+c2V0
RHJhZ0ltYWdlRWxlbWVudChkcmFnU3RhdGUoKS5tX2RyYWdTcmMuZ2V0KCksIEludFBvaW50KGRl
bHRhKSk7CisgICAgICAgICAgICAgICAgSW50UG9pbnQgZGVsdGEgPSBtX21vdXNlRG93blBvcyAt
IHJvdW5kZWRJbnRQb2ludChhYnNQb3MpOworICAgICAgICAgICAgICAgIGRyYWdTdGF0ZSgpLm1f
ZHJhZ0NsaXBib2FyZC0+c2V0RHJhZ0ltYWdlRWxlbWVudChkcmFnU3RhdGUoKS5tX2RyYWdTcmMu
Z2V0KCksIGRlbHRhKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLy8g
VGhlIHJlbmRlcmVyIGhhcyBkaXNhcHBlYXJlZCwgdGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBvblN0
YXJ0RHJhZyBoYW5kbGVyIGhhcyBoaWRkZW4KICAgICAgICAgICAgICAgICAvLyB0aGUgZWxlbWVu
dCBpbiBzb21lIHdheS4gIEluIHRoaXMgY2FzZSB3ZSBqdXN0IGtpbGwgdGhlIGRyYWcuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50
cy5jcHAKaW5kZXggMGJiYzY1NzdmZDAyZDAxMGJhZDM5NmYxZDkwMjEwODFiYzg4MTc0MC4uOTBl
NDFlNTRjMGExYThjYjc4ODJiYTE0NDY4ZDBjYTExMDFhOTVkYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcApAQCAt
ODksNyArODksNyBAQCBGbG9hdFNpemUgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRz
Ojpjb21wdXRlU3RpY2t5T2Zmc2V0KGNvbnN0IEZsb2F0UmVjdAogICAgICAgICBib3hSZWN0Lm1v
dmUoMCwgdG9wRGVsdGEpOwogICAgIH0KIAotICAgIHJldHVybiBib3hSZWN0LmxvY2F0aW9uKCkg
LSBtX2Fic29sdXRlU3RpY2t5Qm94UmVjdC5sb2NhdGlvbigpOworICAgIHJldHVybiBGbG9hdFNp
emU6OmZyb21Db3JuZXJQb2ludHMoYm94UmVjdC5sb2NhdGlvbigpLCBtX2Fic29sdXRlU3RpY2t5
Qm94UmVjdC5sb2NhdGlvbigpKTsKIH0KIAogRmxvYXRQb2ludCBTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM6OmxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCmluZGV4IDQyM2Zk
MzBlMmE5MjZiNDkzOTliYzQ1YmM5ZjVkZmU0MzA4YmVmZmUuLjRiZDI3ZmQ4Y2VkYjIwZGJhMjEw
YTBjYzY0YjY0YTZkYTU2MjVhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLm1tCkBAIC03Niw3ICs3
Niw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6cGFyZW50U2Nyb2xsUG9zaXRpb25E
aWRDaGFuZ2UoY29uc3QgSW50UmVjdCYgdmlld3BvCiAgICAgaWYgKCFtX2NoaWxkcmVuKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBGbG9hdFNpemUgbmV3RGVsdGEgPSBsYXllclBvc2l0aW9uIC0g
bV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgKyBjdW11bGF0aXZlRGVs
dGE7CisgICAgRmxvYXRTaXplIG5ld0RlbHRhID0gdG9GbG9hdFNpemUobGF5ZXJQb3NpdGlvbiAt
IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURl
bHRhKTsKIAogICAgIHNpemVfdCBzaXplID0gbV9jaGlsZHJlbi0+c2l6ZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tCmluZGV4
IDA2OTA1MTQ0ODNjZTZjMzg0NTVjN2U5Zjc2ZmEwMjhiZGJkMGQ3ZTUuLmFlZWE4OTM3MTlmNjE1
ODNiYzY2NzA1NThlMzg3Y2FiMGVjN2Y1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0KQEAg
LTgwLDcgKzgwLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6cGFyZW50U2Nyb2xs
UG9zaXRpb25EaWRDaGFuZ2UoY29uc3QgSW50UmVjdCYgdmlld3AKICAgICBpZiAoIW1fY2hpbGRy
ZW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IGxheWVyUG9z
aXRpb24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVs
YXRpdmVEZWx0YTsKKyAgICBGbG9hdFNpemUgbmV3RGVsdGEgPSB0b0Zsb2F0U2l6ZShsYXllclBv
c2l0aW9uIC0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgKyBjdW11
bGF0aXZlRGVsdGEpOwogCiAgICAgc2l6ZV90IHNpemUgPSBtX2NoaWxkcmVuLT5zaXplKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggOTc4NjNjNGQxOGVlMWM0NjFlYmNiY2I2YmRl
MjRjNWIzNjQwZjBhYS4uMTM2ODJhODBjMjFmNTU0MzI5ZGM3NDU2NzE2OGZkNzQ1OTQ2MDRmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtOTcsMTIg
Kzk3LDEyIEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3I6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxh
dGZvcm1XaGVlbEV2ZW50JiBlKQogICAgIFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0g
U2Nyb2xsQnlQaXhlbDsKICNlbmRpZgogCi0gICAgSW50U2l6ZSBtYXhGb3J3YXJkU2Nyb2xsRGVs
dGEgPSBtX3Njcm9sbGFibGVBcmVhLT5tYXhpbXVtU2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xs
YWJsZUFyZWEtPnNjcm9sbFBvc2l0aW9uKCk7Ci0gICAgSW50U2l6ZSBtYXhCYWNrd2FyZFNjcm9s
bERlbHRhID0gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJs
ZUFyZWEtPm1pbmltdW1TY3JvbGxQb3NpdGlvbigpOwotICAgIGlmICgoZGVsdGFYIDwgMCAmJiBt
YXhGb3J3YXJkU2Nyb2xsRGVsdGEud2lkdGgoKSA+IDApCi0gICAgICAgIHx8IChkZWx0YVggPiAw
ICYmIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEud2lkdGgoKSA+IDApCi0gICAgICAgIHx8IChkZWx0
YVkgPCAwICYmIG1heEZvcndhcmRTY3JvbGxEZWx0YS5oZWlnaHQoKSA+IDApCi0gICAgICAgIHx8
IChkZWx0YVkgPiAwICYmIG1heEJhY2t3YXJkU2Nyb2xsRGVsdGEuaGVpZ2h0KCkgPiAwKSkgewor
ICAgIEludFBvaW50IG1heEZvcndhcmRTY3JvbGxEZWx0YSA9IG1fc2Nyb2xsYWJsZUFyZWEtPm1h
eGltdW1TY3JvbGxQb3NpdGlvbigpIC0gbV9zY3JvbGxhYmxlQXJlYS0+c2Nyb2xsUG9zaXRpb24o
KTsKKyAgICBJbnRQb2ludCBtYXhCYWNrd2FyZFNjcm9sbERlbHRhID0gbV9zY3JvbGxhYmxlQXJl
YS0+c2Nyb2xsUG9zaXRpb24oKSAtIG1fc2Nyb2xsYWJsZUFyZWEtPm1pbmltdW1TY3JvbGxQb3Np
dGlvbigpOworICAgIGlmICgoZGVsdGFYIDwgMCAmJiBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEueCgp
ID4gMCkKKyAgICAgICAgfHwgKGRlbHRhWCA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0YS54
KCkgPiAwKQorICAgICAgICB8fCAoZGVsdGFZIDwgMCAmJiBtYXhGb3J3YXJkU2Nyb2xsRGVsdGEu
eSgpID4gMCkKKyAgICAgICAgfHwgKGRlbHRhWSA+IDAgJiYgbWF4QmFja3dhcmRTY3JvbGxEZWx0
YS55KCkgPiAwKSkgewogICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKIAogICAgICAgICBpZiAoZGVs
dGFZKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9h
dFBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgK
aW5kZXggMTExZTIzMTgyNjNkYTgyYTU5ZDM1ZjczYjkyZWQ3Yzc0YjAzYjIxMS4uNmEyMGRiYjlh
Y2UyYjJkMDIzZGJkMjNiMTk2OTIwYTI3NTQzZDk1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtMTIwLDYgKzEyMCwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIG1feCArPSBhLngoKTsKICAgICAgICAgbV95ICs9IGEueSgpOwogICAgIH0KKyAg
ICB2b2lkIHNjYWxlKGZsb2F0IHMpCisgICAgeworICAgICAgICBzY2FsZShzLCBzKTsKKyAgICB9
CiAgICAgdm9pZCBzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpCiAgICAgewogICAgICAgICBtX3gg
Kj0gc3g7CkBAIC0xNTAsNiArMTU0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gRmxvYXRQ
b2ludChtX3ksIG1feCk7CiAgICAgfQogCisgICAgZmxvYXQgZGlzdGFuY2VTcXVhcmVkVG9Qb2lu
dChjb25zdCBGbG9hdFBvaW50JikgY29uc3Q7CisgICAgZmxvYXQgZGlzdGFuY2VUb1BvaW50KGNv
bnN0IEZsb2F0UG9pbnQmKSBjb25zdDsKKwogI2lmIFVTRShDRykgfHwgVVNFKFNLSUFfT05fTUFD
X0NIUk9NSVVNKQogICAgIEZsb2F0UG9pbnQoY29uc3QgQ0dQb2ludCYpOwogICAgIG9wZXJhdG9y
IENHUG9pbnQoKSBjb25zdDsKQEAgLTIxMiw5ICsyMTksOSBAQCBpbmxpbmUgRmxvYXRQb2ludCBv
cGVyYXRvcisoY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKICAgICBy
ZXR1cm4gRmxvYXRQb2ludChhLngoKSArIGIueCgpLCBhLnkoKSArIGIueSgpKTsKIH0KIAotaW5s
aW5lIEZsb2F0U2l6ZSBvcGVyYXRvci0oY29uc3QgRmxvYXRQb2ludCYgYSwgY29uc3QgRmxvYXRQ
b2ludCYgYikKK2lubGluZSBGbG9hdFBvaW50IG9wZXJhdG9yLShjb25zdCBGbG9hdFBvaW50JiBh
LCBjb25zdCBGbG9hdFBvaW50JiBiKQogewotICAgIHJldHVybiBGbG9hdFNpemUoYS54KCkgLSBi
LngoKSwgYS55KCkgLSBiLnkoKSk7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQoYS54KCkgLSBiLngo
KSwgYS55KCkgLSBiLnkoKSk7CiB9CiAKIGlubGluZSBGbG9hdFBvaW50IG9wZXJhdG9yLShjb25z
dCBGbG9hdFBvaW50JiBhLCBjb25zdCBGbG9hdFNpemUmIGIpCkBAIC0yNzMsNiArMjgwLDE2IEBA
IGZsb2F0IGZpbmRTbG9wZShjb25zdCBGbG9hdFBvaW50JiBwMSwgY29uc3QgRmxvYXRQb2ludCYg
cDIsIGZsb2F0JiBjKTsKIC8vIEZpbmQgcG9pbnQgd2hlcmUgbGluZXMgdGhyb3VnaCB0aGUgdHdv
IHBhaXJzIG9mIHBvaW50cyBpbnRlcnNlY3QuIFJldHVybnMgZmFsc2UgaWYgdGhlIGxpbmVzIGRv
bid0IGludGVyc2VjdC4KIGJvb2wgZmluZEludGVyc2VjdGlvbihjb25zdCBGbG9hdFBvaW50JiBw
MSwgY29uc3QgRmxvYXRQb2ludCYgcDIsIGNvbnN0IEZsb2F0UG9pbnQmIGQxLCBjb25zdCBGbG9h
dFBvaW50JiBkMiwgRmxvYXRQb2ludCYgaW50ZXJzZWN0aW9uKTsKIAoraW5saW5lIGZsb2F0IEZs
b2F0UG9pbnQ6OmRpc3RhbmNlU3F1YXJlZFRvUG9pbnQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQp
IGNvbnN0Cit7CisgICAgcmV0dXJuICgoKnRoaXMpIC0gcG9pbnQpLmxlbmd0aFNxdWFyZWQoKTsK
K30KKworaW5saW5lIGZsb2F0IEZsb2F0UG9pbnQ6OmRpc3RhbmNlVG9Qb2ludChjb25zdCBGbG9h
dFBvaW50JiBwb2ludCkgY29uc3QKK3sKKyAgICByZXR1cm4gKCgqdGhpcykgLSBwb2ludCkubGVu
Z3RoKCk7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRRdWFkLmNwcAppbmRleCBmYzlkNjEzZWM3Yjk5NTFkM2FlN2YxZWY0MjYyMzJi
OTQ4NmMyYjJlLi4zOWYyNzI5M2Y0NGIyNDk5NzM3Yjg0NjgwZDViZTliMWNhNTc3YjQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFF1YWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UXVhZC5jcHAKQEAgLTQ3
LDI5ICs0NywyNCBAQCBzdGF0aWMgaW5saW5lIGZsb2F0IG1heDQoZmxvYXQgYSwgZmxvYXQgYiwg
ZmxvYXQgYywgZmxvYXQgZCkKICAgICByZXR1cm4gbWF4KG1heChhLCBiKSwgbWF4KGMsIGQpKTsK
IH0KIAotaW5saW5lIGZsb2F0IGRvdChjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZsb2F0U2l6
ZSYgYikKK2lubGluZSBmbG9hdCBkZXRlcm1pbmFudChjb25zdCBGbG9hdFBvaW50JiBhLCBjb25z
dCBGbG9hdFBvaW50JiBiKQogewotICAgIHJldHVybiBhLndpZHRoKCkgKiBiLndpZHRoKCkgKyBh
LmhlaWdodCgpICogYi5oZWlnaHQoKTsKLX0KLQotaW5saW5lIGZsb2F0IGRldGVybWluYW50KGNv
bnN0IEZsb2F0U2l6ZSYgYSwgY29uc3QgRmxvYXRTaXplJiBiKQotewotICAgIHJldHVybiBhLndp
ZHRoKCkgKiBiLmhlaWdodCgpIC0gYS5oZWlnaHQoKSAqIGIud2lkdGgoKTsKKyAgICByZXR1cm4g
YS54KCkgKiBiLnkoKSAtIGEueSgpICogYi54KCk7CiB9CiAKIGlubGluZSBib29sIGlzUG9pbnRJ
blRyaWFuZ2xlKGNvbnN0IEZsb2F0UG9pbnQmIHAsIGNvbnN0IEZsb2F0UG9pbnQmIHQxLCBjb25z
dCBGbG9hdFBvaW50JiB0MiwgY29uc3QgRmxvYXRQb2ludCYgdDMpCiB7CiAgICAgLy8gQ29tcHV0
ZSB2ZWN0b3JzICAgICAgICAKLSAgICBGbG9hdFNpemUgdjAgPSB0MyAtIHQxOwotICAgIEZsb2F0
U2l6ZSB2MSA9IHQyIC0gdDE7Ci0gICAgRmxvYXRTaXplIHYyID0gcCAtIHQxOworICAgIEZsb2F0
UG9pbnQgdjAgPSB0MyAtIHQxOworICAgIEZsb2F0UG9pbnQgdjEgPSB0MiAtIHQxOworICAgIEZs
b2F0UG9pbnQgdjIgPSBwIC0gdDE7CiAgICAgCiAgICAgLy8gQ29tcHV0ZSBkb3QgcHJvZHVjdHMK
LSAgICBmbG9hdCBkb3QwMCA9IGRvdCh2MCwgdjApOwotICAgIGZsb2F0IGRvdDAxID0gZG90KHYw
LCB2MSk7Ci0gICAgZmxvYXQgZG90MDIgPSBkb3QodjAsIHYyKTsKLSAgICBmbG9hdCBkb3QxMSA9
IGRvdCh2MSwgdjEpOwotICAgIGZsb2F0IGRvdDEyID0gZG90KHYxLCB2Mik7CisgICAgZmxvYXQg
ZG90MDAgPSB2MC5kb3QodjApOworICAgIGZsb2F0IGRvdDAxID0gdjAuZG90KHYxKTsKKyAgICBm
bG9hdCBkb3QwMiA9IHYwLmRvdCh2Mik7CisgICAgZmxvYXQgZG90MTEgPSB2MS5kb3QodjEpOwor
ICAgIGZsb2F0IGRvdDEyID0gdjEuZG90KHYyKTsKIAogICAgIC8vIENvbXB1dGUgYmFyeWNlbnRy
aWMgY29vcmRpbmF0ZXMKICAgICBmbG9hdCBpbnZEZW5vbSA9IDEuMGYgLyAoZG90MDAgKiBkb3Qx
MSAtIGRvdDAxICogZG90MDEpOwpAQCAtMTEzLDcgKzEwOCw3IEBAIGJvb2wgRmxvYXRRdWFkOjpj
b250YWluc1F1YWQoY29uc3QgRmxvYXRRdWFkJiBvdGhlcikgY29uc3QKICAgICByZXR1cm4gY29u
dGFpbnNQb2ludChvdGhlci5wMSgpKSAmJiBjb250YWluc1BvaW50KG90aGVyLnAyKCkpICYmIGNv
bnRhaW5zUG9pbnQob3RoZXIucDMoKSkgJiYgY29udGFpbnNQb2ludChvdGhlci5wNCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSBGbG9hdFBvaW50IHJpZ2h0TW9zdENvcm5lclRvVmVjdG9yKGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRTaXplJiB2ZWN0b3IpCitzdGF0aWMgaW5saW5l
IEZsb2F0UG9pbnQgcmlnaHRNb3N0Q29ybmVyVG9WZWN0b3IoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFBvaW50JiB2ZWN0b3IpCiB7CiAgICAgLy8gUmV0dXJuIHRoZSBjb3JuZXIg
b2YgdGhlIHJlY3RhbmdsZSB0aGF0IGlmIGl0IGlzIHRvIHRoZSBsZWZ0IG9mIHRoZSB2ZWN0b3IK
ICAgICAvLyB3b3VsZCBtZWFuIGFsbCBvZiB0aGUgcmVjdGFuZ2xlIGlzIHRvIHRoZSBsZWZ0IG9m
IHRoZSB2ZWN0b3IuCkBAIC0xMjUsMTEgKzEyMCwxMSBAQCBzdGF0aWMgaW5saW5lIEZsb2F0UG9p
bnQgcmlnaHRNb3N0Q29ybmVyVG9WZWN0b3IoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBG
bAogICAgIC8vICAgUQogICAgIC8vCiAgICAgRmxvYXRQb2ludCBwb2ludDsKLSAgICBpZiAodmVj
dG9yLndpZHRoKCkgPj0gMCkKKyAgICBpZiAodmVjdG9yLngoKSA+PSAwKQogICAgICAgICBwb2lu
dC5zZXRZKHJlY3QubWF4WSgpKTsKICAgICBlbHNlCiAgICAgICAgIHBvaW50LnNldFkocmVjdC55
KCkpOwotICAgIGlmICh2ZWN0b3IuaGVpZ2h0KCkgPj0gMCkKKyAgICBpZiAodmVjdG9yLnkoKSA+
PSAwKQogICAgICAgICBwb2ludC5zZXRYKHJlY3QueCgpKTsKICAgICBlbHNlCiAgICAgICAgIHBv
aW50LnNldFgocmVjdC5tYXhYKCkpOwpAQCAtMTQxLDcgKzEzNiw3IEBAIGJvb2wgRmxvYXRRdWFk
OjppbnRlcnNlY3RzUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIGNvbnN0CiAgICAgLy8gRm9y
IGVhY2ggc2lkZSBvZiB0aGUgcXVhZCBjbG9ja3dpc2Ugd2UgY2hlY2sgaWYgdGhlIHJlY3Rhbmds
ZSBpcyB0byB0aGUgbGVmdCBvZiBpdAogICAgIC8vIHNpbmNlIG9ubHkgY29udGVudCBvbiB0aGUg
cmlnaHQgY2FuIG9ubGFwIHdpdGggdGhlIHF1YWQuCiAgICAgLy8gVGhpcyBvbmx5IHdvcmtzIGlm
IHRoZSBxdWFkIGlzIGNvbnZleC4KLSAgICBGbG9hdFNpemUgdjEsIHYyLCB2MywgdjQ7CisgICAg
RmxvYXRQb2ludCB2MSwgdjIsIHYzLCB2NDsKIAogICAgIC8vIEVuc3VyZSB3ZSB1c2UgY2xvY2t3
aXNlIHZlY3RvcnMuCiAgICAgaWYgKCFpc0NvdW50ZXJjbG9ja3dpc2UoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVjdC5jcHAKaW5kZXggZWRjZThhMjVh
M2E1YjA3YTQwMTMwODVjYjEwYThiNGIwMDY1ZDYxOC4uZDJiZmFmODZkZWQ2MTFhMDZmMzgwNTNj
NzgxYTc3YjVkYjlhNzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFJlY3QuY3BwCkBAIC0yMjcsMTQgKzIyNywxNCBAQCBJbnRSZWN0IGVuY2xvc2luZ0lu
dFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgIEludFBvaW50IGxvY2F0aW9uID0gZmxv
b3JlZEludFBvaW50KHJlY3QubWluWE1pbllDb3JuZXIoKSk7CiAgICAgSW50UG9pbnQgbWF4UG9p
bnQgPSBjZWlsZWRJbnRQb2ludChyZWN0Lm1heFhNYXhZQ29ybmVyKCkpOwogCi0gICAgcmV0dXJu
IEludFJlY3QobG9jYXRpb24sIG1heFBvaW50IC0gbG9jYXRpb24pOworICAgIHJldHVybiBJbnRS
ZWN0KGxvY2F0aW9uLCBJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKG1heFBvaW50LCBsb2NhdGlv
bikpOwogfQogCiBJbnRSZWN0IGVuY2xvc2VkSW50UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiB7CiAgICAgSW50UG9pbnQgbG9jYXRpb24gPSBjZWlsZWRJbnRQb2ludChyZWN0Lm1pblhNaW5Z
Q29ybmVyKCkpOwogICAgIEludFBvaW50IG1heFBvaW50ID0gZmxvb3JlZEludFBvaW50KHJlY3Qu
bWF4WE1heFlDb3JuZXIoKSk7Ci0gICAgSW50U2l6ZSBzaXplID0gbWF4UG9pbnQgLSBsb2NhdGlv
bjsKKyAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKG1heFBvaW50
LCBsb2NhdGlvbik7CiAgICAgc2l6ZS5jbGFtcE5lZ2F0aXZlVG9aZXJvKCk7CiAKICAgICByZXR1
cm4gSW50UmVjdChsb2NhdGlvbiwgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRTaXplLmNwcAppbmRleCBlMTFiODI4YmI1MzVlYjM2ZjliYjAwNDg0YTg4
ZjliZGI3NGI2N2UzLi4xNjI3MjQ1YmNkNTFlMjRiYTJmMmUxMDgzYTdlMzhlZDUzZDU3ZDlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAKQEAg
LTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJGbG9hdFNpemUuaCIKIAogI2luY2x1ZGUgIkZsb2F0
Q29udmVyc2lvbi5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCiAjaW5jbHVkZSAiTGF5b3V0U2l6ZS5oIgogI2luY2x1ZGUgPGxpbWl0cz4KQEAgLTQ1LDYg
KzQ2LDExIEBAIEZsb2F0U2l6ZTo6RmxvYXRTaXplKGNvbnN0IExheW91dFNpemUmIHNpemUpIDog
bV93aWR0aChzaXplLndpZHRoKCkpLCBtX2hlaWdodChzCiB7CiB9CiAKK0Zsb2F0U2l6ZSBGbG9h
dFNpemU6OmZyb21Db3JuZXJQb2ludHMoY29uc3QgRmxvYXRQb2ludCAmbWF4WE1heFlQb2ludCwg
Y29uc3QgRmxvYXRQb2ludCYgbWluWE1pbllQb2ludCkKK3sKKyAgICByZXR1cm4gRmxvYXRTaXpl
KG1heFhNYXhZUG9pbnQueCgpIC0gbWluWE1pbllQb2ludC54KCksIG1heFhNYXhZUG9pbnQueSgp
IC0gbWluWE1pbllQb2ludC55KCkpOworfQorCiBmbG9hdCBGbG9hdFNpemU6OmRpYWdvbmFsTGVu
Z3RoKCkgY29uc3QKIHsKICAgICByZXR1cm4gc3FydGYoZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXpl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAppbmRleCAy
Y2EyMmNkZDQ1MTU4MjAwMDE5N2EzZWI2YzgyMGU3NmI0MzZmNTlmLi4yYmQ2ZTA0ZmVkYmEyMDZk
N2RkMTI0MjQ0MTZlYTE5N2Q1Nzc3NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdFNpemUuaApAQCAtNTksNiArNTksNyBAQCB0eXBlZGVmIHN0cnVjdCBfTlNT
aXplIE5TU2l6ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBGbG9hdFBvaW50Owog
Y2xhc3MgSW50U2l6ZTsKIGNsYXNzIExheW91dFNpemU7CiAKQEAgLTcwLDYgKzcxLDcgQEAgcHVi
bGljOgogICAgIEZsb2F0U2l6ZShjb25zdCBMYXlvdXRTaXplJik7CiAKICAgICBzdGF0aWMgRmxv
YXRTaXplIG5hcnJvd1ByZWNpc2lvbihkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQpOworICAg
IHN0YXRpYyBGbG9hdFNpemUgZnJvbUNvcm5lclBvaW50cyhjb25zdCBGbG9hdFBvaW50JiBtYXhY
TWF4WVBvaW50LCBjb25zdCBGbG9hdFBvaW50JiBtaW5YTWluWVBvaW50KTsKIAogICAgIGZsb2F0
IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIGZsb2F0IGhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDFhYzhjYzhiODU3YTQ5MzQ2NWM3MDZj
OGI1MGQzOGM2NDM4M2ExNDQuLmU5ODNhOGQwNTIwMDFlYTEzYTJhMTE1ZDExNjRmN2RhNTUzNWU4
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dC5oCkBAIC00MTksNiArNDE5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYpOwogICAgICAgICB2b2lkIHJvdGF0ZShmbG9h
dCBhbmdsZUluUmFkaWFucyk7CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGNvbnN0IEZsb2F0U2l6
ZSYgc2l6ZSkgeyB0cmFuc2xhdGUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsgfQorICAg
ICAgICB2b2lkIHRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiBwb2ludCkgeyB0cmFuc2xhdGUo
cG9pbnQueCgpLCBwb2ludC55KCkpOyB9CiAgICAgICAgIHZvaWQgdHJhbnNsYXRlKGZsb2F0IHgs
IGZsb2F0IHkpOwogCiAgICAgICAgIHZvaWQgc2V0VVJMRm9yUmVjdChjb25zdCBLVVJMJiwgY29u
c3QgSW50UmVjdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50
LmgKaW5kZXggM2U4MTQ4YTlhMGI5ODQwNDA4OTQ3MjNjYWQ1NjAxZDQ2MDRmNGZmNy4uYzQ0Y2Ni
NzlhZTExNjkzMDQwMDczMjQ2MTBkZTAwYzE0YTJkYzE3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFgoaW50IHgpIHsgbV94ID0geDsgfQogICAgIHZvaWQgc2V0WShpbnQgeSkgeyBt
X3kgPSB5OyB9CiAKKyAgICBib29sIGlzWmVybygpIGNvbnN0IHsgcmV0dXJuICFtX3ggJiYgIW1f
eTsgfQorCiAgICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHMpIHsgbW92ZShzLndpZHRoKCks
IHMuaGVpZ2h0KCkpOyB9IAogICAgIHZvaWQgbW92ZUJ5KGNvbnN0IEludFBvaW50JiBvZmZzZXQp
IHsgbW92ZShvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsgfQogICAgIHZvaWQgbW92ZShpbnQgZHgs
IGludCBkeSkgeyBtX3ggKz0gZHg7IG1feSArPSBkeTsgfQpAQCAtOTUsNiArOTcsMTEgQEAgcHVi
bGljOgogICAgICAgICBtX3kgPSBscm91bmRmKHN0YXRpY19jYXN0PGZsb2F0PihtX3kgKiBzeSkp
OwogICAgIH0KICAgICAKKyAgICBpbnQgbGVuZ3RoU3F1YXJlZCgpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gbV94ICogbV94ICsgbV95ICogbV95OworICAgIH0KKwogICAgIEludFBvaW50
IGV4cGFuZGVkVG8oY29uc3QgSW50UG9pbnQmIG90aGVyKSBjb25zdAogICAgIHsKICAgICAgICAg
cmV0dXJuIEludFBvaW50KG1feCA+IG90aGVyLm1feCA/IG1feCA6IG90aGVyLm1feCwKQEAgLTE4
NSw5ICsxOTIsOSBAQCBpbmxpbmUgSW50UG9pbnQgb3BlcmF0b3IrKGNvbnN0IEludFBvaW50JiBh
LCBjb25zdCBJbnRQb2ludCYgYikKICAgICByZXR1cm4gSW50UG9pbnQoYS54KCkgKyBiLngoKSwg
YS55KCkgKyBiLnkoKSk7CiB9CiAKLWlubGluZSBJbnRTaXplIG9wZXJhdG9yLShjb25zdCBJbnRQ
b2ludCYgYSwgY29uc3QgSW50UG9pbnQmIGIpCitpbmxpbmUgSW50UG9pbnQgb3BlcmF0b3ItKGNv
bnN0IEludFBvaW50JiBhLCBjb25zdCBJbnRQb2ludCYgYikKIHsKLSAgICByZXR1cm4gSW50U2l6
ZShhLngoKSAtIGIueCgpLCBhLnkoKSAtIGIueSgpKTsKKyAgICByZXR1cm4gSW50UG9pbnQoYS54
KCkgLSBiLngoKSwgYS55KCkgLSBiLnkoKSk7CiB9CiAKIGlubGluZSBJbnRQb2ludCBvcGVyYXRv
ci0oY29uc3QgSW50UG9pbnQmIGEsIGNvbnN0IEludFNpemUmIGIpCkBAIC0yMTcsNyArMjI0LDcg
QEAgaW5saW5lIEludFNpemUgdG9JbnRTaXplKGNvbnN0IEludFBvaW50JiBhKQogCiBpbmxpbmUg
aW50IEludFBvaW50OjpkaXN0YW5jZVNxdWFyZWRUb1BvaW50KGNvbnN0IEludFBvaW50JiBwb2lu
dCkgY29uc3QKIHsKLSAgICByZXR1cm4gKCgqdGhpcykgLSBwb2ludCkuZGlhZ29uYWxMZW5ndGhT
cXVhcmVkKCk7CisgICAgcmV0dXJuICgqdGhpcyAtIHBvaW50KS5sZW5ndGhTcXVhcmVkKCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ludFNpemUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW50U2l6ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU2NTk3MjVjZDM3NzhhZjZjMzEwNTY4NDI5
MGI0NjEyMTM4NDJlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ludFNpemUuY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisKKyNpbmNsdWRl
ICJJbnRQb2ludC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0ludFNpemUgSW50U2l6ZTo6
ZnJvbUNvcm5lclBvaW50cyhjb25zdCBJbnRQb2ludCYgbWF4WE1heFlQb2ludCwgY29uc3QgSW50
UG9pbnQmIG1pblhNaW5ZUG9pbnQpCit7CisgICAgcmV0dXJuIEludFNpemUobWF4WE1heFlQb2lu
dC54KCkgLSBtaW5YTWluWVBvaW50LngoKSwgbWF4WE1heFlQb2ludC55KCkgLSBtaW5YTWluWVBv
aW50LnkoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ludFNpemUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFNp
emUuaAppbmRleCBjOGE1NDlkZDcxMzZmMWIzYWI1OTkwZWMyZDBmZTE3ZWU2MjAzYWE1Li45MjUz
OWM5YWFhZjgxMjQzMzM5Nzk1NzY3MmMzM2RhZWQ0MGZjYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRTaXplLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW50U2l6ZS5oCkBAIC01OSwxMSArNTksMTQgQEAgY2xhc3Mgd3hT
aXplOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEludFBvaW50OworCiBjbGFzcyBJ
bnRTaXplIHsKIHB1YmxpYzoKICAgICBJbnRTaXplKCkgOiBtX3dpZHRoKDApLCBtX2hlaWdodCgw
KSB7IH0KICAgICBJbnRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgOiBtX3dpZHRoKHdpZHRo
KSwgbV9oZWlnaHQoaGVpZ2h0KSB7IH0KLSAgICAKKyAgICBzdGF0aWMgSW50U2l6ZSBmcm9tQ29y
bmVyUG9pbnRzKGNvbnN0IEludFBvaW50JiBtYXhYTWF4WVBvaW50LCBjb25zdCBJbnRQb2ludCYg
bWluWE1pbllQb2ludCk7CisKICAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRo
OyB9CiAgICAgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0xheW91dFJlY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKaW5kZXggYWQ3
NzI4MjVkYTQ0NmYyZGZkZWRiMzg4YjE0NzQ4OWJhMTUzZTQ2My4uMTRjZmYxNmE0MGUxYmMyYTY1
NDIzMzI4NjI3ZGVjOWMxODM3N2FlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvTGF5b3V0UmVjdC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBJbnRSZWN0IGVuY2xv
c2luZ0ludFJlY3QoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKICAgICBJbnRQb2ludCBsb2NhdGlv
biA9IGZsb29yZWRJbnRQb2ludChyZWN0Lm1pblhNaW5ZQ29ybmVyKCkpOwogICAgIEludFBvaW50
IG1heFBvaW50ID0gY2VpbGVkSW50UG9pbnQocmVjdC5tYXhYTWF4WUNvcm5lcigpKTsKIAotICAg
IHJldHVybiBJbnRSZWN0KGxvY2F0aW9uLCBtYXhQb2ludCAtIGxvY2F0aW9uKTsKKyAgICByZXR1
cm4gSW50UmVjdChsb2NhdGlvbiwgSW50U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhtYXhQb2ludCwg
bG9jYXRpb24pKTsKIH0KIAogTGF5b3V0UmVjdCBlbmNsb3NpbmdMYXlvdXRSZWN0KGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwCmluZGV4IGNmNTM3MTcyNzIzMzY1ZGIwYzZkYjhj
ZGM5Y2MyOWMyNzUwNDcxNjcuLjU5NjNmNDRlNTk3NDVhZjFmNDQyYmYyMTFiOWNjYjc5Y2RmYTMy
ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2
ZXJzYWxTdGF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
aFRyYXZlcnNhbFN0YXRlLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUGF0aFRyYXZlcnNh
bFN0YXRlOjpwcm9jZXNzU2VnbWVudCgpCiAgICAgICAgIG1fc3VjY2VzcyA9IHRydWU7CiAgICAg
ICAgIAogICAgIGlmICgobV9hY3Rpb24gPT0gVHJhdmVyc2FsUG9pbnRBdExlbmd0aCB8fCBtX2Fj
dGlvbiA9PSBUcmF2ZXJzYWxOb3JtYWxBbmdsZUF0TGVuZ3RoKSAmJiBtX3RvdGFsTGVuZ3RoID49
IG1fZGVzaXJlZExlbmd0aCkgewotICAgICAgICBmbG9hdCBzbG9wZSA9IEZsb2F0UG9pbnQobV9j
dXJyZW50IC0gbV9wcmV2aW91cykuc2xvcGVBbmdsZVJhZGlhbnMoKTsKKyAgICAgICAgZmxvYXQg
c2xvcGUgPSAobV9jdXJyZW50IC0gbV9wcmV2aW91cykuc2xvcGVBbmdsZVJhZGlhbnMoKTsKICAg
ICAgICAgaWYgKG1fYWN0aW9uID09IFRyYXZlcnNhbFBvaW50QXRMZW5ndGgpIHsKICAgICAgICAg
ICAgIGZsb2F0IG9mZnNldCA9IG1fZGVzaXJlZExlbmd0aCAtIG1fdG90YWxMZW5ndGg7CiAgICAg
ICAgICAgICBtX2N1cnJlbnQubW92ZShvZmZzZXQgKiBjb3NmKHNsb3BlKSwgb2Zmc2V0ICogc2lu
ZihzbG9wZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U2hhZG93Qmx1ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dC
bHVyLmNwcAppbmRleCAzMzU5MjgzNjdiZjdjNDIxMGRlZjIyZWJlZGEwZTViMWNlYzI4NjU2Li40
MzdiMTkwMDU1N2RjMzQ3ZDdkZjJmNmQxZTlhMTJjMDZkMmYyYWIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TaGFkb3dCbHVyLmNwcApAQCAtNDI4LDEyICs0Mjgs
MTIgQEAgSW50UmVjdCBTaGFkb3dCbHVyOjpjYWxjdWxhdGVMYXllckJvdW5kaW5nUmVjdChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEYKICAgICBtX2xheWVyU2l6ZSA9IGxheWVyUmVj
dC5zaXplKCk7CiAKICAgICBjb25zdCBGbG9hdFBvaW50IHVuY2xpcHBlZExheWVyT3JpZ2luID0g
RmxvYXRQb2ludCh1bmNsaXBwZWRMYXllclJlY3QueCgpLCB1bmNsaXBwZWRMYXllclJlY3QueSgp
KTsKLSAgICBjb25zdCBGbG9hdFNpemUgY2xpcHBlZE91dCA9IHVuY2xpcHBlZExheWVyT3JpZ2lu
IC0gbV9sYXllck9yaWdpbjsKKyAgICBjb25zdCBGbG9hdFBvaW50IGNsaXBwZWRPdXQgPSB1bmNs
aXBwZWRMYXllck9yaWdpbiAtIG1fbGF5ZXJPcmlnaW47CiAKICAgICAvLyBTZXQgdGhlIG9yaWdp
biBhcyB0aGUgdG9wIGxlZnQgY29ybmVyIG9mIHRoZSBzY3JhdGNoIGltYWdlLCBvciwgaW4gY2Fz
ZSB0aGVyZSdzIGEgY2xpcHBlZAogICAgIC8vIG91dCByZWdpb24sIHNldCB0aGUgb3JpZ2luIGFj
Y29yZGluZ2x5IHRvIHRoZSBmdWxsIGJvdW5kaW5nIHJlY3QncyB0b3AtbGVmdCBjb3JuZXIuCi0g
ICAgZmxvYXQgdHJhbnNsYXRpb25YID0gLXNoYWRvd2VkUmVjdC54KCkgKyBpbmZsYXRpb24ud2lk
dGgoKSAtIGZhYnNmKGNsaXBwZWRPdXQud2lkdGgoKSk7Ci0gICAgZmxvYXQgdHJhbnNsYXRpb25Z
ID0gLXNoYWRvd2VkUmVjdC55KCkgKyBpbmZsYXRpb24uaGVpZ2h0KCkgLSBmYWJzZihjbGlwcGVk
T3V0LmhlaWdodCgpKTsKKyAgICBmbG9hdCB0cmFuc2xhdGlvblggPSAtc2hhZG93ZWRSZWN0Lngo
KSArIGluZmxhdGlvbi53aWR0aCgpIC0gZmFic2YoY2xpcHBlZE91dC54KCkpOworICAgIGZsb2F0
IHRyYW5zbGF0aW9uWSA9IC1zaGFkb3dlZFJlY3QueSgpICsgaW5mbGF0aW9uLmhlaWdodCgpIC0g
ZmFic2YoY2xpcHBlZE91dC55KCkpOwogICAgIG1fbGF5ZXJDb250ZXh0VHJhbnNsYXRpb24gPSBG
bG9hdFNpemUodHJhbnNsYXRpb25YLCB0cmFuc2xhdGlvblkpOwogCiAgICAgcmV0dXJuIGVuY2xv
c2luZ0ludFJlY3QobGF5ZXJSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IGM5YzQ4NmE0MTU4ZTc0
NmNlMDY4N2NmNjBlYmU1MzFiMjI3OTJjNGEuLmIxYzZjN2RmNDkwNmNmM2FmM2MwZjlmMWU4YjFj
NDlhZTdiMmJkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjk2Niw3ICsyOTY2LDcgQEAgdm9pZCBH
cmFwaGljc0xheWVyQ0E6OmNvbXB1dGVQaXhlbEFsaWdubWVudChmbG9hdCBwYWdlU2NhbGVGYWN0
b3IsIGNvbnN0IEZsb2F0UG8KICAgICBjb25zdCBmbG9hdCBlcHNpbG9uID0gMWUtNWY7CiAgICAg
YWxpZ25lZEJvdW5kcy5leHBhbmQoZXBzaWxvbiwgZXBzaWxvbik7CiAgICAgCi0gICAgYWxpZ25t
ZW50T2Zmc2V0ID0gYmFzZVJlbGF0aXZlQm91bmRzLmxvY2F0aW9uKCkgLSBhbGlnbmVkQm91bmRz
LmxvY2F0aW9uKCk7CisgICAgYWxpZ25tZW50T2Zmc2V0ID0gRmxvYXRTaXplOjpmcm9tQ29ybmVy
UG9pbnRzKGJhc2VSZWxhdGl2ZUJvdW5kcy5sb2NhdGlvbigpLCBhbGlnbmVkQm91bmRzLmxvY2F0
aW9uKCkpOwogICAgIHBvc2l0aW9uID0gbV9wb3NpdGlvbiAtIGFsaWdubWVudE9mZnNldDsKICAg
ICBzaXplID0gYWxpZ25lZEJvdW5kcy5zaXplKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAppbmRleCA5
YzQ4MTlhYjg1OGI1ZWM5Zjk4MzUzZTQ0YjBlODQxNTViNDY4MjY3Li42MmQ2ODVjOGQ0Mzg5YTBk
OWFhZWZlNjU2YmNmNjQxY2FhNmI0N2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCkBAIC0xNDczLDcg
KzE0NzMsNyBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRvRGV2aWNlUGl4ZWxz
KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgUm91bmRpbmdNbwogCiAgICAgRmxvYXRQb2ludCByb3Vu
ZGVkT3JpZ2luID0gRmxvYXRQb2ludChkZXZpY2VPcmlnaW4ueCAvIGRldmljZVNjYWxlWCwgZGV2
aWNlT3JpZ2luLnkgLyBkZXZpY2VTY2FsZVkpOwogICAgIEZsb2F0UG9pbnQgcm91bmRlZExvd2Vy
UmlnaHQgPSBGbG9hdFBvaW50KGRldmljZUxvd2VyUmlnaHQueCAvIGRldmljZVNjYWxlWCwgZGV2
aWNlTG93ZXJSaWdodC55IC8gZGV2aWNlU2NhbGVZKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KHJv
dW5kZWRPcmlnaW4sIHJvdW5kZWRMb3dlclJpZ2h0IC0gcm91bmRlZE9yaWdpbik7CisgICAgcmV0
dXJuIEZsb2F0UmVjdChyb3VuZGVkT3JpZ2luLCBGbG9hdFNpemU6OmZyb21Db3JuZXJQb2ludHMo
cm91bmRlZExvd2VyUmlnaHQsIHJvdW5kZWRPcmlnaW4pKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9vcEJsaW5uTG9jYWxU
cmlhbmd1bGF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xv
b3BCbGlubkxvY2FsVHJpYW5ndWxhdG9yLmNwcAppbmRleCAxNTE3YTY3MmYwMmM1ZmI3ZjY5YjEx
NjA4OWY0ZWQ5ODI5OWNiYTJkLi5kZGQxNzdkMTg2YzBkYTY1NjQ0NmU4NzRmMzdiMjNiYWFkN2Vk
N2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ncHUvTG9v
cEJsaW5uTG9jYWxUcmlhbmd1bGF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5Mb2NhbFRyaWFuZ3VsYXRvci5jcHAKQEAgLTIxMyw4ICsy
MTMsOCBAQCB2b2lkIExvb3BCbGlubkxvY2FsVHJpYW5ndWxhdG9yOjp0cmlhbmd1bGF0ZUhlbHBl
cihMb29wQmxpbm5Db25zdGFudHM6OkZpbGxTaWRlCiAgICAgICAgICAgICAgICAgICAgICAgIG1f
dmVydGljZXNbMl0ueHlDb29yZGluYXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgICBtX3Zl
cnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0
aWNlc1szXS54eUNvb3JkaW5hdGVzKCkpKSB7Ci0gICAgICAgIGlmICgobV92ZXJ0aWNlc1syXS54
eUNvb3JkaW5hdGVzKCkgLSBtX3ZlcnRpY2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkuZGlhZ29uYWxM
ZW5ndGhTcXVhcmVkKCkgPAotICAgICAgICAgICAgKG1fdmVydGljZXNbM10ueHlDb29yZGluYXRl
cygpIC0gbV92ZXJ0aWNlc1sxXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdvbmFsTGVuZ3RoU3F1YXJl
ZCgpKSB7CisgICAgICAgIGlmIChtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0ZXMoKS5kaXN0YW5j
ZVNxdWFyZWRUb1BvaW50KG1fdmVydGljZXNbMF0ueHlDb29yZGluYXRlcygpKSA8CisgICAgICAg
ICAgICBtX3ZlcnRpY2VzWzNdLnh5Q29vcmRpbmF0ZXMoKS5kaXN0YW5jZVNxdWFyZWRUb1BvaW50
KG1fdmVydGljZXNbMV0ueHlDb29yZGluYXRlcygpKSkgewogICAgICAgICAgICAgYWRkVHJpYW5n
bGUoJm1fdmVydGljZXNbMF0sICZtX3ZlcnRpY2VzWzFdLCAmbV92ZXJ0aWNlc1syXSk7CiAgICAg
ICAgICAgICBhZGRUcmlhbmdsZSgmbV92ZXJ0aWNlc1swXSwgJm1fdmVydGljZXNbMl0sICZtX3Zl
cnRpY2VzWzNdKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIyNSw4ICsyMjUsOCBAQCB2b2lkIExv
b3BCbGlubkxvY2FsVHJpYW5ndWxhdG9yOjp0cmlhbmd1bGF0ZUhlbHBlcihMb29wQmxpbm5Db25z
dGFudHM6OkZpbGxTaWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2Vz
WzNdLnh5Q29vcmRpbmF0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVy
dGljZXNbMV0ueHlDb29yZGluYXRlcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bV92ZXJ0aWNlc1syXS54eUNvb3JkaW5hdGVzKCkpKSB7Ci0gICAgICAgIGlmICgobV92ZXJ0aWNl
c1szXS54eUNvb3JkaW5hdGVzKCkgLSBtX3ZlcnRpY2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkuZGlh
Z29uYWxMZW5ndGhTcXVhcmVkKCkgPAotICAgICAgICAgICAgKG1fdmVydGljZXNbMl0ueHlDb29y
ZGluYXRlcygpIC0gbV92ZXJ0aWNlc1sxXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdvbmFsTGVuZ3Ro
U3F1YXJlZCgpKSB7CisgICAgICAgIGlmIChtX3ZlcnRpY2VzWzNdLnh5Q29vcmRpbmF0ZXMoKS5k
aXN0YW5jZVNxdWFyZWRUb1BvaW50KG1fdmVydGljZXNbMF0ueHlDb29yZGluYXRlcygpKSA8Cisg
ICAgICAgICAgICBtX3ZlcnRpY2VzWzJdLnh5Q29vcmRpbmF0ZXMoKS5kaXN0YW5jZVNxdWFyZWRU
b1BvaW50KG1fdmVydGljZXNbMV0ueHlDb29yZGluYXRlcygpKSkgewogICAgICAgICAgICAgYWRk
VHJpYW5nbGUoJm1fdmVydGljZXNbMF0sICZtX3ZlcnRpY2VzWzFdLCAmbV92ZXJ0aWNlc1szXSk7
CiAgICAgICAgICAgICBhZGRUcmlhbmdsZSgmbV92ZXJ0aWNlc1swXSwgJm1fdmVydGljZXNbM10s
ICZtX3ZlcnRpY2VzWzJdKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTIzNiw4ICsyMzYsOCBAQCB2
b2lkIExvb3BCbGlubkxvY2FsVHJpYW5ndWxhdG9yOjp0cmlhbmd1bGF0ZUhlbHBlcihMb29wQmxp
bm5Db25zdGFudHM6OkZpbGxTaWRlCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gTGluZXMgKDAt
PjEpLCAoMi0+MykgaW50ZXJzZWN0IC0tIG9yIHNob3VsZCwgbW9kdWxvIG51bWVyaWNhbAogICAg
ICAgICAvLyBwcmVjaXNpb24gaXNzdWVzCi0gICAgICAgIGlmICgobV92ZXJ0aWNlc1sxXS54eUNv
b3JkaW5hdGVzKCkgLSBtX3ZlcnRpY2VzWzBdLnh5Q29vcmRpbmF0ZXMoKSkuZGlhZ29uYWxMZW5n
dGhTcXVhcmVkKCkgPAotICAgICAgICAgICAgKG1fdmVydGljZXNbM10ueHlDb29yZGluYXRlcygp
IC0gbV92ZXJ0aWNlc1syXS54eUNvb3JkaW5hdGVzKCkpLmRpYWdvbmFsTGVuZ3RoU3F1YXJlZCgp
KSB7CisgICAgICAgIGlmIChtX3ZlcnRpY2VzWzFdLnh5Q29vcmRpbmF0ZXMoKS5kaXN0YW5jZVNx
dWFyZWRUb1BvaW50KG1fdmVydGljZXNbMF0ueHlDb29yZGluYXRlcygpKSA8CisgICAgICAgICAg
ICBtX3ZlcnRpY2VzWzNdLnh5Q29vcmRpbmF0ZXMoKS5kaXN0YW5jZVNxdWFyZWRUb1BvaW50KG1f
dmVydGljZXNbMl0ueHlDb29yZGluYXRlcygpKSkgewogICAgICAgICAgICAgYWRkVHJpYW5nbGUo
Jm1fdmVydGljZXNbMF0sICZtX3ZlcnRpY2VzWzJdLCAmbV92ZXJ0aWNlc1sxXSk7CiAgICAgICAg
ICAgICBhZGRUcmlhbmdsZSgmbV92ZXJ0aWNlc1swXSwgJm1fdmVydGljZXNbMV0sICZtX3ZlcnRp
Y2VzWzNdKTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dwdS9Mb29wQmxpbm5NYXRoVXRpbHMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubk1hdGhVdGlscy5jcHAKaW5kZXggYmFm
MWM5Njg1OTJlYjVkYTFiYmY5YjA5MzU1MzFmMjEzZDZkOGU0Yi4uZjJiOTIyZjdkMjljMzgxZjUy
ZTIyOGYzZDJhZDE5ZTRlMTZiZjFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubk1hdGhVdGlscy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3B1L0xvb3BCbGlubk1hdGhVdGlscy5jcHAKQEAgLTEyMCw3
ICsxMjAsNyBAQCBmbG9hdCByb3VuZFRvWmVybyhmbG9hdCB2YWwpCiAKIGJvb2wgYXBwcm94RXF1
YWwoY29uc3QgRmxvYXRQb2ludCYgdjAsIGNvbnN0IEZsb2F0UG9pbnQmIHYxKQogewotICAgIHJl
dHVybiAodjAgLSB2MSkuZGlhZ29uYWxMZW5ndGhTcXVhcmVkKCkgPCBFcHNpbG9uICogRXBzaWxv
bjsKKyAgICByZXR1cm4gdjAuZGlzdGFuY2VTcXVhcmVkVG9Qb2ludCh2MSkgPCBFcHNpbG9uICog
RXBzaWxvbjsKIH0KIAogYm9vbCBhcHByb3hFcXVhbChjb25zdCBGbG9hdFBvaW50M0QmIHYwLCBj
b25zdCBGbG9hdFBvaW50M0QmIHYxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmluZGV4IGRmOTZiODZjNzAz
NWRlNzdmNTMyZWMyZDVmZjQyYWFhYjEwZmQwYjMuLjRjNDFkZDYwMjk0N2EwYzNkMGU2MDA4ODdj
ODg4MWI1NWFkOWE0M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHRRdC5jcHAKQEAgLTEwNTUsNyArMTA1NSw3IEBA
IEZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OnJvdW5kVG9EZXZpY2VQaXhlbHMoY29uc3QgRmxv
YXRSZWN0JiBmcmVjdCwgUm91bmRpbmdNCiAKICAgICBGbG9hdFBvaW50IHJvdW5kZWRPcmlnaW4g
PSBGbG9hdFBvaW50KGRldmljZU9yaWdpbi54KCkgLyBkZXZpY2VTY2FsZVgsIGRldmljZU9yaWdp
bi55KCkgLyBkZXZpY2VTY2FsZVkpOwogICAgIEZsb2F0UG9pbnQgcm91bmRlZExvd2VyUmlnaHQg
PSBGbG9hdFBvaW50KGRldmljZUxvd2VyUmlnaHQueCgpIC8gZGV2aWNlU2NhbGVYLCBkZXZpY2VM
b3dlclJpZ2h0LnkoKSAvIGRldmljZVNjYWxlWSk7Ci0gICAgcmV0dXJuIEZsb2F0UmVjdChyb3Vu
ZGVkT3JpZ2luLCByb3VuZGVkTG93ZXJSaWdodCAtIHJvdW5kZWRPcmlnaW4pOworICAgIHJldHVy
biBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKHJv
dW5kZWRMb3dlclJpZ2h0LCByb3VuZGVkT3JpZ2luKSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRQbGF0Zm9ybVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNpemUsIGZsb2F0IGJsdXIs
IGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250
ZXh0U2tpYS5jcHAKaW5kZXggNDhmYjc2OWU3YjJmMTQzZGQyZTAwZWI3NGE3ZWVjNGQwNWIxODcy
MC4uNjBjMDQ1NzNjZmU2M2FhODdkYWE5Y2UyOWQ2NDM2MTZjYWFmOGU2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNz
Q29udGV4dFNraWEuY3BwCkBAIC01NTMsOCArNTUzLDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmRyYXdMaW5lKGNvbnN0IEludFBvaW50JiBwb2ludDEsIGNvbnN0IEludFBvaW50JiBwb2ludDIp
CiAgICAgLy8gV2Uga25vdyB0aGVzZSBhcmUgdmVydGljYWwgb3IgaG9yaXpvbnRhbCBsaW5lcywg
c28gdGhlIGxlbmd0aCB3aWxsIGp1c3QKICAgICAvLyBiZSB0aGUgc3VtIG9mIHRoZSBkaXNwbGFj
ZW1lbnQgY29tcG9uZW50IHZlY3RvcnMgZ2l2ZSBvciB0YWtlIDEgLQogICAgIC8vIHByb2JhYmx5
IHdvcnRoIHRoZSBzcGVlZCB1cCBvZiBubyBzcXVhcmUgcm9vdCwgd2hpY2ggYWxzbyB3b24ndCBi
ZSBleGFjdC4KLSAgICBGbG9hdFNpemUgZGlzcCA9IHAyIC0gcDE7Ci0gICAgaW50IGxlbmd0aCA9
IFNrU2NhbGFyUm91bmQoZGlzcC53aWR0aCgpICsgZGlzcC5oZWlnaHQoKSk7CisgICAgRmxvYXRQ
b2ludCBkaXNwID0gcDIgLSBwMTsKKyAgICBpbnQgbGVuZ3RoID0gU2tTY2FsYXJSb3VuZChkaXNw
LngoKSArIGRpc3AueSgpKTsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvclN0
cm9raW5nKCZwYWludCwgMCwgbGVuZ3RoKTsKIAogICAgIGlmIChzdHJva2VTdHlsZSgpID09IERv
dHRlZFN0cm9rZSB8fCBzdHJva2VTdHlsZSgpID09IERhc2hlZFN0cm9rZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1dpZGdldFJlbmRlcmluZ0NvbnRleHQuY3Bw
CmluZGV4IDU5ZjVkYTU0NjgzMDM4NTM2MzEzNzFjNGM3ZWYzNjNlNzE0ZjgxMWMuLjA1Zjg0NGVm
ZjY0NTA0ZmQ4ODAyYzVlODFlOGIxODI2ZmIxMWI5NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9XaWRnZXRSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0UmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTk3LDcg
Kzk3LDcgQEAgV2lkZ2V0UmVuZGVyaW5nQ29udGV4dDo6V2lkZ2V0UmVuZGVyaW5nQ29udGV4dChH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICBtX3RhcmdldFJlY3QuaW5mbGF0
ZShleHRyYVNwYWNlKTsKIAogICAgIC8vIFRoaXMgb2Zmc2V0IHdpbGwgbWFwIGEgcG9pbnQgaW4g
dGhlIGNvb3JkaW5hdGUgc3lzdGVtIG9mIHRoZSB3aWRnZXQgdG8gdGhlIGNvb3JkaW5hdGUgc3lz
dGVtIG9mIHRoZSBwYWludGluZyBidWZmZXIuCi0gICAgbV9wYWludE9mZnNldCA9IHRhcmdldFJl
Y3QubG9jYXRpb24oKSAtIG1fdGFyZ2V0UmVjdC5sb2NhdGlvbigpOworICAgIG1fcGFpbnRPZmZz
ZXQgPSBJbnRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKHRhcmdldFJlY3QubG9jYXRpb24oKSwgbV90
YXJnZXRSZWN0LmxvY2F0aW9uKCkpOwogCiAgICAgaW50IHdpZHRoID0gbV90YXJnZXRSZWN0Lndp
ZHRoKCkgKyAoZXh0cmFTcGFjZSAqIDIpOwogICAgIGludCBoZWlnaHQgPSBtX3RhcmdldFJlY3Qu
aGVpZ2h0KCkgKyAoZXh0cmFTcGFjZSAqIDIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyLm1tCmluZGV4IGYyODQ1
MTM0ZWMwMjhiNzUxOWMzNmQwODMyOTcwMGQ5YmVlZDIwOGQuLjZlYzAyY2Y4ZDVmNWQyMTQ4ODFj
MmRlYTFhZWRmMmFhZmIwZWFkNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxFbGFzdGljaXR5Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRyb2xsZXIubW0KQEAgLTM3Niw3ICszNzYs
NyBAQCB2b2lkIFNjcm9sbEVsYXN0aWNpdHlDb250cm9sbGVyOjpzbmFwUnViYmVyQmFuZFRpbWVy
RmlyZWQoKQogICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2Uuc2V0V2lkdGgocmVib3Vu
ZERlbHRhRm9yRWxhc3RpY0RlbHRhKG5ld1N0cmV0Y2gud2lkdGgoKSkpOwogICAgICAgICAgICAg
bV9zdHJldGNoU2Nyb2xsRm9yY2Uuc2V0SGVpZ2h0KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0
YShuZXdTdHJldGNoLmhlaWdodCgpKSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBt
X2NsaWVudC0+aW1tZWRpYXRlU2Nyb2xsQnkobV9vcmlnT3JpZ2luIC0gbV9jbGllbnQtPmFic29s
dXRlU2Nyb2xsUG9zaXRpb24oKSk7CisgICAgICAgICAgICBtX2NsaWVudC0+aW1tZWRpYXRlU2Ny
b2xsQnkoRmxvYXRTaXplOjpmcm9tQ29ybmVyUG9pbnRzKG1fb3JpZ09yaWdpbiwgbV9jbGllbnQt
PmFic29sdXRlU2Nyb2xsUG9zaXRpb24oKSkpOwogCiAgICAgICAgICAgICBzdG9wU25hcFJ1YmJl
cmJhbmRUaW1lcigpOwogICAgICAgICAgICAgbV9zdHJldGNoU2Nyb2xsRm9yY2UgPSBGbG9hdFNp
emUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5
Z29uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9FeGNsdXNpb25Qb2x5Z29uLmNwcApp
bmRleCBhNTIyMzJmMmI3ZTdkMjljNjE0NWI3OTJlZDA4ODg3YThiYzhjOWFlLi5mMDRmYzI2NTFi
YzZjNmEzOGJmODUxMmNhOTJhNmUyYjM1NmVmMWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRXhjbHVzaW9uUG9seWdvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0V4Y2x1c2lvblBvbHlnb24uY3BwCkBAIC00Nyw5ICs0Nyw5IEBAIHN0cnVjdCBFZGdl
SW50ZXJzZWN0aW9uIHsKICAgICBFZGdlSW50ZXJzZWN0aW9uVHlwZSB0eXBlOwogfTsKIAotc3Rh
dGljIGlubGluZSBmbG9hdCBkZXRlcm1pbmFudChjb25zdCBGbG9hdFNpemUmIGEsIGNvbnN0IEZs
b2F0U2l6ZSYgYikKK3N0YXRpYyBpbmxpbmUgZmxvYXQgZGV0ZXJtaW5hbnQoY29uc3QgRmxvYXRQ
b2ludCYgYSwgY29uc3QgRmxvYXRQb2ludCYgYikKIHsKLSAgICByZXR1cm4gYS53aWR0aCgpICog
Yi5oZWlnaHQoKSAtIGEuaGVpZ2h0KCkgKiBiLndpZHRoKCk7CisgICAgcmV0dXJuIGEueCgpICog
Yi55KCkgLSBhLnkoKSAqIGIueCgpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgYXJlQ29sbGlu
ZWFyUG9pbnRzKGNvbnN0IEZsb2F0UG9pbnQmIHAwLCBjb25zdCBGbG9hdFBvaW50JiBwMSwgY29u
c3QgRmxvYXRQb2ludCYgcDIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmlu
ZGV4IDM1NTI4MDVjOTVmNmQyMmIxNDlhZWNjNGNiYzA5YWY3MGJkYzM5YTAuLmUzMjhhNjk0YWU4
NWE4MzAzNjAzZTg5Nzg0Mjg4MTlhN2VkMjA5YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCkBAIC03MzYsNyArNzM2LDcgQEAgSW50U2l6ZSBSZW5kZXJCb3g6OmNhbGN1
bGF0ZUF1dG9zY3JvbGxEaXJlY3Rpb24oY29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KSBjb24K
ICAgICAgICAgcG9pbnQubW92ZSgwLCAtYXV0b3Njcm9sbEJlbHRTaXplKTsKICAgICBlbHNlIGlm
IChwb2ludC55KCkgPiBib3gubWF4WSgpIC0gYXV0b3Njcm9sbEJlbHRTaXplKQogICAgICAgICBw
b2ludC5tb3ZlKDAsIGF1dG9zY3JvbGxCZWx0U2l6ZSk7Ci0gICAgcmV0dXJuIGZyYW1lVmlldy0+
Y29udGVudHNUb1dpbmRvdyhwb2ludCkgLSB3aW5kb3dQb2ludDsKKyAgICByZXR1cm4gSW50U2l6
ZTo6ZnJvbUNvcm5lclBvaW50cyhmcmFtZVZpZXctPmNvbnRlbnRzVG9XaW5kb3cocG9pbnQpLCB3
aW5kb3dQb2ludCk7CiB9CiAKIFJlbmRlckJveCogUmVuZGVyQm94OjpmaW5kQXV0b3Njcm9sbGFi
bGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGYwNmUxMjYzOGI5YWM0MWY2MDA5MmFk
NDg1OTIzZGEyNGY0MGY2M2IuLjllNzJkYWVlMzgzNTZjZDI2NDU1YjdlZjNjMzZjMTBmNzc0OWQ5
NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcApAQCAtMTE2Nyw5ICsxMTY3LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
QmFja2dyb3VuZEltYWdlR2VvbWV0cnk6OmNsaXAoY29uc3QgSW50UmVjdCYgY2xpcFJlY3QKIAog
SW50UG9pbnQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OkJhY2tncm91bmRJbWFnZUdlb21ldHJ5Ojpy
ZWxhdGl2ZVBoYXNlKCkgY29uc3QKIHsKLSAgICBJbnRQb2ludCBwaGFzZSA9IG1fcGhhc2U7Ci0g
ICAgcGhhc2UgKz0gbV9kZXN0UmVjdC5sb2NhdGlvbigpIC0gbV9kZXN0T3JpZ2luOwotICAgIHJl
dHVybiBwaGFzZTsKKyAgICByZXR1cm4gbV9waGFzZSArIG1fZGVzdFJlY3QubG9jYXRpb24oKSAt
IG1fZGVzdE9yaWdpbjsKIH0KIAogdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRl
QmFja2dyb3VuZEltYWdlR2VvbWV0cnkoY29uc3QgRmlsbExheWVyKiBmaWxsTGF5ZXIsIGNvbnN0
IExheW91dFJlY3QmIHBhaW50UmVjdCwgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCBkZGY1ZDM3OTVjNjhhYjFhNjBhOTAxZjcxZjQwNThjMjBlZjE4ZjRjLi4w
ZDNhZThiZjI4ZmRiMDVhNjkyOTI2ZjljNjljNjY3YjIyYjYxNTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTE5MzAsOSArMTkzMCw5IEBAIHN0YXRpYyBp
bmxpbmUgaW50IGFkanVzdGVkU2Nyb2xsRGVsdGEoaW50IGJlZ2lubmluZ0RlbHRhKSB7CiAgICAg
cmV0dXJuIGFkanVzdGVkRGVsdGE7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSW50U2l6ZSBhZGp1c3Rl
ZFNjcm9sbERlbHRhKGNvbnN0IEludFNpemUmIGRlbHRhKQorc3RhdGljIGlubGluZSBJbnRTaXpl
IGFkanVzdGVkU2Nyb2xsRGVsdGEoY29uc3QgSW50UG9pbnQmIGRlbHRhKQogewotICAgIHJldHVy
biBJbnRTaXplKGFkanVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEud2lkdGgoKSksIGFkanVzdGVkU2Ny
b2xsRGVsdGEoZGVsdGEuaGVpZ2h0KCkpKTsKKyAgICByZXR1cm4gSW50U2l6ZShhZGp1c3RlZFNj
cm9sbERlbHRhKGRlbHRhLngoKSksIGFkanVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEueSgpKSk7CiB9
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnBhblNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYg
c291cmNlUG9pbnQpCkBAIC0xOTUwLDEyICsxOTUwLDEyIEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBh
blNjcm9sbEZyb21Qb2ludChjb25zdCBJbnRQb2ludCYgc291cmNlUG9pbnQpCiAgICAgZWxzZQog
ICAgICAgICBwcmV2aW91c01vdXNlUG9zaXRpb24gPSBsYXN0S25vd25Nb3VzZVBvc2l0aW9uOwog
Ci0gICAgSW50U2l6ZSBkZWx0YSA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb24gLSBzb3VyY2VQb2lu
dDsKKyAgICBJbnRQb2ludCBkZWx0YSA9IGxhc3RLbm93bk1vdXNlUG9zaXRpb24gLSBzb3VyY2VQ
b2ludDsKIAotICAgIGlmIChhYnMoZGVsdGEud2lkdGgoKSkgPD0gU2Nyb2xsVmlldzo6bm9QYW5T
Y3JvbGxSYWRpdXMpIC8vIGF0IHRoZSBjZW50ZXIgd2UgbGV0IHRoZSBzcGFjZSBmb3IgdGhlIGlj
b24KLSAgICAgICAgZGVsdGEuc2V0V2lkdGgoMCk7Ci0gICAgaWYgKGFicyhkZWx0YS5oZWlnaHQo
KSkgPD0gU2Nyb2xsVmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpCi0gICAgICAgIGRlbHRhLnNldEhl
aWdodCgwKTsKKyAgICBpZiAoYWJzKGRlbHRhLngoKSkgPD0gU2Nyb2xsVmlldzo6bm9QYW5TY3Jv
bGxSYWRpdXMpIC8vIGF0IHRoZSBjZW50ZXIgd2UgbGV0IHRoZSBzcGFjZSBmb3IgdGhlIGljb24K
KyAgICAgICAgZGVsdGEuc2V0WCgwKTsKKyAgICBpZiAoYWJzKGRlbHRhLnkoKSkgPD0gU2Nyb2xs
Vmlldzo6bm9QYW5TY3JvbGxSYWRpdXMpCisgICAgICAgIGRlbHRhLnNldFkoMCk7CiAKICAgICBz
Y3JvbGxCeVJlY3Vyc2l2ZWx5KGFkanVzdGVkU2Nyb2xsRGVsdGEoZGVsdGEpLCBTY3JvbGxPZmZz
ZXRDbGFtcGVkKTsKIH0KQEAgLTI4MTEsNyArMjgxMSw3IEBAIEludFNpemUgUmVuZGVyTGF5ZXI6
Om9mZnNldEZyb21SZXNpemVDb3JuZXIoY29uc3QgSW50UG9pbnQmIGFic29sdXRlUG9pbnQpIGNv
bnN0CiAgICAgICAgIGVsZW1lbnRTaXplLnNldFdpZHRoKDApOwogICAgIEludFBvaW50IHJlc2l6
ZXJQb2ludCA9IEludFBvaW50KGVsZW1lbnRTaXplKTsKICAgICBJbnRQb2ludCBsb2NhbFBvaW50
ID0gcm91bmRlZEludFBvaW50KGFic29sdXRlVG9Db250ZW50cyhhYnNvbHV0ZVBvaW50KSk7Ci0g
ICAgcmV0dXJuIGxvY2FsUG9pbnQgLSByZXNpemVyUG9pbnQ7CisgICAgcmV0dXJuIEludFNpemU6
OmZyb21Db3JuZXJQb2ludHMobG9jYWxQb2ludCwgcmVzaXplclBvaW50KTsKIH0KIAogYm9vbCBS
ZW5kZXJMYXllcjo6aGFzT3ZlcmZsb3dDb250cm9scygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IGZiOGVhOGNhYzY1NWRi
NTNmNjI2MjVhYzI5MTYxNDU2NTE5MWFiNDQuLmVmZWYxNzY5MjhiNzg4Y2FmZjkxMWM2MDA2ZDA1
NzYzNTU1YTdiZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCkBAIC02MjQsMTcgKzYyNCwxNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21ldHJ5KCkKICAgICAgICAgUmVuZGVyTGF5ZXI6OkNs
aXBSZWN0c0NvbnRleHQgY2xpcFJlY3RzQ29udGV4dChjb21wQW5jZXN0b3IsIDAsIFRlbXBvcmFy
eUNsaXBSZWN0cywgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIFJlbmRlckxheWVyOjpJZ25v
cmVPdmVyZmxvd0NsaXApOwogICAgICAgICBJbnRSZWN0IHBhcmVudENsaXBSZWN0ID0gcGl4ZWxT
bmFwcGVkSW50UmVjdChtX293bmluZ0xheWVyLT5iYWNrZ3JvdW5kQ2xpcFJlY3QoY2xpcFJlY3Rz
Q29udGV4dCkucmVjdCgpKTsgLy8gRklYTUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiAg
ICAgICAgIEFTU0VSVChwYXJlbnRDbGlwUmVjdCAhPSBQYWludEluZm86OmluZmluaXRlUmVjdCgp
KTsKLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQocGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlv
bikpOworICAgICAgICBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllci0+c2V0UG9zaXRpb24ocGFyZW50
Q2xpcFJlY3QubG9jYXRpb24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbik7CiAgICAg
ICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRTaXplKHBhcmVudENsaXBSZWN0LnNpemUo
KSk7CiAKICAgICAgICAgLy8gYmFja2dyb3VuZFJlY3QgaXMgcmVsYXRpdmUgdG8gY29tcEFuY2Vz
dG9yLCBzbyBzdWJ0cmFjdCBkZWx0YVgvZGVsdGFZIHRvIGdldCBiYWNrIHRvIGxvY2FsIGNvb3Jk
cy4KLSAgICAgICAgbV9hbmNlc3RvckNsaXBwaW5nTGF5ZXItPnNldE9mZnNldEZyb21SZW5kZXJl
cihwYXJlbnRDbGlwUmVjdC5sb2NhdGlvbigpIC0gZGVsdGEpOworICAgICAgICBtX2FuY2VzdG9y
Q2xpcHBpbmdMYXllci0+c2V0T2Zmc2V0RnJvbVJlbmRlcmVyKEludFNpemU6OmZyb21Db3JuZXJQ
b2ludHMocGFyZW50Q2xpcFJlY3QubG9jYXRpb24oKSwgZGVsdGEpKTsKIAogICAgICAgICAvLyBU
aGUgcHJpbWFyeSBsYXllciBpcyB0aGVuIHBhcmVudGVkIGluLCBhbmQgcG9zaXRpb25lZCByZWxh
dGl2ZSB0byB0aGlzIGNsaXBwaW5nIGxheWVyLgogICAgICAgICBncmFwaGljc0xheWVyUGFyZW50
TG9jYXRpb24gPSBwYXJlbnRDbGlwUmVjdC5sb2NhdGlvbigpOwogICAgIH0KIAotICAgIG1fZ3Jh
cGhpY3NMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChyZWxhdGl2ZUNvbXBvc2l0aW5nQm91
bmRzLmxvY2F0aW9uKCkgLSBncmFwaGljc0xheWVyUGFyZW50TG9jYXRpb24pKTsKKyAgICBtX2dy
YXBoaWNzTGF5ZXItPnNldFBvc2l0aW9uKHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMubG9jYXRp
b24oKSAtIGdyYXBoaWNzTGF5ZXJQYXJlbnRMb2NhdGlvbik7CiAgICAgbV9ncmFwaGljc0xheWVy
LT5zZXRPZmZzZXRGcm9tUmVuZGVyZXIodG9JbnRTaXplKGxvY2FsQ29tcG9zaXRpbmdCb3VuZHMu
bG9jYXRpb24oKSkpOwogICAgIAogICAgIEZsb2F0U2l6ZSBvbGRTaXplID0gbV9ncmFwaGljc0xh
eWVyLT5zaXplKCk7CkBAIC02NTIsNyArNjUyLDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6
OnVwZGF0ZUdyYXBoaWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgSW50UmVjdCBjbGlwcGluZ0JveDsK
ICAgICBpZiAoR3JhcGhpY3NMYXllciogY2xpcExheWVyID0gY2xpcHBpbmdMYXllcigpKSB7CiAg
ICAgICAgIGNsaXBwaW5nQm94ID0gY2xpcEJveCh0b1JlbmRlckJveChyZW5kZXJlcigpKSk7Ci0g
ICAgICAgIGNsaXBMYXllci0+c2V0UG9zaXRpb24oRmxvYXRQb2ludChjbGlwcGluZ0JveC5sb2Nh
dGlvbigpIC0gbG9jYWxDb21wb3NpdGluZ0JvdW5kcy5sb2NhdGlvbigpKSk7CisgICAgICAgIGNs
aXBMYXllci0+c2V0UG9zaXRpb24oY2xpcHBpbmdCb3gubG9jYXRpb24oKSAtIGxvY2FsQ29tcG9z
aXRpbmdCb3VuZHMubG9jYXRpb24oKSk7CiAgICAgICAgIGNsaXBMYXllci0+c2V0U2l6ZShjbGlw
cGluZ0JveC5zaXplKCkpOwogICAgICAgICBjbGlwTGF5ZXItPnNldE9mZnNldEZyb21SZW5kZXJl
cih0b0ludFNpemUoY2xpcHBpbmdCb3gubG9jYXRpb24oKSkpOwogICAgIH0KQEAgLTcyOCw3ICs3
MjgsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdlb21l
dHJ5KCkKICAgICAgICAgLy8gYnV0IHRoZSByZWZsZWN0ZWQgbGF5ZXIgaXMgdGhlIGJvdW5kcyBv
ZiB0aGlzIGxheWVyLCBzbyB3ZSBuZWVkIHRvIHBvc2l0aW9uIGl0IGFwcHJvcHJpYXRlbHkuCiAg
ICAgICAgIEZsb2F0UmVjdCBsYXllckJvdW5kcyA9IGNvbXBvc2l0ZWRCb3VuZHMoKTsKICAgICAg
ICAgRmxvYXRSZWN0IHJlZmxlY3Rpb25MYXllckJvdW5kcyA9IHJlZmxlY3Rpb25CYWNraW5nLT5j
b21wb3NpdGVkQm91bmRzKCk7Ci0gICAgICAgIHJlZmxlY3Rpb25CYWNraW5nLT5ncmFwaGljc0xh
eWVyKCktPnNldFJlcGxpY2F0ZWRMYXllclBvc2l0aW9uKEZsb2F0UG9pbnQobGF5ZXJCb3VuZHMu
bG9jYXRpb24oKSAtIHJlZmxlY3Rpb25MYXllckJvdW5kcy5sb2NhdGlvbigpKSk7CisgICAgICAg
IHJlZmxlY3Rpb25CYWNraW5nLT5ncmFwaGljc0xheWVyKCktPnNldFJlcGxpY2F0ZWRMYXllclBv
c2l0aW9uKGxheWVyQm91bmRzLmxvY2F0aW9uKCkgLSByZWZsZWN0aW9uTGF5ZXJCb3VuZHMubG9j
YXRpb24oKSk7CiAgICAgfQogCiAgICAgaWYgKG1fc2Nyb2xsaW5nTGF5ZXIpIHsKQEAgLTczNyw3
ICs3MzcsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckdl
b21ldHJ5KCkKICAgICAgICAgSW50UmVjdCBwYWRkaW5nQm94KHJlbmRlckJveC0+Ym9yZGVyTGVm
dCgpLCByZW5kZXJCb3gtPmJvcmRlclRvcCgpLCByZW5kZXJCb3gtPndpZHRoKCkgLSByZW5kZXJC
b3gtPmJvcmRlckxlZnQoKSAtIHJlbmRlckJveC0+Ym9yZGVyUmlnaHQoKSwgcmVuZGVyQm94LT5o
ZWlnaHQoKSAtIHJlbmRlckJveC0+Ym9yZGVyVG9wKCkgLSByZW5kZXJCb3gtPmJvcmRlckJvdHRv
bSgpKTsKICAgICAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQgPSBtX293bmluZ0xheWVyLT5zY3Jv
bGxlZENvbnRlbnRPZmZzZXQoKTsKIAotICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRQb3Np
dGlvbihGbG9hdFBvaW50KHBhZGRpbmdCb3gubG9jYXRpb24oKSAtIGxvY2FsQ29tcG9zaXRpbmdC
b3VuZHMubG9jYXRpb24oKSkpOworICAgICAgICBtX3Njcm9sbGluZ0xheWVyLT5zZXRQb3NpdGlv
bihwYWRkaW5nQm94LmxvY2F0aW9uKCkgLSBsb2NhbENvbXBvc2l0aW5nQm91bmRzLmxvY2F0aW9u
KCkpOwogCiAgICAgICAgIG1fc2Nyb2xsaW5nTGF5ZXItPnNldFNpemUocGFkZGluZ0JveC5zaXpl
KCkpOwogICAgICAgICBtX3Njcm9sbGluZ0NvbnRlbnRzTGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQoLXNjcm9sbE9mZnNldC53aWR0aCgpLCAtc2Nyb2xsT2Zmc2V0LmhlaWdodCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAKaW5kZXggMTRhZTBiZTUz
ZDdkMjFlMmI4OTQ5OTdhZTBlYWNiMmFhZWRkNTc4OS4uZjZiMTUyM2ZhZDY1ODJiNjg3OTk3ODU4
NDkzZDMyMmQ5NTA4M2I0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxpc3RCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0
Qm94LmNwcApAQCAtNTQwLDE4ICs1NDAsMTggQEAgaW50IFJlbmRlckxpc3RCb3g6OnNjcm9sbFRv
d2FyZChjb25zdCBJbnRQb2ludCYgZGVzdGluYXRpb24pCiB7CiAgICAgLy8gRklYTUU6IFRoaXMg
ZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5zZm9ybXMuCiAgICAgRmxvYXRQb2ludCBh
YnNQb3MgPSBsb2NhbFRvQWJzb2x1dGUoKTsKLSAgICBJbnRTaXplIHBvc2l0aW9uT2Zmc2V0ID0g
cm91bmRlZEludFNpemUoZGVzdGluYXRpb24gLSBhYnNQb3MpOworICAgIEludFBvaW50IHBvc2l0
aW9uT2Zmc2V0ID0gZGVzdGluYXRpb24gLSByb3VuZGVkSW50UG9pbnQoYWJzUG9zKTsKIAogICAg
IGludCByb3dzID0gbnVtVmlzaWJsZUl0ZW1zKCk7CiAgICAgaW50IG9mZnNldCA9IG1faW5kZXhP
ZmZzZXQ7CiAgICAgCi0gICAgaWYgKHBvc2l0aW9uT2Zmc2V0LmhlaWdodCgpIDwgYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCkgJiYgc2Nyb2xsVG9SZXZlYWxFbGVtZW50QXRMaXN0SW5kZXgob2Zm
c2V0IC0gMSkpCisgICAgaWYgKHBvc2l0aW9uT2Zmc2V0LnkoKSA8IGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCAtIDEp
KQogICAgICAgICByZXR1cm4gb2Zmc2V0IC0gMTsKICAgICAKLSAgICBpZiAocG9zaXRpb25PZmZz
ZXQuaGVpZ2h0KCkgPiBoZWlnaHQoKSAtIHBhZGRpbmdCb3R0b20oKSAtIGJvcmRlckJvdHRvbSgp
ICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCArIHJvd3MpKQorICAg
IGlmIChwb3NpdGlvbk9mZnNldC55KCkgPiBoZWlnaHQoKSAtIHBhZGRpbmdCb3R0b20oKSAtIGJv
cmRlckJvdHRvbSgpICYmIHNjcm9sbFRvUmV2ZWFsRWxlbWVudEF0TGlzdEluZGV4KG9mZnNldCAr
IHJvd3MpKQogICAgICAgICByZXR1cm4gb2Zmc2V0ICsgcm93cyAtIDE7CiAgICAgCi0gICAgcmV0
dXJuIGxpc3RJbmRleEF0T2Zmc2V0KHBvc2l0aW9uT2Zmc2V0KTsKKyAgICByZXR1cm4gbGlzdElu
ZGV4QXRPZmZzZXQodG9TaXplKHBvc2l0aW9uT2Zmc2V0KSk7CiB9CiAKIHZvaWQgUmVuZGVyTGlz
dEJveDo6YXV0b3Njcm9sbChjb25zdCBJbnRQb2ludCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDZkYjBkNjkzYmI1ZmM1NzljOTFiMDllMGZiN2JmMzIz
NjVlZTgxMjIuLjAyYjQ3NWIzZjJkYzEzNzVmNzIyZjJjMTk1NjNlODFkMDJiNWE2NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCkBAIC0yODEsMTIgKzI4MSwx
MiBAQCB2b2lkIFJlbmRlcldpZGdldDo6cGFpbnQoUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0
IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICAgICAgICAgIHJvdW5kVG9JbnQoYWRqdXN0
ZWRQYWludE9mZnNldC55KCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkpOwogICAgICAg
ICBJbnRSZWN0IHBhaW50UmVjdCA9IHBhaW50SW5mby5yZWN0OwogCi0gICAgICAgIEludFNpemUg
d2lkZ2V0UGFpbnRPZmZzZXQgPSBwYWludExvY2F0aW9uIC0gd2lkZ2V0TG9jYXRpb247CisgICAg
ICAgIEludFBvaW50IHdpZGdldFBhaW50T2Zmc2V0ID0gcGFpbnRMb2NhdGlvbiAtIHdpZGdldExv
Y2F0aW9uOwogICAgICAgICAvLyBXaGVuIHBhaW50aW5nIHdpZGdldHMgaW50byBjb21wb3NpdGlu
ZyBsYXllcnMsIHR4IGFuZCB0eSBhcmUgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZyBjb21wb3Np
dGluZyBsYXllciwKICAgICAgICAgLy8gbm90IHRoZSByb290LiBJbiB0aGlzIGNhc2UsIHNoaWZ0
IHRoZSBDVE0gYW5kIGFkanVzdCB0aGUgcGFpbnRSZWN0IHRvIGJlIHJvb3QtcmVsYXRpdmUgdG8g
Zml4IHBsdWctaW4gZHJhd2luZy4KICAgICAgICAgaWYgKCF3aWRnZXRQYWludE9mZnNldC5pc1pl
cm8oKSkgewogICAgICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnRyYW5zbGF0ZSh3aWRnZXRQ
YWludE9mZnNldCk7Ci0gICAgICAgICAgICBwYWludFJlY3QubW92ZSgtd2lkZ2V0UGFpbnRPZmZz
ZXQpOworICAgICAgICAgICAgcGFpbnRSZWN0Lm1vdmVCeSgtd2lkZ2V0UGFpbnRPZmZzZXQpOwog
ICAgICAgICB9CiAgICAgICAgIG1fd2lkZ2V0LT5wYWludChwYWludEluZm8uY29udGV4dCwgcGFp
bnRSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdN
YXJrZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEu
aAppbmRleCAwOWE1NDJiMjEwOTc1N2M5NjJkMjM1OWJiOTkwNTBkNDkxNGQwNTg4Li4zMzE1YTgy
ZjM1OThhMWE5ZWM2MWI0ZjY3YjdlNzgxNjJlN2E4MTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1NWR01hcmtlckRhdGEuaApAQCAtODIsOCArODIsOCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGZsb2F0IGN1cnJlbnRBbmdsZShTVkdNYXJrZXJUeXBlIHR5cGUpIGNvbnN0
CiAgICAgewotICAgICAgICBGbG9hdFBvaW50IGluc2xvcGVDaGFuZ2UobV9pbnNsb3BlUG9pbnRz
WzFdIC0gbV9pbnNsb3BlUG9pbnRzWzBdKTsKLSAgICAgICAgRmxvYXRQb2ludCBvdXRzbG9wZUNo
YW5nZShtX291dHNsb3BlUG9pbnRzWzFdIC0gbV9vdXRzbG9wZVBvaW50c1swXSk7CisgICAgICAg
IEZsb2F0UG9pbnQgaW5zbG9wZUNoYW5nZSA9IG1faW5zbG9wZVBvaW50c1sxXSAtIG1faW5zbG9w
ZVBvaW50c1swXTsKKyAgICAgICAgRmxvYXRQb2ludCBvdXRzbG9wZUNoYW5nZSA9IG1fb3V0c2xv
cGVQb2ludHNbMV0gLSBtX291dHNsb3BlUG9pbnRzWzBdOwogCiAgICAgICAgIGRvdWJsZSBpbnNs
b3BlID0gcmFkMmRlZyhpbnNsb3BlQ2hhbmdlLnNsb3BlQW5nbGVSYWRpYW5zKCkpOwogICAgICAg
ICBkb3VibGUgb3V0c2xvcGUgPSByYWQyZGVnKG91dHNsb3BlQ2hhbmdlLnNsb3BlQW5nbGVSYWRp
YW5zKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5j
cHAKaW5kZXggYTJjMzkyZjkwOWEzMjMxODA1MDk1MDNlNGRmM2M5NDEwOWQ2MzE2My4uMmU1ZDRl
YTRjZmZlNmVkMzYxYTQ2YTYzYzdmZTFkZGJkYjFmNmNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0zMjEsOCArMzIxLDcgQEAgZmxv
YXQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGlmICghcGFyc2VQ
b2ludCh0b1N0cmluZywgdG8pKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgRmxvYXRTaXplIGRp
ZmYgPSB0byAtIGZyb207Ci0gICAgcmV0dXJuIHNxcnRmKGRpZmYud2lkdGgoKSAqIGRpZmYud2lk
dGgoKSArIGRpZmYuaGVpZ2h0KCkgKiBkaWZmLmhlaWdodCgpKTsKKyAgICByZXR1cm4gZnJvbS5k
aXN0YW5jZVRvUG9pbnQodG8pOwogfQogCiB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50Ojp1
cGRhdGVBbmltYXRpb25Nb2RlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoUGFyc2VyLmNwcAppbmRl
eCBmOTA4ZTBkYjM0MGU4Y2VlZTNiYjRmZmViYTJlNmY4ZWQ5ZjlhZWVmLi5kYmQxZDA2NDcxZDk2
NTBmZDViNTQxZTM5ZWJlODlhYWVkMjc3YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhQYXJz
ZXIuY3BwCkBAIC00MTIsMTMgKzQxMiwxMyBAQCB2b2lkIFNWR1BhdGhQYXJzZXI6OmNsZWFudXAo
KQogLy8gU2VlIGFsc28gU1ZHIGltcGxlbWVudGF0aW9uIG5vdGVzOiBodHRwOi8vd3d3LnczLm9y
Zy9UUi9TVkcvaW1wbG5vdGUuaHRtbCNBcmNDb252ZXJzaW9uRW5kcG9pbnRUb0NlbnRlcgogYm9v
bCBTVkdQYXRoUGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9hdCBy
eCwgZmxvYXQgcnksIEZsb2F0UG9pbnQmIHBvaW50MSwgRmxvYXRQb2ludCYgcG9pbnQyLCBib29s
IGxhcmdlQXJjRmxhZywgYm9vbCBzd2VlcEZsYWcpCiB7Ci0gICAgRmxvYXRTaXplIG1pZFBvaW50
RGlzdGFuY2UgPSBwb2ludDEgLSBwb2ludDI7CisgICAgRmxvYXRQb2ludCBtaWRQb2ludERpc3Rh
bmNlID0gcG9pbnQxIC0gcG9pbnQyOwogICAgIG1pZFBvaW50RGlzdGFuY2Uuc2NhbGUoMC41Zik7
CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gcG9pbnRUcmFuc2Zvcm07CiAgICAgcG9pbnRUcmFuc2Zv
cm0ucm90YXRlKC1hbmdsZSk7CiAKLSAgICBGbG9hdFBvaW50IHRyYW5zZm9ybWVkTWlkUG9pbnQg
PSBwb2ludFRyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KG1pZFBvaW50RGlzdGFuY2Uud2lk
dGgoKSwgbWlkUG9pbnREaXN0YW5jZS5oZWlnaHQoKSkpOworICAgIEZsb2F0UG9pbnQgdHJhbnNm
b3JtZWRNaWRQb2ludCA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KG1pZFBvaW50RGlzdGFuY2Up
OwogICAgIGZsb2F0IHNxdWFyZVJ4ID0gcnggKiByeDsKICAgICBmbG9hdCBzcXVhcmVSeSA9IHJ5
ICogcnk7CiAgICAgZmxvYXQgc3F1YXJlWCA9IHRyYW5zZm9ybWVkTWlkUG9pbnQueCgpICogdHJh
bnNmb3JtZWRNaWRQb2ludC54KCk7CkBAIC00MzgsOSArNDM4LDkgQEAgYm9vbCBTVkdQYXRoUGFy
c2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9hdCByeCwgZmxvYXQgcnks
IEZsb2F0UG8KIAogICAgIHBvaW50MSA9IHBvaW50VHJhbnNmb3JtLm1hcFBvaW50KHBvaW50MSk7
CiAgICAgcG9pbnQyID0gcG9pbnRUcmFuc2Zvcm0ubWFwUG9pbnQocG9pbnQyKTsKLSAgICBGbG9h
dFNpemUgZGVsdGEgPSBwb2ludDIgLSBwb2ludDE7CisgICAgRmxvYXRQb2ludCBkZWx0YSA9IHBv
aW50MiAtIHBvaW50MTsKIAotICAgIGZsb2F0IGQgPSBkZWx0YS53aWR0aCgpICogZGVsdGEud2lk
dGgoKSArIGRlbHRhLmhlaWdodCgpICogZGVsdGEuaGVpZ2h0KCk7CisgICAgZmxvYXQgZCA9IGRl
bHRhLmxlbmd0aFNxdWFyZWQoKTsKICAgICBmbG9hdCBzY2FsZUZhY3RvclNxdWFyZWQgPSBzdGQ6
Om1heCgxIC8gZCAtIDAuMjVmLCAwLmYpOwogCiAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBzcXJ0
ZihzY2FsZUZhY3RvclNxdWFyZWQpOwpAQCAtNDUwLDEwICs0NTAsMTAgQEAgYm9vbCBTVkdQYXRo
UGFyc2VyOjpkZWNvbXBvc2VBcmNUb0N1YmljKGZsb2F0IGFuZ2xlLCBmbG9hdCByeCwgZmxvYXQg
cnksIEZsb2F0UG8KICAgICBkZWx0YS5zY2FsZShzY2FsZUZhY3Rvcik7CiAgICAgRmxvYXRQb2lu
dCBjZW50ZXJQb2ludCA9IHBvaW50MSArIHBvaW50MjsKICAgICBjZW50ZXJQb2ludC5zY2FsZSgw
LjVmLCAwLjVmKTsKLSAgICBjZW50ZXJQb2ludC5tb3ZlKC1kZWx0YS5oZWlnaHQoKSwgZGVsdGEu
d2lkdGgoKSk7CisgICAgY2VudGVyUG9pbnQubW92ZSgtZGVsdGEueSgpLCBkZWx0YS54KCkpOwog
Ci0gICAgZmxvYXQgdGhldGExID0gRmxvYXRQb2ludChwb2ludDEgLSBjZW50ZXJQb2ludCkuc2xv
cGVBbmdsZVJhZGlhbnMoKTsKLSAgICBmbG9hdCB0aGV0YTIgPSBGbG9hdFBvaW50KHBvaW50MiAt
IGNlbnRlclBvaW50KS5zbG9wZUFuZ2xlUmFkaWFucygpOworICAgIGZsb2F0IHRoZXRhMSA9IChw
b2ludDEgLSBjZW50ZXJQb2ludCkuc2xvcGVBbmdsZVJhZGlhbnMoKTsKKyAgICBmbG9hdCB0aGV0
YTIgPSAocG9pbnQyIC0gY2VudGVyUG9pbnQpLnNsb3BlQW5nbGVSYWRpYW5zKCk7CiAKICAgICBm
bG9hdCB0aGV0YUFyYyA9IHRoZXRhMiAtIHRoZXRhMTsKICAgICBpZiAodGhldGFBcmMgPCAwICYm
IHN3ZWVwRmxhZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUcmFuc2Zvcm1E
aXN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVHJhbnNmb3JtRGlzdGFuY2UuY3Bw
CmluZGV4IDgwYWJlZTNjMjIxOGU0ZDYyZjYyNDM0ZmU1ZTViNjJjNzE0ZGEyM2EuLmNkYjkxNDRm
OTFhMTJkMjM2YWRhODc5ZmRkZTNjMzFlM2FlYWMwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUcmFuc2Zvcm1EaXN0YW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RyYW5zZm9ybURpc3RhbmNlLmNwcApAQCAtNjEsMTUgKzYxLDE1IEBAIFNWR1RyYW5zZm9y
bURpc3RhbmNlOjpTVkdUcmFuc2Zvcm1EaXN0YW5jZShjb25zdCBTVkdUcmFuc2Zvcm0mIGZyb21T
VkdUcmFuc2Zvcm0sCiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1fVU5LTk9X
TjoKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTVkdUcmFuc2Zvcm06OlNWR19UUkFOU0ZPUk1f
Uk9UQVRFOiB7Ci0gICAgICAgIEZsb2F0U2l6ZSBjZW50ZXJEaXN0YW5jZSA9IHRvU1ZHVHJhbnNm
b3JtLnJvdGF0aW9uQ2VudGVyKCkgLSBmcm9tU1ZHVHJhbnNmb3JtLnJvdGF0aW9uQ2VudGVyKCk7
CisgICAgICAgIEZsb2F0UG9pbnQgY2VudGVyRGlzdGFuY2UgPSB0b1NWR1RyYW5zZm9ybS5yb3Rh
dGlvbkNlbnRlcigpIC0gZnJvbVNWR1RyYW5zZm9ybS5yb3RhdGlvbkNlbnRlcigpOwogICAgICAg
ICBtX2FuZ2xlID0gdG9TVkdUcmFuc2Zvcm0uYW5nbGUoKSAtIGZyb21TVkdUcmFuc2Zvcm0uYW5n
bGUoKTsKLSAgICAgICAgbV9jeCA9IGNlbnRlckRpc3RhbmNlLndpZHRoKCk7Ci0gICAgICAgIG1f
Y3kgPSBjZW50ZXJEaXN0YW5jZS5oZWlnaHQoKTsKKyAgICAgICAgbV9jeCA9IGNlbnRlckRpc3Rh
bmNlLngoKTsKKyAgICAgICAgbV9jeSA9IGNlbnRlckRpc3RhbmNlLnkoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgU1ZHVHJhbnNmb3JtOjpTVkdfVFJBTlNGT1JNX1RSQU5TTEFU
RTogewotICAgICAgICBGbG9hdFNpemUgdHJhbnNsYXRpb25EaXN0YW5jZSA9IHRvU1ZHVHJhbnNm
b3JtLnRyYW5zbGF0ZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS50cmFuc2xhdGUoKTsKLSAgICAgICAg
bV90cmFuc2Zvcm0udHJhbnNsYXRlKHRyYW5zbGF0aW9uRGlzdGFuY2Uud2lkdGgoKSwgdHJhbnNs
YXRpb25EaXN0YW5jZS5oZWlnaHQoKSk7CisgICAgICAgIEZsb2F0UG9pbnQgdHJhbnNsYXRpb25E
aXN0YW5jZSA9IHRvU1ZHVHJhbnNmb3JtLnRyYW5zbGF0ZSgpIC0gZnJvbVNWR1RyYW5zZm9ybS50
cmFuc2xhdGUoKTsKKyAgICAgICAgbV90cmFuc2Zvcm0udHJhbnNsYXRlKHRyYW5zbGF0aW9uRGlz
dGFuY2UueCgpLCB0cmFuc2xhdGlvbkRpc3RhbmNlLnkoKSk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIFNWR1RyYW5zZm9ybTo6U1ZHX1RSQU5TRk9STV9TQ0FMRTogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRHJhZ0NsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRHJhZ0NsaWVudEltcGwuY3BwCmluZGV4IDM5ZjQ4YzZi
NWJiYWU4YTYzZjNmYTIzNTViZWExODhhYzY3M2U2MTQuLjQ3MDZmNjk3NzI1NjU0NWYwN2M0MDZk
ZGFiNThmNTI1YTIxOTBmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0RyYWdDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EcmFn
Q2xpZW50SW1wbC5jcHAKQEAgLTg0LDggKzg0LDggQEAgdm9pZCBEcmFnQ2xpZW50SW1wbDo6c3Rh
cnREcmFnKERyYWdJbWFnZVJlZiBkcmFnSW1hZ2UsCiAKICAgICBEcmFnT3BlcmF0aW9uIGRyYWdP
cGVyYXRpb25NYXNrID0gY2xpcGJvYXJkLT5zb3VyY2VPcGVyYXRpb24oKTsKIAotICAgIEludFNp
emUgb2Zmc2V0U2l6ZShldmVudFBvcyAtIGRyYWdJbWFnZU9yaWdpbik7Ci0gICAgV2ViUG9pbnQg
b2Zmc2V0UG9pbnQob2Zmc2V0U2l6ZS53aWR0aCgpLCBvZmZzZXRTaXplLmhlaWdodCgpKTsKKyAg
ICBJbnRQb2ludCBvZmZzZXQgPSBldmVudFBvcyAtIGRyYWdJbWFnZU9yaWdpbjsKKyAgICBXZWJQ
b2ludCBvZmZzZXRQb2ludChvZmZzZXQueCgpLCBvZmZzZXQueSgpKTsKIAogICAgIGlmIChkcmFn
SW1hZ2UgJiYgZHJhZ0ltYWdlLT5iaXRtYXAgJiYgbV93ZWJWaWV3LT5kZXZpY2VTY2FsZUZhY3Rv
cigpICE9IGRyYWdJbWFnZS0+cmVzb2x1dGlvblNjYWxlKSB7CiAgICAgICAgIEFTU0VSVChkcmFn
SW1hZ2UtPnJlc29sdXRpb25TY2FsZSA+IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggOWU3MjUyODhhMGRjNzE2YWJiODY0ZjAyYzE5MmI5Y2Qz
ZTViNmEwZi4uMGU1MDNiMGMwNzFkMDA3NmE0MTg4YTRmMTAyYTJjZjkyZmE1Y2YxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0yMDAxLDEwICsy
MDAxLDggQEAgaW50IFdlYkZyYW1lSW1wbDo6bmVhcmVzdEZpbmRNYXRjaChjb25zdCBGbG9hdFBv
aW50JiBwb2ludCwgZmxvYXQmIGRpc3RhbmNlU3F1YXIKICAgICBkaXN0YW5jZVNxdWFyZWQgPSBG
TFRfTUFYOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9maW5kTWF0Y2hlc0NhY2hlLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIEFTU0VSVCghbV9maW5kTWF0Y2hlc0NhY2hlW2ldLm1fcmVj
dC5pc0VtcHR5KCkpOwotICAgICAgICBGbG9hdFNpemUgb2Zmc2V0ID0gcG9pbnQgLSBtX2ZpbmRN
YXRjaGVzQ2FjaGVbaV0ubV9yZWN0LmNlbnRlcigpOwotICAgICAgICBmbG9hdCB3aWR0aCA9IG9m
ZnNldC53aWR0aCgpOwotICAgICAgICBmbG9hdCBoZWlnaHQgPSBvZmZzZXQuaGVpZ2h0KCk7Ci0g
ICAgICAgIGZsb2F0IGN1cnJlbnREaXN0YW5jZVNxdWFyZWQgPSB3aWR0aCAqIHdpZHRoICsgaGVp
Z2h0ICogaGVpZ2h0OworICAgICAgICBGbG9hdFBvaW50IG9mZnNldCA9IHBvaW50IC0gbV9maW5k
TWF0Y2hlc0NhY2hlW2ldLm1fcmVjdC5jZW50ZXIoKTsKKyAgICAgICAgZmxvYXQgY3VycmVudERp
c3RhbmNlU3F1YXJlZCA9IG9mZnNldC5sZW5ndGhTcXVhcmVkKCk7CiAgICAgICAgIGlmIChjdXJy
ZW50RGlzdGFuY2VTcXVhcmVkIDwgZGlzdGFuY2VTcXVhcmVkKSB7CiAgICAgICAgICAgICBuZWFy
ZXN0ID0gaTsKICAgICAgICAgICAgIGRpc3RhbmNlU3F1YXJlZCA9IGN1cnJlbnREaXN0YW5jZVNx
dWFyZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKaW5kZXggNmU5NzMwMjE2
NjJiNDBkMzZhMjg0YzNmZDFkMDQ5YWI2NmEyNTk5Ni4uODQzMTY2NjJhZTRjNjQ4MTc0ZDM1NTUz
YTFlMWFlNmExOTIzYWIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcApA
QCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmFkanVzdFBvc2l0aW9u
Rm9yRml4ZWRMYXllcnMoKQogICAgIC8vIHRoZW0gYnkgdGhlIGRlbHRhIGJldHdlZW4gdGhlIGN1
cnJlbnQgcG9zaXRpb24gYW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgdmlld3BvcnQgdXNlZCBmb3Ig
dGhlIGxhc3QgbGF5b3V0LgogICAgIEZsb2F0UG9pbnQgc2Nyb2xsUG9zaXRpb24gPSBib3VuZGVk
U2Nyb2xsUG9zaXRpb24obV92aXNpYmxlQ29udGVudHNSZWN0LmxvY2F0aW9uKCksIG1fdmlzaWJs
ZUNvbnRlbnRzUmVjdCwgbV9jb250ZW50c1NpemUpOwogICAgIEZsb2F0UG9pbnQgcmVuZGVyZWRT
Y3JvbGxQb3NpdGlvbiA9IGJvdW5kZWRTY3JvbGxQb3NpdGlvbihtX3JlbmRlcmVkQ29udGVudHNT
Y3JvbGxQb3NpdGlvbiwgbV92aXNpYmxlQ29udGVudHNSZWN0LCBtX2NvbnRlbnRzU2l6ZSk7Ci0g
ICAgRmxvYXRTaXplIGRlbHRhID0gc2Nyb2xsUG9zaXRpb24gLSByZW5kZXJlZFNjcm9sbFBvc2l0
aW9uOworICAgIEZsb2F0U2l6ZSBkZWx0YSA9IEZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhz
Y3JvbGxQb3NpdGlvbiwgcmVuZGVyZWRTY3JvbGxQb3NpdGlvbik7CiAKICAgICBMYXllclJhd1B0
ck1hcDo6aXRlcmF0b3IgZW5kID0gbV9maXhlZExheWVycy5lbmQoKTsKICAgICBmb3IgKExheWVy
UmF3UHRyTWFwOjppdGVyYXRvciBpdCA9IG1fZml4ZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NMYXllci5jcHAKaW5kZXggNWYyNjYyZWYwOTE4YjNhYTkyMTQwYTQ4NDUyYTU1NTgy
ZjU3YmQzOS4uYTE1MTgzZGEwNGU5MTE5MGM5YmVlNjlkNGFkZmVkZDk1ZjU3MDE3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCkBAIC04ODcsNyArODg3LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6
OmNvbXB1dGVQaXhlbEFsaWdubWVudChGbG9hdFBvaW50JiBwb3NpdGlvbiwgRmxvYXQKICAgICBh
bGlnbmVkQm91bmRzLnNjYWxlKDEgLyBlZmZlY3RpdmVDb250ZW50c1NjYWxlKCkpOwogCiAgICAg
Ly8gQ29udmVydCBiYWNrIHRvIGxheWVyIGNvb3JkaW5hdGVzLgotICAgIGFsaWdubWVudE9mZnNl
dCA9IGJhc2VSZWxhdGl2ZUJvdW5kcy5sb2NhdGlvbigpIC0gYWxpZ25lZEJvdW5kcy5sb2NhdGlv
bigpOworICAgIGFsaWdubWVudE9mZnNldCA9IEZsb2F0U2l6ZTo6ZnJvbUNvcm5lclBvaW50cyhi
YXNlUmVsYXRpdmVCb3VuZHMubG9jYXRpb24oKSwgYWxpZ25lZEJvdW5kcy5sb2NhdGlvbigpKTsK
IAogICAgIHBvc2l0aW9uID0gbV9wb3NpdGlvbiAtIGFsaWdubWVudE9mZnNldDsKICAgICBzaXpl
ID0gYWxpZ25lZEJvdW5kcy5zaXplKCk7Cg==
</data>
<flag name="commit-queue"
          id="199877"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>