<?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>82977</bug_id>
          
          <creation_ts>2012-04-02 16:45:19 -0700</creation_ts>
          <short_desc>[Part 2] We should use CSSPropertyID rather than integers when manipulating CSS property ids.</short_desc>
          <delta_ts>2012-04-04 06:56:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexis Menard (darktears)">menard</reporter>
          <assigned_to name="Alexis Menard (darktears)">menard</assigned_to>
          <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>594012</commentid>
    <comment_count>0</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-02 16:45:19 -0700</bug_when>
    <thetext>[Part 2] We should use CSSPropertyID rather than integers when manipulating CSS property ids.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594027</commentid>
    <comment_count>1</comment_count>
      <attachid>135230</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-02 16:53:35 -0700</bug_when>
    <thetext>Created attachment 135230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594064</commentid>
    <comment_count>2</comment_count>
      <attachid>135230</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-02 17:22:43 -0700</bug_when>
    <thetext>Comment on attachment 135230
Patch

Attachment 135230 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12309847</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594103</commentid>
    <comment_count>3</comment_count>
      <attachid>135249</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-02 18:06:28 -0700</bug_when>
    <thetext>Created attachment 135249
Patch

Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594113</commentid>
    <comment_count>4</comment_count>
      <attachid>135249</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-04-02 18:30:27 -0700</bug_when>
    <thetext>Comment on attachment 135249
Patch

Attachment 135249 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12307910</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594401</commentid>
    <comment_count>5</comment_count>
      <attachid>135314</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-03 05:39:30 -0700</bug_when>
    <thetext>Created attachment 135314
Patch

Should fix the mac build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594404</commentid>
    <comment_count>6</comment_count>
      <attachid>135314</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-04-03 05:53:57 -0700</bug_when>
    <thetext>Comment on attachment 135314
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594458</commentid>
    <comment_count>7</comment_count>
      <attachid>135314</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 07:18:37 -0700</bug_when>
    <thetext>Comment on attachment 135314
Patch

Clearing flags on attachment: 135314

Committed r113031: &lt;http://trac.webkit.org/changeset/113031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594459</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-03 07:18:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595145</commentid>
    <comment_count>9</comment_count>
      <attachid>135314</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2012-04-03 19:14:32 -0700</bug_when>
    <thetext>Comment on attachment 135314
Patch

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

&gt; Source/WebCore/css/CSSParser.h:-230
&gt; -    bool parseRegionThread(int propId, bool important);

I really don&apos;t think you want to remove the &quot;bool important&quot; in this, or any other patch. That&apos;s important information that cannot be inferred from the type (unlike the propertyId, once using CSSPropertyID). Please fix here and everywhere!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595510</commentid>
    <comment_count>10</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-04-04 06:56:24 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 135314 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=135314&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSParser.h:-230
&gt; &gt; -    bool parseRegionThread(int propId, bool important);
&gt; 
&gt; I really don&apos;t think you want to remove the &quot;bool important&quot; in this, or any other patch. That&apos;s important information that cannot be inferred from the type (unlike the propertyId, once using CSSPropertyID). Please fix here and everywhere!

https://bugs.webkit.org/show_bug.cgi?id=83151 fixes variable names removed too aggressively in some .h files.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135230</attachid>
            <date>2012-04-02 16:53:35 -0700</date>
            <delta_ts>2012-04-02 18:06:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82977-20120402205315.patch</filename>
            <type>text/plain</type>
            <size>95923</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk3OTI3MGNjNjg4NmNi
NjM3OGE5OTA1NDlkZjBhZWFlNGUwZDUyNC4uMjVmZjhmMGZkZTEzY2VmYmM5ZTQzZGM4Y2U4Mzk2
NDk2MGUzNjEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxMi0wNC0wMiAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUGFy
dCAyXSBXZSBzaG91bGQgdXNlIENTU1Byb3BlcnR5SUQgcmF0aGVyIHRoYW4gaW50ZWdlcnMgd2hl
biBtYW5pcHVsYXRpbmcgQ1NTIHByb3BlcnR5IGlkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBlbnVtIGhvbGRzIGFsbCB0aGUg
Q1NTIHByb3BlcnR5IGlkcyBidXQgbWFueSBwYXJ0cyBvZiBXZWJLaXQgdHJlYXQgdGhlIGlkcwor
ICAgICAgICBhcyBpbnRlZ2Vycy4gV2hpbGUgaXQncyBub3QgaW5jb3JyZWN0IGl0IGlzIG5pY2Vy
IHRvIHVzZSB0aGUgZW51bSBhcyBhIHBhcmFtZXRlciBvZgorICAgICAgICBmdW5jdGlvbnMgbWFu
aXB1bGF0aW5nIHByb3BlcnR5IGlkcywgYXMgd2UgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIHBhc3Nl
ZCB3aWxsIGJlIGFuCisgICAgICAgIGV4aXN0aW5nIHZhbHVlLiBBbG1vc3QgZXZlcnl0aGluZyBo
YXMgYmVlbiBjaGFuZ2VkIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgQW5pbWF0aW9uIHJlbGF0
ZWQKKyAgICAgICAgY2xhc3NlcyB3aGljaCBjYW4gYmUgZG9uZSBpbiBhIGZvbGxvd2luZyBwYXRj
aC4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3Ig
Y2hhbmdlIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OnZhbHVlRm9yU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjps
b2dVbmltcGxlbWVudGVkUHJvcGVydHlJRCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKToKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24pOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjppc0NvbG9yUHJvcGVydHlJRCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlE
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzS2V5d29yZFByb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3Jk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlUXVvdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbFByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25Qcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlQ2xpcFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVJlZmxl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZsZXgpOgorICAgICAgICAo
V2ViQ29yZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdEJvcmRlckltYWdlUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVNsaWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZUZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJz
ZVJlZ2lvblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNm
b3JtT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VQZXJzcGVjdGl2
ZU9yaWdpbik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoQ1NTUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFNjb3BlOjpTaG9ydGhhbmRTY29wZSk6Cisg
ICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OnJlc29s
dmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5
Ojppc0luaGVyaXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6CisgICAgICAgIChDU1NQ
cm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToK
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU3R5bGVTZWxl
Y3Rvcik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAg
ICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1N0eWxlUHJv
cGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJv
cGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpyZW1v
dmVTaG9ydGhhbmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0
OjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6ZmluZFByb3BlcnR5V2l0aElk
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUVxdWl2YWxlbnRQ
cm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAo
U3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvcnRoYW5kRm9yUHJvcGVydHkpOgorICAgICAgICAq
IGNzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVt
ZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVs
ZW1lbnQ6OnJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBkb20v
U3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoU3R5bGVkRWxlbWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUpOgorICAgICAg
ICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKEhUTUxFbGVtZW50RXF1aXZh
bGVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OkVkaXRpbmdTdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRpbmdTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpj
cmVhdGUpOgorICAgICAgICAoRWRpdGluZ1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZSk6CisgICAgICAg
ICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKEVkaXRvcik6CisgICAgICAgICogZWRpdGlu
Zy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVBcHBseVN0eWxl
KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlVG9nZ2xlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0
ZUFwcGx5UGFyYWdyYXBoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6c3RhdGVTdHlsZSk6Cisg
ICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKToKKyAgICAgICAgKiBodG1s
L0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGRIVE1M
TGVuZ3RoVG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRkSFRNTENv
bG9yVG9TdHlsZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAoSFRN
TEVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmFkZFNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFj
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJp
YnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6bWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25B
dHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFNWR1N0eWxlZEVsZW1lbnQpOgorCiAyMDEyLTA0LTAyICBEYW5p
ZWwgQ2hlbmcgIDxkY2hlbmdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhhdmluZyBhIGRyb3Ag
aGFuZGxlciBwcmV2ZW50cyBuYXZpZ2F0aW9uIG9uIGRyb3AgZXZlbiBpZiBldmVudCBpcyBub3Qg
Y2FuY2VsbGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDlmMGVlMmM5ODc3ZDYzMTg2ZDVmNzc1ZTRhNmRm
ZTBiNzVhMzFlZDQuLjc1ODcyNjBiNDkxOTc2NWQxZGNkYzAyM2JkZWVlYWVhMWRhMTZjYmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTcgQEAKIDIwMTItMDQtMDIgIEFsZXhpcyBNZW5hcmQg
IDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+CiAKKyAgICAgICAgW1BhcnQgMl0gV2Ugc2hv
dWxkIHVzZSBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFuIGludGVnZXJzIHdoZW4gbWFuaXB1bGF0
aW5nIENTUyBwcm9wZXJ0eSBpZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04Mjk3NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSB0aGUgY29kZSB0byB1c2UgQ1NTUHJvcGVydHlJRCByYXRoZXIg
dGhhbiBhbiBpbnRlZ2VyLgorCisgICAgICAgICogQXBpL3F3ZWJlbGVtZW50LmNwcDoKKyAgICAg
ICAgKFFXZWJFbGVtZW50OjpzZXRTdHlsZVByb3BlcnR5KToKKworMjAxMi0wNC0wMiAgQWxleGlz
IE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKwogICAgICAgICBXZSBzaG91
bGQgdXNlIENTU1Byb3BlcnR5SUQgcmF0aGVyIHRoYW4gaW50ZWdlcnMgd2hlbiBtYW5pcHVsYXRp
bmcgQ1NTIHByb3BlcnR5IGlkcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgyOTQxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggMDdhMDM0MzQwNzkwNjdhZmY0ZWVlNjQ4N2Zk
MGI2ZTZlYWY5YzZiNS4uYjhjMjhkYjA3ZTM2NGYzOWFlZWMyNjgyOWRlOTEyODc1NDQyOTQxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bi5jcHAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OmNzc1RleHQoKSBjb25zdAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1D
b21wdXRlZFByb3BlcnRpZXM7IGkrKykgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHJl
c3VsdCArPSAiICI7Ci0gICAgICAgIHJlc3VsdCArPSBnZXRQcm9wZXJ0eU5hbWUoc3RhdGljX2Nh
c3Q8Q1NTUHJvcGVydHlJRD4oY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKSk7CisgICAgICAgIHJlc3Vs
dCArPSBnZXRQcm9wZXJ0eU5hbWUoY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKTsKICAgICAgICAgcmVz
dWx0ICs9ICI6ICI7CiAgICAgICAgIHJlc3VsdCArPSBnZXRQcm9wZXJ0eVZhbHVlKGNvbXB1dGVk
UHJvcGVydGllc1tpXSk7CiAgICAgICAgIHJlc3VsdCArPSAiOyI7CkBAIC0xMDg1LDE0ICsxMDg1
LDEyIEBAIGJvb2wgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp1c2VGaXhlZEZvbnREZWZh
dWx0U2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS51c2VG
aXhlZERlZmF1bHRTaXplKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG93
LCBpbnQgaWQsIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93
RGF0YSogc2hhZG93LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFJlbmRlclN0eWxlKiBzdHls
ZSkgY29uc3QKIHsKICAgICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCA9IG1fbm9kZS0+ZG9j
dW1lbnQoKS0+Y3NzVmFsdWVQb29sKCkuZ2V0KCk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAg
IHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUp
OwogCi0gICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVy
dHlJRD4oaWQpOwotCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHMg
PSBzaGFkb3c7IHM7IHMgPSBzLT5uZXh0KCkpIHsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiB4ID0gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShzLT54KCksIHN0eWxlLCBjc3NWYWx1
ZVBvb2wpOwpAQCAtMTEwNiw3ICsxMTA0LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXQKICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJ
RCkgY29uc3QKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCwgVXBkYXRlTGF5b3V0
KTsKIH0KQEAgLTEyNDYsMTMgKzEyNDQsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IGNvdW50ZXJUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IHByb3AKICAg
ICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50
ZWRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlEKQorc3RhdGljIHZvaWQgbG9nVW5pbXBsZW1lbnRl
ZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoSGFzaFNldDxpbnQ+LCBwcm9wZXJ0eUlEU2V0LCAoKSk7CiAgICAgaWYgKCFwcm9w
ZXJ0eUlEU2V0LmFkZChwcm9wZXJ0eUlEKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAK
LSAgICBMT0dfRVJST1IoIldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVtZW50IGdldENvbXB1dGVk
U3R5bGUgZm9yICclcycuIiwgZ2V0UHJvcGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5
SUQ+KHByb3BlcnR5SUQpKSk7CisgICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGlt
cGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShwcm9w
ZXJ0eUlEKSk7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhbWls
eUZyb21TdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIENTU1ZhbHVlUG9vbCogY3NzVmFsdWVQb29s
KQpAQCAtMTMyMyw3ICsxMzIxLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IGZvbnRXZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1MKICAgICByZXR1
cm4gY3NzVmFsdWVQb29sLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwog
fQogCi1QYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5
b3V0KSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0
ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fbm9kZS5n
ZXQoKTsKICAgICBpZiAoIW5vZGUpCkBAIC0xMzM2LDcgKzEzMzQsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUo
aW50IHByb3BlcgogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigp
OwogCiAgICAgUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZTsKLSAgICBpZiAocmVuZGVyZXIgJiYg
aGFzQ29tcG9zaXRlZExheWVyKHJlbmRlcmVyKSAmJiBBbmltYXRpb25Db250cm9sbGVyOjpzdXBw
b3J0c0FjY2VsZXJhdGVkQW5pbWF0aW9uT2ZQcm9wZXJ0eShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0
eUlEPihwcm9wZXJ0eUlEKSkpIHsKKyAgICBpZiAocmVuZGVyZXIgJiYgaGFzQ29tcG9zaXRlZExh
eWVyKHJlbmRlcmVyKSAmJiBBbmltYXRpb25Db250cm9sbGVyOjpzdXBwb3J0c0FjY2VsZXJhdGVk
QW5pbWF0aW9uT2ZQcm9wZXJ0eShwcm9wZXJ0eUlEKSkgewogICAgICAgICBzdHlsZSA9IHJlbmRl
cmVyLT5hbmltYXRpb24oKS0+Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsK
ICAgICAgICAgaWYgKG1fcHNldWRvRWxlbWVudFNwZWNpZmllcikgewogICAgICAgICAgICAgLy8g
RklYTUU6IFRoaXMgY2FjaGVkIHBzZXVkbyBzdHlsZSB3aWxsIG9ubHkgZXhpc3QgaWYgdGhlIGFu
aW1hdGlvbiBoYXMgYmVlbiBydW4gYXQgbGVhc3Qgb25jZS4KQEAgLTEzNTksNyArMTM1Nyw3IEBA
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJv
cGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAKICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHk6
OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KHByb3BlcnR5SUQsIHN0eWxlLT5kaXJlY3Rp
b24oKSwgc3R5bGUtPndyaXRpbmdNb2RlKCkpOwogCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkgeworICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5SW52YWxpZDoKICAgICAgICAgICAgIGJyZWFrOwogCkBA
IC0yMzQ2LDcgKzIzNDQsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXI6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUgPSBnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBE
b05vdFVwZGF0ZUxheW91dCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9
IHsgQ1NTUHJvcGVydHlCb3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sCisgICAg
ICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyAr
K2kpIHsKICAgICAgICAgICAgICAgICBpZiAodmFsdWUtPmNzc1RleHQoKSAhPSAgZ2V0UHJvcGVy
dHlDU1NWYWx1ZShwcm9wZXJ0aWVzW2ldLCBEb05vdFVwZGF0ZUxheW91dCktPmNzc1RleHQoKSkK
QEAgLTI1MjAsNyArMjUxOCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgcmV0dXJu
IDA7CiB9CiAKLVN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CitTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QK
IHsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9w
ZXJ0eUlEKTsKICAgICBpZiAodmFsdWUpCkBAIC0yNTQ3LDcgKzI1NDUsNyBAQCBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgaWYg
KGkgPj0gbGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIHJldHVybiBnZXRQcm9w
ZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY29tcHV0ZWRQcm9wZXJ0aWVzW2ld
KSk7CisgICAgcmV0dXJuIGdldFByb3BlcnR5TmFtZShjb21wdXRlZFByb3BlcnRpZXNbaV0pOwog
fQogCiBib29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUHJvcGVydHlNYXRjaGVz
KGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0eSkgY29uc3QKQEAgLTI2MzMsNyArMjYzMSw3IEBA
IENTU1J1bGUqIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cGFyZW50UnVsZSgpIGNvbnN0
CiAKIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0
UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpbnQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKKyAgICBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFw
cm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZ2V0UHJvcGVydHlDU1NW
YWx1ZShwcm9wZXJ0eUlEKTsKQEAgLTI2NDEsNyArMjYzOSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25z
dCBTdHJpCiAKIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
VmFsdWUoY29uc3QgU3RyaW5nICZwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaW50IHByb3BlcnR5SUQg
PSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkK
ICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlKHBy
b3BlcnR5SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5oCmluZGV4IDhkMWIzNTlkNGU2MDYwOTAzZmM4YzUwYjEyZTBlNTU5MDk5MGIxY2Mu
LmY2NGQyM2IwMzliZmVmN2IxNDQ5MDk4YTYyYmRlM2U3ZmZmM2E3ZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTU3LDE4ICs1
NywxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCBkZXJlZigpIE9WRVJSSURFOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3Q7Ci0gICAgU3RyaW5nIGdl
dFByb3BlcnR5VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0OwotICAgIGJvb2wgZ2V0UHJvcGVy
dHlQcmlvcml0eShpbnQgcHJvcGVydHlJRCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBTdHJpbmcg
Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29sIGdldFByb3Bl
cnR5UHJpb3JpdHkoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gY29weSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTdHlsZVByb3BlcnR5U2V0PiBtYWtlTXV0YWJsZSgpOwogCi0gICAgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkg
Y29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVl
PiBnZXRGb250U2l6ZUNTU1ZhbHVlUHJlZmVycmluZ0tleXdvcmQoKSBjb25zdDsKICAgICBib29s
IHVzZUZpeGVkRm9udERlZmF1bHRTaXplKCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNWRykKLSAgICBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlE
LCBFVXBkYXRlTGF5b3V0KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQ
cm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OwogI2Vu
ZGlmCiAKICAgICBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5T
ZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwpAQCAt
OTUsNyArOTUsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGNzc1Byb3BlcnR5TWF0
Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSopIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gdmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSosIGludCwgUmVuZGVyU3R5bGUqKSBj
b25zdDsKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFk
b3dEYXRhKiwgQ1NTUHJvcGVydHlJRCwgUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5
bGUqLCBjb25zdCBDb2xvciYpIGNvbnN0OwogI2lmIEVOQUJMRShTVkcpCiAgICAgUGFzc1JlZlB0
cjxTVkdQYWludD4gYWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUGFzc1JlZlB0cjxTVkdQ
YWludD4sIFJlbmRlclN0eWxlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA4
ZjEyNGNiZmZiN2MwMjRjZWJhYmU2Y2U1MDkyMTMyODhiZmY4MzY0Li5hODQxMDAyZTQzY2RkNWU0
ZDRhMWUxNTNkODNiMTVkNTI0ZTVlNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTEz
MDcsNyArMTMwNyw3IEBAIGRlY2xhcmF0aW9uOgogICAgICAgICBpZiAoJDEgJiYgJDQpIHsKICAg
ICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gcC0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsK
ICAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0
aWVzLnNpemUoKTsKLSAgICAgICAgICAgICQkID0gcC0+cGFyc2VWYWx1ZSgkMSwgJDUpOworICAg
ICAgICAgICAgJCQgPSBwLT5wYXJzZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQx
KSwgJDUpOwogICAgICAgICAgICAgaWYgKCEkJCkKICAgICAgICAgICAgICAgICBwLT5yb2xsYmFj
a0xhc3RQcm9wZXJ0aWVzKHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBvbGRQYXJzZWRQ
cm9wZXJ0aWVzKTsKICAgICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5k
ZXggMTQyZmE5MWE3M2M0ZTlkOWZhOGQzODZhNTNhZmZmZTI0YzRhZDlkOC4uOGRiZjcxY2I5ZDY0
OWNhYWE5YmE3M2FlNjE5ZWUwYTg3Yzk2NzA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAK
QEAgLTE4Myw3ICsxODMsNyBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmVuc3VyZUNTU1ZhbHVl
UG9vbCgpCiBDU1NQYXJzZXI6OkNTU1BhcnNlcihDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUp
CiAgICAgOiBtX2Nzc1BhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faW1wb3J0YW50
KGZhbHNlKQotICAgICwgbV9pZCgwKQorICAgICwgbV9pZChDU1NQcm9wZXJ0eUludmFsaWQpCiAg
ICAgLCBtX3N0eWxlU2hlZXQoMCkKICAgICAsIG1faW5QYXJzZVNob3J0aGFuZCgwKQogICAgICwg
bV9jdXJyZW50U2hvcnRoYW5kKDApCkBAIC0yOTQsNyArMjk0LDcgQEAgUGFzc1JlZlB0cjxTdHls
ZUtleWZyYW1lPiBDU1NQYXJzZXI6OnBhcnNlS2V5ZnJhbWVSdWxlKENTU1N0eWxlU2hlZXQgKnNo
ZWV0LCBjb24KICAgICByZXR1cm4gbV9rZXlmcmFtZS5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgYm9vbCBpc0NvbG9yUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc0NvbG9yUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCiB7CiAg
ICAgc3dpdGNoIChwcm9wZXJ0eUlkKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgpAQCAt
MzIxLDcgKzMyMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbG9yUHJvcGVydHlJRChpbnQg
cHJvcGVydHlJZCkKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHls
ZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3N0YXRpYyBib29sIHBhcnNlQ29sb3JWYWx1
ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlk
LCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgYm9v
bCBzdHJpY3QgPSBpc1N0cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CiAgICAgaWYgKCFz
dHJpbmcubGVuZ3RoKCkpCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xv
clZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29u
c3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVu
Z3RoUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXZlTnVtYmVy
cykKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlkLCBib29sJiBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzKQogewogICAgIHN3
aXRjaCAocHJvcGVydHlJZCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKQEAgLTQw
OCw3ICs0MDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlE
KGludCBwcm9wZXJ0eUlkLCBib29sJiBhY2NlcHRzTmVnYXRpdgogICAgIH0KIH0KIAotc3RhdGlj
IGJvb2wgcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlv
biwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwg
Q1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVT
aGVldCkKK3N0YXRpYyBib29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9wZXJ0eVNl
dCogZGVjbGFyYXRpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wgYWNjZXB0c05lZ2F0aXZl
TnVtYmVyczsKICAgICBib29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJN
b2RlKTsKQEAgLTQ4Myw3ICs0ODMsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZh
bHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKGludCBwcm9wZXJ0eUlkLCBpbnQgdmFsdWVJRCkKK3N0YXRpYyBpbmxpbmUgYm9v
bCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlk
LCBpbnQgdmFsdWVJRCkKIHsKICAgICBpZiAoIXZhbHVlSUQpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTgwNCw3ICs4MDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQ
cm9wZXJ0eUFuZFZhbHVlKGludCBwcm9wZXJ0eUlkLCBpbnQgdmFsdWVJRCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKGludCBw
cm9wZXJ0eUlkKQorc3RhdGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3BlcnR5SUQoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlkKQogewogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewogICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b21TdHlsZToKQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNLZXl3b3JkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKICAgICB9
CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRl
Y2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1w
b3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3N0YXRpYyBib29sIHBh
cnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTk0MCwyNSArOTQwLDI1IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHN0cmluCiAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTVmFsdWVM
aXN0PihkdW1teVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWls
eSkpOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBk
ZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGlt
cG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlT
ZXQqIGRlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKLSAgICBpZiAocGFyc2VTaW1wbGVMZW5n
dGhWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNzc1Bh
cnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VTaW1wbGVMZW5ndGhW
YWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJRCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNzc1BhcnNl
ck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRh
bnQsIGNzc1BhcnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VDb2xv
clZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFy
c2VyTW9kZSwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBp
ZiAocGFyc2VLZXl3b3JkVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1w
b3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRl
Y2xhcmF0aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hl
ZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNl
ck1vZGUpOwotICAgIHJldHVybiBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVy
dHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICByZXR1cm4g
cGFyc2VyLnBhcnNlVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SUQsIHN0cmluZywgaW1wb3J0
YW50LCBjb250ZXh0U3R5bGVTaGVldCk7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVT
aGVldCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xh
cmF0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAg
c2V0U3R5bGVTaGVldChjb250ZXh0U3R5bGVTaGVldCk7CiAKICAgICBzZXR1cFBhcnNlcigiQC13
ZWJraXQtdmFsdWV7Iiwgc3RyaW5nLCAifSAiKTsKIAotICAgIG1faWQgPSBwcm9wZXJ0eUlkOwor
ICAgIG1faWQgPSBwcm9wZXJ0eUlEOwogICAgIG1faW1wb3J0YW50ID0gaW1wb3J0YW50OwogCiAg
ICAgY3NzeXlwYXJzZSh0aGlzKTsKQEAgLTExMDcsNyArMTEwNyw3IEBAIFBhc3NPd25QdHI8TWVk
aWFRdWVyeT4gQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgcmV0dXJuIG1fbWVkaWFRdWVyeS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ1NTUGFyc2Vy
OjphZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCit2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHko
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGlt
cG9ydGFudCwgYm9vbCBpbXBsaWNpdCkKIHsKICAgICBtX3BhcnNlZFByb3BlcnRpZXMuYXBwZW5k
KENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5k
LCBtX2ltcGxpY2l0U2hvcnRoYW5kIHx8IGltcGxpY2l0KSk7CiB9CkBAIC0xMzU5LDcgKzEzNTks
NyBAQCBpbmxpbmUgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJz
ZVZhbGlkUHJpbWl0aXZlKGludCBpZCwgQ1NTUAogICAgIHJldHVybiAwOwogfQogCi1ib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkK
IHsKICAgICBpZiAoIW1fdmFsdWVMaXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDA2
LDcgKzE0MDYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKICAgICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRy
PENTU1ZhbHVlPiBwYXJzZWRWYWx1ZTsKIAotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJv
cGVydHlJRD4ocHJvcElkKSkgeworICAgIHN3aXRjaCAocHJvcElkKSB7CiAgICAgICAgIC8qIFRo
ZSBjb21tZW50IHRvIHRoZSBsZWZ0IGRlZmluZXMgYWxsIHZhbGlkIHZhbHVlIG9mIHRoaXMgcHJv
cGVydGllcyBhcyBkZWZpbmVkCiAgICAgICAgICAqIGluIENTUyAyLCBBcHBlbmRpeCBGLiBQcm9w
ZXJ0eSBpbmRleAogICAgICAgICAgKi8KQEAgLTE2NTEsNyArMTY1MSw3IEBAIGJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NT
UHJvcGVydHlXZWJraXRNYXNrUmVwZWF0WTogewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZh
bDE7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMjsKLSAgICAgICAgaW50IHByb3BJZDEs
IHByb3BJZDI7CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcElkMSwgcHJvcElkMjsKICAgICAg
ICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgaWYgKHBhcnNlRmlsbFByb3BlcnR5KHBy
b3BJZCwgcHJvcElkMSwgcHJvcElkMiwgdmFsMSwgdmFsMikpIHsKICAgICAgICAgICAgIE93blB0
cjxTaG9ydGhhbmRTY29wZT4gc2hvcnRoYW5kU2NvcGU7CkBAIC0yMDc0LDcgKzIwNzQsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwxOwogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZh
bDI7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMzsKLSAgICAgICAgaW50IHByb3BJZDEs
IHByb3BJZDIsIHByb3BJZDM7CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcElkMSwgcHJvcElk
MiwgcHJvcElkMzsKICAgICAgICAgaWYgKHBhcnNlVHJhbnNmb3JtT3JpZ2luKHByb3BJZCwgcHJv
cElkMSwgcHJvcElkMiwgcHJvcElkMywgdmFsMSwgdmFsMiwgdmFsMykpIHsKICAgICAgICAgICAg
IGFkZFByb3BlcnR5KHByb3BJZDEsIHZhbDEucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAg
ICAgICAgaWYgKHZhbDIpCkBAIC0yMTA1LDcgKzIxMDUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFy
c2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0UGVyc3BlY3RpdmVPcmlnaW5ZOiB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
MTsKICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWwyOwotICAgICAgICBpbnQgcHJvcElkMSwg
cHJvcElkMjsKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQxLCBwcm9wSWQyOwogICAgICAg
ICBpZiAocGFyc2VQZXJzcGVjdGl2ZU9yaWdpbihwcm9wSWQsIHByb3BJZDEsIHByb3BJZDIsIHZh
bDEsIHZhbDIpKSB7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQxLCB2YWwxLnJlbGVh
c2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgICAgIGlmICh2YWwyKQpAQCAtMjU1MCw3ICsyNTUw
LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VCYWNrZ3JvdW5kQ2xpcChDU1NQYXJzZXJWYWx1ZSogcGFy
c2VyVmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4mIGMKIAogY29uc3QgaW50IGNNYXhGaWxsUHJvcGVy
dGllcyA9IDk7CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9ydGhhbmQoaW50IHByb3BJ
ZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJv
b2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcywgaW50IG51bVBy
b3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KQogewogICAgIEFTU0VSVChudW1Qcm9wZXJ0aWVzIDw9
IGNNYXhGaWxsUHJvcGVydGllcyk7CiAgICAgaWYgKG51bVByb3BlcnRpZXMgPiBjTWF4RmlsbFBy
b3BlcnRpZXMpCkBAIC0yNTk5LDcgKzI1OTksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxs
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsCiAg
ICAgICAgICAgICBpZiAoIXBhcnNlZFByb3BlcnR5W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWwxOwogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFs
MjsKLSAgICAgICAgICAgICAgICBpbnQgcHJvcElkMSwgcHJvcElkMjsKKyAgICAgICAgICAgICAg
ICBDU1NQcm9wZXJ0eUlEIHByb3BJZDEsIHByb3BJZDI7CiAgICAgICAgICAgICAgICAgQ1NTUGFy
c2VyVmFsdWUqIHBhcnNlclZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICAgICAg
ICAgICAgICBpZiAocGFyc2VGaWxsUHJvcGVydHkocHJvcGVydGllc1tpXSwgcHJvcElkMSwgcHJv
cElkMiwgdmFsMSwgdmFsMikpIHsKICAgICAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlb
aV0gPSBmb3VuZCA9IHRydWU7CkBAIC0yODAzLDcgKzI4MDMsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKK2Jvb2wg
Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKIHsKICAgICAv
LyBXZSB0cnkgdG8gbWF0Y2ggYXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3NpYmxlCiAgICAgLy8g
V2Ugc2V0IHVwIGFuIGFycmF5IG9mIGJvb2xlYW5zIHRvIG1hcmsgd2hpY2ggcHJvcGVydHkgaGFz
IGJlZW4gZm91bmQsCkBAIC0yODUwLDcgKzI4NTAsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VT
aG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRo
YQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGlu
dCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFu
dCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGNv
bnN0IENTU1Byb3BlcnR5SUQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKIHsKICAgICAv
KiBGcm9tIHRoZSBDU1MgMiBzcGVjcywgOC4zCiAgICAgICogSWYgdGhlcmUgaXMgb25seSBvbmUg
dmFsdWUsIGl0IGFwcGxpZXMgdG8gYWxsIHNpZGVzLiBJZiB0aGVyZSBhcmUgdHdvIHZhbHVlcywg
dGhlIHRvcCBhbmQKQEAgLTI5MDksNyArMjkwOSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRW
YWx1ZXMoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJvcGVydHlJRCAqcHJvcGVydGllcywgIGJvb2wK
IH0KIAogLy8gYXV0byB8IDxpZGVudGlmaWVyPgotYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGFnZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVBhZ2UoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIEFTU0VSVChwcm9wSWQg
PT0gQ1NTUHJvcGVydHlQYWdlKTsKIApAQCAtMjkzMSw3ICsyOTMxLDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlUGFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIH0KIAogLy8gPGxlbmd0
aD57MSwyfSB8IGF1dG8gfCBbIDxwYWdlLXNpemU+IHx8IFsgcG9ydHJhaXQgfCBsYW5kc2NhcGVd
IF0KLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVNpemUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
Citib29sIENTU1BhcnNlcjo6cGFyc2VTaXplKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKIHsKICAgICBBU1NFUlQocHJvcElkID09IENTU1Byb3BlcnR5U2l6ZSk7CiAKQEAg
LTMwMDUsNyArMzAwNSw3IEBAIENTU1BhcnNlcjo6U2l6ZVBhcmFtZXRlclR5cGUgQ1NTUGFyc2Vy
OjpwYXJzZVNpemVQYXJhbWV0ZXIoQ1NTVmFsdWVMaXN0KiBwYXJzZWRWCiAKIC8vIFsgPHN0cmlu
Zz4gPHN0cmluZz4gXSsgfCBpbmhlcml0IHwgbm9uZQogLy8gaW5oZXJpdCBhbmQgbm9uZSBhcmUg
aGFuZGxlZCBpbiBwYXJzZVZhbHVlLgotYm9vbCBDU1NQYXJzZXI6OnBhcnNlUXVvdGVzKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlUXVvdGVzKENTU1By
b3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVM
aXN0PiB2YWx1ZXMgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAg
d2hpbGUgKENTU1BhcnNlclZhbHVlKiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CkBA
IC0zMDI4LDcgKzMwMjgsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VRdW90ZXMoaW50IHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiAvLyBbIDxzdHJpbmc+IHwgPHVyaT4gfCA8Y291bnRlcj4gfCBh
dHRyKFgpIHwgb3Blbi1xdW90ZSB8IGNsb3NlLXF1b3RlIHwgbm8tb3Blbi1xdW90ZSB8IG5vLWNs
b3NlLXF1b3RlIF0rIHwgaW5oZXJpdAogLy8gaW4gQ1NTIDIuMSB0aGlzIGdvdCBzb21ld2hhdCBy
ZWR1Y2VkOgogLy8gWyA8c3RyaW5nPiB8IGF0dHIoWCkgfCBvcGVuLXF1b3RlIHwgY2xvc2UtcXVv
dGUgfCBuby1vcGVuLXF1b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0Ci1ib29sIENT
U1BhcnNlcjo6cGFyc2VDb250ZW50KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBD
U1NQYXJzZXI6OnBhcnNlQ29udGVudChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVDb21tYVNlcGFyYXRlZCgpOwogCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCB2b2lkIENTU1Bh
cnNlcjo6cGFyc2VGaWxsUmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPENT
U1ZhbHVlPiYgdmFsdQogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2Vy
OjpwYXJzZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wmIGFsbG93Q29tbWEpCitQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IGJvb2wmIGFsbG93Q29tbWEpCiB7CiAgICAgYWxsb3dDb21tYSA9IHRydWU7CiAgICAgQ1NTUGFy
c2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTMzNDgsNyArMzM0
OCw2IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShpbnQg
cHJvcElkLCBib29sJiBhbGxvd0NvbW1hKQogICAgICAgICBwYXJzZWRWYWx1ZTEgPSBjcmVhdGVQ
cmltaXRpdmVOdW1lcmljVmFsdWUodmFsdWUpOwogICAgIH0KIAotICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpOwogICAgIFJlZlB0
cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUyOwogICAgIGlmICgodmFsdWUgPSBtX3Zh
bHVlTGlzdC0+bmV4dCgpKSkgewogICAgICAgICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2Vy
VmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJywnKQpAQCAtMzM1OCw3ICszMzU3
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKGludCBw
cm9wSWQsIGJvb2wmIGFsbG93Q29tbWEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAg
ICAgICAgICBwYXJzZWRWYWx1ZTIgPSBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUodmFsdWUp
OwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmICghcGFyc2VkVmFsdWUyICYmIHByb3BlcnR5ID09
IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpIHsKKyAgICB9IGVsc2UgaWYgKCFwYXJz
ZWRWYWx1ZTIgJiYgcHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpIHsK
ICAgICAgICAgLy8gRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdlIHNldCB0aGUgc2Vjb25k
IHZhbHVlIHRvIHRoZSBmaXJzdCBpZiBpdCBpcyBvbWl0dGVkLgogICAgICAgICAvLyBXZSBvbmx5
IG5lZWQgdG8gZG8gdGhpcyBmb3IgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemUuIEl0IHNob3VsZCBi
ZSBzYWZlIHRvIGxldCBtYXNrcyBtYXRjaAogICAgICAgICAvLyB0aGUgcmVhbCBwcm9wZXJ0eS4K
QEAgLTMzNzAsNyArMzM2OSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFy
c2VGaWxsU2l6ZShpbnQgcHJvcElkLCBib29sJiBhbGxvd0NvbW1hKQogICAgIHJldHVybiBjc3NW
YWx1ZVBvb2woKS0+Y3JlYXRlVmFsdWUoUGFpcjo6Y3JlYXRlKHBhcnNlZFZhbHVlMS5yZWxlYXNl
KCksIHBhcnNlZFZhbHVlMi5yZWxlYXNlKCkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNl
RmlsbFByb3BlcnR5KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLAorYm9v
bCBDU1NQYXJzZXI6OnBhcnNlRmlsbFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQ
cm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4mIHJldFZhbHVlMSwgUmVmUHRy
PENTU1ZhbHVlPiYgcmV0VmFsdWUyKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVl
czsKQEAgLTM0OTAsNiArMzQ4OSw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxQcm9wZXJ0
eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzcxMiw3ICszNzE0LDcgQEAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkK
ICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVy
dHkoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0KQorYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFJlZlB0cjxDU1NW
YWx1ZT4mIHJlc3VsdCkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXM7CiAgICAg
Q1NTUGFyc2VyVmFsdWUqIHZhbDsKQEAgLTM3NzksNiArMzc4MSw5IEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KGludCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHJl
c3VsdCkKICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJWYWx1ZSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fdmFsdWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmICghY3VyclZhbHVlKQpAQCAtMzgxNSw3ICszODIwLDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkoaW50IHByb3BJZCwgUmVm
UHRyPENTU1ZhbHVlPiYgcmVzdWx0KQogfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
LWJvb2wgQ1NTUGFyc2VyOjpwYXJzZUdyaWRUcmFja0xpc3QoaW50IHByb3BJZCwgYm9vbCBpbXBv
cnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tMaXN0KENTU1Byb3BlcnR5SUQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBt
X3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVOb25l
KSB7CkBAIC0zODU5LDcgKzM4NjQsNyBAQCBzdGF0aWMgQ1NTUGFyc2VyVmFsdWUqIHNraXBDb21t
YUluRGFzaGJvYXJkUmVnaW9uKENTU1BhcnNlclZhbHVlTGlzdCAqYXJncykKICAgICByZXR1cm4g
YXJncy0+Y3VycmVudCgpOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdp
b25zKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGFz
aGJvYXJkUmVnaW9ucyhDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAg
ICAgYm9vbCB2YWxpZCA9IHRydWU7CiAKQEAgLTQwMzYsNyArNDA0MSw3IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VDb3VudGVyQ29udGVudChDU1NQYXJzZXJWYWx1ZUxp
c3QqIGFyZ3MsIGJvCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVWYWx1ZShDb3Vu
dGVyOjpjcmVhdGUoaWRlbnRpZmllci5yZWxlYXNlKCksIGxpc3RTdHlsZS5yZWxlYXNlKCksIHNl
cGFyYXRvci5yZWxlYXNlKCkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ2xpcFNoYXBl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ2xpcFNo
YXBlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKICAgICBDU1NQYXJz
ZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIENTU1BhcnNlclZh
bHVlTGlzdCogYXJncyA9IHZhbHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKQEAgLTUzODIsOSAr
NTM4Nyw5IEBAIHN0cnVjdCBTaGFkb3dQYXJzZUNvbnRleHQgewogICAgIGJvb2wgYWxsb3dCcmVh
azsKIH07CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlU2hhZG93
KENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBpbnQgcHJvcElkKQorUGFzc1JlZlB0cjxD
U1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VTaGFkb3coQ1NTUGFyc2VyVmFsdWVMaXN0KiB2
YWx1ZUxpc3QsIENTU1Byb3BlcnR5SUQgcHJvcElkKQogewotICAgIFNoYWRvd1BhcnNlQ29udGV4
dCBjb250ZXh0KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BJZCksIHRoaXMpOworICAg
IFNoYWRvd1BhcnNlQ29udGV4dCBjb250ZXh0KHByb3BJZCwgdGhpcyk7CiAgICAgQ1NTUGFyc2Vy
VmFsdWUqIHZhbDsKICAgICB3aGlsZSAoKHZhbCA9IHZhbHVlTGlzdC0+Y3VycmVudCgpKSkgewog
ICAgICAgICAvLyBDaGVjayBmb3IgYSBjb21tYSBicmVhayBmaXJzdC4KQEAgLTUzOTUsNyArNTQw
MCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlU2hhZG93KENT
U1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7
CiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgICAgIC8vIC13ZWJraXQtc3ZnLXNoYWRvdyBkb2Vz
IG5vdCBzdXBwb3J0IG11bHRpcGxlIHZhbHVlcy4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpID09IENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93KQor
ICAgICAgICAgICAgaWYgKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdykKICAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogICAgICAgICAgICAgLy8gVGhlIHZhbHVl
IGlzIGdvb2QuICBDb21taXQgaXQuCkBAIC01NDQ3LDcgKzU0NTIsNyBAQCBQYXNzUmVmUHRyPENT
U1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QqIHZh
bHVlTGlzdCwgaQogICAgIHJldHVybiAwOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VSZWZs
ZWN0KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmVm
bGVjdChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gYm94
LXJlZmxlY3Q6IDxkaXJlY3Rpb24+IDxvZmZzZXQ+IDxtYXNrPgogCkBAIC01NDk2LDcgKzU1MDEs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSZWZsZWN0KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VGbGV4KGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmxleChDU1NQ
cm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUq
IHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBDU1NQYXJzZXJWYWx1ZUxpc3Qq
IGFyZ3MgPSB2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3MuZ2V0KCk7CkBAIC01NjM4LDcgKzU2NDMsNyBA
QCBzdHJ1Y3QgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICBjb21taXRCb3JkZXJJ
bWFnZVByb3BlcnR5KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQsIHBhcnNlciwgbV9yZXBl
YXQsIGltcG9ydGFudCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21taXRCb3JkZXJJbWFnZVByb3Bl
cnR5KGludCBwcm9wSWQsIENTU1BhcnNlciogcGFyc2VyLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCisgICAgdm9pZCBjb21taXRCb3JkZXJJbWFnZVByb3BlcnR5
KENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgUGFzc1JlZlB0cjxDU1NW
YWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlKQog
ICAgICAgICAgICAgcGFyc2VyLT5hZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQp
OwpAQCAtNTY2NSw3ICs1NjcwLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsK
ICAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fcmVwZWF0OwogfTsKIAotYm9vbCBDU1NQYXJzZXI6OnBh
cnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0LCBib29s
IGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQsIGJvb2wgaW1wb3J0YW50KQogewog
ICAgIFNob3J0aGFuZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAgQm9yZGVySW1hZ2VQ
YXJzZUNvbnRleHQgY29udGV4dDsKQEAgLTU4NTUsNyArNTg2MCw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBtX2ZpbGw7CiB9OwogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVNsaWNl
KGludCBwcm9wSWQsIFJlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+JiByZXN1bHQpCiti
b29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVNsaWNlKENTU1Byb3BlcnR5SUQgcHJvcElk
LCBSZWZQdHI8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiYgcmVzdWx0KQogewogICAgIEJvcmRl
ckltYWdlU2xpY2VQYXJzZUNvbnRleHQgY29udGV4dCh0aGlzKTsKICAgICBDU1NQYXJzZXJWYWx1
ZSogdmFsOwpAQCAtNjAxNyw3ICs2MDIyLDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVCb3JkZXJS
YWRpaShSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGlpWzRdKQogICAgIHJhZGlpWzNdID0g
cmFkaWlbMV07CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhD
U1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgdW5zaWduZWQgbnVt
ID0gbV92YWx1ZUxpc3QtPnNpemUoKTsKICAgICBpZiAobnVtID4gOSkKQEAgLTYxMDUsNyArNjEx
MCw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFzcGVjdFJhdGlvKGJvb2wgaW1wb3J0YW50KQog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VDb3VudGVyKGludCBw
cm9wSWQsIGludCBkZWZhdWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQ291bnRlcihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgaW50IGRlZmF1bHRWYWx1ZSwgYm9v
bCBpbXBvcnRhbnQpCiB7CiAgICAgZW51bSB7IElELCBWQUwgfSBzdGF0ZSA9IElEOwogCkBAIC03
MzEyLDcgKzczMTcsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGbG93VGhyZWFkKGNvbnN0IFN0
cmluZyYgZmxvd05hbWUsIERvY3VtZW50KiBkb2MpCiB9CiAKIC8vIG5vbmUgfCA8aWRlbnQ+Ci1i
b29sIENTU1BhcnNlcjo6cGFyc2VGbG93VGhyZWFkKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmxvd1RocmVhZChDU1NQcm9wZXJ0eUlEIHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQVNTRVJUKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtp
dEZsb3dJbnRvKTsKICAgICBBU1NFUlQoY3NzUmVnaW9uc0VuYWJsZWQoKSk7CkBAIC03MzQ0LDcg
KzczNDksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGbG93VGhyZWFkKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogfQogCiAvLyAtd2Via2l0LWZsb3ctZnJvbTogbm9uZSB8IDxpZGVudD4K
LWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVJlZ2lvblRocmVhZChpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVJlZ2lvblRocmVhZChDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQVNTRVJUKHByb3BJZCA9PSBDU1NQcm9wZXJ0
eVdlYmtpdEZsb3dGcm9tKTsKICAgICBBU1NFUlQoY3NzUmVnaW9uc0VuYWJsZWQoKSk7CkBAIC03
Mzc0LDcgKzczNzksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSZWdpb25UaHJlYWQoaW50IHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVRyYW5zZm9ybU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYg
cHJvcElkMiwgaW50JiBwcm9wSWQzLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSwgUmVmUHRyPENT
U1ZhbHVlPiYgdmFsdWUyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTMpCitib29sIENTU1BhcnNl
cjo6cGFyc2VUcmFuc2Zvcm1PcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5
SUQmIHByb3BJZDEsIENTU1Byb3BlcnR5SUQmIHByb3BJZDIsIENTU1Byb3BlcnR5SUQmIHByb3BJ
ZDMsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTIsIFJl
ZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMykKIHsKICAgICBwcm9wSWQxID0gcHJvcElkOwogICAgIHBy
b3BJZDIgPSBwcm9wSWQ7CkBAIC03NDEwLDEyICs3NDE1LDE1IEBAIGJvb2wgQ1NTUGFyc2VyOjpw
YXJzZVRyYW5zZm9ybU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElk
MiwgaW50CiAgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVBlcnNwZWN0aXZlT3JpZ2lu
KGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+
JiB2YWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUyKQorYm9vbCBDU1NQYXJzZXI6OnBhcnNl
UGVyc3BlY3RpdmVPcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHBy
b3BJZDEsIENTU1Byb3BlcnR5SUQmIHByb3BJZDIsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlLCBS
ZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTIpCiB7CiAgICAgcHJvcElkMSA9IHByb3BJZDsKICAgICBw
cm9wSWQyID0gcHJvcElkOwpAQCAtNzQ0MCw2ICs3NDQ4LDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlUGVyc3BlY3RpdmVPcmlnaW4oaW50IHByb3BJZCwgaW50JiBwcm9wSWQxLCBpbnQmIHByb3BJ
ZDIsIFIKICAgICAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJl
dHVybiB2YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA1M2YzMzIxMzZhMWY3YjZlYTNh
MDEyYTYwNGYwMmQ1MGU3ZjllYTU2Li5lMTBjMjdkMTQ2OTRkNDdiYzkxODQxNzgzNWY1NzhkYzk0
ZjJkMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBhcnNlU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYsIGludCBz
dGFydExpbmVOdW1iZXIgPSAwLCBTdHlsZVJ1bGVSYW5nZU1hcCogcnVsZVJhbmdlTWFwID0gMCk7
CiAgICAgUGFzc1JlZlB0cjxTdHlsZVJ1bGVCYXNlPiBwYXJzZVJ1bGUoQ1NTU3R5bGVTaGVldCos
IGNvbnN0IFN0cmluZyYpOwogICAgIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gcGFyc2VLZXlm
cmFtZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29s
IHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYs
IGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5
bGVTaGVldCk7CisgICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0Kiwg
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCwgQ1NTUGFyc2VyTW9kZSwgQ1NTU3R5
bGVTaGVldCopOwogICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29u
c3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VT
eXN0ZW1Db2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1bWVudCopOwogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0
IEF0b21pY1N0cmluZyYsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKQEAgLTg2
LDE1ICs4NiwxNSBAQCBwdWJsaWM6CiAKICAgICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCgp
IGNvbnN0IHsgcmV0dXJuIG1fY3NzVmFsdWVQb29sLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZFBy
b3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwg
Ym9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5
SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sLCBib29sIGltcGxpY2l0ID0gZmFsc2UpOwog
ICAgIHZvaWQgcm9sbGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKICAgICBib29sIGhhc1By
b3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsg
fQogCi0gICAgYm9vbCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKLSAg
ICBib29sIHBhcnNlU2hvcnRoYW5kKGludCwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYs
IGJvb2wpOwotICAgIGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3Bl
cnR5SUQqIHByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBib29sIHBhcnNlQ29udGVu
dChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVF1b3RlcyhpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZVZhbHVlKENTU1Byb3BlcnR5
SUQsIGJvb2wpOworICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYsIGJvb2wpOworICAgIGJvb2wgcGFyc2U0VmFsdWVzKENT
U1Byb3BlcnR5SUQsIGNvbnN0IENTU1Byb3BlcnR5SUQqLCBib29sKTsKKyAgICBib29sIHBhcnNl
Q29udGVudChDU1NQcm9wZXJ0eUlELCBib29sKTsKKyAgICBib29sIHBhcnNlUXVvdGVzKENTU1By
b3BlcnR5SUQsIGJvb2wpOwogCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBdHRyKENT
U1BhcnNlclZhbHVlTGlzdCogYXJncyk7CiAKQEAgLTEwOSwxMCArMTA5LDEwIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBhcnNlRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCosIFJlZlB0cjxD
U1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKICAgICB2b2lkIHBhcnNlRmlsbFJlcGVh
dChSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlRmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCAmYWxsb3dDb21tYSk7Cisg
ICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCAmYWxsb3dDb21tYSk7CiAKLSAgICBib29sIHBhcnNlRmlsbFByb3BlcnR5KGludCBw
cm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVm
UHRyPENTU1ZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VGaWxsU2hvcnRoYW5kKGludCBwcm9wSWQs
IGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29s
IGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZpbGxQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBD
U1NQcm9wZXJ0eUlEJiwgQ1NTUHJvcGVydHlJRCYsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8
Q1NTVmFsdWU+Jik7CisgICAgYm9vbCBwYXJzZUZpbGxTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwg
Y29uc3QgQ1NTUHJvcGVydHlJRCosIGludCwgYm9vbCk7CiAKICAgICB2b2lkIGFkZEZpbGxWYWx1
ZShSZWZQdHI8Q1NTVmFsdWU+JiBsdmFsLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBydmFsKTsKIApA
QCAtMTMwLDE3ICsxMzAsMTcgQEAgcHVibGljOgogCiAgICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9y
aWdpblNob3J0aGFuZChSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0
cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZh
bHVlKENTU1BhcnNlclZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYgcmVzdWx0KTsKLSAgICBib29s
IHBhcnNlQW5pbWF0aW9uUHJvcGVydHkoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYpOwor
ICAgIGJvb2wgcGFyc2VBbmltYXRpb25Qcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVm
UHRyPENTU1ZhbHVlPiYpOwogICAgIGJvb2wgcGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wg
aW1wb3J0YW50KTsKICAgICBib29sIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0
YW50KTsKIAogI2lmIEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgYm9vbCBwYXJzZUdyaWRU
cmFja0xpc3QoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VHcmlk
VHJhY2tMaXN0KENTU1Byb3BlcnR5SUQsIGJvb2wpOwogI2VuZGlmCiAKLSAgICBib29sIHBhcnNl
RGFzaGJvYXJkUmVnaW9ucyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBw
YXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCwgYm9vbCk7CiAKLSAgICBib29sIHBh
cnNlQ2xpcFNoYXBlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNl
Q2xpcFNoYXBlKENTU1Byb3BlcnR5SUQsIGJvb2wpOwogCiAgICAgYm9vbCBwYXJzZUV4Y2x1c2lv
blNoYXBlKGJvb2wgc2hhcGVJbnNpZGUsIGJvb2wgaW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRy
PENTU1dyYXBTaGFwZT4gcGFyc2VFeGNsdXNpb25TaGFwZVJlY3QoQ1NTUGFyc2VyVmFsdWVMaXN0
KiBhcmdzKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZUZvbnQo
Ym9vbCBpbXBvcnRhbnQpOwogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZUZvbnRG
YW1pbHkoKTsKIAotICAgIGJvb2wgcGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBkZWZhdWx0
VmFsdWUsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlQ291bnRlcihDU1NQcm9wZXJ0
eUlELCBpbnQsIGJvb2wpOwogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQ291bnRlckNv
bnRlbnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzLCBib29sIGNvdW50ZXJzKTsKIAogICAgIGJv
b2wgcGFyc2VDb2xvclBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUqLCBpbnQqIGNvbG9yVmFsdWVz
LCBib29sIHBhcnNlQWxwaGEpOwpAQCAtMTY4LDI2ICsxNjgsMjYgQEAgcHVibGljOgogICAgIGJv
b2wgcGFyc2VGb250RmFjZVVuaWNvZGVSYW5nZSgpOwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBi
b29sIHBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wg
cGFyc2VTVkdWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU1ZHUGFpbnQoKTsKICAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZVNWR0NvbG9yKCk7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VT
VkdTdHJva2VEYXNoYXJyYXkoKTsKICNlbmRpZgogCiAgICAgLy8gQ1NTMyBQYXJzaW5nIFJvdXRp
bmVzIChmb3IgcHJvcGVydGllcyBzcGVjaWZpYyB0byBDU1MzKQotICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBwYXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QqLCBpbnQgcHJvcElkKTsK
LSAgICBib29sIHBhcnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYs
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBw
YXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QqLCBDU1NQcm9wZXJ0eUlEKTsKKyAgICBib29s
IHBhcnNlQm9yZGVySW1hZ2UoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiYsIGJvb2wg
aW1wb3J0YW50ID0gZmFsc2UpOwogICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZVJlcGVhdChSZWZQ
dHI8Q1NTVmFsdWU+Jik7Ci0gICAgYm9vbCBwYXJzZUJvcmRlckltYWdlU2xpY2UoaW50IHByb3BJ
ZCwgUmVmUHRyPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4mKTsKKyAgICBib29sIHBhcnNlQm9y
ZGVySW1hZ2VTbGljZShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTQm9yZGVySW1hZ2VTbGljZVZh
bHVlPiYpOwogICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZVdpZHRoKFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlQm9yZGVySW1hZ2VPdXRzZXQoUmVmUHRyPENTU1By
aW1pdGl2ZVZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VCb3JkZXJSYWRpdXMoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VCb3JkZXJSYWRpdXMoQ1NTUHJvcGVydHlJ
RCwgYm9vbCk7CiAKICAgICBib29sIHBhcnNlQXNwZWN0UmF0aW8oYm9vbCBpbXBvcnRhbnQpOwog
Ci0gICAgYm9vbCBwYXJzZVJlZmxlY3QoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAg
IGJvb2wgcGFyc2VSZWZsZWN0KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKIAotICAg
IGJvb2wgcGFyc2VGbGV4KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBh
cnNlRmxleChDU1NQcm9wZXJ0eUlELCBib29sIGltcG9ydGFudCk7CiAKICAgICAvLyBJbWFnZSBn
ZW5lcmF0b3JzCiAgICAgYm9vbCBwYXJzZUNhbnZhcyhDU1NQYXJzZXJWYWx1ZUxpc3QqLCBSZWZQ
dHI8Q1NTVmFsdWU+Jik7CkBAIC0yMTIsOCArMjEyLDggQEAgcHVibGljOgogI2VuZGlmCiAKICAg
ICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VUcmFuc2Zvcm0oKTsKLSAgICBib29sIHBh
cnNlVHJhbnNmb3JtT3JpZ2luKGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQy
LCBpbnQmIHByb3BJZDMsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVm
UHRyPENTU1ZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VQZXJzcGVjdGl2ZU9yaWdpbihpbnQgcHJv
cElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQ
dHI8Q1NTVmFsdWU+Jik7CisgICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9yaWdpbihDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMSwgQ1NTUHJvcGVydHlJRCYgcHJvcElk
MiwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMywgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NW
YWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CisgICAgYm9vbCBwYXJzZVBlcnNwZWN0aXZlT3Jp
Z2luKENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9w
ZXJ0eUlEJiBwcm9wSWQyLCAgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsK
IAogICAgIGJvb2wgcGFyc2VUZXh0RW1waGFzaXNTdHlsZShib29sIGltcG9ydGFudCk7CiAKQEAg
LTIyNSw4ICsyMjUsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNzc1JlZ2lvbnNFbmFibGVkKCkg
Y29uc3Q7CiAgICAgYm9vbCBwYXJzZUZsb3dUaHJlYWQoY29uc3QgU3RyaW5nJiBmbG93TmFtZSwg
RG9jdW1lbnQqKTsKLSAgICBib29sIHBhcnNlRmxvd1RocmVhZChpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVJlZ2lvblRocmVhZChpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCk7CisgICAgYm9vbCBwYXJzZUZsb3dUaHJlYWQoQ1NTUHJvcGVydHlJRCwgYm9vbCk7
CisgICAgYm9vbCBwYXJzZVJlZ2lvblRocmVhZChDU1NQcm9wZXJ0eUlELCBib29sKTsKIAogICAg
IGJvb2wgcGFyc2VGb250VmFyaWFudExpZ2F0dXJlcyhib29sIGltcG9ydGFudCk7CiAKQEAgLTI4
OCw3ICsyODgsNyBAQCBwdWJsaWM6CiAKICAgICBDU1NQYXJzZXJNb2RlIG1fY3NzUGFyc2VyTW9k
ZTsKICAgICBib29sIG1faW1wb3J0YW50OwotICAgIGludCBtX2lkOworICAgIENTU1Byb3BlcnR5
SUQgbV9pZDsKICAgICBDU1NTdHlsZVNoZWV0KiBtX3N0eWxlU2hlZXQ7CiAgICAgUmVmUHRyPFN0
eWxlUnVsZUJhc2U+IG1fcnVsZTsKICAgICBSZWZQdHI8U3R5bGVLZXlmcmFtZT4gbV9rZXlmcmFt
ZTsKQEAgLTM2OCw3ICszNjgsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNHZW5lcmF0ZWRJbWFn
ZVZhbHVlKENTU1BhcnNlclZhbHVlKikgY29uc3Q7CiAgICAgYm9vbCBwYXJzZUdlbmVyYXRlZElt
YWdlKENTU1BhcnNlclZhbHVlTGlzdCosIFJlZlB0cjxDU1NWYWx1ZT4mKTsKIAotICAgIGJvb2wg
cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHByb3BJZCwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICBi
b29sIHBhcnNlVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0
cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0Kik7CiAKICAgICBlbnVtIFNpemVQ
YXJhbWV0ZXJUeXBlIHsKICAgICAgICAgTm9uZSwKQEAgLTM3OCw4ICszNzgsOCBAQCBwcml2YXRl
OgogICAgICAgICBPcmllbnRhdGlvbiwKICAgICB9OwogCi0gICAgYm9vbCBwYXJzZVBhZ2UoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwotICAgIGJvb2wgcGFyc2VTaXplKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlUGFnZShDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VTaXplKENTU1Byb3BlcnR5SUQgcHJv
cElkLCBib29sIGltcG9ydGFudCk7CiAgICAgU2l6ZVBhcmFtZXRlclR5cGUgcGFyc2VTaXplUGFy
YW1ldGVyKENTU1ZhbHVlTGlzdCogcGFyc2VkVmFsdWVzLCBDU1NQYXJzZXJWYWx1ZSogdmFsdWUs
IFNpemVQYXJhbWV0ZXJUeXBlIHByZXZQYXJhbVR5cGUpOwogCiAgICAgYm9vbCBwYXJzZUZvbnRG
YWNlU3JjVVJJKENTU1ZhbHVlTGlzdCopOwpAQCAtNDc0LDcgKzQ3NCw3IEBAIHZvaWQgY3NzUHJv
cGVydHlOYW1lSU9TQWxpYXNpbmcoY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBjb25zdCBjaGFy
KiYgcHJvcGVydHlOCiBjbGFzcyBTaG9ydGhhbmRTY29wZSB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgU2hvcnRoYW5kU2NvcGUoQ1NTUGFyc2VyKiBwYXJzZXIs
IGludCBwcm9wSWQpIDogbV9wYXJzZXIocGFyc2VyKQorICAgIFNob3J0aGFuZFNjb3BlKENTU1Bh
cnNlciogcGFyc2VyLCBDU1NQcm9wZXJ0eUlEIHByb3BJZCkgOiBtX3BhcnNlcihwYXJzZXIpCiAg
ICAgewogICAgICAgICBpZiAoIShtX3BhcnNlci0+bV9pblBhcnNlU2hvcnRoYW5kKyspKQogICAg
ICAgICAgICAgbV9wYXJzZXItPm1fY3VycmVudFNob3J0aGFuZCA9IHByb3BJZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuY3BwCmluZGV4IDE2MGYwMmRmZDZiYzhiNWNiYWM2YzgzMmM3NjIwZjlj
OWMwMzZjNTYuLmI3NDExZTY5ODNkMmEyODlkZTA1YWEzMzUyMzMwNzJmZDM5MmRmZTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcApAQCAtNTAsNyArNTAsNyBAQCB2b2lkIENTU1Byb3Bl
cnR5Ojp3cmFwVmFsdWVJbkNvbW1hU2VwYXJhdGVkTGlzdCgpCiBlbnVtIExvZ2ljYWxCb3hTaWRl
IHsgQmVmb3JlU2lkZSwgRW5kU2lkZSwgQWZ0ZXJTaWRlLCBTdGFydFNpZGUgfTsKIGVudW0gUGh5
c2ljYWxCb3hTaWRlIHsgVG9wU2lkZSwgUmlnaHRTaWRlLCBCb3R0b21TaWRlLCBMZWZ0U2lkZSB9
OwogCi1zdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2Fs
U2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQorc3RhdGljIENT
U1Byb3BlcnR5SUQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxCb3hTaWRlIGxvZ2ljYWxTaWRl
LCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmQpCiB7CiAgICAgaWYgKGRp
cmVjdGlvbiA9PSBMVFIpIHsKICAgICAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9t
V3JpdGluZ01vZGUpIHsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW50IHJlc29sdmVUb1Bo
eXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdyaXRp
bgogCiBlbnVtIExvZ2ljYWxFeHRlbnQgeyBMb2dpY2FsV2lkdGgsIExvZ2ljYWxIZWlnaHQgfTsK
IAotc3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdyaXRp
bmdNb2RlLCBMb2dpY2FsRXh0ZW50IGxvZ2ljYWxTaWRlLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBw
cm9wZXJ0aWVzKQorc3RhdGljIENTU1Byb3BlcnR5SUQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0
eShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTG9naWNhbEV4dGVudCBsb2dpY2FsU2lkZSwgY29u
c3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcykKIHsKICAgICBpZiAod3JpdGluZ01vZGUgPT0g
VG9wVG9Cb3R0b21Xcml0aW5nTW9kZSB8fCB3cml0aW5nTW9kZSA9PSBCb3R0b21Ub1RvcFdyaXRp
bmdNb2RlKQogICAgICAgICByZXR1cm4gcHJvcGVydGllc1tsb2dpY2FsU2lkZV07CkBAIC0xNzEs
OSArMTcxLDkgQEAgc3RhdGljIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIGJvcmRlckRp
cmVjdGlvbnMoKQogICAgIHJldHVybiBib3JkZXJEaXJlY3Rpb25zOwogfQogCi1pbnQgQ1NTUHJv
cGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCitDU1NQcm9wZXJ0
eUlEIENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0
aW5nTW9kZSkKIHsKLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3Bl
cnR5SUQpKSB7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdE1hcmdpbkVuZDoKICAgICAgICAgcmV0dXJuIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkoZGlyZWN0aW9uLCB3cml0aW5nTW9kZSwgRW5kU2lkZSwgbWFyZ2luU2hvcnRoYW5kKCkpOwog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5TdGFydDoKQEAgLTI1MSw5ICsyNTEsOSBA
QCBpbnQgQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9w
ZXJ0eUlELCBUZXh0RGlyZWN0aW9uIGRpcgogICAgIH0KIH0KIAotYm9vbCBDU1NQcm9wZXJ0eTo6
aXNJbmhlcml0ZWRQcm9wZXJ0eSh1bnNpZ25lZCBwcm9wZXJ0eUlEKQorYm9vbCBDU1NQcm9wZXJ0
eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7Ci0gICAg
c3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkgeworICAgIHN3
aXRjaCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJDb2xsYXBzZToK
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyU3BhY2luZzoKICAgICBjYXNlIENTU1Byb3BlcnR5
Q2FwdGlvblNpZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHku
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCmluZGV4IGI5NGY5MGFkOTBjNjdl
MWJkNGJjZmNkYzRhODIxODc1M2M1ODg1NDYuLjEyMjBkMTcyNzIwZjMxZDg4NWU0YjAwM2I1NDk5
ZjgwZjVkOGRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5oCkBAIC0zMiw3ICszMiw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ1NTUHJvcGVydHkgewogcHVibGljOgotICAg
IENTU1Byb3BlcnR5KHVuc2lnbmVkIHByb3BJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUs
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhhbmRJRCA9IDAsIGJvb2wgaW1wbGlj
aXQgPSBmYWxzZSkKKyAgICBDU1NQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJRCwgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIGludCBzaG9ydGhh
bmRJRCA9IDAsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSkKICAgICAgICAgOiBtX2lkKHByb3BJRCkK
ICAgICAgICAgLCBtX3Nob3J0aGFuZElEKHNob3J0aGFuZElEKQogICAgICAgICAsIG1faW1wb3J0
YW50KGltcG9ydGFudCkKQEAgLTU1LDggKzU1LDggQEAgcHVibGljOgogCiAgICAgdm9pZCB3cmFw
VmFsdWVJbkNvbW1hU2VwYXJhdGVkTGlzdCgpOwogCi0gICAgc3RhdGljIGludCByZXNvbHZlRGly
ZWN0aW9uQXdhcmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiwgV3JpdGlu
Z01vZGUpOwotICAgIHN0YXRpYyBib29sIGlzSW5oZXJpdGVkUHJvcGVydHkodW5zaWduZWQgcHJv
cGVydHlJRCk7CisgICAgc3RhdGljIENTU1Byb3BlcnR5SUQgcmVzb2x2ZURpcmVjdGlvbkF3YXJl
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiwgV3JpdGluZ01vZGUpOworICAg
IHN0YXRpYyBib29sIGlzSW5oZXJpdGVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAKIHByaXZh
dGU6CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcgZml0cyBpbiA0IGJ5dGVzLiBSZWFs
bHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMjI3NzhhMmNm
ZmE5NDVmNGUxYmU3YzY4NmI4ZjY2MTA4ZTBiMDg5OC4uYWVhZGUyMzdhZDM4ODVlNWQ2NjkwMWRi
M2ViMjQzNjJiYjU2MTQ1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cApAQCAtMjU5Myw3ICsyNTkzLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGUKICAgICAgICAg
ICAgIEFTU0VSVCghY3VycmVudC52YWx1ZSgpLT5pc0luaGVyaXRlZFZhbHVlKCkpOwogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgaW50IHByb3BlcnR5ID0gY3VycmVu
dC5pZCgpOworICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gY3VycmVudC5pZCgpOwog
CiAgICAgICAgIGlmIChmaWx0ZXJSZWdpb25Qcm9wZXJ0aWVzICYmICFDU1NTdHlsZVNlbGVjdG9y
Ojppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShwcm9wZXJ0eSkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTI5MjcsNyArMjkyNyw3IEBAIENTU1N0eWxlUnVsZSogQ1NTU3R5bGVTZWxlY3Rv
cjo6ZW5zdXJlRnVsbENTU09NV3JhcHBlckZvckluc3BlY3RvcihTdHlsZVJ1bGUqIHJ1CiAgICAg
cmV0dXJuIG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAuZ2V0KHJ1bGUpLmdldCgpOwogfQog
Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHlUb1N0eWxlKGludCBpZCwgQ1NT
VmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwg
UmVuZGVyU3R5bGUqIHN0eWxlKQogewogICAgIGluaXRFbGVtZW50KDApOwogICAgIGluaXRGb3JT
dHlsZVJlc29sdmUoMCwgc3R5bGUpOwpAQCAtMjkzNSwxNSArMjkzNSwxNSBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHlUb1N0eWxlKGludCBpZCwgQ1NTVmFsdWUqIHZhbHVl
LCBSZW5kZXJTdHlsZQogICAgIGFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShpZCwgdmFsdWUp
OwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHls
ZShpbnQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkK
IHsKICAgICBpZiAodmFsdWUpCiAgICAgICAgIGFwcGx5UHJvcGVydHkoaWQsIHZhbHVlKTsKIH0K
IAotaW5saW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaW50IGlkKQoraW5saW5l
IGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkKIHsKLSAg
ICBzd2l0Y2goc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpKSB7CisgICAgc3dpdGNoIChp
ZCkgewogICAgICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5Qm9yZGVyTGVmdENvbG9yOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
Qm9yZGVyUmlnaHRDb2xvcjoKQEAgLTI5NzcsOSArMjk3Nyw5IEBAIGlubGluZSBib29sIGlzVmFs
aWRWaXNpdGVkTGlua1Byb3BlcnR5KGludCBpZCkKIAogLy8gaHR0cDovL2Rldi53My5vcmcvY3Nz
d2cvY3NzMy1yZWdpb25zLyN0aGUtYXQtcmVnaW9uLXN0eWxlLXJ1bGUKIC8vIEZJWE1FOiBhZGQg
aW5jcmVtZW50YWwgc3VwcG9ydCBmb3Igb3RoZXIgcmVnaW9uIHN0eWxpbmcgcHJvcGVydGllcy4K
LWlubGluZSBib29sIENTU1N0eWxlU2VsZWN0b3I6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5
KGludCBpZCkKK2lubGluZSBib29sIENTU1N0eWxlU2VsZWN0b3I6OmlzVmFsaWRSZWdpb25TdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCiB7Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxD
U1NQcm9wZXJ0eUlEPihpZCkpIHsKKyAgICBzd2l0Y2ggKGlkKSB7CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUJhY2tncm91bmRDb2xvcjoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoK
QEAgLTMwNjQsNyArMzA2NCw3IEBAIHN0YXRpYyBib29sIGNyZWF0ZUdyaWRQb3NpdGlvbihDU1NW
YWx1ZSogdmFsdWUsIExlbmd0aCYgcG9zaXRpb24pCiB9CiAjZW5kaWYKIAotdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQordm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVl
ICp2YWx1ZSkKIHsKICAgICBib29sIGlzSW5oZXJpdCA9IG1fcGFyZW50Tm9kZSAmJiB2YWx1ZS0+
aXNJbmhlcml0ZWRWYWx1ZSgpOwogICAgIGJvb2wgaXNJbml0aWFsID0gdmFsdWUtPmlzSW5pdGlh
bFZhbHVlKCkgfHwgKCFtX3BhcmVudE5vZGUgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKSk7
CkBAIC0zMDc2LDEzICszMDc2LDExIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihp
ZCk7Ci0KLSAgICBpZiAoaXNJbmhlcml0ICYmIG1fcGFyZW50U3R5bGUgJiYgIW1fcGFyZW50U3R5
bGUtPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCkgJiYgIUNTU1Byb3BlcnR5Ojpp
c0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5KSkKKyAgICBpZiAoaXNJbmhlcml0ICYmIG1fcGFy
ZW50U3R5bGUgJiYgIW1fcGFyZW50U3R5bGUtPmhhc0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0
aWVzKCkgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KGlkKSkKICAgICAgICAg
bV9wYXJlbnRTdHlsZS0+c2V0SGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKTsKIAog
ICAgIC8vIGNoZWNrIGxvb2t1cCB0YWJsZSBmb3IgaW1wbGVtZW50YXRpb25zIGFuZCB1c2Ugd2hl
biBhdmFpbGFibGUKLSAgICBjb25zdCBQcm9wZXJ0eUhhbmRsZXImIGhhbmRsZXIgPSBtX2FwcGx5
UHJvcGVydHkucHJvcGVydHlIYW5kbGVyKHByb3BlcnR5KTsKKyAgICBjb25zdCBQcm9wZXJ0eUhh
bmRsZXImIGhhbmRsZXIgPSBtX2FwcGx5UHJvcGVydHkucHJvcGVydHlIYW5kbGVyKGlkKTsKICAg
ICBpZiAoaGFuZGxlci5pc1ZhbGlkKCkpIHsKICAgICAgICAgaWYgKGlzSW5oZXJpdCkKICAgICAg
ICAgICAgIGhhbmRsZXIuYXBwbHlJbmhlcml0VmFsdWUodGhpcyk7CkBAIC0zMTAwLDcgKzMwOTgs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1
ZSAqdmFsdWUpCiAgICAgLy8gV2hhdCBmb2xsb3dzIGlzIGEgbGlzdCB0aGF0IG1hcHMgdGhlIENT
UyBwcm9wZXJ0aWVzIGludG8gdGhlaXIgY29ycmVzcG9uZGluZyBmcm9udC1lbmQKICAgICAvLyBS
ZW5kZXJTdHlsZSB2YWx1ZXMuICBTaG9ydGhhbmRzIChlLmcuIGJvcmRlciwgYmFja2dyb3VuZCkg
b2NjdXIgaW4gdGhpcyBsaXN0IGFzIHdlbGwgYW5kCiAgICAgLy8gYXJlIG9ubHkgaGl0IHdoZW4g
bWFwcGluZyAiaW5oZXJpdCIgb3IgImluaXRpYWwiIGludG8gZnJvbnQtZW5kIHZhbHVlcy4KLSAg
ICBzd2l0Y2ggKHByb3BlcnR5KSB7CisgICAgc3dpdGNoIChpZCkgewogLy8gbGlzdHMKICAgICBj
YXNlIENTU1Byb3BlcnR5Q29udGVudDoKICAgICAgICAgLy8gbGlzdCBvZiBzdHJpbmcsIHVyaSwg
Y291bnRlciwgYXR0ciwgaQpAQCAtMzQ2MCw3ICszNDU4LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICAgICAg
cmVmbGVjdGlvbi0+c2V0T2Zmc2V0KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbnZlcnRUb0xl
bmd0aDxGaXhlZEludGVnZXJDb252ZXJzaW9uIHwgUGVyY2VudENvbnZlcnNpb24gfCBDYWxjdWxh
dGVkQ29udmVyc2lvbj4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7
CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7CiAgICAgICAgIG1hc2suc2V0TWFza0RlZmF1
bHRzKCk7Ci0gICAgICAgIG1hcE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCByZWZsZWN0VmFsdWUt
Pm1hc2soKSwgbWFzayk7CisgICAgICAgIG1hcE5pbmVQaWVjZUltYWdlKGlkLCByZWZsZWN0VmFs
dWUtPm1hc2soKSwgbWFzayk7CiAgICAgICAgIHJlZmxlY3Rpb24tPnNldE1hc2sobWFzayk7CiAK
ICAgICAgICAgbV9zdHlsZS0+c2V0Qm94UmVmbGVjdChyZWZsZWN0aW9uLnJlbGVhc2UoKSk7CkBA
IC0zNzQyLDcgKzM3NDAsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExv
Z2ljYWxXaWR0aDoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWF4TG9naWNhbEhlaWdodDoK
ICAgICB7Ci0gICAgICAgIGludCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9u
QXdhcmVQcm9wZXJ0eShpZCwgbV9zdHlsZS0+ZGlyZWN0aW9uKCksIG1fc3R5bGUtPndyaXRpbmdN
b2RlKCkpOworICAgICAgICBDU1NQcm9wZXJ0eUlEIG5ld0lkID0gQ1NTUHJvcGVydHk6OnJlc29s
dmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkLCBtX3N0eWxlLT5kaXJlY3Rpb24oKSwgbV9zdHls
ZS0+d3JpdGluZ01vZGUoKSk7CiAgICAgICAgIEFTU0VSVChuZXdJZCAhPSBpZCk7CiAgICAgICAg
IHJldHVybiBhcHBseVByb3BlcnR5KG5ld0lkLCB2YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggZTRiYjU0MTA0MzU0NWFkOTZjZTA3M2Q2MTI4MTkx
OTc0OWE3Mzk5My4uZjk5YTY3OGI0OWRiNTY3YzE3YzlkOGU4ZjBiNjVmMGNiM2M4Y2JhYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0yMDEsOSArMjAxLDkgQEAgcHVi
bGljOgogcHVibGljOgogICAgIHZvaWQgc2V0U3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
cykgeyBtX3N0eWxlID0gczsgfSAvLyBVc2VkIGJ5IHRoZSBkb2N1bWVudCB3aGVuIHNldHRpbmcg
dXAgaXRzIHJvb3Qgc3R5bGUuCiAKLSAgICB2b2lkIGFwcGx5UHJvcGVydHlUb1N0eWxlKGludCBp
ZCwgQ1NTVmFsdWUqLCBSZW5kZXJTdHlsZSopOworICAgIHZvaWQgYXBwbHlQcm9wZXJ0eVRvU3R5
bGUoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBSZW5kZXJTdHlsZSopOwogCi0gICAgdm9pZCBh
cHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoaW50IGlkLCBDU1NWYWx1ZSopOworICAgIHZvaWQg
YXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0eWxlKENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CiAK
ICAgICB2b2lkIHVwZGF0ZUZvbnQoKTsKIApAQCAtMzU2LDcgKzM1Niw3IEBAIHByaXZhdGU6CiAg
ICAgdGVtcGxhdGUgPGJvb2wgZmlyc3RQYXNzPgogICAgIHZvaWQgYXBwbHlQcm9wZXJ0aWVzKGNv
bnN0IFN0eWxlUHJvcGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlUnVsZSosIGJvb2wgaXNJbXBv
cnRhbnQsIGJvb2wgaW5oZXJpdGVkT25seSwgYm9vbCBmaWx0ZXJSZWdpb25Qcm9wZXJ0aWVzKTsK
IAotICAgIHN0YXRpYyBib29sIGlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KGludCBpZCk7Cisg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7
CiAKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzKE1hdGNoUmVzdWx0JiwgUnVsZVNldCosIGJvb2wg
aXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwgY29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CiAg
ICAgdm9pZCBtYXRjaFBhZ2VSdWxlc0Zvckxpc3QoVmVjdG9yPFN0eWxlUnVsZVBhZ2UqPiYgbWF0
Y2hlZFJ1bGVzLCBjb25zdCBWZWN0b3I8U3R5bGVSdWxlUGFnZSo+JiwgYm9vbCBpc0xlZnRQYWdl
LCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VOYW1lKTsKQEAgLTQzMCwxMCAr
NDMwLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgYm9vbCBjYW5TaGFyZVN0eWxlV2l0aENv
bnRyb2woU3R5bGVkRWxlbWVudCopIGNvbnN0OwogCi0gICAgdm9pZCBhcHBseVByb3BlcnR5KGlu
dCBpZCwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwg
Q1NTVmFsdWUqKTsKIAogI2lmIEVOQUJMRShTVkcpCi0gICAgdm9pZCBhcHBseVNWR1Byb3BlcnR5
KGludCBpZCwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIGFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCwgQ1NTVmFsdWUqKTsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBs
b2FkUGVuZGluZ0ltYWdlKFN0eWxlUGVuZGluZ0ltYWdlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDc4ZTM1
MTZjM2RjMDRkNzM2ODk5MmY4YWQyYjgwYWVjMjliNWZlMmEuLmU5YjQxYTNmNjYxOWUzYjNkNjY4
OTBhYmY3MzI2ZDM4NzY5NmM1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9w
ZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Q
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9p
ZCBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgcHJvcGVydHlOYW1lLCBjb24KICNpZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAg
IFN0eWxlQXR0cmlidXRlTXV0YXRpb25TY29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlm
Ci0gICAgaW50IHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CisgICAg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwog
ICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuOwogICAgIGJvb2wgaW1wb3J0YW50
ID0gcHJpb3JpdHkuZmluZCgiaW1wb3J0YW50IiwgMCwgZmFsc2UpICE9IG5vdEZvdW5kOwpAQCAt
MjMwLDcgKzIzMCw3IEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnJl
bW92ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lCiAjaWYgRU5BQkxFKE1VVEFU
SU9OX09CU0VSVkVSUykKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0aW9uU2NvcGUgbXV0YXRpb25T
Y29wZSh0aGlzKTsKICNlbmRpZgotICAgIGludCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChw
cm9wZXJ0eU5hbWUpOworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5
SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBT
dHJpbmcoKTsKICAgICBlYyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZH
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDdlZjNiMDdkMzlmYjhjZmExYzQy
MzY2MTM4NmU5MWY1ZmJkODhlZjcuLmQ2MGJkZjI1MWZlYjRkYTYyYmU3ZjU4M2Y4ZjQwZWQzZjJi
ODU1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCkBAIC02OCw3ICs2OCw3IEBAIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6YWRqdXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29s
b3IoCiAgICAgcmV0dXJuIHBhaW50LnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKGlu
dCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29uc3QKK1Bhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0U1ZHUHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5
b3V0KSBjb25zdAogewogICAgIE5vZGUqIG5vZGUgPSBtX25vZGUuZ2V0KCk7CiAgICAgaWYgKCFu
b2RlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcAppbmRleCA0MzRhZDJlZmJiZmRiNWVl
NmQ2MTk2NjY2NGQ4ZjE0YTRkY2VlMzg0Li5kM2VjMDZlZTk1ODc0MTcxZThiZGU2NmRlYTZhYjQx
ZmQzOTdkMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTUGFyc2VyLmNwcApAQCAtMzcsNyArMzcs
NyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wg
Q1NTUGFyc2VyOjpwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9v
bCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQogewogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJy
ZW50KCk7CiAgICAgaWYgKCF2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNl
bGVjdG9yLmNwcAppbmRleCAzMThkNzJiNzM3MDU1MGRhOGQ3MzM2NGQ1NzIyYjY2N2E2ZGY3YjZm
Li41Nzc0MTFhYzBhNjFhYWYwMWZmMDVlZDMwNjA3NGY4ZGZiNzEzMzNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgc3Rh
dGljIENvbG9yIGNvbG9yRnJvbVNWR0NvbG9yQ1NTVmFsdWUoU1ZHQ29sb3IqIHN2Z0NvbG9yLCBj
b25zdCBDb2xvciYgZmdDb2xvcikKICAgICByZXR1cm4gY29sb3I7CiB9CiAKLXZvaWQgQ1NTU3R5
bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKK3Zv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBD
U1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgQVNTRVJUKHZhbHVlKTsKICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUHJvcGVydHlTZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
ZXQuY3BwCmluZGV4IGE2Nzg3MTQxMTk0NDdhOGZhZWMyNmNmOWNhNTYwM2VhMTE5YzdhZmMuLmE4
ZjIxODYyOTRhOTdiNzg5MTJiNDlhZmVmNTM3OTg4YmMwNzcxOGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAKQEAgLTQxMywxMyArNDEzLDEzIEBAIFN0cmluZyBTdHls
ZVByb3BlcnR5U2V0OjpnZXRDb21tb25WYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5k
JiBzaG9ydGhhbmQpCiAgICAgcmV0dXJuIHJlczsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
U3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29u
c3QKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydHlTZXQ6OmdldFByb3BlcnR5Q1NT
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKSBjb25zdAogewogICAgIGNvbnN0IENTU1By
b3BlcnR5KiBwcm9wZXJ0eSA9IGZpbmRQcm9wZXJ0eVdpdGhJZChwcm9wZXJ0eUlEKTsKICAgICBy
ZXR1cm4gcHJvcGVydHkgPyBwcm9wZXJ0eS0+dmFsdWUoKSA6IDA7CiB9CiAKLWJvb2wgU3R5bGVQ
cm9wZXJ0eVNldDo6cmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCitib29s
IFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCkKIHsKICAgICBTdHlsZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNo
b3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgIGlmICghc2hvcnRoYW5kLmxlbmd0
aCgpKQpAQCAtNDI3LDcgKzQyNyw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlU2hv
cnRoYW5kUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCiAgICAgcmV0dXJuIHJlbW92ZVByb3BlcnRp
ZXNJblNldChzaG9ydGhhbmQucHJvcGVydGllcygpLCBzaG9ydGhhbmQubGVuZ3RoKCkpOwogfQog
Ci1ib29sIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBT
dHJpbmcqIHJldHVyblRleHQpCitib29sIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgU3RyaW5nKiByZXR1cm5UZXh0KQogewogICAgIGlm
IChyZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkgewogICAgICAgICAvLyBGSVhN
RTogUmV0dXJuIGFuIGVxdWl2YWxlbnQgc2hvcnRoYW5kIHdoZW4gcG9zc2libGUuCkBAIC00ODIs
NyArNDgyLDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5U2V0Ojppc1Byb3BlcnR5SW1wbGljaXQoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEKSBjb25zdAogICAgIHJldHVybiBwcm9wZXJ0eSA/IHByb3Bl
cnR5LT5pc0ltcGxpY2l0KCkgOiBmYWxzZTsKIH0KIAotYm9vbCBTdHlsZVByb3BlcnR5U2V0Ojpz
ZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBv
cnRhbnQsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQorYm9vbCBTdHlsZVByb3Bl
cnR5U2V0OjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVl
dCkKIHsKICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSB0byBhbiBlbXB0eSBzdHJpbmcganVzdCBy
ZW1vdmVzIHRoZSBwcm9wZXJ0eSBpbiBib3RoIElFIGFuZCBHZWNrby4KICAgICAvLyBTZXR0aW5n
IGl0IHRvIG51bGwgc2VlbXMgdG8gcHJvZHVjZSBsZXNzIGNvbnNpc3RlbnQgcmVzdWx0cywgYnV0
IHdlIHRyZWF0IGl0IGp1c3QgdGhlIHNhbWUuCkBAIC00OTYsNyArNDk2LDcgQEAgYm9vbCBTdHls
ZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXAKICAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKHRoaXMsIHBy
b3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUoKSwgY29udGV4dFN0eWxl
U2hlZXQpOwogfQogCi12b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9w
ZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBvcnRhbnQpCit2
b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewogICAg
IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHko
cHJvcGVydHlJRCk7CiAgICAgaWYgKCFzaG9ydGhhbmQubGVuZ3RoKCkpIHsKQEAgLTUyMyw3ICs1
MjMsNyBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGNvbnN0IENTU1Byb3Bl
cnR5JiBwcm9wZXJ0eSwgQ1NTUHJvcGVydHkqIHNsbwogICAgIG1fcHJvcGVydGllcy5hcHBlbmQo
cHJvcGVydHkpOwogfQogCi1ib29sIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBw
cm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQq
IGNvbnRleHRTdHlsZVNoZWV0KQorYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCwg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgUmVmUHRyPENTU1ByaW1p
dGl2ZVZhbHVlPiB2YWx1ZTsgICAgCiAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRl
eHRTdHlsZVNoZWV0ID8gY29udGV4dFN0eWxlU2hlZXQtPmZpbmREb2N1bWVudCgpIDogMCkKQEAg
LTcyOSw3ICs3MjksNyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6YXNUZXh0KCkgY29uc3QK
ICAgICAgICAgaWYgKHZhbHVlID09ICJpbml0aWFsIiAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJp
dGVkUHJvcGVydHkocHJvcGVydHlJRCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICByZXN1bHQuYXBwZW5kKGdldFByb3BlcnR5TmFtZShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlE
Pihwcm9wZXJ0eUlEKSkpOworICAgICAgICByZXN1bHQuYXBwZW5kKGdldFByb3BlcnR5TmFtZShw
cm9wZXJ0eUlEKSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoIjogIik7CiAgICAgICAgIHJlc3Vs
dC5hcHBlbmQodmFsdWUpOwogICAgICAgICByZXN1bHQuYXBwZW5kKHByb3AuaXNJbXBvcnRhbnQo
KSA/ICIgIWltcG9ydGFudCIgOiAiIik7CkBAIC04NzEsNyArODcxLDcgQEAgYm9vbCBTdHlsZVBy
b3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJvcGVydHlJRCogc2V0
LCB1bnNpZ25lZAogICAgIHJldHVybiBjaGFuZ2VkOwogfQogCi1jb25zdCBDU1NQcm9wZXJ0eSog
U3R5bGVQcm9wZXJ0eVNldDo6ZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKSBjb25z
dAorY29uc3QgQ1NTUHJvcGVydHkqIFN0eWxlUHJvcGVydHlTZXQ6OmZpbmRQcm9wZXJ0eVdpdGhJ
ZChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgZm9yIChpbnQgbiA9IG1f
cHJvcGVydGllcy5zaXplKCkgLSAxIDsgbiA+PSAwOyAtLW4pIHsKICAgICAgICAgaWYgKHByb3Bl
cnR5SUQgPT0gbV9wcm9wZXJ0aWVzW25dLmlkKCkpCkBAIC04ODAsNyArODgwLDcgQEAgY29uc3Qg
Q1NTUHJvcGVydHkqIFN0eWxlUHJvcGVydHlTZXQ6OmZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJv
cGVydHlJRCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotQ1NTUHJvcGVydHkqIFN0eWxlUHJv
cGVydHlTZXQ6OmZpbmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCkKK0NTU1Byb3BlcnR5
KiBTdHlsZVByb3BlcnR5U2V0OjpmaW5kUHJvcGVydHlXaXRoSWQoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEKQogewogICAgIGZvciAoaW50IG4gPSBtX3Byb3BlcnRpZXMuc2l6ZSgpIC0gMSA7IG4g
Pj0gMDsgLS1uKSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUlEID09IG1fcHJvcGVydGllc1tuXS5p
ZCgpKQpAQCAtODk3LDcgKzg5Nyw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cHJvcGVydHlN
YXRjaGVzKGNvbnN0IENTU1Byb3BlcnR5KiBwcm9wZXJ0eSkgY29uc3QKICAgICAKIHZvaWQgU3R5
bGVQcm9wZXJ0eVNldDo6cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9w
ZXJ0eVNldCogc3R5bGUpCiB7Ci0gICAgVmVjdG9yPGludD4gcHJvcGVydGllc1RvUmVtb3ZlOwor
ICAgIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0aWVzVG9SZW1vdmU7CiAgICAgc2l6ZV90
IHNpemUgPSBtX3Byb3BlcnRpZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IENTU1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcHJv
cGVydGllc1tpXTsKQEAgLTkxMSw3ICs5MTEsNyBAQCB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnJl
bW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQog
CiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0
IENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQogewotICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRp
ZXNUb1JlbW92ZTsKKyAgICBWZWN0b3I8Q1NTUHJvcGVydHlJRD4gcHJvcGVydGllc1RvUmVtb3Zl
OwogICAgIHNpemVfdCBzaXplID0gbV9wcm9wZXJ0aWVzLnNpemUoKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAgICBjb25zdCBDU1NQcm9wZXJ0eSYgcHJv
cGVydHkgPSBtX3Byb3BlcnRpZXNbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
aAppbmRleCBhMWExN2ZiNWQ3M2RmN2RlYWY5YTAyNDViZThjZmQ3YTBlODgxMDJhLi45MDhhYjI5
MjUxODIwZDhkYjk3ZTcxNzY2YWQxYzE5Mjk2YjczZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnR5U2V0LmgKQEAgLTYxLDIxICs2MSwyMSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNo
cmlua1RvRml0KCkgeyBtX3Byb3BlcnRpZXMuc2hyaW5rVG9GaXQoKTsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3Q7
CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUlEKSBjb25zdDsKICAgICBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEKSBj
b25zdDsKICAgICBib29sIHByb3BlcnR5SXNJbXBvcnRhbnQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7
CiAgICAgQ1NTUHJvcGVydHlJRCBnZXRQcm9wZXJ0eVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEKSBj
b25zdDsKICAgICBib29sIGlzUHJvcGVydHlJbXBsaWNpdChDU1NQcm9wZXJ0eUlEKSBjb25zdDsK
IAogICAgIC8vIFRoZXNlIGV4cGFuZCBzaG9ydGhhbmQgcHJvcGVydGllcyBpbnRvIG11bHRpcGxl
IHByb3BlcnRpZXMuCi0gICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgQ1NTU3R5bGVTaGVldCogY29u
dGV4dFN0eWxlU2hlZXQgPSAwKTsKLSAgICB2b2lkIHNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlE
LCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgYm9v
bCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFu
dCA9IGZhbHNlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCA9IDApOworICAgIHZv
aWQgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4sIGJvb2wg
aW1wb3J0YW50ID0gZmFsc2UpOwogCiAgICAgLy8gVGhlc2UgZG8gbm90LiBGSVhNRTogVGhpcyBp
cyB0b28gbWVzc3ksIHdlIGNhbiBkbyBiZXR0ZXIuCi0gICAgYm9vbCBzZXRQcm9wZXJ0eShpbnQg
cHJvcGVydHlJRCwgaW50IHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBDU1NTdHlsZVNo
ZWV0KiBjb250ZXh0U3R5bGVTaGVldCA9IDApOworICAgIGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCwgaW50LCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCA9IDApOwogICAgIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgQ1NTUHJvcGVy
dHkmLCBDU1NQcm9wZXJ0eSogc2xvdCA9IDApOwogICAgIAotICAgIGJvb2wgcmVtb3ZlUHJvcGVy
dHkoaW50IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCA9IDApOworICAgIGJvb2wgcmVt
b3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgU3RyaW5nKiByZXR1cm5UZXh0ID0gMCk7CiAKICAg
ICB2b2lkIHBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHlsZURlY2xhcmF0aW9uLCBD
U1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CiAKQEAgLTEyOCwxMSArMTI4LDExIEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIGZvbnRWYWx1ZSgpIGNvbnN0OwogICAgIGJvb2wgYXBwZW5k
Rm9udExvbmdoYW5kVmFsdWVJZkV4cGxpY2l0KENTU1Byb3BlcnR5SUQsIFN0cmluZ0J1aWxkZXIm
KSBjb25zdDsKIAotICAgIGJvb2wgcmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoaW50IHByb3BlcnR5
SUQpOworICAgIGJvb2wgcmVtb3ZlU2hvcnRoYW5kUHJvcGVydHkoQ1NTUHJvcGVydHlJRCk7CiAg
ICAgYm9vbCBwcm9wZXJ0eU1hdGNoZXMoY29uc3QgQ1NTUHJvcGVydHkqKSBjb25zdDsKIAotICAg
IGNvbnN0IENTU1Byb3BlcnR5KiBmaW5kUHJvcGVydHlXaXRoSWQoaW50IHByb3BlcnR5SUQpIGNv
bnN0OwotICAgIENTU1Byb3BlcnR5KiBmaW5kUHJvcGVydHlXaXRoSWQoaW50IHByb3BlcnR5SUQp
OworICAgIGNvbnN0IENTU1Byb3BlcnR5KiBmaW5kUHJvcGVydHlXaXRoSWQoQ1NTUHJvcGVydHlJ
RCkgY29uc3Q7CisgICAgQ1NTUHJvcGVydHkqIGZpbmRQcm9wZXJ0eVdpdGhJZChDU1NQcm9wZXJ0
eUlEKTsKIAogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0aWVzOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5jcHAKaW5kZXggYjRkZTEx
NzIxMmI3MTc3MmQyMTFjNmY5N2NhZjcyMWI5OTRhYWE3Mi4uMWFhZTQ4ZDk1Nzc5ZWFmNTI1NDM4
ZDkwZDM4OTNlMDUyZTQ5YTkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UHJvcGVydHlTaG9ydGhhbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3Bl
cnR5U2hvcnRoYW5kLmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIGNvbnN0IFN0eWxlUHJvcGVydHlT
aG9ydGhhbmQmIHdlYmtpdFdyYXBTaG9ydGhhbmQoKQogfQogCiAvLyBSZXR1cm5zIGFuIGVtcHR5
IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kRm9yUHJvcGVydHkoaW50IHByb3BlcnR5SUQpCitjb25z
dCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNob3J0aGFuZC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlT
aG9ydGhhbmQuaAppbmRleCAyMTg4MzNkYzhlNDczYzBjNzc3Njk5NTRkOGQxZjA1ZWMwOWIzYTQw
Li4xNzVlM2UxZTViNmZhOTI4MzJhYzVjZDRlMDIzMGUwNGZjMjEwZTAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgKQEAgLTk5LDcgKzk5LDcgQEAgY29u
c3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0VHJhbnNmb3JtT3JpZ2luU2hvcnRoYW5k
KCk7CiBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRXcmFwU2hvcnRoYW5kKCk7
CiAKIC8vIFJldHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hv
cnRoYW5kCi1jb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmRGb3JQcm9wZXJ0
eShpbnQpOworY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kRm9yUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDU1YmM0MWQ0MzUxY2E2ODM2YmI1NDRlMTc1NDI1
MGQ5NDFkYWM3MTEuLjY0MjkyMDRiZDI3ZjE2NmQzZTM4NWZmOWM0YjdiOGQyZjBhNWJiNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2lu
Y2x1ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU0ltYWdlVmFsdWUuaCIKKyNpbmNsdWRl
ICJDU1NQcm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rvci5oIgogI2lu
Y2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCkBA
IC0xNDUsMjEgKzE0NiwyMSBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OmlubGluZVN0eWxlQ2hhbmdl
ZCgpCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRy
KGRvY3VtZW50KCksIHRoaXMpOwogfQogICAgIAotYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBv
cnRhbnQpCitib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQpCiB7CiAg
ICAgZW5zdXJlQXR0cmlidXRlRGF0YSgpLT5lbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUodGhpcykt
PnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGRvY3VtZW50KCktPmNzc1ZhbHVlUG9vbCgpLT5jcmVh
dGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmllciksIGltcG9ydGFudCk7CiAgICAgaW5saW5lU3R5
bGVDaGFuZ2VkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgU3R5bGVkRWxlbWVudDo6
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgZG91YmxlIHZhbHVlLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBTdHls
ZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQsIGJvb2wg
aW1wb3J0YW50KQogewogICAgIGVuc3VyZUF0dHJpYnV0ZURhdGEoKS0+ZW5zdXJlTXV0YWJsZUlu
bGluZVN0eWxlKHRoaXMpLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBkb2N1bWVudCgpLT5jc3NW
YWx1ZVBvb2woKS0+Y3JlYXRlVmFsdWUodmFsdWUsIHVuaXQpLCBpbXBvcnRhbnQpOwogICAgIGlu
bGluZVN0eWxlQ2hhbmdlZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIFN0eWxlZEVs
ZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgYm9vbCBjaGFuZ2VzID0gZW5zdXJlQXR0cmlidXRl
RGF0YSgpLT5lbnN1cmVNdXRhYmxlSW5saW5lU3R5bGUodGhpcyktPnNldFByb3BlcnR5KHByb3Bl
cnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpKTsKICAg
ICBpZiAoY2hhbmdlcykKQEAgLTE2Nyw3ICsxNjgsNyBAQCBib29sIFN0eWxlZEVsZW1lbnQ6OnNl
dElubGluZVN0eWxlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUs
CiAgICAgcmV0dXJuIGNoYW5nZXM7CiB9CiAKLWJvb2wgU3R5bGVkRWxlbWVudDo6cmVtb3ZlSW5s
aW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKK2Jvb2wgU3R5bGVkRWxlbWVudDo6cmVt
b3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAg
U3R5bGVQcm9wZXJ0eVNldCogaW5saW5lU3R5bGUgPSBhdHRyaWJ1dGVEYXRhKCkgPyBhdHRyaWJ1
dGVEYXRhKCktPmlubGluZVN0eWxlKCkgOiAwOwogICAgIGlmICghaW5saW5lU3R5bGUpCkBAIC0y
NzgsMTIgKzI3OSwxMiBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZUF0dHJpYnV0ZVN0eWxl
KCkKICAgICAgICAgY2FjaGVJdGVyYXRvci0+c2Vjb25kID0gbmV3RW50cnkucmVsZWFzZSgpOwog
fQogCi12b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHls
ZVByb3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyKQordm9p
ZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0
eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIpCiB7
CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGRvY3VtZW50KCktPmNzc1ZhbHVl
UG9vbCgpLT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmllcikpOwogfQogCi12b2lkIFN0
eWxlZEVsZW1lbnQ6OmFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0
KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcyB1bml0KQordm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvQXR0cmli
dXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQpCiB7CiAg
ICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGRvY3VtZW50KCktPmNzc1ZhbHVlUG9v
bCgpLT5jcmVhdGVWYWx1ZSh2YWx1ZSwgdW5pdCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmgKaW5kZXggOWFlN2MxZDYxYjY5ZTg4YTQ5ZGRlMjZiMjhlNWU0N2JiMTRiYjZjNy4uZDFk
MjA4ZmMzZmRmNjliMmY1YzIxZjllM2QyMDg2NzMzOGQ1OWM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5
bGVkRWxlbWVudC5oCkBAIC00NCwxMCArNDQsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFN0eWxl
UHJvcGVydHlTZXQqIGVuc3VyZUlubGluZVN0eWxlKCkgeyByZXR1cm4gZW5zdXJlQXR0cmlidXRl
RGF0YSgpLT5lbnN1cmVJbmxpbmVTdHlsZSh0aGlzKTsgfQogICAgIAogICAgIC8vIFVubGlrZSBT
dHlsZVByb3BlcnR5U2V0IHNldHRlcnMsIHRoZXNlIGltcGxlbWVudCBpbnZhbGlkYXRpb24uCi0g
ICAgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRp
ZmllciwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7Ci0gICAgYm9vbCBzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5KGludCBwcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwotICAgIGJvb2wgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBv
cnRhbnQgPSBmYWxzZSk7Ci0gICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KGludCBw
cm9wZXJ0eUlEKTsKKyAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCwgaW50LCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKKyAgICBib29sIHNldElubGluZVN0eWxl
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgZG91YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKKyAgICBib29sIHNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxz
ZSk7CisgICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwog
ICAgIAogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUoKSBPVkVSUklERTsK
IApAQCAtNjksOSArNjksOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICB2b2lkIGFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3Bl
cnR5U2V0KiwgaW50IHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyKTsKLSAgICB2b2lkIGFkZFBy
b3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHByb3BlcnR5SUQs
IGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7Ci0gICAgdm9pZCBh
ZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIGFkZFByb3BlcnR5VG9BdHRyaWJ1
dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgaW50KTsKKyAgICB2b2lk
IGFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVy
dHlJRCwgZG91YmxlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKTsKKyAgICB2b2lkIGFk
ZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRy
aWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+JikgY29uc3Q7CiAKQEAgLTExMyw3ICsxMTMsNyBA
QCBpbmxpbmUgU3R5bGVQcm9wZXJ0eVNldCogU3R5bGVkRWxlbWVudDo6YXR0cmlidXRlU3R5bGUo
KQogICAgIHJldHVybiBhdHRyaWJ1dGVEYXRhKCkgPyBhdHRyaWJ1dGVEYXRhKCktPmF0dHJpYnV0
ZVN0eWxlKCkgOiAwOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0
eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIGludCBwcm9wZXJ0eUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQoraW5saW5lIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJv
cGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBmYWxzZSwgZG9jdW1lbnQoKS0+ZWxlbWVudFNoZWV0
KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCmluZGV4IDA5YTQ1
MGRkNjk4YjA4Mjg3MjkyNTgyODNhOGZhMjYzYmRiNzUyODQuLjlkZDNjZTQwMzE5NGNjNGE3MzMz
YzZhYzRiZGI5YTNhMzAwYjI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgSFRNTEVsZW1lbnRFcXVp
dmFsZW50KENTU1Byb3BlcnR5SUQpOwogICAgIEhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQcm9w
ZXJ0eUlELCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lKTsKICAgICBIVE1MRWxlbWVudEVx
dWl2YWxlbnQoQ1NTUHJvcGVydHlJRCwgaW50IHByaW1pdGl2ZVZhbHVlLCBjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lKTsKLSAgICBjb25zdCBpbnQgbV9wcm9wZXJ0eUlEOworICAgIGNvbnN0
IENTU1Byb3BlcnR5SUQgbV9wcm9wZXJ0eUlEOwogICAgIGNvbnN0IFJlZlB0cjxDU1NQcmltaXRp
dmVWYWx1ZT4gbV9wcmltaXRpdmVWYWx1ZTsKICAgICBjb25zdCBRdWFsaWZpZWROYW1lKiBtX3Rh
Z05hbWU7IC8vIFdlIGNhbiBzdG9yZSBhIHBvaW50ZXIgYmVjYXVzZSBIVE1MIHRhZyBuYW1lcyBh
cmUgY29uc3QgZ2xvYmFsLgogfTsKQEAgLTMzMiw3ICszMzIsNyBAQCBFZGl0aW5nU3R5bGU6OkVk
aXRpbmdTdHlsZShjb25zdCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKICAgICBleHRyYWN0
Rm9udFNpemVEZWx0YSgpOwogfQogCi1FZGl0aW5nU3R5bGU6OkVkaXRpbmdTdHlsZShpbnQgcHJv
cGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK0VkaXRpbmdTdHlsZTo6RWRpdGluZ1N0eWxl
KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKICAgICA6IG1f
bXV0YWJsZVN0eWxlKDApCiAgICAgLCBtX3Nob3VsZFVzZUZpeGVkRGVmYXVsdEZvbnRTaXplKGZh
bHNlKQogICAgICwgbV9mb250U2l6ZURlbHRhKE5vRm9udERlbHRhKQpAQCAtNDExLDcgKzQxMSw3
IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVUZXh0RmlsbEFuZFN0cm9rZUNvbG9yc0lmTmVl
ZGVkKFJlbmRlclN0eWxlKiByZW5kZXJTdHlsCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1v
dmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvcik7CiB9CiAKLXZvaWQg
RWRpdGluZ1N0eWxlOjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCit2b2lkIEVkaXRpbmdTdHlsZTo6c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFu
dCkKIHsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQogICAgICAgICBtX211dGFibGVTdHlsZSA9
IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmgKaW5kZXggYzIxMzAzNmUxMjRmYzA3NGVhYWFmNzUzOWUxNDYyNDU2MmFjZWQ2Yy4uZDZk
ZjUxODc1NTEzZjg3MmU1OWQyODI3OWIzZDgyOWQzZGY0ZmQwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRpbmdTdHlsZS5oCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBFZGl0aW5nU3R5bGUoc3R5bGUpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxFZGl0aW5nU3R5bGU+IGNyZWF0ZShpbnQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxFZGl0aW5nU3R5bGU+IGNyZWF0
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRpbmdTdHlsZShwcm9wZXJ0eUlELCB2YWx1
ZSkpOwogICAgIH0KQEAgLTE1MiwxMCArMTUyLDEwIEBAIHByaXZhdGU6CiAgICAgRWRpdGluZ1N0
eWxlKGNvbnN0IFBvc2l0aW9uJiwgUHJvcGVydGllc1RvSW5jbHVkZSk7CiAgICAgRWRpdGluZ1N0
eWxlKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqKTsKICAgICBFZGl0aW5nU3R5bGUoY29uc3QgQ1NT
U3R5bGVEZWNsYXJhdGlvbiopOwotICAgIEVkaXRpbmdTdHlsZShpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgRWRpdGluZ1N0eWxlKENTU1Byb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgaW5pdChOb2RlKiwgUHJvcGVydGllc1RvSW5jbHVkZSk7CiAg
ICAgdm9pZCByZW1vdmVUZXh0RmlsbEFuZFN0cm9rZUNvbG9yc0lmTmVlZGVkKFJlbmRlclN0eWxl
Kik7Ci0gICAgdm9pZCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICB2
b2lkIHJlcGxhY2VGb250U2l6ZUJ5S2V5d29yZElmUG9zc2libGUoUmVuZGVyU3R5bGUqLCBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24qKTsKICAgICB2b2lkIGV4dHJhY3RGb250U2l6ZURlbHRh
KCk7CiAgICAgVHJpU3RhdGUgdHJpU3RhdGVPZlN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlVG9Db21wYXJlLCBTaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDFjYzE4Yjc5MjFlYzVlYzA1Y2U3M2JhMzE1ZTEw
MWNjOGFjM2M0NjcuLmJlNzEwOTI1NzEwNDkwODk2NzJiYmU1YmE5ODlmODllNjIxMzE0YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTczMSwxMyArNzMxLDEzIEBAIHZvaWQgRWRp
dG9yOjphcHBseVBhcmFncmFwaFN0eWxlVG9TZWxlY3Rpb24oU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUsIEVkaXRBY3Rpb24KICAgICAgICAgYXBwbHlQYXJhZ3JhcGhTdHlsZShzdHlsZSwgZWRpdGlu
Z0FjdGlvbik7CiB9CiAKLWJvb2wgRWRpdG9yOjpzZWxlY3Rpb25TdGFydEhhc1N0eWxlKGludCBw
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorYm9vbCBFZGl0b3I6OnNlbGVj
dGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcm
IHZhbHVlKSBjb25zdAogewogICAgIHJldHVybiBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0
eUlELCB2YWx1ZSktPnRyaVN0YXRlT2ZTdHlsZSgKICAgICAgICAgRWRpdGluZ1N0eWxlOjpzdHls
ZUF0U2VsZWN0aW9uU3RhcnQobV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLCBwcm9w
ZXJ0eUlEID09IENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5nZXQoKSk7CiB9CiAKLVRyaVN0
YXRlIEVkaXRvcjo6c2VsZWN0aW9uSGFzU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIGNvbnN0CitUcmlTdGF0ZSBFZGl0b3I6OnNlbGVjdGlvbkhhc1N0eWxlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBy
ZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0ZU9m
U3R5bGUobV9mcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCmluZGV4IDJjNDNlMjYwMzhmYWM0ODM5ODU2ZTljMmQyYzFmOGJjYjQ4MDcxNTMu
LmFiZjI2NDFmZGUxNThjODk0YmE5YTIxOTU1ZmVkMDEwZmM5MDY5ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuaApAQCAtMTM2LDggKzEzNiw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3BvbmRU
b0NoYW5nZWRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgb2xkU2VsZWN0aW9uKTsK
ICAgICB2b2lkIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhjb25zdCBWaXNpYmxlU2VsZWN0aW9u
JiBlbmRpbmdTZWxlY3Rpb24pOwogCi0gICAgYm9vbCBzZWxlY3Rpb25TdGFydEhhc1N0eWxlKGlu
dCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdDsKLSAgICBUcmlTdGF0ZSBz
ZWxlY3Rpb25IYXNTdHlsZShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3Q7CisgICAgYm9vbCBzZWxlY3Rpb25TdGFydEhhc1N0eWxlKENTU1Byb3BlcnR5SUQsIGNvbnN0
IFN0cmluZyYpIGNvbnN0OworICAgIFRyaVN0YXRlIHNlbGVjdGlvbkhhc1N0eWxlKENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIFN0cmluZyBzZWxlY3Rpb25TdGFydENT
U1Byb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCk7CiAgICAgCiAgICAgVHJpU3RhdGUgc2VsZWN0
aW9uVW5vcmRlcmVkTGlzdFN0YXRlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcAppbmRleCAxOTg3NzI5MmZlMmY0MGY1OTBhZDc1MDczYzNhZDhjMDk1NGRi
OGM4Li5hMmYxNDdlYTJlM2VmZTFkZmUzZTg3NDEyNmM1ZDgyYmQ2MzExNzQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTExNCwxNCArMTE0LDE0IEBAIHN0
YXRpYyBib29sIGFwcGx5Q29tbWFuZFRvRnJhbWUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5k
U291cmNlIHNvdXJjZSwgRWRpdEFjCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgYm9v
bCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291
cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJv
cGVydHlWYWx1ZSkKK3N0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwg
RWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlWYWx1ZSkKIHsKICAgICBSZWZQ
dHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsK
ICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CiAgICAg
cmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS5n
ZXQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwg
RWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVy
dHlJRCwgaW50IHByb3BlcnR5VmFsdWUpCitzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlTdHlsZShG
cmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlv
biwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQgcHJvcGVydHlWYWx1ZSkKIHsKICAgICBS
ZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUo
KTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgcHJvcGVydHlWYWx1ZSk7CkBA
IC0xMzEsNyArMTMxLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUqIGZy
YW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGkKIC8vIEZJWE1FOiBleGVj
dXRlVG9nZ2xlU3R5bGVJbkxpc3QgZG9lcyBub3QgaGFuZGxlIGNvbXBsaWNhdGVkIGNhc2VzIHN1
Y2ggYXMgPGI+PHU+aGVsbG88L3U+d29ybGQ8L2I+IHByb3Blcmx5LgogLy8gICAgICAgIFRoaXMg
ZnVuY3Rpb24gbXVzdCB1c2UgRWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZSB0byBkZXRlcm1pbmUg
dGhlIGN1cnJlbnQgc3R5bGUgYnV0IHdlIGNhbm5vdCBmaXggdGhpcwogLy8gICAgICAgIHVudGls
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzgxOCBpcyByZXNvbHZl
ZC4KLXN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChGcmFtZSogZnJhbWUsIEVk
aXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHByb3BlcnR5
SUQsIENTU1ZhbHVlKiB2YWx1ZSkKK3N0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlz
dChGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFj
dGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc2VsZWN0aW9u
U3R5bGUgPSBFZGl0aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChmcmFtZS0+c2VsZWN0
aW9uKCktPnNlbGVjdGlvbigpKTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlU3R5bGVJbkxpc3QoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgRQogICAgIHJldHVybiBhcHBseUNvbW1hbmRUb0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFj
dGlvbiwgbmV3TXV0YWJsZVN0eWxlLmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgZXhlY3V0ZVRv
Z2dsZVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRB
Y3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogb2ZmVmFsdWUsIGNvbnN0
IGNoYXIqIG9uVmFsdWUpCitzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUqIGZy
YW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogb2ZmVmFsdWUsIGNvbnN0IGNoYXIqIG9u
VmFsdWUpCiB7CiAgICAgLy8gU3R5bGUgaXMgY29uc2lkZXJlZCBwcmVzZW50IHdoZW4KICAgICAv
LyBNYWM6IHByZXNlbnQgYXQgdGhlIGJlZ2lubmluZyBvZiBzZWxlY3Rpb24KQEAgLTE3Miw3ICsx
NzIsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0
b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdAogICAgIHJldHVybiBhcHBseUNvbW1hbmRU
b0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwgc3R5bGUtPnN0eWxlKCkpOwogfQogCi1zdGF0
aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHByb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgcHJvcGVydHlWYWx1ZSkKK3N0YXRpYyBib29sIGV4ZWN1dGVBcHBseVBhcmFn
cmFwaFN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRB
Y3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgcHJv
cGVydHlWYWx1ZSkKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHls
ZVByb3BlcnR5U2V0OjpjcmVhdGUoKTsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJ
RCwgcHJvcGVydHlWYWx1ZSk7CkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIGJvb2wgZXhwYW5k
U2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUsIFRleHRHcmFudWxhcml0eSBncmFu
dWxhcmkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUo
RnJhbWUqIGZyYW1lLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogZGVzaXJlZFZhbHVlKQor
c3RhdGljIFRyaVN0YXRlIHN0YXRlU3R5bGUoRnJhbWUqIGZyYW1lLCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2lyZWRWYWx1ZSkKIHsKICAgICBpZiAoZnJhbWUtPmVk
aXRvcigpLT5iZWhhdmlvcigpLnNob3VsZFRvZ2dsZVN0eWxlQmFzZWRPblN0YXJ0T2ZTZWxlY3Rp
b24oKSkKICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+c2VsZWN0aW9uU3RhcnRIYXNT
dHlsZShwcm9wZXJ0eUlELCBkZXNpcmVkVmFsdWUpID8gVHJ1ZVRyaVN0YXRlIDogRmFsc2VUcmlT
dGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAwNWNkZTRhNjNlYWI3MTg5NDJh
NjBkNzE5NDE3MTkzZmUwY2QxZjliLi4zNjRhMTdjNWM4MDI3MDVlNzY5ZTM3MmE0NmU1Y2Q2ZWQ0
NjZiMzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC03MCw3ICs3MCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAotc3RhdGlj
IGJvb2wgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShTdHlsZVByb3BlcnR5U2V0KiwgaW50
IHByb3BlcnR5SUQpOworc3RhdGljIGJvb2wgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShT
dHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCk7CiAKIGNsYXNzIEF0dHJpYnV0ZUNoYW5n
ZSB7CiBwdWJsaWM6CkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGljIGlubGluZSBOb2RlKiBhbmNl
c3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZVdpdGhOb1JlbmRlcmVyKE5vZGUqIGMK
ICAgICByZXR1cm4gYW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVhcmFuY2VGb3JCbG9j
ayhjb21tb25BbmNlc3RvckJsb2NrKTsKIH0KIAotc3RhdGljIGJvb2wgcHJvcGVydHlNaXNzaW5n
T3JFcXVhbFRvTm9uZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQpCitz
dGF0aWMgYm9vbCBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKFN0eWxlUHJvcGVydHlTZXQq
IHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgaWYgKCFzdHlsZSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCA5
ZDc5NTUxMjE1ZWZmZDY0YTY3Yzg1MGRhOGI2YzliNGVjNzNiM2VjLi4zOTg5N2QwN2U5YzE0OWZj
ZGZiNTgyZWU4NTg2MDBjYTM1YWM4OWYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtOTk5LDcgKzk5OSw3IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnNldEl0ZW1WYWx1ZVRleHQo
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB9CiAjZW5kaWYKIAotdm9p
ZCBIVE1MRWxlbWVudDo6YWRkSFRNTExlbmd0aFRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUsIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBIVE1MRWxlbWVu
dDo6YWRkSFRNTExlbmd0aFRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IHNwaW4gdXAgdGhlIENTUyBwYXJzZXIsIGJ1dCBzaG91
bGQgaW5zdGVhZCBqdXN0IGZpZ3VyZSBvdXQgdGhlIGNvcnJlY3QKICAgICAvLyBsZW5ndGggdW5p
dCBhbmQgbWFrZSB0aGUgYXBwcm9wcmlhdGUgcGFyc2VkIHZhbHVlLgpAQCAtMTA5MCw3ICsxMDkw
LDcgQEAgc3RhdGljIFJHQkEzMiBwYXJzZUNvbG9yU3RyaW5nV2l0aENyYXp5TGVnYWN5UnVsZXMo
Y29uc3QgU3RyaW5nJiBjb2xvclN0cmluZykKIH0KIAogLy8gQ29sb3IgcGFyc2luZyB0aGF0IG1h
dGNoZXMgSFRNTCdzICJydWxlcyBmb3IgcGFyc2luZyBhIGxlZ2FjeSBjb2xvciB2YWx1ZSIKLXZv
aWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxDb2xvclRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUsIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQordm9pZCBI
VE1MRWxlbWVudDo6YWRkSFRNTENvbG9yVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlKQog
ewogICAgIC8vIEFuIGVtcHR5IHN0cmluZyBkb2Vzbid0IGFwcGx5IGEgY29sb3IuIChPbmUgY29u
dGFpbmluZyBvbmx5IHdoaXRlc3BhY2UgZG9lcywgd2hpY2ggaXMgd2h5IHRoaXMgY2hlY2sgb2Nj
dXJzIGJlZm9yZSBzdHJpcHBpbmcuKQogICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMmIzNTg2MTdhMjhkNDZjNDhiZDcxNGE1
OTU3ODFhMzUxMjExMWRjNS4uZGE0MmFjYjhkYWIzMTU1OGU4ZDU4MTRjN2IwYTc1YjE1NDQ5ZjFl
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTA4LDggKzEwOCw4IEBAIHB1Ymxp
YzoKIHByb3RlY3RlZDoKICAgICBIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCopOwogCi0gICAgdm9pZCBhZGRIVE1MTGVuZ3RoVG9TdHlsZShTdHlsZVBy
b3BlcnR5U2V0KiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwotICAgIHZv
aWQgYWRkSFRNTENvbG9yVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgaW50IHByb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgY29sb3IpOworICAgIHZvaWQgYWRkSFRNTExlbmd0aFRvU3R5bGUoU3R5
bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQg
YWRkSFRNTENvbG9yVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGFwcGx5QWxpZ25tZW50QXR0cmlidXRlVG9TdHlsZShB
dHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0Kik7CiAgICAgdm9pZCBhcHBseUJvcmRlckF0dHJp
YnV0ZVRvU3R5bGUoQXR0cmlidXRlKiwgU3R5bGVQcm9wZXJ0eVNldCopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDA1MmJlMjg4
Mzk4NjQxNGY2MmY0MzhjNGQzNmE4OTNkMDlhYTYwZjQuLjFjMzA4MGJjYWUwN2NhOTBkMmVlNzZj
YjAzZWEyNmIwZWQ5NjBjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTUwMSw3ICs1MDEsNyBAQCBQYXNzUmVmUHRyPFR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGVydGll
cygpIGNvbgogICAgICAgICAgICAgICAgIC8vIFBhcnNlZCBwcm9wZXJ0eSBvdmVycmlkZXMgYW55
IHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZS4gTm9uLXBhcnNlZCBwcm9wZXJ0eSBvdmVycmlk
ZXMKICAgICAgICAgICAgICAgICAvLyBwcmV2aW91cyBub24tcGFyc2VkIHByb3BlcnR5IHdpdGgg
dGhlIHNhbWUgbmFtZSAoaWYgYW55KS4KICAgICAgICAgICAgICAgICBib29sIHNob3VsZEluYWN0
aXZhdGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQg
PSBzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihjc3NQcm9wZXJ0eUlEKG5hbWUpKTsKKyAgICAg
ICAgICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQgPSBjc3NQcm9wZXJ0eUlEKG5hbWUp
OwogICAgICAgICAgICAgICAgIC8vIENhbm9uaWNhbGl6ZSBwcm9wZXJ0eSBuYW1lcyB0byB0cmVh
dCBub24tcHJlZml4ZWQgYW5kIHZlbmRvci1wcmVmaXhlZCBwcm9wZXJ0eSBuYW1lcyB0aGUgc2Ft
ZSAob3BhY2l0eSB2cy4gLXdlYmtpdC1vcGFjaXR5KS4KICAgICAgICAgICAgICAgICBTdHJpbmcg
Y2Fub25pY2FsUHJvcGVydHlOYW1lID0gcHJvcGVydHlJZCA/IFN0cmluZyhnZXRQcm9wZXJ0eU5h
bWUocHJvcGVydHlJZCkpIDogbmFtZTsKICAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5PiA+OjppdGVyYXRvciBhY3RpdmVJ
dCA9IHByb3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNhbFBy
b3BlcnR5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkJhc2UuY3BwCmluZGV4IDYzY2RjZjc5NGY2ZmUzMTcxOTUyOWM0NTNmY2RmMWQwYmY5MDhhN2Uu
LjIwNGFhMmZiMjYxZWI2MWRkNGRkNzlkM2QyYzcyZWE3YjIxYjVkNjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC0xMTQ0LDcgKzEx
NDQsNyBAQCBzdGF0aWMgdm9pZCBhZGRQcm9wZXJ0eVdyYXBwZXIoaW50IHByb3BlcnR5SUQsIFBy
b3BlcnR5V3JhcHBlckJhc2UqIHdyYXBwZXIpCiAKIHN0YXRpYyB2b2lkIGFkZFNob3J0aGFuZFBy
b3BlcnRpZXMoKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgYW5pbWF0YWJsZVNob3J0aGFuZFBy
b3BlcnRpZXNbXSA9IHsKKyAgICBzdGF0aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBhbmltYXRhYmxl
U2hvcnRoYW5kUHJvcGVydGllc1tdID0gewogICAgICAgICBDU1NQcm9wZXJ0eUJhY2tncm91bmQs
IC8vIGZvciBiYWNrZ3JvdW5kLWNvbG9yLCBiYWNrZ3JvdW5kLXBvc2l0aW9uLCBiYWNrZ3JvdW5k
LWltYWdlCiAgICAgICAgIENTU1Byb3BlcnR5QmFja2dyb3VuZFBvc2l0aW9uLAogICAgICAgICBD
U1NQcm9wZXJ0eUZvbnQsIC8vIGZvciBmb250LXNpemUsIGZvbnQtd2VpZ2h0CkBAIC0xMTY4LDcg
KzExNjgsNyBAQCBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCkKICAgICB9Owog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKGFuaW1hdGFibGVT
aG9ydGhhbmRQcm9wZXJ0aWVzKTsgKytpKSB7Ci0gICAgICAgIGludCBwcm9wZXJ0eUlEID0gYW5p
bWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXNbaV07CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCA9IGFuaW1hdGFibGVTaG9ydGhhbmRQcm9wZXJ0aWVzW2ldOwogICAgICAgICBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3Bl
cnR5SUQpOwogICAgICAgICBpZiAoc2hvcnRoYW5kLmxlbmd0aCgpID4gMCkKICAgICAgICAgICAg
IGFkZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBuZXcgU2hvcnRoYW5kUHJvcGVydHlXcmFw
cGVyKHByb3BlcnR5SUQsIHNob3J0aGFuZCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZh
Y2VFbGVtZW50LmNwcAppbmRleCA5Mjc1MGFmMTI4ZmM5NjhhNzg4M2Q4MDU4ZGZhY2Q3ZDNhYmFj
OTg4Li41ZTQzMDcwNWQzMDMwMjk1M2M4NDJmZTA2NTcyMTBmMTgyMDZlZWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcApAQCAtNjEsMTQgKzYxLDE0IEBAIFBh
c3NSZWZQdHI8U1ZHRm9udEZhY2VFbGVtZW50PiBTVkdGb250RmFjZUVsZW1lbnQ6OmNyZWF0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiB0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTVkdGb250RmFj
ZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotc3RhdGljIGludCBjc3NQcm9wZXJ0
eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3N0
YXRpYyBDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmICghYXR0ck5hbWUubmFtZXNwYWNl
VVJJKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gQ1NTUHJv
cGVydHlJbnZhbGlkOwogICAgIAotICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBpbnQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwID0gMDsKKyAgICBzdGF0aWMgSGFzaE1hcDxBdG9t
aWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4qIHByb3BlcnR5TmFtZVRvSWRNYXAgPSAwOwog
ICAgIGlmICghcHJvcGVydHlOYW1lVG9JZE1hcCkgewotICAgICAgICBwcm9wZXJ0eU5hbWVUb0lk
TWFwID0gbmV3IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIGludD47CisgICAgICAgIHByb3Bl
cnR5TmFtZVRvSWRNYXAgPSBuZXcgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVy
dHlJRD47CiAgICAgICAgIC8vIFRoaXMgaXMgYSBsaXN0IG9mIGFsbCBAZm9udC1mYWNlIENTUyBw
cm9wZXJ0aWVzIHdoaWNoIGFyZSBleHBvc2VkIGFzIFNWRyBYTUwgYXR0cmlidXRlcwogICAgICAg
ICAvLyBUaG9zZSBjb21tZW50ZWQgb3V0IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBieSBXZWJDb3Jl
J3Mgc3R5bGUgc3lzdGVtCiAgICAgICAgIC8vIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJv
cGVydHlOYW1lVG9JZE1hcCwgYWNjZW50X2hlaWdodEF0dHIpOwpAQCAtMTExLDcgKzExMSw3IEBA
IHN0YXRpYyBpbnQgY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAKIHZvaWQgU1ZHRm9udEZhY2VFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShBdHRyaWJ1dGUqIGF0dHIpCiB7ICAgIAotICAgIGludCBwcm9wSWQgPSBjc3NQcm9wZXJ0
eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpOworICAgIENTU1Byb3BlcnR5SUQg
cHJvcElkID0gY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsK
ICAgICBpZiAocHJvcElkID4gMCkgewogICAgICAgICBtX2ZvbnRGYWNlUnVsZS0+cHJvcGVydGll
cygpLT5zZXRQcm9wZXJ0eShwcm9wSWQsIGF0dHItPnZhbHVlKCksIGZhbHNlKTsKICAgICAgICAg
cmVidWlsZEZvbnRGYWNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5
bGVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAK
aW5kZXggMmZhZGY2M2Q4ZmViNGRjMTA1ZDU4Yjg3N2Q1ZjU4MTMyMDU3OWEwZS4uNzVhMDBmZjc5
MjIwNGFiYzFhZGEwMzA5M2UxNmQ4OThlNjJiZDk4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dHlsZWRFbGVtZW50LmNwcApAQCAtNTcsMTAgKzU3LDEwIEBAIEVORF9SRUdJU1RFUl9BTklNQVRF
RF9QUk9QRVJUSUVTCiAKIHVzaW5nIG5hbWVzcGFjZSBTVkdOYW1lczsKIAotdm9pZCBtYXBBdHRy
aWJ1dGVUb0NTU1Byb3BlcnR5KEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIGludD4qIHByb3Bl
cnR5TmFtZVRvSWRNYXAsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQordm9pZCBtYXBB
dHRyaWJ1dGVUb0NTU1Byb3BlcnR5KEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1Byb3Bl
cnR5SUQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIHsKICAgICAvLyBGSVhNRTogd2hlbiBDU1Mgc3VwcG9ydHMgInRyYW5zZm9ybS1vcmlnaW4i
IHRoZSBzcGVjaWFsIGNhc2UgZm9yIHRyYW5zZm9ybV9vcmlnaW5BdHRyIGNhbiBiZSByZW1vdmVk
LgotICAgIGludCBwcm9wZXJ0eUlkID0gY3NzUHJvcGVydHlJRChhdHRyTmFtZS5sb2NhbE5hbWUo
KSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gY3NzUHJvcGVydHlJRChhdHRyTmFt
ZS5sb2NhbE5hbWUoKSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlkICYmIGF0dHJOYW1lID09IHRyYW5z
Zm9ybV9vcmlnaW5BdHRyKQogICAgICAgICBwcm9wZXJ0eUlkID0gQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW47IC8vIGNzc1Byb3BlcnR5SUQoIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdp
biIpCiAgICAgQVNTRVJUKHByb3BlcnR5SWQgPiAwKTsKQEAgLTEzNCwxNCArMTM0LDE0IEBAIGJv
b2wgU1ZHU3R5bGVkRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBOb2RlUmVuZGVyaW5n
Q29udGV4dCYgY29udGV4dCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWludCBTVkdTdHlsZWRF
bGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKK0NTU1Byb3BlcnR5SUQgU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVy
dHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
CiAgICAgaWYgKCFhdHRyTmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7CiAgICAgCi0gICAgc3Rh
dGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIGludD4qIHByb3BlcnR5TmFtZVRvSWRNYXAg
PSAwOworICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlE
PiogcHJvcGVydHlOYW1lVG9JZE1hcCA9IDA7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVUb0lkTWFw
KSB7Ci0gICAgICAgIHByb3BlcnR5TmFtZVRvSWRNYXAgPSBuZXcgSGFzaE1hcDxBdG9taWNTdHJp
bmdJbXBsKiwgaW50PjsKKyAgICAgICAgcHJvcGVydHlOYW1lVG9JZE1hcCA9IG5ldyBIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPjsKICAgICAgICAgLy8gVGhpcyBpcyBh
IGxpc3Qgb2YgYWxsIGJhc2UgQ1NTIGFuZCBTVkcgQ1NTIHByb3BlcnRpZXMgd2hpY2ggYXJlIGV4
cG9zZWQgYXMgU1ZHIFhNTCBhdHRyaWJ1dGVzCiAgICAgICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJv
cGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgYWxpZ25tZW50X2Jhc2VsaW5lQXR0cik7CiAgICAg
ICAgIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkocHJvcGVydHlOYW1lVG9JZE1hcCwgYmFzZWxp
bmVfc2hpZnRBdHRyKTsKQEAgLTI5OCw3ICsyOTgsNyBAQCBib29sIFNWR1N0eWxlZEVsZW1lbnQ6
OmlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0
CiAKIHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yQXR0cmlidXRlKEF0dHJp
YnV0ZSogYXR0ciwgU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUpCiB7Ci0gICAgaW50IHByb3BlcnR5
SUQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShh
dHRyLT5uYW1lKCkpOworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVs
ZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CiAg
ICAgaWYgKHByb3BlcnR5SUQgPiAwKQogICAgICAgICBhZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5
bGUoc3R5bGUsIHByb3BlcnR5SUQsIGF0dHItPnZhbHVlKCkpOwogfQpAQCAtMzI1LDcgKzMyNSw3
IEBAIGJvb2wgU1ZHU3R5bGVkRWxlbWVudDo6aXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIAogdm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGludCBwcm9wSWQg
PSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRy
TmFtZSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQ
cm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSk7CiAgICAgaWYgKHByb3BJZCA+
IDApIHsKICAgICAgICAgU1ZHRWxlbWVudEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW5zdGFuY2Vz
T2ZFbGVtZW50KHRoaXMpOwogICAgICAgICByZXR1cm47CkBAIC00MjEsNyArNDIxLDcgQEAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gU1ZHU3R5bGVkRWxlbWVudDo6Z2V0UHJlc2VudGF0aW9uQXR0cmli
dXRlKGNvbnN0IFN0cmluZyYgbmEKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8U3R5
bGVQcm9wZXJ0eVNldD4gc3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0OjpjcmVhdGUoU1ZHQXR0cmli
dXRlTW9kZSk7Ci0gICAgaW50IHByb3BlcnR5SUQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9w
ZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpOworICAgIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRy
aWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5
SUQsIGF0dHItPnZhbHVlKCkpOwogICAgIHJldHVybiBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShwcm9wZXJ0eUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oCmluZGV4
IDY0ODMwZTg1MjVlN2VjN2I2MWYwN2ViNjg5YmZhNThjZTJjYjc0NjMuLmZlM2E4ZTcyYzBmYTU1
YTM1YTFlMDQ2MWIyZjdiZDk5NjNhM2EyOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTdHlsZWRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVs
ZW1lbnQuaApAQCAtMjIsNiArMjIsNyBAQAogI2RlZmluZSBTVkdTdHlsZWRFbGVtZW50X2gKIAog
I2lmIEVOQUJMRShTVkcpCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCiAjaW5jbHVk
ZSAiU1ZHU3R5bGFibGUuaCIKQEAgLTI5LDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi12b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBdG9taWNTdHJpbmdJ
bXBsKiwgaW50PiogcHJvcGVydHlOYW1lVG9JZE1hcCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpOwordm9pZCBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KEhhc2hNYXA8QXRvbWljU3Ry
aW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSk7CiAKIGNsYXNzIFNWR1N0eWxlZEVsZW1lbnQgOiBwdWJsaWMg
U1ZHRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHU3R5bGFibGUg
ewpAQCAtNzUsNyArNzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRG
cm9tRG9jdW1lbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hh
bmdlZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVy
Q2hhbmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOwogCi0gICAgc3RhdGljIGludCBj
c3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJik7Cisg
ICAgc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOwogICAgIHZvaWQgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oKSB7IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKHNlbGZIYXNSZWxh
dGl2ZUxlbmd0aHMoKSwgdGhpcyk7IH0KICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0lu
Zm9ybWF0aW9uKGJvb2wgaGFzUmVsYXRpdmVMZW5ndGhzLCBTVkdTdHlsZWRFbGVtZW50Kik7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvcXQvQXBpL3F3ZWJlbGVtZW50LmNwcAppbmRleCBmYzcyY2E2ODZjYTYzMWUwMjhj
M2EzZjllNzkzYjVjMWRiYTMxMjUzLi5iMDUzMjk4ZGUzOTQzZGFkM2IwY2U3ZGVlM2JiOGEwNzU0
YjU2Mzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCkBAIC05MDYsNyArOTA2
LDcgQEAgdm9pZCBRV2ViRWxlbWVudDo6c2V0U3R5bGVQcm9wZXJ0eShjb25zdCBRU3RyaW5nICZu
YW1lLCBjb25zdCBRU3RyaW5nICZ2YWx1ZSkKICAgICBpZiAoIW1fZWxlbWVudCB8fCAhbV9lbGVt
ZW50LT5pc1N0eWxlZEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50IHByb3BJ
RCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wSUQgPSBjc3NQ
cm9wZXJ0eUlEKG5hbWUpOwogICAgIHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihtX2VsZW1l
bnQpLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KHByb3BJRCwgdmFsdWUpOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135249</attachid>
            <date>2012-04-02 18:06:28 -0700</date>
            <delta_ts>2012-04-03 05:39:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82977-20120402220609.patch</filename>
            <type>text/plain</type>
            <size>95367</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyOTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVjYzMzOTYxNTYzOGNj
YzJiZjFmMjE1NjE3NGM1MmQ5ZjBmNTE4ZC4uZWQ4MjE2NzBhNWMzZGY3ZDlkODlkNWFmZDQ5MDI1
YWY2Zjg2NjBhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MCBAQAorMjAxMi0wNC0wMiAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUGFy
dCAyXSBXZSBzaG91bGQgdXNlIENTU1Byb3BlcnR5SUQgcmF0aGVyIHRoYW4gaW50ZWdlcnMgd2hl
biBtYW5pcHVsYXRpbmcgQ1NTIHByb3BlcnR5IGlkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBlbnVtIGhvbGRzIGFsbCB0aGUg
Q1NTIHByb3BlcnR5IGlkcyBidXQgbWFueSBwYXJ0cyBvZiBXZWJLaXQgdHJlYXQgdGhlIGlkcwor
ICAgICAgICBhcyBpbnRlZ2Vycy4gV2hpbGUgaXQncyBub3QgaW5jb3JyZWN0IGl0IGlzIG5pY2Vy
IHRvIHVzZSB0aGUgZW51bSBhcyBhIHBhcmFtZXRlciBvZgorICAgICAgICBmdW5jdGlvbnMgbWFu
aXB1bGF0aW5nIHByb3BlcnR5IGlkcywgYXMgd2UgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIHBhc3Nl
ZCB3aWxsIGJlIGFuCisgICAgICAgIGV4aXN0aW5nIHZhbHVlLiBBbG1vc3QgZXZlcnl0aGluZyBo
YXMgYmVlbiBjaGFuZ2VkIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgQW5pbWF0aW9uIHJlbGF0
ZWQKKyAgICAgICAgY2xhc3NlcyB3aGljaCBjYW4gYmUgZG9uZSBpbiBhIGZvbGxvd2luZyBwYXRj
aC4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3Ig
Y2hhbmdlIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbjo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb246OnZhbHVlRm9yU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjps
b2dVbmltcGxlbWVudGVkUHJvcGVydHlJRCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjppdGVtKToKKyAgICAgICAgKiBjc3MvQ1NTQ29t
cHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAgICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24pOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1Bh
cnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAg
ICAgIChXZWJDb3JlOjppc0NvbG9yUHJvcGVydHlJRCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJz
ZUNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlE
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZTo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzS2V5d29yZFByb3BlcnR5SUQpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3Jk
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9ydGhhbmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
NFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUGFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlUXVvdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFy
c2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRmlsbFByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25Qcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3JpZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnBhcnNlQ2xpcFNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNl
cjo6cGFyc2VTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVJlZmxl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVySW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdEJv
cmRlckltYWdlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJv
cmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFn
ZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUNvdW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZsb3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVJlZ2lvblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
cGFyc2VQZXJzcGVjdGl2ZU9yaWdpbik6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAg
ICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNob3J0aGFuZFNjb3BlOjpTaG9y
dGhhbmRTY29wZSk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NT
UHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6
CisgICAgICAgIChDU1NQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5n
UnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAg
ICAoQ1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVj
bGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NT
U3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9TVkdDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBj
c3MvU1ZHQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VT
VkdWYWx1ZSk6CisgICAgICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eSk6CisgICAgICAg
ICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9w
ZXJ0eVNldDo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVBy
b3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3Bl
cnR5U2V0Ojphc1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Zmlu
ZFByb3BlcnR5V2l0aElkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJl
bW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNl
dC5oOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNldCk6CisgICAgICAgICogY3NzL1N0eWxlUHJv
cGVydHlTaG9ydGhhbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvcnRoYW5kRm9yUHJvcGVy
dHkpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKToK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAoU3R5bGVkRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjphZGRQcm9wZXJ0eVRvQXR0cmlidXRl
U3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKEhU
TUxFbGVtZW50RXF1aXZhbGVudCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OkVk
aXRpbmdTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnNldFByb3BlcnR5
KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdGluZ1N0eWxlOjpjcmVhdGUpOgorICAgICAgICAoRWRpdGluZ1N0eWxlKToKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlv
blN0YXJ0SGFzU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25IYXNT
dHlsZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKEVkaXRvcik6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVBcHBseVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZUlu
TGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVG9nZ2xlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6ZXhlY3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
c3RhdGVTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKToK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxl
bWVudDo6YWRkSFRNTENvbG9yVG9TdHlsZSk6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5o
OgorICAgICAgICAoSFRNTEVsZW1lbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdp
dGhQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNob3J0aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAq
IHN2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVy
dHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmli
dXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5
bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50Ojpn
ZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNWR1N0eWxlZEVsZW1lbnQpOgorCiAy
MDEyLTA0LTAyICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgYWRk
IGNzcyBwYXJzaW5nIG9mIC13ZWJraXQtZmxleApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwppbmRleCA5ZjBlZTJjOTg3
N2Q2MzE4NmQ1Zjc3NWU0YTZkZmUwYjc1YTMxZWQ0Li43NTg3MjYwYjQ5MTk3NjVkMWRjZGMwMjNi
ZGVlZWFlYTFkYTE2Y2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE3IEBACiAyMDEyLTA0
LTAyICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgogCisgICAg
ICAgIFtQYXJ0IDJdIFdlIHNob3VsZCB1c2UgQ1NTUHJvcGVydHlJRCByYXRoZXIgdGhhbiBpbnRl
Z2VycyB3aGVuIG1hbmlwdWxhdGluZyBDU1MgcHJvcGVydHkgaWRzLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI5NzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIGNvZGUgdG8gdXNlIENT
U1Byb3BlcnR5SUQgcmF0aGVyIHRoYW4gYW4gaW50ZWdlci4KKworICAgICAgICAqIEFwaS9xd2Vi
ZWxlbWVudC5jcHA6CisgICAgICAgIChRV2ViRWxlbWVudDo6c2V0U3R5bGVQcm9wZXJ0eSk6CisK
KzIwMTItMDQtMDIgIEFsZXhpcyBNZW5hcmQgIDxhbGV4aXMubWVuYXJkQG9wZW5ib3NzYS5vcmc+
CisKICAgICAgICAgV2Ugc2hvdWxkIHVzZSBDU1NQcm9wZXJ0eUlEIHJhdGhlciB0aGFuIGludGVn
ZXJzIHdoZW4gbWFuaXB1bGF0aW5nIENTUyBwcm9wZXJ0eSBpZHMuCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mjk0MQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IDA0ODQwYmU1
NDBjZDZjM2Q4ODY3ZjBiN2NjYjVmODlkOTljZDcyMmIuLjE5MDQ5YjExZGQyYTRlMzZhYjQxNmZk
NzVmNjRiOWFlNzVmYTg4NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xMDMzLDcgKzEwMzMsNyBAQCBTdHJpbmcgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpjc3NUZXh0KCkgY29uc3QKICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbnVtQ29tcHV0ZWRQcm9wZXJ0aWVzOyBpKyspIHsKICAgICAgICAgaWYg
KGkpCiAgICAgICAgICAgICByZXN1bHQgKz0gIiAiOwotICAgICAgICByZXN1bHQgKz0gZ2V0UHJv
cGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGNvbXB1dGVkUHJvcGVydGllc1tp
XSkpOworICAgICAgICByZXN1bHQgKz0gZ2V0UHJvcGVydHlOYW1lKGNvbXB1dGVkUHJvcGVydGll
c1tpXSk7CiAgICAgICAgIHJlc3VsdCArPSAiOiAiOwogICAgICAgICByZXN1bHQgKz0gZ2V0UHJv
cGVydHlWYWx1ZShjb21wdXRlZFByb3BlcnRpZXNbaV0pOwogICAgICAgICByZXN1bHQgKz0gIjsi
OwpAQCAtMTA4NiwxNCArMTA4NiwxMiBAQCBib29sIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6dXNlRml4ZWRGb250RGVmYXVsdFNpemUoKSBjb25zdAogICAgIHJldHVybiBzdHlsZS0+Zm9u
dERlc2NyaXB0aW9uKCkudXNlRml4ZWREZWZhdWx0U2l6ZSgpOwogfQogCi1QYXNzUmVmUHRyPENT
U1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yU2hhZG93KGNvbnN0
IFNoYWRvd0RhdGEqIHNoYWRvdywgaW50IGlkLCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CitQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9y
U2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
LCBSZW5kZXJTdHlsZSogc3R5bGUpIGNvbnN0CiB7CiAgICAgQ1NTVmFsdWVQb29sKiBjc3NWYWx1
ZVBvb2wgPSBtX25vZGUtPmRvY3VtZW50KCktPmNzc1ZhbHVlUG9vbCgpLmdldCgpOwogICAgIGlm
ICghc2hhZG93KQogICAgICAgICByZXR1cm4gY3NzVmFsdWVQb29sLT5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVOb25lKTsKIAotICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IHN0
YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKTsKLQogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+
IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgZm9yIChj
b25zdCBTaGFkb3dEYXRhKiBzID0gc2hhZG93OyBzOyBzID0gcy0+bmV4dCgpKSB7CiAgICAgICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4geCA9IHpvb21BZGp1c3RlZFBpeGVsVmFsdWUocy0+
eCgpLCBzdHlsZSwgY3NzVmFsdWVQb29sKTsKQEAgLTExMDcsNyArMTEwNSw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3co
Y29uc3QgU2hhZG93RGF0CiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1QYXNzUmVm
UHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NT
VmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlEKSBjb25zdAogewogICAgIHJldHVybiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKHByb3Bl
cnR5SUQsIFVwZGF0ZUxheW91dCk7CiB9CkBAIC0xMjQ3LDEzICsxMjQ1LDEzIEBAIHN0YXRpYyBQ
YXNzUmVmUHRyPENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSog
c3R5bGUsIGludCBwcm9wCiAgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCi1zdGF0aWMg
dm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJRCkKK3N0YXRpYyB2
b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkK
IHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8aW50PiwgcHJvcGVydHlJRFNldCwg
KCkpOwogICAgIGlmICghcHJvcGVydHlJRFNldC5hZGQocHJvcGVydHlJRCkuaXNOZXdFbnRyeSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGlt
cGxlbWVudCBnZXRDb21wdXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkpOworICAgIExPR19FUlJPUigiV2Vi
S2l0IGRvZXMgbm90IHlldCBpbXBsZW1lbnQgZ2V0Q29tcHV0ZWRTdHlsZSBmb3IgJyVzJy4iLCBn
ZXRQcm9wZXJ0eU5hbWUocHJvcGVydHlJRCkpOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxDU1NW
YWx1ZUxpc3Q+IGZvbnRGYW1pbHlGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1NWYWx1
ZVBvb2wqIGNzc1ZhbHVlUG9vbCkKQEAgLTEzMjQsNyArMTMyMiw3IEBAIHN0YXRpYyBQYXNzUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBmb250V2VpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBz
dHlsZSwgQ1NTCiAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlSWRlbnRpZmllclZhbHVl
KENTU1ZhbHVlTm9ybWFsKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlELCBFVXBk
YXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29uc3QKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25zdAogewogICAgIE5v
ZGUqIG5vZGUgPSBtX25vZGUuZ2V0KCk7CiAgICAgaWYgKCFub2RlKQpAQCAtMTMzNyw3ICsxMzM1
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKIAogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGU7Ci0g
ICAgaWYgKHJlbmRlcmVyICYmIGhhc0NvbXBvc2l0ZWRMYXllcihyZW5kZXJlcikgJiYgQW5pbWF0
aW9uQ29udHJvbGxlcjo6c3VwcG9ydHNBY2NlbGVyYXRlZEFuaW1hdGlvbk9mUHJvcGVydHkoc3Rh
dGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpKSB7CisgICAgaWYgKHJlbmRlcmVy
ICYmIGhhc0NvbXBvc2l0ZWRMYXllcihyZW5kZXJlcikgJiYgQW5pbWF0aW9uQ29udHJvbGxlcjo6
c3VwcG9ydHNBY2NlbGVyYXRlZEFuaW1hdGlvbk9mUHJvcGVydHkocHJvcGVydHlJRCkpIHsKICAg
ICAgICAgc3R5bGUgPSByZW5kZXJlci0+YW5pbWF0aW9uKCktPmdldEFuaW1hdGVkU3R5bGVGb3JS
ZW5kZXJlcihyZW5kZXJlcik7CiAgICAgICAgIGlmIChtX3BzZXVkb0VsZW1lbnRTcGVjaWZpZXIp
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNhY2hlZCBwc2V1ZG8gc3R5bGUgd2lsbCBv
bmx5IGV4aXN0IGlmIHRoZSBhbmltYXRpb24gaGFzIGJlZW4gcnVuIGF0IGxlYXN0IG9uY2UuCkBA
IC0xMzYwLDcgKzEzNTgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogCiAgICAgcHJvcGVy
dHlJRCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShwcm9wZXJ0
eUlELCBzdHlsZS0+ZGlyZWN0aW9uKCksIHN0eWxlLT53cml0aW5nTW9kZSgpKTsKIAotICAgIHN3
aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpIHsKKyAgICBzd2l0
Y2ggKHByb3BlcnR5SUQpIHsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUludmFsaWQ6CiAgICAg
ICAgICAgICBicmVhazsKIApAQCAtMjM2Miw3ICsyMzYwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBw
cm9wZXIKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOiB7CiAgICAg
ICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUJvcmRlclRvcCwgRG9Ob3RVcGRhdGVMYXlvdXQpOwotICAgICAgICAgICAgY29uc3Qg
aW50IHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENTU1Byb3BlcnR5
Qm9yZGVyQm90dG9tLAorICAgICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0aWVz
WzNdID0geyBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0LCBDU1NQcm9wZXJ0eUJvcmRlckJvdHRvbSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnQgfTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xF
TkdUSChwcm9wZXJ0aWVzKTsgKytpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT5jc3NU
ZXh0KCkgIT0gIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydGllc1tpXSwgRG9Ob3RVcGRhdGVM
YXlvdXQpLT5jc3NUZXh0KCkpCkBAIC0yNTM2LDcgKzI1MzQsNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50
IHByb3BlcgogICAgIHJldHVybiAwOwogfQogCi1TdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdAorU3RyaW5nIENT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IGdldFBy
b3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CiAgICAgaWYgKHZhbHVlKQpAQCAtMjU2Myw3ICsy
NTYxLDcgQEAgU3RyaW5nIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6aXRlbSh1bnNpZ25l
ZCBpKSBjb25zdAogICAgIGlmIChpID49IGxlbmd0aCgpKQogICAgICAgICByZXR1cm4gIiI7CiAK
LSAgICByZXR1cm4gZ2V0UHJvcGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGNv
bXB1dGVkUHJvcGVydGllc1tpXSkpOworICAgIHJldHVybiBnZXRQcm9wZXJ0eU5hbWUoY29tcHV0
ZWRQcm9wZXJ0aWVzW2ldKTsKIH0KIAogYm9vbCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OmNzc1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydHkpIGNvbnN0CkBA
IC0yNjQ5LDcgKzI2NDcsNyBAQCBDU1NSdWxlKiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246
OnBhcmVudFJ1bGUoKSBjb25zdAogCiBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgaW50IHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFt
ZSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0
eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIGdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CkBAIC0yNjU3LDcgKzI2NTUsNyBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFBy
b3BlcnR5Q1NTVmFsdWUoY29uc3QgU3RyaQogCiBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjpnZXRQcm9wZXJ0eVZhbHVlKGNvbnN0IFN0cmluZyAmcHJvcGVydHlOYW1lKQogewot
ICAgIGludCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOworICAgIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAg
ICBpZiAoIXByb3BlcnR5SUQpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICByZXR1cm4g
Z2V0UHJvcGVydHlWYWx1ZShwcm9wZXJ0eUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCA4ZDFiMzU5ZDRlNjA2MDkwM2ZjOGM1
MGIxMmUwZTU1OTA5OTBiMWNjLi5mNjRkMjNiMDM5YmZlZjdiMTQ0OTA5OGE2MmJkZTNlN2ZmZjNh
N2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5oCkBAIC01NywxOCArNTcsMTggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCByZWYo
KSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGVyZWYoKSBPVkVSUklERTsKIAotICAgIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQpIGNv
bnN0OwotICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKGludCBwcm9wZXJ0eUlEKSBjb25zdDsK
LSAgICBib29sIGdldFByb3BlcnR5UHJpb3JpdHkoaW50IHByb3BlcnR5SUQpIGNvbnN0OworICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCkg
Y29uc3Q7CisgICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7
CisgICAgYm9vbCBnZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHkoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0eVNldD4gbWFrZU11dGFibGUoKTsKIAot
ICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5
SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0Rm9udFNpemVDU1NWYWx1ZVByZWZlcnJpbmdLZXl3b3Jk
KCkgY29uc3Q7CiAgICAgYm9vbCB1c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSgpIGNvbnN0OwogI2lm
IEVOQUJMRShTVkcpCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0U1ZHUHJvcGVydHlDU1NW
YWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7CisgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gZ2V0U1ZHUHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBkYXRl
TGF5b3V0KSBjb25zdDsKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBjb3B5UHJvcGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQg
bGVuZ3RoKSBjb25zdDsKQEAgLTk1LDcgKzk1LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwg
Ym9vbCBjc3NQcm9wZXJ0eU1hdGNoZXMoY29uc3QgQ1NTUHJvcGVydHkqKSBjb25zdDsKIAotICAg
IFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlRm9yU2hhZG93KGNvbnN0IFNoYWRvd0RhdGEqLCBp
bnQsIFJlbmRlclN0eWxlKikgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVG
b3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSosIENTU1Byb3BlcnR5SUQsIFJlbmRlclN0eWxlKikg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY3VycmVudENvbG9yT3JW
YWxpZENvbG9yKFJlbmRlclN0eWxlKiwgY29uc3QgQ29sb3ImKSBjb25zdDsKICNpZiBFTkFCTEUo
U1ZHKQogICAgIFBhc3NSZWZQdHI8U1ZHUGFpbnQ+IGFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENv
bG9yKFBhc3NSZWZQdHI8U1ZHUGFpbnQ+LCBSZW5kZXJTdHlsZSopIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkKaW5kZXggOGYxMjRjYmZmYjdjMDI0Y2ViYWJlNmNlNTA5MjEzMjg4YmZmODM2
NC4uYTg0MTAwMmU0M2NkZDVlNGQ0YTFlMTUzZDgzYjE1ZDUyNGU1ZTc1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55CkBAIC0xMzA3LDcgKzEzMDcsNyBAQCBkZWNsYXJhdGlvbjoKICAgICAgICAg
aWYgKCQxICYmICQ0KSB7CiAgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAtPnNpbmtGbG9h
dGluZ1ZhbHVlTGlzdCgkNCk7CiAgICAgICAgICAgICBpbnQgb2xkUGFyc2VkUHJvcGVydGllcyA9
IHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCk7Ci0gICAgICAgICAgICAkJCA9IHAtPnBhcnNl
VmFsdWUoJDEsICQ1KTsKKyAgICAgICAgICAgICQkID0gcC0+cGFyc2VWYWx1ZShzdGF0aWNfY2Fz
dDxDU1NQcm9wZXJ0eUlEPigkMSksICQ1KTsKICAgICAgICAgICAgIGlmICghJCQpCiAgICAgICAg
ICAgICAgICAgcC0+cm9sbGJhY2tMYXN0UHJvcGVydGllcyhwLT5tX3BhcnNlZFByb3BlcnRpZXMu
c2l6ZSgpIC0gb2xkUGFyc2VkUHJvcGVydGllcyk7CiAgICAgICAgICAgICBlbHNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCmluZGV4IDVlNmU0MGQwMTM0NjZiMGM1MThkMmRiZWFiOTVmN2UyZmI0
YzYwODMuLjgyOGVmZjgyOGIxNjk0YWZkY2E1NGEyYjA5ZGI2YmM0NmViOTQ1ZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xODMsNyArMTgzLDcgQEAgaW5saW5lIHZvaWQgQ1NTUGFy
c2VyOjplbnN1cmVDU1NWYWx1ZVBvb2woKQogQ1NTUGFyc2VyOjpDU1NQYXJzZXIoQ1NTUGFyc2Vy
TW9kZSBjc3NQYXJzZXJNb2RlKQogICAgIDogbV9jc3NQYXJzZXJNb2RlKGNzc1BhcnNlck1vZGUp
CiAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKLSAgICAsIG1faWQoMCkKKyAgICAsIG1faWQoQ1NT
UHJvcGVydHlJbnZhbGlkKQogICAgICwgbV9zdHlsZVNoZWV0KDApCiAgICAgLCBtX2luUGFyc2VT
aG9ydGhhbmQoMCkKICAgICAsIG1fY3VycmVudFNob3J0aGFuZCgwKQpAQCAtMjk0LDcgKzI5NCw3
IEBAIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gQ1NTUGFyc2VyOjpwYXJzZUtleWZyYW1lUnVs
ZShDU1NTdHlsZVNoZWV0ICpzaGVldCwgY29uCiAgICAgcmV0dXJuIG1fa2V5ZnJhbWUucmVsZWFz
ZSgpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoaW50IHByb3Bl
cnR5SWQpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlkKQogewogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewogICAgIGNhc2UgQ1NT
UHJvcGVydHlDb2xvcjoKQEAgLTMyMSw3ICszMjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXND
b2xvclByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBw
YXJzZUNvbG9yVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0
eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMg
Ym9vbCBwYXJzZUNvbG9yVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50
LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHls
ZVNoZWV0KQogewogICAgIGJvb2wgc3RyaWN0ID0gaXNTdHJpY3RQYXJzZXJNb2RlKGNzc1BhcnNl
ck1vZGUpOwogICAgIGlmICghc3RyaW5nLmxlbmd0aCgpKQpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0
YXRpYyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwg
aW50IHByb3BlcnR5SWQsIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoaW50IHByb3BlcnR5SWQsIGJvb2wmIGFj
Y2VwdHNOZWdhdGl2ZU51bWJlcnMpCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQ
cm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXZl
TnVtYmVycykKIHsKICAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsKICAgICBjYXNlIENTU1Byb3Bl
cnR5Rm9udFNpemU6CkBAIC00MDgsNyArNDA4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2lt
cGxlTGVuZ3RoUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXYK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9w
ZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmlu
ZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NTU3R5bGVT
aGVldCogY29udGV4dFN0eWxlU2hlZXQpCitzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZh
bHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBi
b29sIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnM7CiAgICAgYm9vbCBzdHJpY3QgPSBpc1N0cmljdFBh
cnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CkBAIC00ODMsNyArNDgzLDcgQEAgc3RhdGljIGJvb2wg
cGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlz
VmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShpbnQgcHJvcGVydHlJZCwgaW50IHZhbHVlSUQp
CitzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1By
b3BlcnR5SUQgcHJvcGVydHlJZCwgaW50IHZhbHVlSUQpCiB7CiAgICAgaWYgKCF2YWx1ZUlEKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC04MDQsNyArODA0LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShpbnQgcHJvcGVydHlJZCwgaW50IHZh
bHVlSUQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaXNLZXl3
b3JkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdv
cmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKIHsKICAgICBzd2l0Y2ggKHBy
b3BlcnR5SWQpIHsKICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tU3R5bGU6CkBAIC05
MDAsNyArOTAwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3BlcnR5SUQoaW50
IHByb3BlcnR5SWQpCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYXJzZUtleXdvcmRWYWx1ZShT
dHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hl
ZXQpCitzdGF0aWMgYm9vbCBwYXJzZUtleXdvcmRWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNs
YXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywg
Ym9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAg
IGlmIChzdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC05NDAsMjUg
Kzk0MCwyNSBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZvbnRG
YWNlVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbgogICAgIHJldHVybiBzdGF0aWNfcG9p
bnRlcl9jYXN0PENTU1ZhbHVlTGlzdD4oZHVtbXlTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShD
U1NQcm9wZXJ0eUZvbnRGYW1pbHkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUo
U3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24sIGludCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJp
bmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUg
Y3NzUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7Ci0gICAg
aWYgKHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmlu
ZywgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBjb250ZXh0U3R5bGVTaGVldCkpCisgICAgaWYg
KHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SUQsIHN0cmluZywg
aW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBjb250ZXh0U3R5bGVTaGVldCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIGlmIChwYXJzZUNvbG9yVmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5
SWQsIHN0cmluZywgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlLCBjb250ZXh0U3R5bGVTaGVldCkp
CisgICAgaWYgKHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJRCwgc3RyaW5n
LCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9w
ZXJ0eUlkLCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQorICAgIGlmIChw
YXJzZUtleXdvcmRWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJRCwgc3RyaW5nLCBpbXBvcnRh
bnQsIGNvbnRleHRTdHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgQ1NTUGFy
c2VyIHBhcnNlcihjc3NQYXJzZXJNb2RlKTsKLSAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFsdWUo
ZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5bGVT
aGVldCk7CisgICAgcmV0dXJuIHBhcnNlci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0
eUlELCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCi1ib29sIENT
U1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHBy
b3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVT
aGVldCogY29udGV4dFN0eWxlU2hlZXQpCitib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHls
ZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRT
dHlsZVNoZWV0KQogewogICAgIHNldFN0eWxlU2hlZXQoY29udGV4dFN0eWxlU2hlZXQpOwogCiAg
ICAgc2V0dXBQYXJzZXIoIkAtd2Via2l0LXZhbHVleyIsIHN0cmluZywgIn0gIik7CiAKLSAgICBt
X2lkID0gcHJvcGVydHlJZDsKKyAgICBtX2lkID0gcHJvcGVydHlJRDsKICAgICBtX2ltcG9ydGFu
dCA9IGltcG9ydGFudDsKIAogICAgIGNzc3l5cGFyc2UodGhpcyk7CkBAIC0xMTA3LDcgKzExMDcs
NyBAQCBQYXNzT3duUHRyPE1lZGlhUXVlcnk+IENTU1BhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5KGNv
bnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHJldHVybiBtX21lZGlhUXVlcnkucmVsZWFzZSgpOwog
fQogCi12b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoaW50IHByb3BJZCwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIGltcGxpY2l0KQordm9pZCBDU1NQ
YXJzZXI6OmFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQpCiB7CiAgICAgbV9wYXJz
ZWRQcm9wZXJ0aWVzLmFwcGVuZChDU1NQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQs
IG1fY3VycmVudFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCB8fCBpbXBsaWNpdCkpOwog
fQpAQCAtMTM1OSw3ICsxMzU5LDcgQEAgaW5saW5lIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFs
dWU+IENTU1BhcnNlcjo6cGFyc2VWYWxpZFByaW1pdGl2ZShpbnQgaWQsIENTU1AKICAgICByZXR1
cm4gMDsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BJ
ZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgaWYgKCFtX3ZhbHVlTGlzdCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMTQwNiw3ICsxNDA2LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFs
dWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAgICAgYm9vbCB2YWxpZFByaW1pdGl2ZSA9
IGZhbHNlOwogICAgIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VkVmFsdWU7CiAKLSAgICBzd2l0Y2gg
KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BJZCkpIHsKKyAgICBzd2l0Y2ggKHByb3BJ
ZCkgewogICAgICAgICAvKiBUaGUgY29tbWVudCB0byB0aGUgbGVmdCBkZWZpbmVzIGFsbCB2YWxp
ZCB2YWx1ZSBvZiB0aGlzIHByb3BlcnRpZXMgYXMgZGVmaW5lZAogICAgICAgICAgKiBpbiBDU1Mg
MiwgQXBwZW5kaXggRi4gUHJvcGVydHkgaW5kZXgKICAgICAgICAgICovCkBAIC0xNjUxLDcgKzE2
NTEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdFk6IHsKICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWwxOwogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDI7Ci0g
ICAgICAgIGludCBwcm9wSWQxLCBwcm9wSWQyOworICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BJ
ZDEsIHByb3BJZDI7CiAgICAgICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgICAgIGlmIChw
YXJzZUZpbGxQcm9wZXJ0eShwcm9wSWQsIHByb3BJZDEsIHByb3BJZDIsIHZhbDEsIHZhbDIpKSB7
CiAgICAgICAgICAgICBPd25QdHI8U2hvcnRoYW5kU2NvcGU+IHNob3J0aGFuZFNjb3BlOwpAQCAt
MjA5MCw3ICsyMDkwLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwg
Ym9vbCBpbXBvcnRhbnQpCiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMTsKICAgICAgICAg
UmVmUHRyPENTU1ZhbHVlPiB2YWwyOwogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDM7Ci0g
ICAgICAgIGludCBwcm9wSWQxLCBwcm9wSWQyLCBwcm9wSWQzOworICAgICAgICBDU1NQcm9wZXJ0
eUlEIHByb3BJZDEsIHByb3BJZDIsIHByb3BJZDM7CiAgICAgICAgIGlmIChwYXJzZVRyYW5zZm9y
bU9yaWdpbihwcm9wSWQsIHByb3BJZDEsIHByb3BJZDIsIHByb3BJZDMsIHZhbDEsIHZhbDIsIHZh
bDMpKSB7CiAgICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQxLCB2YWwxLnJlbGVhc2UoKSwg
aW1wb3J0YW50KTsKICAgICAgICAgICAgIGlmICh2YWwyKQpAQCAtMjEyMSw3ICsyMTIxLDcgQEAg
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBlcnNwZWN0aXZlT3JpZ2luWTogewogICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbDE7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMjsKLSAg
ICAgICAgaW50IHByb3BJZDEsIHByb3BJZDI7CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcElk
MSwgcHJvcElkMjsKICAgICAgICAgaWYgKHBhcnNlUGVyc3BlY3RpdmVPcmlnaW4ocHJvcElkLCBw
cm9wSWQxLCBwcm9wSWQyLCB2YWwxLCB2YWwyKSkgewogICAgICAgICAgICAgYWRkUHJvcGVydHko
cHJvcElkMSwgdmFsMS5yZWxlYXNlKCksIGltcG9ydGFudCk7CiAgICAgICAgICAgICBpZiAodmFs
MikKQEAgLTI1NjYsNyArMjU2Niw3IEBAIHN0YXRpYyBib29sIHBhcnNlQmFja2dyb3VuZENsaXAo
Q1NTUGFyc2VyVmFsdWUqIHBhcnNlclZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiBjCiAKIGNvbnN0
IGludCBjTWF4RmlsbFByb3BlcnRpZXMgPSA5OwogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VGaWxs
U2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsIGlu
dCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUZp
bGxTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHBy
b3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCkKIHsKICAgICBBU1NF
UlQobnVtUHJvcGVydGllcyA8PSBjTWF4RmlsbFByb3BlcnRpZXMpOwogICAgIGlmIChudW1Qcm9w
ZXJ0aWVzID4gY01heEZpbGxQcm9wZXJ0aWVzKQpAQCAtMjYxNSw3ICsyNjE1LDcgQEAgYm9vbCBD
U1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0
eUlEKiBwcm9wZXJ0aWVzLAogICAgICAgICAgICAgaWYgKCFwYXJzZWRQcm9wZXJ0eVtpXSkgewog
ICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMTsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWU+IHZhbDI7Ci0gICAgICAgICAgICAgICAgaW50IHByb3BJZDEsIHByb3BJ
ZDI7CisgICAgICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQxLCBwcm9wSWQyOwogICAg
ICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlKiBwYXJzZXJWYWx1ZSA9IG1fdmFsdWVMaXN0LT5j
dXJyZW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKHBhcnNlRmlsbFByb3BlcnR5KHByb3BlcnRp
ZXNbaV0sIHByb3BJZDEsIHByb3BJZDIsIHZhbDEsIHZhbDIpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIHBhcnNlZFByb3BlcnR5W2ldID0gZm91bmQgPSB0cnVlOwpAQCAtMjgxOSw3ICsyODE5LDcg
QEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFu
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5k
KGludCBwcm9wSWQsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9v
bCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJ
RCBwcm9wSWQsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCwgYm9vbCBp
bXBvcnRhbnQpCiB7CiAgICAgLy8gV2UgdHJ5IHRvIG1hdGNoIGFzIG1hbnkgcHJvcGVydGllcyBh
cyBwb3NzaWJsZQogICAgIC8vIFdlIHNldCB1cCBhbiBhcnJheSBvZiBib29sZWFucyB0byBtYXJr
IHdoaWNoIHByb3BlcnR5IGhhcyBiZWVuIGZvdW5kLApAQCAtMjg2Niw3ICsyODY2LDcgQEAgYm9v
bCBDU1NQYXJzZXI6OnBhcnNlU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IFN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQmIHNob3J0aGEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlNFZhbHVlcyhpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9wZXJ0
aWVzLCAgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKENTU1By
b3BlcnR5SUQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEICpwcm9wZXJ0aWVzLCAgYm9vbCBp
bXBvcnRhbnQpCiB7CiAgICAgLyogRnJvbSB0aGUgQ1NTIDIgc3BlY3MsIDguMwogICAgICAqIElm
IHRoZXJlIGlzIG9ubHkgb25lIHZhbHVlLCBpdCBhcHBsaWVzIHRvIGFsbCBzaWRlcy4gSWYgdGhl
cmUgYXJlIHR3byB2YWx1ZXMsIHRoZSB0b3AgYW5kCkBAIC0yOTI1LDcgKzI5MjUsNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQg
KnByb3BlcnRpZXMsICBib29sCiB9CiAKIC8vIGF1dG8gfCA8aWRlbnRpZmllcj4KLWJvb2wgQ1NT
UGFyc2VyOjpwYXJzZVBhZ2UoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1Bh
cnNlcjo6cGFyc2VQYWdlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsK
ICAgICBBU1NFUlQocHJvcElkID09IENTU1Byb3BlcnR5UGFnZSk7CiAKQEAgLTI5NDcsNyArMjk0
Nyw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVBhZ2UoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiB9CiAKIC8vIDxsZW5ndGg+ezEsMn0gfCBhdXRvIHwgWyA8cGFnZS1zaXplPiB8fCBbIHBv
cnRyYWl0IHwgbGFuZHNjYXBlXSBdCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTaXplKGludCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlU2l6ZShDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQVNTRVJUKHByb3BJZCA9PSBDU1NQ
cm9wZXJ0eVNpemUpOwogCkBAIC0zMDIxLDcgKzMwMjEsNyBAQCBDU1NQYXJzZXI6OlNpemVQYXJh
bWV0ZXJUeXBlIENTU1BhcnNlcjo6cGFyc2VTaXplUGFyYW1ldGVyKENTU1ZhbHVlTGlzdCogcGFy
c2VkVgogCiAvLyBbIDxzdHJpbmc+IDxzdHJpbmc+IF0rIHwgaW5oZXJpdCB8IG5vbmUKIC8vIGlu
aGVyaXQgYW5kIG5vbmUgYXJlIGhhbmRsZWQgaW4gcGFyc2VWYWx1ZS4KLWJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVF1b3RlcyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2Vy
OjpwYXJzZVF1b3RlcyhDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOwogICAgIHdoaWxlIChDU1NQYXJzZXJWYWx1ZSogdmFsID0gbV92YWx1ZUxp
c3QtPmN1cnJlbnQoKSkgewpAQCAtMzA0NCw3ICszMDQ0LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlUXVvdGVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogLy8gWyA8c3RyaW5nPiB8IDx1
cmk+IHwgPGNvdW50ZXI+IHwgYXR0cihYKSB8IG9wZW4tcXVvdGUgfCBjbG9zZS1xdW90ZSB8IG5v
LW9wZW4tcXVvdGUgfCBuby1jbG9zZS1xdW90ZSBdKyB8IGluaGVyaXQKIC8vIGluIENTUyAyLjEg
dGhpcyBnb3Qgc29tZXdoYXQgcmVkdWNlZDoKIC8vIFsgPHN0cmluZz4gfCBhdHRyKFgpIHwgb3Bl
bi1xdW90ZSB8IGNsb3NlLXF1b3RlIHwgbm8tb3Blbi1xdW90ZSB8IG5vLWNsb3NlLXF1b3RlIF0r
IHwgaW5oZXJpdAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ29udGVudChpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvbnRlbnQoQ1NTUHJvcGVydHlJRCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVl
cyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKIApAQCAtMzM0Niw3ICsz
MzQ2LDcgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlRmlsbFJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+
JiB2YWx1ZTEsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHUKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShpbnQgcHJvcElkLCBib29sJiBhbGxv
d0NvbW1hKQorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKENT
U1Byb3BlcnR5SUQgcHJvcElkLCBib29sJiBhbGxvd0NvbW1hKQogewogICAgIGFsbG93Q29tbWEg
PSB0cnVlOwogICAgIENTU1BhcnNlclZhbHVlKiB2YWx1ZSA9IG1fdmFsdWVMaXN0LT5jdXJyZW50
KCk7CkBAIC0zMzY0LDcgKzMzNjQsNiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6
OnBhcnNlRmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCYgYWxsb3dDb21tYSkKICAgICAgICAgcGFy
c2VkVmFsdWUxID0gY3JlYXRlUHJpbWl0aXZlTnVtZXJpY1ZhbHVlKHZhbHVlKTsKICAgICB9CiAK
LSAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4o
cHJvcElkKTsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlMjsKICAg
ICBpZiAoKHZhbHVlID0gbV92YWx1ZUxpc3QtPm5leHQoKSkpIHsKICAgICAgICAgaWYgKHZhbHVl
LT51bml0ID09IENTU1BhcnNlclZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcs
JykKQEAgLTMzNzQsNyArMzM3Myw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6
cGFyc2VGaWxsU2l6ZShpbnQgcHJvcElkLCBib29sJiBhbGxvd0NvbW1hKQogICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAgICAgcGFyc2VkVmFsdWUyID0gY3JlYXRlUHJpbWl0aXZl
TnVtZXJpY1ZhbHVlKHZhbHVlKTsKICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoIXBhcnNlZFZh
bHVlMiAmJiBwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eVdlYmtpdEJhY2tncm91bmRTaXplKSB7Cisg
ICAgfSBlbHNlIGlmICghcGFyc2VkVmFsdWUyICYmIHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtp
dEJhY2tncm91bmRTaXplKSB7CiAgICAgICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0
eSB3ZSBzZXQgdGhlIHNlY29uZCB2YWx1ZSB0byB0aGUgZmlyc3QgaWYgaXQgaXMgb21pdHRlZC4K
ICAgICAgICAgLy8gV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgZm9yIC13ZWJraXQtYmFja2dyb3Vu
ZC1zaXplLiBJdCBzaG91bGQgYmUgc2FmZSB0byBsZXQgbWFza3MgbWF0Y2gKICAgICAgICAgLy8g
dGhlIHJlYWwgcHJvcGVydHkuCkBAIC0zMzg2LDcgKzMzODUsNyBAQCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBDU1NQYXJzZXI6OnBhcnNlRmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCYgYWxsb3dDb21t
YSkKICAgICByZXR1cm4gY3NzVmFsdWVQb29sKCktPmNyZWF0ZVZhbHVlKFBhaXI6OmNyZWF0ZShw
YXJzZWRWYWx1ZTEucmVsZWFzZSgpLCBwYXJzZWRWYWx1ZTIucmVsZWFzZSgpKSk7CiB9CiAKLWJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxQcm9wZXJ0eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEs
IGludCYgcHJvcElkMiwKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMSwgQ1NTUHJvcGVydHlJRCYgcHJv
cElkMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+
JiByZXRWYWx1ZTEsIFJlZlB0cjxDU1NWYWx1ZT4mIHJldFZhbHVlMikKIHsKICAgICBSZWZQdHI8
Q1NTVmFsdWVMaXN0PiB2YWx1ZXM7CkBAIC0zNTA2LDYgKzM1MDUsOSBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VGaWxsUHJvcGVydHkoaW50IHByb3BJZCwgaW50JiBwcm9wSWQxLCBpbnQmIHByb3BJ
ZDIsCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmICghY3VyclZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3Mjgs
NyArMzczMCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VBbmltYXRp
b25UaW1pbmdGdW5jdGlvbigpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpw
YXJzZUFuaW1hdGlvblByb3BlcnR5KGludCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHJlc3Vs
dCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3BlcnR5KENTU1Byb3BlcnR5SUQg
cHJvcElkLCBSZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiB7CiAgICAgUmVmUHRyPENTU1ZhbHVl
TGlzdD4gdmFsdWVzOwogICAgIENTU1BhcnNlclZhbHVlKiB2YWw7CkBAIC0zNzk1LDYgKzM3OTcs
OSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBbmltYXRpb25Qcm9wZXJ0eShpbnQgcHJvcElkLCBS
ZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyVmFs
dWUpCiAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWN1cnJWYWx1ZSkK
QEAgLTM4MzEsNyArMzgzNiw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblByb3Bl
cnR5KGludCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHJlc3VsdCkKIH0KIAogI2lmIEVOQUJM
RShDU1NfR1JJRF9MQVlPVVQpCi1ib29sIENTU1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tMaXN0KGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlR3JpZFRyYWNr
TGlzdChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NTUGFy
c2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAodmFsdWUt
PmlkID09IENTU1ZhbHVlTm9uZSkgewpAQCAtMzg3NSw3ICszODgwLDcgQEAgc3RhdGljIENTU1Bh
cnNlclZhbHVlKiBza2lwQ29tbWFJbkRhc2hib2FyZFJlZ2lvbihDU1NQYXJzZXJWYWx1ZUxpc3Qg
KmFyZ3MpCiAgICAgcmV0dXJuIGFyZ3MtPmN1cnJlbnQoKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6
OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wg
Q1NTUGFyc2VyOjpwYXJzZURhc2hib2FyZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQogewogICAgIGJvb2wgdmFsaWQgPSB0cnVlOwogCkBAIC00MDUyLDcgKzQw
NTcsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlQ291bnRlckNvbnRl
bnQoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzLCBibwogICAgIHJldHVybiBjc3NWYWx1ZVBvb2wo
KS0+Y3JlYXRlVmFsdWUoQ291bnRlcjo6Y3JlYXRlKGlkZW50aWZpZXIucmVsZWFzZSgpLCBsaXN0
U3R5bGUucmVsZWFzZSgpLCBzZXBhcmF0b3IucmVsZWFzZSgpKSk7CiB9CiAKLWJvb2wgQ1NTUGFy
c2VyOjpwYXJzZUNsaXBTaGFwZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NT
UGFyc2VyOjpwYXJzZUNsaXBTaGFwZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQo
KTsKICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MgPSB2YWx1ZS0+ZnVuY3Rpb24tPmFyZ3Mu
Z2V0KCk7CkBAIC01Mzk4LDkgKzU0MDMsOSBAQCBzdHJ1Y3QgU2hhZG93UGFyc2VDb250ZXh0IHsK
ICAgICBib29sIGFsbG93QnJlYWs7CiB9OwogCi1QYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NT
UGFyc2VyOjpwYXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgaW50IHBy
b3BJZCkKK1Bhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlU2hhZG93KENT
U1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0LCBDU1NQcm9wZXJ0eUlEIHByb3BJZCkKIHsKLSAg
ICBTaGFkb3dQYXJzZUNvbnRleHQgY29udGV4dChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihw
cm9wSWQpLCB0aGlzKTsKKyAgICBTaGFkb3dQYXJzZUNvbnRleHQgY29udGV4dChwcm9wSWQsIHRo
aXMpOwogICAgIENTU1BhcnNlclZhbHVlKiB2YWw7CiAgICAgd2hpbGUgKCh2YWwgPSB2YWx1ZUxp
c3QtPmN1cnJlbnQoKSkpIHsKICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgY29tbWEgYnJlYWsgZmly
c3QuCkBAIC01NDExLDcgKzU0MTYsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFy
c2VyOjpwYXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgaQogICAgICAg
ICAgICAgICAgIHJldHVybiAwOwogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgICAgICAvLyAtd2Vi
a2l0LXN2Zy1zaGFkb3cgZG9lcyBub3Qgc3VwcG9ydCBtdWx0aXBsZSB2YWx1ZXMuCi0gICAgICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcElkKSA9PSBDU1NQcm9wZXJ0
eVdlYmtpdFN2Z1NoYWRvdykKKyAgICAgICAgICAgIGlmIChwcm9wSWQgPT0gQ1NTUHJvcGVydHlX
ZWJraXRTdmdTaGFkb3cpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKICAgICAg
ICAgICAgIC8vIFRoZSB2YWx1ZSBpcyBnb29kLiAgQ29tbWl0IGl0LgpAQCAtNTQ2Myw3ICs1NDY4
LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VTaGFkb3coQ1NT
UGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIGkKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBD
U1NQYXJzZXI6OnBhcnNlUmVmbGVjdChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wg
Q1NTUGFyc2VyOjpwYXJzZVJlZmxlY3QoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KQogewogICAgIC8vIGJveC1yZWZsZWN0OiA8ZGlyZWN0aW9uPiA8b2Zmc2V0PiA8bWFzaz4K
IApAQCAtNTY1MCw3ICs1NjU1LDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsK
ICAgICAgICAgY29tbWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUJvcmRlckltYWdl
UmVwZWF0LCBwYXJzZXIsIG1fcmVwZWF0LCBpbXBvcnRhbnQpOwogICAgIH0KIAotICAgIHZvaWQg
Y29tbWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShpbnQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwg
UGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUsIGJvb2wgaW1wb3J0YW50KQorICAgIHZvaWQgY29t
bWl0Qm9yZGVySW1hZ2VQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgQ1NTUGFyc2VyKiBw
YXJzZXIsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCkKICAgICB7
CiAgICAgICAgIGlmICh2YWx1ZSkKICAgICAgICAgICAgIHBhcnNlci0+YWRkUHJvcGVydHkocHJv
cElkLCB2YWx1ZSwgaW1wb3J0YW50KTsKQEAgLTU2NzcsNyArNTY4Miw3IEBAIHN0cnVjdCBCb3Jk
ZXJJbWFnZVBhcnNlQ29udGV4dCB7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBtX3JlcGVhdDsKIH07
CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKGludCBwcm9wSWQsIFJlZlB0cjxD
U1NWYWx1ZT4mIHJlc3VsdCwgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VC
b3JkZXJJbWFnZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0
LCBib29sIGltcG9ydGFudCkKIHsKICAgICBTaG9ydGhhbmRTY29wZSBzY29wZSh0aGlzLCBwcm9w
SWQpOwogICAgIEJvcmRlckltYWdlUGFyc2VDb250ZXh0IGNvbnRleHQ7CkBAIC01ODY3LDcgKzU4
NzIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maWxsOwogfTsKIAotYm9vbCBDU1NQYXJzZXI6
OnBhcnNlQm9yZGVySW1hZ2VTbGljZShpbnQgcHJvcElkLCBSZWZQdHI8Q1NTQm9yZGVySW1hZ2VT
bGljZVZhbHVlPiYgcmVzdWx0KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1hZ2VTbGlj
ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4m
IHJlc3VsdCkKIHsKICAgICBCb3JkZXJJbWFnZVNsaWNlUGFyc2VDb250ZXh0IGNvbnRleHQodGhp
cyk7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbDsKQEAgLTYwMjksNyArNjAzNCw3IEBAIHN0YXRp
YyB2b2lkIGNvbXBsZXRlQm9yZGVyUmFkaWkoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiByYWRp
aVs0XSkKICAgICByYWRpaVszXSA9IHJhZGlpWzFdOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFy
c2VCb3JkZXJSYWRpdXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNl
cjo6cGFyc2VCb3JkZXJSYWRpdXMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogewogICAgIHVuc2lnbmVkIG51bSA9IG1fdmFsdWVMaXN0LT5zaXplKCk7CiAgICAgaWYgKG51
bSA+IDkpCkBAIC02MTE3LDcgKzYxMjIsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VBc3BlY3RS
YXRpbyhib29sIGltcG9ydGFudCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlQ291bnRlcihpbnQgcHJvcElkLCBpbnQgZGVmYXVsdFZhbHVlLCBib29sIGltcG9y
dGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUNvdW50ZXIoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IGludCBkZWZhdWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGVudW0geyBJRCwgVkFM
IH0gc3RhdGUgPSBJRDsKIApAQCAtNzMyNCw3ICs3MzI5LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRmxvd1RocmVhZChjb25zdCBTdHJpbmcmIGZsb3dOYW1lLCBEb2N1bWVudCogZG9jKQogfQog
CiAvLyBub25lIHwgPGlkZW50PgotYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmxvd1RocmVhZChpbnQg
cHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUZsb3dUaHJlYWQo
Q1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIEFTU0VSVChwcm9w
SWQgPT0gQ1NTUHJvcGVydHlXZWJraXRGbG93SW50byk7CiAgICAgQVNTRVJUKGNzc1JlZ2lvbnNF
bmFibGVkKCkpOwpAQCAtNzM1Niw3ICs3MzYxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmxv
d1RocmVhZChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIH0KIAogLy8gLXdlYmtpdC1mbG93
LWZyb206IG5vbmUgfCA8aWRlbnQ+Ci1ib29sIENTU1BhcnNlcjo6cGFyc2VSZWdpb25UaHJlYWQo
aW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VSZWdpb25U
aHJlYWQoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIEFTU0VS
VChwcm9wSWQgPT0gQ1NTUHJvcGVydHlXZWJraXRGbG93RnJvbSk7CiAgICAgQVNTRVJUKGNzc1Jl
Z2lvbnNFbmFibGVkKCkpOwpAQCAtNzM4Niw3ICs3MzkxLDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBh
cnNlUmVnaW9uVGhyZWFkKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1PcmlnaW4oaW50IHByb3BJ
ZCwgaW50JiBwcm9wSWQxLCBpbnQmIHByb3BJZDIsIGludCYgcHJvcElkMywgUmVmUHRyPENTU1Zh
bHVlPiYgdmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMiwgUmVmUHRyPENTU1ZhbHVlPiYg
dmFsdWUzKQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQy
LCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQzLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSwgUmVmUHRy
PENTU1ZhbHVlPiYgdmFsdWUyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTMpCiB7CiAgICAgcHJv
cElkMSA9IHByb3BJZDsKICAgICBwcm9wSWQyID0gcHJvcElkOwpAQCAtNzQyMiwxMiArNzQyNywx
NSBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm1PcmlnaW4oaW50IHByb3BJZCwgaW50
JiBwcm9wSWQxLCBpbnQmIHByb3BJZDIsIGludAogICAgICAgICAgICAgICAgIG1fdmFsdWVMaXN0
LT5uZXh0KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6
cGFyc2VQZXJzcGVjdGl2ZU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJv
cElkMiwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMikK
K2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVBlcnNwZWN0aXZlT3JpZ2luKENTU1Byb3BlcnR5SUQgcHJv
cElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQyLCBSZWZQ
dHI8Q1NTVmFsdWU+JiB2YWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdWUyKQogewogICAgIHBy
b3BJZDEgPSBwcm9wSWQ7CiAgICAgcHJvcElkMiA9IHByb3BJZDsKQEAgLTc0NTIsNiArNzQ2MCw5
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVBlcnNwZWN0aXZlT3JpZ2luKGludCBwcm9wSWQsIGlu
dCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSCiAgICAgICAgICAgICAgICAgbV92YWx1ZUxpc3Qt
Pm5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5k
ZXggNGE0Yjg5N2QxNDE1N2ZkZDMyZTM3MTU2MTM5Y2RkODgxZjQ3MjRmNy4uY2I4Yjc2ZmMxMWFi
ZGViMDZkNjEyYjQzZTRmMjNhMzk2NGFkMmY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAt
NzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZVNoZWV0KENTU1N0eWxlU2hlZXQq
LCBjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRMaW5lTnVtYmVyID0gMCwgU3R5bGVSdWxlUmFuZ2VN
YXAqIHJ1bGVSYW5nZU1hcCA9IDApOwogICAgIFBhc3NSZWZQdHI8U3R5bGVSdWxlQmFzZT4gcGFy
c2VSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJpbmcmKTsKICAgICBQYXNzUmVmUHRyPFN0
eWxlS2V5ZnJhbWU+IHBhcnNlS2V5ZnJhbWVSdWxlKENTU1N0eWxlU2hlZXQqLCBjb25zdCBTdHJp
bmcmKTsKLSAgICBzdGF0aWMgYm9vbCBwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQg
cHJvcElkLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSwgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpOworICAgIHN0YXRpYyBib29sIHBhcnNlVmFs
dWUoU3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2ws
IENTU1BhcnNlck1vZGUsIENTU1N0eWxlU2hlZXQqKTsKICAgICBzdGF0aWMgYm9vbCBwYXJzZUNv
bG9yKFJHQkEzMiYgY29sb3IsIGNvbnN0IFN0cmluZyYsIGJvb2wgc3RyaWN0ID0gZmFsc2UpOwog
ICAgIHN0YXRpYyBib29sIHBhcnNlU3lzdGVtQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3Ry
aW5nJiwgRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IHBh
cnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmLCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCk7CkBAIC04NywxNSArODcsMTUgQEAgcHVibGljOgogCiAgICAgQ1NTVmFs
dWVQb29sKiBjc3NWYWx1ZVBvb2woKSBjb25zdCB7IHJldHVybiBtX2Nzc1ZhbHVlUG9vbC5nZXQo
KTsgfQogCi0gICAgdm9pZCBhZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1Zh
bHVlPiwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgaW1wbGljaXQgPSBmYWxzZSk7CisgICAgdm9pZCBh
ZGRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiwgYm9vbCwgYm9v
bCBpbXBsaWNpdCA9IGZhbHNlKTsKICAgICB2b2lkIHJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50
IG51bSk7CiAgICAgYm9vbCBoYXNQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gIW1fcGFyc2Vk
UHJvcGVydGllcy5pc0VtcHR5KCk7IH0KIAotICAgIGJvb2wgcGFyc2VWYWx1ZShpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVNob3J0aGFuZChpbnQsIGNvbnN0IFN0
eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sKTsKLSAgICBib29sIHBhcnNlNFZhbHVlcyhpbnQg
cHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7
Ci0gICAgYm9vbCBwYXJzZUNvbnRlbnQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwotICAg
IGJvb2wgcGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wg
cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBib29sKTsKKyAgICBib29sIHBhcnNlU2hvcnRoYW5k
KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmLCBib29sKTsKKyAg
ICBib29sIHBhcnNlNFZhbHVlcyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDU1NQcm9wZXJ0eUlEKiwg
Ym9vbCk7CisgICAgYm9vbCBwYXJzZUNvbnRlbnQoQ1NTUHJvcGVydHlJRCwgYm9vbCk7CisgICAg
Ym9vbCBwYXJzZVF1b3RlcyhDU1NQcm9wZXJ0eUlELCBib29sKTsKIAogICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlQXR0cihDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MpOwogCkBAIC0xMTAs
MTAgKzExMCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwYXJzZUZpbGxQb3NpdGlvbihDU1NQYXJz
ZXJWYWx1ZUxpc3QqLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwogCiAg
ICAgdm9pZCBwYXJzZUZpbGxSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1
ZT4mKTsKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZUZpbGxTaXplKGludCBwcm9wSWQs
IGJvb2wgJmFsbG93Q29tbWEpOworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlRmlsbFNp
emUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgJmFsbG93Q29tbWEpOwogCi0gICAgYm9vbCBw
YXJzZUZpbGxQcm9wZXJ0eShpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwg
UmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAgICBib29sIHBhcnNlRmls
bFNob3J0aGFuZChpbnQgcHJvcElkLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzLCBp
bnQgbnVtUHJvcGVydGllcywgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VGaWxsUHJv
cGVydHkoQ1NTUHJvcGVydHlJRCwgQ1NTUHJvcGVydHlJRCYsIENTU1Byb3BlcnR5SUQmLCBSZWZQ
dHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOworICAgIGJvb2wgcGFyc2VGaWxsU2hv
cnRoYW5kKENTU1Byb3BlcnR5SUQsIGNvbnN0IENTU1Byb3BlcnR5SUQqLCBpbnQsIGJvb2wpOwog
CiAgICAgdm9pZCBhZGRGaWxsVmFsdWUoUmVmUHRyPENTU1ZhbHVlPiYgbHZhbCwgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcnZhbCk7CiAKQEAgLTEzMSwxNyArMTMxLDE3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgcGFyc2VUcmFuc2Zvcm1PcmlnaW5TaG9ydGhhbmQoUmVmUHRyPENTU1ZhbHVlPiYsIFJl
ZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAgICAgYm9vbCBwYXJzZUN1Ymlj
QmV6aWVyVGltaW5nRnVuY3Rpb25WYWx1ZShDU1NQYXJzZXJWYWx1ZUxpc3QqJiBhcmdzLCBkb3Vi
bGUmIHJlc3VsdCk7Ci0gICAgYm9vbCBwYXJzZUFuaW1hdGlvblByb3BlcnR5KGludCBwcm9wSWQs
IFJlZlB0cjxDU1NWYWx1ZT4mKTsKKyAgICBib29sIHBhcnNlQW5pbWF0aW9uUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlVHJh
bnNpdGlvblNob3J0aGFuZChib29sIGltcG9ydGFudCk7CiAgICAgYm9vbCBwYXJzZUFuaW1hdGlv
blNob3J0aGFuZChib29sIGltcG9ydGFudCk7CiAKICNpZiBFTkFCTEUoQ1NTX0dSSURfTEFZT1VU
KQotICAgIGJvb2wgcGFyc2VHcmlkVHJhY2tMaXN0KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KTsKKyAgICBib29sIHBhcnNlR3JpZFRyYWNrTGlzdChDU1NQcm9wZXJ0eUlELCBib29sKTsKICNl
bmRpZgogCi0gICAgYm9vbCBwYXJzZURhc2hib2FyZFJlZ2lvbnMoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VEYXNoYm9hcmRSZWdpb25zKENTU1Byb3BlcnR5SUQs
IGJvb2wpOwogCi0gICAgYm9vbCBwYXJzZUNsaXBTaGFwZShpbnQgcHJvcElkLCBib29sIGltcG9y
dGFudCk7CisgICAgYm9vbCBwYXJzZUNsaXBTaGFwZShDU1NQcm9wZXJ0eUlELCBib29sKTsKIAog
ICAgIGJvb2wgcGFyc2VFeGNsdXNpb25TaGFwZShib29sIHNoYXBlSW5zaWRlLCBib29sIGltcG9y
dGFudCk7CiAgICAgUGFzc1JlZlB0cjxDU1NXcmFwU2hhcGU+IHBhcnNlRXhjbHVzaW9uU2hhcGVS
ZWN0KENTU1BhcnNlclZhbHVlTGlzdCogYXJncyk7CkBAIC0xNTIsNyArMTUyLDcgQEAgcHVibGlj
OgogICAgIGJvb2wgcGFyc2VGb250KGJvb2wgaW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlTGlzdD4gcGFyc2VGb250RmFtaWx5KCk7CiAKLSAgICBib29sIHBhcnNlQ291bnRlcihp
bnQgcHJvcElkLCBpbnQgZGVmYXVsdFZhbHVlLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBw
YXJzZUNvdW50ZXIoQ1NTUHJvcGVydHlJRCwgaW50LCBib29sKTsKICAgICBQYXNzUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZUNvdW50ZXJDb250ZW50KENTU1BhcnNlclZhbHVlTGlzdCogYXJncywgYm9v
bCBjb3VudGVycyk7CiAKICAgICBib29sIHBhcnNlQ29sb3JQYXJhbWV0ZXJzKENTU1BhcnNlclZh
bHVlKiwgaW50KiBjb2xvclZhbHVlcywgYm9vbCBwYXJzZUFscGhhKTsKQEAgLTE2OSwyNCArMTY5
LDI0IEBAIHB1YmxpYzoKICAgICBib29sIHBhcnNlRm9udEZhY2VVbmljb2RlUmFuZ2UoKTsKIAog
I2lmIEVOQUJMRShTVkcpCi0gICAgYm9vbCBwYXJzZVNWR1ZhbHVlKGludCBwcm9wSWQsIGJvb2wg
aW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlU1ZHVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNWR1BhaW50
KCk7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdDb2xvcigpOwogICAgIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU1ZHU3Ryb2tlRGFzaGFycmF5KCk7CiAjZW5kaWYKIAogICAg
IC8vIENTUzMgUGFyc2luZyBSb3V0aW5lcyAoZm9yIHByb3BlcnRpZXMgc3BlY2lmaWMgdG8gQ1NT
MykKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VTaGFkb3coQ1NTUGFyc2VyVmFs
dWVMaXN0KiwgaW50IHByb3BJZCk7Ci0gICAgYm9vbCBwYXJzZUJvcmRlckltYWdlKGludCBwcm9w
SWQsIFJlZlB0cjxDU1NWYWx1ZT4mLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKKyAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VTaGFkb3coQ1NTUGFyc2VyVmFsdWVMaXN0KiwgQ1NT
UHJvcGVydHlJRCk7CisgICAgYm9vbCBwYXJzZUJvcmRlckltYWdlKENTU1Byb3BlcnR5SUQsIFJl
ZlB0cjxDU1NWYWx1ZT4mLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKICAgICBib29sIHBhcnNl
Qm9yZGVySW1hZ2VSZXBlYXQoUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIGJvb2wgcGFyc2VCb3Jk
ZXJJbWFnZVNsaWNlKGludCBwcm9wSWQsIFJlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+
Jik7CisgICAgYm9vbCBwYXJzZUJvcmRlckltYWdlU2xpY2UoQ1NTUHJvcGVydHlJRCwgUmVmUHRy
PENTU0JvcmRlckltYWdlU2xpY2VWYWx1ZT4mKTsKICAgICBib29sIHBhcnNlQm9yZGVySW1hZ2VX
aWR0aChSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+Jik7CiAgICAgYm9vbCBwYXJzZUJvcmRlcklt
YWdlT3V0c2V0KFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mKTsKLSAgICBib29sIHBhcnNlQm9y
ZGVyUmFkaXVzKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlQm9y
ZGVyUmFkaXVzKENTU1Byb3BlcnR5SUQsIGJvb2wpOwogCiAgICAgYm9vbCBwYXJzZUFzcGVjdFJh
dGlvKGJvb2wgaW1wb3J0YW50KTsKIAotICAgIGJvb2wgcGFyc2VSZWZsZWN0KGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlUmVmbGVjdChDU1NQcm9wZXJ0eUlELCBi
b29sIGltcG9ydGFudCk7CiAKICAgICBQYXNzUmVmUHRyPENTU0ZsZXhWYWx1ZT4gcGFyc2VGbGV4
KENTU1BhcnNlclZhbHVlTGlzdCogYXJncyk7CiAKQEAgLTIxMyw4ICsyMTMsOCBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZVRyYW5zZm9ybSgp
OwotICAgIGJvb2wgcGFyc2VUcmFuc2Zvcm1PcmlnaW4oaW50IHByb3BJZCwgaW50JiBwcm9wSWQx
LCBpbnQmIHByb3BJZDIsIGludCYgcHJvcElkMywgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxD
U1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7Ci0gICAgYm9vbCBwYXJzZVBlcnNwZWN0aXZl
T3JpZ2luKGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCAgUmVmUHRyPENT
U1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKKyAgICBib29sIHBhcnNlVHJhbnNmb3JtT3Jp
Z2luKENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQxLCBDU1NQcm9w
ZXJ0eUlEJiBwcm9wSWQyLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQzLCBSZWZQdHI8Q1NTVmFsdWU+
JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKKyAgICBib29sIHBhcnNl
UGVyc3BlY3RpdmVPcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHBy
b3BJZDEsIENTU1Byb3BlcnR5SUQmIHByb3BJZDIsICBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRy
PENTU1ZhbHVlPiYpOwogCiAgICAgYm9vbCBwYXJzZVRleHRFbXBoYXNpc1N0eWxlKGJvb2wgaW1w
b3J0YW50KTsKIApAQCAtMjI2LDggKzIyNiw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgY3NzUmVn
aW9uc0VuYWJsZWQoKSBjb25zdDsKICAgICBib29sIHBhcnNlRmxvd1RocmVhZChjb25zdCBTdHJp
bmcmIGZsb3dOYW1lLCBEb2N1bWVudCopOwotICAgIGJvb2wgcGFyc2VGbG93VGhyZWFkKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBib29sIHBhcnNlUmVnaW9uVGhyZWFkKGludCBw
cm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlRmxvd1RocmVhZChDU1NQcm9w
ZXJ0eUlELCBib29sKTsKKyAgICBib29sIHBhcnNlUmVnaW9uVGhyZWFkKENTU1Byb3BlcnR5SUQs
IGJvb2wpOwogCiAgICAgYm9vbCBwYXJzZUZvbnRWYXJpYW50TGlnYXR1cmVzKGJvb2wgaW1wb3J0
YW50KTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHB1YmxpYzoKIAogICAgIENTU1BhcnNlck1vZGUg
bV9jc3NQYXJzZXJNb2RlOwogICAgIGJvb2wgbV9pbXBvcnRhbnQ7Ci0gICAgaW50IG1faWQ7Cisg
ICAgQ1NTUHJvcGVydHlJRCBtX2lkOwogICAgIENTU1N0eWxlU2hlZXQqIG1fc3R5bGVTaGVldDsK
ICAgICBSZWZQdHI8U3R5bGVSdWxlQmFzZT4gbV9ydWxlOwogICAgIFJlZlB0cjxTdHlsZUtleWZy
YW1lPiBtX2tleWZyYW1lOwpAQCAtMzY5LDcgKzM2OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0dlbmVyYXRlZEltYWdlVmFsdWUoQ1NTUGFyc2VyVmFsdWUqKSBjb25zdDsKICAgICBib29sIHBh
cnNlR2VuZXJhdGVkSW1hZ2UoQ1NTUGFyc2VyVmFsdWVMaXN0KiwgUmVmUHRyPENTU1ZhbHVlPiYp
OwogCi0gICAgYm9vbCBwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcElkLCBj
b25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxl
U2hlZXQpOworICAgIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqKTsKIAog
ICAgIGVudW0gU2l6ZVBhcmFtZXRlclR5cGUgewogICAgICAgICBOb25lLApAQCAtMzc5LDggKzM3
OSw4IEBAIHByaXZhdGU6CiAgICAgICAgIE9yaWVudGF0aW9uLAogICAgIH07CiAKLSAgICBib29s
IHBhcnNlUGFnZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVNp
emUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VQYWdlKENTU1By
b3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZVNpemUoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKICAgICBTaXplUGFyYW1ldGVyVHlw
ZSBwYXJzZVNpemVQYXJhbWV0ZXIoQ1NTVmFsdWVMaXN0KiBwYXJzZWRWYWx1ZXMsIENTU1BhcnNl
clZhbHVlKiB2YWx1ZSwgU2l6ZVBhcmFtZXRlclR5cGUgcHJldlBhcmFtVHlwZSk7CiAKICAgICBi
b29sIHBhcnNlRm9udEZhY2VTcmNVUkkoQ1NTVmFsdWVMaXN0Kik7CkBAIC00NzUsNyArNDc1LDcg
QEAgdm9pZCBjc3NQcm9wZXJ0eU5hbWVJT1NBbGlhc2luZyhjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIGNvbnN0IGNoYXIqJiBwcm9wZXJ0eU4KIGNsYXNzIFNob3J0aGFuZFNjb3BlIHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBTaG9ydGhhbmRTY29wZShDU1NQ
YXJzZXIqIHBhcnNlciwgaW50IHByb3BJZCkgOiBtX3BhcnNlcihwYXJzZXIpCisgICAgU2hvcnRo
YW5kU2NvcGUoQ1NTUGFyc2VyKiBwYXJzZXIsIENTU1Byb3BlcnR5SUQgcHJvcElkKSA6IG1fcGFy
c2VyKHBhcnNlcikKICAgICB7CiAgICAgICAgIGlmICghKG1fcGFyc2VyLT5tX2luUGFyc2VTaG9y
dGhhbmQrKykpCiAgICAgICAgICAgICBtX3BhcnNlci0+bV9jdXJyZW50U2hvcnRoYW5kID0gcHJv
cElkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5jcHAKaW5kZXggMTk1NzhkZTZhMWY1MTU2YjNj
ZjFhOWQ5YTFiZjE1MmMzM2ZmY2M2OC4uYWQ4Nzk3YWVjMDk1YmQzMjY3ZGY0OTQ2NGVjMDdiNWUz
ZGIxOTU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC01MCw3ICs1MCw3IEBA
IHZvaWQgQ1NTUHJvcGVydHk6OndyYXBWYWx1ZUluQ29tbWFTZXBhcmF0ZWRMaXN0KCkKIGVudW0g
TG9naWNhbEJveFNpZGUgeyBCZWZvcmVTaWRlLCBFbmRTaWRlLCBBZnRlclNpZGUsIFN0YXJ0U2lk
ZSB9OwogZW51bSBQaHlzaWNhbEJveFNpZGUgeyBUb3BTaWRlLCBSaWdodFNpZGUsIEJvdHRvbVNp
ZGUsIExlZnRTaWRlIH07CiAKLXN0YXRpYyBpbnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxC
b3hTaWRlIGxvZ2ljYWxTaWRlLCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhh
bmQpCitzdGF0aWMgQ1NTUHJvcGVydHlJRCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNp
ZGUgbG9naWNhbFNpZGUsIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkK
IHsKICAgICBpZiAoZGlyZWN0aW9uID09IExUUikgewogICAgICAgICBpZiAod3JpdGluZ01vZGUg
PT0gVG9wVG9Cb3R0b21Xcml0aW5nTW9kZSkgewpAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0YXRpYyBp
bnQgcmVzb2x2ZVRvUGh5c2ljYWxQcm9wZXJ0eShUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3Jp
dGluZ01vZGUgd3JpdGluCiAKIGVudW0gTG9naWNhbEV4dGVudCB7IExvZ2ljYWxXaWR0aCwgTG9n
aWNhbEhlaWdodCB9OwogCi1zdGF0aWMgaW50IHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoV3Jp
dGluZ01vZGUgd3JpdGluZ01vZGUsIExvZ2ljYWxFeHRlbnQgbG9naWNhbFNpZGUsIGNvbnN0IENT
U1Byb3BlcnR5SUQqIHByb3BlcnRpZXMpCitzdGF0aWMgQ1NTUHJvcGVydHlJRCByZXNvbHZlVG9Q
aHlzaWNhbFByb3BlcnR5KFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlLCBMb2dpY2FsRXh0ZW50IGxv
Z2ljYWxTaWRlLCBjb25zdCBDU1NQcm9wZXJ0eUlEKiBwcm9wZXJ0aWVzKQogewogICAgIGlmICh3
cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlIHx8IHdyaXRpbmdNb2RlID09IEJv
dHRvbVRvVG9wV3JpdGluZ01vZGUpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0aWVzW2xvZ2ljYWxT
aWRlXTsKQEAgLTE3MSw5ICsxNzEsOSBAQCBzdGF0aWMgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgYm9yZGVyRGlyZWN0aW9ucygpCiAgICAgcmV0dXJuIGJvcmRlckRpcmVjdGlvbnM7CiB9
CiAKLWludCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaW50IHBy
b3BlcnR5SUQsIFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW5nTW9k
ZSkKK0NTU1Byb3BlcnR5SUQgQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdy
aXRpbmdNb2RlIHdyaXRpbmdNb2RlKQogewotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJv
cGVydHlJRD4ocHJvcGVydHlJRCkpIHsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0TWFyZ2luRW5kOgogICAgICAgICByZXR1cm4gcmVzb2x2ZVRv
UGh5c2ljYWxQcm9wZXJ0eShkaXJlY3Rpb24sIHdyaXRpbmdNb2RlLCBFbmRTaWRlLCBtYXJnaW5T
aG9ydGhhbmQoKSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdE1hcmdpblN0YXJ0OgpAQCAt
MjUxLDkgKzI1MSw5IEBAIGludCBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24gZGlyCiAgICAgfQogfQogCi1ib29s
IENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHVuc2lnbmVkIHByb3BlcnR5SUQpCiti
b29sIENTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCkKIHsKLSAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5
SUQpKSB7CisgICAgc3dpdGNoIChwcm9wZXJ0eUlEKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUJv
cmRlckNvbGxhcHNlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJTcGFjaW5nOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlDYXB0aW9uU2lkZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKaW5kZXgg
Yjk0ZjkwYWQ5MGM2N2UxYmQ0YmNmY2RjNGE4MjE4NzUzYzU4ODU0Ni4uMTIyMGQxNzI3MjBmMzFk
ODg1ZTRiMDAzYjU0OTlmODBmNWQ4ZGY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1Byb3BlcnR5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgKQEAg
LTMyLDcgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NQcm9wZXJ0eSB7
CiBwdWJsaWM6Ci0gICAgQ1NTUHJvcGVydHkodW5zaWduZWQgcHJvcElELCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgaW50IHNob3J0aGFuZElEID0g
MCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQorICAgIENTU1Byb3BlcnR5KENTU1Byb3BlcnR5SUQg
cHJvcElELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxz
ZSwgaW50IHNob3J0aGFuZElEID0gMCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKQogICAgICAgICA6
IG1faWQocHJvcElEKQogICAgICAgICAsIG1fc2hvcnRoYW5kSUQoc2hvcnRoYW5kSUQpCiAgICAg
ICAgICwgbV9pbXBvcnRhbnQoaW1wb3J0YW50KQpAQCAtNTUsOCArNTUsOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHdyYXBWYWx1ZUluQ29tbWFTZXBhcmF0ZWRMaXN0KCk7CiAKLSAgICBzdGF0aWMg
aW50IHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBUZXh0RGly
ZWN0aW9uLCBXcml0aW5nTW9kZSk7Ci0gICAgc3RhdGljIGJvb2wgaXNJbmhlcml0ZWRQcm9wZXJ0
eSh1bnNpZ25lZCBwcm9wZXJ0eUlEKTsKKyAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCByZXNvbHZl
RGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBUZXh0RGlyZWN0aW9uLCBXcml0
aW5nTW9kZSk7CisgICAgc3RhdGljIGJvb2wgaXNJbmhlcml0ZWRQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEKTsKIAogcHJpdmF0ZToKICAgICAvLyBNYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBmaXRzIGlu
IDQgYnl0ZXMuIFJlYWxseS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApp
bmRleCA1ZTZkMGU5OGJiMzVjODQyOWUzNzE2MzZiMGI4NGRhNTg5ODVlODkyLi4wODVjZjc2OGZk
NzNhNjQxMzYwYTkzNWIwNTYzMjNjNGZmMThkMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCkBAIC0yNTkzLDcgKzI1OTMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0
b3I6OmFwcGx5UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBwcm9wZXJ0aWVzLCBT
dHlsZQogICAgICAgICAgICAgQVNTRVJUKCFjdXJyZW50LnZhbHVlKCktPmlzSW5oZXJpdGVkVmFs
dWUoKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpbnQgcHJv
cGVydHkgPSBjdXJyZW50LmlkKCk7CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBj
dXJyZW50LmlkKCk7CiAKICAgICAgICAgaWYgKGZpbHRlclJlZ2lvblByb3BlcnRpZXMgJiYgIUNT
U1N0eWxlU2VsZWN0b3I6OmlzVmFsaWRSZWdpb25TdHlsZVByb3BlcnR5KHByb3BlcnR5KSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjkyNyw3ICsyOTI3LDcgQEAgQ1NTU3R5bGVSdWxlKiBD
U1NTdHlsZVNlbGVjdG9yOjplbnN1cmVGdWxsQ1NTT01XcmFwcGVyRm9ySW5zcGVjdG9yKFN0eWxl
UnVsZSogcnUKICAgICByZXR1cm4gbV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcC5nZXQocnVs
ZSkuZ2V0KCk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eVRvU3R5
bGUoaW50IGlkLCBDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSkKK3ZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7CiAgICAgaW5pdEVsZW1lbnQoMCk7
CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZSgwLCBzdHlsZSk7CkBAIC0yOTM1LDE1ICsyOTM1LDE1
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eVRvU3R5bGUoaW50IGlkLCBD
U1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlCiAgICAgYXBwbHlQcm9wZXJ0eVRvQ3VycmVudFN0
eWxlKGlkLCB2YWx1ZSk7CiB9CiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eVRvQ3VycmVudFN0eWxlKGludCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQordm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlKQogewogICAgIGlmICh2YWx1ZSkKICAgICAgICAgYXBwbHlQcm9wZXJ0eShp
ZCwgdmFsdWUpOwogfQogCi1pbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShp
bnQgaWQpCitpbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkKQogewotICAgIHN3aXRjaChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihpZCkpIHsK
KyAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29s
b3I6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlCb3JkZXJMZWZ0Q29sb3I6CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlCb3JkZXJSaWdodENvbG9yOgpAQCAtMjk3Nyw5ICsyOTc3LDkgQEAgaW5s
aW5lIGJvb2wgaXNWYWxpZFZpc2l0ZWRMaW5rUHJvcGVydHkoaW50IGlkKQogCiAvLyBodHRwOi8v
ZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXJlZ2lvbnMvI3RoZS1hdC1yZWdpb24tc3R5bGUtcnVsZQog
Ly8gRklYTUU6IGFkZCBpbmNyZW1lbnRhbCBzdXBwb3J0IGZvciBvdGhlciByZWdpb24gc3R5bGlu
ZyBwcm9wZXJ0aWVzLgotaW5saW5lIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNWYWxpZFJlZ2lv
blN0eWxlUHJvcGVydHkoaW50IGlkKQoraW5saW5lIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6aXNW
YWxpZFJlZ2lvblN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCkKIHsKLSAgICBzd2l0Y2gg
KHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGlkKSkgeworICAgIHN3aXRjaCAoaWQpIHsKICAg
ICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yOgogICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICBkZWZhdWx0OgpAQCAtMzA2NCw3ICszMDY0LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlR3Jp
ZFBvc2l0aW9uKENTU1ZhbHVlKiB2YWx1ZSwgTGVuZ3RoJiBwb3NpdGlvbikKIH0KICNlbmRpZgog
Ci12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAq
dmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogewogICAgIGJvb2wgaXNJbmhlcml0ID0gbV9wYXJlbnRO
b2RlICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCk7CiAgICAgYm9vbCBpc0luaXRpYWwgPSB2
YWx1ZS0+aXNJbml0aWFsVmFsdWUoKSB8fCAoIW1fcGFyZW50Tm9kZSAmJiB2YWx1ZS0+aXNJbmhl
cml0ZWRWYWx1ZSgpKTsKQEAgLTMwNzYsMTMgKzMwNzYsMTEgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSA9IHN0YXRpY19jYXN0PENT
U1Byb3BlcnR5SUQ+KGlkKTsKLQotICAgIGlmIChpc0luaGVyaXQgJiYgbV9wYXJlbnRTdHlsZSAm
JiAhbV9wYXJlbnRTdHlsZS0+aGFzRXhwbGljaXRseUluaGVyaXRlZFByb3BlcnRpZXMoKSAmJiAh
Q1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkocHJvcGVydHkpKQorICAgIGlmIChpc0lu
aGVyaXQgJiYgbV9wYXJlbnRTdHlsZSAmJiAhbV9wYXJlbnRTdHlsZS0+aGFzRXhwbGljaXRseUlu
aGVyaXRlZFByb3BlcnRpZXMoKSAmJiAhQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHko
aWQpKQogICAgICAgICBtX3BhcmVudFN0eWxlLT5zZXRIYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJv
cGVydGllcygpOwogCiAgICAgLy8gY2hlY2sgbG9va3VwIHRhYmxlIGZvciBpbXBsZW1lbnRhdGlv
bnMgYW5kIHVzZSB3aGVuIGF2YWlsYWJsZQotICAgIGNvbnN0IFByb3BlcnR5SGFuZGxlciYgaGFu
ZGxlciA9IG1fYXBwbHlQcm9wZXJ0eS5wcm9wZXJ0eUhhbmRsZXIocHJvcGVydHkpOworICAgIGNv
bnN0IFByb3BlcnR5SGFuZGxlciYgaGFuZGxlciA9IG1fYXBwbHlQcm9wZXJ0eS5wcm9wZXJ0eUhh
bmRsZXIoaWQpOwogICAgIGlmIChoYW5kbGVyLmlzVmFsaWQoKSkgewogICAgICAgICBpZiAoaXNJ
bmhlcml0KQogICAgICAgICAgICAgaGFuZGxlci5hcHBseUluaGVyaXRWYWx1ZSh0aGlzKTsKQEAg
LTMxMDAsNyArMzA5OCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBsaXN0IHRo
YXQgbWFwcyB0aGUgQ1NTIHByb3BlcnRpZXMgaW50byB0aGVpciBjb3JyZXNwb25kaW5nIGZyb250
LWVuZAogICAgIC8vIFJlbmRlclN0eWxlIHZhbHVlcy4gIFNob3J0aGFuZHMgKGUuZy4gYm9yZGVy
LCBiYWNrZ3JvdW5kKSBvY2N1ciBpbiB0aGlzIGxpc3QgYXMgd2VsbCBhbmQKICAgICAvLyBhcmUg
b25seSBoaXQgd2hlbiBtYXBwaW5nICJpbmhlcml0IiBvciAiaW5pdGlhbCIgaW50byBmcm9udC1l
bmQgdmFsdWVzLgotICAgIHN3aXRjaCAocHJvcGVydHkpIHsKKyAgICBzd2l0Y2ggKGlkKSB7CiAv
LyBsaXN0cwogICAgIGNhc2UgQ1NTUHJvcGVydHlDb250ZW50OgogICAgICAgICAvLyBsaXN0IG9m
IHN0cmluZywgdXJpLCBjb3VudGVyLCBhdHRyLCBpCkBAIC0zNDYwLDcgKzM0NTgsNyBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSAqdmFsdWUp
CiAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQocmVmbGVjdFZhbHVlLT5vZmZzZXQo
KS0+Y29udmVydFRvTGVuZ3RoPEZpeGVkSW50ZWdlckNvbnZlcnNpb24gfCBQZXJjZW50Q29udmVy
c2lvbiB8IENhbGN1bGF0ZWRDb252ZXJzaW9uPihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHpvb21GYWN0b3IpKTsKICAgICAgICAgTmluZVBpZWNlSW1hZ2UgbWFzazsKICAgICAgICAgbWFz
ay5zZXRNYXNrRGVmYXVsdHMoKTsKLSAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2UocHJvcGVydHks
IHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNrKTsKKyAgICAgICAgbWFwTmluZVBpZWNlSW1hZ2Uo
aWQsIHJlZmxlY3RWYWx1ZS0+bWFzaygpLCBtYXNrKTsKICAgICAgICAgcmVmbGVjdGlvbi0+c2V0
TWFzayhtYXNrKTsKIAogICAgICAgICBtX3N0eWxlLT5zZXRCb3hSZWZsZWN0KHJlZmxlY3Rpb24u
cmVsZWFzZSgpKTsKQEAgLTM3NDIsNyArMzc0MCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0TWF4TG9naWNhbFdpZHRoOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhM
b2dpY2FsSGVpZ2h0OgogICAgIHsKLSAgICAgICAgaW50IG5ld0lkID0gQ1NTUHJvcGVydHk6OnJl
c29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KGlkLCBtX3N0eWxlLT5kaXJlY3Rpb24oKSwgbV9z
dHlsZS0+d3JpdGluZ01vZGUoKSk7CisgICAgICAgIENTU1Byb3BlcnR5SUQgbmV3SWQgPSBDU1NQ
cm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaWQsIG1fc3R5bGUtPmRpcmVj
dGlvbigpLCBtX3N0eWxlLT53cml0aW5nTW9kZSgpKTsKICAgICAgICAgQVNTRVJUKG5ld0lkICE9
IGlkKTsKICAgICAgICAgcmV0dXJuIGFwcGx5UHJvcGVydHkobmV3SWQsIHZhbHVlKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBlNGJiNTQxMDQzNTQ1YWQ5
NmNlMDczZDYxMjgxOTE5NzQ5YTczOTkzLi5mOTlhNjc4YjQ5ZGI1NjdjMTdjOWQ4ZThmMGI2NWYw
Y2IzYzhjYmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTIwMSw5
ICsyMDEsOSBAQCBwdWJsaWM6CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdHlsZShQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBzKSB7IG1fc3R5bGUgPSBzOyB9IC8vIFVzZWQgYnkgdGhlIGRvY3VtZW50
IHdoZW4gc2V0dGluZyB1cCBpdHMgcm9vdCBzdHlsZS4KIAotICAgIHZvaWQgYXBwbHlQcm9wZXJ0
eVRvU3R5bGUoaW50IGlkLCBDU1NWYWx1ZSosIFJlbmRlclN0eWxlKik7CisgICAgdm9pZCBhcHBs
eVByb3BlcnR5VG9TdHlsZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSosIFJlbmRlclN0eWxlKik7
CiAKLSAgICB2b2lkIGFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHlsZShpbnQgaWQsIENTU1ZhbHVl
Kik7CisgICAgdm9pZCBhcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoQ1NTUHJvcGVydHlJRCwg
Q1NTVmFsdWUqKTsKIAogICAgIHZvaWQgdXBkYXRlRm9udCgpOwogCkBAIC0zNTYsNyArMzU2LDcg
QEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8Ym9vbCBmaXJzdFBhc3M+CiAgICAgdm9pZCBhcHBs
eVByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogcHJvcGVydGllcywgU3R5bGVSdWxl
KiwgYm9vbCBpc0ltcG9ydGFudCwgYm9vbCBpbmhlcml0ZWRPbmx5LCBib29sIGZpbHRlclJlZ2lv
blByb3BlcnRpZXMpOwogCi0gICAgc3RhdGljIGJvb2wgaXNWYWxpZFJlZ2lvblN0eWxlUHJvcGVy
dHkoaW50IGlkKTsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlEKTsKIAogICAgIHZvaWQgbWF0Y2hQYWdlUnVsZXMoTWF0Y2hSZXN1bHQmLCBS
dWxlU2V0KiwgYm9vbCBpc0xlZnRQYWdlLCBib29sIGlzRmlyc3RQYWdlLCBjb25zdCBTdHJpbmcm
IHBhZ2VOYW1lKTsKICAgICB2b2lkIG1hdGNoUGFnZVJ1bGVzRm9yTGlzdChWZWN0b3I8U3R5bGVS
dWxlUGFnZSo+JiBtYXRjaGVkUnVsZXMsIGNvbnN0IFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mLCBi
b29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNGaXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUp
OwpAQCAtNDMwLDEwICs0MzAsMTAgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBib29sIGNhblNo
YXJlU3R5bGVXaXRoQ29udHJvbChTdHlsZWRFbGVtZW50KikgY29uc3Q7CiAKLSAgICB2b2lkIGFw
cGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSopOworICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShD
U1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICB2b2lkIGFw
cGx5U1ZHUHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSopOworICAgIHZvaWQgYXBwbHlTVkdQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogI2VuZGlmCiAKICAgICBQYXNzUmVmUHRy
PFN0eWxlSW1hZ2U+IGxvYWRQZW5kaW5nSW1hZ2UoU3R5bGVQZW5kaW5nSW1hZ2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5j
cHAKaW5kZXggNzhlMzUxNmMzZGMwNGQ3MzY4OTkyZjhhZDJiODBhZWMyOWI1ZmUyYS4uZTliNDFh
M2Y2NjE5ZTNiM2Q2Njg5MGFiZjczMjZkMzg3Njk2YzVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIwOSw3
ICsyMDksNyBAQCB2b2lkIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0UHJvcGVy
dHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbgogI2lmIEVOQUJMRShNVVRBVElPTl9P
QlNFUlZFUlMpCiAgICAgU3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUo
dGhpcyk7CiAjZW5kaWYKLSAgICBpbnQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVy
dHlOYW1lKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHBy
b3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm47CiAgICAg
Ym9vbCBpbXBvcnRhbnQgPSBwcmlvcml0eS5maW5kKCJpbXBvcnRhbnQiLCAwLCBmYWxzZSkgIT0g
bm90Rm91bmQ7CkBAIC0yMzAsNyArMjMwLDcgQEAgU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5bGVE
ZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUKICNp
ZiBFTkFCTEUoTVVUQVRJT05fT0JTRVJWRVJTKQogICAgIFN0eWxlQXR0cmlidXRlTXV0YXRpb25T
Y29wZSBtdXRhdGlvblNjb3BlKHRoaXMpOwogI2VuZGlmCi0gICAgaW50IHByb3BlcnR5SUQgPSBj
c3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
ID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggN2VmM2Iw
N2QzOWZiOGNmYTFjNDIzNjYxMzg2ZTkxZjVmYmQ4OGVmNy4uZDYwYmRmMjUxZmViNGRhNjJiZTdm
NTgzZjhmNDBlZDNmMmI4NTViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgUGFzc1Jl
ZlB0cjxTVkdQYWludD4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjphZGp1c3RTVkdQYWlu
dEZvckN1cnJlbnRDb2xvcigKICAgICByZXR1cm4gcGFpbnQucmVsZWFzZSgpOwogfQogCi1QYXNz
UmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFNWR1Byb3Bl
cnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBj
b25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxh
eW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fbm9kZS5nZXQo
KTsKICAgICBpZiAoIW5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwCmluZGV4IDQz
NGFkMmVmYmJmZGI1ZWU2ZDYxOTY2NjY0ZDhmMTRhNGRjZWUzODQuLmQzZWMwNmVlOTU4NzQxNzFl
OGJkZTY2ZGVhNmFiNDFmZDM5N2QwNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
VkdDU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3Bw
CkBAIC0zNyw3ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlU1ZHVmFsdWUoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCitib29sIENTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZShDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlID0gbV92
YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICBpZiAoIXZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDMxOGQ3MmI3MzcwNTUwZGE4ZDczMzY0ZDU3
MjJiNjY3YTZkZjdiNmYuLjU3NzQxMWFjMGE2MWFhZjAxZmYwNWVkMzA2MDc0ZjhkZmI3MTMzM2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTEwMiw3
ICsxMDIsNyBAQCBzdGF0aWMgQ29sb3IgY29sb3JGcm9tU1ZHQ29sb3JDU1NWYWx1ZShTVkdDb2xv
ciogc3ZnQ29sb3IsIGNvbnN0IENvbG9yJiBmZ0NvbG9yKQogICAgIHJldHVybiBjb2xvcjsKIH0K
IAotdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KGludCBpZCwgQ1NTVmFs
dWUqIHZhbHVlKQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KENTU1By
b3BlcnR5SUQgaWQsIENTU1ZhbHVlKiB2YWx1ZSkKIHsKICAgICBBU1NFUlQodmFsdWUpOwogICAg
IENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVWYWx1ZSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNldC5jcHAKaW5kZXggYTY3ODcxNDExOTQ0N2E4ZmFlYzI2Y2Y5Y2E1NjAz
ZWExMTljN2FmYy4uYThmMjE4NjI5NGE5N2I3ODkxMmI0OWFmZWY1Mzc5ODhiYzA3NzE4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcApAQCAtNDEzLDEzICs0MTMsMTMg
QEAgU3RyaW5nIFN0eWxlUHJvcGVydHlTZXQ6OmdldENvbW1vblZhbHVlKGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKICAgICByZXR1cm4gcmVzOwogfQogCi1QYXNzUmVm
UHRyPENTU1ZhbHVlPiBTdHlsZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBw
cm9wZXJ0eUlEKSBjb25zdAorUGFzc1JlZlB0cjxDU1NWYWx1ZT4gU3R5bGVQcm9wZXJ0eVNldDo6
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7CiAg
ICAgY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnR5ID0gZmluZFByb3BlcnR5V2l0aElkKHByb3Bl
cnR5SUQpOwogICAgIHJldHVybiBwcm9wZXJ0eSA/IHByb3BlcnR5LT52YWx1ZSgpIDogMDsKIH0K
IAotYm9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShpbnQgcHJv
cGVydHlJRCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlU2hvcnRoYW5kUHJvcGVydHko
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQg
c2hvcnRoYW5kID0gc2hvcnRoYW5kRm9yUHJvcGVydHkocHJvcGVydHlJRCk7CiAgICAgaWYgKCFz
aG9ydGhhbmQubGVuZ3RoKCkpCkBAIC00MjcsNyArNDI3LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5
U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCkKICAgICByZXR1cm4g
cmVtb3ZlUHJvcGVydGllc0luU2V0KHNob3J0aGFuZC5wcm9wZXJ0aWVzKCksIHNob3J0aGFuZC5s
ZW5ndGgoKSk7CiB9CiAKLWJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJvcGVydHkoaW50
IHByb3BlcnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBTdHJpbmcqIHJldHVyblRl
eHQpCiB7CiAgICAgaWYgKHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KHByb3BlcnR5SUQpKSB7CiAg
ICAgICAgIC8vIEZJWE1FOiBSZXR1cm4gYW4gZXF1aXZhbGVudCBzaG9ydGhhbmQgd2hlbiBwb3Nz
aWJsZS4KQEAgLTQ4Miw3ICs0ODIsNyBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OmlzUHJvcGVy
dHlJbXBsaWNpdChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0CiAgICAgcmV0dXJuIHBy
b3BlcnR5ID8gcHJvcGVydHktPmlzSW1wbGljaXQoKSA6IGZhbHNlOwogfQogCi1ib29sIFN0eWxl
UHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiti
b29sIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqIGNv
bnRleHRTdHlsZVNoZWV0KQogewogICAgIC8vIFNldHRpbmcgdGhlIHZhbHVlIHRvIGFuIGVtcHR5
IHN0cmluZyBqdXN0IHJlbW92ZXMgdGhlIHByb3BlcnR5IGluIGJvdGggSUUgYW5kIEdlY2tvLgog
ICAgIC8vIFNldHRpbmcgaXQgdG8gbnVsbCBzZWVtcyB0byBwcm9kdWNlIGxlc3MgY29uc2lzdGVu
dCByZXN1bHRzLCBidXQgd2UgdHJlYXQgaXQganVzdCB0aGUgc2FtZS4KQEAgLTQ5Niw3ICs0OTYs
NyBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcAogICAgIHJldHVybiBDU1NQYXJzZXI6OnBhcnNl
VmFsdWUodGhpcywgcHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSgp
LCBjb250ZXh0U3R5bGVTaGVldCk7CiB9CiAKLXZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBycFZhbHVlLCBib29s
IGltcG9ydGFudCkKK3ZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwcnBWYWx1ZSwgYm9vbCBpbXBv
cnRhbnQpCiB7CiAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBzaG9ydGhhbmQgPSBzaG9ydGhh
bmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKICAgICBpZiAoIXNob3J0aGFuZC5sZW5ndGgoKSkg
ewpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHko
Y29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5LCBDU1NQcm9wZXJ0eSogc2xvCiAgICAgbV9wcm9w
ZXJ0aWVzLmFwcGVuZChwcm9wZXJ0eSk7CiB9CiAKLWJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0
UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCwg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCitib29sIFN0eWxlUHJvcGVydHlTZXQ6
OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJv
b2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICBS
ZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlOyAgICAKICAgICBpZiAoRG9jdW1lbnQqIGRv
Y3VtZW50ID0gY29udGV4dFN0eWxlU2hlZXQgPyBjb250ZXh0U3R5bGVTaGVldC0+ZmluZERvY3Vt
ZW50KCkgOiAwKQpAQCAtNzI5LDcgKzcyOSw3IEBAIFN0cmluZyBTdHlsZVByb3BlcnR5U2V0Ojph
c1RleHQoKSBjb25zdAogICAgICAgICBpZiAodmFsdWUgPT0gImluaXRpYWwiICYmICFDU1NQcm9w
ZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShwcm9wZXJ0eUlEKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0UHJvcGVydHlOYW1lKHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQpKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0
UHJvcGVydHlOYW1lKHByb3BlcnR5SUQpKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZCgiOiAiKTsK
ICAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQocHJv
cC5pc0ltcG9ydGFudCgpID8gIiAhaW1wb3J0YW50IiA6ICIiKTsKQEAgLTg3MSw3ICs4NzEsNyBA
QCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVByb3BlcnRpZXNJblNldChjb25zdCBDU1NQ
cm9wZXJ0eUlEKiBzZXQsIHVuc2lnbmVkCiAgICAgcmV0dXJuIGNoYW5nZWQ7CiB9CiAKLWNvbnN0
IENTU1Byb3BlcnR5KiBTdHlsZVByb3BlcnR5U2V0OjpmaW5kUHJvcGVydHlXaXRoSWQoaW50IHBy
b3BlcnR5SUQpIGNvbnN0Citjb25zdCBDU1NQcm9wZXJ0eSogU3R5bGVQcm9wZXJ0eVNldDo6Zmlu
ZFByb3BlcnR5V2l0aElkKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKIHsKICAgICBm
b3IgKGludCBuID0gbV9wcm9wZXJ0aWVzLnNpemUoKSAtIDEgOyBuID49IDA7IC0tbikgewogICAg
ICAgICBpZiAocHJvcGVydHlJRCA9PSBtX3Byb3BlcnRpZXNbbl0uaWQoKSkKQEAgLTg4MCw3ICs4
ODAsNyBAQCBjb25zdCBDU1NQcm9wZXJ0eSogU3R5bGVQcm9wZXJ0eVNldDo6ZmluZFByb3BlcnR5
V2l0aElkKGludCBwcm9wZXJ0eUlEKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi1DU1NQcm9w
ZXJ0eSogU3R5bGVQcm9wZXJ0eVNldDo6ZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlE
KQorQ1NTUHJvcGVydHkqIFN0eWxlUHJvcGVydHlTZXQ6OmZpbmRQcm9wZXJ0eVdpdGhJZChDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgZm9yIChpbnQgbiA9IG1fcHJvcGVydGllcy5z
aXplKCkgLSAxIDsgbiA+PSAwOyAtLW4pIHsKICAgICAgICAgaWYgKHByb3BlcnR5SUQgPT0gbV9w
cm9wZXJ0aWVzW25dLmlkKCkpCkBAIC04OTcsNyArODk3LDcgQEAgYm9vbCBTdHlsZVByb3BlcnR5
U2V0Ojpwcm9wZXJ0eU1hdGNoZXMoY29uc3QgQ1NTUHJvcGVydHkqIHByb3BlcnR5KSBjb25zdAog
ICAgIAogdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhj
b25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKLSAgICBWZWN0b3I8aW50PiBwcm9wZXJ0
aWVzVG9SZW1vdmU7CisgICAgVmVjdG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRpZXNUb1JlbW92
ZTsKICAgICBzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHBy
b3BlcnR5ID0gbV9wcm9wZXJ0aWVzW2ldOwpAQCAtOTExLDcgKzkxMSw3IEBAIHZvaWQgU3R5bGVQ
cm9wZXJ0eVNldDo6cmVtb3ZlRXF1aXZhbGVudFByb3BlcnRpZXMoY29uc3QgU3R5bGVQcm9wZXJ0
eVNldCogc3R5bGUpCiAKIHZvaWQgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlRXF1aXZhbGVudFBy
b3BlcnRpZXMoY29uc3QgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiB7Ci0gICAgVmVjdG9y
PGludD4gcHJvcGVydGllc1RvUmVtb3ZlOworICAgIFZlY3RvcjxDU1NQcm9wZXJ0eUlEPiBwcm9w
ZXJ0aWVzVG9SZW1vdmU7CiAgICAgc2l6ZV90IHNpemUgPSBtX3Byb3BlcnRpZXMuc2l6ZSgpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGNvbnN0IENT
U1Byb3BlcnR5JiBwcm9wZXJ0eSA9IG1fcHJvcGVydGllc1tpXTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVQcm9wZXJ0eVNldC5oCmluZGV4IGExYTE3ZmI1ZDczZGY3ZGVhZjlhMDI0NWJlOGNmZDdhMGU4
ODEwMmEuLjkwOGFiMjkyNTE4MjBkOGRiOTdlNzE3NjZhZDFjMTkyOTZiNzNmMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaApAQCAtNjEsMjEgKzYxLDIxIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2hyaW5rVG9GaXQoKSB7IG1fcHJvcGVydGllcy5zaHJpbmtUb0ZpdCgpOyB9
CiAKLSAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9w
ZXJ0eUlEKSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRQcm9wZXJ0eUNTU1Zh
bHVlKENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIFN0cmluZyBnZXRQcm9wZXJ0eVZhbHVlKENT
U1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgcHJvcGVydHlJc0ltcG9ydGFudChDU1NQcm9w
ZXJ0eUlEKSBjb25zdDsKICAgICBDU1NQcm9wZXJ0eUlEIGdldFByb3BlcnR5U2hvcnRoYW5kKENT
U1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIGJvb2wgaXNQcm9wZXJ0eUltcGxpY2l0KENTU1Byb3Bl
cnR5SUQpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZXhwYW5kIHNob3J0aGFuZCBwcm9wZXJ0aWVz
IGludG8gbXVsdGlwbGUgcHJvcGVydGllcy4KLSAgICBib29sIHNldFByb3BlcnR5KGludCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCA9IDApOwotICAgIHZvaWQgc2V0UHJvcGVydHko
aW50IHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCA9IGZh
bHNlKTsKKyAgICBib29sIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYs
IGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0
ID0gMCk7CisgICAgdm9pZCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBQYXNzUmVmUHRyPENT
U1ZhbHVlPiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAKICAgICAvLyBUaGVzZSBkbyBub3Qu
IEZJWE1FOiBUaGlzIGlzIHRvbyBtZXNzeSwgd2UgY2FuIGRvIGJldHRlci4KLSAgICBib29sIHNl
dFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBpbnQgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFs
c2UsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7CisgICAgYm9vbCBzZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBpbnQsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UsIENTU1N0
eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShj
b25zdCBDU1NQcm9wZXJ0eSYsIENTU1Byb3BlcnR5KiBzbG90ID0gMCk7CiAgICAgCi0gICAgYm9v
bCByZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgU3RyaW5nKiByZXR1cm5UZXh0ID0gMCk7
CisgICAgYm9vbCByZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBTdHJpbmcqIHJldHVyblRl
eHQgPSAwKTsKIAogICAgIHZvaWQgcGFyc2VEZWNsYXJhdGlvbihjb25zdCBTdHJpbmcmIHN0eWxl
RGVjbGFyYXRpb24sIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKIApAQCAtMTI4
LDExICsxMjgsMTEgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgZm9udFZhbHVlKCkgY29uc3Q7CiAg
ICAgYm9vbCBhcHBlbmRGb250TG9uZ2hhbmRWYWx1ZUlmRXhwbGljaXQoQ1NTUHJvcGVydHlJRCwg
U3RyaW5nQnVpbGRlciYpIGNvbnN0OwogCi0gICAgYm9vbCByZW1vdmVTaG9ydGhhbmRQcm9wZXJ0
eShpbnQgcHJvcGVydHlJRCk7CisgICAgYm9vbCByZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlEKTsKICAgICBib29sIHByb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9wZXJ0eSop
IGNvbnN0OwogCi0gICAgY29uc3QgQ1NTUHJvcGVydHkqIGZpbmRQcm9wZXJ0eVdpdGhJZChpbnQg
cHJvcGVydHlJRCkgY29uc3Q7Ci0gICAgQ1NTUHJvcGVydHkqIGZpbmRQcm9wZXJ0eVdpdGhJZChp
bnQgcHJvcGVydHlJRCk7CisgICAgY29uc3QgQ1NTUHJvcGVydHkqIGZpbmRQcm9wZXJ0eVdpdGhJ
ZChDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBDU1NQcm9wZXJ0eSogZmluZFByb3BlcnR5V2l0
aElkKENTU1Byb3BlcnR5SUQpOwogCiAgICAgVmVjdG9yPENTU1Byb3BlcnR5LCA0PiBtX3Byb3Bl
cnRpZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hv
cnRoYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmNw
cAppbmRleCBiNGRlMTE3MjEyYjcxNzcyZDIxMWM2Zjk3Y2FmNzIxYjk5NGFhYTcyLi4xYWFlNDhk
OTU3NzllYWY1MjU0MzhkOTBkMzg5M2UwNTJlNDlhOTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3BwCkBAIC00MTYsNyArNDE2LDcgQEAgY29uc3Qg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgd2Via2l0V3JhcFNob3J0aGFuZCgpCiB9CiAKIC8vIFJl
dHVybnMgYW4gZW1wdHkgbGlzdCBpZiB0aGUgcHJvcGVydHkgaXMgbm90IGEgc2hvcnRoYW5kCi1j
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9ydGhhbmRGb3JQcm9wZXJ0eShpbnQgcHJv
cGVydHlJRCkKK2NvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZEZvclByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBzd2l0Y2ggKHByb3BlcnR5SUQp
IHsKICAgICBjYXNlIENTU1Byb3BlcnR5QmFja2dyb3VuZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5oCmluZGV4IDIxODgzM2RjOGU0NzNjMGM3Nzc2OTk1NGQ4
ZDFmMDVlYzA5YjNhNDAuLjE3NWUzZTFlNWI2ZmE5MjgzMmFjNWNkNGUwMjMwZTA0ZmMyMTBlMDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQuaApAQCAtOTks
NyArOTksNyBAQCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRUcmFuc2Zvcm1P
cmlnaW5TaG9ydGhhbmQoKTsKIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHdlYmtpdFdy
YXBTaG9ydGhhbmQoKTsKIAogLy8gUmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0
eSBpcyBub3QgYSBzaG9ydGhhbmQKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0
aGFuZEZvclByb3BlcnR5KGludCk7Citjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBzaG9y
dGhhbmRGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKaW5kZXggNTViYzQxZDQzNTFjYTY4
MzZiYjU0NGUxNzU0MjUwZDk0MWRhYzcxMS4uNjQyOTIwNGJkMjdmMTY2ZDNlMzg1ZmY5YzRiN2I4
ZDJmMGE1YmI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcApAQCAtMjYsNiAr
MjYsNyBAQAogCiAjaW5jbHVkZSAiQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1
ZS5oIgorI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNl
bGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkNTU1ZhbHVl
S2V5d29yZHMuaCIKQEAgLTE0NSwyMSArMTQ2LDIxIEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6aW5s
aW5lU3R5bGVDaGFuZ2VkKCkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFs
aWRhdGVTdHlsZUF0dHIoZG9jdW1lbnQoKSwgdGhpcyk7CiB9CiAgICAgCi1ib29sIFN0eWxlZEVs
ZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGludCBpZGVudGlm
aWVyLCBib29sIGltcG9ydGFudCkKK2Jvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyLCBib29sIGlt
cG9ydGFudCkKIHsKICAgICBlbnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFibGVJbmxp
bmVTdHlsZSh0aGlzKS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgZG9jdW1lbnQoKS0+Y3NzVmFs
dWVQb29sKCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZGVudGlmaWVyKSwgaW1wb3J0YW50KTsK
ICAgICBpbmxpbmVTdHlsZUNoYW5nZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBT
dHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBkb3Vi
bGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCwgYm9vbCBpbXBvcnRh
bnQpCitib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMgdW5pdCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgZW5zdXJlQXR0cmlidXRlRGF0YSgpLT5l
bnN1cmVNdXRhYmxlSW5saW5lU3R5bGUodGhpcyktPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIGRv
Y3VtZW50KCktPmNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVWYWx1ZSh2YWx1ZSwgdW5pdCksIGltcG9y
dGFudCk7CiAgICAgaW5saW5lU3R5bGVDaGFuZ2VkKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCitib29sIFN0eWxlZEVsZW1l
bnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKICAgICBib29sIGNoYW5nZXMgPSBl
bnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKS0+c2V0
UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgZG9jdW1lbnQoKS0+ZWxlbWVu
dFNoZWV0KCkpOwogICAgIGlmIChjaGFuZ2VzKQpAQCAtMTY3LDcgKzE2OCw3IEBAIGJvb2wgU3R5
bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwKICAgICByZXR1cm4gY2hhbmdlczsKIH0KIAotYm9vbCBTdHlsZWRFbGVt
ZW50OjpyZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQorYm9vbCBTdHls
ZWRFbGVtZW50OjpyZW1vdmVJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCkKIHsKICAgICBTdHlsZVByb3BlcnR5U2V0KiBpbmxpbmVTdHlsZSA9IGF0dHJpYnV0ZURh
dGEoKSA/IGF0dHJpYnV0ZURhdGEoKS0+aW5saW5lU3R5bGUoKSA6IDA7CiAgICAgaWYgKCFpbmxp
bmVTdHlsZSkKQEAgLTI3OCwxMiArMjc5LDEyIEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6dXBkYXRl
QXR0cmlidXRlU3R5bGUoKQogICAgICAgICBjYWNoZUl0ZXJhdG9yLT5zZWNvbmQgPSBuZXdFbnRy
eS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb0F0dHJp
YnV0ZVN0eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBpbnQgcHJvcGVydHlJRCwgaW50IGlk
ZW50aWZpZXIpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHls
ZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBpbnQg
aWRlbnRpZmllcikKIHsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgZG9jdW1l
bnQoKS0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShpZGVudGlmaWVyKSk7
CiB9CiAKLXZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0
eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBpbnQgcHJvcGVydHlJRCwgZG91YmxlIHZhbHVlLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQpCit2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFBy
b3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXMgdW5pdCkKIHsKICAgICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgZG9jdW1lbnQo
KS0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZVZhbHVlKHZhbHVlLCB1bml0KSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1N0eWxlZEVsZW1lbnQuaAppbmRleCA5YWU3YzFkNjFiNjllODhhNDlkZGUyNmIyOGU1ZTQ3
YmIxNGJiNmM3Li5kMWQyMDhmYzNmZGY2OWIyZjVjMjFmOWUzZDIwODY3MzM4ZDU5YzdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKQEAgLTQ0LDEwICs0NCwxMCBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eVNldCogZW5zdXJlSW5saW5lU3R5bGUoKSB7IHJldHVybiBl
bnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZUlubGluZVN0eWxlKHRoaXMpOyB9CiAgICAgCiAg
ICAgLy8gVW5saWtlIFN0eWxlUHJvcGVydHlTZXQgc2V0dGVycywgdGhlc2UgaW1wbGVtZW50IGlu
dmFsaWRhdGlvbi4KLSAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoaW50IHByb3BlcnR5
SUQsIGludCBpZGVudGlmaWVyLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKLSAgICBib29sIHNl
dElubGluZVN0eWxlUHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcywgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7Ci0gICAgYm9v
bCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKLSAgICBib29sIHJlbW92ZUlubGluZVN0eWxl
UHJvcGVydHkoaW50IHByb3BlcnR5SUQpOworICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlELCBpbnQsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wg
c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBkb3VibGUsIENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXMsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wgc2V0
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sIGlt
cG9ydGFudCA9IGZhbHNlKTsKKyAgICBib29sIHJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoQ1NT
UHJvcGVydHlJRCk7CiAgICAgCiAgICAgdmlydHVhbCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZSgpIE9WRVJSSURFOwogCkBAIC02OSw5ICs2OSw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1
YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgYWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0
eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIpOwot
ICAgIHZvaWQgYWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBp
bnQgcHJvcGVydHlJRCwgZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
KTsKLSAgICB2b2lkIGFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0
KiwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgYWRkUHJv
cGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBp
bnQpOworICAgIHZvaWQgYWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0eWxlUHJvcGVydHlT
ZXQqLCBDU1NQcm9wZXJ0eUlELCBkb3VibGUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMp
OworICAgIHZvaWQgYWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0eWxlUHJvcGVydHlTZXQq
LCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRT
dWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIApAQCAt
MTEzLDcgKzExMyw3IEBAIGlubGluZSBTdHlsZVByb3BlcnR5U2V0KiBTdHlsZWRFbGVtZW50Ojph
dHRyaWJ1dGVTdHlsZSgpCiAgICAgcmV0dXJuIGF0dHJpYnV0ZURhdGEoKSA/IGF0dHJpYnV0ZURh
dGEoKS0+YXR0cmlidXRlU3R5bGUoKSA6IDA7CiB9CiAKLWlubGluZSB2b2lkIFN0eWxlZEVsZW1l
bnQ6OmFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHlsZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwg
aW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCitpbmxpbmUgdm9pZCBTdHlsZWRF
bGVtZW50OjphZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5
bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlLCBkb2N1bWVudCgp
LT5lbGVtZW50U2hlZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKaW5kZXggMDlhNDUwZGQ2OThiMDgyODcyOTI1ODI4M2E4ZmEyNjNiZGI3NTI4NC4uOWRkM2Nl
NDAzMTk0Y2M0YTczMzNjNmFjNGJkYjlhM2EzMDBiMjhiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHByb3RlY3RlZDoKICAgICBI
VE1MRWxlbWVudEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlJRCk7CiAgICAgSFRNTEVsZW1lbnRFcXVp
dmFsZW50KENTU1Byb3BlcnR5SUQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpOwogICAg
IEhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlELCBpbnQgcHJpbWl0aXZlVmFsdWUs
IGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUpOwotICAgIGNvbnN0IGludCBtX3Byb3BlcnR5
SUQ7CisgICAgY29uc3QgQ1NTUHJvcGVydHlJRCBtX3Byb3BlcnR5SUQ7CiAgICAgY29uc3QgUmVm
UHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBtX3ByaW1pdGl2ZVZhbHVlOwogICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUqIG1fdGFnTmFtZTsgLy8gV2UgY2FuIHN0b3JlIGEgcG9pbnRlciBiZWNhdXNlIEhU
TUwgdGFnIG5hbWVzIGFyZSBjb25zdCBnbG9iYWwuCiB9OwpAQCAtMzMyLDcgKzMzMiw3IEBAIEVk
aXRpbmdTdHlsZTo6RWRpdGluZ1N0eWxlKGNvbnN0IENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxl
KQogICAgIGV4dHJhY3RGb250U2l6ZURlbHRhKCk7CiB9CiAKLUVkaXRpbmdTdHlsZTo6RWRpdGlu
Z1N0eWxlKGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKQorRWRpdGluZ1N0eWxl
OjpFZGl0aW5nU3R5bGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZh
bHVlKQogICAgIDogbV9tdXRhYmxlU3R5bGUoMCkKICAgICAsIG1fc2hvdWxkVXNlRml4ZWREZWZh
dWx0Rm9udFNpemUoZmFsc2UpCiAgICAgLCBtX2ZvbnRTaXplRGVsdGEoTm9Gb250RGVsdGEpCkBA
IC00MTEsNyArNDExLDcgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVRleHRGaWxsQW5kU3Ry
b2tlQ29sb3JzSWZOZWVkZWQoUmVuZGVyU3R5bGUqIHJlbmRlclN0eWwKICAgICAgICAgbV9tdXRh
YmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9y
KTsKIH0KIAotdm9pZCBFZGl0aW5nU3R5bGU6OnNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCkKK3ZvaWQgRWRpdGluZ1N0eWxlOjpz
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IGJvb2wgaW1wb3J0YW50KQogewogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCiAgICAgICAgIG1f
bXV0YWJsZVN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuaAppbmRleCBjMjEzMDM2ZTEyNGZjMDc0ZWFhYWY3NTM5ZTE0NjI0
NTYyYWNlZDZjLi5kNmRmNTE4NzU1MTNmODcyZTU5ZDI4Mjc5YjNkODI5ZDNkZjRmZDAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEVkaXRpbmdTdHlsZShzdHlsZSkpOwogICAg
IH0KIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVkaXRpbmdTdHlsZT4gY3JlYXRlKGludCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEVkaXRp
bmdTdHlsZT4gY3JlYXRlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRWRpdGluZ1N0eWxlKHBy
b3BlcnR5SUQsIHZhbHVlKSk7CiAgICAgfQpAQCAtMTUyLDEwICsxNTIsMTAgQEAgcHJpdmF0ZToK
ICAgICBFZGl0aW5nU3R5bGUoY29uc3QgUG9zaXRpb24mLCBQcm9wZXJ0aWVzVG9JbmNsdWRlKTsK
ICAgICBFZGl0aW5nU3R5bGUoY29uc3QgU3R5bGVQcm9wZXJ0eVNldCopOwogICAgIEVkaXRpbmdT
dHlsZShjb25zdCBDU1NTdHlsZURlY2xhcmF0aW9uKik7Ci0gICAgRWRpdGluZ1N0eWxlKGludCBw
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICBFZGl0aW5nU3R5bGUoQ1NTUHJv
cGVydHlJRCwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBpbml0KE5vZGUqLCBQcm9wZXJ0aWVz
VG9JbmNsdWRlKTsKICAgICB2b2lkIHJlbW92ZVRleHRGaWxsQW5kU3Ryb2tlQ29sb3JzSWZOZWVk
ZWQoUmVuZGVyU3R5bGUqKTsKLSAgICB2b2lkIHNldFByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsKKyAgICB2b2lkIHNl
dFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50ID0g
ZmFsc2UpOwogICAgIHZvaWQgcmVwbGFjZUZvbnRTaXplQnlLZXl3b3JkSWZQb3NzaWJsZShSZW5k
ZXJTdHlsZSosIENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbiopOwogICAgIHZvaWQgZXh0cmFj
dEZvbnRTaXplRGVsdGEoKTsKICAgICBUcmlTdGF0ZSB0cmlTdGF0ZU9mU3R5bGUoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGVUb0NvbXBhcmUsIFNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGll
cykgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMWNjMThiNzkyMWVjNWVj
MDVjZTczYmEzMTVlMTAxY2M4YWMzYzQ2Ny4uYmU3MTA5MjU3MTA0OTA4OTY3MmJiZTViYTk4OWY4
OWU2MjEzMTRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNzMxLDEzICs3MzEs
MTMgQEAgdm9pZCBFZGl0b3I6OmFwcGx5UGFyYWdyYXBoU3R5bGVUb1NlbGVjdGlvbihTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSwgRWRpdEFjdGlvbgogICAgICAgICBhcHBseVBhcmFncmFwaFN0eWxl
KHN0eWxlLCBlZGl0aW5nQWN0aW9uKTsKIH0KIAotYm9vbCBFZGl0b3I6OnNlbGVjdGlvblN0YXJ0
SGFzU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Citib29s
IEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKHByb3BlcnR5SUQsIHZhbHVlKS0+dHJpU3RhdGVPZlN0eWxlKAogICAgICAgICBFZGl0
aW5nU3R5bGU6OnN0eWxlQXRTZWxlY3Rpb25TdGFydChtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2Vs
ZWN0aW9uKCksIHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmdldCgp
KTsKIH0KIAotVHJpU3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZShpbnQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK1RyaVN0YXRlIEVkaXRvcjo6c2VsZWN0aW9u
SGFzU3R5bGUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAogewogICAgIHJldHVybiBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwcm9wZXJ0eUlELCB2YWx1
ZSktPnRyaVN0YXRlT2ZTdHlsZShtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggMmM0M2UyNjAzOGZhYzQ4Mzk4NTZlOWMyZDJj
MWY4YmNiNDgwNzE1My4uYWJmMjY0MWZkZTE1OGM4OTRiYTlhMjE5NTVmZWQwMTBmYzkwNjk4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0xMzYsOCArMTM2LDggQEAgcHVibGljOgogICAg
IHZvaWQgcmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBv
bGRTZWxlY3Rpb24pOwogICAgIHZvaWQgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIGVuZGluZ1NlbGVjdGlvbik7CiAKLSAgICBib29sIHNlbGVjdGlvblN0
YXJ0SGFzU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Owot
ICAgIFRyaVN0YXRlIHNlbGVjdGlvbkhhc1N0eWxlKGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJp
bmcmIHZhbHVlKSBjb25zdDsKKyAgICBib29sIHNlbGVjdGlvblN0YXJ0SGFzU3R5bGUoQ1NTUHJv
cGVydHlJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFz
U3R5bGUoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgU3RyaW5nIHNl
bGVjdGlvblN0YXJ0Q1NTUHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEKTsKICAgICAKICAgICBU
cmlTdGF0ZSBzZWxlY3Rpb25Vbm9yZGVyZWRMaXN0U3RhdGUoKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDE5ODc3MjkyZmUyZjQwZjU5MGFkNzUw
NzNjM2FkOGMwOTU0ZGI4YzguLmEyZjE0N2VhMmUzZWZlMWRmZTNlODc0MTI2YzVkODJiZDYzMTE3
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAtMTE0LDE0
ICsxMTQsMTQgQEAgc3RhdGljIGJvb2wgYXBwbHlDb21tYW5kVG9GcmFtZShGcmFtZSogZnJhbWUs
IEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWMKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQorc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUo
RnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rp
b24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVl
KQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxlUHJvcGVydHlT
ZXQ6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBwcm9wZXJ0
eVZhbHVlKTsKICAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBh
Y3Rpb24sIHN0eWxlLmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUo
RnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rp
b24sIGludCBwcm9wZXJ0eUlELCBpbnQgcHJvcGVydHlWYWx1ZSkKK3N0YXRpYyBib29sIGV4ZWN1
dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVk
aXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGludCBwcm9wZXJ0eVZh
bHVlKQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxlUHJvcGVy
dHlTZXQ6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBwcm9w
ZXJ0eVZhbHVlKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlT
dHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aQog
Ly8gRklYTUU6IGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdCBkb2VzIG5vdCBoYW5kbGUgY29tcGxp
Y2F0ZWQgY2FzZXMgc3VjaCBhcyA8Yj48dT5oZWxsbzwvdT53b3JsZDwvYj4gcHJvcGVybHkuCiAv
LyAgICAgICAgVGhpcyBmdW5jdGlvbiBtdXN0IHVzZSBFZGl0b3I6OnNlbGVjdGlvbkhhc1N0eWxl
IHRvIGRldGVybWluZSB0aGUgY3VycmVudCBzdHlsZSBidXQgd2UgY2Fubm90IGZpeCB0aGlzCiAv
LyAgICAgICAgdW50aWwgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI3
ODE4IGlzIHJlc29sdmVkLgotc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0KEZy
YW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9u
LCBpbnQgcHJvcGVydHlJRCwgQ1NTVmFsdWUqIHZhbHVlKQorc3RhdGljIGJvb2wgZXhlY3V0ZVRv
Z2dsZVN0eWxlSW5MaXN0KEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2Us
IEVkaXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIENTU1ZhbHVlKiB2
YWx1ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8RWRpdGluZ1N0
eWxlPiBzZWxlY3Rpb25TdHlsZSA9IEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0
KGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkpOwpAQCAtMTU2LDcgKzE1Niw3IEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdChGcmFtZSogZnJhbWUsIEVkaXRvckNv
bW1hbmRTb3VyY2Ugc291cmNlLCBFCiAgICAgcmV0dXJuIGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJh
bWUsIHNvdXJjZSwgYWN0aW9uLCBuZXdNdXRhYmxlU3R5bGUuZ2V0KCkpOwogfQogCi1zdGF0aWMg
Ym9vbCBleGVjdXRlVG9nZ2xlU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBv
ZmZWYWx1ZSwgY29uc3QgY2hhciogb25WYWx1ZSkKK3N0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVT
dHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9u
IGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBvZmZWYWx1ZSwg
Y29uc3QgY2hhciogb25WYWx1ZSkKIHsKICAgICAvLyBTdHlsZSBpcyBjb25zaWRlcmVkIHByZXNl
bnQgd2hlbgogICAgIC8vIE1hYzogcHJlc2VudCBhdCB0aGUgYmVnaW5uaW5nIG9mIHNlbGVjdGlv
bgpAQCAtMTcyLDcgKzE3Miw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZShGcmFt
ZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0CiAgICAgcmV0dXJu
IGFwcGx5Q29tbWFuZFRvRnJhbWUoZnJhbWUsIHNvdXJjZSwgYWN0aW9uLCBzdHlsZS0+c3R5bGUo
KSk7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKEZyYW1lKiBm
cmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBpbnQg
cHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQorc3RhdGljIGJvb2wgZXhl
Y3V0ZUFwcGx5UGFyYWdyYXBoU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNl
IHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eVZhbHVlKQogewogICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0
PiBzdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNyZWF0ZSgpOwogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0
aWMgYm9vbCBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KEZyYW1lKiBmcmFtZSwgVGV4dEdy
YW51bGFyaXR5IGdyYW51bGFyaQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgVHJpU3Rh
dGUgc3RhdGVTdHlsZShGcmFtZSogZnJhbWUsIGludCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBk
ZXNpcmVkVmFsdWUpCitzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHlsZShGcmFtZSogZnJhbWUsIENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgY2hhciogZGVzaXJlZFZhbHVlKQogewogICAg
IGlmIChmcmFtZS0+ZWRpdG9yKCktPmJlaGF2aW9yKCkuc2hvdWxkVG9nZ2xlU3R5bGVCYXNlZE9u
U3RhcnRPZlNlbGVjdGlvbigpKQogICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5zZWxl
Y3Rpb25TdGFydEhhc1N0eWxlKHByb3BlcnR5SUQsIGRlc2lyZWRWYWx1ZSkgPyBUcnVlVHJpU3Rh
dGUgOiBGYWxzZVRyaVN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9t
YXJrdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IDA1Y2Rl
NGE2M2VhYjcxODk0MmE2MGQ3MTk0MTcxOTNmZTBjZDFmOWIuLjM2NGExN2M1YzgwMjcwNWU3Njll
MzcyYTQ2ZTVjZDZlZDQ2NmIzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTcw
LDcgKzcwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCi1zdGF0aWMgYm9vbCBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKFN0eWxlUHJv
cGVydHlTZXQqLCBpbnQgcHJvcGVydHlJRCk7CitzdGF0aWMgYm9vbCBwcm9wZXJ0eU1pc3NpbmdP
ckVxdWFsVG9Ob25lKFN0eWxlUHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlEKTsKIAogY2xhc3Mg
QXR0cmlidXRlQ2hhbmdlIHsKIHB1YmxpYzoKQEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgaW5s
aW5lIE5vZGUqIGFuY2VzdG9yVG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlV2l0aE5vUmVu
ZGVyZXIoTm9kZSogYwogICAgIHJldHVybiBhbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBw
ZWFyYW5jZUZvckJsb2NrKGNvbW1vbkFuY2VzdG9yQmxvY2spOwogfQogCi1zdGF0aWMgYm9vbCBw
cm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBpbnQg
cHJvcGVydHlJRCkKK3N0YXRpYyBib29sIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoU3R5
bGVQcm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBp
ZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuY3BwCmluZGV4IDlkNzk1NTEyMTVlZmZkNjRhNjdjODUwZGE4YjZjOWI0ZWM3M2IzZWMuLjM5
ODk3ZDA3ZTljMTQ5ZmNkZmI1ODJlZTg1ODYwMGNhMzVhYzg5ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCkBAIC05OTksNyArOTk5LDcgQEAgdm9pZCBIVE1MRWxlbWVudDo6c2V0
SXRlbVZhbHVlVGV4dChjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIH0K
ICNlbmRpZgogCi12b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZShTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2
b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiBz
dHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIC8vIEZJWE1FOiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3Qgc3BpbiB1cCB0aGUgQ1NTIHBh
cnNlciwgYnV0IHNob3VsZCBpbnN0ZWFkIGp1c3QgZmlndXJlIG91dCB0aGUgY29ycmVjdAogICAg
IC8vIGxlbmd0aCB1bml0IGFuZCBtYWtlIHRoZSBhcHByb3ByaWF0ZSBwYXJzZWQgdmFsdWUuCkBA
IC0xMDkwLDcgKzEwOTAsNyBAQCBzdGF0aWMgUkdCQTMyIHBhcnNlQ29sb3JTdHJpbmdXaXRoQ3Jh
enlMZWdhY3lSdWxlcyhjb25zdCBTdHJpbmcmIGNvbG9yU3RyaW5nKQogfQogCiAvLyBDb2xvciBw
YXJzaW5nIHRoYXQgbWF0Y2hlcyBIVE1MJ3MgInJ1bGVzIGZvciBwYXJzaW5nIGEgbGVnYWN5IGNv
bG9yIHZhbHVlIgotdm9pZCBIVE1MRWxlbWVudDo6YWRkSFRNTENvbG9yVG9TdHlsZShTdHlsZVBy
b3BlcnR5U2V0KiBzdHlsZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYXR0cmlidXRl
VmFsdWUpCit2b2lkIEhUTUxFbGVtZW50OjphZGRIVE1MQ29sb3JUb1N0eWxlKFN0eWxlUHJvcGVy
dHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYXR0
cmlidXRlVmFsdWUpCiB7CiAgICAgLy8gQW4gZW1wdHkgc3RyaW5nIGRvZXNuJ3QgYXBwbHkgYSBj
b2xvci4gKE9uZSBjb250YWluaW5nIG9ubHkgd2hpdGVzcGFjZSBkb2VzLCB3aGljaCBpcyB3aHkg
dGhpcyBjaGVjayBvY2N1cnMgYmVmb3JlIHN0cmlwcGluZy4pCiAgICAgaWYgKGF0dHJpYnV0ZVZh
bHVlLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAppbmRleCAyYjM1ODYxN2Ey
OGQ0NmM0OGJkNzE0YTU5NTc4MWEzNTEyMTExZGM1Li5kYTQyYWNiOGRhYjMxNTU4ZThkNTgxNGM3
YjBhNzViMTU0NDlmMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCkBAIC0xMDgsOCAr
MTA4LDggQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIEhUTUxFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50Kik7CiAKLSAgICB2b2lkIGFkZEhUTUxMZW5ndGhU
b1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7Ci0gICAgdm9pZCBhZGRIVE1MQ29sb3JUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBp
bnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBjb2xvcik7CisgICAgdm9pZCBhZGRIVE1MTGVu
Z3RoVG9TdHlsZShTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5n
Jik7CisgICAgdm9pZCBhZGRIVE1MQ29sb3JUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBDU1NQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgYXBwbHlBbGlnbm1lbnRBdHRy
aWJ1dGVUb1N0eWxlKEF0dHJpYnV0ZSosIFN0eWxlUHJvcGVydHlTZXQqKTsKICAgICB2b2lkIGFw
cGx5Qm9yZGVyQXR0cmlidXRlVG9TdHlsZShBdHRyaWJ1dGUqLCBTdHlsZVByb3BlcnR5U2V0Kik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAK
aW5kZXggMDUyYmUyODgzOTg2NDE0ZjYyZjQzOGM0ZDM2YTg5M2QwOWFhNjBmNC4uMWMzMDgwYmNh
ZTA3Y2E5MGQyZWU3NmNiMDNlYTI2YjBlZDk2MGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNTAxLDcgKzUwMSw3IEBAIFBh
c3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHls
ZVdpdGhQcm9wZXJ0aWVzKCkgY29uCiAgICAgICAgICAgICAgICAgLy8gUGFyc2VkIHByb3BlcnR5
IG92ZXJyaWRlcyBhbnkgcHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lLiBOb24tcGFyc2VkIHBy
b3BlcnR5IG92ZXJyaWRlcwogICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIG5vbi1wYXJzZWQg
cHJvcGVydHkgd2l0aCB0aGUgc2FtZSBuYW1lIChpZiBhbnkpLgogICAgICAgICAgICAgICAgIGJv
b2wgc2hvdWxkSW5hY3RpdmF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCA9IHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KGNzc1Byb3BlcnR5SUQo
bmFtZSkpOworICAgICAgICAgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCA9IGNzc1By
b3BlcnR5SUQobmFtZSk7CiAgICAgICAgICAgICAgICAgLy8gQ2Fub25pY2FsaXplIHByb3BlcnR5
IG5hbWVzIHRvIHRyZWF0IG5vbi1wcmVmaXhlZCBhbmQgdmVuZG9yLXByZWZpeGVkIHByb3BlcnR5
IG5hbWVzIHRoZSBzYW1lIChvcGFjaXR5IHZzLiAtd2Via2l0LW9wYWNpdHkpLgogICAgICAgICAg
ICAgICAgIFN0cmluZyBjYW5vbmljYWxQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eUlkID8gU3RyaW5n
KGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eUlkKSkgOiBuYW1lOwogICAgICAgICAgICAgICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHk+ID46Oml0
ZXJhdG9yIGFjdGl2ZUl0ID0gcHJvcGVydHlOYW1lVG9QcmV2aW91c0FjdGl2ZVByb3BlcnR5LmZp
bmQoY2Fub25pY2FsUHJvcGVydHlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggNjNjZGNmNzk0ZjZmZTMxNzE5NTI5YzQ1M2Zj
ZGYxZDBiZjkwOGE3ZS4uMjA0YWEyZmIyNjFlYjYxZGQ0ZGQ3OWQzZDJjNzJlYTdiMjFiNWQ2NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAK
QEAgLTExNDQsNyArMTE0NCw3IEBAIHN0YXRpYyB2b2lkIGFkZFByb3BlcnR5V3JhcHBlcihpbnQg
cHJvcGVydHlJRCwgUHJvcGVydHlXcmFwcGVyQmFzZSogd3JhcHBlcikKIAogc3RhdGljIHZvaWQg
YWRkU2hvcnRoYW5kUHJvcGVydGllcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBhbmltYXRh
YmxlU2hvcnRoYW5kUHJvcGVydGllc1tdID0geworICAgIHN0YXRpYyBjb25zdCBDU1NQcm9wZXJ0
eUlEIGFuaW1hdGFibGVTaG9ydGhhbmRQcm9wZXJ0aWVzW10gPSB7CiAgICAgICAgIENTU1Byb3Bl
cnR5QmFja2dyb3VuZCwgLy8gZm9yIGJhY2tncm91bmQtY29sb3IsIGJhY2tncm91bmQtcG9zaXRp
b24sIGJhY2tncm91bmQtaW1hZ2UKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUG9zaXRp
b24sCiAgICAgICAgIENTU1Byb3BlcnR5Rm9udCwgLy8gZm9yIGZvbnQtc2l6ZSwgZm9udC13ZWln
aHQKQEAgLTExNjgsNyArMTE2OCw3IEBAIHN0YXRpYyB2b2lkIGFkZFNob3J0aGFuZFByb3BlcnRp
ZXMoKQogICAgIH07CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5H
VEgoYW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXMpOyArK2kpIHsKLSAgICAgICAgaW50IHBy
b3BlcnR5SUQgPSBhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGllc1tpXTsKKyAgICAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gYW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXNbaV07
CiAgICAgICAgIFN0eWxlUHJvcGVydHlTaG9ydGhhbmQgc2hvcnRoYW5kID0gc2hvcnRoYW5kRm9y
UHJvcGVydHkocHJvcGVydHlJRCk7CiAgICAgICAgIGlmIChzaG9ydGhhbmQubGVuZ3RoKCkgPiAw
KQogICAgICAgICAgICAgYWRkUHJvcGVydHlXcmFwcGVyKHByb3BlcnR5SUQsIG5ldyBTaG9ydGhh
bmRQcm9wZXJ0eVdyYXBwZXIocHJvcGVydHlJRCwgc2hvcnRoYW5kKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udEZhY2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCmluZGV4IDkyNzUwYWYxMjhmYzk2OGE3ODgzZDgw
NThkZmFjZDdkM2FiYWM5ODguLjVlNDMwNzA1ZDMwMzAyOTUzYzg0MmZlMDY1NzIxMGYxODIwNmVl
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwCkBAIC02MSwx
NCArNjEsMTQgQEAgUGFzc1JlZlB0cjxTVkdGb250RmFjZUVsZW1lbnQ+IFNWR0ZvbnRGYWNlRWxl
bWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHQKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFNWR0ZvbnRGYWNlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1zdGF0aWMg
aW50IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQorc3RhdGljIENTU1Byb3BlcnR5SUQgY3NzUHJvcGVydHlJZEZvclNWR0F0dHJp
YnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKCFhdHRy
TmFtZS5uYW1lc3BhY2VVUkkoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBDU1NQcm9wZXJ0eUludmFsaWQ7CiAgICAgCi0gICAgc3RhdGljIEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIGludD4qIHByb3BlcnR5TmFtZVRvSWRNYXAgPSAwOworICAgIHN0YXRp
YyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiogcHJvcGVydHlOYW1l
VG9JZE1hcCA9IDA7CiAgICAgaWYgKCFwcm9wZXJ0eU5hbWVUb0lkTWFwKSB7Ci0gICAgICAgIHBy
b3BlcnR5TmFtZVRvSWRNYXAgPSBuZXcgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgaW50PjsK
KyAgICAgICAgcHJvcGVydHlOYW1lVG9JZE1hcCA9IG5ldyBIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBDU1NQcm9wZXJ0eUlEPjsKICAgICAgICAgLy8gVGhpcyBpcyBhIGxpc3Qgb2YgYWxsIEBm
b250LWZhY2UgQ1NTIHByb3BlcnRpZXMgd2hpY2ggYXJlIGV4cG9zZWQgYXMgU1ZHIFhNTCBhdHRy
aWJ1dGVzCiAgICAgICAgIC8vIFRob3NlIGNvbW1lbnRlZCBvdXQgYXJlIG5vdCB5ZXQgc3VwcG9y
dGVkIGJ5IFdlYkNvcmUncyBzdHlsZSBzeXN0ZW0KICAgICAgICAgLy8gbWFwQXR0cmlidXRlVG9D
U1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBhY2NlbnRfaGVpZ2h0QXR0cik7CkBAIC0x
MTEsNyArMTExLDcgQEAgc3RhdGljIGludCBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFt
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIAogdm9pZCBTVkdGb250RmFjZUVsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKIHsgICAgCi0gICAgaW50IHByb3BJ
ZCA9IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CisgICAg
Q1NTUHJvcGVydHlJRCBwcm9wSWQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShh
dHRyLT5uYW1lKCkpOwogICAgIGlmIChwcm9wSWQgPiAwKSB7CiAgICAgICAgIG1fZm9udEZhY2VS
dWxlLT5wcm9wZXJ0aWVzKCktPnNldFByb3BlcnR5KHByb3BJZCwgYXR0ci0+dmFsdWUoKSwgZmFs
c2UpOwogICAgICAgICByZWJ1aWxkRm9udEZhY2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHls
ZWRFbGVtZW50LmNwcAppbmRleCAyZmFkZjYzZDhmZWI0ZGMxMDVkNThiODc3ZDVmNTgxMzIwNTc5
YTBlLi43NWEwMGZmNzkyMjA0YWJjMWFkYTAzMDkzZTE2ZDg5OGU2MmJkOTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCkBAIC01NywxMCArNTcsMTAgQEAgRU5EX1JF
R0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVzOwog
Ci12b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBs
KiwgaW50PiogcHJvcGVydHlOYW1lVG9JZE1hcCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCit2b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBdG9taWNTdHJpbmdJ
bXBsKiwgQ1NTUHJvcGVydHlJRD4qIHByb3BlcnR5TmFtZVRvSWRNYXAsIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogewogICAgIC8vIEZJWE1FOiB3aGVuIENTUyBzdXBwb3J0cyAidHJh
bnNmb3JtLW9yaWdpbiIgdGhlIHNwZWNpYWwgY2FzZSBmb3IgdHJhbnNmb3JtX29yaWdpbkF0dHIg
Y2FuIGJlIHJlbW92ZWQuCi0gICAgaW50IHByb3BlcnR5SWQgPSBjc3NQcm9wZXJ0eUlEKGF0dHJO
YW1lLmxvY2FsTmFtZSgpKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQgPSBjc3NQcm9w
ZXJ0eUlEKGF0dHJOYW1lLmxvY2FsTmFtZSgpKTsKICAgICBpZiAoIXByb3BlcnR5SWQgJiYgYXR0
ck5hbWUgPT0gdHJhbnNmb3JtX29yaWdpbkF0dHIpCiAgICAgICAgIHByb3BlcnR5SWQgPSBDU1NQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpbjsgLy8gY3NzUHJvcGVydHlJRCgiLXdlYmtpdC10
cmFuc2Zvcm0tb3JpZ2luIikKICAgICBBU1NFUlQocHJvcGVydHlJZCA+IDApOwpAQCAtMTM0LDE0
ICsxMzQsMTQgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0
IE5vZGVSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
aW50IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQorQ1NTUHJvcGVydHlJRCBTVkdTdHlsZWRFbGVt
ZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKICAgICBpZiAoIWF0dHJOYW1lLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgp
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsK
ICAgICAKLSAgICBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgaW50PiogcHJvcGVy
dHlOYW1lVG9JZE1hcCA9IDA7CisgICAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENTU1Byb3BlcnR5SUQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwID0gMDsKICAgICBpZiAoIXByb3Bl
cnR5TmFtZVRvSWRNYXApIHsKLSAgICAgICAgcHJvcGVydHlOYW1lVG9JZE1hcCA9IG5ldyBIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBpbnQ+OworICAgICAgICBwcm9wZXJ0eU5hbWVUb0lkTWFw
ID0gbmV3IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+OwogICAgICAg
ICAvLyBUaGlzIGlzIGEgbGlzdCBvZiBhbGwgYmFzZSBDU1MgYW5kIFNWRyBDU1MgcHJvcGVydGll
cyB3aGljaCBhcmUgZXhwb3NlZCBhcyBTVkcgWE1MIGF0dHJpYnV0ZXMKICAgICAgICAgbWFwQXR0
cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVUb0lkTWFwLCBhbGlnbm1lbnRfYmFzZWxp
bmVBdHRyKTsKICAgICAgICAgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShwcm9wZXJ0eU5hbWVU
b0lkTWFwLCBiYXNlbGluZV9zaGlmdEF0dHIpOwpAQCAtMjk4LDcgKzI5OCw3IEBAIGJvb2wgU1ZH
U3R5bGVkRWxlbWVudDo6aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSkgY29uc3QKIAogdm9pZCBTVkdTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JB
dHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyLCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIHsKLSAg
ICBpbnQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdB
dHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlE
ID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0
ci0+bmFtZSgpKTsKICAgICBpZiAocHJvcGVydHlJRCA+IDApCiAgICAgICAgIGFkZFByb3BlcnR5
VG9BdHRyaWJ1dGVTdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgYXR0ci0+dmFsdWUoKSk7CiB9CkBA
IC0zMjUsNyArMzI1LDcgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojppc0tub3duQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogCiB2b2lkIFNWR1N0eWxlZEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0g
ICAgaW50IHByb3BJZCA9IFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRy
aWJ1dGVOYW1lKGF0dHJOYW1lKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9IFNWR1N0eWxl
ZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKTsKICAg
ICBpZiAocHJvcElkID4gMCkgewogICAgICAgICBTVkdFbGVtZW50SW5zdGFuY2U6OmludmFsaWRh
dGVBbGxJbnN0YW5jZXNPZkVsZW1lbnQodGhpcyk7CiAgICAgICAgIHJldHVybjsKQEAgLTQyMSw3
ICs0MjEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVz
ZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBuYQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIFJlZlB0cjxTdHlsZVByb3BlcnR5U2V0PiBzdHlsZSA9IFN0eWxlUHJvcGVydHlTZXQ6OmNy
ZWF0ZShTVkdBdHRyaWJ1dGVNb2RlKTsKLSAgICBpbnQgcHJvcGVydHlJRCA9IFNWR1N0eWxlZEVs
ZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7Cisg
ICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVy
dHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsKICAgICBzdHlsZS0+c2V0UHJv
cGVydHkocHJvcGVydHlJRCwgYXR0ci0+dmFsdWUoKSk7CiAgICAgcmV0dXJuIHN0eWxlLT5nZXRQ
cm9wZXJ0eUNTU1ZhbHVlKHByb3BlcnR5SUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRF
bGVtZW50LmgKaW5kZXggNjQ4MzBlODUyNWU3ZWM3YjYxZjA3ZWI2ODliZmE1OGNlMmNiNzQ2My4u
ZmUzYThlNzJjMGZhNTVhMzVhMWUwNDYxYjJmN2JkOTk2M2EzYTI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3R5bGVkRWxlbWVudC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIFNWR1N0eWxl
ZEVsZW1lbnRfaAogCiAjaWYgRU5BQkxFKFNWRykKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eU5hbWVz
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTVkdMb2NhdGFi
bGUuaCIKICNpbmNsdWRlICJTVkdTdHlsYWJsZS5oIgpAQCAtMjksNyArMzAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNoTWFw
PEF0b21pY1N0cmluZ0ltcGwqLCBpbnQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSk7Cit2b2lkIG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4qIHByb3BlcnR5TmFtZVRvSWRN
YXAsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKIAogY2xhc3MgU1ZHU3R5bGVkRWxl
bWVudCA6IHB1YmxpYyBTVkdFbGVtZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdTdHlsYWJsZSB7CkBAIC03NSw3ICs3Niw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0g
MCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7CiAKLSAg
ICBzdGF0aWMgaW50IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlkRm9yU1ZH
QXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgdm9pZCB1cGRhdGVSZWxh
dGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpIHsgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRp
b24oc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpLCB0aGlzKTsgfQogICAgIHZvaWQgdXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oYm9vbCBoYXNSZWxhdGl2ZUxlbmd0aHMsIFNWR1N0eWxl
ZEVsZW1lbnQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCmluZGV4IGZjNzJj
YTY4NmNhNjMxZTAyOGMzYTNmOWU3OTNiNWMxZGJhMzEyNTMuLmIwNTMyOThkZTM5NDNkYWQzYjBj
ZTdkZWUzYmI4YTA3NTRiNTYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJlbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAK
QEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIFFXZWJFbGVtZW50OjpzZXRTdHlsZVByb3BlcnR5KGNv
bnN0IFFTdHJpbmcgJm5hbWUsIGNvbnN0IFFTdHJpbmcgJnZhbHVlKQogICAgIGlmICghbV9lbGVt
ZW50IHx8ICFtX2VsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpbnQgcHJvcElEID0gY3NzUHJvcGVydHlJRChuYW1lKTsKKyAgICBDU1NQcm9wZXJ0eUlE
IHByb3BJRCA9IGNzc1Byb3BlcnR5SUQobmFtZSk7CiAgICAgc3RhdGljX2Nhc3Q8U3R5bGVkRWxl
bWVudCo+KG1fZWxlbWVudCktPnNldElubGluZVN0eWxlUHJvcGVydHkocHJvcElELCB2YWx1ZSk7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135314</attachid>
            <date>2012-04-03 05:39:30 -0700</date>
            <delta_ts>2012-04-03 19:14:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82977-20120403093910.patch</filename>
            <type>text/plain</type>
            <size>96131</size>
            <attacher name="Alexis Menard (darktears)">menard</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMDEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTBlNzVmZDQ0YTYxMTgx
MWUwM2E0NTlkMTc3MTJkMTc0MTNjMTMwNy4uMDQ3ZjI2ZjcyNmJhYmIxMWI4MWFhODRkMTJhM2Yy
Nzk3MmRjZTdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MSBAQAorMjAxMi0wNC0wMyAgQWxl
eGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUGFy
dCAyXSBXZSBzaG91bGQgdXNlIENTU1Byb3BlcnR5SUQgcmF0aGVyIHRoYW4gaW50ZWdlcnMgd2hl
biBtYW5pcHVsYXRpbmcgQ1NTIHByb3BlcnR5IGlkcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTc3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ1NTUHJvcGVydHlJRCBlbnVtIGhvbGRzIGFsbCB0aGUg
Q1NTIHByb3BlcnR5IGlkcyBidXQgbWFueSBwYXJ0cyBvZiBXZWJLaXQgdHJlYXQgdGhlIGlkcwor
ICAgICAgICBhcyBpbnRlZ2Vycy4gV2hpbGUgaXQncyBub3QgaW5jb3JyZWN0IGl0IGlzIG5pY2Vy
IHRvIHVzZSB0aGUgZW51bSBhcyBhIHBhcmFtZXRlciBvZgorICAgICAgICBmdW5jdGlvbnMgbWFu
aXB1bGF0aW5nIHByb3BlcnR5IGlkcywgYXMgd2UgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIHBhc3Nl
ZCB3aWxsIGJlIGFuCisgICAgICAgIGV4aXN0aW5nIHZhbHVlLiBBbG1vc3QgZXZlcnl0aGluZyBo
YXMgYmVlbiBjaGFuZ2VkIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgQW5pbWF0aW9uIHJlbGF0
ZWQKKyAgICAgICAgY2xhc3NlcyB3aGljaCBjYW4gYmUgZG9uZSBpbiBhIGZvbGxvd2luZyBwYXRj
aC4KKworICAgICAgICBObyBuZXcgdGVzdHMgOiBUaGVyZSBzaG91bGQgYmUgbm8gYmVoYXZpb3Ig
Y2hhbmdlIGluIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yU2hhZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NW
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJRCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpp
dGVtKToKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmg6CisgICAg
ICAgIChDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24pOgorICAgICAgICAqIGNzcy9DU1NHcmFt
bWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjppc0NvbG9yUHJvcGVydHlJ
RCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlU2lt
cGxlTGVuZ3RoVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0
eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzS2V5d29yZFByb3BlcnR5SUQpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VLZXl3b3JkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UGFyc2VyOjpwYXJzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkUHJv
cGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9ydGhhbmQp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVNob3J0aGFuZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlNFZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNl
U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlUXVvdGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
OnBhcnNlRmlsbFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VB
bmltYXRpb25Qcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlR3Jp
ZFRyYWNrTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJk
UmVnaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlQ2xpcFNoYXBlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTaGFkb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpwYXJzZVJlZmxlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Qm9yZGVy
SW1hZ2VQYXJzZUNvbnRleHQ6OmNvbW1pdEJvcmRlckltYWdlUHJvcGVydHkpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVNsaWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1BhcnNlcjo6cGFyc2VCb3JkZXJSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
OjpwYXJzZUNvdW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZUZsb3dU
aHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVJlZ2lvblRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVHJhbnNmb3JtT3JpZ2luKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VQZXJzcGVjdGl2ZU9yaWdpbik6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAoQ1NTUGFyc2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNob3J0aGFuZFNjb3BlOjpTaG9ydGhhbmRTY29wZSk6CisgICAgICAgICogY3NzL0NT
U1Byb3BlcnR5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlc29sdmVUb1BoeXNpY2FsUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rpb25Bd2Fy
ZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFBy
b3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1Byb3BlcnR5OjpDU1NQcm9wZXJ0eSk6CisgICAgICAgIChDU1NQcm9wZXJ0eSk6CisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAoQ1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAg
ICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldFByb3BlcnR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVtb3ZlUHJvcGVy
dHkpOgorICAgICAgICAqIGNzcy9TVkdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRTVkdQcm9w
ZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvU1ZHQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VTVkdWYWx1ZSk6CisgICAgICAgICogY3NzL1NWR0NT
U1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlTVkdQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6Z2V0UHJvcGVydHlDU1NWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVTaG9ydGhhbmRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZVByb3BlcnR5U2V0Ojphc1RleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVQcm9wZXJ0eVNldDo6ZmluZFByb3BlcnR5V2l0aElkKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0eVNldC5oOgorICAgICAgICAoU3R5bGVQcm9wZXJ0eVNl
dCk6CisgICAgICAgICogY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2hvcnRoYW5kRm9yUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3Bl
cnR5U2hvcnRoYW5kLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vU3R5bGVk
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnJlbW92ZUlu
bGluZVN0eWxlUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRk
UHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5o
OgorICAgICAgICAoU3R5bGVkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVt
ZW50OjphZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dGluZ1N0eWxlLmNwcDoKKyAgICAgICAgKEhUTUxFbGVtZW50RXF1aXZhbGVudCk6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OkVkaXRpbmdTdHlsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0aW5nU3R5bGU6OnNldFByb3BlcnR5KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmdT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjcmVhdGUpOgorICAgICAg
ICAoRWRpdGluZ1N0eWxlKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFZGl0b3I6OnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZSk6CisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKEVkaXRvcik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVBcHBseVN0eWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVUb2dnbGVTdHlsZUluTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlVG9nZ2xlU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUFwcGx5UGFyYWdyYXBo
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6c3RhdGVTdHlsZSk6CisgICAgICAgICogZWRpdGlu
Zy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpwcm9w
ZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjphZGRIVE1MTGVuZ3RoVG9TdHlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6YWRkSFRNTENvbG9yVG9TdHlsZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAoSFRNTEVsZW1lbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFkZFNob3J0
aGFuZFByb3BlcnRpZXMpOgorICAgICAgICAqIHN2Zy9TVkdGb250RmFjZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRm9udEZhY2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgICogc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFwQXR0
cmlidXRlVG9DU1NQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50
Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdTdHlsZWRFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpnZXRQcmVzZW50YXRpb25BdHRyaWJ1dGUpOgorICAg
ICAgICAqIHN2Zy9TVkdTdHlsZWRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFNWR1N0eWxlZEVsZW1lbnQpOgorCiAyMDEyLTA0LTAzICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIEVuYWJsZSBhbmltVmFsIHN1cHBvcnQg
Zm9yIFNWR0FuaW1hdGVkRW51bWVyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOWYwZWUyYzk4Nzdk
NjMxODZkNWY3NzVlNGE2ZGZlMGI3NWEzMWVkNC4uZTBjN2MzYzBhODlkNTk0ZDhhNWNlZmMwZjMx
MGNjYjFmOWRhMjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNC0w
MyAgQWxleGlzIE1lbmFyZCAgPGFsZXhpcy5tZW5hcmRAb3BlbmJvc3NhLm9yZz4KKworICAgICAg
ICBbUGFydCAyXSBXZSBzaG91bGQgdXNlIENTU1Byb3BlcnR5SUQgcmF0aGVyIHRoYW4gaW50ZWdl
cnMgd2hlbiBtYW5pcHVsYXRpbmcgQ1NTIHByb3BlcnR5IGlkcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyOTc3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBjb2RlIHRvIHVzZSBDU1NQ
cm9wZXJ0eUlEIHJhdGhlciB0aGFuIGFuIGludGVnZXIuCisKKyAgICAgICAgKiBBcGkvcXdlYmVs
ZW1lbnQuY3BwOgorICAgICAgICAoUVdlYkVsZW1lbnQ6OnNldFN0eWxlUHJvcGVydHkpOgorCiAy
MDEyLTA0LTAyICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1lbmFyZEBvcGVuYm9zc2Eub3JnPgog
CiAgICAgICAgIFdlIHNob3VsZCB1c2UgQ1NTUHJvcGVydHlJRCByYXRoZXIgdGhhbiBpbnRlZ2Vy
cyB3aGVuIG1hbmlwdWxhdGluZyBDU1MgcHJvcGVydHkgaWRzLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpp
bmRleCAxOTEzNjBjY2U2ZTdlMzM0MGI1NzUzY2JiNzBlMWVlYTdkODNlYzFhLi44OThjYTQ3ZGQ4
OTAxNTExNzljNDc2NGRiYTk2ZTM0Y2E1MWVhN2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAt
MTQzNyw3ICsxNDM3LDcgQEAgX19aTks3V2ViQ29yZTZFZGl0b3IxM2NhbkVkaXRSaWNobHlFdgog
X19aTks3V2ViQ29yZTZFZGl0b3IxNmNvbXBvc2l0aW9uUmFuZ2VFdgogX19aTks3V2ViQ29yZTZF
ZGl0b3IxNmZvbnRGb3JTZWxlY3Rpb25FUmIKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTdmaXJzdFJl
Y3RGb3JSYW5nZUVQTlNfNVJhbmdlRQotX19aTks3V2ViQ29yZTZFZGl0b3IxN3NlbGVjdGlvbkhh
c1N0eWxlRWlSS04zV1RGNlN0cmluZ0UKK19fWk5LN1dlYkNvcmU2RWRpdG9yMTdzZWxlY3Rpb25I
YXNTdHlsZUVOU18xM0NTU1Byb3BlcnR5SURFUktOM1dURjZTdHJpbmdFCiBfX1pOSzdXZWJDb3Jl
NkVkaXRvcjE3c2hvdWxkRGVsZXRlUmFuZ2VFUE5TXzVSYW5nZUUKIF9fWk5LN1dlYkNvcmU2RWRp
dG9yMjNnZXRDb21wb3NpdGlvblNlbGVjdGlvbkVSalMxXwogX19aTks3V2ViQ29yZTZFZGl0b3Iy
NnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yRU5TXzE0RG9jdW1lbnRNYXJrZXIxME1hcmtlclR5
cGVFaWkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggMDQ4NDBiZTU0MGNkNmMzZDg4NjdmMGI3Y2NiNWY4OWQ5OWNkNzIyYi4u
MTkwNDliMTFkZDJhNGUzNmFiNDE2ZmQ3NWY2NGI5YWU3NWZhODg3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEwMzMs
NyArMTAzMyw3IEBAIFN0cmluZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmNzc1RleHQo
KSBjb25zdAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1Db21wdXRlZFByb3BlcnRp
ZXM7IGkrKykgewogICAgICAgICBpZiAoaSkKICAgICAgICAgICAgIHJlc3VsdCArPSAiICI7Ci0g
ICAgICAgIHJlc3VsdCArPSBnZXRQcm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJ
RD4oY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKSk7CisgICAgICAgIHJlc3VsdCArPSBnZXRQcm9wZXJ0
eU5hbWUoY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKTsKICAgICAgICAgcmVzdWx0ICs9ICI6ICI7CiAg
ICAgICAgIHJlc3VsdCArPSBnZXRQcm9wZXJ0eVZhbHVlKGNvbXB1dGVkUHJvcGVydGllc1tpXSk7
CiAgICAgICAgIHJlc3VsdCArPSAiOyI7CkBAIC0xMDg2LDE0ICsxMDg2LDEyIEBAIGJvb2wgQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp1c2VGaXhlZEZvbnREZWZhdWx0U2l6ZSgpIGNvbnN0
CiAgICAgcmV0dXJuIHN0eWxlLT5mb250RGVzY3JpcHRpb24oKS51c2VGaXhlZERlZmF1bHRTaXpl
KCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlv
bjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBpbnQgaWQsIFJlbmRl
clN0eWxlKiBzdHlsZSkgY29uc3QKK1Bhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JTaGFkb3coY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFJlbmRlclN0eWxlKiBzdHlsZSkgY29uc3QKIHsKICAg
ICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCA9IG1fbm9kZS0+ZG9jdW1lbnQoKS0+Y3NzVmFs
dWVQb29sKCkuZ2V0KCk7CiAgICAgaWYgKCFzaGFkb3cpCiAgICAgICAgIHJldHVybiBjc3NWYWx1
ZVBvb2wtPmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpOwogCi0gICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwotCiAg
ICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFT
ZXBhcmF0ZWQoKTsKICAgICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHMgPSBzaGFkb3c7IHM7IHMg
PSBzLT5uZXh0KCkpIHsKICAgICAgICAgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiB4ID0gem9v
bUFkanVzdGVkUGl4ZWxWYWx1ZShzLT54KCksIHN0eWxlLCBjc3NWYWx1ZVBvb2wpOwpAQCAtMTEw
Nyw3ICsxMTA1LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjp2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXQKICAgICByZXR1cm4gbGlzdC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3QKK1Bhc3NS
ZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGdl
dFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCwgVXBkYXRlTGF5b3V0KTsKIH0KQEAgLTEyNDcs
MTMgKzEyNDUsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvdW50ZXJUb0NTU1Zh
bHVlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgaW50IHByb3AKICAgICByZXR1cm4gbGlzdC5y
ZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKGlu
dCBwcm9wZXJ0eUlEKQorc3RhdGljIHZvaWQgbG9nVW5pbXBsZW1lbnRlZFByb3BlcnR5SUQoQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNl
dDxpbnQ+LCBwcm9wZXJ0eUlEU2V0LCAoKSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEU2V0LmFkZChw
cm9wZXJ0eUlEKS5pc05ld0VudHJ5KQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0dfRVJST1Io
IldlYktpdCBkb2VzIG5vdCB5ZXQgaW1wbGVtZW50IGdldENvbXB1dGVkU3R5bGUgZm9yICclcycu
IiwgZ2V0UHJvcGVydHlOYW1lKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BlcnR5SUQp
KSk7CisgICAgTE9HX0VSUk9SKCJXZWJLaXQgZG9lcyBub3QgeWV0IGltcGxlbWVudCBnZXRDb21w
dXRlZFN0eWxlIGZvciAnJXMnLiIsIGdldFByb3BlcnR5TmFtZShwcm9wZXJ0eUlEKSk7CiB9CiAK
IHN0YXRpYyBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gZm9udEZhbWlseUZyb21TdHlsZShSZW5k
ZXJTdHlsZSogc3R5bGUsIENTU1ZhbHVlUG9vbCogY3NzVmFsdWVQb29sKQpAQCAtMTMyNCw3ICsx
MzIyLDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IGZvbnRXZWlnaHRG
cm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBDU1MKICAgICByZXR1cm4gY3NzVmFsdWVQb29s
LT5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwogfQogCi1QYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUoaW50IHByb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQgdXBkYXRlTGF5b3V0KSBjb25zdAorUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCB1cGRhdGVM
YXlvdXQpIGNvbnN0CiB7CiAgICAgTm9kZSogbm9kZSA9IG1fbm9kZS5nZXQoKTsKICAgICBpZiAo
IW5vZGUpCkBAIC0xMzM3LDcgKzEzMzUsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJlcigpOwogCiAgICAgUmVmUHRy
PFJlbmRlclN0eWxlPiBzdHlsZTsKLSAgICBpZiAocmVuZGVyZXIgJiYgaGFzQ29tcG9zaXRlZExh
eWVyKHJlbmRlcmVyKSAmJiBBbmltYXRpb25Db250cm9sbGVyOjpzdXBwb3J0c0FjY2VsZXJhdGVk
QW5pbWF0aW9uT2ZQcm9wZXJ0eShzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlE
KSkpIHsKKyAgICBpZiAocmVuZGVyZXIgJiYgaGFzQ29tcG9zaXRlZExheWVyKHJlbmRlcmVyKSAm
JiBBbmltYXRpb25Db250cm9sbGVyOjpzdXBwb3J0c0FjY2VsZXJhdGVkQW5pbWF0aW9uT2ZQcm9w
ZXJ0eShwcm9wZXJ0eUlEKSkgewogICAgICAgICBzdHlsZSA9IHJlbmRlcmVyLT5hbmltYXRpb24o
KS0+Z2V0QW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKHJlbmRlcmVyKTsKICAgICAgICAgaWYgKG1f
cHNldWRvRWxlbWVudFNwZWNpZmllcikgewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2Fj
aGVkIHBzZXVkbyBzdHlsZSB3aWxsIG9ubHkgZXhpc3QgaWYgdGhlIGFuaW1hdGlvbiBoYXMgYmVl
biBydW4gYXQgbGVhc3Qgb25jZS4KQEAgLTEzNjAsNyArMTM1OCw3IEBAIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShp
bnQgcHJvcGVyCiAKICAgICBwcm9wZXJ0eUlEID0gQ1NTUHJvcGVydHk6OnJlc29sdmVEaXJlY3Rp
b25Bd2FyZVByb3BlcnR5KHByb3BlcnR5SUQsIHN0eWxlLT5kaXJlY3Rpb24oKSwgc3R5bGUtPndy
aXRpbmdNb2RlKCkpOwogCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihw
cm9wZXJ0eUlEKSkgeworICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewogICAgICAgICBjYXNlIENT
U1Byb3BlcnR5SW52YWxpZDoKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0yMzYyLDcgKzIzNjAs
NyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcgogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlCb3JkZXI6IHsKICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsdWUgPSBn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyVG9wLCBEb05vdFVwZGF0ZUxheW91
dCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcHJvcGVydGllc1szXSA9IHsgQ1NTUHJvcGVydHlC
b3JkZXJSaWdodCwgQ1NTUHJvcGVydHlCb3JkZXJCb3R0b20sCisgICAgICAgICAgICBjb25zdCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnRpZXNbM10gPSB7IENTU1Byb3BlcnR5Qm9yZGVyUmlnaHQsIENT
U1Byb3BlcnR5Qm9yZGVyQm90dG9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1Byb3BlcnR5Qm9yZGVyTGVmdCB9OwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVOR1RIKHByb3BlcnRpZXMpOyArK2kpIHsKICAgICAgICAg
ICAgICAgICBpZiAodmFsdWUtPmNzc1RleHQoKSAhPSAgZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9w
ZXJ0aWVzW2ldLCBEb05vdFVwZGF0ZUxheW91dCktPmNzc1RleHQoKSkKQEAgLTI1MzYsNyArMjUz
NCw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6
Z2V0UHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVyCiAgICAgcmV0dXJuIDA7CiB9CiAKLVN0cmlu
ZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoaW50IHByb3Bl
cnR5SUQpIGNvbnN0CitTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9w
ZXJ0eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkgY29uc3QKIHsKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IHZhbHVlID0gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlEKTsKICAgICBp
ZiAodmFsdWUpCkBAIC0yNTYzLDcgKzI1NjEsNyBAQCBTdHJpbmcgQ1NTQ29tcHV0ZWRTdHlsZURl
Y2xhcmF0aW9uOjppdGVtKHVuc2lnbmVkIGkpIGNvbnN0CiAgICAgaWYgKGkgPj0gbGVuZ3RoKCkp
CiAgICAgICAgIHJldHVybiAiIjsKIAotICAgIHJldHVybiBnZXRQcm9wZXJ0eU5hbWUoc3RhdGlj
X2Nhc3Q8Q1NTUHJvcGVydHlJRD4oY29tcHV0ZWRQcm9wZXJ0aWVzW2ldKSk7CisgICAgcmV0dXJu
IGdldFByb3BlcnR5TmFtZShjb21wdXRlZFByb3BlcnRpZXNbaV0pOwogfQogCiBib29sIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUHJvcGVydHlNYXRjaGVzKGNvbnN0IENTU1Byb3Bl
cnR5KiBwcm9wZXJ0eSkgY29uc3QKQEAgLTI2NDksNyArMjY0Nyw3IEBAIENTU1J1bGUqIENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6cGFyZW50UnVsZSgpIGNvbnN0CiAKIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1
ZShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKLSAgICBpbnQgcHJvcGVydHlJRCA9IGNz
c1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQg
PSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKCFwcm9wZXJ0eUlEKQogICAg
ICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gZ2V0UHJvcGVydHlDU1NWYWx1ZShwcm9wZXJ0eUlE
KTsKQEAgLTI2NTcsNyArMjY1NSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVk
U3R5bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlDU1NWYWx1ZShjb25zdCBTdHJpCiAKIFN0cmlu
ZyBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5VmFsdWUoY29uc3QgU3Ry
aW5nICZwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgaW50IHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlE
KHByb3BlcnR5TmFtZSk7CisgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVy
dHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIHJldHVybiBnZXRQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4
IDhkMWIzNTlkNGU2MDYwOTAzZmM4YzUwYjEyZTBlNTU5MDk5MGIxY2MuLmY2NGQyM2IwMzliZmVm
N2IxNDQ5MDk4YTYyYmRlM2U3ZmZmM2E3ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKQEAgLTU3LDE4ICs1NywxOCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHJlZigpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZigpIE9WRVJSSURFOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NW
YWx1ZShpbnQgcHJvcGVydHlJRCkgY29uc3Q7Ci0gICAgU3RyaW5nIGdldFByb3BlcnR5VmFsdWUo
aW50IHByb3BlcnR5SUQpIGNvbnN0OwotICAgIGJvb2wgZ2V0UHJvcGVydHlQcmlvcml0eShpbnQg
cHJvcGVydHlJRCkgY29uc3Q7CisgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBTdHJpbmcgZ2V0UHJvcGVydHlWYWx1
ZShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29sIGdldFByb3BlcnR5UHJpb3JpdHkoQ1NT
UHJvcGVydHlJRCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3R5bGVQcm9wZXJ0
eVNldD4gY29weSgpIGNvbnN0OwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTdHlsZVByb3BlcnR5
U2V0PiBtYWtlTXV0YWJsZSgpOwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVy
dHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0ZUxheW91dCkgY29uc3Q7CisgICAgUGFz
c1JlZlB0cjxDU1NWYWx1ZT4gZ2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUlELCBFVXBk
YXRlTGF5b3V0KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRGb250U2l6ZUNT
U1ZhbHVlUHJlZmVycmluZ0tleXdvcmQoKSBjb25zdDsKICAgICBib29sIHVzZUZpeGVkRm9udERl
ZmF1bHRTaXplKCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNWRykKLSAgICBQYXNzUmVmUHRyPENTU1Zh
bHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0
KSBjb25zdDsKKyAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBnZXRTVkdQcm9wZXJ0eUNTU1ZhbHVl
KENTU1Byb3BlcnR5SUQsIEVVcGRhdGVMYXlvdXQpIGNvbnN0OwogI2VuZGlmCiAKICAgICBQYXNz
UmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IGNvcHlQcm9wZXJ0aWVzSW5TZXQoY29uc3QgQ1NTUHJv
cGVydHlJRCogc2V0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0OwpAQCAtOTUsNyArOTUsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIGNzc1Byb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQ
cm9wZXJ0eSopIGNvbnN0OwogCi0gICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWVGb3JTaGFk
b3coY29uc3QgU2hhZG93RGF0YSosIGludCwgUmVuZGVyU3R5bGUqKSBjb25zdDsKKyAgICBQYXNz
UmVmUHRyPENTU1ZhbHVlPiB2YWx1ZUZvclNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiwgQ1NTUHJv
cGVydHlJRCwgUmVuZGVyU3R5bGUqKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPENTU1ByaW1pdGl2
ZVZhbHVlPiBjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUmVuZGVyU3R5bGUqLCBjb25zdCBDb2xv
ciYpIGNvbnN0OwogI2lmIEVOQUJMRShTVkcpCiAgICAgUGFzc1JlZlB0cjxTVkdQYWludD4gYWRq
dXN0U1ZHUGFpbnRGb3JDdXJyZW50Q29sb3IoUGFzc1JlZlB0cjxTVkdQYWludD4sIFJlbmRlclN0
eWxlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA4ZjEyNGNiZmZiN2MwMjRj
ZWJhYmU2Y2U1MDkyMTMyODhiZmY4MzY0Li5hODQxMDAyZTQzY2RkNWU0ZDRhMWUxNTNkODNiMTVk
NTI0ZTVlNzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTEzMDcsNyArMTMwNyw3IEBA
IGRlY2xhcmF0aW9uOgogICAgICAgICBpZiAoJDEgJiYgJDQpIHsKICAgICAgICAgICAgIHAtPm1f
dmFsdWVMaXN0ID0gcC0+c2lua0Zsb2F0aW5nVmFsdWVMaXN0KCQ0KTsKICAgICAgICAgICAgIGlu
dCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9wYXJzZWRQcm9wZXJ0aWVzLnNpemUoKTsKLSAg
ICAgICAgICAgICQkID0gcC0+cGFyc2VWYWx1ZSgkMSwgJDUpOworICAgICAgICAgICAgJCQgPSBw
LT5wYXJzZVZhbHVlKHN0YXRpY19jYXN0PENTU1Byb3BlcnR5SUQ+KCQxKSwgJDUpOwogICAgICAg
ICAgICAgaWYgKCEkJCkKICAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KHAtPm1fcGFyc2VkUHJvcGVydGllcy5zaXplKCkgLSBvbGRQYXJzZWRQcm9wZXJ0aWVzKTsKICAg
ICAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNWU2ZTQwZDAxMzQ2
NmIwYzUxOGQyZGJlYWI5NWY3ZTJmYjRjNjA4My4uODI4ZWZmODI4YjE2OTRhZmRjYTU0YTJiMDlk
YjZiYzQ2ZWI5NDVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTE4Myw3ICsxODMs
NyBAQCBpbmxpbmUgdm9pZCBDU1NQYXJzZXI6OmVuc3VyZUNTU1ZhbHVlUG9vbCgpCiBDU1NQYXJz
ZXI6OkNTU1BhcnNlcihDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiAgICAgOiBtX2Nzc1Bh
cnNlck1vZGUoY3NzUGFyc2VyTW9kZSkKICAgICAsIG1faW1wb3J0YW50KGZhbHNlKQotICAgICwg
bV9pZCgwKQorICAgICwgbV9pZChDU1NQcm9wZXJ0eUludmFsaWQpCiAgICAgLCBtX3N0eWxlU2hl
ZXQoMCkKICAgICAsIG1faW5QYXJzZVNob3J0aGFuZCgwKQogICAgICwgbV9jdXJyZW50U2hvcnRo
YW5kKDApCkBAIC0yOTQsNyArMjk0LDcgQEAgUGFzc1JlZlB0cjxTdHlsZUtleWZyYW1lPiBDU1NQ
YXJzZXI6OnBhcnNlS2V5ZnJhbWVSdWxlKENTU1N0eWxlU2hlZXQgKnNoZWV0LCBjb24KICAgICBy
ZXR1cm4gbV9rZXlmcmFtZS5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc0Nv
bG9yUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbG9y
UHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQpCiB7CiAgICAgc3dpdGNoIChwcm9w
ZXJ0eUlkKSB7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9yOgpAQCAtMzIxLDcgKzMyMSw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NvbG9yUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBk
ZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGlt
cG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCkKK3N0YXRpYyBib29sIHBhcnNlQ29sb3JWYWx1ZShTdHlsZVByb3BlcnR5
U2V0KiBkZWNsYXJhdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcm
IHN0cmluZywgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSwgQ1NT
U3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgYm9vbCBzdHJpY3QgPSBpc1N0
cmljdFBhcnNlck1vZGUoY3NzUGFyc2VyTW9kZSk7CiAgICAgaWYgKCFzdHJpbmcubGVuZ3RoKCkp
CkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xvclZhbHVlKFN0eWxlUHJv
cGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJRChp
bnQgcHJvcGVydHlJZCwgYm9vbCYgYWNjZXB0c05lZ2F0aXZlTnVtYmVycykKK3N0YXRpYyBpbmxp
bmUgYm9vbCBpc1NpbXBsZUxlbmd0aFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlk
LCBib29sJiBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzKQogewogICAgIHN3aXRjaCAocHJvcGVydHlJ
ZCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlGb250U2l6ZToKQEAgLTQwOCw3ICs0MDgsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNTaW1wbGVMZW5ndGhQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlk
LCBib29sJiBhY2NlcHRzTmVnYXRpdgogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFyc2VTaW1w
bGVMZW5ndGhWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50IHByb3BlcnR5
SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3N0YXRpYyBi
b29sIHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUoU3R5bGVQcm9wZXJ0eVNldCogZGVjbGFyYXRpb24s
IENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1w
b3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIENTU1N0eWxlU2hlZXQqIGNvbnRl
eHRTdHlsZVNoZWV0KQogewogICAgIGJvb2wgYWNjZXB0c05lZ2F0aXZlTnVtYmVyczsKICAgICBi
b29sIHN0cmljdCA9IGlzU3RyaWN0UGFyc2VyTW9kZShjc3NQYXJzZXJNb2RlKTsKQEAgLTQ4Myw3
ICs0ODMsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKFN0eWxlUHJvcGVy
dHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1zdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKGludCBw
cm9wZXJ0eUlkLCBpbnQgdmFsdWVJRCkKK3N0YXRpYyBpbmxpbmUgYm9vbCBpc1ZhbGlkS2V5d29y
ZFByb3BlcnR5QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBpbnQgdmFsdWVJRCkK
IHsKICAgICBpZiAoIXZhbHVlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTgwNCw3ICs4
MDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVl
KGludCBwcm9wZXJ0eUlkLCBpbnQgdmFsdWVJRCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgYm9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlkKQorc3Rh
dGljIGlubGluZSBib29sIGlzS2V5d29yZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlkKQogewogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlC
b3JkZXJCb3R0b21TdHlsZToKQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
aXNLZXl3b3JkUHJvcGVydHlJRChpbnQgcHJvcGVydHlJZCkKICAgICB9CiB9CiAKLXN0YXRpYyBi
b29sIHBhcnNlS2V5d29yZFZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBpbnQg
cHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHls
ZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK3N0YXRpYyBib29sIHBhcnNlS2V5d29yZFZhbHVl
KFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQs
IGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTU3R5bGVTaGVldCogY29u
dGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTk0MCwyNSArOTQwLDI1IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBDU1NQYXJzZXI6OnBhcnNlRm9udEZhY2VWYWx1ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0cmlu
CiAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8Q1NTVmFsdWVMaXN0PihkdW1teVN0eWxl
LT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udEZhbWlseSkpOwogfQogCi1ib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiBkZWNsYXJhdGlvbiwgaW50
IHByb3BlcnR5SWQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkK
K2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9u
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGlt
cG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250
ZXh0U3R5bGVTaGVldCkKIHsKLSAgICBpZiAocGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShkZWNsYXJh
dGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUsIGNvbnRl
eHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShkZWNsYXJhdGlv
biwgcHJvcGVydHlJRCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUsIGNvbnRleHRT
dHlsZVNoZWV0KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHBhcnNlQ29sb3JWYWx1
ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1v
ZGUsIGNvbnRleHRTdHlsZVNoZWV0KSkKKyAgICBpZiAocGFyc2VDb2xvclZhbHVlKGRlY2xhcmF0
aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSwgY29udGV4
dFN0eWxlU2hlZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocGFyc2VLZXl3b3Jk
VmFsdWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SWQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0
U3R5bGVTaGVldCkpCisgICAgaWYgKHBhcnNlS2V5d29yZFZhbHVlKGRlY2xhcmF0aW9uLCBwcm9w
ZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hlZXQpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICBDU1NQYXJzZXIgcGFyc2VyKGNzc1BhcnNlck1vZGUpOwotICAgIHJl
dHVybiBwYXJzZXIucGFyc2VWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJZCwgc3RyaW5nLCBp
bXBvcnRhbnQsIGNvbnRleHRTdHlsZVNoZWV0KTsKKyAgICByZXR1cm4gcGFyc2VyLnBhcnNlVmFs
dWUoZGVjbGFyYXRpb24sIHByb3BlcnR5SUQsIHN0cmluZywgaW1wb3J0YW50LCBjb250ZXh0U3R5
bGVTaGVldCk7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlT
ZXQqIGRlY2xhcmF0aW9uLCBpbnQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJv
b2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkKK2Jvb2wgQ1NT
UGFyc2VyOjpwYXJzZVZhbHVlKFN0eWxlUHJvcGVydHlTZXQqIGRlY2xhcmF0aW9uLCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBib29sIGltcG9ydGFudCwg
Q1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgc2V0U3R5bGVTaGVldChj
b250ZXh0U3R5bGVTaGVldCk7CiAKICAgICBzZXR1cFBhcnNlcigiQC13ZWJraXQtdmFsdWV7Iiwg
c3RyaW5nLCAifSAiKTsKIAotICAgIG1faWQgPSBwcm9wZXJ0eUlkOworICAgIG1faWQgPSBwcm9w
ZXJ0eUlEOwogICAgIG1faW1wb3J0YW50ID0gaW1wb3J0YW50OwogCiAgICAgY3NzeXlwYXJzZSh0
aGlzKTsKQEAgLTExMDcsNyArMTEwNyw3IEBAIFBhc3NPd25QdHI8TWVkaWFRdWVyeT4gQ1NTUGFy
c2VyOjpwYXJzZU1lZGlhUXVlcnkoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgcmV0dXJuIG1f
bWVkaWFRdWVyeS5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRQcm9wZXJ0eShp
bnQgcHJvcElkLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJv
b2wgaW1wbGljaXQpCit2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBw
cm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBp
bXBsaWNpdCkKIHsKICAgICBtX3BhcnNlZFByb3BlcnRpZXMuYXBwZW5kKENTU1Byb3BlcnR5KHBy
b3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5kLCBtX2ltcGxpY2l0U2hv
cnRoYW5kIHx8IGltcGxpY2l0KSk7CiB9CkBAIC0xMzU5LDcgKzEzNTksNyBAQCBpbmxpbmUgUGFz
c1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbGlkUHJpbWl0aXZl
KGludCBpZCwgQ1NTUAogICAgIHJldHVybiAwOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVZh
bHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKICAgICBpZiAoIW1f
dmFsdWVMaXN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDA2LDcgKzE0MDYsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAg
ICBib29sIHZhbGlkUHJpbWl0aXZlID0gZmFsc2U7CiAgICAgUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZWRWYWx1ZTsKIAotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcElk
KSkgeworICAgIHN3aXRjaCAocHJvcElkKSB7CiAgICAgICAgIC8qIFRoZSBjb21tZW50IHRvIHRo
ZSBsZWZ0IGRlZmluZXMgYWxsIHZhbGlkIHZhbHVlIG9mIHRoaXMgcHJvcGVydGllcyBhcyBkZWZp
bmVkCiAgICAgICAgICAqIGluIENTUyAyLCBBcHBlbmRpeCBGLiBQcm9wZXJ0eSBpbmRleAogICAg
ICAgICAgKi8KQEAgLTE2NTEsNyArMTY1MSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRN
YXNrUmVwZWF0WTogewogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDE7CiAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsMjsKLSAgICAgICAgaW50IHByb3BJZDEsIHByb3BJZDI7CisgICAg
ICAgIENTU1Byb3BlcnR5SUQgcHJvcElkMSwgcHJvcElkMjsKICAgICAgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKICAgICAgICAgaWYgKHBhcnNlRmlsbFByb3BlcnR5KHByb3BJZCwgcHJvcElkMSwg
cHJvcElkMiwgdmFsMSwgdmFsMikpIHsKICAgICAgICAgICAgIE93blB0cjxTaG9ydGhhbmRTY29w
ZT4gc2hvcnRoYW5kU2NvcGU7CkBAIC0yMDkwLDcgKzIwOTAsNyBAQCBib29sIENTU1BhcnNlcjo6
cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKICAgICAgICAgUmVmUHRyPENT
U1ZhbHVlPiB2YWwxOwogICAgICAgICBSZWZQdHI8Q1NTVmFsdWU+IHZhbDI7CiAgICAgICAgIFJl
ZlB0cjxDU1NWYWx1ZT4gdmFsMzsKLSAgICAgICAgaW50IHByb3BJZDEsIHByb3BJZDIsIHByb3BJ
ZDM7CisgICAgICAgIENTU1Byb3BlcnR5SUQgcHJvcElkMSwgcHJvcElkMiwgcHJvcElkMzsKICAg
ICAgICAgaWYgKHBhcnNlVHJhbnNmb3JtT3JpZ2luKHByb3BJZCwgcHJvcElkMSwgcHJvcElkMiwg
cHJvcElkMywgdmFsMSwgdmFsMiwgdmFsMykpIHsKICAgICAgICAgICAgIGFkZFByb3BlcnR5KHBy
b3BJZDEsIHZhbDEucmVsZWFzZSgpLCBpbXBvcnRhbnQpOwogICAgICAgICAgICAgaWYgKHZhbDIp
CkBAIC0yMTIxLDcgKzIxMjEsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJv
cElkLCBib29sIGltcG9ydGFudCkKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0UGVyc3BlY3Rp
dmVPcmlnaW5ZOiB7CiAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMTsKICAgICAgICAgUmVm
UHRyPENTU1ZhbHVlPiB2YWwyOwotICAgICAgICBpbnQgcHJvcElkMSwgcHJvcElkMjsKKyAgICAg
ICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQxLCBwcm9wSWQyOwogICAgICAgICBpZiAocGFyc2VQZXJz
cGVjdGl2ZU9yaWdpbihwcm9wSWQsIHByb3BJZDEsIHByb3BJZDIsIHZhbDEsIHZhbDIpKSB7CiAg
ICAgICAgICAgICBhZGRQcm9wZXJ0eShwcm9wSWQxLCB2YWwxLnJlbGVhc2UoKSwgaW1wb3J0YW50
KTsKICAgICAgICAgICAgIGlmICh2YWwyKQpAQCAtMjU2Niw3ICsyNTY2LDcgQEAgc3RhdGljIGJv
b2wgcGFyc2VCYWNrZ3JvdW5kQ2xpcChDU1NQYXJzZXJWYWx1ZSogcGFyc2VyVmFsdWUsIFJlZlB0
cjxDU1NWYWx1ZT4mIGMKIAogY29uc3QgaW50IGNNYXhGaWxsUHJvcGVydGllcyA9IDk7CiAKLWJv
b2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgQ1NTUHJv
cGVydHlJRCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wgaW1wb3J0YW50KQor
Ym9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHByb3BJZCwg
Y29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcywgaW50IG51bVByb3BlcnRpZXMsIGJvb2wg
aW1wb3J0YW50KQogewogICAgIEFTU0VSVChudW1Qcm9wZXJ0aWVzIDw9IGNNYXhGaWxsUHJvcGVy
dGllcyk7CiAgICAgaWYgKG51bVByb3BlcnRpZXMgPiBjTWF4RmlsbFByb3BlcnRpZXMpCkBAIC0y
NjE1LDcgKzI2MTUsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGaWxsU2hvcnRoYW5kKGludCBw
cm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3BlcnRpZXMsCiAgICAgICAgICAgICBpZiAo
IXBhcnNlZFByb3BlcnR5W2ldKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2
YWwxOwogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4gdmFsMjsKLSAgICAgICAgICAg
ICAgICBpbnQgcHJvcElkMSwgcHJvcElkMjsKKyAgICAgICAgICAgICAgICBDU1NQcm9wZXJ0eUlE
IHByb3BJZDEsIHByb3BJZDI7CiAgICAgICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWUqIHBhcnNl
clZhbHVlID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKICAgICAgICAgICAgICAgICBpZiAocGFy
c2VGaWxsUHJvcGVydHkocHJvcGVydGllc1tpXSwgcHJvcElkMSwgcHJvcElkMiwgdmFsMSwgdmFs
MikpIHsKICAgICAgICAgICAgICAgICAgICAgcGFyc2VkUHJvcGVydHlbaV0gPSBmb3VuZCA9IHRy
dWU7CkBAIC0yODE5LDcgKzI4MTksNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VUcmFuc2l0aW9u
U2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIENT
U1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHByb3BJZCwgY29uc3QgU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJz
ZVNob3J0aGFuZChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgc2hvcnRoYW5kLCBib29sIGltcG9ydGFudCkKIHsKICAgICAvLyBXZSB0cnkgdG8gbWF0
Y2ggYXMgbWFueSBwcm9wZXJ0aWVzIGFzIHBvc3NpYmxlCiAgICAgLy8gV2Ugc2V0IHVwIGFuIGFy
cmF5IG9mIGJvb2xlYW5zIHRvIG1hcmsgd2hpY2ggcHJvcGVydHkgaGFzIGJlZW4gZm91bmQsCkBA
IC0yODY2LDcgKzI4NjYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VTaG9ydGhhbmQoaW50IHBy
b3BJZCwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0
IENTU1Byb3BlcnR5SUQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFy
c2VyOjpwYXJzZTRWYWx1ZXMoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5
SUQgKnByb3BlcnRpZXMsICBib29sIGltcG9ydGFudCkKIHsKICAgICAvKiBGcm9tIHRoZSBDU1Mg
MiBzcGVjcywgOC4zCiAgICAgICogSWYgdGhlcmUgaXMgb25seSBvbmUgdmFsdWUsIGl0IGFwcGxp
ZXMgdG8gYWxsIHNpZGVzLiBJZiB0aGVyZSBhcmUgdHdvIHZhbHVlcywgdGhlIHRvcCBhbmQKQEAg
LTI5MjUsNyArMjkyNSw3IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZTRWYWx1ZXMoaW50IHByb3BJ
ZCwgY29uc3QgQ1NTUHJvcGVydHlJRCAqcHJvcGVydGllcywgIGJvb2wKIH0KIAogLy8gYXV0byB8
IDxpZGVudGlmaWVyPgotYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGFnZShpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVBhZ2UoQ1NTUHJvcGVydHlJRCBwcm9w
SWQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIEFTU0VSVChwcm9wSWQgPT0gQ1NTUHJvcGVydHlQ
YWdlKTsKIApAQCAtMjk0Nyw3ICsyOTQ3LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGFnZShp
bnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIH0KIAogLy8gPGxlbmd0aD57MSwyfSB8IGF1dG8g
fCBbIDxwYWdlLXNpemU+IHx8IFsgcG9ydHJhaXQgfCBsYW5kc2NhcGVdIF0KLWJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVNpemUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCitib29sIENTU1BhcnNl
cjo6cGFyc2VTaXplKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKICAg
ICBBU1NFUlQocHJvcElkID09IENTU1Byb3BlcnR5U2l6ZSk7CiAKQEAgLTMwMjEsNyArMzAyMSw3
IEBAIENTU1BhcnNlcjo6U2l6ZVBhcmFtZXRlclR5cGUgQ1NTUGFyc2VyOjpwYXJzZVNpemVQYXJh
bWV0ZXIoQ1NTVmFsdWVMaXN0KiBwYXJzZWRWCiAKIC8vIFsgPHN0cmluZz4gPHN0cmluZz4gXSsg
fCBpbmhlcml0IHwgbm9uZQogLy8gaW5oZXJpdCBhbmQgbm9uZSBhcmUgaGFuZGxlZCBpbiBwYXJz
ZVZhbHVlLgotYm9vbCBDU1NQYXJzZXI6OnBhcnNlUXVvdGVzKGludCBwcm9wSWQsIGJvb2wgaW1w
b3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlUXVvdGVzKENTU1Byb3BlcnR5SUQgcHJvcElk
LCBib29sIGltcG9ydGFudCkKIHsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXMgPSBD
U1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7CiAgICAgd2hpbGUgKENTU1BhcnNl
clZhbHVlKiB2YWwgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpKSB7CkBAIC0zMDQ0LDcgKzMwNDQs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VRdW90ZXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiAvLyBbIDxzdHJpbmc+IHwgPHVyaT4gfCA8Y291bnRlcj4gfCBhdHRyKFgpIHwgb3Blbi1x
dW90ZSB8IGNsb3NlLXF1b3RlIHwgbm8tb3Blbi1xdW90ZSB8IG5vLWNsb3NlLXF1b3RlIF0rIHwg
aW5oZXJpdAogLy8gaW4gQ1NTIDIuMSB0aGlzIGdvdCBzb21ld2hhdCByZWR1Y2VkOgogLy8gWyA8
c3RyaW5nPiB8IGF0dHIoWCkgfCBvcGVuLXF1b3RlIHwgY2xvc2UtcXVvdGUgfCBuby1vcGVuLXF1
b3RlIHwgbm8tY2xvc2UtcXVvdGUgXSsgfCBpbmhlcml0Ci1ib29sIENTU1BhcnNlcjo6cGFyc2VD
b250ZW50KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNl
Q29udGVudChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFy
YXRlZCgpOwogCkBAIC0zMzQ2LDcgKzMzNDYsNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VGaWxs
UmVwZWF0KFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlMSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFsdQog
ICAgIH0KIH0KIAotUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXpl
KGludCBwcm9wSWQsIGJvb2wmIGFsbG93Q29tbWEpCitQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NQ
YXJzZXI6OnBhcnNlRmlsbFNpemUoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wmIGFsbG93Q29t
bWEpCiB7CiAgICAgYWxsb3dDb21tYSA9IHRydWU7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbHVl
ID0gbV92YWx1ZUxpc3QtPmN1cnJlbnQoKTsKQEAgLTMzNjQsNyArMzM2NCw2IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShpbnQgcHJvcElkLCBib29sJiBh
bGxvd0NvbW1hKQogICAgICAgICBwYXJzZWRWYWx1ZTEgPSBjcmVhdGVQcmltaXRpdmVOdW1lcmlj
VmFsdWUodmFsdWUpOwogICAgIH0KIAotICAgIENTU1Byb3BlcnR5SUQgcHJvcGVydHkgPSBzdGF0
aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wSWQpOwogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVW
YWx1ZT4gcGFyc2VkVmFsdWUyOwogICAgIGlmICgodmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgp
KSkgewogICAgICAgICBpZiAodmFsdWUtPnVuaXQgPT0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9y
ICYmIHZhbHVlLT5pVmFsdWUgPT0gJywnKQpAQCAtMzM3NCw3ICszMzczLDcgQEAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZUZpbGxTaXplKGludCBwcm9wSWQsIGJvb2wmIGFs
bG93Q29tbWEpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBwYXJzZWRW
YWx1ZTIgPSBjcmVhdGVQcmltaXRpdmVOdW1lcmljVmFsdWUodmFsdWUpOwogICAgICAgICB9Ci0g
ICAgfSBlbHNlIGlmICghcGFyc2VkVmFsdWUyICYmIHByb3BlcnR5ID09IENTU1Byb3BlcnR5V2Vi
a2l0QmFja2dyb3VuZFNpemUpIHsKKyAgICB9IGVsc2UgaWYgKCFwYXJzZWRWYWx1ZTIgJiYgcHJv
cElkID09IENTU1Byb3BlcnR5V2Via2l0QmFja2dyb3VuZFNpemUpIHsKICAgICAgICAgLy8gRm9y
IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHdlIHNldCB0aGUgc2Vjb25kIHZhbHVlIHRvIHRoZSBm
aXJzdCBpZiBpdCBpcyBvbWl0dGVkLgogICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gZG8gdGhp
cyBmb3IgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemUuIEl0IHNob3VsZCBiZSBzYWZlIHRvIGxldCBt
YXNrcyBtYXRjaAogICAgICAgICAvLyB0aGUgcmVhbCBwcm9wZXJ0eS4KQEAgLTMzODYsNyArMzM4
NSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlcjo6cGFyc2VGaWxsU2l6ZShpbnQg
cHJvcElkLCBib29sJiBhbGxvd0NvbW1hKQogICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS0+Y3Jl
YXRlVmFsdWUoUGFpcjo6Y3JlYXRlKHBhcnNlZFZhbHVlMS5yZWxlYXNlKCksIHBhcnNlZFZhbHVl
Mi5yZWxlYXNlKCkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlRmlsbFByb3BlcnR5KGlu
dCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLAorYm9vbCBDU1NQYXJzZXI6OnBh
cnNlRmlsbFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcElkLCBDU1NQcm9wZXJ0eUlEJiBwcm9w
SWQxLCBDU1NQcm9wZXJ0eUlEJiBwcm9wSWQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxDU1NWYWx1ZT4mIHJldFZhbHVlMSwgUmVmUHRyPENTU1ZhbHVlPiYgcmV0
VmFsdWUyKQogewogICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHZhbHVlczsKQEAgLTM1MDYsNiAr
MzUwNSw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUZpbGxQcm9wZXJ0eShpbnQgcHJvcElkLCBp
bnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFs
dWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyVmFsdWUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMzcyOCw3ICszNzMwLDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkKICAgICByZXR1cm4gMDsK
IH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkoaW50IHByb3BJZCwg
UmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlQW5pbWF0aW9u
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHJlc3VsdCkK
IHsKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiB2YWx1ZXM7CiAgICAgQ1NTUGFyc2VyVmFsdWUq
IHZhbDsKQEAgLTM3OTUsNiArMzc5Nyw5IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZUFuaW1hdGlv
blByb3BlcnR5KGludCBwcm9wSWQsIFJlZlB0cjxDU1NWYWx1ZT4mIHJlc3VsdCkKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGN1cnJWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmFs
dWVMaXN0LT5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmICghY3VyclZhbHVlKQpAQCAtMzgzMSw3ICszODM2LDcgQEAgYm9vbCBDU1NQYXJz
ZXI6OnBhcnNlQW5pbWF0aW9uUHJvcGVydHkoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYg
cmVzdWx0KQogfQogCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKLWJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZUdyaWRUcmFja0xpc3QoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCitib29sIENT
U1BhcnNlcjo6cGFyc2VHcmlkVHJhY2tMaXN0KENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3Vy
cmVudCgpOwogICAgIGlmICh2YWx1ZS0+aWQgPT0gQ1NTVmFsdWVOb25lKSB7CkBAIC0zODc1LDcg
KzM4ODAsNyBAQCBzdGF0aWMgQ1NTUGFyc2VyVmFsdWUqIHNraXBDb21tYUluRGFzaGJvYXJkUmVn
aW9uKENTU1BhcnNlclZhbHVlTGlzdCAqYXJncykKICAgICByZXR1cm4gYXJncy0+Y3VycmVudCgp
OwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VEYXNoYm9hcmRSZWdpb25zKGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlRGFzaGJvYXJkUmVnaW9ucyhD
U1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgYm9vbCB2YWxpZCA9
IHRydWU7CiAKQEAgLTQwNTIsNyArNDA1Nyw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU1Bh
cnNlcjo6cGFyc2VDb3VudGVyQ29udGVudChDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ3MsIGJvCiAg
ICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVWYWx1ZShDb3VudGVyOjpjcmVhdGUoaWRl
bnRpZmllci5yZWxlYXNlKCksIGxpc3RTdHlsZS5yZWxlYXNlKCksIHNlcGFyYXRvci5yZWxlYXNl
KCkpKTsKIH0KIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ2xpcFNoYXBlKGludCBwcm9wSWQsIGJv
b2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ2xpcFNoYXBlKENTU1Byb3BlcnR5
SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsdWUg
PSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIENTU1BhcnNlclZhbHVlTGlzdCogYXJncyA9
IHZhbHVlLT5mdW5jdGlvbi0+YXJncy5nZXQoKTsKQEAgLTUzOTgsOSArNTQwMyw5IEBAIHN0cnVj
dCBTaGFkb3dQYXJzZUNvbnRleHQgewogICAgIGJvb2wgYWxsb3dCcmVhazsKIH07CiAKLVBhc3NS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlU2hhZG93KENTU1BhcnNlclZhbHVl
TGlzdCogdmFsdWVMaXN0LCBpbnQgcHJvcElkKQorUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENT
U1BhcnNlcjo6cGFyc2VTaGFkb3coQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QsIENTU1By
b3BlcnR5SUQgcHJvcElkKQogewotICAgIFNoYWRvd1BhcnNlQ29udGV4dCBjb250ZXh0KHN0YXRp
Y19jYXN0PENTU1Byb3BlcnR5SUQ+KHByb3BJZCksIHRoaXMpOworICAgIFNoYWRvd1BhcnNlQ29u
dGV4dCBjb250ZXh0KHByb3BJZCwgdGhpcyk7CiAgICAgQ1NTUGFyc2VyVmFsdWUqIHZhbDsKICAg
ICB3aGlsZSAoKHZhbCA9IHZhbHVlTGlzdC0+Y3VycmVudCgpKSkgewogICAgICAgICAvLyBDaGVj
ayBmb3IgYSBjb21tYSBicmVhayBmaXJzdC4KQEAgLTU0MTEsNyArNTQxNiw3IEBAIFBhc3NSZWZQ
dHI8Q1NTVmFsdWVMaXN0PiBDU1NQYXJzZXI6OnBhcnNlU2hhZG93KENTU1BhcnNlclZhbHVlTGlz
dCogdmFsdWVMaXN0LCBpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAjaWYgRU5BQkxFKFNW
RykKICAgICAgICAgICAgIC8vIC13ZWJraXQtc3ZnLXNoYWRvdyBkb2VzIG5vdCBzdXBwb3J0IG11
bHRpcGxlIHZhbHVlcy4KLSAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlE
Pihwcm9wSWQpID09IENTU1Byb3BlcnR5V2Via2l0U3ZnU2hhZG93KQorICAgICAgICAgICAgaWYg
KHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdFN2Z1NoYWRvdykKICAgICAgICAgICAgICAgICBy
ZXR1cm4gMDsKICNlbmRpZgogICAgICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGdvb2QuICBDb21t
aXQgaXQuCkBAIC01NDYzLDcgKzU0NjgsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NT
UGFyc2VyOjpwYXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlTGlzdCwgaQogICAg
IHJldHVybiAwOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VSZWZsZWN0KGludCBwcm9wSWQs
IGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlUmVmbGVjdChDU1NQcm9wZXJ0
eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgLy8gYm94LXJlZmxlY3Q6IDxkaXJl
Y3Rpb24+IDxvZmZzZXQ+IDxtYXNrPgogCkBAIC01NjUwLDcgKzU2NTUsNyBAQCBzdHJ1Y3QgQm9y
ZGVySW1hZ2VQYXJzZUNvbnRleHQgewogICAgICAgICBjb21taXRCb3JkZXJJbWFnZVByb3BlcnR5
KENTU1Byb3BlcnR5Qm9yZGVySW1hZ2VSZXBlYXQsIHBhcnNlciwgbV9yZXBlYXQsIGltcG9ydGFu
dCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21taXRCb3JkZXJJbWFnZVByb3BlcnR5KGludCBwcm9w
SWQsIENTU1BhcnNlciogcGFyc2VyLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQpCisgICAgdm9pZCBjb21taXRCb3JkZXJJbWFnZVByb3BlcnR5KENTU1Byb3BlcnR5
SUQgcHJvcElkLCBDU1NQYXJzZXIqIHBhcnNlciwgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gdmFsdWUs
IGJvb2wgaW1wb3J0YW50KQogICAgIHsKICAgICAgICAgaWYgKHZhbHVlKQogICAgICAgICAgICAg
cGFyc2VyLT5hZGRQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQpOwpAQCAtNTY3Nyw3
ICs1NjgyLDcgQEAgc3RydWN0IEJvcmRlckltYWdlUGFyc2VDb250ZXh0IHsKICAgICBSZWZQdHI8
Q1NTVmFsdWU+IG1fcmVwZWF0OwogfTsKIAotYm9vbCBDU1NQYXJzZXI6OnBhcnNlQm9yZGVySW1h
Z2UoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYgcmVzdWx0LCBib29sIGltcG9ydGFudCkK
K2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlckltYWdlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBS
ZWZQdHI8Q1NTVmFsdWU+JiByZXN1bHQsIGJvb2wgaW1wb3J0YW50KQogewogICAgIFNob3J0aGFu
ZFNjb3BlIHNjb3BlKHRoaXMsIHByb3BJZCk7CiAgICAgQm9yZGVySW1hZ2VQYXJzZUNvbnRleHQg
Y29udGV4dDsKQEAgLTU4NjcsNyArNTg3Miw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2ZpbGw7
CiB9OwogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VCb3JkZXJJbWFnZVNsaWNlKGludCBwcm9wSWQs
IFJlZlB0cjxDU1NCb3JkZXJJbWFnZVNsaWNlVmFsdWU+JiByZXN1bHQpCitib29sIENTU1BhcnNl
cjo6cGFyc2VCb3JkZXJJbWFnZVNsaWNlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBSZWZQdHI8Q1NT
Qm9yZGVySW1hZ2VTbGljZVZhbHVlPiYgcmVzdWx0KQogewogICAgIEJvcmRlckltYWdlU2xpY2VQ
YXJzZUNvbnRleHQgY29udGV4dCh0aGlzKTsKICAgICBDU1NQYXJzZXJWYWx1ZSogdmFsOwpAQCAt
NjAyOSw3ICs2MDM0LDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVCb3JkZXJSYWRpaShSZWZQdHI8
Q1NTUHJpbWl0aXZlVmFsdWU+IHJhZGlpWzRdKQogICAgIHJhZGlpWzNdID0gcmFkaWlbMV07CiB9
CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhpbnQgcHJvcElkLCBib29sIGlt
cG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZUJvcmRlclJhZGl1cyhDU1NQcm9wZXJ0eUlE
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgdW5zaWduZWQgbnVtID0gbV92YWx1ZUxp
c3QtPnNpemUoKTsKICAgICBpZiAobnVtID4gOSkKQEAgLTYxMTcsNyArNjEyMiw3IEBAIGJvb2wg
Q1NTUGFyc2VyOjpwYXJzZUFzcGVjdFJhdGlvKGJvb2wgaW1wb3J0YW50KQogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBk
ZWZhdWx0VmFsdWUsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlQ291bnRl
cihDU1NQcm9wZXJ0eUlEIHByb3BJZCwgaW50IGRlZmF1bHRWYWx1ZSwgYm9vbCBpbXBvcnRhbnQp
CiB7CiAgICAgZW51bSB7IElELCBWQUwgfSBzdGF0ZSA9IElEOwogCkBAIC03MzI0LDcgKzczMjks
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VGbG93VGhyZWFkKGNvbnN0IFN0cmluZyYgZmxvd05h
bWUsIERvY3VtZW50KiBkb2MpCiB9CiAKIC8vIG5vbmUgfCA8aWRlbnQ+Ci1ib29sIENTU1BhcnNl
cjo6cGFyc2VGbG93VGhyZWFkKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBDU1NQ
YXJzZXI6OnBhcnNlRmxvd1RocmVhZChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpCiB7CiAgICAgQVNTRVJUKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dJbnRvKTsK
ICAgICBBU1NFUlQoY3NzUmVnaW9uc0VuYWJsZWQoKSk7CkBAIC03MzU2LDcgKzczNjEsNyBAQCBi
b29sIENTU1BhcnNlcjo6cGFyc2VGbG93VGhyZWFkKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50
KQogfQogCiAvLyAtd2Via2l0LWZsb3ctZnJvbTogbm9uZSB8IDxpZGVudD4KLWJvb2wgQ1NTUGFy
c2VyOjpwYXJzZVJlZ2lvblRocmVhZChpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wg
Q1NTUGFyc2VyOjpwYXJzZVJlZ2lvblRocmVhZChDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiB7CiAgICAgQVNTRVJUKHByb3BJZCA9PSBDU1NQcm9wZXJ0eVdlYmtpdEZsb3dG
cm9tKTsKICAgICBBU1NFUlQoY3NzUmVnaW9uc0VuYWJsZWQoKSk7CkBAIC03Mzg2LDcgKzczOTEs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VSZWdpb25UaHJlYWQoaW50IHByb3BJZCwgYm9vbCBp
bXBvcnRhbnQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRy
YW5zZm9ybU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgaW50
JiBwcm9wSWQzLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSwgUmVmUHRyPENTU1ZhbHVlPiYgdmFs
dWUyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTMpCitib29sIENTU1BhcnNlcjo6cGFyc2VUcmFu
c2Zvcm1PcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3BJZDEs
IENTU1Byb3BlcnR5SUQmIHByb3BJZDIsIENTU1Byb3BlcnR5SUQmIHByb3BJZDMsIFJlZlB0cjxD
U1NWYWx1ZT4mIHZhbHVlLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZTIsIFJlZlB0cjxDU1NWYWx1
ZT4mIHZhbHVlMykKIHsKICAgICBwcm9wSWQxID0gcHJvcElkOwogICAgIHByb3BJZDIgPSBwcm9w
SWQ7CkBAIC03NDIyLDEyICs3NDI3LDE1IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9y
bU9yaWdpbihpbnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgaW50CiAgICAg
ICAgICAgICAgICAgbV92YWx1ZUxpc3QtPm5leHQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICByZXR1cm4gdmFsdWU7
CiB9CiAKLWJvb2wgQ1NTUGFyc2VyOjpwYXJzZVBlcnNwZWN0aXZlT3JpZ2luKGludCBwcm9wSWQs
IGludCYgcHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+JiB2YWx1ZSwgUmVm
UHRyPENTU1ZhbHVlPiYgdmFsdWUyKQorYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGVyc3BlY3RpdmVP
cmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3BlcnR5SUQmIHByb3BJZDEsIENTU1By
b3BlcnR5SUQmIHByb3BJZDIsIFJlZlB0cjxDU1NWYWx1ZT4mIHZhbHVlLCBSZWZQdHI8Q1NTVmFs
dWU+JiB2YWx1ZTIpCiB7CiAgICAgcHJvcElkMSA9IHByb3BJZDsKICAgICBwcm9wSWQyID0gcHJv
cElkOwpAQCAtNzQ1Miw2ICs3NDYwLDkgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlUGVyc3BlY3Rp
dmVPcmlnaW4oaW50IHByb3BJZCwgaW50JiBwcm9wSWQxLCBpbnQmIHByb3BJZDIsIFIKICAgICAg
ICAgICAgICAgICBtX3ZhbHVlTGlzdC0+bmV4dCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB2YWx1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA0YTRiODk3ZDE0MTU3ZmRkMzJlMzcxNTYxMzljZGQ4
ODFmNDcyNGY3Li5jYjhiNzZmYzExYWJkZWIwNmQ2MTJiNDNlNGYyM2EzOTY0YWQyZjg4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
cnNlU2hlZXQoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYsIGludCBzdGFydExpbmVOdW1i
ZXIgPSAwLCBTdHlsZVJ1bGVSYW5nZU1hcCogcnVsZVJhbmdlTWFwID0gMCk7CiAgICAgUGFzc1Jl
ZlB0cjxTdHlsZVJ1bGVCYXNlPiBwYXJzZVJ1bGUoQ1NTU3R5bGVTaGVldCosIGNvbnN0IFN0cmlu
ZyYpOwogICAgIFBhc3NSZWZQdHI8U3R5bGVLZXlmcmFtZT4gcGFyc2VLZXlmcmFtZVJ1bGUoQ1NT
U3R5bGVTaGVldCosIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyBib29sIHBhcnNlVmFsdWUo
U3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0
YW50LCBDU1NQYXJzZXJNb2RlLCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7Cisg
ICAgc3RhdGljIGJvb2wgcGFyc2VWYWx1ZShTdHlsZVByb3BlcnR5U2V0KiwgQ1NTUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiwgYm9vbCwgQ1NTUGFyc2VyTW9kZSwgQ1NTU3R5bGVTaGVldCopOwog
ICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdCQTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiwg
Ym9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgc3RhdGljIGJvb2wgcGFyc2VTeXN0ZW1Db2xvcihS
R0JBMzImIGNvbG9yLCBjb25zdCBTdHJpbmcmLCBEb2N1bWVudCopOwogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VGb250RmFjZVZhbHVlKGNvbnN0IEF0b21pY1N0cmlu
ZyYsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0KTsKQEAgLTg3LDE1ICs4NywxNSBA
QCBwdWJsaWM6CiAKICAgICBDU1NWYWx1ZVBvb2wqIGNzc1ZhbHVlUG9vbCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3NzVmFsdWVQb29sLmdldCgpOyB9CiAKLSAgICB2b2lkIGFkZFByb3BlcnR5KGludCBw
cm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNp
dCA9IGZhbHNlKTsKKyAgICB2b2lkIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFBhc3NSZWZQ
dHI8Q1NTVmFsdWU+LCBib29sLCBib29sIGltcGxpY2l0ID0gZmFsc2UpOwogICAgIHZvaWQgcm9s
bGJhY2tMYXN0UHJvcGVydGllcyhpbnQgbnVtKTsKICAgICBib29sIGhhc1Byb3BlcnRpZXMoKSBj
b25zdCB7IHJldHVybiAhbV9wYXJzZWRQcm9wZXJ0aWVzLmlzRW1wdHkoKTsgfQogCi0gICAgYm9v
bCBwYXJzZVZhbHVlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBib29sIHBhcnNl
U2hvcnRoYW5kKGludCwgY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYsIGJvb2wpOwotICAg
IGJvb2wgcGFyc2U0VmFsdWVzKGludCBwcm9wSWQsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHByb3Bl
cnRpZXMsIGJvb2wgaW1wb3J0YW50KTsKLSAgICBib29sIHBhcnNlQ29udGVudChpbnQgcHJvcElk
LCBib29sIGltcG9ydGFudCk7Ci0gICAgYm9vbCBwYXJzZVF1b3RlcyhpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQsIGJvb2wpOwor
ICAgIGJvb2wgcGFyc2VTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYsIGJvb2wpOworICAgIGJvb2wgcGFyc2U0VmFsdWVzKENTU1Byb3BlcnR5SUQs
IGNvbnN0IENTU1Byb3BlcnR5SUQqLCBib29sKTsKKyAgICBib29sIHBhcnNlQ29udGVudChDU1NQ
cm9wZXJ0eUlELCBib29sKTsKKyAgICBib29sIHBhcnNlUXVvdGVzKENTU1Byb3BlcnR5SUQsIGJv
b2wpOwogCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VBdHRyKENTU1BhcnNlclZhbHVl
TGlzdCogYXJncyk7CiAKQEAgLTExMCwxMCArMTEwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHBh
cnNlRmlsbFBvc2l0aW9uKENTU1BhcnNlclZhbHVlTGlzdCosIFJlZlB0cjxDU1NWYWx1ZT4mLCBS
ZWZQdHI8Q1NTVmFsdWU+Jik7CiAKICAgICB2b2lkIHBhcnNlRmlsbFJlcGVhdChSZWZQdHI8Q1NT
VmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOwotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBh
cnNlRmlsbFNpemUoaW50IHByb3BJZCwgYm9vbCAmYWxsb3dDb21tYSk7CisgICAgUGFzc1JlZlB0
cjxDU1NWYWx1ZT4gcGFyc2VGaWxsU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCAmYWxs
b3dDb21tYSk7CiAKLSAgICBib29sIHBhcnNlRmlsbFByb3BlcnR5KGludCBwcm9wSWQsIGludCYg
cHJvcElkMSwgaW50JiBwcm9wSWQyLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVl
PiYpOwotICAgIGJvb2wgcGFyc2VGaWxsU2hvcnRoYW5kKGludCBwcm9wSWQsIGNvbnN0IENTU1By
b3BlcnR5SUQqIHByb3BlcnRpZXMsIGludCBudW1Qcm9wZXJ0aWVzLCBib29sIGltcG9ydGFudCk7
CisgICAgYm9vbCBwYXJzZUZpbGxQcm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBDU1NQcm9wZXJ0eUlE
JiwgQ1NTUHJvcGVydHlJRCYsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7
CisgICAgYm9vbCBwYXJzZUZpbGxTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCwgY29uc3QgQ1NTUHJv
cGVydHlJRCosIGludCwgYm9vbCk7CiAKICAgICB2b2lkIGFkZEZpbGxWYWx1ZShSZWZQdHI8Q1NT
VmFsdWU+JiBsdmFsLCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBydmFsKTsKIApAQCAtMTMxLDE3ICsx
MzEsMTcgQEAgcHVibGljOgogCiAgICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9yaWdpblNob3J0aGFu
ZChSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4m
KTsKICAgICBib29sIHBhcnNlQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvblZhbHVlKENTU1BhcnNl
clZhbHVlTGlzdComIGFyZ3MsIGRvdWJsZSYgcmVzdWx0KTsKLSAgICBib29sIHBhcnNlQW5pbWF0
aW9uUHJvcGVydHkoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYpOworICAgIGJvb2wgcGFy
c2VBbmltYXRpb25Qcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgUmVmUHRyPENTU1ZhbHVl
PiYpOwogICAgIGJvb2wgcGFyc2VUcmFuc2l0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsK
ICAgICBib29sIHBhcnNlQW5pbWF0aW9uU2hvcnRoYW5kKGJvb2wgaW1wb3J0YW50KTsKIAogI2lm
IEVOQUJMRShDU1NfR1JJRF9MQVlPVVQpCi0gICAgYm9vbCBwYXJzZUdyaWRUcmFja0xpc3QoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VHcmlkVHJhY2tMaXN0KENT
U1Byb3BlcnR5SUQsIGJvb2wpOwogI2VuZGlmCiAKLSAgICBib29sIHBhcnNlRGFzaGJvYXJkUmVn
aW9ucyhpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7CisgICAgYm9vbCBwYXJzZURhc2hib2Fy
ZFJlZ2lvbnMoQ1NTUHJvcGVydHlJRCwgYm9vbCk7CiAKLSAgICBib29sIHBhcnNlQ2xpcFNoYXBl
KGludCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlQ2xpcFNoYXBlKENT
U1Byb3BlcnR5SUQsIGJvb2wpOwogCiAgICAgYm9vbCBwYXJzZUV4Y2x1c2lvblNoYXBlKGJvb2wg
c2hhcGVJbnNpZGUsIGJvb2wgaW1wb3J0YW50KTsKICAgICBQYXNzUmVmUHRyPENTU1dyYXBTaGFw
ZT4gcGFyc2VFeGNsdXNpb25TaGFwZVJlY3QoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzKTsKQEAg
LTE1Miw3ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBwYXJzZUZvbnQoYm9vbCBpbXBvcnRh
bnQpOwogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZUZvbnRGYW1pbHkoKTsKIAot
ICAgIGJvb2wgcGFyc2VDb3VudGVyKGludCBwcm9wSWQsIGludCBkZWZhdWx0VmFsdWUsIGJvb2wg
aW1wb3J0YW50KTsKKyAgICBib29sIHBhcnNlQ291bnRlcihDU1NQcm9wZXJ0eUlELCBpbnQsIGJv
b2wpOwogICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlQ291bnRlckNvbnRlbnQoQ1NTUGFy
c2VyVmFsdWVMaXN0KiBhcmdzLCBib29sIGNvdW50ZXJzKTsKIAogICAgIGJvb2wgcGFyc2VDb2xv
clBhcmFtZXRlcnMoQ1NTUGFyc2VyVmFsdWUqLCBpbnQqIGNvbG9yVmFsdWVzLCBib29sIHBhcnNl
QWxwaGEpOwpAQCAtMTY5LDI0ICsxNjksMjQgQEAgcHVibGljOgogICAgIGJvb2wgcGFyc2VGb250
RmFjZVVuaWNvZGVSYW5nZSgpOwogCiAjaWYgRU5BQkxFKFNWRykKLSAgICBib29sIHBhcnNlU1ZH
VmFsdWUoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VTVkdWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IHBhcnNlU1ZHUGFpbnQoKTsKICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiBwYXJz
ZVNWR0NvbG9yKCk7CiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gcGFyc2VTVkdTdHJva2VEYXNo
YXJyYXkoKTsKICNlbmRpZgogCiAgICAgLy8gQ1NTMyBQYXJzaW5nIFJvdXRpbmVzIChmb3IgcHJv
cGVydGllcyBzcGVjaWZpYyB0byBDU1MzKQotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBw
YXJzZVNoYWRvdyhDU1NQYXJzZXJWYWx1ZUxpc3QqLCBpbnQgcHJvcElkKTsKLSAgICBib29sIHBh
cnNlQm9yZGVySW1hZ2UoaW50IHByb3BJZCwgUmVmUHRyPENTU1ZhbHVlPiYsIGJvb2wgaW1wb3J0
YW50ID0gZmFsc2UpOworICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBwYXJzZVNoYWRvdyhD
U1NQYXJzZXJWYWx1ZUxpc3QqLCBDU1NQcm9wZXJ0eUlEKTsKKyAgICBib29sIHBhcnNlQm9yZGVy
SW1hZ2UoQ1NTUHJvcGVydHlJRCwgUmVmUHRyPENTU1ZhbHVlPiYsIGJvb2wgaW1wb3J0YW50ID0g
ZmFsc2UpOwogICAgIGJvb2wgcGFyc2VCb3JkZXJJbWFnZVJlcGVhdChSZWZQdHI8Q1NTVmFsdWU+
Jik7Ci0gICAgYm9vbCBwYXJzZUJvcmRlckltYWdlU2xpY2UoaW50IHByb3BJZCwgUmVmUHRyPENT
U0JvcmRlckltYWdlU2xpY2VWYWx1ZT4mKTsKKyAgICBib29sIHBhcnNlQm9yZGVySW1hZ2VTbGlj
ZShDU1NQcm9wZXJ0eUlELCBSZWZQdHI8Q1NTQm9yZGVySW1hZ2VTbGljZVZhbHVlPiYpOwogICAg
IGJvb2wgcGFyc2VCb3JkZXJJbWFnZVdpZHRoKFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4mKTsK
ICAgICBib29sIHBhcnNlQm9yZGVySW1hZ2VPdXRzZXQoUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiYpOwotICAgIGJvb2wgcGFyc2VCb3JkZXJSYWRpdXMoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRh
bnQpOworICAgIGJvb2wgcGFyc2VCb3JkZXJSYWRpdXMoQ1NTUHJvcGVydHlJRCwgYm9vbCk7CiAK
ICAgICBib29sIHBhcnNlQXNwZWN0UmF0aW8oYm9vbCBpbXBvcnRhbnQpOwogCi0gICAgYm9vbCBw
YXJzZVJlZmxlY3QoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wgcGFyc2VS
ZWZsZWN0KENTU1Byb3BlcnR5SUQsIGJvb2wgaW1wb3J0YW50KTsKIAogICAgIFBhc3NSZWZQdHI8
Q1NTRmxleFZhbHVlPiBwYXJzZUZsZXgoQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdzKTsKIApAQCAt
MjEzLDggKzIxMyw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgUGFzc1JlZlB0cjxDU1NWYWx1
ZUxpc3Q+IHBhcnNlVHJhbnNmb3JtKCk7Ci0gICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9yaWdpbihp
bnQgcHJvcElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgaW50JiBwcm9wSWQzLCBSZWZQ
dHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKLSAg
ICBib29sIHBhcnNlUGVyc3BlY3RpdmVPcmlnaW4oaW50IHByb3BJZCwgaW50JiBwcm9wSWQxLCBp
bnQmIHByb3BJZDIsICBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYpOworICAg
IGJvb2wgcGFyc2VUcmFuc2Zvcm1PcmlnaW4oQ1NTUHJvcGVydHlJRCBwcm9wSWQsIENTU1Byb3Bl
cnR5SUQmIHByb3BJZDEsIENTU1Byb3BlcnR5SUQmIHByb3BJZDIsIENTU1Byb3BlcnR5SUQmIHBy
b3BJZDMsIFJlZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+JiwgUmVmUHRyPENTU1Zh
bHVlPiYpOworICAgIGJvb2wgcGFyc2VQZXJzcGVjdGl2ZU9yaWdpbihDU1NQcm9wZXJ0eUlEIHBy
b3BJZCwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMSwgQ1NTUHJvcGVydHlJRCYgcHJvcElkMiwgIFJl
ZlB0cjxDU1NWYWx1ZT4mLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKICAgICBib29sIHBhcnNlVGV4
dEVtcGhhc2lzU3R5bGUoYm9vbCBpbXBvcnRhbnQpOwogCkBAIC0yMjYsOCArMjI2LDggQEAgcHVi
bGljOgogCiAgICAgYm9vbCBjc3NSZWdpb25zRW5hYmxlZCgpIGNvbnN0OwogICAgIGJvb2wgcGFy
c2VGbG93VGhyZWFkKGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIERvY3VtZW50Kik7Ci0gICAgYm9v
bCBwYXJzZUZsb3dUaHJlYWQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwotICAgIGJvb2wg
cGFyc2VSZWdpb25UaHJlYWQoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOworICAgIGJvb2wg
cGFyc2VGbG93VGhyZWFkKENTU1Byb3BlcnR5SUQsIGJvb2wpOworICAgIGJvb2wgcGFyc2VSZWdp
b25UaHJlYWQoQ1NTUHJvcGVydHlJRCwgYm9vbCk7CiAKICAgICBib29sIHBhcnNlRm9udFZhcmlh
bnRMaWdhdHVyZXMoYm9vbCBpbXBvcnRhbnQpOwogCkBAIC0yODksNyArMjg5LDcgQEAgcHVibGlj
OgogCiAgICAgQ1NTUGFyc2VyTW9kZSBtX2Nzc1BhcnNlck1vZGU7CiAgICAgYm9vbCBtX2ltcG9y
dGFudDsKLSAgICBpbnQgbV9pZDsKKyAgICBDU1NQcm9wZXJ0eUlEIG1faWQ7CiAgICAgQ1NTU3R5
bGVTaGVldCogbV9zdHlsZVNoZWV0OwogICAgIFJlZlB0cjxTdHlsZVJ1bGVCYXNlPiBtX3J1bGU7
CiAgICAgUmVmUHRyPFN0eWxlS2V5ZnJhbWU+IG1fa2V5ZnJhbWU7CkBAIC0zNjksNyArMzY5LDcg
QEAgcHJpdmF0ZToKICAgICBib29sIGlzR2VuZXJhdGVkSW1hZ2VWYWx1ZShDU1NQYXJzZXJWYWx1
ZSopIGNvbnN0OwogICAgIGJvb2wgcGFyc2VHZW5lcmF0ZWRJbWFnZShDU1NQYXJzZXJWYWx1ZUxp
c3QqLCBSZWZQdHI8Q1NTVmFsdWU+Jik7CiAKLSAgICBib29sIHBhcnNlVmFsdWUoU3R5bGVQcm9w
ZXJ0eVNldCosIGludCBwcm9wSWQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NT
dHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCk7CisgICAgYm9vbCBwYXJzZVZhbHVlKFN0eWxl
UHJvcGVydHlTZXQqLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFu
dCwgQ1NTU3R5bGVTaGVldCopOwogCiAgICAgZW51bSBTaXplUGFyYW1ldGVyVHlwZSB7CiAgICAg
ICAgIE5vbmUsCkBAIC0zNzksOCArMzc5LDggQEAgcHJpdmF0ZToKICAgICAgICAgT3JpZW50YXRp
b24sCiAgICAgfTsKIAotICAgIGJvb2wgcGFyc2VQYWdlKGludCBwcm9wSWQsIGJvb2wgaW1wb3J0
YW50KTsKLSAgICBib29sIHBhcnNlU2l6ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCk7Cisg
ICAgYm9vbCBwYXJzZVBhZ2UoQ1NTUHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KTsK
KyAgICBib29sIHBhcnNlU2l6ZShDU1NQcm9wZXJ0eUlEIHByb3BJZCwgYm9vbCBpbXBvcnRhbnQp
OwogICAgIFNpemVQYXJhbWV0ZXJUeXBlIHBhcnNlU2l6ZVBhcmFtZXRlcihDU1NWYWx1ZUxpc3Qq
IHBhcnNlZFZhbHVlcywgQ1NTUGFyc2VyVmFsdWUqIHZhbHVlLCBTaXplUGFyYW1ldGVyVHlwZSBw
cmV2UGFyYW1UeXBlKTsKIAogICAgIGJvb2wgcGFyc2VGb250RmFjZVNyY1VSSShDU1NWYWx1ZUxp
c3QqKTsKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIGNzc1Byb3BlcnR5TmFtZUlPU0FsaWFzaW5n
KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgY29uc3QgY2hhciomIHByb3BlcnR5TgogY2xhc3Mg
U2hvcnRoYW5kU2NvcGUgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIFNob3J0aGFuZFNjb3BlKENTU1BhcnNlciogcGFyc2VyLCBpbnQgcHJvcElkKSA6IG1fcGFy
c2VyKHBhcnNlcikKKyAgICBTaG9ydGhhbmRTY29wZShDU1NQYXJzZXIqIHBhcnNlciwgQ1NTUHJv
cGVydHlJRCBwcm9wSWQpIDogbV9wYXJzZXIocGFyc2VyKQogICAgIHsKICAgICAgICAgaWYgKCEo
bV9wYXJzZXItPm1faW5QYXJzZVNob3J0aGFuZCsrKSkKICAgICAgICAgICAgIG1fcGFyc2VyLT5t
X2N1cnJlbnRTaG9ydGhhbmQgPSBwcm9wSWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcApp
bmRleCAxOTU3OGRlNmExZjUxNTZiM2NmMWE5ZDlhMWJmMTUyYzMzZmZjYzY4Li5hZDg3OTdhZWMw
OTViZDMyNjdkZjQ5NDY0ZWMwN2I1ZTNkYjE5NTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
eS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgdm9pZCBDU1NQcm9wZXJ0eTo6d3JhcFZhbHVlSW5Db21t
YVNlcGFyYXRlZExpc3QoKQogZW51bSBMb2dpY2FsQm94U2lkZSB7IEJlZm9yZVNpZGUsIEVuZFNp
ZGUsIEFmdGVyU2lkZSwgU3RhcnRTaWRlIH07CiBlbnVtIFBoeXNpY2FsQm94U2lkZSB7IFRvcFNp
ZGUsIFJpZ2h0U2lkZSwgQm90dG9tU2lkZSwgTGVmdFNpZGUgfTsKIAotc3RhdGljIGludCByZXNv
bHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHREaXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9k
ZSB3cml0aW5nTW9kZSwgTG9naWNhbEJveFNpZGUgbG9naWNhbFNpZGUsIGNvbnN0IFN0eWxlUHJv
cGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZCkKK3N0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVU
b1BoeXNpY2FsUHJvcGVydHkoVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24sIFdyaXRpbmdNb2RlIHdy
aXRpbmdNb2RlLCBMb2dpY2FsQm94U2lkZSBsb2dpY2FsU2lkZSwgY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogewogICAgIGlmIChkaXJlY3Rpb24gPT0gTFRSKSB7CiAg
ICAgICAgIGlmICh3cml0aW5nTW9kZSA9PSBUb3BUb0JvdHRvbVdyaXRpbmdNb2RlKSB7CkBAIC0x
NTcsNyArMTU3LDcgQEAgc3RhdGljIGludCByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KFRleHRE
aXJlY3Rpb24gZGlyZWN0aW9uLCBXcml0aW5nTW9kZSB3cml0aW4KIAogZW51bSBMb2dpY2FsRXh0
ZW50IHsgTG9naWNhbFdpZHRoLCBMb2dpY2FsSGVpZ2h0IH07CiAKLXN0YXRpYyBpbnQgcmVzb2x2
ZVRvUGh5c2ljYWxQcm9wZXJ0eShXcml0aW5nTW9kZSB3cml0aW5nTW9kZSwgTG9naWNhbEV4dGVu
dCBsb2dpY2FsU2lkZSwgY29uc3QgQ1NTUHJvcGVydHlJRCogcHJvcGVydGllcykKK3N0YXRpYyBD
U1NQcm9wZXJ0eUlEIHJlc29sdmVUb1BoeXNpY2FsUHJvcGVydHkoV3JpdGluZ01vZGUgd3JpdGlu
Z01vZGUsIExvZ2ljYWxFeHRlbnQgbG9naWNhbFNpZGUsIGNvbnN0IENTU1Byb3BlcnR5SUQqIHBy
b3BlcnRpZXMpCiB7CiAgICAgaWYgKHdyaXRpbmdNb2RlID09IFRvcFRvQm90dG9tV3JpdGluZ01v
ZGUgfHwgd3JpdGluZ01vZGUgPT0gQm90dG9tVG9Ub3BXcml0aW5nTW9kZSkKICAgICAgICAgcmV0
dXJuIHByb3BlcnRpZXNbbG9naWNhbFNpZGVdOwpAQCAtMTcxLDkgKzE3MSw5IEBAIHN0YXRpYyBj
b25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiBib3JkZXJEaXJlY3Rpb25zKCkKICAgICByZXR1
cm4gYm9yZGVyRGlyZWN0aW9uczsKIH0KIAotaW50IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0
aW9uQXdhcmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24s
IFdyaXRpbmdNb2RlIHdyaXRpbmdNb2RlKQorQ1NTUHJvcGVydHlJRCBDU1NQcm9wZXJ0eTo6cmVz
b2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbiwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpCiB7Ci0gICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eUlEPihwcm9wZXJ0eUlEKSkgeworICAgIHN3aXRj
aCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJnaW5FbmQ6CiAg
ICAgICAgIHJldHVybiByZXNvbHZlVG9QaHlzaWNhbFByb3BlcnR5KGRpcmVjdGlvbiwgd3JpdGlu
Z01vZGUsIEVuZFNpZGUsIG1hcmdpblNob3J0aGFuZCgpKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0TWFyZ2luU3RhcnQ6CkBAIC0yNTEsOSArMjUxLDkgQEAgaW50IENTU1Byb3BlcnR5Ojpy
ZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgVGV4dERpcmVjdGlv
biBkaXIKICAgICB9CiB9CiAKLWJvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHko
dW5zaWduZWQgcHJvcGVydHlJRCkKK2Jvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8
Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpIHsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsK
ICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyQ29sbGFwc2U6CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eUJvcmRlclNwYWNpbmc6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNhcHRpb25TaWRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydHkuaAppbmRleCBiOTRmOTBhZDkwYzY3ZTFiZDRiY2ZjZGM0YTgyMTg3NTNj
NTg4NTQ2Li4xMjIwZDE3MjcyMGYzMWQ4ODVlNGIwMDNiNTQ5OWY4MGY1ZDhkZjkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHkuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENTU1Byb3BlcnR5IHsKIHB1YmxpYzoKLSAgICBDU1NQcm9wZXJ0eSh1bnNpZ25l
ZCBwcm9wSUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZh
bHNlLCBpbnQgc2hvcnRoYW5kSUQgPSAwLCBib29sIGltcGxpY2l0ID0gZmFsc2UpCisgICAgQ1NT
UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wSUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZhbHVl
LCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBpbnQgc2hvcnRoYW5kSUQgPSAwLCBib29sIGltcGxp
Y2l0ID0gZmFsc2UpCiAgICAgICAgIDogbV9pZChwcm9wSUQpCiAgICAgICAgICwgbV9zaG9ydGhh
bmRJRChzaG9ydGhhbmRJRCkKICAgICAgICAgLCBtX2ltcG9ydGFudChpbXBvcnRhbnQpCkBAIC01
NSw4ICs1NSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd3JhcFZhbHVlSW5Db21tYVNlcGFyYXRl
ZExpc3QoKTsKIAotICAgIHN0YXRpYyBpbnQgcmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHko
aW50IHByb3BlcnR5SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdNb2RlKTsKLSAgICBzdGF0aWMg
Ym9vbCBpc0luaGVyaXRlZFByb3BlcnR5KHVuc2lnbmVkIHByb3BlcnR5SUQpOworICAgIHN0YXRp
YyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVEaXJlY3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5
SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdNb2RlKTsKKyAgICBzdGF0aWMgYm9vbCBpc0luaGVy
aXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogCiBwcml2YXRlOgogICAgIC8vIE1ha2Ugc3Vy
ZSB0aGUgZm9sbG93aW5nIGZpdHMgaW4gNCBieXRlcy4gUmVhbGx5LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDVlNmQwZTk4YmIzNWM4NDI5ZTM3MTYzNmIwYjg0
ZGE1ODk4NWU4OTIuLjA4NWNmNzY4ZmQ3M2E2NDEzNjBhOTM1YjA1NjMyM2M0ZmYxOGQwM2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTI1OTMsNyArMjU5Myw3
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJv
cGVydHlTZXQqIHByb3BlcnRpZXMsIFN0eWxlCiAgICAgICAgICAgICBBU1NFUlQoIWN1cnJlbnQu
dmFsdWUoKS0+aXNJbmhlcml0ZWRWYWx1ZSgpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIGludCBwcm9wZXJ0eSA9IGN1cnJlbnQuaWQoKTsKKyAgICAgICAgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSA9IGN1cnJlbnQuaWQoKTsKIAogICAgICAgICBpZiAoZmlsdGVy
UmVnaW9uUHJvcGVydGllcyAmJiAhQ1NTU3R5bGVTZWxlY3Rvcjo6aXNWYWxpZFJlZ2lvblN0eWxl
UHJvcGVydHkocHJvcGVydHkpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0yOTI3LDcgKzI5
MjcsNyBAQCBDU1NTdHlsZVJ1bGUqIENTU1N0eWxlU2VsZWN0b3I6OmVuc3VyZUZ1bGxDU1NPTVdy
YXBwZXJGb3JJbnNwZWN0b3IoU3R5bGVSdWxlKiBydQogICAgIHJldHVybiBtX3N0eWxlUnVsZVRv
Q1NTT01XcmFwcGVyTWFwLmdldChydWxlKS5nZXQoKTsKIH0KIAotdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5VG9TdHlsZShpbnQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVy
U3R5bGUqIHN0eWxlKQordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5VG9TdHls
ZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSkK
IHsKICAgICBpbml0RWxlbWVudCgwKTsKICAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKDAsIHN0eWxl
KTsKQEAgLTI5MzUsMTUgKzI5MzUsMTUgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVBy
b3BlcnR5VG9TdHlsZShpbnQgaWQsIENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUKICAgICBh
cHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoaWQsIHZhbHVlKTsKIH0KIAotdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjphcHBseVByb3BlcnR5VG9DdXJyZW50U3R5bGUoaW50IGlkLCBDU1NWYWx1ZSog
dmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHlUb0N1cnJlbnRTdHls
ZShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSogdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVlKQog
ICAgICAgICBhcHBseVByb3BlcnR5KGlkLCB2YWx1ZSk7CiB9CiAKLWlubGluZSBib29sIGlzVmFs
aWRWaXNpdGVkTGlua1Byb3BlcnR5KGludCBpZCkKK2lubGluZSBib29sIGlzVmFsaWRWaXNpdGVk
TGlua1Byb3BlcnR5KENTU1Byb3BlcnR5SUQgaWQpCiB7Ci0gICAgc3dpdGNoKHN0YXRpY19jYXN0
PENTU1Byb3BlcnR5SUQ+KGlkKSkgeworICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRl
ckxlZnRDb2xvcjoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUJvcmRlclJpZ2h0Q29sb3I6CkBA
IC0yOTc3LDkgKzI5NzcsOSBAQCBpbmxpbmUgYm9vbCBpc1ZhbGlkVmlzaXRlZExpbmtQcm9wZXJ0
eShpbnQgaWQpCiAKIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8jdGhl
LWF0LXJlZ2lvbi1zdHlsZS1ydWxlCiAvLyBGSVhNRTogYWRkIGluY3JlbWVudGFsIHN1cHBvcnQg
Zm9yIG90aGVyIHJlZ2lvbiBzdHlsaW5nIHByb3BlcnRpZXMuCi1pbmxpbmUgYm9vbCBDU1NTdHls
ZVNlbGVjdG9yOjppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShpbnQgaWQpCitpbmxpbmUgYm9v
bCBDU1NTdHlsZVNlbGVjdG9yOjppc1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEIGlkKQogewotICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpKSB7
CisgICAgc3dpdGNoIChpZCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3I6
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CkBAIC0zMDY0LDcgKzMwNjQsNyBA
QCBzdGF0aWMgYm9vbCBjcmVhdGVHcmlkUG9zaXRpb24oQ1NTVmFsdWUqIHZhbHVlLCBMZW5ndGgm
IHBvc2l0aW9uKQogfQogI2VuZGlmCiAKLXZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSAqdmFsdWUpCiB7CiAgICAgYm9v
bCBpc0luaGVyaXQgPSBtX3BhcmVudE5vZGUgJiYgdmFsdWUtPmlzSW5oZXJpdGVkVmFsdWUoKTsK
ICAgICBib29sIGlzSW5pdGlhbCA9IHZhbHVlLT5pc0luaXRpYWxWYWx1ZSgpIHx8ICghbV9wYXJl
bnROb2RlICYmIHZhbHVlLT5pc0luaGVyaXRlZFZhbHVlKCkpOwpAQCAtMzA3NiwxMyArMzA3Niwx
MSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1
ZSAqdmFsdWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5ID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4oaWQpOwotCi0gICAgaWYgKGlzSW5o
ZXJpdCAmJiBtX3BhcmVudFN0eWxlICYmICFtX3BhcmVudFN0eWxlLT5oYXNFeHBsaWNpdGx5SW5o
ZXJpdGVkUHJvcGVydGllcygpICYmICFDU1NQcm9wZXJ0eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShw
cm9wZXJ0eSkpCisgICAgaWYgKGlzSW5oZXJpdCAmJiBtX3BhcmVudFN0eWxlICYmICFtX3BhcmVu
dFN0eWxlLT5oYXNFeHBsaWNpdGx5SW5oZXJpdGVkUHJvcGVydGllcygpICYmICFDU1NQcm9wZXJ0
eTo6aXNJbmhlcml0ZWRQcm9wZXJ0eShpZCkpCiAgICAgICAgIG1fcGFyZW50U3R5bGUtPnNldEhh
c0V4cGxpY2l0bHlJbmhlcml0ZWRQcm9wZXJ0aWVzKCk7CiAKICAgICAvLyBjaGVjayBsb29rdXAg
dGFibGUgZm9yIGltcGxlbWVudGF0aW9ucyBhbmQgdXNlIHdoZW4gYXZhaWxhYmxlCi0gICAgY29u
c3QgUHJvcGVydHlIYW5kbGVyJiBoYW5kbGVyID0gbV9hcHBseVByb3BlcnR5LnByb3BlcnR5SGFu
ZGxlcihwcm9wZXJ0eSk7CisgICAgY29uc3QgUHJvcGVydHlIYW5kbGVyJiBoYW5kbGVyID0gbV9h
cHBseVByb3BlcnR5LnByb3BlcnR5SGFuZGxlcihpZCk7CiAgICAgaWYgKGhhbmRsZXIuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIGlmIChpc0luaGVyaXQpCiAgICAgICAgICAgICBoYW5kbGVyLmFwcGx5
SW5oZXJpdFZhbHVlKHRoaXMpOwpAQCAtMzEwMCw3ICszMDk4LDcgQEAgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZhbHVlKQogICAgIC8vIFdo
YXQgZm9sbG93cyBpcyBhIGxpc3QgdGhhdCBtYXBzIHRoZSBDU1MgcHJvcGVydGllcyBpbnRvIHRo
ZWlyIGNvcnJlc3BvbmRpbmcgZnJvbnQtZW5kCiAgICAgLy8gUmVuZGVyU3R5bGUgdmFsdWVzLiAg
U2hvcnRoYW5kcyAoZS5nLiBib3JkZXIsIGJhY2tncm91bmQpIG9jY3VyIGluIHRoaXMgbGlzdCBh
cyB3ZWxsIGFuZAogICAgIC8vIGFyZSBvbmx5IGhpdCB3aGVuIG1hcHBpbmcgImluaGVyaXQiIG9y
ICJpbml0aWFsIiBpbnRvIGZyb250LWVuZCB2YWx1ZXMuCi0gICAgc3dpdGNoIChwcm9wZXJ0eSkg
eworICAgIHN3aXRjaCAoaWQpIHsKIC8vIGxpc3RzCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbnRl
bnQ6CiAgICAgICAgIC8vIGxpc3Qgb2Ygc3RyaW5nLCB1cmksIGNvdW50ZXIsIGF0dHIsIGkKQEAg
LTM0NjAsNyArMzQ1OCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShp
bnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICAgICAgICAgIHJlZmxlY3Rpb24tPnNldE9mZnNl
dChyZWZsZWN0VmFsdWUtPm9mZnNldCgpLT5jb252ZXJ0VG9MZW5ndGg8Rml4ZWRJbnRlZ2VyQ29u
dmVyc2lvbiB8IFBlcmNlbnRDb252ZXJzaW9uIHwgQ2FsY3VsYXRlZENvbnZlcnNpb24+KHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwogICAgICAgICBOaW5lUGllY2VJ
bWFnZSBtYXNrOwogICAgICAgICBtYXNrLnNldE1hc2tEZWZhdWx0cygpOwotICAgICAgICBtYXBO
aW5lUGllY2VJbWFnZShwcm9wZXJ0eSwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOworICAg
ICAgICBtYXBOaW5lUGllY2VJbWFnZShpZCwgcmVmbGVjdFZhbHVlLT5tYXNrKCksIG1hc2spOwog
ICAgICAgICByZWZsZWN0aW9uLT5zZXRNYXNrKG1hc2spOwogCiAgICAgICAgIG1fc3R5bGUtPnNl
dEJveFJlZmxlY3QocmVmbGVjdGlvbi5yZWxlYXNlKCkpOwpAQCAtMzc0Miw3ICszNzQwLDcgQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludCBpZCwgQ1NTVmFsdWUgKnZh
bHVlKQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXhMb2dpY2FsV2lkdGg6CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVdlYmtpdE1heExvZ2ljYWxIZWlnaHQ6CiAgICAgewotICAgICAgICBpbnQg
bmV3SWQgPSBDU1NQcm9wZXJ0eTo6cmVzb2x2ZURpcmVjdGlvbkF3YXJlUHJvcGVydHkoaWQsIG1f
c3R5bGUtPmRpcmVjdGlvbigpLCBtX3N0eWxlLT53cml0aW5nTW9kZSgpKTsKKyAgICAgICAgQ1NT
UHJvcGVydHlJRCBuZXdJZCA9IENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0aW9uQXdhcmVQcm9w
ZXJ0eShpZCwgbV9zdHlsZS0+ZGlyZWN0aW9uKCksIG1fc3R5bGUtPndyaXRpbmdNb2RlKCkpOwog
ICAgICAgICBBU1NFUlQobmV3SWQgIT0gaWQpOwogICAgICAgICByZXR1cm4gYXBwbHlQcm9wZXJ0
eShuZXdJZCwgdmFsdWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5o
CmluZGV4IGU0YmI1NDEwNDM1NDVhZDk2Y2UwNzNkNjEyODE5MTk3NDlhNzM5OTMuLmY5OWE2Nzhi
NDlkYjU2N2MxN2M5ZDhlOGYwYjY1ZjBjYjNjOGNiYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuaApAQCAtMjAxLDkgKzIwMSw5IEBAIHB1YmxpYzoKIHB1YmxpYzoKICAgICB2
b2lkIHNldFN0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHMpIHsgbV9zdHlsZSA9IHM7IH0g
Ly8gVXNlZCBieSB0aGUgZG9jdW1lbnQgd2hlbiBzZXR0aW5nIHVwIGl0cyByb290IHN0eWxlLgog
Ci0gICAgdm9pZCBhcHBseVByb3BlcnR5VG9TdHlsZShpbnQgaWQsIENTU1ZhbHVlKiwgUmVuZGVy
U3R5bGUqKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHlUb1N0eWxlKENTU1Byb3BlcnR5SUQsIENT
U1ZhbHVlKiwgUmVuZGVyU3R5bGUqKTsKIAotICAgIHZvaWQgYXBwbHlQcm9wZXJ0eVRvQ3VycmVu
dFN0eWxlKGludCBpZCwgQ1NTVmFsdWUqKTsKKyAgICB2b2lkIGFwcGx5UHJvcGVydHlUb0N1cnJl
bnRTdHlsZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZSopOwogCiAgICAgdm9pZCB1cGRhdGVGb250
KCk7CiAKQEAgLTM1Niw3ICszNTYsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxib29sIGZp
cnN0UGFzcz4KICAgICB2b2lkIGFwcGx5UHJvcGVydGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0
KiBwcm9wZXJ0aWVzLCBTdHlsZVJ1bGUqLCBib29sIGlzSW1wb3J0YW50LCBib29sIGluaGVyaXRl
ZE9ubHksIGJvb2wgZmlsdGVyUmVnaW9uUHJvcGVydGllcyk7CiAKLSAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkUmVnaW9uU3R5bGVQcm9wZXJ0eShpbnQgaWQpOworICAgIHN0YXRpYyBib29sIGlzVmFs
aWRSZWdpb25TdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogCiAgICAgdm9pZCBtYXRjaFBh
Z2VSdWxlcyhNYXRjaFJlc3VsdCYsIFJ1bGVTZXQqLCBib29sIGlzTGVmdFBhZ2UsIGJvb2wgaXNG
aXJzdFBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU5hbWUpOwogICAgIHZvaWQgbWF0Y2hQYWdlUnVs
ZXNGb3JMaXN0KFZlY3RvcjxTdHlsZVJ1bGVQYWdlKj4mIG1hdGNoZWRSdWxlcywgY29uc3QgVmVj
dG9yPFN0eWxlUnVsZVBhZ2UqPiYsIGJvb2wgaXNMZWZ0UGFnZSwgYm9vbCBpc0ZpcnN0UGFnZSwg
Y29uc3QgU3RyaW5nJiBwYWdlTmFtZSk7CkBAIC00MzAsMTAgKzQzMCwxMCBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1lbnQq
KSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlKik7Cisg
ICAgdm9pZCBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CiAKICNpZiBF
TkFCTEUoU1ZHKQotICAgIHZvaWQgYXBwbHlTVkdQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlKik7
CisgICAgdm9pZCBhcHBseVNWR1Byb3BlcnR5KENTU1Byb3BlcnR5SUQsIENTU1ZhbHVlKik7CiAj
ZW5kaWYKIAogICAgIFBhc3NSZWZQdHI8U3R5bGVJbWFnZT4gbG9hZFBlbmRpbmdJbWFnZShTdHls
ZVBlbmRpbmdJbWFnZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCA3OGUzNTE2YzNkYzA0ZDczNjg5OTJmOGFk
MmI4MGFlYzI5YjVmZTJhLi5lOWI0MWEzZjY2MTllM2IzZDY2ODkwYWJmNzMyNmQzODc2OTZjNWQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xh
cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uLmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29u
CiAjaWYgRU5BQkxFKE1VVEFUSU9OX09CU0VSVkVSUykKICAgICBTdHlsZUF0dHJpYnV0ZU11dGF0
aW9uU2NvcGUgbXV0YXRpb25TY29wZSh0aGlzKTsKICNlbmRpZgotICAgIGludCBwcm9wZXJ0eUlE
ID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOworICAgIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3BlcnR5SUQp
CiAgICAgICAgIHJldHVybjsKICAgICBib29sIGltcG9ydGFudCA9IHByaW9yaXR5LmZpbmQoImlt
cG9ydGFudCIsIDAsIGZhbHNlKSAhPSBub3RGb3VuZDsKQEAgLTIzMCw3ICsyMzAsNyBAQCBTdHJp
bmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpyZW1vdmVQcm9wZXJ0eShjb25zdCBT
dHJpbmcmIHByb3BlcnR5TmFtZQogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAg
U3R5bGVBdHRyaWJ1dGVNdXRhdGlvblNjb3BlIG11dGF0aW9uU2NvcGUodGhpcyk7CiAjZW5kaWYK
LSAgICBpbnQgcHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKKyAgICBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBjc3NQcm9wZXJ0eUlEKHByb3BlcnR5TmFtZSk7CiAg
ICAgaWYgKCFwcm9wZXJ0eUlEKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgZWMgPSAw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAppbmRleCA3ZWYzYjA3ZDM5ZmI4Y2ZhMWM0MjM2NjEzODZlOTFmNWZiZDg4ZWY3
Li5kNjBiZGYyNTFmZWI0ZGE2MmJlN2Y1ODNmOGY0MGVkM2YyYjg1NWJmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApA
QCAtNjgsNyArNjgsNyBAQCBQYXNzUmVmUHRyPFNWR1BhaW50PiBDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb246OmFkanVzdFNWR1BhaW50Rm9yQ3VycmVudENvbG9yKAogICAgIHJldHVybiBwYWlu
dC5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbjo6Z2V0U1ZHUHJvcGVydHlDU1NWYWx1ZShpbnQgcHJvcGVydHlJRCwgRVVwZGF0
ZUxheW91dCB1cGRhdGVMYXlvdXQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1ZhbHVlPiBDU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFNWR1Byb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlELCBFVXBkYXRlTGF5b3V0IHVwZGF0ZUxheW91dCkgY29uc3QKIHsKICAgICBO
b2RlKiBub2RlID0gbV9ub2RlLmdldCgpOwogICAgIGlmICghbm9kZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1BhcnNlci5jcHAKaW5kZXggNDM0YWQyZWZiYmZkYjVlZTZkNjE5NjY2NjRkOGYxNGE0ZGNl
ZTM4NC4uZDNlYzA2ZWU5NTg3NDE3MWU4YmRlNjZkZWE2YWI0MWZkMzk3ZDA2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1NWR0NTU1BhcnNlci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIENTU1BhcnNlcjo6cGFyc2VTVkdW
YWx1ZShpbnQgcHJvcElkLCBib29sIGltcG9ydGFudCkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZVNW
R1ZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcElkLCBib29sIGltcG9ydGFudCkKIHsKICAgICBDU1NQ
YXJzZXJWYWx1ZSogdmFsdWUgPSBtX3ZhbHVlTGlzdC0+Y3VycmVudCgpOwogICAgIGlmICghdmFs
dWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggMzE4
ZDcyYjczNzA1NTBkYThkNzMzNjRkNTcyMmI2NjdhNmRmN2I2Zi4uNTc3NDExYWMwYTYxYWFmMDFm
ZjA1ZWQzMDYwNzRmOGRmYjcxMzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NW
R0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHls
ZVNlbGVjdG9yLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHN0YXRpYyBDb2xvciBjb2xvckZyb21T
VkdDb2xvckNTU1ZhbHVlKFNWR0NvbG9yKiBzdmdDb2xvciwgY29uc3QgQ29sb3ImIGZnQ29sb3Ip
CiAgICAgcmV0dXJuIGNvbG9yOwogfQogCi12b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5U1ZH
UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1ZSogdmFsdWUpCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5U1ZHUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUqIHZhbHVlKQogewog
ICAgIEFTU0VSVCh2YWx1ZSk7CiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmNwcAppbmRleCBhNjc4NzE0
MTE5NDQ3YThmYWVjMjZjZjljYTU2MDNlYTExOWM3YWZjLi5hOGYyMTg2Mjk0YTk3Yjc4OTEyYjQ5
YWZlZjUzNzk4OGJjMDc3MThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQ
cm9wZXJ0eVNldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQu
Y3BwCkBAIC00MTMsMTMgKzQxMywxMyBAQCBTdHJpbmcgU3R5bGVQcm9wZXJ0eVNldDo6Z2V0Q29t
bW9uVmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kKQogICAgIHJl
dHVybiByZXM7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTVmFsdWU+IFN0eWxlUHJvcGVydHlTZXQ6Omdl
dFByb3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0CitQYXNzUmVmUHRyPENTU1Zh
bHVlPiBTdHlsZVByb3BlcnR5U2V0OjpnZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCkgY29uc3QKIHsKICAgICBjb25zdCBDU1NQcm9wZXJ0eSogcHJvcGVydHkgPSBm
aW5kUHJvcGVydHlXaXRoSWQocHJvcGVydHlJRCk7CiAgICAgcmV0dXJuIHByb3BlcnR5ID8gcHJv
cGVydHktPnZhbHVlKCkgOiAwOwogfQogCi1ib29sIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNo
b3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQorYm9vbCBTdHlsZVByb3BlcnR5U2V0Ojpy
ZW1vdmVTaG9ydGhhbmRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAg
U3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBzaG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShw
cm9wZXJ0eUlEKTsKICAgICBpZiAoIXNob3J0aGFuZC5sZW5ndGgoKSkKQEAgLTQyNyw3ICs0Mjcs
NyBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBw
cm9wZXJ0eUlEKQogICAgIHJldHVybiByZW1vdmVQcm9wZXJ0aWVzSW5TZXQoc2hvcnRoYW5kLnBy
b3BlcnRpZXMoKSwgc2hvcnRoYW5kLmxlbmd0aCgpKTsKIH0KIAotYm9vbCBTdHlsZVByb3BlcnR5
U2V0OjpyZW1vdmVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgU3RyaW5nKiByZXR1cm5UZXh0KQor
Ym9vbCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCkKIHsKICAgICBpZiAocmVtb3ZlU2hvcnRoYW5kUHJv
cGVydHkocHJvcGVydHlJRCkpIHsKICAgICAgICAgLy8gRklYTUU6IFJldHVybiBhbiBlcXVpdmFs
ZW50IHNob3J0aGFuZCB3aGVuIHBvc3NpYmxlLgpAQCAtNDgyLDcgKzQ4Miw3IEBAIGJvb2wgU3R5
bGVQcm9wZXJ0eVNldDo6aXNQcm9wZXJ0eUltcGxpY2l0KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCkgY29uc3QKICAgICByZXR1cm4gcHJvcGVydHkgPyBwcm9wZXJ0eS0+aXNJbXBsaWNpdCgpIDog
ZmFsc2U7CiB9CiAKLWJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoaW50IHByb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0
KiBjb250ZXh0U3R5bGVTaGVldCkKK2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHko
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9y
dGFudCwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgLy8gU2V0dGlu
ZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkgc3RyaW5nIGp1c3QgcmVtb3ZlcyB0aGUgcHJvcGVydHkg
aW4gYm90aCBJRSBhbmQgR2Vja28uCiAgICAgLy8gU2V0dGluZyBpdCB0byBudWxsIHNlZW1zIHRv
IHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50IHJlc3VsdHMsIGJ1dCB3ZSB0cmVhdCBpdCBqdXN0IHRo
ZSBzYW1lLgpAQCAtNDk2LDcgKzQ5Niw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wCiAgICAg
cmV0dXJuIENTU1BhcnNlcjo6cGFyc2VWYWx1ZSh0aGlzLCBwcm9wZXJ0eUlELCB2YWx1ZSwgaW1w
b3J0YW50LCBjc3NQYXJzZXJNb2RlKCksIGNvbnRleHRTdHlsZVNoZWV0KTsKIH0KIAotdm9pZCBT
dHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gcHJwVmFsdWUsIGJvb2wgaW1wb3J0YW50KQordm9pZCBTdHlsZVByb3BlcnR5U2V0
OjpzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+IHBycFZhbHVlLCBib29sIGltcG9ydGFudCkKIHsKICAgICBTdHlsZVByb3BlcnR5U2hvcnRo
YW5kIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KHByb3BlcnR5SUQpOwogICAgIGlm
ICghc2hvcnRoYW5kLmxlbmd0aCgpKSB7CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBTdHlsZVBy
b3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHksIENTU1By
b3BlcnR5KiBzbG8KICAgICBtX3Byb3BlcnRpZXMuYXBwZW5kKHByb3BlcnR5KTsKIH0KIAotYm9v
bCBTdHlsZVByb3BlcnR5U2V0OjpzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IGlkZW50
aWZpZXIsIGJvb2wgaW1wb3J0YW50LCBDU1NTdHlsZVNoZWV0KiBjb250ZXh0U3R5bGVTaGVldCkK
K2Jvb2wgU3R5bGVQcm9wZXJ0eVNldDo6c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBpbnQgaWRlbnRpZmllciwgYm9vbCBpbXBvcnRhbnQsIENTU1N0eWxlU2hlZXQqIGNvbnRl
eHRTdHlsZVNoZWV0KQogewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWU7ICAg
IAogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBjb250ZXh0U3R5bGVTaGVldCA/IGNvbnRl
eHRTdHlsZVNoZWV0LT5maW5kRG9jdW1lbnQoKSA6IDApCkBAIC03MjksNyArNzI5LDcgQEAgU3Ry
aW5nIFN0eWxlUHJvcGVydHlTZXQ6OmFzVGV4dCgpIGNvbnN0CiAgICAgICAgIGlmICh2YWx1ZSA9
PSAiaW5pdGlhbCIgJiYgIUNTU1Byb3BlcnR5Ojppc0luaGVyaXRlZFByb3BlcnR5KHByb3BlcnR5
SUQpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgcmVzdWx0LmFwcGVuZChnZXRQ
cm9wZXJ0eU5hbWUoc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHlJRD4ocHJvcGVydHlJRCkpKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChnZXRQcm9wZXJ0eU5hbWUocHJvcGVydHlJRCkpOwogICAgICAg
ICByZXN1bHQuYXBwZW5kKCI6ICIpOwogICAgICAgICByZXN1bHQuYXBwZW5kKHZhbHVlKTsKICAg
ICAgICAgcmVzdWx0LmFwcGVuZChwcm9wLmlzSW1wb3J0YW50KCkgPyAiICFpbXBvcnRhbnQiIDog
IiIpOwpAQCAtODcxLDcgKzg3MSw3IEBAIGJvb2wgU3R5bGVQcm9wZXJ0eVNldDo6cmVtb3ZlUHJv
cGVydGllc0luU2V0KGNvbnN0IENTU1Byb3BlcnR5SUQqIHNldCwgdW5zaWduZWQKICAgICByZXR1
cm4gY2hhbmdlZDsKIH0KIAotY29uc3QgQ1NTUHJvcGVydHkqIFN0eWxlUHJvcGVydHlTZXQ6OmZp
bmRQcm9wZXJ0eVdpdGhJZChpbnQgcHJvcGVydHlJRCkgY29uc3QKK2NvbnN0IENTU1Byb3BlcnR5
KiBTdHlsZVByb3BlcnR5U2V0OjpmaW5kUHJvcGVydHlXaXRoSWQoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEKSBjb25zdAogewogICAgIGZvciAoaW50IG4gPSBtX3Byb3BlcnRpZXMuc2l6ZSgpIC0g
MSA7IG4gPj0gMDsgLS1uKSB7CiAgICAgICAgIGlmIChwcm9wZXJ0eUlEID09IG1fcHJvcGVydGll
c1tuXS5pZCgpKQpAQCAtODgwLDcgKzg4MCw3IEBAIGNvbnN0IENTU1Byb3BlcnR5KiBTdHlsZVBy
b3BlcnR5U2V0OjpmaW5kUHJvcGVydHlXaXRoSWQoaW50IHByb3BlcnR5SUQpIGNvbnN0CiAgICAg
cmV0dXJuIDA7CiB9CiAKLUNTU1Byb3BlcnR5KiBTdHlsZVByb3BlcnR5U2V0OjpmaW5kUHJvcGVy
dHlXaXRoSWQoaW50IHByb3BlcnR5SUQpCitDU1NQcm9wZXJ0eSogU3R5bGVQcm9wZXJ0eVNldDo6
ZmluZFByb3BlcnR5V2l0aElkKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKIHsKICAgICBmb3Ig
KGludCBuID0gbV9wcm9wZXJ0aWVzLnNpemUoKSAtIDEgOyBuID49IDA7IC0tbikgewogICAgICAg
ICBpZiAocHJvcGVydHlJRCA9PSBtX3Byb3BlcnRpZXNbbl0uaWQoKSkKQEAgLTg5Nyw3ICs4OTcs
NyBAQCBib29sIFN0eWxlUHJvcGVydHlTZXQ6OnByb3BlcnR5TWF0Y2hlcyhjb25zdCBDU1NQcm9w
ZXJ0eSogcHJvcGVydHkpIGNvbnN0CiAgICAgCiB2b2lkIFN0eWxlUHJvcGVydHlTZXQ6OnJlbW92
ZUVxdWl2YWxlbnRQcm9wZXJ0aWVzKGNvbnN0IFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlKQogewot
ICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRpZXNUb1JlbW92ZTsKKyAgICBWZWN0b3I8Q1NTUHJvcGVy
dHlJRD4gcHJvcGVydGllc1RvUmVtb3ZlOwogICAgIHNpemVfdCBzaXplID0gbV9wcm9wZXJ0aWVz
LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBjb25zdCBDU1NQcm9wZXJ0eSYgcHJvcGVydHkgPSBtX3Byb3BlcnRpZXNbaV07CkBAIC05MTEs
NyArOTExLDcgQEAgdm9pZCBTdHlsZVByb3BlcnR5U2V0OjpyZW1vdmVFcXVpdmFsZW50UHJvcGVy
dGllcyhjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSkKIAogdm9pZCBTdHlsZVByb3BlcnR5
U2V0OjpyZW1vdmVFcXVpdmFsZW50UHJvcGVydGllcyhjb25zdCBDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSkKIHsKLSAgICBWZWN0b3I8aW50PiBwcm9wZXJ0aWVzVG9SZW1vdmU7CisgICAgVmVj
dG9yPENTU1Byb3BlcnR5SUQ+IHByb3BlcnRpZXNUb1JlbW92ZTsKICAgICBzaXplX3Qgc2l6ZSA9
IG1fcHJvcGVydGllcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKICAgICAgICAgY29uc3QgQ1NTUHJvcGVydHkmIHByb3BlcnR5ID0gbV9wcm9wZXJ0aWVz
W2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTZXQuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2V0LmgKaW5kZXggYTFhMTdmYjVkNzNk
ZjdkZWFmOWEwMjQ1YmU4Y2ZkN2EwZTg4MTAyYS4uOTA4YWIyOTI1MTgyMGQ4ZGI5N2U3MTc2NmFk
MWMxOTI5NmI3M2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVy
dHlTZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNldC5oCkBAIC02
MSwyMSArNjEsMjEgQEAgcHVibGljOgogCiAgICAgdm9pZCBzaHJpbmtUb0ZpdCgpIHsgbV9wcm9w
ZXJ0aWVzLnNocmlua1RvRml0KCk7IH0KIAotICAgIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGdldFBy
b3BlcnR5Q1NTVmFsdWUoaW50IHByb3BlcnR5SUQpIGNvbnN0OworICAgIFBhc3NSZWZQdHI8Q1NT
VmFsdWU+IGdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgU3Ry
aW5nIGdldFByb3BlcnR5VmFsdWUoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCBwcm9w
ZXJ0eUlzSW1wb3J0YW50KENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIENTU1Byb3BlcnR5SUQg
Z2V0UHJvcGVydHlTaG9ydGhhbmQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgYm9vbCBpc1By
b3BlcnR5SW1wbGljaXQoQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAKICAgICAvLyBUaGVzZSBleHBh
bmQgc2hvcnRoYW5kIHByb3BlcnRpZXMgaW50byBtdWx0aXBsZSBwcm9wZXJ0aWVzLgotICAgIGJv
b2wgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wg
aW1wb3J0YW50ID0gZmFsc2UsIENTU1N0eWxlU2hlZXQqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7
Ci0gICAgdm9pZCBzZXRQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgUGFzc1JlZlB0cjxDU1NWYWx1
ZT4sIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlJRCwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgQ1NTU3R5bGVT
aGVldCogY29udGV4dFN0eWxlU2hlZXQgPSAwKTsKKyAgICB2b2lkIHNldFByb3BlcnR5KENTU1By
b3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCA9IGZhbHNlKTsK
IAogICAgIC8vIFRoZXNlIGRvIG5vdC4gRklYTUU6IFRoaXMgaXMgdG9vIG1lc3N5LCB3ZSBjYW4g
ZG8gYmV0dGVyLgotICAgIGJvb2wgc2V0UHJvcGVydHkoaW50IHByb3BlcnR5SUQsIGludCB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hl
ZXQgPSAwKTsKKyAgICBib29sIHNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGludCwgYm9vbCBp
bXBvcnRhbnQgPSBmYWxzZSwgQ1NTU3R5bGVTaGVldCogY29udGV4dFN0eWxlU2hlZXQgPSAwKTsK
ICAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IENTU1Byb3BlcnR5JiwgQ1NTUHJvcGVydHkqIHNs
b3QgPSAwKTsKICAgICAKLSAgICBib29sIHJlbW92ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBT
dHJpbmcqIHJldHVyblRleHQgPSAwKTsKKyAgICBib29sIHJlbW92ZVByb3BlcnR5KENTU1Byb3Bl
cnR5SUQsIFN0cmluZyogcmV0dXJuVGV4dCA9IDApOwogCiAgICAgdm9pZCBwYXJzZURlY2xhcmF0
aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwgQ1NTU3R5bGVTaGVldCogY29udGV4
dFN0eWxlU2hlZXQpOwogCkBAIC0xMjgsMTEgKzEyOCwxMSBAQCBwcml2YXRlOgogICAgIFN0cmlu
ZyBmb250VmFsdWUoKSBjb25zdDsKICAgICBib29sIGFwcGVuZEZvbnRMb25naGFuZFZhbHVlSWZF
eHBsaWNpdChDU1NQcm9wZXJ0eUlELCBTdHJpbmdCdWlsZGVyJikgY29uc3Q7CiAKLSAgICBib29s
IHJlbW92ZVNob3J0aGFuZFByb3BlcnR5KGludCBwcm9wZXJ0eUlEKTsKKyAgICBib29sIHJlbW92
ZVNob3J0aGFuZFByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogICAgIGJvb2wgcHJvcGVydHlNYXRj
aGVzKGNvbnN0IENTU1Byb3BlcnR5KikgY29uc3Q7CiAKLSAgICBjb25zdCBDU1NQcm9wZXJ0eSog
ZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKSBjb25zdDsKLSAgICBDU1NQcm9wZXJ0
eSogZmluZFByb3BlcnR5V2l0aElkKGludCBwcm9wZXJ0eUlEKTsKKyAgICBjb25zdCBDU1NQcm9w
ZXJ0eSogZmluZFByb3BlcnR5V2l0aElkKENTU1Byb3BlcnR5SUQpIGNvbnN0OworICAgIENTU1By
b3BlcnR5KiBmaW5kUHJvcGVydHlXaXRoSWQoQ1NTUHJvcGVydHlJRCk7CiAKICAgICBWZWN0b3I8
Q1NTUHJvcGVydHksIDQ+IG1fcHJvcGVydGllczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTaG9ydGhhbmQuY3BwCmluZGV4IGI0ZGUxMTcyMTJiNzE3NzJkMjExYzZmOTdj
YWY3MjFiOTk0YWFhNzIuLjFhYWU0OGQ5NTc3OWVhZjUyNTQzOGQ5MGQzODkzZTA1MmU0OWE5Mzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0eVNob3J0aGFuZC5jcHAKQEAg
LTQxNiw3ICs0MTYsNyBAQCBjb25zdCBTdHlsZVByb3BlcnR5U2hvcnRoYW5kJiB3ZWJraXRXcmFw
U2hvcnRoYW5kKCkKIH0KIAogLy8gUmV0dXJucyBhbiBlbXB0eSBsaXN0IGlmIHRoZSBwcm9wZXJ0
eSBpcyBub3QgYSBzaG9ydGhhbmQKLWNvbnN0IFN0eWxlUHJvcGVydHlTaG9ydGhhbmQmIHNob3J0
aGFuZEZvclByb3BlcnR5KGludCBwcm9wZXJ0eUlEKQorY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYgc2hvcnRoYW5kRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewog
ICAgIHN3aXRjaCAocHJvcGVydHlJRCkgewogICAgIGNhc2UgQ1NTUHJvcGVydHlCYWNrZ3JvdW5k
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydHlTaG9ydGhhbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgKaW5kZXggMjE4
ODMzZGM4ZTQ3M2MwYzc3NzY5OTU0ZDhkMWYwNWVjMDliM2E0MC4uMTc1ZTNlMWU1YjZmYTkyODMy
YWM1Y2Q0ZTAyMzBlMDRmYzIxMGUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlUHJvcGVydHlTaG9ydGhhbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZC5oCkBAIC05OSw3ICs5OSw3IEBAIGNvbnN0IFN0eWxlUHJvcGVydHlTaG9y
dGhhbmQmIHdlYmtpdFRyYW5zZm9ybU9yaWdpblNob3J0aGFuZCgpOwogY29uc3QgU3R5bGVQcm9w
ZXJ0eVNob3J0aGFuZCYgd2Via2l0V3JhcFNob3J0aGFuZCgpOwogCiAvLyBSZXR1cm5zIGFuIGVt
cHR5IGxpc3QgaWYgdGhlIHByb3BlcnR5IGlzIG5vdCBhIHNob3J0aGFuZAotY29uc3QgU3R5bGVQ
cm9wZXJ0eVNob3J0aGFuZCYgc2hvcnRoYW5kRm9yUHJvcGVydHkoaW50KTsKK2NvbnN0IFN0eWxl
UHJvcGVydHlTaG9ydGhhbmQmIHNob3J0aGFuZEZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TdHlsZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNw
cAppbmRleCA1NWJjNDFkNDM1MWNhNjgzNmJiNTQ0ZTE3NTQyNTBkOTQxZGFjNzExLi42NDI5MjA0
YmQyN2YxNjZkM2UzODVmZjljNGI3YjhkMmYwYTViYjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIK
ICNpbmNsdWRlICJDU1NJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0
LmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgpAQCAtMTQ1LDIxICsxNDYsMjEgQEAg
dm9pZCBTdHlsZWRFbGVtZW50OjppbmxpbmVTdHlsZUNoYW5nZWQoKQogICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihkb2N1bWVudCgpLCB0aGlzKTsK
IH0KICAgICAKLWJvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShpbnQg
cHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50KQorYm9vbCBTdHlsZWRF
bGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
aW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50KQogewogICAgIGVuc3VyZUF0dHJpYnV0ZURh
dGEoKS0+ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKHRoaXMpLT5zZXRQcm9wZXJ0eShwcm9wZXJ0
eUlELCBkb2N1bWVudCgpLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSWRlbnRpZmllclZhbHVlKGlk
ZW50aWZpZXIpLCBpbXBvcnRhbnQpOwogICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVy
dHkoaW50IHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlcyB1bml0LCBib29sIGltcG9ydGFudCkKK2Jvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5l
U3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0LCBib29sIGltcG9ydGFudCkKIHsKICAgICBl
bnN1cmVBdHRyaWJ1dGVEYXRhKCktPmVuc3VyZU11dGFibGVJbmxpbmVTdHlsZSh0aGlzKS0+c2V0
UHJvcGVydHkocHJvcGVydHlJRCwgZG9jdW1lbnQoKS0+Y3NzVmFsdWVQb29sKCktPmNyZWF0ZVZh
bHVlKHZhbHVlLCB1bml0KSwgaW1wb3J0YW50KTsKICAgICBpbmxpbmVTdHlsZUNoYW5nZWQoKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9y
dGFudCkKK2Jvb2wgU3R5bGVkRWxlbWVudDo6c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50KQog
ewogICAgIGJvb2wgY2hhbmdlcyA9IGVuc3VyZUF0dHJpYnV0ZURhdGEoKS0+ZW5zdXJlTXV0YWJs
ZUlubGluZVN0eWxlKHRoaXMpLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgaW1wb3J0
YW50LCBkb2N1bWVudCgpLT5lbGVtZW50U2hlZXQoKSk7CiAgICAgaWYgKGNoYW5nZXMpCkBAIC0x
NjcsNyArMTY4LDcgQEAgYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVTdHlsZVByb3BlcnR5
KGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLAogICAgIHJldHVybiBjaGFuZ2Vz
OwogfQogCi1ib29sIFN0eWxlZEVsZW1lbnQ6OnJlbW92ZUlubGluZVN0eWxlUHJvcGVydHkoaW50
IHByb3BlcnR5SUQpCitib29sIFN0eWxlZEVsZW1lbnQ6OnJlbW92ZUlubGluZVN0eWxlUHJvcGVy
dHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogewogICAgIFN0eWxlUHJvcGVydHlTZXQqIGlu
bGluZVN0eWxlID0gYXR0cmlidXRlRGF0YSgpID8gYXR0cmlidXRlRGF0YSgpLT5pbmxpbmVTdHls
ZSgpIDogMDsKICAgICBpZiAoIWlubGluZVN0eWxlKQpAQCAtMjc4LDEyICsyNzksMTIgQEAgdm9p
ZCBTdHlsZWRFbGVtZW50Ojp1cGRhdGVBdHRyaWJ1dGVTdHlsZSgpCiAgICAgICAgIGNhY2hlSXRl
cmF0b3ItPnNlY29uZCA9IG5ld0VudHJ5LnJlbGVhc2UoKTsKIH0KIAotdm9pZCBTdHlsZWRFbGVt
ZW50OjphZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUs
IGludCBwcm9wZXJ0eUlELCBpbnQgaWRlbnRpZmllcikKK3ZvaWQgU3R5bGVkRWxlbWVudDo6YWRk
UHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIGludCBpZGVudGlmaWVyKQogewogICAgIHN0eWxlLT5zZXRQcm9w
ZXJ0eShwcm9wZXJ0eUlELCBkb2N1bWVudCgpLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlSWRlbnRp
ZmllclZhbHVlKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBTdHlsZWRFbGVtZW50OjphZGRQcm9w
ZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIGludCBwcm9wZXJ0
eUlELCBkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCkKK3Zv
aWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0eWxlUHJvcGVy
dHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGRvdWJsZSB2YWx1ZSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0KQogewogICAgIHN0eWxlLT5zZXRQcm9wZXJ0
eShwcm9wZXJ0eUlELCBkb2N1bWVudCgpLT5jc3NWYWx1ZVBvb2woKS0+Y3JlYXRlVmFsdWUodmFs
dWUsIHVuaXQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCmluZGV4IDlhZTdjMWQ2
MWI2OWU4OGE0OWRkZTI2YjI4ZTVlNDdiYjE0YmI2YzcuLmQxZDIwOGZjM2ZkZjY5YjJmNWMyMWY5
ZTNkMjA4NjczMzhkNTljN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaApAQCAtNDQs
MTAgKzQ0LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHlsZVByb3BlcnR5U2V0KiBlbnN1cmVJ
bmxpbmVTdHlsZSgpIHsgcmV0dXJuIGVuc3VyZUF0dHJpYnV0ZURhdGEoKS0+ZW5zdXJlSW5saW5l
U3R5bGUodGhpcyk7IH0KICAgICAKICAgICAvLyBVbmxpa2UgU3R5bGVQcm9wZXJ0eVNldCBzZXR0
ZXJzLCB0aGVzZSBpbXBsZW1lbnQgaW52YWxpZGF0aW9uLgotICAgIGJvb2wgc2V0SW5saW5lU3R5
bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCwgaW50IGlkZW50aWZpZXIsIGJvb2wgaW1wb3J0YW50
ID0gZmFsc2UpOwotICAgIGJvb2wgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJ
RCwgZG91YmxlIHZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzLCBib29sIGltcG9y
dGFudCA9IGZhbHNlKTsKLSAgICBib29sIHNldElubGluZVN0eWxlUHJvcGVydHkoaW50IHByb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwotICAg
IGJvb2wgcmVtb3ZlSW5saW5lU3R5bGVQcm9wZXJ0eShpbnQgcHJvcGVydHlJRCk7CisgICAgYm9v
bCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIGludCwgYm9vbCBpbXBvcnRh
bnQgPSBmYWxzZSk7CisgICAgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
SUQsIGRvdWJsZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcywgYm9vbCBpbXBvcnRhbnQg
PSBmYWxzZSk7CisgICAgYm9vbCBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOworICAgIGJvb2wgcmVtb3Zl
SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsKICAgICAKICAgICB2aXJ0dWFsIENT
U1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKCkgT1ZFUlJJREU7CiAKQEAgLTY5LDkgKzY5LDkgQEAg
cHJvdGVjdGVkOgogCiAgICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBh
ZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wZXJ0
eUlELCBpbnQgaWRlbnRpZmllcik7Ci0gICAgdm9pZCBhZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5
bGUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wZXJ0eUlELCBkb3VibGUgdmFsdWUsIENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpOwotICAgIHZvaWQgYWRkUHJvcGVydHlUb0F0dHJpYnV0
ZVN0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eVRvQXR0cmlidXRlU3R5bGUoU3R5bGVQcm9wZXJ0
eVNldCosIENTU1Byb3BlcnR5SUQsIGludCk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eVRvQXR0cmli
dXRlU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGRvdWJsZSwgQ1NTUHJp
bWl0aXZlVmFsdWU6OlVuaXRUeXBlcyk7CisgICAgdm9pZCBhZGRQcm9wZXJ0eVRvQXR0cmlidXRl
U3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYpOwog
CiAgICAgdmlydHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNl
dDxLVVJMPiYpIGNvbnN0OwogCkBAIC0xMTMsNyArMTEzLDcgQEAgaW5saW5lIFN0eWxlUHJvcGVy
dHlTZXQqIFN0eWxlZEVsZW1lbnQ6OmF0dHJpYnV0ZVN0eWxlKCkKICAgICByZXR1cm4gYXR0cmli
dXRlRGF0YSgpID8gYXR0cmlidXRlRGF0YSgpLT5hdHRyaWJ1dGVTdHlsZSgpIDogMDsKIH0KIAot
aW5saW5lIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKFN0
eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBpbnQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKK2lubGluZSB2b2lkIFN0eWxlZEVsZW1lbnQ6OmFkZFByb3BlcnR5VG9BdHRyaWJ1dGVTdHls
ZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2
YWx1ZSwgZmFsc2UsIGRvY3VtZW50KCktPmVsZW1lbnRTaGVldCgpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCAwOWE0NTBkZDY5OGIwODI4NzI5MjU4Mjgz
YThmYTI2M2JkYjc1Mjg0Li45ZGQzY2U0MDMxOTRjYzRhNzMzM2M2YWM0YmRiOWEzYTMwMGIyOGJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBAIC0xMzQsNyArMTM0
LDcgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxFbGVtZW50RXF1aXZhbGVudChDU1NQcm9wZXJ0eUlE
KTsKICAgICBIVE1MRWxlbWVudEVxdWl2YWxlbnQoQ1NTUHJvcGVydHlJRCwgY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSk7CiAgICAgSFRNTEVsZW1lbnRFcXVpdmFsZW50KENTU1Byb3BlcnR5
SUQsIGludCBwcmltaXRpdmVWYWx1ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSk7Ci0g
ICAgY29uc3QgaW50IG1fcHJvcGVydHlJRDsKKyAgICBjb25zdCBDU1NQcm9wZXJ0eUlEIG1fcHJv
cGVydHlJRDsKICAgICBjb25zdCBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IG1fcHJpbWl0aXZl
VmFsdWU7CiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSogbV90YWdOYW1lOyAvLyBXZSBjYW4gc3Rv
cmUgYSBwb2ludGVyIGJlY2F1c2UgSFRNTCB0YWcgbmFtZXMgYXJlIGNvbnN0IGdsb2JhbC4KIH07
CkBAIC0zMzIsNyArMzMyLDcgQEAgRWRpdGluZ1N0eWxlOjpFZGl0aW5nU3R5bGUoY29uc3QgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiAgICAgZXh0cmFjdEZvbnRTaXplRGVsdGEoKTsKIH0K
IAotRWRpdGluZ1N0eWxlOjpFZGl0aW5nU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCitFZGl0aW5nU3R5bGU6OkVkaXRpbmdTdHlsZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgOiBtX211dGFibGVTdHlsZSgwKQogICAg
ICwgbV9zaG91bGRVc2VGaXhlZERlZmF1bHRGb250U2l6ZShmYWxzZSkKICAgICAsIG1fZm9udFNp
emVEZWx0YShOb0ZvbnREZWx0YSkKQEAgLTQxMSw3ICs0MTEsNyBAQCB2b2lkIEVkaXRpbmdTdHls
ZTo6cmVtb3ZlVGV4dEZpbGxBbmRTdHJva2VDb2xvcnNJZk5lZWRlZChSZW5kZXJTdHlsZSogcmVu
ZGVyU3R5bAogICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVy
dHlXZWJraXRUZXh0U3Ryb2tlQ29sb3IpOwogfQogCi12b2lkIEVkaXRpbmdTdHlsZTo6c2V0UHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
KQordm9pZCBFZGl0aW5nU3R5bGU6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQpCiB7CiAgICAgaWYgKCFtX211
dGFibGVTdHlsZSkKICAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBTdHlsZVByb3BlcnR5U2V0Ojpj
cmVhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCmluZGV4IGMyMTMwMzZl
MTI0ZmMwNzRlYWFhZjc1MzllMTQ2MjQ1NjJhY2VkNmMuLmQ2ZGY1MTg3NTUxM2Y4NzJlNTlkMjgy
NzliM2Q4MjlkM2RmNGZkMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaApA
QCAtOTEsNyArOTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRWRp
dGluZ1N0eWxlKHN0eWxlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8RWRpdGlu
Z1N0eWxlPiBjcmVhdGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8RWRpdGluZ1N0eWxlPiBjcmVhdGUoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBFZGl0aW5nU3R5bGUocHJvcGVydHlJRCwgdmFsdWUpKTsKICAgICB9CkBAIC0xNTIs
MTAgKzE1MiwxMCBAQCBwcml2YXRlOgogICAgIEVkaXRpbmdTdHlsZShjb25zdCBQb3NpdGlvbiYs
IFByb3BlcnRpZXNUb0luY2x1ZGUpOwogICAgIEVkaXRpbmdTdHlsZShjb25zdCBTdHlsZVByb3Bl
cnR5U2V0Kik7CiAgICAgRWRpdGluZ1N0eWxlKGNvbnN0IENTU1N0eWxlRGVjbGFyYXRpb24qKTsK
LSAgICBFZGl0aW5nU3R5bGUoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwor
ICAgIEVkaXRpbmdTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IGluaXQoTm9kZSosIFByb3BlcnRpZXNUb0luY2x1ZGUpOwogICAgIHZvaWQgcmVtb3ZlVGV4dEZp
bGxBbmRTdHJva2VDb2xvcnNJZk5lZWRlZChSZW5kZXJTdHlsZSopOwotICAgIHZvaWQgc2V0UHJv
cGVydHkoaW50IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
ID0gZmFsc2UpOworICAgIHZvaWQgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgdm9pZCByZXBsYWNlRm9udFNpemVC
eUtleXdvcmRJZlBvc3NpYmxlKFJlbmRlclN0eWxlKiwgQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0
aW9uKik7CiAgICAgdm9pZCBleHRyYWN0Rm9udFNpemVEZWx0YSgpOwogICAgIFRyaVN0YXRlIHRy
aVN0YXRlT2ZTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZVRvQ29tcGFyZSwgU2hvdWxk
SWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAppbmRleCAxY2MxOGI3OTIxZWM1ZWMwNWNlNzNiYTMxNWUxMDFjYzhhYzNjNDY3Li5iZTcxMDky
NTcxMDQ5MDg5NjcyYmJlNWJhOTg5Zjg5ZTYyMTMxNGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCkBAIC03MzEsMTMgKzczMSwxMyBAQCB2b2lkIEVkaXRvcjo6YXBwbHlQYXJhZ3JhcGhT
dHlsZVRvU2VsZWN0aW9uKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBFZGl0QWN0aW9uCiAgICAg
ICAgIGFwcGx5UGFyYWdyYXBoU3R5bGUoc3R5bGUsIGVkaXRpbmdBY3Rpb24pOwogfQogCi1ib29s
IEVkaXRvcjo6c2VsZWN0aW9uU3RhcnRIYXNTdHlsZShpbnQgcHJvcGVydHlJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkgY29uc3QKK2Jvb2wgRWRpdG9yOjpzZWxlY3Rpb25TdGFydEhhc1N0eWxlKENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAg
ICByZXR1cm4gRWRpdGluZ1N0eWxlOjpjcmVhdGUocHJvcGVydHlJRCwgdmFsdWUpLT50cmlTdGF0
ZU9mU3R5bGUoCiAgICAgICAgIEVkaXRpbmdTdHlsZTo6c3R5bGVBdFNlbGVjdGlvblN0YXJ0KG1f
ZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSwgcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0
eUJhY2tncm91bmRDb2xvcikuZ2V0KCkpOwogfQogCi1UcmlTdGF0ZSBFZGl0b3I6OnNlbGVjdGlv
bkhhc1N0eWxlKGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAorVHJp
U3RhdGUgRWRpdG9yOjpzZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKHByb3BlcnR5SUQsIHZhbHVlKS0+dHJpU3RhdGVPZlN0eWxlKG1fZnJhbWUtPnNlbGVj
dGlvbigpLT5zZWxlY3Rpb24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAyYzQz
ZTI2MDM4ZmFjNDgzOTg1NmU5YzJkMmMxZjhiY2I0ODA3MTUzLi5hYmYyNjQxZmRlMTU4Yzg5NGJh
OWEyMTk1NWZlZDAxMGZjOTA2OTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTEzNiw4
ICsxMzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mIG9sZFNlbGVjdGlvbik7CiAgICAgdm9pZCByZXNwb25kVG9D
aGFuZ2VkQ29udGVudHMoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uKTsK
IAotICAgIGJvb2wgc2VsZWN0aW9uU3RhcnRIYXNTdHlsZShpbnQgcHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3Q7Ci0gICAgVHJpU3RhdGUgc2VsZWN0aW9uSGFzU3R5bGUoaW50
IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0OworICAgIGJvb2wgc2VsZWN0
aW9uU3RhcnRIYXNTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAg
ICBUcmlTdGF0ZSBzZWxlY3Rpb25IYXNTdHlsZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcm
KSBjb25zdDsKICAgICBTdHJpbmcgc2VsZWN0aW9uU3RhcnRDU1NQcm9wZXJ0eVZhbHVlKENTU1By
b3BlcnR5SUQpOwogICAgIAogICAgIFRyaVN0YXRlIHNlbGVjdGlvblVub3JkZXJlZExpc3RTdGF0
ZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21t
YW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXgg
MTk4NzcyOTJmZTJmNDBmNTkwYWQ3NTA3M2MzYWQ4YzA5NTRkYjhjOC4uYTJmMTQ3ZWEyZTNlZmUx
ZGZlM2U4NzQxMjZjNWQ4MmJkNjMxMTc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBzdGF0aWMgYm9vbCBhcHBseUNvbW1h
bmRUb0ZyYW1lKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEVkaXRB
YwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUo
RnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rp
b24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFsdWUpCitzdGF0aWMg
Ym9vbCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ug
c291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHByb3BlcnR5VmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+
IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFByb3Bl
cnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwogICAgIHJldHVybiBhcHBseUNvbW1hbmRU
b0ZyYW1lKGZyYW1lLCBzb3VyY2UsIGFjdGlvbiwgc3R5bGUuZ2V0KCkpOwogfQogCi1zdGF0aWMg
Ym9vbCBleGVjdXRlQXBwbHlTdHlsZShGcmFtZSogZnJhbWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ug
c291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHByb3BlcnR5SUQsIGludCBwcm9wZXJ0eVZh
bHVlKQorc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5U3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQgcHJv
cGVydHlJRCwgaW50IHByb3BlcnR5VmFsdWUpCiB7CiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlT
ZXQ+IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKCk7CiAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHN0
YXRpYyBib29sIGV4ZWN1dGVBcHBseVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNv
dXJjZSBzb3VyY2UsIEVkaXRBY3RpCiAvLyBGSVhNRTogZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0
IGRvZXMgbm90IGhhbmRsZSBjb21wbGljYXRlZCBjYXNlcyBzdWNoIGFzIDxiPjx1PmhlbGxvPC91
PndvcmxkPC9iPiBwcm9wZXJseS4KIC8vICAgICAgICBUaGlzIGZ1bmN0aW9uIG11c3QgdXNlIEVk
aXRvcjo6c2VsZWN0aW9uSGFzU3R5bGUgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0eWxlIGJ1
dCB3ZSBjYW5ub3QgZml4IHRoaXMKIC8vICAgICAgICB1bnRpbCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjc4MTggaXMgcmVzb2x2ZWQuCi1zdGF0aWMgYm9vbCBleGVj
dXRlVG9nZ2xlU3R5bGVJbkxpc3QoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBDU1NWYWx1ZSogdmFsdWUp
CitzdGF0aWMgYm9vbCBleGVjdXRlVG9nZ2xlU3R5bGVJbkxpc3QoRnJhbWUqIGZyYW1lLCBFZGl0
b3JDb21tYW5kU291cmNlIHNvdXJjZSwgRWRpdEFjdGlvbiBhY3Rpb24sIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCwgQ1NTVmFsdWUqIHZhbHVlKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHNlbGVjdGlvblN0eWxlID0gRWRpdGluZ1N0eWxl
OjpzdHlsZUF0U2VsZWN0aW9uU3RhcnQoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKSk7
CkBAIC0xNTYsNyArMTU2LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlSW5MaXN0
KEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsIEUKICAgICByZXR1cm4g
YXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNlLCBhY3Rpb24sIG5ld011dGFibGVTdHls
ZS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVUb2dnbGVTdHlsZShGcmFtZSogZnJh
bWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgaW50IHBy
b3BlcnR5SUQsIGNvbnN0IGNoYXIqIG9mZlZhbHVlLCBjb25zdCBjaGFyKiBvblZhbHVlKQorc3Rh
dGljIGJvb2wgZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNv
dXJjZSBzb3VyY2UsIEVkaXRBY3Rpb24gYWN0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQs
IGNvbnN0IGNoYXIqIG9mZlZhbHVlLCBjb25zdCBjaGFyKiBvblZhbHVlKQogewogICAgIC8vIFN0
eWxlIGlzIGNvbnNpZGVyZWQgcHJlc2VudCB3aGVuCiAgICAgLy8gTWFjOiBwcmVzZW50IGF0IHRo
ZSBiZWdpbm5pbmcgb2Ygc2VsZWN0aW9uCkBAIC0xNzIsNyArMTcyLDcgQEAgc3RhdGljIGJvb2wg
ZXhlY3V0ZVRvZ2dsZVN0eWxlKEZyYW1lKiBmcmFtZSwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3Vy
Y2UsIEVkaXRBY3QKICAgICByZXR1cm4gYXBwbHlDb21tYW5kVG9GcmFtZShmcmFtZSwgc291cmNl
LCBhY3Rpb24sIHN0eWxlLT5zdHlsZSgpKTsKIH0KIAotc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5
UGFyYWdyYXBoU3R5bGUoRnJhbWUqIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwg
RWRpdEFjdGlvbiBhY3Rpb24sIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5
VmFsdWUpCitzdGF0aWMgYm9vbCBleGVjdXRlQXBwbHlQYXJhZ3JhcGhTdHlsZShGcmFtZSogZnJh
bWUsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBFZGl0QWN0aW9uIGFjdGlvbiwgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHByb3BlcnR5VmFsdWUpCiB7CiAgICAg
UmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxlID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRl
KCk7CiAgICAgc3R5bGUtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHByb3BlcnR5VmFsdWUpOwpA
QCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJp
dHkoRnJhbWUqIGZyYW1lLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlKEZyYW1lKiBmcmFtZSwgaW50IHBy
b3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2lyZWRWYWx1ZSkKK3N0YXRpYyBUcmlTdGF0ZSBzdGF0
ZVN0eWxlKEZyYW1lKiBmcmFtZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25zdCBjaGFy
KiBkZXNpcmVkVmFsdWUpCiB7CiAgICAgaWYgKGZyYW1lLT5lZGl0b3IoKS0+YmVoYXZpb3IoKS5z
aG91bGRUb2dnbGVTdHlsZUJhc2VkT25TdGFydE9mU2VsZWN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBmcmFtZS0+ZWRpdG9yKCktPnNlbGVjdGlvblN0YXJ0SGFzU3R5bGUocHJvcGVydHlJRCwgZGVz
aXJlZFZhbHVlKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggMDVjZGU0YTYzZWFiNzE4OTQyYTYwZDcxOTQxNzE5M2ZlMGNkMWY5
Yi4uMzY0YTE3YzVjODAyNzA1ZTc2OWUzNzJhNDZlNWNkNmVkNDY2YjM2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtNzAsNyArNzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLXN0YXRpYyBib29sIHByb3BlcnR5TWlzc2lu
Z09yRXF1YWxUb05vbmUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wZXJ0eUlEKTsKK3N0YXRp
YyBib29sIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoU3R5bGVQcm9wZXJ0eVNldCosIENT
U1Byb3BlcnR5SUQpOwogCiBjbGFzcyBBdHRyaWJ1dGVDaGFuZ2UgewogcHVibGljOgpAQCAtNDY2
LDcgKzQ2Niw3IEBAIHN0YXRpYyBpbmxpbmUgTm9kZSogYW5jZXN0b3JUb1JldGFpblN0cnVjdHVy
ZUFuZEFwcGVhcmFuY2VXaXRoTm9SZW5kZXJlcihOb2RlKiBjCiAgICAgcmV0dXJuIGFuY2VzdG9y
VG9SZXRhaW5TdHJ1Y3R1cmVBbmRBcHBlYXJhbmNlRm9yQmxvY2soY29tbW9uQW5jZXN0b3JCbG9j
ayk7CiB9CiAKLXN0YXRpYyBib29sIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoU3R5bGVQ
cm9wZXJ0eVNldCogc3R5bGUsIGludCBwcm9wZXJ0eUlEKQorc3RhdGljIGJvb2wgcHJvcGVydHlN
aXNzaW5nT3JFcXVhbFRvTm9uZShTdHlsZVByb3BlcnR5U2V0KiBzdHlsZSwgQ1NTUHJvcGVydHlJ
RCBwcm9wZXJ0eUlEKQogewogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXggOWQ3OTU1MTIxNWVmZmQ2NGE2N2M4
NTBkYThiNmM5YjRlYzczYjNlYy4uMzk4OTdkMDdlOWMxNDlmY2RmYjU4MmVlODU4NjAwY2EzNWFj
ODlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTk5OSw3ICs5OTksNyBA
QCB2b2lkIEhUTUxFbGVtZW50OjpzZXRJdGVtVmFsdWVUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogfQogI2VuZGlmCiAKLXZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhU
TUxMZW5ndGhUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBpbnQgcHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxMZW5ndGhUb1N0
eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gc2hvdWxk
IG5vdCBzcGluIHVwIHRoZSBDU1MgcGFyc2VyLCBidXQgc2hvdWxkIGluc3RlYWQganVzdCBmaWd1
cmUgb3V0IHRoZSBjb3JyZWN0CiAgICAgLy8gbGVuZ3RoIHVuaXQgYW5kIG1ha2UgdGhlIGFwcHJv
cHJpYXRlIHBhcnNlZCB2YWx1ZS4KQEAgLTEwOTAsNyArMTA5MCw3IEBAIHN0YXRpYyBSR0JBMzIg
cGFyc2VDb2xvclN0cmluZ1dpdGhDcmF6eUxlZ2FjeVJ1bGVzKGNvbnN0IFN0cmluZyYgY29sb3JT
dHJpbmcpCiB9CiAKIC8vIENvbG9yIHBhcnNpbmcgdGhhdCBtYXRjaGVzIEhUTUwncyAicnVsZXMg
Zm9yIHBhcnNpbmcgYSBsZWdhY3kgY29sb3IgdmFsdWUiCi12b2lkIEhUTUxFbGVtZW50OjphZGRI
VE1MQ29sb3JUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqIHN0eWxlLCBpbnQgcHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKK3ZvaWQgSFRNTEVsZW1lbnQ6OmFkZEhUTUxD
b2xvclRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCogc3R5bGUsIENTU1Byb3BlcnR5SUQgcHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSkKIHsKICAgICAvLyBBbiBlbXB0eSBz
dHJpbmcgZG9lc24ndCBhcHBseSBhIGNvbG9yLiAoT25lIGNvbnRhaW5pbmcgb25seSB3aGl0ZXNw
YWNlIGRvZXMsIHdoaWNoIGlzIHdoeSB0aGlzIGNoZWNrIG9jY3VycyBiZWZvcmUgc3RyaXBwaW5n
LikKICAgICBpZiAoYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5oCmluZGV4IDJiMzU4NjE3YTI4ZDQ2YzQ4YmQ3MTRhNTk1NzgxYTM1MTIxMTFkYzUuLmRh
NDJhY2I4ZGFiMzE1NThlOGQ1ODE0YzdiMGE3NWIxNTQ0OWYxZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKQEAgLTEwOCw4ICsxMDgsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAg
SFRNTEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqKTsKIAot
ICAgIHZvaWQgYWRkSFRNTExlbmd0aFRvU3R5bGUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2b2lkIGFkZEhUTUxDb2xvclRvU3R5
bGUoU3R5bGVQcm9wZXJ0eVNldCosIGludCBwcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGNvbG9y
KTsKKyAgICB2b2lkIGFkZEhUTUxMZW5ndGhUb1N0eWxlKFN0eWxlUHJvcGVydHlTZXQqLCBDU1NQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFkZEhUTUxDb2xvclRvU3R5bGUo
U3R5bGVQcm9wZXJ0eVNldCosIENTU1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYpOwogCiAgICAg
dm9pZCBhcHBseUFsaWdubWVudEF0dHJpYnV0ZVRvU3R5bGUoQXR0cmlidXRlKiwgU3R5bGVQcm9w
ZXJ0eVNldCopOwogICAgIHZvaWQgYXBwbHlCb3JkZXJBdHRyaWJ1dGVUb1N0eWxlKEF0dHJpYnV0
ZSosIFN0eWxlUHJvcGVydHlTZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAwNTJiZTI4ODM5ODY0MTRmNjJmNDM4YzRkMzZh
ODkzZDA5YWE2MGY0Li4xYzMwODBiY2FlMDdjYTkwZDJlZTc2Y2IwM2VhMjZiMGVkOTYwY2QzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3Bw
CkBAIC01MDEsNyArNTAxLDcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb24KICAgICAgICAgICAg
ICAgICAvLyBQYXJzZWQgcHJvcGVydHkgb3ZlcnJpZGVzIGFueSBwcm9wZXJ0eSB3aXRoIHRoZSBz
YW1lIG5hbWUuIE5vbi1wYXJzZWQgcHJvcGVydHkgb3ZlcnJpZGVzCiAgICAgICAgICAgICAgICAg
Ly8gcHJldmlvdXMgbm9uLXBhcnNlZCBwcm9wZXJ0eSB3aXRoIHRoZSBzYW1lIG5hbWUgKGlmIGFu
eSkuCiAgICAgICAgICAgICAgICAgYm9vbCBzaG91bGRJbmFjdGl2YXRlID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkID0gc3RhdGljX2Nhc3Q8Q1NTUHJv
cGVydHlJRD4oY3NzUHJvcGVydHlJRChuYW1lKSk7CisgICAgICAgICAgICAgICAgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eUlkID0gY3NzUHJvcGVydHlJRChuYW1lKTsKICAgICAgICAgICAgICAgICAv
LyBDYW5vbmljYWxpemUgcHJvcGVydHkgbmFtZXMgdG8gdHJlYXQgbm9uLXByZWZpeGVkIGFuZCB2
ZW5kb3ItcHJlZml4ZWQgcHJvcGVydHkgbmFtZXMgdGhlIHNhbWUgKG9wYWNpdHkgdnMuIC13ZWJr
aXQtb3BhY2l0eSkuCiAgICAgICAgICAgICAgICAgU3RyaW5nIGNhbm9uaWNhbFByb3BlcnR5TmFt
ZSA9IHByb3BlcnR5SWQgPyBTdHJpbmcoZ2V0UHJvcGVydHlOYW1lKHByb3BlcnR5SWQpKSA6IG5h
bWU7CiAgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NQcm9wZXJ0eT4gPjo6aXRlcmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1By
ZXZpb3VzQWN0aXZlUHJvcGVydHkuZmluZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCA2M2Nk
Y2Y3OTRmNmZlMzE3MTk1MjljNDUzZmNkZjFkMGJmOTA4YTdlLi4yMDRhYTJmYjI2MWViNjFkZDRk
ZDc5ZDNkMmM3MmVhN2IyMWI1ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2Fu
aW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25CYXNlLmNwcApAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgc3RhdGljIHZvaWQg
YWRkUHJvcGVydHlXcmFwcGVyKGludCBwcm9wZXJ0eUlELCBQcm9wZXJ0eVdyYXBwZXJCYXNlKiB3
cmFwcGVyKQogCiBzdGF0aWMgdm9pZCBhZGRTaG9ydGhhbmRQcm9wZXJ0aWVzKCkKIHsKLSAgICBz
dGF0aWMgY29uc3QgaW50IGFuaW1hdGFibGVTaG9ydGhhbmRQcm9wZXJ0aWVzW10gPSB7CisgICAg
c3RhdGljIGNvbnN0IENTU1Byb3BlcnR5SUQgYW5pbWF0YWJsZVNob3J0aGFuZFByb3BlcnRpZXNb
XSA9IHsKICAgICAgICAgQ1NTUHJvcGVydHlCYWNrZ3JvdW5kLCAvLyBmb3IgYmFja2dyb3VuZC1j
b2xvciwgYmFja2dyb3VuZC1wb3NpdGlvbiwgYmFja2dyb3VuZC1pbWFnZQogICAgICAgICBDU1NQ
cm9wZXJ0eUJhY2tncm91bmRQb3NpdGlvbiwKICAgICAgICAgQ1NTUHJvcGVydHlGb250LCAvLyBm
b3IgZm9udC1zaXplLCBmb250LXdlaWdodApAQCAtMTE2OCw3ICsxMTY4LDcgQEAgc3RhdGljIHZv
aWQgYWRkU2hvcnRoYW5kUHJvcGVydGllcygpCiAgICAgfTsKIAogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChhbmltYXRhYmxlU2hvcnRoYW5kUHJvcGVydGllcyk7
ICsraSkgewotICAgICAgICBpbnQgcHJvcGVydHlJRCA9IGFuaW1hdGFibGVTaG9ydGhhbmRQcm9w
ZXJ0aWVzW2ldOworICAgICAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBhbmltYXRhYmxl
U2hvcnRoYW5kUHJvcGVydGllc1tpXTsKICAgICAgICAgU3R5bGVQcm9wZXJ0eVNob3J0aGFuZCBz
aG9ydGhhbmQgPSBzaG9ydGhhbmRGb3JQcm9wZXJ0eShwcm9wZXJ0eUlEKTsKICAgICAgICAgaWYg
KHNob3J0aGFuZC5sZW5ndGgoKSA+IDApCiAgICAgICAgICAgICBhZGRQcm9wZXJ0eVdyYXBwZXIo
cHJvcGVydHlJRCwgbmV3IFNob3J0aGFuZFByb3BlcnR5V3JhcHBlcihwcm9wZXJ0eUlELCBzaG9y
dGhhbmQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RmFjZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKaW5kZXgg
OTI3NTBhZjEyOGZjOTY4YTc4ODNkODA1OGRmYWNkN2QzYWJhYzk4OC4uNWU0MzA3MDVkMzAzMDI5
NTNjODQyZmUwNjU3MjEwZjE4MjA2ZWVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvbnRGYWNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5jcHAKQEAgLTYxLDE0ICs2MSwxNCBAQCBQYXNzUmVmUHRyPFNWR0ZvbnRGYWNl
RWxlbWVudD4gU1ZHRm9udEZhY2VFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU1ZHRm9udEZhY2VFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLXN0YXRpYyBpbnQgY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5h
bWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCitzdGF0aWMgQ1NTUHJvcGVydHlJRCBj
c3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKICAgICBpZiAoIWF0dHJOYW1lLm5hbWVzcGFjZVVSSSgpLmlzTnVsbCgpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIENTU1Byb3BlcnR5SW52YWxpZDsKICAgICAK
LSAgICBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgaW50PiogcHJvcGVydHlOYW1l
VG9JZE1hcCA9IDA7CisgICAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1By
b3BlcnR5SUQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwID0gMDsKICAgICBpZiAoIXByb3BlcnR5TmFt
ZVRvSWRNYXApIHsKLSAgICAgICAgcHJvcGVydHlOYW1lVG9JZE1hcCA9IG5ldyBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBpbnQ+OworICAgICAgICBwcm9wZXJ0eU5hbWVUb0lkTWFwID0gbmV3
IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1Byb3BlcnR5SUQ+OwogICAgICAgICAvLyBU
aGlzIGlzIGEgbGlzdCBvZiBhbGwgQGZvbnQtZmFjZSBDU1MgcHJvcGVydGllcyB3aGljaCBhcmUg
ZXhwb3NlZCBhcyBTVkcgWE1MIGF0dHJpYnV0ZXMKICAgICAgICAgLy8gVGhvc2UgY29tbWVudGVk
IG91dCBhcmUgbm90IHlldCBzdXBwb3J0ZWQgYnkgV2ViQ29yZSdzIHN0eWxlIHN5c3RlbQogICAg
ICAgICAvLyBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGFj
Y2VudF9oZWlnaHRBdHRyKTsKQEAgLTExMSw3ICsxMTEsNyBAQCBzdGF0aWMgaW50IGNzc1Byb3Bl
cnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
CiB2b2lkIFNWR0ZvbnRGYWNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRy
KQogeyAgICAKLSAgICBpbnQgcHJvcElkID0gY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5h
bWUoYXR0ci0+bmFtZSgpKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9IGNzc1Byb3BlcnR5
SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHItPm5hbWUoKSk7CiAgICAgaWYgKHByb3BJZCA+IDAp
IHsKICAgICAgICAgbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS0+c2V0UHJvcGVydHkocHJv
cElkLCBhdHRyLT52YWx1ZSgpLCBmYWxzZSk7CiAgICAgICAgIHJlYnVpbGRGb250RmFjZSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuY3BwCmluZGV4IDJmYWRmNjNkOGZlYjRk
YzEwNWQ1OGI4NzdkNWY1ODEzMjA1NzlhMGUuLjc1YTAwZmY3OTIyMDRhYmMxYWRhMDMwOTNlMTZk
ODk4ZTYyYmQ5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKQEAg
LTU3LDEwICs1NywxMCBAQCBFTkRfUkVHSVNURVJfQU5JTUFURURfUFJPUEVSVElFUwogCiB1c2lu
ZyBuYW1lc3BhY2UgU1ZHTmFtZXM7CiAKLXZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0eShI
YXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBpbnQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwLCBjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3ZvaWQgbWFwQXR0cmlidXRlVG9DU1NQcm9wZXJ0
eShIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0eUlEPiogcHJvcGVydHlOYW1l
VG9JZE1hcCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgLy8gRklYTUU6
IHdoZW4gQ1NTIHN1cHBvcnRzICJ0cmFuc2Zvcm0tb3JpZ2luIiB0aGUgc3BlY2lhbCBjYXNlIGZv
ciB0cmFuc2Zvcm1fb3JpZ2luQXR0ciBjYW4gYmUgcmVtb3ZlZC4KLSAgICBpbnQgcHJvcGVydHlJ
ZCA9IGNzc1Byb3BlcnR5SUQoYXR0ck5hbWUubG9jYWxOYW1lKCkpOworICAgIENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCA9IGNzc1Byb3BlcnR5SUQoYXR0ck5hbWUubG9jYWxOYW1lKCkpOwogICAg
IGlmICghcHJvcGVydHlJZCAmJiBhdHRyTmFtZSA9PSB0cmFuc2Zvcm1fb3JpZ2luQXR0cikKICAg
ICAgICAgcHJvcGVydHlJZCA9IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOyAvLyBj
c3NQcm9wZXJ0eUlEKCItd2Via2l0LXRyYW5zZm9ybS1vcmlnaW4iKQogICAgIEFTU0VSVChwcm9w
ZXJ0eUlkID4gMCk7CkBAIC0xMzQsMTQgKzEzNCwxNCBAQCBib29sIFNWR1N0eWxlZEVsZW1lbnQ6
OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgTm9kZVJlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1pbnQgU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJ
ZEZvclNWR0F0dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCitDU1NQ
cm9wZXJ0eUlEIFNWR1N0eWxlZEVsZW1lbnQ6OmNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVO
YW1lKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmICghYXR0ck5hbWUu
bmFtZXNwYWNlVVJJKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gQ1NTUHJvcGVydHlJbnZhbGlkOwogICAgIAotICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBpbnQ+KiBwcm9wZXJ0eU5hbWVUb0lkTWFwID0gMDsKKyAgICBzdGF0aWMgSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTUHJvcGVydHlJRD4qIHByb3BlcnR5TmFtZVRvSWRN
YXAgPSAwOwogICAgIGlmICghcHJvcGVydHlOYW1lVG9JZE1hcCkgewotICAgICAgICBwcm9wZXJ0
eU5hbWVUb0lkTWFwID0gbmV3IEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIGludD47CisgICAg
ICAgIHByb3BlcnR5TmFtZVRvSWRNYXAgPSBuZXcgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwg
Q1NTUHJvcGVydHlJRD47CiAgICAgICAgIC8vIFRoaXMgaXMgYSBsaXN0IG9mIGFsbCBiYXNlIENT
UyBhbmQgU1ZHIENTUyBwcm9wZXJ0aWVzIHdoaWNoIGFyZSBleHBvc2VkIGFzIFNWRyBYTUwgYXR0
cmlidXRlcwogICAgICAgICBtYXBBdHRyaWJ1dGVUb0NTU1Byb3BlcnR5KHByb3BlcnR5TmFtZVRv
SWRNYXAsIGFsaWdubWVudF9iYXNlbGluZUF0dHIpOwogICAgICAgICBtYXBBdHRyaWJ1dGVUb0NT
U1Byb3BlcnR5KHByb3BlcnR5TmFtZVRvSWRNYXAsIGJhc2VsaW5lX3NoaWZ0QXR0cik7CkBAIC0y
OTgsNyArMjk4LDcgQEAgYm9vbCBTVkdTdHlsZWRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lKSBjb25zdAogCiB2b2lkIFNWR1N0eWxlZEVs
ZW1lbnQ6OmNvbGxlY3RTdHlsZUZvckF0dHJpYnV0ZShBdHRyaWJ1dGUqIGF0dHIsIFN0eWxlUHJv
cGVydHlTZXQqIHN0eWxlKQogewotICAgIGludCBwcm9wZXJ0eUlEID0gU1ZHU3R5bGVkRWxlbWVu
dDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ci0+bmFtZSgpKTsKKyAgICBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBTVkdTdHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlk
Rm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1lKCkpOwogICAgIGlmIChwcm9wZXJ0eUlEID4g
MCkKICAgICAgICAgYWRkUHJvcGVydHlUb0F0dHJpYnV0ZVN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlE
LCBhdHRyLT52YWx1ZSgpKTsKIH0KQEAgLTMyNSw3ICszMjUsNyBAQCBib29sIFNWR1N0eWxlZEVs
ZW1lbnQ6OmlzS25vd25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAK
IHZvaWQgU1ZHU3R5bGVkRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpbnQgcHJvcElkID0gU1ZHU3R5bGVkRWxlbWVudDo6
Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpOworICAgIENTU1Byb3Bl
cnR5SUQgcHJvcElkID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJp
YnV0ZU5hbWUoYXR0ck5hbWUpOwogICAgIGlmIChwcm9wSWQgPiAwKSB7CiAgICAgICAgIFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudCh0aGlzKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtNDIxLDcgKzQyMSw3IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IFNW
R1N0eWxlZEVsZW1lbnQ6OmdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBTdHJpbmcmIG5h
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPFN0eWxlUHJvcGVydHlTZXQ+IHN0eWxl
ID0gU3R5bGVQcm9wZXJ0eVNldDo6Y3JlYXRlKFNWR0F0dHJpYnV0ZU1vZGUpOwotICAgIGludCBw
cm9wZXJ0eUlEID0gU1ZHU3R5bGVkRWxlbWVudDo6Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0
ZU5hbWUoYXR0ci0+bmFtZSgpKTsKKyAgICBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQgPSBTVkdT
dHlsZWRFbGVtZW50Ojpjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyLT5uYW1l
KCkpOwogICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCBhdHRyLT52YWx1ZSgpKTsK
ICAgICByZXR1cm4gc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHlJRCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAppbmRleCA2NDgzMGU4NTI1ZTdlYzdiNjFm
MDdlYjY4OWJmYTU4Y2UyY2I3NDYzLi5mZTNhOGU3MmMwZmE1NWEzNWExZTA0NjFiMmY3YmQ5OTYz
YTNhMjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgKQEAgLTIyLDYgKzIy
LDcgQEAKICNkZWZpbmUgU1ZHU3R5bGVkRWxlbWVudF9oCiAKICNpZiBFTkFCTEUoU1ZHKQorI2lu
Y2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5o
IgogI2luY2x1ZGUgIlNWR0xvY2F0YWJsZS5oIgogI2luY2x1ZGUgIlNWR1N0eWxhYmxlLmgiCkBA
IC0yOSw3ICszMCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBtYXBBdHRyaWJ1
dGVUb0NTU1Byb3BlcnR5KEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIGludD4qIHByb3BlcnR5
TmFtZVRvSWRNYXAsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKTsKK3ZvaWQgbWFwQXR0
cmlidXRlVG9DU1NQcm9wZXJ0eShIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NQcm9wZXJ0
eUlEPiogcHJvcGVydHlOYW1lVG9JZE1hcCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
OwogCiBjbGFzcyBTVkdTdHlsZWRFbGVtZW50IDogcHVibGljIFNWR0VsZW1lbnQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1N0eWxhYmxlIHsKQEAgLTc1LDcgKzc2LDcgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KCk7CiAgICAg
dmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNl
LCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2RlKiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGls
ZENvdW50RGVsdGEgPSAwKTsKIAotICAgIHN0YXRpYyBpbnQgY3NzUHJvcGVydHlJZEZvclNWR0F0
dHJpYnV0ZU5hbWUoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHN0YXRpYyBDU1NQcm9wZXJ0
eUlEIGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKICAgICB2b2lkIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCkgeyB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCksIHRoaXMp
OyB9CiAgICAgdm9pZCB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbihib29sIGhhc1Jl
bGF0aXZlTGVuZ3RocywgU1ZHU3R5bGVkRWxlbWVudCopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0FwaS9xd2ViZWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2Vi
ZWxlbWVudC5jcHAKaW5kZXggZmM3MmNhNjg2Y2E2MzFlMDI4YzNhM2Y5ZTc5M2I1YzFkYmEzMTI1
My4uYjA1MzI5OGRlMzk0M2RhZDNiMGNlN2RlZTNiYjhhMDc1NGI1NjM3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJlbGVtZW50LmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgUVdlYkVsZW1l
bnQ6OnNldFN0eWxlUHJvcGVydHkoY29uc3QgUVN0cmluZyAmbmFtZSwgY29uc3QgUVN0cmluZyAm
dmFsdWUpCiAgICAgaWYgKCFtX2VsZW1lbnQgfHwgIW1fZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGludCBwcm9wSUQgPSBjc3NQcm9wZXJ0eUlEKG5h
bWUpOworICAgIENTU1Byb3BlcnR5SUQgcHJvcElEID0gY3NzUHJvcGVydHlJRChuYW1lKTsKICAg
ICBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4obV9lbGVtZW50KS0+c2V0SW5saW5lU3R5bGVQ
cm9wZXJ0eShwcm9wSUQsIHZhbHVlKTsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>